| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 | FileCheck %s --check-prefix=SIMD128 |
| ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 -fast-isel | FileCheck %s --check-prefix=SIMD128-FAST |
| ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s --check-prefix=NO-SIMD128 |
| ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -fast-isel | FileCheck %s --check-prefix=NO-SIMD128-FAST |
| |
| ; check that a non-test run (including explicit locals pass) at least finishes |
| ; RUN: llc < %s -O0 -mattr=+simd128 |
| ; RUN: llc < %s -O2 -mattr=+simd128 |
| |
| ; Test that basic SIMD128 arithmetic operations assemble as expected. |
| |
| target triple = "wasm32-unknown-unknown" |
| |
| ; ============================================================================== |
| ; 16 x i8 |
| ; ============================================================================== |
| define <16 x i8> @add_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: add_v16i8: |
| ; SIMD128: .functype add_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.add $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: add_v16i8: |
| ; SIMD128-FAST: .functype add_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.add $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: add_v16i8: |
| ; NO-SIMD128: .functype add_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.add $push0=, $9, $25 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0 |
| ; NO-SIMD128-NEXT: i32.add $push1=, $5, $21 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.add $push2=, $3, $19 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.add $push3=, $2, $18 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.add $push4=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push6=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6 |
| ; NO-SIMD128-NEXT: i32.add $push5=, $16, $32 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push9=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9 |
| ; NO-SIMD128-NEXT: i32.add $push8=, $15, $31 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8 |
| ; NO-SIMD128-NEXT: i32.const $push12=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $14, $30 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11 |
| ; NO-SIMD128-NEXT: i32.const $push15=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $13, $29 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14 |
| ; NO-SIMD128-NEXT: i32.const $push18=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $12, $28 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push21=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-NEXT: i32.add $push20=, $11, $27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-NEXT: i32.const $push24=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $10, $26 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push27=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $8, $24 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26 |
| ; NO-SIMD128-NEXT: i32.const $push30=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $7, $23 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push33=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-NEXT: i32.add $push32=, $6, $22 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-NEXT: i32.const $push36=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $4, $20 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: add_v16i8: |
| ; NO-SIMD128-FAST: .functype add_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $4, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $5, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $6, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $7, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $8, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $9, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $10, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $11, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $12, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $13, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $14, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $15, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $16, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = add <16 x i8> %x, %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @sub_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: sub_v16i8: |
| ; SIMD128: .functype sub_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.sub $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: sub_v16i8: |
| ; SIMD128-FAST: .functype sub_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.sub $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: sub_v16i8: |
| ; NO-SIMD128: .functype sub_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.sub $push0=, $9, $25 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0 |
| ; NO-SIMD128-NEXT: i32.sub $push1=, $5, $21 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.sub $push2=, $3, $19 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.sub $push3=, $2, $18 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.sub $push4=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push6=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6 |
| ; NO-SIMD128-NEXT: i32.sub $push5=, $16, $32 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push9=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9 |
| ; NO-SIMD128-NEXT: i32.sub $push8=, $15, $31 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8 |
| ; NO-SIMD128-NEXT: i32.const $push12=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12 |
| ; NO-SIMD128-NEXT: i32.sub $push11=, $14, $30 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11 |
| ; NO-SIMD128-NEXT: i32.const $push15=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15 |
| ; NO-SIMD128-NEXT: i32.sub $push14=, $13, $29 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14 |
| ; NO-SIMD128-NEXT: i32.const $push18=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18 |
| ; NO-SIMD128-NEXT: i32.sub $push17=, $12, $28 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push21=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-NEXT: i32.sub $push20=, $11, $27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-NEXT: i32.const $push24=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-NEXT: i32.sub $push23=, $10, $26 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push27=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-NEXT: i32.sub $push26=, $8, $24 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26 |
| ; NO-SIMD128-NEXT: i32.const $push30=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-NEXT: i32.sub $push29=, $7, $23 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push33=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-NEXT: i32.sub $push32=, $6, $22 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-NEXT: i32.const $push36=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-NEXT: i32.sub $push35=, $4, $20 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: sub_v16i8: |
| ; NO-SIMD128-FAST: .functype sub_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $4, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $5, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $6, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $7, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $8, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $9, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push19=, $10, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push22=, $11, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push25=, $12, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push28=, $13, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push31=, $14, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push34=, $15, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push37=, $16, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = sub <16 x i8> %x, %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @mul_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: mul_v16i8: |
| ; SIMD128: .functype mul_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push4=, $0, 0 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $1, 0 |
| ; SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 |
| ; SIMD128-NEXT: i8x16.splat $push6=, $pop5 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push1=, $0, 1 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 |
| ; SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 |
| ; SIMD128-NEXT: i8x16.replace_lane $push7=, $pop6, 1, $pop2 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push9=, $0, 2 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push8=, $1, 2 |
| ; SIMD128-NEXT: i32.mul $push10=, $pop9, $pop8 |
| ; SIMD128-NEXT: i8x16.replace_lane $push11=, $pop7, 2, $pop10 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 3 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push12=, $1, 3 |
| ; SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12 |
| ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop11, 3, $pop14 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push17=, $0, 4 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 4 |
| ; SIMD128-NEXT: i32.mul $push18=, $pop17, $pop16 |
| ; SIMD128-NEXT: i8x16.replace_lane $push19=, $pop15, 4, $pop18 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $0, 5 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push20=, $1, 5 |
| ; SIMD128-NEXT: i32.mul $push22=, $pop21, $pop20 |
| ; SIMD128-NEXT: i8x16.replace_lane $push23=, $pop19, 5, $pop22 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push25=, $0, 6 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push24=, $1, 6 |
| ; SIMD128-NEXT: i32.mul $push26=, $pop25, $pop24 |
| ; SIMD128-NEXT: i8x16.replace_lane $push27=, $pop23, 6, $pop26 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push29=, $0, 7 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $1, 7 |
| ; SIMD128-NEXT: i32.mul $push30=, $pop29, $pop28 |
| ; SIMD128-NEXT: i8x16.replace_lane $push31=, $pop27, 7, $pop30 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 8 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push32=, $1, 8 |
| ; SIMD128-NEXT: i32.mul $push34=, $pop33, $pop32 |
| ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop31, 8, $pop34 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push37=, $0, 9 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 9 |
| ; SIMD128-NEXT: i32.mul $push38=, $pop37, $pop36 |
| ; SIMD128-NEXT: i8x16.replace_lane $push39=, $pop35, 9, $pop38 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $0, 10 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push40=, $1, 10 |
| ; SIMD128-NEXT: i32.mul $push42=, $pop41, $pop40 |
| ; SIMD128-NEXT: i8x16.replace_lane $push43=, $pop39, 10, $pop42 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push45=, $0, 11 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push44=, $1, 11 |
| ; SIMD128-NEXT: i32.mul $push46=, $pop45, $pop44 |
| ; SIMD128-NEXT: i8x16.replace_lane $push47=, $pop43, 11, $pop46 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push49=, $0, 12 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $1, 12 |
| ; SIMD128-NEXT: i32.mul $push50=, $pop49, $pop48 |
| ; SIMD128-NEXT: i8x16.replace_lane $push51=, $pop47, 12, $pop50 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 13 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push52=, $1, 13 |
| ; SIMD128-NEXT: i32.mul $push54=, $pop53, $pop52 |
| ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop51, 13, $pop54 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push57=, $0, 14 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 14 |
| ; SIMD128-NEXT: i32.mul $push58=, $pop57, $pop56 |
| ; SIMD128-NEXT: i8x16.replace_lane $push59=, $pop55, 14, $pop58 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $0, 15 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push60=, $1, 15 |
| ; SIMD128-NEXT: i32.mul $push62=, $pop61, $pop60 |
| ; SIMD128-NEXT: i8x16.replace_lane $push63=, $pop59, 15, $pop62 |
| ; SIMD128-NEXT: return $pop63 |
| ; |
| ; SIMD128-FAST-LABEL: mul_v16i8: |
| ; SIMD128-FAST: .functype mul_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push5=, $0, 0 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $1, 0 |
| ; SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 |
| ; SIMD128-FAST-NEXT: i8x16.splat $push7=, $pop6 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push2=, $0, 1 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 |
| ; SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push8=, $pop7, 1, $pop3 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push10=, $0, 2 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push9=, $1, 2 |
| ; SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push12=, $pop8, 2, $pop11 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 3 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push13=, $1, 3 |
| ; SIMD128-FAST-NEXT: i32.mul $push15=, $pop14, $pop13 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop12, 3, $pop15 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push18=, $0, 4 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 4 |
| ; SIMD128-FAST-NEXT: i32.mul $push19=, $pop18, $pop17 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push20=, $pop16, 4, $pop19 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $0, 5 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push21=, $1, 5 |
| ; SIMD128-FAST-NEXT: i32.mul $push23=, $pop22, $pop21 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push24=, $pop20, 5, $pop23 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push26=, $0, 6 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push25=, $1, 6 |
| ; SIMD128-FAST-NEXT: i32.mul $push27=, $pop26, $pop25 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push28=, $pop24, 6, $pop27 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push30=, $0, 7 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $1, 7 |
| ; SIMD128-FAST-NEXT: i32.mul $push31=, $pop30, $pop29 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push32=, $pop28, 7, $pop31 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 8 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push33=, $1, 8 |
| ; SIMD128-FAST-NEXT: i32.mul $push35=, $pop34, $pop33 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop32, 8, $pop35 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push38=, $0, 9 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 9 |
| ; SIMD128-FAST-NEXT: i32.mul $push39=, $pop38, $pop37 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push40=, $pop36, 9, $pop39 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $0, 10 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push41=, $1, 10 |
| ; SIMD128-FAST-NEXT: i32.mul $push43=, $pop42, $pop41 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push44=, $pop40, 10, $pop43 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push46=, $0, 11 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push45=, $1, 11 |
| ; SIMD128-FAST-NEXT: i32.mul $push47=, $pop46, $pop45 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push48=, $pop44, 11, $pop47 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push50=, $0, 12 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $1, 12 |
| ; SIMD128-FAST-NEXT: i32.mul $push51=, $pop50, $pop49 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push52=, $pop48, 12, $pop51 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 13 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push53=, $1, 13 |
| ; SIMD128-FAST-NEXT: i32.mul $push55=, $pop54, $pop53 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop52, 13, $pop55 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push58=, $0, 14 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 14 |
| ; SIMD128-FAST-NEXT: i32.mul $push59=, $pop58, $pop57 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push60=, $pop56, 14, $pop59 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $0, 15 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push61=, $1, 15 |
| ; SIMD128-FAST-NEXT: i32.mul $push63=, $pop62, $pop61 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop60, 15, $pop63 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: mul_v16i8: |
| ; NO-SIMD128: .functype mul_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.mul $push0=, $9, $25 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0 |
| ; NO-SIMD128-NEXT: i32.mul $push1=, $5, $21 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.mul $push2=, $3, $19 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.mul $push3=, $2, $18 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.mul $push4=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push6=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6 |
| ; NO-SIMD128-NEXT: i32.mul $push5=, $16, $32 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push9=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9 |
| ; NO-SIMD128-NEXT: i32.mul $push8=, $15, $31 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8 |
| ; NO-SIMD128-NEXT: i32.const $push12=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12 |
| ; NO-SIMD128-NEXT: i32.mul $push11=, $14, $30 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11 |
| ; NO-SIMD128-NEXT: i32.const $push15=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15 |
| ; NO-SIMD128-NEXT: i32.mul $push14=, $13, $29 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14 |
| ; NO-SIMD128-NEXT: i32.const $push18=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18 |
| ; NO-SIMD128-NEXT: i32.mul $push17=, $12, $28 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push21=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-NEXT: i32.mul $push20=, $11, $27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-NEXT: i32.const $push24=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-NEXT: i32.mul $push23=, $10, $26 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push27=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-NEXT: i32.mul $push26=, $8, $24 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26 |
| ; NO-SIMD128-NEXT: i32.const $push30=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-NEXT: i32.mul $push29=, $7, $23 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push33=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-NEXT: i32.mul $push32=, $6, $22 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-NEXT: i32.const $push36=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-NEXT: i32.mul $push35=, $4, $20 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: mul_v16i8: |
| ; NO-SIMD128-FAST: .functype mul_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $4, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $5, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $6, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $7, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $8, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push16=, $9, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push19=, $10, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push22=, $11, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push25=, $12, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push28=, $13, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push31=, $14, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push34=, $15, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.mul $push37=, $16, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = mul <16 x i8> %x, %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @min_s_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: min_s_v16i8: |
| ; SIMD128: .functype min_s_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.min_s $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: min_s_v16i8: |
| ; SIMD128-FAST: .functype min_s_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.min_s $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: min_s_v16i8: |
| ; NO-SIMD128: .functype min_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push4=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32 |
| ; NO-SIMD128-NEXT: i32.lt_s $push2=, $pop1, $pop0 |
| ; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push10=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $15 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $31 |
| ; NO-SIMD128-NEXT: i32.lt_s $push8=, $pop7, $pop6 |
| ; NO-SIMD128-NEXT: i32.select $push9=, $15, $31, $pop8 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9 |
| ; NO-SIMD128-NEXT: i32.const $push16=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $14 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $30 |
| ; NO-SIMD128-NEXT: i32.lt_s $push14=, $pop13, $pop12 |
| ; NO-SIMD128-NEXT: i32.select $push15=, $14, $30, $pop14 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-NEXT: i32.const $push22=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $13 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $29 |
| ; NO-SIMD128-NEXT: i32.lt_s $push20=, $pop19, $pop18 |
| ; NO-SIMD128-NEXT: i32.select $push21=, $13, $29, $pop20 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push28=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push25=, $12 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push24=, $28 |
| ; NO-SIMD128-NEXT: i32.lt_s $push26=, $pop25, $pop24 |
| ; NO-SIMD128-NEXT: i32.select $push27=, $12, $28, $pop26 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27 |
| ; NO-SIMD128-NEXT: i32.const $push34=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push30=, $27 |
| ; NO-SIMD128-NEXT: i32.lt_s $push32=, $pop31, $pop30 |
| ; NO-SIMD128-NEXT: i32.select $push33=, $11, $27, $pop32 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push40=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push41=, $0, $pop40 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push37=, $10 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $26 |
| ; NO-SIMD128-NEXT: i32.lt_s $push38=, $pop37, $pop36 |
| ; NO-SIMD128-NEXT: i32.select $push39=, $10, $26, $pop38 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop41), $pop39 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $9 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push42=, $25 |
| ; NO-SIMD128-NEXT: i32.lt_s $push44=, $pop43, $pop42 |
| ; NO-SIMD128-NEXT: i32.select $push45=, $9, $25, $pop44 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop45 |
| ; NO-SIMD128-NEXT: i32.const $push50=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push51=, $0, $pop50 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $8 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push46=, $24 |
| ; NO-SIMD128-NEXT: i32.lt_s $push48=, $pop47, $pop46 |
| ; NO-SIMD128-NEXT: i32.select $push49=, $8, $24, $pop48 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop51), $pop49 |
| ; NO-SIMD128-NEXT: i32.const $push56=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push57=, $0, $pop56 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $7 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push52=, $23 |
| ; NO-SIMD128-NEXT: i32.lt_s $push54=, $pop53, $pop52 |
| ; NO-SIMD128-NEXT: i32.select $push55=, $7, $23, $pop54 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop57), $pop55 |
| ; NO-SIMD128-NEXT: i32.const $push62=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push63=, $0, $pop62 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push59=, $6 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push58=, $22 |
| ; NO-SIMD128-NEXT: i32.lt_s $push60=, $pop59, $pop58 |
| ; NO-SIMD128-NEXT: i32.select $push61=, $6, $22, $pop60 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop63), $pop61 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push65=, $5 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $21 |
| ; NO-SIMD128-NEXT: i32.lt_s $push66=, $pop65, $pop64 |
| ; NO-SIMD128-NEXT: i32.select $push67=, $5, $21, $pop66 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop67 |
| ; NO-SIMD128-NEXT: i32.const $push72=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push73=, $0, $pop72 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push69=, $4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push68=, $20 |
| ; NO-SIMD128-NEXT: i32.lt_s $push70=, $pop69, $pop68 |
| ; NO-SIMD128-NEXT: i32.select $push71=, $4, $20, $pop70 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop73), $pop71 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push75=, $3 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push74=, $19 |
| ; NO-SIMD128-NEXT: i32.lt_s $push76=, $pop75, $pop74 |
| ; NO-SIMD128-NEXT: i32.select $push77=, $3, $19, $pop76 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop77 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push79=, $2 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push78=, $18 |
| ; NO-SIMD128-NEXT: i32.lt_s $push80=, $pop79, $pop78 |
| ; NO-SIMD128-NEXT: i32.select $push81=, $2, $18, $pop80 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop81 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push83=, $1 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push82=, $17 |
| ; NO-SIMD128-NEXT: i32.lt_s $push84=, $pop83, $pop82 |
| ; NO-SIMD128-NEXT: i32.select $push85=, $1, $17, $pop84 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop85 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: min_s_v16i8: |
| ; NO-SIMD128-FAST: .functype min_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $pop1, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $pop5, $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push10=, $pop9, $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push14=, $pop13, $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push20=, $pop19, $pop18 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $21, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push24=, $pop23, $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $22, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push30=, $pop29, $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $23, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push36=, $pop35, $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $24, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push42=, $pop41, $pop40 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push43=, $9, $25, $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push46=, $pop45, $pop44 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push47=, $10, $26, $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $0, $pop54 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push51=, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push52=, $pop51, $pop50 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push53=, $11, $27, $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop55), $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $0, $pop60 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push58=, $pop57, $pop56 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push59=, $12, $28, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop61), $pop59 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $0, $pop66 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push63=, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push62=, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push64=, $pop63, $pop62 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push65=, $13, $29, $pop64 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop67), $pop65 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $0, $pop72 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push69=, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push68=, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push70=, $pop69, $pop68 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push71=, $14, $30, $pop70 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop73), $pop71 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $0, $pop78 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push75=, $15 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push74=, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push76=, $pop75, $pop74 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push77=, $15, $31, $pop76 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop79), $pop77 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $0, $pop84 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push81=, $16 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push80=, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_s $push82=, $pop81, $pop80 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push83=, $16, $32, $pop82 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop85), $pop83 |
| ; NO-SIMD128-FAST-NEXT: return |
| %c = icmp slt <16 x i8> %x, %y |
| %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @min_u_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: min_u_v16i8: |
| ; SIMD128: .functype min_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.min_u $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: min_u_v16i8: |
| ; SIMD128-FAST: .functype min_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.min_u $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: min_u_v16i8: |
| ; NO-SIMD128: .functype min_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push5=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 |
| ; NO-SIMD128-NEXT: i32.const $push117=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop117 |
| ; NO-SIMD128-NEXT: i32.lt_u $push3=, $pop2, $pop1 |
| ; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push11=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11 |
| ; NO-SIMD128-NEXT: i32.const $push116=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push8=, $15, $pop116 |
| ; NO-SIMD128-NEXT: i32.const $push115=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push7=, $31, $pop115 |
| ; NO-SIMD128-NEXT: i32.lt_u $push9=, $pop8, $pop7 |
| ; NO-SIMD128-NEXT: i32.select $push10=, $15, $31, $pop9 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push17=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push114=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push14=, $14, $pop114 |
| ; NO-SIMD128-NEXT: i32.const $push113=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push13=, $30, $pop113 |
| ; NO-SIMD128-NEXT: i32.lt_u $push15=, $pop14, $pop13 |
| ; NO-SIMD128-NEXT: i32.select $push16=, $14, $30, $pop15 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push23=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push112=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push20=, $13, $pop112 |
| ; NO-SIMD128-NEXT: i32.const $push111=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push19=, $29, $pop111 |
| ; NO-SIMD128-NEXT: i32.lt_u $push21=, $pop20, $pop19 |
| ; NO-SIMD128-NEXT: i32.select $push22=, $13, $29, $pop21 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22 |
| ; NO-SIMD128-NEXT: i32.const $push29=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push110=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push26=, $12, $pop110 |
| ; NO-SIMD128-NEXT: i32.const $push109=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push25=, $28, $pop109 |
| ; NO-SIMD128-NEXT: i32.lt_u $push27=, $pop26, $pop25 |
| ; NO-SIMD128-NEXT: i32.select $push28=, $12, $28, $pop27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push35=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-NEXT: i32.const $push108=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push32=, $11, $pop108 |
| ; NO-SIMD128-NEXT: i32.const $push107=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop107 |
| ; NO-SIMD128-NEXT: i32.lt_u $push33=, $pop32, $pop31 |
| ; NO-SIMD128-NEXT: i32.select $push34=, $11, $27, $pop33 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41 |
| ; NO-SIMD128-NEXT: i32.const $push106=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push38=, $10, $pop106 |
| ; NO-SIMD128-NEXT: i32.const $push105=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push37=, $26, $pop105 |
| ; NO-SIMD128-NEXT: i32.lt_u $push39=, $pop38, $pop37 |
| ; NO-SIMD128-NEXT: i32.select $push40=, $10, $26, $pop39 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40 |
| ; NO-SIMD128-NEXT: i32.const $push104=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push44=, $9, $pop104 |
| ; NO-SIMD128-NEXT: i32.const $push103=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push43=, $25, $pop103 |
| ; NO-SIMD128-NEXT: i32.lt_u $push45=, $pop44, $pop43 |
| ; NO-SIMD128-NEXT: i32.select $push46=, $9, $25, $pop45 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46 |
| ; NO-SIMD128-NEXT: i32.const $push51=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51 |
| ; NO-SIMD128-NEXT: i32.const $push102=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push48=, $8, $pop102 |
| ; NO-SIMD128-NEXT: i32.const $push101=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push47=, $24, $pop101 |
| ; NO-SIMD128-NEXT: i32.lt_u $push49=, $pop48, $pop47 |
| ; NO-SIMD128-NEXT: i32.select $push50=, $8, $24, $pop49 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50 |
| ; NO-SIMD128-NEXT: i32.const $push57=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57 |
| ; NO-SIMD128-NEXT: i32.const $push100=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push54=, $7, $pop100 |
| ; NO-SIMD128-NEXT: i32.const $push99=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push53=, $23, $pop99 |
| ; NO-SIMD128-NEXT: i32.lt_u $push55=, $pop54, $pop53 |
| ; NO-SIMD128-NEXT: i32.select $push56=, $7, $23, $pop55 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56 |
| ; NO-SIMD128-NEXT: i32.const $push63=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63 |
| ; NO-SIMD128-NEXT: i32.const $push98=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push60=, $6, $pop98 |
| ; NO-SIMD128-NEXT: i32.const $push97=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push59=, $22, $pop97 |
| ; NO-SIMD128-NEXT: i32.lt_u $push61=, $pop60, $pop59 |
| ; NO-SIMD128-NEXT: i32.select $push62=, $6, $22, $pop61 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62 |
| ; NO-SIMD128-NEXT: i32.const $push96=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push66=, $5, $pop96 |
| ; NO-SIMD128-NEXT: i32.const $push95=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push65=, $21, $pop95 |
| ; NO-SIMD128-NEXT: i32.lt_u $push67=, $pop66, $pop65 |
| ; NO-SIMD128-NEXT: i32.select $push68=, $5, $21, $pop67 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68 |
| ; NO-SIMD128-NEXT: i32.const $push73=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73 |
| ; NO-SIMD128-NEXT: i32.const $push94=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push70=, $4, $pop94 |
| ; NO-SIMD128-NEXT: i32.const $push93=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push69=, $20, $pop93 |
| ; NO-SIMD128-NEXT: i32.lt_u $push71=, $pop70, $pop69 |
| ; NO-SIMD128-NEXT: i32.select $push72=, $4, $20, $pop71 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72 |
| ; NO-SIMD128-NEXT: i32.const $push92=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push76=, $3, $pop92 |
| ; NO-SIMD128-NEXT: i32.const $push91=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push75=, $19, $pop91 |
| ; NO-SIMD128-NEXT: i32.lt_u $push77=, $pop76, $pop75 |
| ; NO-SIMD128-NEXT: i32.select $push78=, $3, $19, $pop77 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78 |
| ; NO-SIMD128-NEXT: i32.const $push90=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push80=, $2, $pop90 |
| ; NO-SIMD128-NEXT: i32.const $push89=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push79=, $18, $pop89 |
| ; NO-SIMD128-NEXT: i32.lt_u $push81=, $pop80, $pop79 |
| ; NO-SIMD128-NEXT: i32.select $push82=, $2, $18, $pop81 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82 |
| ; NO-SIMD128-NEXT: i32.const $push88=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push84=, $1, $pop88 |
| ; NO-SIMD128-NEXT: i32.const $push87=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push83=, $17, $pop87 |
| ; NO-SIMD128-NEXT: i32.lt_u $push85=, $pop84, $pop83 |
| ; NO-SIMD128-NEXT: i32.select $push86=, $1, $17, $pop85 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: min_u_v16i8: |
| ; NO-SIMD128-FAST: .functype min_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop117 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push3=, $pop2, $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop116 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop115 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push7=, $pop6, $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop114 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop113 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push11=, $pop10, $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop112 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop111 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push15=, $pop14, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop110 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $21, $pop109 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push21=, $pop20, $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $21, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop108 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $22, $pop107 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push25=, $pop24, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $22, $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop106 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $23, $pop105 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push31=, $pop30, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $23, $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop104 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $24, $pop103 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push37=, $pop36, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $24, $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $9, $pop102 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $25, $pop101 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push43=, $pop42, $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push44=, $9, $25, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $10, $pop100 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $26, $pop99 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push47=, $pop46, $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push48=, $10, $26, $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push52=, $11, $pop98 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $27, $pop97 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push53=, $pop52, $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push54=, $11, $27, $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $12, $pop96 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $28, $pop95 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push59=, $pop58, $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push60=, $12, $28, $pop59 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push64=, $13, $pop94 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $29, $pop93 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push65=, $pop64, $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push66=, $13, $29, $pop65 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push70=, $14, $pop92 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push69=, $30, $pop91 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push71=, $pop70, $pop69 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push72=, $14, $30, $pop71 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push76=, $15, $pop90 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push75=, $31, $pop89 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push77=, $pop76, $pop75 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push78=, $15, $31, $pop77 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push82=, $16, $pop88 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push81=, $32, $pop87 |
| ; NO-SIMD128-FAST-NEXT: i32.lt_u $push83=, $pop82, $pop81 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push84=, $16, $32, $pop83 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84 |
| ; NO-SIMD128-FAST-NEXT: return |
| %c = icmp ult <16 x i8> %x, %y |
| %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @max_s_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: max_s_v16i8: |
| ; SIMD128: .functype max_s_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.max_s $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: max_s_v16i8: |
| ; SIMD128-FAST: .functype max_s_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.max_s $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: max_s_v16i8: |
| ; NO-SIMD128: .functype max_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push4=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32 |
| ; NO-SIMD128-NEXT: i32.gt_s $push2=, $pop1, $pop0 |
| ; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push10=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $15 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $31 |
| ; NO-SIMD128-NEXT: i32.gt_s $push8=, $pop7, $pop6 |
| ; NO-SIMD128-NEXT: i32.select $push9=, $15, $31, $pop8 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9 |
| ; NO-SIMD128-NEXT: i32.const $push16=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $14 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $30 |
| ; NO-SIMD128-NEXT: i32.gt_s $push14=, $pop13, $pop12 |
| ; NO-SIMD128-NEXT: i32.select $push15=, $14, $30, $pop14 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-NEXT: i32.const $push22=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $13 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $29 |
| ; NO-SIMD128-NEXT: i32.gt_s $push20=, $pop19, $pop18 |
| ; NO-SIMD128-NEXT: i32.select $push21=, $13, $29, $pop20 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push28=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push25=, $12 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push24=, $28 |
| ; NO-SIMD128-NEXT: i32.gt_s $push26=, $pop25, $pop24 |
| ; NO-SIMD128-NEXT: i32.select $push27=, $12, $28, $pop26 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27 |
| ; NO-SIMD128-NEXT: i32.const $push34=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push30=, $27 |
| ; NO-SIMD128-NEXT: i32.gt_s $push32=, $pop31, $pop30 |
| ; NO-SIMD128-NEXT: i32.select $push33=, $11, $27, $pop32 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push40=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push41=, $0, $pop40 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push37=, $10 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $26 |
| ; NO-SIMD128-NEXT: i32.gt_s $push38=, $pop37, $pop36 |
| ; NO-SIMD128-NEXT: i32.select $push39=, $10, $26, $pop38 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop41), $pop39 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $9 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push42=, $25 |
| ; NO-SIMD128-NEXT: i32.gt_s $push44=, $pop43, $pop42 |
| ; NO-SIMD128-NEXT: i32.select $push45=, $9, $25, $pop44 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop45 |
| ; NO-SIMD128-NEXT: i32.const $push50=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push51=, $0, $pop50 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $8 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push46=, $24 |
| ; NO-SIMD128-NEXT: i32.gt_s $push48=, $pop47, $pop46 |
| ; NO-SIMD128-NEXT: i32.select $push49=, $8, $24, $pop48 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop51), $pop49 |
| ; NO-SIMD128-NEXT: i32.const $push56=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push57=, $0, $pop56 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $7 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push52=, $23 |
| ; NO-SIMD128-NEXT: i32.gt_s $push54=, $pop53, $pop52 |
| ; NO-SIMD128-NEXT: i32.select $push55=, $7, $23, $pop54 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop57), $pop55 |
| ; NO-SIMD128-NEXT: i32.const $push62=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push63=, $0, $pop62 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push59=, $6 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push58=, $22 |
| ; NO-SIMD128-NEXT: i32.gt_s $push60=, $pop59, $pop58 |
| ; NO-SIMD128-NEXT: i32.select $push61=, $6, $22, $pop60 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop63), $pop61 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push65=, $5 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $21 |
| ; NO-SIMD128-NEXT: i32.gt_s $push66=, $pop65, $pop64 |
| ; NO-SIMD128-NEXT: i32.select $push67=, $5, $21, $pop66 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop67 |
| ; NO-SIMD128-NEXT: i32.const $push72=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push73=, $0, $pop72 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push69=, $4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push68=, $20 |
| ; NO-SIMD128-NEXT: i32.gt_s $push70=, $pop69, $pop68 |
| ; NO-SIMD128-NEXT: i32.select $push71=, $4, $20, $pop70 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop73), $pop71 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push75=, $3 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push74=, $19 |
| ; NO-SIMD128-NEXT: i32.gt_s $push76=, $pop75, $pop74 |
| ; NO-SIMD128-NEXT: i32.select $push77=, $3, $19, $pop76 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop77 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push79=, $2 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push78=, $18 |
| ; NO-SIMD128-NEXT: i32.gt_s $push80=, $pop79, $pop78 |
| ; NO-SIMD128-NEXT: i32.select $push81=, $2, $18, $pop80 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop81 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push83=, $1 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push82=, $17 |
| ; NO-SIMD128-NEXT: i32.gt_s $push84=, $pop83, $pop82 |
| ; NO-SIMD128-NEXT: i32.select $push85=, $1, $17, $pop84 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop85 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: max_s_v16i8: |
| ; NO-SIMD128-FAST: .functype max_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $pop1, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $pop5, $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push10=, $pop9, $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push14=, $pop13, $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push20=, $pop19, $pop18 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $21, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push24=, $pop23, $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $22, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push30=, $pop29, $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $23, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push36=, $pop35, $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $24, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push42=, $pop41, $pop40 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push43=, $9, $25, $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push46=, $pop45, $pop44 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push47=, $10, $26, $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $0, $pop54 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push51=, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push52=, $pop51, $pop50 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push53=, $11, $27, $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop55), $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $0, $pop60 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push58=, $pop57, $pop56 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push59=, $12, $28, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop61), $pop59 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $0, $pop66 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push63=, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push62=, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push64=, $pop63, $pop62 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push65=, $13, $29, $pop64 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop67), $pop65 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $0, $pop72 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push69=, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push68=, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push70=, $pop69, $pop68 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push71=, $14, $30, $pop70 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop73), $pop71 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $0, $pop78 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push75=, $15 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push74=, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push76=, $pop75, $pop74 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push77=, $15, $31, $pop76 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop79), $pop77 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $0, $pop84 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push81=, $16 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push80=, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_s $push82=, $pop81, $pop80 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push83=, $16, $32, $pop82 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop85), $pop83 |
| ; NO-SIMD128-FAST-NEXT: return |
| %c = icmp sgt <16 x i8> %x, %y |
| %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @max_u_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: max_u_v16i8: |
| ; SIMD128: .functype max_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.max_u $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: max_u_v16i8: |
| ; SIMD128-FAST: .functype max_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.max_u $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: max_u_v16i8: |
| ; NO-SIMD128: .functype max_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push5=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 |
| ; NO-SIMD128-NEXT: i32.const $push117=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop117 |
| ; NO-SIMD128-NEXT: i32.gt_u $push3=, $pop2, $pop1 |
| ; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push11=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11 |
| ; NO-SIMD128-NEXT: i32.const $push116=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push8=, $15, $pop116 |
| ; NO-SIMD128-NEXT: i32.const $push115=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push7=, $31, $pop115 |
| ; NO-SIMD128-NEXT: i32.gt_u $push9=, $pop8, $pop7 |
| ; NO-SIMD128-NEXT: i32.select $push10=, $15, $31, $pop9 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push17=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push114=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push14=, $14, $pop114 |
| ; NO-SIMD128-NEXT: i32.const $push113=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push13=, $30, $pop113 |
| ; NO-SIMD128-NEXT: i32.gt_u $push15=, $pop14, $pop13 |
| ; NO-SIMD128-NEXT: i32.select $push16=, $14, $30, $pop15 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push23=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push112=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push20=, $13, $pop112 |
| ; NO-SIMD128-NEXT: i32.const $push111=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push19=, $29, $pop111 |
| ; NO-SIMD128-NEXT: i32.gt_u $push21=, $pop20, $pop19 |
| ; NO-SIMD128-NEXT: i32.select $push22=, $13, $29, $pop21 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22 |
| ; NO-SIMD128-NEXT: i32.const $push29=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push110=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push26=, $12, $pop110 |
| ; NO-SIMD128-NEXT: i32.const $push109=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push25=, $28, $pop109 |
| ; NO-SIMD128-NEXT: i32.gt_u $push27=, $pop26, $pop25 |
| ; NO-SIMD128-NEXT: i32.select $push28=, $12, $28, $pop27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push35=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-NEXT: i32.const $push108=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push32=, $11, $pop108 |
| ; NO-SIMD128-NEXT: i32.const $push107=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop107 |
| ; NO-SIMD128-NEXT: i32.gt_u $push33=, $pop32, $pop31 |
| ; NO-SIMD128-NEXT: i32.select $push34=, $11, $27, $pop33 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41 |
| ; NO-SIMD128-NEXT: i32.const $push106=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push38=, $10, $pop106 |
| ; NO-SIMD128-NEXT: i32.const $push105=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push37=, $26, $pop105 |
| ; NO-SIMD128-NEXT: i32.gt_u $push39=, $pop38, $pop37 |
| ; NO-SIMD128-NEXT: i32.select $push40=, $10, $26, $pop39 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40 |
| ; NO-SIMD128-NEXT: i32.const $push104=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push44=, $9, $pop104 |
| ; NO-SIMD128-NEXT: i32.const $push103=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push43=, $25, $pop103 |
| ; NO-SIMD128-NEXT: i32.gt_u $push45=, $pop44, $pop43 |
| ; NO-SIMD128-NEXT: i32.select $push46=, $9, $25, $pop45 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46 |
| ; NO-SIMD128-NEXT: i32.const $push51=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51 |
| ; NO-SIMD128-NEXT: i32.const $push102=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push48=, $8, $pop102 |
| ; NO-SIMD128-NEXT: i32.const $push101=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push47=, $24, $pop101 |
| ; NO-SIMD128-NEXT: i32.gt_u $push49=, $pop48, $pop47 |
| ; NO-SIMD128-NEXT: i32.select $push50=, $8, $24, $pop49 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50 |
| ; NO-SIMD128-NEXT: i32.const $push57=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57 |
| ; NO-SIMD128-NEXT: i32.const $push100=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push54=, $7, $pop100 |
| ; NO-SIMD128-NEXT: i32.const $push99=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push53=, $23, $pop99 |
| ; NO-SIMD128-NEXT: i32.gt_u $push55=, $pop54, $pop53 |
| ; NO-SIMD128-NEXT: i32.select $push56=, $7, $23, $pop55 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56 |
| ; NO-SIMD128-NEXT: i32.const $push63=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63 |
| ; NO-SIMD128-NEXT: i32.const $push98=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push60=, $6, $pop98 |
| ; NO-SIMD128-NEXT: i32.const $push97=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push59=, $22, $pop97 |
| ; NO-SIMD128-NEXT: i32.gt_u $push61=, $pop60, $pop59 |
| ; NO-SIMD128-NEXT: i32.select $push62=, $6, $22, $pop61 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62 |
| ; NO-SIMD128-NEXT: i32.const $push96=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push66=, $5, $pop96 |
| ; NO-SIMD128-NEXT: i32.const $push95=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push65=, $21, $pop95 |
| ; NO-SIMD128-NEXT: i32.gt_u $push67=, $pop66, $pop65 |
| ; NO-SIMD128-NEXT: i32.select $push68=, $5, $21, $pop67 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68 |
| ; NO-SIMD128-NEXT: i32.const $push73=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73 |
| ; NO-SIMD128-NEXT: i32.const $push94=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push70=, $4, $pop94 |
| ; NO-SIMD128-NEXT: i32.const $push93=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push69=, $20, $pop93 |
| ; NO-SIMD128-NEXT: i32.gt_u $push71=, $pop70, $pop69 |
| ; NO-SIMD128-NEXT: i32.select $push72=, $4, $20, $pop71 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72 |
| ; NO-SIMD128-NEXT: i32.const $push92=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push76=, $3, $pop92 |
| ; NO-SIMD128-NEXT: i32.const $push91=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push75=, $19, $pop91 |
| ; NO-SIMD128-NEXT: i32.gt_u $push77=, $pop76, $pop75 |
| ; NO-SIMD128-NEXT: i32.select $push78=, $3, $19, $pop77 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78 |
| ; NO-SIMD128-NEXT: i32.const $push90=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push80=, $2, $pop90 |
| ; NO-SIMD128-NEXT: i32.const $push89=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push79=, $18, $pop89 |
| ; NO-SIMD128-NEXT: i32.gt_u $push81=, $pop80, $pop79 |
| ; NO-SIMD128-NEXT: i32.select $push82=, $2, $18, $pop81 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82 |
| ; NO-SIMD128-NEXT: i32.const $push88=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push84=, $1, $pop88 |
| ; NO-SIMD128-NEXT: i32.const $push87=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push83=, $17, $pop87 |
| ; NO-SIMD128-NEXT: i32.gt_u $push85=, $pop84, $pop83 |
| ; NO-SIMD128-NEXT: i32.select $push86=, $1, $17, $pop85 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: max_u_v16i8: |
| ; NO-SIMD128-FAST: .functype max_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop117 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push3=, $pop2, $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop116 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop115 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push7=, $pop6, $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop114 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop113 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push11=, $pop10, $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop112 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop111 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push15=, $pop14, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop110 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $21, $pop109 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push21=, $pop20, $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $21, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop108 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $22, $pop107 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push25=, $pop24, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $22, $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop106 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $23, $pop105 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push31=, $pop30, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $23, $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop104 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $24, $pop103 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push37=, $pop36, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $24, $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $9, $pop102 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $25, $pop101 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push43=, $pop42, $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push44=, $9, $25, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $10, $pop100 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $26, $pop99 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push47=, $pop46, $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push48=, $10, $26, $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push52=, $11, $pop98 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $27, $pop97 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push53=, $pop52, $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push54=, $11, $27, $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $12, $pop96 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $28, $pop95 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push59=, $pop58, $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push60=, $12, $28, $pop59 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push64=, $13, $pop94 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $29, $pop93 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push65=, $pop64, $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push66=, $13, $29, $pop65 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push70=, $14, $pop92 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push69=, $30, $pop91 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push71=, $pop70, $pop69 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push72=, $14, $30, $pop71 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push76=, $15, $pop90 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push75=, $31, $pop89 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push77=, $pop76, $pop75 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push78=, $15, $31, $pop77 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push82=, $16, $pop88 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push81=, $32, $pop87 |
| ; NO-SIMD128-FAST-NEXT: i32.gt_u $push83=, $pop82, $pop81 |
| ; NO-SIMD128-FAST-NEXT: i32.select $push84=, $16, $32, $pop83 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84 |
| ; NO-SIMD128-FAST-NEXT: return |
| %c = icmp ugt <16 x i8> %x, %y |
| %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @avgr_u_v16i8(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: avgr_u_v16i8: |
| ; SIMD128: .functype avgr_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.avgr_u $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: avgr_u_v16i8: |
| ; SIMD128-FAST: .functype avgr_u_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.avgr_u $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: avgr_u_v16i8: |
| ; NO-SIMD128: .functype avgr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0 |
| ; NO-SIMD128-NEXT: i32.add $push2=, $16, $32 |
| ; NO-SIMD128-NEXT: i32.const $push3=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push5=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push133=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop133 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop1), $pop7 |
| ; NO-SIMD128-NEXT: i32.const $push8=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $15, $31 |
| ; NO-SIMD128-NEXT: i32.const $push132=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop132 |
| ; NO-SIMD128-NEXT: i32.const $push131=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop131 |
| ; NO-SIMD128-NEXT: i32.const $push130=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop130 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop9), $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push14=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-NEXT: i32.add $push16=, $14, $30 |
| ; NO-SIMD128-NEXT: i32.const $push129=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop129 |
| ; NO-SIMD128-NEXT: i32.const $push128=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop128 |
| ; NO-SIMD128-NEXT: i32.const $push127=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop127 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop19 |
| ; NO-SIMD128-NEXT: i32.const $push20=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $13, $29 |
| ; NO-SIMD128-NEXT: i32.const $push126=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop126 |
| ; NO-SIMD128-NEXT: i32.const $push125=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop125 |
| ; NO-SIMD128-NEXT: i32.const $push124=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop124 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop21), $pop25 |
| ; NO-SIMD128-NEXT: i32.const $push26=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-NEXT: i32.add $push28=, $12, $28 |
| ; NO-SIMD128-NEXT: i32.const $push123=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $pop28, $pop123 |
| ; NO-SIMD128-NEXT: i32.const $push122=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push30=, $pop29, $pop122 |
| ; NO-SIMD128-NEXT: i32.const $push121=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push31=, $pop30, $pop121 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop27), $pop31 |
| ; NO-SIMD128-NEXT: i32.const $push32=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $11, $27 |
| ; NO-SIMD128-NEXT: i32.const $push120=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop120 |
| ; NO-SIMD128-NEXT: i32.const $push119=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop119 |
| ; NO-SIMD128-NEXT: i32.const $push118=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop118 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop33), $pop37 |
| ; NO-SIMD128-NEXT: i32.const $push38=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push39=, $0, $pop38 |
| ; NO-SIMD128-NEXT: i32.add $push40=, $10, $26 |
| ; NO-SIMD128-NEXT: i32.const $push117=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push41=, $pop40, $pop117 |
| ; NO-SIMD128-NEXT: i32.const $push116=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push42=, $pop41, $pop116 |
| ; NO-SIMD128-NEXT: i32.const $push115=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push43=, $pop42, $pop115 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop39), $pop43 |
| ; NO-SIMD128-NEXT: i32.add $push44=, $9, $25 |
| ; NO-SIMD128-NEXT: i32.const $push114=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push45=, $pop44, $pop114 |
| ; NO-SIMD128-NEXT: i32.const $push113=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push46=, $pop45, $pop113 |
| ; NO-SIMD128-NEXT: i32.const $push112=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push47=, $pop46, $pop112 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop47 |
| ; NO-SIMD128-NEXT: i32.const $push48=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push49=, $0, $pop48 |
| ; NO-SIMD128-NEXT: i32.add $push50=, $8, $24 |
| ; NO-SIMD128-NEXT: i32.const $push111=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop111 |
| ; NO-SIMD128-NEXT: i32.const $push110=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop110 |
| ; NO-SIMD128-NEXT: i32.const $push109=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop109 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop49), $pop53 |
| ; NO-SIMD128-NEXT: i32.const $push54=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54 |
| ; NO-SIMD128-NEXT: i32.add $push56=, $7, $23 |
| ; NO-SIMD128-NEXT: i32.const $push108=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push57=, $pop56, $pop108 |
| ; NO-SIMD128-NEXT: i32.const $push107=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push58=, $pop57, $pop107 |
| ; NO-SIMD128-NEXT: i32.const $push106=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop106 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop59 |
| ; NO-SIMD128-NEXT: i32.const $push60=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push61=, $0, $pop60 |
| ; NO-SIMD128-NEXT: i32.add $push62=, $6, $22 |
| ; NO-SIMD128-NEXT: i32.const $push105=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop105 |
| ; NO-SIMD128-NEXT: i32.const $push104=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop104 |
| ; NO-SIMD128-NEXT: i32.const $push103=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop103 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop61), $pop65 |
| ; NO-SIMD128-NEXT: i32.add $push66=, $5, $21 |
| ; NO-SIMD128-NEXT: i32.const $push102=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push67=, $pop66, $pop102 |
| ; NO-SIMD128-NEXT: i32.const $push101=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push68=, $pop67, $pop101 |
| ; NO-SIMD128-NEXT: i32.const $push100=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop100 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop69 |
| ; NO-SIMD128-NEXT: i32.const $push70=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push71=, $0, $pop70 |
| ; NO-SIMD128-NEXT: i32.add $push72=, $4, $20 |
| ; NO-SIMD128-NEXT: i32.const $push99=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push73=, $pop72, $pop99 |
| ; NO-SIMD128-NEXT: i32.const $push98=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push74=, $pop73, $pop98 |
| ; NO-SIMD128-NEXT: i32.const $push97=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push75=, $pop74, $pop97 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop71), $pop75 |
| ; NO-SIMD128-NEXT: i32.add $push76=, $3, $19 |
| ; NO-SIMD128-NEXT: i32.const $push96=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push77=, $pop76, $pop96 |
| ; NO-SIMD128-NEXT: i32.const $push95=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push78=, $pop77, $pop95 |
| ; NO-SIMD128-NEXT: i32.const $push94=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop94 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop79 |
| ; NO-SIMD128-NEXT: i32.add $push80=, $2, $18 |
| ; NO-SIMD128-NEXT: i32.const $push93=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push81=, $pop80, $pop93 |
| ; NO-SIMD128-NEXT: i32.const $push92=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push82=, $pop81, $pop92 |
| ; NO-SIMD128-NEXT: i32.const $push91=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push83=, $pop82, $pop91 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop83 |
| ; NO-SIMD128-NEXT: i32.add $push84=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.const $push90=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push85=, $pop84, $pop90 |
| ; NO-SIMD128-NEXT: i32.const $push89=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push86=, $pop85, $pop89 |
| ; NO-SIMD128-NEXT: i32.const $push88=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push87=, $pop86, $pop88 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop87 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8: |
| ; NO-SIMD128-FAST: .functype avgr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push133=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop133 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push132=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop132 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push131=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop131 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push130=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop130 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push129=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop129 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push128=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop128 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push127=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop127 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push126=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop126 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push125=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop125 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push124=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop124 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push123=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop123 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push122=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop122 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push121=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop121 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push120=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop120 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push119=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop119 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push118=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop118 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop117 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop116 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop115 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop114 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop113 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop112 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $9, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop111 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop110 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop109 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push47=, $0, $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $10, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $pop48, $pop108 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push50=, $pop49, $pop107 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push51=, $pop50, $pop106 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop47), $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push53=, $0, $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $11, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop105 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop104 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop103 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop53), $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push60=, $12, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $pop60, $pop102 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push62=, $pop61, $pop101 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push63=, $pop62, $pop100 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push65=, $0, $pop64 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push66=, $13, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $pop66, $pop99 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop98 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push69=, $pop68, $pop97 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop65), $pop69 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push70=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push71=, $0, $pop70 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push72=, $14, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $pop72, $pop96 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push74=, $pop73, $pop95 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop94 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop71), $pop75 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push77=, $0, $pop76 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push78=, $15, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $pop78, $pop93 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push80=, $pop79, $pop92 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push81=, $pop80, $pop91 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop77), $pop81 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push83=, $0, $pop82 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push84=, $16, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $pop84, $pop90 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push86=, $pop85, $pop89 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push87=, $pop86, $pop88 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop83), $pop87 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = add nuw <16 x i8> %x, %y |
| %b = add nuw <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, |
| i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> |
| %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, |
| i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> |
| ret <16 x i8> %c |
| } |
| |
| define <16 x i8> @avgr_u_v16i8_wrap(<16 x i8> %x, <16 x i8> %y) { |
| ; SIMD128-LABEL: avgr_u_v16i8_wrap: |
| ; SIMD128: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.add $push0=, $0, $1 |
| ; SIMD128-NEXT: v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 |
| ; SIMD128-NEXT: i8x16.add $push2=, $pop0, $pop1 |
| ; SIMD128-NEXT: i32.const $push3=, 1 |
| ; SIMD128-NEXT: i8x16.shr_u $push4=, $pop2, $pop3 |
| ; SIMD128-NEXT: return $pop4 |
| ; |
| ; SIMD128-FAST-LABEL: avgr_u_v16i8_wrap: |
| ; SIMD128-FAST: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.add $push2=, $0, $1 |
| ; SIMD128-FAST-NEXT: v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 |
| ; SIMD128-FAST-NEXT: i8x16.add $push1=, $pop2, $pop3 |
| ; SIMD128-FAST-NEXT: i32.const $push4=, 1 |
| ; SIMD128-FAST-NEXT: i8x16.shr_u $push0=, $pop1, $pop4 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: avgr_u_v16i8_wrap: |
| ; NO-SIMD128: .functype avgr_u_v16i8_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0 |
| ; NO-SIMD128-NEXT: i32.add $push2=, $16, $32 |
| ; NO-SIMD128-NEXT: i32.const $push3=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push5=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push133=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop133 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop1), $pop7 |
| ; NO-SIMD128-NEXT: i32.const $push8=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $15, $31 |
| ; NO-SIMD128-NEXT: i32.const $push132=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop132 |
| ; NO-SIMD128-NEXT: i32.const $push131=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop131 |
| ; NO-SIMD128-NEXT: i32.const $push130=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop130 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop9), $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push14=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-NEXT: i32.add $push16=, $14, $30 |
| ; NO-SIMD128-NEXT: i32.const $push129=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop129 |
| ; NO-SIMD128-NEXT: i32.const $push128=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop128 |
| ; NO-SIMD128-NEXT: i32.const $push127=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop127 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop19 |
| ; NO-SIMD128-NEXT: i32.const $push20=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $13, $29 |
| ; NO-SIMD128-NEXT: i32.const $push126=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop126 |
| ; NO-SIMD128-NEXT: i32.const $push125=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop125 |
| ; NO-SIMD128-NEXT: i32.const $push124=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop124 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop21), $pop25 |
| ; NO-SIMD128-NEXT: i32.const $push26=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-NEXT: i32.add $push28=, $12, $28 |
| ; NO-SIMD128-NEXT: i32.const $push123=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $pop28, $pop123 |
| ; NO-SIMD128-NEXT: i32.const $push122=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push30=, $pop29, $pop122 |
| ; NO-SIMD128-NEXT: i32.const $push121=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push31=, $pop30, $pop121 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop27), $pop31 |
| ; NO-SIMD128-NEXT: i32.const $push32=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $11, $27 |
| ; NO-SIMD128-NEXT: i32.const $push120=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop120 |
| ; NO-SIMD128-NEXT: i32.const $push119=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop119 |
| ; NO-SIMD128-NEXT: i32.const $push118=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop118 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop33), $pop37 |
| ; NO-SIMD128-NEXT: i32.const $push38=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push39=, $0, $pop38 |
| ; NO-SIMD128-NEXT: i32.add $push40=, $10, $26 |
| ; NO-SIMD128-NEXT: i32.const $push117=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push41=, $pop40, $pop117 |
| ; NO-SIMD128-NEXT: i32.const $push116=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push42=, $pop41, $pop116 |
| ; NO-SIMD128-NEXT: i32.const $push115=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push43=, $pop42, $pop115 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop39), $pop43 |
| ; NO-SIMD128-NEXT: i32.add $push44=, $9, $25 |
| ; NO-SIMD128-NEXT: i32.const $push114=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push45=, $pop44, $pop114 |
| ; NO-SIMD128-NEXT: i32.const $push113=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push46=, $pop45, $pop113 |
| ; NO-SIMD128-NEXT: i32.const $push112=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push47=, $pop46, $pop112 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop47 |
| ; NO-SIMD128-NEXT: i32.const $push48=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push49=, $0, $pop48 |
| ; NO-SIMD128-NEXT: i32.add $push50=, $8, $24 |
| ; NO-SIMD128-NEXT: i32.const $push111=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop111 |
| ; NO-SIMD128-NEXT: i32.const $push110=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop110 |
| ; NO-SIMD128-NEXT: i32.const $push109=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop109 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop49), $pop53 |
| ; NO-SIMD128-NEXT: i32.const $push54=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54 |
| ; NO-SIMD128-NEXT: i32.add $push56=, $7, $23 |
| ; NO-SIMD128-NEXT: i32.const $push108=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push57=, $pop56, $pop108 |
| ; NO-SIMD128-NEXT: i32.const $push107=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push58=, $pop57, $pop107 |
| ; NO-SIMD128-NEXT: i32.const $push106=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop106 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop59 |
| ; NO-SIMD128-NEXT: i32.const $push60=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push61=, $0, $pop60 |
| ; NO-SIMD128-NEXT: i32.add $push62=, $6, $22 |
| ; NO-SIMD128-NEXT: i32.const $push105=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop105 |
| ; NO-SIMD128-NEXT: i32.const $push104=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop104 |
| ; NO-SIMD128-NEXT: i32.const $push103=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop103 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop61), $pop65 |
| ; NO-SIMD128-NEXT: i32.add $push66=, $5, $21 |
| ; NO-SIMD128-NEXT: i32.const $push102=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push67=, $pop66, $pop102 |
| ; NO-SIMD128-NEXT: i32.const $push101=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push68=, $pop67, $pop101 |
| ; NO-SIMD128-NEXT: i32.const $push100=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop100 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop69 |
| ; NO-SIMD128-NEXT: i32.const $push70=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push71=, $0, $pop70 |
| ; NO-SIMD128-NEXT: i32.add $push72=, $4, $20 |
| ; NO-SIMD128-NEXT: i32.const $push99=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push73=, $pop72, $pop99 |
| ; NO-SIMD128-NEXT: i32.const $push98=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push74=, $pop73, $pop98 |
| ; NO-SIMD128-NEXT: i32.const $push97=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push75=, $pop74, $pop97 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop71), $pop75 |
| ; NO-SIMD128-NEXT: i32.add $push76=, $3, $19 |
| ; NO-SIMD128-NEXT: i32.const $push96=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push77=, $pop76, $pop96 |
| ; NO-SIMD128-NEXT: i32.const $push95=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push78=, $pop77, $pop95 |
| ; NO-SIMD128-NEXT: i32.const $push94=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop94 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop79 |
| ; NO-SIMD128-NEXT: i32.add $push80=, $2, $18 |
| ; NO-SIMD128-NEXT: i32.const $push93=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push81=, $pop80, $pop93 |
| ; NO-SIMD128-NEXT: i32.const $push92=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push82=, $pop81, $pop92 |
| ; NO-SIMD128-NEXT: i32.const $push91=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push83=, $pop82, $pop91 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop83 |
| ; NO-SIMD128-NEXT: i32.add $push84=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.const $push90=, 1 |
| ; NO-SIMD128-NEXT: i32.add $push85=, $pop84, $pop90 |
| ; NO-SIMD128-NEXT: i32.const $push89=, 254 |
| ; NO-SIMD128-NEXT: i32.and $push86=, $pop85, $pop89 |
| ; NO-SIMD128-NEXT: i32.const $push88=, 1 |
| ; NO-SIMD128-NEXT: i32.shr_u $push87=, $pop86, $pop88 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop87 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8_wrap: |
| ; NO-SIMD128-FAST: .functype avgr_u_v16i8_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push133=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop133 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push132=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop132 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push131=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop131 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push130=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop130 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push129=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop129 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push128=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop128 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push127=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop127 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push126=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop126 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push125=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop125 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push124=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop124 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push123=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop123 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push122=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop122 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push121=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop121 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push120=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop120 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push119=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop119 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push118=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop118 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop117 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop116 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop115 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $24 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop114 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop113 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop112 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $9, $25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop111 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop110 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop109 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push47=, $0, $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $10, $26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $pop48, $pop108 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push50=, $pop49, $pop107 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push51=, $pop50, $pop106 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop47), $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push53=, $0, $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $11, $27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop105 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop104 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop103 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop53), $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push60=, $12, $28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $pop60, $pop102 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push62=, $pop61, $pop101 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push63=, $pop62, $pop100 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push65=, $0, $pop64 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push66=, $13, $29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $pop66, $pop99 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop98 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push69=, $pop68, $pop97 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop65), $pop69 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push70=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push71=, $0, $pop70 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push72=, $14, $30 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $pop72, $pop96 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push74=, $pop73, $pop95 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop94 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop71), $pop75 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push77=, $0, $pop76 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push78=, $15, $31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $pop78, $pop93 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push80=, $pop79, $pop92 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push81=, $pop80, $pop91 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop77), $pop81 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push83=, $0, $pop82 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push84=, $16, $32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $pop84, $pop90 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 254 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push86=, $pop85, $pop89 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 1 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_u $push87=, $pop86, $pop88 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop83), $pop87 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = add <16 x i8> %x, %y |
| %b = add <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, |
| i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> |
| %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, |
| i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> |
| ret <16 x i8> %c |
| } |
| |
| define <16 x i8> @abs_v16i8(<16 x i8> %x) { |
| ; SIMD128-LABEL: abs_v16i8: |
| ; SIMD128: .functype abs_v16i8 (v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.abs $push0=, $0 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: abs_v16i8: |
| ; SIMD128-FAST: .functype abs_v16i8 (v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.abs $push0=, $0 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: abs_v16i8: |
| ; NO-SIMD128: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push4=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $16 |
| ; NO-SIMD128-NEXT: i32.const $push1=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push117=, $pop0, $pop1 |
| ; NO-SIMD128-NEXT: local.tee $push116=, $17=, $pop117 |
| ; NO-SIMD128-NEXT: i32.xor $push2=, $16, $pop116 |
| ; NO-SIMD128-NEXT: i32.sub $push3=, $pop2, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push9=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $15 |
| ; NO-SIMD128-NEXT: i32.const $push115=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push114=, $pop6, $pop115 |
| ; NO-SIMD128-NEXT: local.tee $push113=, $16=, $pop114 |
| ; NO-SIMD128-NEXT: i32.xor $push7=, $15, $pop113 |
| ; NO-SIMD128-NEXT: i32.sub $push8=, $pop7, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8 |
| ; NO-SIMD128-NEXT: i32.const $push14=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push11=, $14 |
| ; NO-SIMD128-NEXT: i32.const $push112=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push111=, $pop11, $pop112 |
| ; NO-SIMD128-NEXT: local.tee $push110=, $16=, $pop111 |
| ; NO-SIMD128-NEXT: i32.xor $push12=, $14, $pop110 |
| ; NO-SIMD128-NEXT: i32.sub $push13=, $pop12, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push19=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push16=, $13 |
| ; NO-SIMD128-NEXT: i32.const $push109=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push108=, $pop16, $pop109 |
| ; NO-SIMD128-NEXT: local.tee $push107=, $16=, $pop108 |
| ; NO-SIMD128-NEXT: i32.xor $push17=, $13, $pop107 |
| ; NO-SIMD128-NEXT: i32.sub $push18=, $pop17, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18 |
| ; NO-SIMD128-NEXT: i32.const $push24=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push21=, $12 |
| ; NO-SIMD128-NEXT: i32.const $push106=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push105=, $pop21, $pop106 |
| ; NO-SIMD128-NEXT: local.tee $push104=, $16=, $pop105 |
| ; NO-SIMD128-NEXT: i32.xor $push22=, $12, $pop104 |
| ; NO-SIMD128-NEXT: i32.sub $push23=, $pop22, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23 |
| ; NO-SIMD128-NEXT: i32.const $push29=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push26=, $11 |
| ; NO-SIMD128-NEXT: i32.const $push103=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push102=, $pop26, $pop103 |
| ; NO-SIMD128-NEXT: local.tee $push101=, $16=, $pop102 |
| ; NO-SIMD128-NEXT: i32.xor $push27=, $11, $pop101 |
| ; NO-SIMD128-NEXT: i32.sub $push28=, $pop27, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push34=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $10 |
| ; NO-SIMD128-NEXT: i32.const $push100=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push99=, $pop31, $pop100 |
| ; NO-SIMD128-NEXT: local.tee $push98=, $16=, $pop99 |
| ; NO-SIMD128-NEXT: i32.xor $push32=, $10, $pop98 |
| ; NO-SIMD128-NEXT: i32.sub $push33=, $pop32, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $9 |
| ; NO-SIMD128-NEXT: i32.const $push97=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push96=, $pop36, $pop97 |
| ; NO-SIMD128-NEXT: local.tee $push95=, $16=, $pop96 |
| ; NO-SIMD128-NEXT: i32.xor $push37=, $9, $pop95 |
| ; NO-SIMD128-NEXT: i32.sub $push38=, $pop37, $16 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop38 |
| ; NO-SIMD128-NEXT: i32.const $push94=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop94 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push39=, $8 |
| ; NO-SIMD128-NEXT: i32.const $push93=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push92=, $pop39, $pop93 |
| ; NO-SIMD128-NEXT: local.tee $push91=, $16=, $pop92 |
| ; NO-SIMD128-NEXT: i32.xor $push40=, $8, $pop91 |
| ; NO-SIMD128-NEXT: i32.sub $push41=, $pop40, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop41 |
| ; NO-SIMD128-NEXT: i32.const $push46=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push47=, $0, $pop46 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $7 |
| ; NO-SIMD128-NEXT: i32.const $push90=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push89=, $pop43, $pop90 |
| ; NO-SIMD128-NEXT: local.tee $push88=, $16=, $pop89 |
| ; NO-SIMD128-NEXT: i32.xor $push44=, $7, $pop88 |
| ; NO-SIMD128-NEXT: i32.sub $push45=, $pop44, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop47), $pop45 |
| ; NO-SIMD128-NEXT: i32.const $push51=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push48=, $6 |
| ; NO-SIMD128-NEXT: i32.const $push87=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push86=, $pop48, $pop87 |
| ; NO-SIMD128-NEXT: local.tee $push85=, $16=, $pop86 |
| ; NO-SIMD128-NEXT: i32.xor $push49=, $6, $pop85 |
| ; NO-SIMD128-NEXT: i32.sub $push50=, $pop49, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $5 |
| ; NO-SIMD128-NEXT: i32.const $push84=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push83=, $pop53, $pop84 |
| ; NO-SIMD128-NEXT: local.tee $push82=, $16=, $pop83 |
| ; NO-SIMD128-NEXT: i32.xor $push54=, $5, $pop82 |
| ; NO-SIMD128-NEXT: i32.sub $push55=, $pop54, $16 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop55 |
| ; NO-SIMD128-NEXT: i32.const $push59=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push60=, $0, $pop59 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push56=, $4 |
| ; NO-SIMD128-NEXT: i32.const $push81=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push80=, $pop56, $pop81 |
| ; NO-SIMD128-NEXT: local.tee $push79=, $16=, $pop80 |
| ; NO-SIMD128-NEXT: i32.xor $push57=, $4, $pop79 |
| ; NO-SIMD128-NEXT: i32.sub $push58=, $pop57, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop60), $pop58 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push61=, $3 |
| ; NO-SIMD128-NEXT: i32.const $push78=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push77=, $pop61, $pop78 |
| ; NO-SIMD128-NEXT: local.tee $push76=, $16=, $pop77 |
| ; NO-SIMD128-NEXT: i32.xor $push62=, $3, $pop76 |
| ; NO-SIMD128-NEXT: i32.sub $push63=, $pop62, $16 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop63 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $2 |
| ; NO-SIMD128-NEXT: i32.const $push75=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push74=, $pop64, $pop75 |
| ; NO-SIMD128-NEXT: local.tee $push73=, $16=, $pop74 |
| ; NO-SIMD128-NEXT: i32.xor $push65=, $2, $pop73 |
| ; NO-SIMD128-NEXT: i32.sub $push66=, $pop65, $16 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop66 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push67=, $1 |
| ; NO-SIMD128-NEXT: i32.const $push72=, 7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push71=, $pop67, $pop72 |
| ; NO-SIMD128-NEXT: local.tee $push70=, $16=, $pop71 |
| ; NO-SIMD128-NEXT: i32.xor $push68=, $1, $pop70 |
| ; NO-SIMD128-NEXT: i32.sub $push69=, $pop68, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop69 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: abs_v16i8: |
| ; NO-SIMD128-FAST: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push117=, $pop0, $pop1 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push116=, $17=, $pop117 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop116 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop2, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push114=, $pop4, $pop115 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push113=, $1=, $pop114 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop113 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push111=, $pop7, $pop112 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push110=, $2=, $pop111 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $3, $pop110 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop8, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push10=, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push108=, $pop10, $pop109 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push107=, $3=, $pop108 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $4, $pop107 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop11, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push105=, $pop15, $pop106 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push104=, $4=, $pop105 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $5, $pop104 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push17=, $pop16, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push102=, $pop18, $pop103 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push101=, $5=, $pop102 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $6, $pop101 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push20=, $pop19, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push99=, $pop23, $pop100 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push98=, $6=, $pop99 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $7, $pop98 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push25=, $pop24, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop97 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push95=, $pop28, $pop96 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push94=, $7=, $pop95 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $8, $pop94 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push30=, $pop29, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push32=, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push92=, $pop32, $pop93 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push91=, $8=, $pop92 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push33=, $9, $pop91 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push34=, $pop33, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push89=, $pop35, $pop90 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push88=, $9=, $pop89 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $10, $pop88 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push37=, $pop36, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push86=, $pop40, $pop87 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push85=, $10=, $pop86 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $11, $pop85 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push42=, $pop41, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push83=, $pop45, $pop84 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push82=, $11=, $pop83 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $12, $pop82 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push47=, $pop46, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $0, $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push81=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push80=, $pop50, $pop81 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push79=, $12=, $pop80 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push51=, $13, $pop79 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push52=, $pop51, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop54), $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push55=, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push77=, $pop55, $pop78 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push76=, $13=, $pop77 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push56=, $14, $pop76 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push57=, $pop56, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push64=, $0, $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push60=, $15 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push75=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push74=, $pop60, $pop75 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push73=, $14=, $pop74 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push61=, $15, $pop73 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push62=, $pop61, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop64), $pop62 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push68=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push69=, $0, $pop68 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push65=, $16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push71=, $pop65, $pop72 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push70=, $0=, $pop71 |
| ; NO-SIMD128-FAST-NEXT: i32.xor $push66=, $16, $pop70 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push67=, $pop66, $0 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop69), $pop67 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = sub <16 x i8> zeroinitializer, %x |
| %b = icmp slt <16 x i8> %x, zeroinitializer |
| %c = select <16 x i1> %b, <16 x i8> %a, <16 x i8> %x |
| ret <16 x i8> %c |
| } |
| |
| define <16 x i8> @neg_v16i8(<16 x i8> %x) { |
| ; SIMD128-LABEL: neg_v16i8: |
| ; SIMD128: .functype neg_v16i8 (v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.neg $push0=, $0 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: neg_v16i8: |
| ; SIMD128-FAST: .functype neg_v16i8 (v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.neg $push0=, $0 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: neg_v16i8: |
| ; NO-SIMD128: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $9 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.const $push53=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push2=, $pop53, $5 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.const $push52=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push3=, $pop52, $3 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push51=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push4=, $pop51, $2 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push50=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push5=, $pop50, $1 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push7=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-NEXT: i32.const $push49=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push6=, $pop49, $16 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6 |
| ; NO-SIMD128-NEXT: i32.const $push10=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push48=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push9=, $pop48, $15 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9 |
| ; NO-SIMD128-NEXT: i32.const $push13=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push47=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push12=, $pop47, $14 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-NEXT: i32.const $push16=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push46=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push15=, $pop46, $13 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-NEXT: i32.const $push19=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19 |
| ; NO-SIMD128-NEXT: i32.const $push45=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push18=, $pop45, $12 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18 |
| ; NO-SIMD128-NEXT: i32.const $push22=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22 |
| ; NO-SIMD128-NEXT: i32.const $push44=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push21=, $pop44, $11 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push25=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25 |
| ; NO-SIMD128-NEXT: i32.const $push43=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push24=, $pop43, $10 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24 |
| ; NO-SIMD128-NEXT: i32.const $push28=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push42=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push27=, $pop42, $8 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27 |
| ; NO-SIMD128-NEXT: i32.const $push31=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push30=, $pop41, $7 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30 |
| ; NO-SIMD128-NEXT: i32.const $push34=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34 |
| ; NO-SIMD128-NEXT: i32.const $push40=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push33=, $pop40, $6 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push37=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37 |
| ; NO-SIMD128-NEXT: i32.const $push39=, 0 |
| ; NO-SIMD128-NEXT: i32.sub $push36=, $pop39, $4 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: neg_v16i8: |
| ; NO-SIMD128-FAST: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop53, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop52, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop51, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $pop50, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push10=, $pop49, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop9), $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push13=, $pop48, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop12), $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $pop47, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push17=, $pop46, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push20=, $pop45, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push23=, $pop44, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push26=, $pop43, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push29=, $pop42, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push32=, $pop41, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push35=, $pop40, $15 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 0 |
| ; NO-SIMD128-FAST-NEXT: i32.sub $push38=, $pop39, $16 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop38 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = sub <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, |
| i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, |
| %x |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @shl_v16i8(<16 x i8> %v, i8 %x) { |
| ; SIMD128-LABEL: shl_v16i8: |
| ; SIMD128: .functype shl_v16i8 (v128, i32) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.shl $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: shl_v16i8: |
| ; SIMD128-FAST: .functype shl_v16i8 (v128, i32) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: shl_v16i8: |
| ; NO-SIMD128: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push40=, $17, $pop0 |
| ; NO-SIMD128-NEXT: local.tee $push39=, $17=, $pop40 |
| ; NO-SIMD128-NEXT: i32.shl $push1=, $9, $pop39 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.shl $push2=, $5, $17 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.shl $push3=, $3, $17 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.shl $push4=, $2, $17 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.shl $push5=, $1, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push7=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-NEXT: i32.shl $push6=, $16, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6 |
| ; NO-SIMD128-NEXT: i32.const $push10=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-NEXT: i32.shl $push9=, $15, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9 |
| ; NO-SIMD128-NEXT: i32.const $push13=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-NEXT: i32.shl $push12=, $14, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-NEXT: i32.const $push16=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-NEXT: i32.shl $push15=, $13, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-NEXT: i32.const $push19=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19 |
| ; NO-SIMD128-NEXT: i32.shl $push18=, $12, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18 |
| ; NO-SIMD128-NEXT: i32.const $push22=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22 |
| ; NO-SIMD128-NEXT: i32.shl $push21=, $11, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push25=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25 |
| ; NO-SIMD128-NEXT: i32.shl $push24=, $10, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24 |
| ; NO-SIMD128-NEXT: i32.const $push28=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28 |
| ; NO-SIMD128-NEXT: i32.shl $push27=, $8, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27 |
| ; NO-SIMD128-NEXT: i32.const $push31=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31 |
| ; NO-SIMD128-NEXT: i32.shl $push30=, $7, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30 |
| ; NO-SIMD128-NEXT: i32.const $push34=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34 |
| ; NO-SIMD128-NEXT: i32.shl $push33=, $6, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push37=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37 |
| ; NO-SIMD128-NEXT: i32.shl $push36=, $4, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: shl_v16i8: |
| ; NO-SIMD128-FAST: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $17, $pop0 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push39=, $17=, $pop40 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $6, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop9), $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $7, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop12), $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push17=, $9, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $10, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push23=, $11, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push26=, $12, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push29=, $13, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push32=, $14, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push35=, $15, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push38=, $16, $17 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop38 |
| ; NO-SIMD128-FAST-NEXT: return |
| %t = insertelement <16 x i8> undef, i8 %x, i32 0 |
| %s = shufflevector <16 x i8> %t, <16 x i8> undef, |
| <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, |
| i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> |
| %a = shl <16 x i8> %v, %s |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @shl_const_v16i8(<16 x i8> %v) { |
| ; SIMD128-LABEL: shl_const_v16i8: |
| ; SIMD128: .functype shl_const_v16i8 (v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i32.const $push0=, 5 |
| ; SIMD128-NEXT: i8x16.shl $push1=, $0, $pop0 |
| ; SIMD128-NEXT: return $pop1 |
| ; |
| ; SIMD128-FAST-LABEL: shl_const_v16i8: |
| ; SIMD128-FAST: .functype shl_const_v16i8 (v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i32.const $push1=, 5 |
| ; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $pop1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: shl_const_v16i8: |
| ; NO-SIMD128: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push1=, $9, $pop0 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1 |
| ; NO-SIMD128-NEXT: i32.const $push53=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push2=, $5, $pop53 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.const $push52=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push3=, $3, $pop52 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-NEXT: i32.const $push51=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push4=, $2, $pop51 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push50=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push5=, $1, $pop50 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5 |
| ; NO-SIMD128-NEXT: i32.const $push7=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-NEXT: i32.const $push49=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push6=, $16, $pop49 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6 |
| ; NO-SIMD128-NEXT: i32.const $push10=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push48=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push9=, $15, $pop48 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9 |
| ; NO-SIMD128-NEXT: i32.const $push13=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push47=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push12=, $14, $pop47 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-NEXT: i32.const $push16=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push46=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push15=, $13, $pop46 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15 |
| ; NO-SIMD128-NEXT: i32.const $push19=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19 |
| ; NO-SIMD128-NEXT: i32.const $push45=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push18=, $12, $pop45 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18 |
| ; NO-SIMD128-NEXT: i32.const $push22=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22 |
| ; NO-SIMD128-NEXT: i32.const $push44=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push21=, $11, $pop44 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push25=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25 |
| ; NO-SIMD128-NEXT: i32.const $push43=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push24=, $10, $pop43 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24 |
| ; NO-SIMD128-NEXT: i32.const $push28=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push42=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push27=, $8, $pop42 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27 |
| ; NO-SIMD128-NEXT: i32.const $push31=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push30=, $7, $pop41 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30 |
| ; NO-SIMD128-NEXT: i32.const $push40=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop40 |
| ; NO-SIMD128-NEXT: i32.const $push39=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push33=, $6, $pop39 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push36=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36 |
| ; NO-SIMD128-NEXT: i32.const $push38=, 5 |
| ; NO-SIMD128-NEXT: i32.shl $push35=, $4, $pop38 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: shl_const_v16i8: |
| ; NO-SIMD128-FAST: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop52 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $pop50 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop49 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push9=, $6, $pop48 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $7, $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push15=, $8, $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $9, $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push19=, $10, $pop44 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push22=, $11, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push25=, $12, $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push28=, $13, $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push31=, $14, $pop40 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push34=, $15, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push37=, $16, $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = shl <16 x i8> %v, |
| <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, |
| i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @shl_vec_v16i8(<16 x i8> %v, <16 x i8> %x) { |
| ; SIMD128-LABEL: shl_vec_v16i8: |
| ; SIMD128: .functype shl_vec_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push7=, $0, 0 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0 |
| ; SIMD128-NEXT: i32.const $push1=, 7 |
| ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 |
| ; SIMD128-NEXT: i32.shl $push8=, $pop7, $pop6 |
| ; SIMD128-NEXT: i8x16.splat $push9=, $pop8 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $0, 1 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 |
| ; SIMD128-NEXT: i32.const $push95=, 7 |
| ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95 |
| ; SIMD128-NEXT: i32.shl $push4=, $pop3, $pop2 |
| ; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 2 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2 |
| ; SIMD128-NEXT: i32.const $push94=, 7 |
| ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94 |
| ; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12 |
| ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push18=, $0, 3 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3 |
| ; SIMD128-NEXT: i32.const $push93=, 7 |
| ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93 |
| ; SIMD128-NEXT: i32.shl $push19=, $pop18, $pop17 |
| ; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push23=, $0, 4 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4 |
| ; SIMD128-NEXT: i32.const $push92=, 7 |
| ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92 |
| ; SIMD128-NEXT: i32.shl $push24=, $pop23, $pop22 |
| ; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $0, 5 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5 |
| ; SIMD128-NEXT: i32.const $push91=, 7 |
| ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91 |
| ; SIMD128-NEXT: i32.shl $push29=, $pop28, $pop27 |
| ; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 6 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6 |
| ; SIMD128-NEXT: i32.const $push90=, 7 |
| ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90 |
| ; SIMD128-NEXT: i32.shl $push34=, $pop33, $pop32 |
| ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push38=, $0, 7 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7 |
| ; SIMD128-NEXT: i32.const $push89=, 7 |
| ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89 |
| ; SIMD128-NEXT: i32.shl $push39=, $pop38, $pop37 |
| ; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push43=, $0, 8 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8 |
| ; SIMD128-NEXT: i32.const $push88=, 7 |
| ; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88 |
| ; SIMD128-NEXT: i32.shl $push44=, $pop43, $pop42 |
| ; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $0, 9 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9 |
| ; SIMD128-NEXT: i32.const $push87=, 7 |
| ; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87 |
| ; SIMD128-NEXT: i32.shl $push49=, $pop48, $pop47 |
| ; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 10 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10 |
| ; SIMD128-NEXT: i32.const $push86=, 7 |
| ; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86 |
| ; SIMD128-NEXT: i32.shl $push54=, $pop53, $pop52 |
| ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push58=, $0, 11 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11 |
| ; SIMD128-NEXT: i32.const $push85=, 7 |
| ; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85 |
| ; SIMD128-NEXT: i32.shl $push59=, $pop58, $pop57 |
| ; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push63=, $0, 12 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12 |
| ; SIMD128-NEXT: i32.const $push84=, 7 |
| ; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84 |
| ; SIMD128-NEXT: i32.shl $push64=, $pop63, $pop62 |
| ; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push68=, $0, 13 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13 |
| ; SIMD128-NEXT: i32.const $push83=, 7 |
| ; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83 |
| ; SIMD128-NEXT: i32.shl $push69=, $pop68, $pop67 |
| ; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push73=, $0, 14 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14 |
| ; SIMD128-NEXT: i32.const $push82=, 7 |
| ; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82 |
| ; SIMD128-NEXT: i32.shl $push74=, $pop73, $pop72 |
| ; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push78=, $0, 15 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15 |
| ; SIMD128-NEXT: i32.const $push81=, 7 |
| ; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81 |
| ; SIMD128-NEXT: i32.shl $push79=, $pop78, $pop77 |
| ; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79 |
| ; SIMD128-NEXT: return $pop80 |
| ; |
| ; SIMD128-FAST-LABEL: shl_vec_v16i8: |
| ; SIMD128-FAST: .functype shl_vec_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push8=, $0, 0 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0 |
| ; SIMD128-FAST-NEXT: i32.const $push2=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 |
| ; SIMD128-FAST-NEXT: i32.shl $push9=, $pop8, $pop7 |
| ; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $0, 1 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 |
| ; SIMD128-FAST-NEXT: i32.const $push95=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95 |
| ; SIMD128-FAST-NEXT: i32.shl $push5=, $pop4, $pop3 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 2 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2 |
| ; SIMD128-FAST-NEXT: i32.const $push94=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94 |
| ; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push19=, $0, 3 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3 |
| ; SIMD128-FAST-NEXT: i32.const $push93=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93 |
| ; SIMD128-FAST-NEXT: i32.shl $push20=, $pop19, $pop18 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push24=, $0, 4 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4 |
| ; SIMD128-FAST-NEXT: i32.const $push92=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92 |
| ; SIMD128-FAST-NEXT: i32.shl $push25=, $pop24, $pop23 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $0, 5 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5 |
| ; SIMD128-FAST-NEXT: i32.const $push91=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91 |
| ; SIMD128-FAST-NEXT: i32.shl $push30=, $pop29, $pop28 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 6 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6 |
| ; SIMD128-FAST-NEXT: i32.const $push90=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90 |
| ; SIMD128-FAST-NEXT: i32.shl $push35=, $pop34, $pop33 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push39=, $0, 7 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7 |
| ; SIMD128-FAST-NEXT: i32.const $push89=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89 |
| ; SIMD128-FAST-NEXT: i32.shl $push40=, $pop39, $pop38 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push44=, $0, 8 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8 |
| ; SIMD128-FAST-NEXT: i32.const $push88=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88 |
| ; SIMD128-FAST-NEXT: i32.shl $push45=, $pop44, $pop43 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $0, 9 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9 |
| ; SIMD128-FAST-NEXT: i32.const $push87=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87 |
| ; SIMD128-FAST-NEXT: i32.shl $push50=, $pop49, $pop48 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 10 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10 |
| ; SIMD128-FAST-NEXT: i32.const $push86=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86 |
| ; SIMD128-FAST-NEXT: i32.shl $push55=, $pop54, $pop53 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push59=, $0, 11 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11 |
| ; SIMD128-FAST-NEXT: i32.const $push85=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85 |
| ; SIMD128-FAST-NEXT: i32.shl $push60=, $pop59, $pop58 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push64=, $0, 12 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12 |
| ; SIMD128-FAST-NEXT: i32.const $push84=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84 |
| ; SIMD128-FAST-NEXT: i32.shl $push65=, $pop64, $pop63 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push69=, $0, 13 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13 |
| ; SIMD128-FAST-NEXT: i32.const $push83=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83 |
| ; SIMD128-FAST-NEXT: i32.shl $push70=, $pop69, $pop68 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push74=, $0, 14 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14 |
| ; SIMD128-FAST-NEXT: i32.const $push82=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82 |
| ; SIMD128-FAST-NEXT: i32.shl $push75=, $pop74, $pop73 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push79=, $0, 15 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15 |
| ; SIMD128-FAST-NEXT: i32.const $push81=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81 |
| ; SIMD128-FAST-NEXT: i32.shl $push80=, $pop79, $pop78 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: shl_vec_v16i8: |
| ; NO-SIMD128: .functype shl_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push1=, $25, $pop0 |
| ; NO-SIMD128-NEXT: i32.shl $push2=, $9, $pop1 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.const $push69=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push3=, $21, $pop69 |
| ; NO-SIMD128-NEXT: i32.shl $push4=, $5, $pop3 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.const $push68=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push5=, $19, $pop68 |
| ; NO-SIMD128-NEXT: i32.shl $push6=, $3, $pop5 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6 |
| ; NO-SIMD128-NEXT: i32.const $push67=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push7=, $18, $pop67 |
| ; NO-SIMD128-NEXT: i32.shl $push8=, $2, $pop7 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8 |
| ; NO-SIMD128-NEXT: i32.const $push66=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push9=, $17, $pop66 |
| ; NO-SIMD128-NEXT: i32.shl $push10=, $1, $pop9 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push13=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-NEXT: i32.const $push65=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push11=, $32, $pop65 |
| ; NO-SIMD128-NEXT: i32.shl $push12=, $16, $pop11 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-NEXT: i32.const $push17=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-NEXT: i32.const $push64=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push15=, $31, $pop64 |
| ; NO-SIMD128-NEXT: i32.shl $push16=, $15, $pop15 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push21=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-NEXT: i32.const $push63=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push19=, $30, $pop63 |
| ; NO-SIMD128-NEXT: i32.shl $push20=, $14, $pop19 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-NEXT: i32.const $push25=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25 |
| ; NO-SIMD128-NEXT: i32.const $push62=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push23=, $29, $pop62 |
| ; NO-SIMD128-NEXT: i32.shl $push24=, $13, $pop23 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24 |
| ; NO-SIMD128-NEXT: i32.const $push29=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-NEXT: i32.const $push61=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push27=, $28, $pop61 |
| ; NO-SIMD128-NEXT: i32.shl $push28=, $12, $pop27 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push33=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-NEXT: i32.const $push60=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop60 |
| ; NO-SIMD128-NEXT: i32.shl $push32=, $11, $pop31 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-NEXT: i32.const $push37=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37 |
| ; NO-SIMD128-NEXT: i32.const $push59=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push35=, $26, $pop59 |
| ; NO-SIMD128-NEXT: i32.shl $push36=, $10, $pop35 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41 |
| ; NO-SIMD128-NEXT: i32.const $push58=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push39=, $24, $pop58 |
| ; NO-SIMD128-NEXT: i32.shl $push40=, $8, $pop39 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40 |
| ; NO-SIMD128-NEXT: i32.const $push45=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45 |
| ; NO-SIMD128-NEXT: i32.const $push57=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push43=, $23, $pop57 |
| ; NO-SIMD128-NEXT: i32.shl $push44=, $7, $pop43 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44 |
| ; NO-SIMD128-NEXT: i32.const $push49=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49 |
| ; NO-SIMD128-NEXT: i32.const $push56=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push47=, $22, $pop56 |
| ; NO-SIMD128-NEXT: i32.shl $push48=, $6, $pop47 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48 |
| ; NO-SIMD128-NEXT: i32.const $push53=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53 |
| ; NO-SIMD128-NEXT: i32.const $push55=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push51=, $20, $pop55 |
| ; NO-SIMD128-NEXT: i32.shl $push52=, $4, $pop51 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: shl_vec_v16i8: |
| ; NO-SIMD128-FAST: .functype shl_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop0 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $pop1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $18, $pop69 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $2, $pop3 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $19, $pop68 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $3, $pop5 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $20, $pop67 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $4, $pop9 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $21, $pop66 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $5, $pop11 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $22, $pop65 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $6, $pop15 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $23, $pop64 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $7, $pop19 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $24, $pop63 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push24=, $8, $pop23 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push62=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $25, $pop62 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push26=, $9, $pop25 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $26, $pop61 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push30=, $10, $pop29 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $27, $pop60 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push34=, $11, $pop33 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $28, $pop59 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push38=, $12, $pop37 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $29, $pop58 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push42=, $13, $pop41 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push57=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $30, $pop57 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push46=, $14, $pop45 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $0, $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push49=, $31, $pop56 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push50=, $15, $pop49 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop48), $pop50 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $32, $pop55 |
| ; NO-SIMD128-FAST-NEXT: i32.shl $push54=, $16, $pop53 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop54 |
| ; NO-SIMD128-FAST-NEXT: return |
| %a = shl <16 x i8> %v, %x |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @shr_s_v16i8(<16 x i8> %v, i8 %x) { |
| ; SIMD128-LABEL: shr_s_v16i8: |
| ; SIMD128: .functype shr_s_v16i8 (v128, i32) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.shr_s $push0=, $0, $1 |
| ; SIMD128-NEXT: return $pop0 |
| ; |
| ; SIMD128-FAST-LABEL: shr_s_v16i8: |
| ; SIMD128-FAST: .functype shr_s_v16i8 (v128, i32) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.shr_s $push0=, $0, $1 |
| ; SIMD128-FAST-NEXT: return $pop0 |
| ; |
| ; NO-SIMD128-LABEL: shr_s_v16i8: |
| ; NO-SIMD128: .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-NEXT: # %bb.0: |
| ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $9 |
| ; NO-SIMD128-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-NEXT: i32.and $push56=, $17, $pop0 |
| ; NO-SIMD128-NEXT: local.tee $push55=, $17=, $pop56 |
| ; NO-SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop55 |
| ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push3=, $5 |
| ; NO-SIMD128-NEXT: i32.shr_s $push4=, $pop3, $17 |
| ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push5=, $3 |
| ; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $17 |
| ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $2 |
| ; NO-SIMD128-NEXT: i32.shr_s $push8=, $pop7, $17 |
| ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push9=, $1 |
| ; NO-SIMD128-NEXT: i32.shr_s $push10=, $pop9, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10 |
| ; NO-SIMD128-NEXT: i32.const $push13=, 15 |
| ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push11=, $16 |
| ; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12 |
| ; NO-SIMD128-NEXT: i32.const $push17=, 14 |
| ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push15=, $15 |
| ; NO-SIMD128-NEXT: i32.shr_s $push16=, $pop15, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16 |
| ; NO-SIMD128-NEXT: i32.const $push21=, 13 |
| ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $14 |
| ; NO-SIMD128-NEXT: i32.shr_s $push20=, $pop19, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20 |
| ; NO-SIMD128-NEXT: i32.const $push25=, 12 |
| ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push23=, $13 |
| ; NO-SIMD128-NEXT: i32.shr_s $push24=, $pop23, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24 |
| ; NO-SIMD128-NEXT: i32.const $push29=, 11 |
| ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push27=, $12 |
| ; NO-SIMD128-NEXT: i32.shr_s $push28=, $pop27, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28 |
| ; NO-SIMD128-NEXT: i32.const $push33=, 10 |
| ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11 |
| ; NO-SIMD128-NEXT: i32.shr_s $push32=, $pop31, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32 |
| ; NO-SIMD128-NEXT: i32.const $push37=, 9 |
| ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push35=, $10 |
| ; NO-SIMD128-NEXT: i32.shr_s $push36=, $pop35, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36 |
| ; NO-SIMD128-NEXT: i32.const $push41=, 7 |
| ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push39=, $8 |
| ; NO-SIMD128-NEXT: i32.shr_s $push40=, $pop39, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40 |
| ; NO-SIMD128-NEXT: i32.const $push45=, 6 |
| ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $7 |
| ; NO-SIMD128-NEXT: i32.shr_s $push44=, $pop43, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44 |
| ; NO-SIMD128-NEXT: i32.const $push49=, 5 |
| ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $6 |
| ; NO-SIMD128-NEXT: i32.shr_s $push48=, $pop47, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48 |
| ; NO-SIMD128-NEXT: i32.const $push53=, 3 |
| ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53 |
| ; NO-SIMD128-NEXT: i32.extend8_s $push51=, $4 |
| ; NO-SIMD128-NEXT: i32.shr_s $push52=, $pop51, $17 |
| ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52 |
| ; NO-SIMD128-NEXT: return |
| ; |
| ; NO-SIMD128-FAST-LABEL: shr_s_v16i8: |
| ; NO-SIMD128-FAST: .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () |
| ; NO-SIMD128-FAST-NEXT: # %bb.0: |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 |
| ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $17, $pop0 |
| ; NO-SIMD128-FAST-NEXT: local.tee $push55=, $1=, $pop56 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $pop1, $pop55 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $2 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push4=, $pop3, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $3 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 3 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $4 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $pop9, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop10 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $5 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $6 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $pop15, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop16 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $7 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop20 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 7 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $8 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop24 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $9 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push26=, $pop25, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 9 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $10 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop30 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 10 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push33=, $11 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push34=, $pop33, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop34 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 11 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push37=, $12 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push38=, $pop37, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop38 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 12 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $13 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push42=, $pop41, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop42 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 13 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $14 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push46=, $pop45, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop46 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 14 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $0, $pop47 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push49=, $15 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop48), $pop50 |
| ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 15 |
| ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51 |
| ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push53=, $16 |
| ; NO-SIMD128-FAST-NEXT: i32.shr_s $push54=, $pop53, $1 |
| ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop54 |
| ; NO-SIMD128-FAST-NEXT: return |
| %t = insertelement <16 x i8> undef, i8 %x, i32 0 |
| %s = shufflevector <16 x i8> %t, <16 x i8> undef, |
| <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, |
| i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> |
| %a = ashr <16 x i8> %v, %s |
| ret <16 x i8> %a |
| } |
| |
| define <16 x i8> @shr_s_vec_v16i8(<16 x i8> %v, <16 x i8> %x) { |
| ; SIMD128-LABEL: shr_s_vec_v16i8: |
| ; SIMD128: .functype shr_s_vec_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-NEXT: # %bb.0: |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push7=, $0, 0 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0 |
| ; SIMD128-NEXT: i32.const $push1=, 7 |
| ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 |
| ; SIMD128-NEXT: i32.shr_s $push8=, $pop7, $pop6 |
| ; SIMD128-NEXT: i8x16.splat $push9=, $pop8 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push3=, $0, 1 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 |
| ; SIMD128-NEXT: i32.const $push95=, 7 |
| ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95 |
| ; SIMD128-NEXT: i32.shr_s $push4=, $pop3, $pop2 |
| ; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push13=, $0, 2 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2 |
| ; SIMD128-NEXT: i32.const $push94=, 7 |
| ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94 |
| ; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12 |
| ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push18=, $0, 3 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3 |
| ; SIMD128-NEXT: i32.const $push93=, 7 |
| ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93 |
| ; SIMD128-NEXT: i32.shr_s $push19=, $pop18, $pop17 |
| ; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push23=, $0, 4 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4 |
| ; SIMD128-NEXT: i32.const $push92=, 7 |
| ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92 |
| ; SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22 |
| ; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push28=, $0, 5 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5 |
| ; SIMD128-NEXT: i32.const $push91=, 7 |
| ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91 |
| ; SIMD128-NEXT: i32.shr_s $push29=, $pop28, $pop27 |
| ; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push33=, $0, 6 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6 |
| ; SIMD128-NEXT: i32.const $push90=, 7 |
| ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90 |
| ; SIMD128-NEXT: i32.shr_s $push34=, $pop33, $pop32 |
| ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push38=, $0, 7 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7 |
| ; SIMD128-NEXT: i32.const $push89=, 7 |
| ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89 |
| ; SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37 |
| ; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push43=, $0, 8 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8 |
| ; SIMD128-NEXT: i32.const $push88=, 7 |
| ; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88 |
| ; SIMD128-NEXT: i32.shr_s $push44=, $pop43, $pop42 |
| ; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push48=, $0, 9 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9 |
| ; SIMD128-NEXT: i32.const $push87=, 7 |
| ; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87 |
| ; SIMD128-NEXT: i32.shr_s $push49=, $pop48, $pop47 |
| ; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push53=, $0, 10 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10 |
| ; SIMD128-NEXT: i32.const $push86=, 7 |
| ; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86 |
| ; SIMD128-NEXT: i32.shr_s $push54=, $pop53, $pop52 |
| ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push58=, $0, 11 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11 |
| ; SIMD128-NEXT: i32.const $push85=, 7 |
| ; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85 |
| ; SIMD128-NEXT: i32.shr_s $push59=, $pop58, $pop57 |
| ; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push63=, $0, 12 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12 |
| ; SIMD128-NEXT: i32.const $push84=, 7 |
| ; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84 |
| ; SIMD128-NEXT: i32.shr_s $push64=, $pop63, $pop62 |
| ; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push68=, $0, 13 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13 |
| ; SIMD128-NEXT: i32.const $push83=, 7 |
| ; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83 |
| ; SIMD128-NEXT: i32.shr_s $push69=, $pop68, $pop67 |
| ; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push73=, $0, 14 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14 |
| ; SIMD128-NEXT: i32.const $push82=, 7 |
| ; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82 |
| ; SIMD128-NEXT: i32.shr_s $push74=, $pop73, $pop72 |
| ; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74 |
| ; SIMD128-NEXT: i8x16.extract_lane_s $push78=, $0, 15 |
| ; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15 |
| ; SIMD128-NEXT: i32.const $push81=, 7 |
| ; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81 |
| ; SIMD128-NEXT: i32.shr_s $push79=, $pop78, $pop77 |
| ; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79 |
| ; SIMD128-NEXT: return $pop80 |
| ; |
| ; SIMD128-FAST-LABEL: shr_s_vec_v16i8: |
| ; SIMD128-FAST: .functype shr_s_vec_v16i8 (v128, v128) -> (v128) |
| ; SIMD128-FAST-NEXT: # %bb.0: |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push8=, $0, 0 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0 |
| ; SIMD128-FAST-NEXT: i32.const $push2=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7 |
| ; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push4=, $0, 1 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 |
| ; SIMD128-FAST-NEXT: i32.const $push95=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push5=, $pop4, $pop3 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push14=, $0, 2 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2 |
| ; SIMD128-FAST-NEXT: i32.const $push94=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push19=, $0, 3 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3 |
| ; SIMD128-FAST-NEXT: i32.const $push93=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $pop18 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push24=, $0, 4 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4 |
| ; SIMD128-FAST-NEXT: i32.const $push92=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push25=, $pop24, $pop23 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push29=, $0, 5 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5 |
| ; SIMD128-FAST-NEXT: i32.const $push91=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push34=, $0, 6 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6 |
| ; SIMD128-FAST-NEXT: i32.const $push90=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push39=, $0, 7 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7 |
| ; SIMD128-FAST-NEXT: i32.const $push89=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push44=, $0, 8 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8 |
| ; SIMD128-FAST-NEXT: i32.const $push88=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push45=, $pop44, $pop43 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push49=, $0, 9 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9 |
| ; SIMD128-FAST-NEXT: i32.const $push87=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $pop48 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push54=, $0, 10 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10 |
| ; SIMD128-FAST-NEXT: i32.const $push86=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push55=, $pop54, $pop53 |
| ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push59=, $0, 11 |
| ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11 |
| ; SIMD128-FAST-NEXT: i32.const $push85=, 7 |
| ; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85 |
| ; SIMD128-FAST-NEXT: i32.shr_s $push60=, $pop59, $pop58 |
|