1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 | FileCheck %s --check-prefix=SIMD128 3; 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 4; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s --check-prefix=NO-SIMD128 5; 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 6 7; check that a non-test run (including explicit locals pass) at least finishes 8; RUN: llc < %s -O0 -mattr=+simd128 9; RUN: llc < %s -O2 -mattr=+simd128 10 11; Test that basic SIMD128 arithmetic operations assemble as expected. 12 13target triple = "wasm32-unknown-unknown" 14 15; ============================================================================== 16; 16 x i8 17; ============================================================================== 18define <16 x i8> @add_v16i8(<16 x i8> %x, <16 x i8> %y) { 19; SIMD128-LABEL: add_v16i8: 20; SIMD128: .functype add_v16i8 (v128, v128) -> (v128) 21; SIMD128-NEXT: # %bb.0: 22; SIMD128-NEXT: i8x16.add $push0=, $0, $1 23; SIMD128-NEXT: return $pop0 24; 25; SIMD128-FAST-LABEL: add_v16i8: 26; SIMD128-FAST: .functype add_v16i8 (v128, v128) -> (v128) 27; SIMD128-FAST-NEXT: # %bb.0: 28; SIMD128-FAST-NEXT: i8x16.add $push0=, $0, $1 29; SIMD128-FAST-NEXT: return $pop0 30; 31; NO-SIMD128-LABEL: add_v16i8: 32; 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) -> () 33; NO-SIMD128-NEXT: # %bb.0: 34; NO-SIMD128-NEXT: i32.add $push0=, $16, $32 35; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 36; NO-SIMD128-NEXT: i32.add $push1=, $15, $31 37; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 38; NO-SIMD128-NEXT: i32.add $push2=, $14, $30 39; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 40; NO-SIMD128-NEXT: i32.add $push3=, $13, $29 41; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 42; NO-SIMD128-NEXT: i32.add $push4=, $12, $28 43; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 44; NO-SIMD128-NEXT: i32.add $push5=, $11, $27 45; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 46; NO-SIMD128-NEXT: i32.add $push6=, $10, $26 47; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 48; NO-SIMD128-NEXT: i32.add $push7=, $9, $25 49; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 50; NO-SIMD128-NEXT: i32.add $push8=, $8, $24 51; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 52; NO-SIMD128-NEXT: i32.add $push9=, $7, $23 53; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 54; NO-SIMD128-NEXT: i32.add $push10=, $6, $22 55; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 56; NO-SIMD128-NEXT: i32.add $push11=, $5, $21 57; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 58; NO-SIMD128-NEXT: i32.add $push12=, $4, $20 59; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 60; NO-SIMD128-NEXT: i32.add $push13=, $3, $19 61; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 62; NO-SIMD128-NEXT: i32.add $push14=, $2, $18 63; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 64; NO-SIMD128-NEXT: i32.add $push15=, $1, $17 65; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 66; NO-SIMD128-NEXT: return 67; 68; NO-SIMD128-FAST-LABEL: add_v16i8: 69; 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) -> () 70; NO-SIMD128-FAST-NEXT: # %bb.0: 71; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 72; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 73; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $18 74; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 75; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $19 76; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 77; NO-SIMD128-FAST-NEXT: i32.add $push3=, $4, $20 78; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 79; NO-SIMD128-FAST-NEXT: i32.add $push4=, $5, $21 80; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 81; NO-SIMD128-FAST-NEXT: i32.add $push5=, $6, $22 82; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 83; NO-SIMD128-FAST-NEXT: i32.add $push6=, $7, $23 84; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 85; NO-SIMD128-FAST-NEXT: i32.add $push7=, $8, $24 86; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 87; NO-SIMD128-FAST-NEXT: i32.add $push8=, $9, $25 88; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 89; NO-SIMD128-FAST-NEXT: i32.add $push9=, $10, $26 90; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 91; NO-SIMD128-FAST-NEXT: i32.add $push10=, $11, $27 92; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 93; NO-SIMD128-FAST-NEXT: i32.add $push11=, $12, $28 94; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 95; NO-SIMD128-FAST-NEXT: i32.add $push12=, $13, $29 96; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 97; NO-SIMD128-FAST-NEXT: i32.add $push13=, $14, $30 98; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 99; NO-SIMD128-FAST-NEXT: i32.add $push14=, $15, $31 100; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 101; NO-SIMD128-FAST-NEXT: i32.add $push15=, $16, $32 102; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 103; NO-SIMD128-FAST-NEXT: return 104 %a = add <16 x i8> %x, %y 105 ret <16 x i8> %a 106} 107 108define <16 x i8> @sub_v16i8(<16 x i8> %x, <16 x i8> %y) { 109; SIMD128-LABEL: sub_v16i8: 110; SIMD128: .functype sub_v16i8 (v128, v128) -> (v128) 111; SIMD128-NEXT: # %bb.0: 112; SIMD128-NEXT: i8x16.sub $push0=, $0, $1 113; SIMD128-NEXT: return $pop0 114; 115; SIMD128-FAST-LABEL: sub_v16i8: 116; SIMD128-FAST: .functype sub_v16i8 (v128, v128) -> (v128) 117; SIMD128-FAST-NEXT: # %bb.0: 118; SIMD128-FAST-NEXT: i8x16.sub $push0=, $0, $1 119; SIMD128-FAST-NEXT: return $pop0 120; 121; NO-SIMD128-LABEL: sub_v16i8: 122; 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) -> () 123; NO-SIMD128-NEXT: # %bb.0: 124; NO-SIMD128-NEXT: i32.sub $push0=, $16, $32 125; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 126; NO-SIMD128-NEXT: i32.sub $push1=, $15, $31 127; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 128; NO-SIMD128-NEXT: i32.sub $push2=, $14, $30 129; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 130; NO-SIMD128-NEXT: i32.sub $push3=, $13, $29 131; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 132; NO-SIMD128-NEXT: i32.sub $push4=, $12, $28 133; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 134; NO-SIMD128-NEXT: i32.sub $push5=, $11, $27 135; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 136; NO-SIMD128-NEXT: i32.sub $push6=, $10, $26 137; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 138; NO-SIMD128-NEXT: i32.sub $push7=, $9, $25 139; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 140; NO-SIMD128-NEXT: i32.sub $push8=, $8, $24 141; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 142; NO-SIMD128-NEXT: i32.sub $push9=, $7, $23 143; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 144; NO-SIMD128-NEXT: i32.sub $push10=, $6, $22 145; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 146; NO-SIMD128-NEXT: i32.sub $push11=, $5, $21 147; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 148; NO-SIMD128-NEXT: i32.sub $push12=, $4, $20 149; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 150; NO-SIMD128-NEXT: i32.sub $push13=, $3, $19 151; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 152; NO-SIMD128-NEXT: i32.sub $push14=, $2, $18 153; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 154; NO-SIMD128-NEXT: i32.sub $push15=, $1, $17 155; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 156; NO-SIMD128-NEXT: return 157; 158; NO-SIMD128-FAST-LABEL: sub_v16i8: 159; 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) -> () 160; NO-SIMD128-FAST-NEXT: # %bb.0: 161; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $17 162; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 163; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $18 164; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 165; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $19 166; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 167; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $4, $20 168; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 169; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $5, $21 170; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 171; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $6, $22 172; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 173; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $7, $23 174; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 175; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $8, $24 176; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 177; NO-SIMD128-FAST-NEXT: i32.sub $push8=, $9, $25 178; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 179; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $10, $26 180; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 181; NO-SIMD128-FAST-NEXT: i32.sub $push10=, $11, $27 182; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 183; NO-SIMD128-FAST-NEXT: i32.sub $push11=, $12, $28 184; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 185; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $13, $29 186; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 187; NO-SIMD128-FAST-NEXT: i32.sub $push13=, $14, $30 188; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 189; NO-SIMD128-FAST-NEXT: i32.sub $push14=, $15, $31 190; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 191; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $16, $32 192; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 193; NO-SIMD128-FAST-NEXT: return 194 %a = sub <16 x i8> %x, %y 195 ret <16 x i8> %a 196} 197 198define <16 x i8> @mul_v16i8(<16 x i8> %x, <16 x i8> %y) { 199; SIMD128-LABEL: mul_v16i8: 200; SIMD128: .functype mul_v16i8 (v128, v128) -> (v128) 201; SIMD128-NEXT: # %bb.0: 202; SIMD128-NEXT: i8x16.extract_lane_u $push4=, $0, 0 203; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $1, 0 204; SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 205; SIMD128-NEXT: i8x16.splat $push6=, $pop5 206; SIMD128-NEXT: i8x16.extract_lane_u $push1=, $0, 1 207; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 208; SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 209; SIMD128-NEXT: i8x16.replace_lane $push7=, $pop6, 1, $pop2 210; SIMD128-NEXT: i8x16.extract_lane_u $push9=, $0, 2 211; SIMD128-NEXT: i8x16.extract_lane_u $push8=, $1, 2 212; SIMD128-NEXT: i32.mul $push10=, $pop9, $pop8 213; SIMD128-NEXT: i8x16.replace_lane $push11=, $pop7, 2, $pop10 214; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 3 215; SIMD128-NEXT: i8x16.extract_lane_u $push12=, $1, 3 216; SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12 217; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop11, 3, $pop14 218; SIMD128-NEXT: i8x16.extract_lane_u $push17=, $0, 4 219; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 4 220; SIMD128-NEXT: i32.mul $push18=, $pop17, $pop16 221; SIMD128-NEXT: i8x16.replace_lane $push19=, $pop15, 4, $pop18 222; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $0, 5 223; SIMD128-NEXT: i8x16.extract_lane_u $push20=, $1, 5 224; SIMD128-NEXT: i32.mul $push22=, $pop21, $pop20 225; SIMD128-NEXT: i8x16.replace_lane $push23=, $pop19, 5, $pop22 226; SIMD128-NEXT: i8x16.extract_lane_u $push25=, $0, 6 227; SIMD128-NEXT: i8x16.extract_lane_u $push24=, $1, 6 228; SIMD128-NEXT: i32.mul $push26=, $pop25, $pop24 229; SIMD128-NEXT: i8x16.replace_lane $push27=, $pop23, 6, $pop26 230; SIMD128-NEXT: i8x16.extract_lane_u $push29=, $0, 7 231; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $1, 7 232; SIMD128-NEXT: i32.mul $push30=, $pop29, $pop28 233; SIMD128-NEXT: i8x16.replace_lane $push31=, $pop27, 7, $pop30 234; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 8 235; SIMD128-NEXT: i8x16.extract_lane_u $push32=, $1, 8 236; SIMD128-NEXT: i32.mul $push34=, $pop33, $pop32 237; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop31, 8, $pop34 238; SIMD128-NEXT: i8x16.extract_lane_u $push37=, $0, 9 239; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 9 240; SIMD128-NEXT: i32.mul $push38=, $pop37, $pop36 241; SIMD128-NEXT: i8x16.replace_lane $push39=, $pop35, 9, $pop38 242; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $0, 10 243; SIMD128-NEXT: i8x16.extract_lane_u $push40=, $1, 10 244; SIMD128-NEXT: i32.mul $push42=, $pop41, $pop40 245; SIMD128-NEXT: i8x16.replace_lane $push43=, $pop39, 10, $pop42 246; SIMD128-NEXT: i8x16.extract_lane_u $push45=, $0, 11 247; SIMD128-NEXT: i8x16.extract_lane_u $push44=, $1, 11 248; SIMD128-NEXT: i32.mul $push46=, $pop45, $pop44 249; SIMD128-NEXT: i8x16.replace_lane $push47=, $pop43, 11, $pop46 250; SIMD128-NEXT: i8x16.extract_lane_u $push49=, $0, 12 251; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $1, 12 252; SIMD128-NEXT: i32.mul $push50=, $pop49, $pop48 253; SIMD128-NEXT: i8x16.replace_lane $push51=, $pop47, 12, $pop50 254; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 13 255; SIMD128-NEXT: i8x16.extract_lane_u $push52=, $1, 13 256; SIMD128-NEXT: i32.mul $push54=, $pop53, $pop52 257; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop51, 13, $pop54 258; SIMD128-NEXT: i8x16.extract_lane_u $push57=, $0, 14 259; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 14 260; SIMD128-NEXT: i32.mul $push58=, $pop57, $pop56 261; SIMD128-NEXT: i8x16.replace_lane $push59=, $pop55, 14, $pop58 262; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $0, 15 263; SIMD128-NEXT: i8x16.extract_lane_u $push60=, $1, 15 264; SIMD128-NEXT: i32.mul $push62=, $pop61, $pop60 265; SIMD128-NEXT: i8x16.replace_lane $push63=, $pop59, 15, $pop62 266; SIMD128-NEXT: return $pop63 267; 268; SIMD128-FAST-LABEL: mul_v16i8: 269; SIMD128-FAST: .functype mul_v16i8 (v128, v128) -> (v128) 270; SIMD128-FAST-NEXT: # %bb.0: 271; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push5=, $0, 0 272; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $1, 0 273; SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 274; SIMD128-FAST-NEXT: i8x16.splat $push7=, $pop6 275; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push2=, $0, 1 276; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 277; SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 278; SIMD128-FAST-NEXT: i8x16.replace_lane $push8=, $pop7, 1, $pop3 279; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push10=, $0, 2 280; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push9=, $1, 2 281; SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 282; SIMD128-FAST-NEXT: i8x16.replace_lane $push12=, $pop8, 2, $pop11 283; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 3 284; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push13=, $1, 3 285; SIMD128-FAST-NEXT: i32.mul $push15=, $pop14, $pop13 286; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop12, 3, $pop15 287; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push18=, $0, 4 288; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 4 289; SIMD128-FAST-NEXT: i32.mul $push19=, $pop18, $pop17 290; SIMD128-FAST-NEXT: i8x16.replace_lane $push20=, $pop16, 4, $pop19 291; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $0, 5 292; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push21=, $1, 5 293; SIMD128-FAST-NEXT: i32.mul $push23=, $pop22, $pop21 294; SIMD128-FAST-NEXT: i8x16.replace_lane $push24=, $pop20, 5, $pop23 295; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push26=, $0, 6 296; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push25=, $1, 6 297; SIMD128-FAST-NEXT: i32.mul $push27=, $pop26, $pop25 298; SIMD128-FAST-NEXT: i8x16.replace_lane $push28=, $pop24, 6, $pop27 299; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push30=, $0, 7 300; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $1, 7 301; SIMD128-FAST-NEXT: i32.mul $push31=, $pop30, $pop29 302; SIMD128-FAST-NEXT: i8x16.replace_lane $push32=, $pop28, 7, $pop31 303; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 8 304; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push33=, $1, 8 305; SIMD128-FAST-NEXT: i32.mul $push35=, $pop34, $pop33 306; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop32, 8, $pop35 307; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push38=, $0, 9 308; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 9 309; SIMD128-FAST-NEXT: i32.mul $push39=, $pop38, $pop37 310; SIMD128-FAST-NEXT: i8x16.replace_lane $push40=, $pop36, 9, $pop39 311; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $0, 10 312; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push41=, $1, 10 313; SIMD128-FAST-NEXT: i32.mul $push43=, $pop42, $pop41 314; SIMD128-FAST-NEXT: i8x16.replace_lane $push44=, $pop40, 10, $pop43 315; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push46=, $0, 11 316; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push45=, $1, 11 317; SIMD128-FAST-NEXT: i32.mul $push47=, $pop46, $pop45 318; SIMD128-FAST-NEXT: i8x16.replace_lane $push48=, $pop44, 11, $pop47 319; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push50=, $0, 12 320; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $1, 12 321; SIMD128-FAST-NEXT: i32.mul $push51=, $pop50, $pop49 322; SIMD128-FAST-NEXT: i8x16.replace_lane $push52=, $pop48, 12, $pop51 323; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 13 324; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push53=, $1, 13 325; SIMD128-FAST-NEXT: i32.mul $push55=, $pop54, $pop53 326; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop52, 13, $pop55 327; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push58=, $0, 14 328; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 14 329; SIMD128-FAST-NEXT: i32.mul $push59=, $pop58, $pop57 330; SIMD128-FAST-NEXT: i8x16.replace_lane $push60=, $pop56, 14, $pop59 331; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $0, 15 332; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push61=, $1, 15 333; SIMD128-FAST-NEXT: i32.mul $push63=, $pop62, $pop61 334; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop60, 15, $pop63 335; SIMD128-FAST-NEXT: return $pop0 336; 337; NO-SIMD128-LABEL: mul_v16i8: 338; 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) -> () 339; NO-SIMD128-NEXT: # %bb.0: 340; NO-SIMD128-NEXT: i32.mul $push0=, $16, $32 341; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 342; NO-SIMD128-NEXT: i32.mul $push1=, $15, $31 343; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 344; NO-SIMD128-NEXT: i32.mul $push2=, $14, $30 345; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 346; NO-SIMD128-NEXT: i32.mul $push3=, $13, $29 347; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 348; NO-SIMD128-NEXT: i32.mul $push4=, $12, $28 349; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 350; NO-SIMD128-NEXT: i32.mul $push5=, $11, $27 351; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 352; NO-SIMD128-NEXT: i32.mul $push6=, $10, $26 353; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 354; NO-SIMD128-NEXT: i32.mul $push7=, $9, $25 355; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 356; NO-SIMD128-NEXT: i32.mul $push8=, $8, $24 357; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 358; NO-SIMD128-NEXT: i32.mul $push9=, $7, $23 359; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 360; NO-SIMD128-NEXT: i32.mul $push10=, $6, $22 361; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 362; NO-SIMD128-NEXT: i32.mul $push11=, $5, $21 363; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 364; NO-SIMD128-NEXT: i32.mul $push12=, $4, $20 365; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 366; NO-SIMD128-NEXT: i32.mul $push13=, $3, $19 367; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 368; NO-SIMD128-NEXT: i32.mul $push14=, $2, $18 369; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 370; NO-SIMD128-NEXT: i32.mul $push15=, $1, $17 371; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 372; NO-SIMD128-NEXT: return 373; 374; NO-SIMD128-FAST-LABEL: mul_v16i8: 375; 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) -> () 376; NO-SIMD128-FAST-NEXT: # %bb.0: 377; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $17 378; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 379; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $18 380; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 381; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $19 382; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 383; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $4, $20 384; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 385; NO-SIMD128-FAST-NEXT: i32.mul $push4=, $5, $21 386; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 387; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $6, $22 388; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 389; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $7, $23 390; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 391; NO-SIMD128-FAST-NEXT: i32.mul $push7=, $8, $24 392; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 393; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $9, $25 394; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 395; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $10, $26 396; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 397; NO-SIMD128-FAST-NEXT: i32.mul $push10=, $11, $27 398; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 399; NO-SIMD128-FAST-NEXT: i32.mul $push11=, $12, $28 400; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 401; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $13, $29 402; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 403; NO-SIMD128-FAST-NEXT: i32.mul $push13=, $14, $30 404; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 405; NO-SIMD128-FAST-NEXT: i32.mul $push14=, $15, $31 406; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 407; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $16, $32 408; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 409; NO-SIMD128-FAST-NEXT: return 410 %a = mul <16 x i8> %x, %y 411 ret <16 x i8> %a 412} 413 414define <16 x i8> @min_s_v16i8(<16 x i8> %x, <16 x i8> %y) { 415; SIMD128-LABEL: min_s_v16i8: 416; SIMD128: .functype min_s_v16i8 (v128, v128) -> (v128) 417; SIMD128-NEXT: # %bb.0: 418; SIMD128-NEXT: i8x16.min_s $push0=, $0, $1 419; SIMD128-NEXT: return $pop0 420; 421; SIMD128-FAST-LABEL: min_s_v16i8: 422; SIMD128-FAST: .functype min_s_v16i8 (v128, v128) -> (v128) 423; SIMD128-FAST-NEXT: # %bb.0: 424; SIMD128-FAST-NEXT: i8x16.min_s $push0=, $0, $1 425; SIMD128-FAST-NEXT: return $pop0 426; 427; NO-SIMD128-LABEL: min_s_v16i8: 428; 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) -> () 429; NO-SIMD128-NEXT: # %bb.0: 430; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 431; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32 432; NO-SIMD128-NEXT: i32.lt_s $push2=, $pop1, $pop0 433; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2 434; NO-SIMD128-NEXT: i32.store8 15($0), $pop3 435; NO-SIMD128-NEXT: i32.extend8_s $push5=, $15 436; NO-SIMD128-NEXT: i32.extend8_s $push4=, $31 437; NO-SIMD128-NEXT: i32.lt_s $push6=, $pop5, $pop4 438; NO-SIMD128-NEXT: i32.select $push7=, $15, $31, $pop6 439; NO-SIMD128-NEXT: i32.store8 14($0), $pop7 440; NO-SIMD128-NEXT: i32.extend8_s $push9=, $14 441; NO-SIMD128-NEXT: i32.extend8_s $push8=, $30 442; NO-SIMD128-NEXT: i32.lt_s $push10=, $pop9, $pop8 443; NO-SIMD128-NEXT: i32.select $push11=, $14, $30, $pop10 444; NO-SIMD128-NEXT: i32.store8 13($0), $pop11 445; NO-SIMD128-NEXT: i32.extend8_s $push13=, $13 446; NO-SIMD128-NEXT: i32.extend8_s $push12=, $29 447; NO-SIMD128-NEXT: i32.lt_s $push14=, $pop13, $pop12 448; NO-SIMD128-NEXT: i32.select $push15=, $13, $29, $pop14 449; NO-SIMD128-NEXT: i32.store8 12($0), $pop15 450; NO-SIMD128-NEXT: i32.extend8_s $push17=, $12 451; NO-SIMD128-NEXT: i32.extend8_s $push16=, $28 452; NO-SIMD128-NEXT: i32.lt_s $push18=, $pop17, $pop16 453; NO-SIMD128-NEXT: i32.select $push19=, $12, $28, $pop18 454; NO-SIMD128-NEXT: i32.store8 11($0), $pop19 455; NO-SIMD128-NEXT: i32.extend8_s $push21=, $11 456; NO-SIMD128-NEXT: i32.extend8_s $push20=, $27 457; NO-SIMD128-NEXT: i32.lt_s $push22=, $pop21, $pop20 458; NO-SIMD128-NEXT: i32.select $push23=, $11, $27, $pop22 459; NO-SIMD128-NEXT: i32.store8 10($0), $pop23 460; NO-SIMD128-NEXT: i32.extend8_s $push25=, $10 461; NO-SIMD128-NEXT: i32.extend8_s $push24=, $26 462; NO-SIMD128-NEXT: i32.lt_s $push26=, $pop25, $pop24 463; NO-SIMD128-NEXT: i32.select $push27=, $10, $26, $pop26 464; NO-SIMD128-NEXT: i32.store8 9($0), $pop27 465; NO-SIMD128-NEXT: i32.extend8_s $push29=, $9 466; NO-SIMD128-NEXT: i32.extend8_s $push28=, $25 467; NO-SIMD128-NEXT: i32.lt_s $push30=, $pop29, $pop28 468; NO-SIMD128-NEXT: i32.select $push31=, $9, $25, $pop30 469; NO-SIMD128-NEXT: i32.store8 8($0), $pop31 470; NO-SIMD128-NEXT: i32.extend8_s $push33=, $8 471; NO-SIMD128-NEXT: i32.extend8_s $push32=, $24 472; NO-SIMD128-NEXT: i32.lt_s $push34=, $pop33, $pop32 473; NO-SIMD128-NEXT: i32.select $push35=, $8, $24, $pop34 474; NO-SIMD128-NEXT: i32.store8 7($0), $pop35 475; NO-SIMD128-NEXT: i32.extend8_s $push37=, $7 476; NO-SIMD128-NEXT: i32.extend8_s $push36=, $23 477; NO-SIMD128-NEXT: i32.lt_s $push38=, $pop37, $pop36 478; NO-SIMD128-NEXT: i32.select $push39=, $7, $23, $pop38 479; NO-SIMD128-NEXT: i32.store8 6($0), $pop39 480; NO-SIMD128-NEXT: i32.extend8_s $push41=, $6 481; NO-SIMD128-NEXT: i32.extend8_s $push40=, $22 482; NO-SIMD128-NEXT: i32.lt_s $push42=, $pop41, $pop40 483; NO-SIMD128-NEXT: i32.select $push43=, $6, $22, $pop42 484; NO-SIMD128-NEXT: i32.store8 5($0), $pop43 485; NO-SIMD128-NEXT: i32.extend8_s $push45=, $5 486; NO-SIMD128-NEXT: i32.extend8_s $push44=, $21 487; NO-SIMD128-NEXT: i32.lt_s $push46=, $pop45, $pop44 488; NO-SIMD128-NEXT: i32.select $push47=, $5, $21, $pop46 489; NO-SIMD128-NEXT: i32.store8 4($0), $pop47 490; NO-SIMD128-NEXT: i32.extend8_s $push49=, $4 491; NO-SIMD128-NEXT: i32.extend8_s $push48=, $20 492; NO-SIMD128-NEXT: i32.lt_s $push50=, $pop49, $pop48 493; NO-SIMD128-NEXT: i32.select $push51=, $4, $20, $pop50 494; NO-SIMD128-NEXT: i32.store8 3($0), $pop51 495; NO-SIMD128-NEXT: i32.extend8_s $push53=, $3 496; NO-SIMD128-NEXT: i32.extend8_s $push52=, $19 497; NO-SIMD128-NEXT: i32.lt_s $push54=, $pop53, $pop52 498; NO-SIMD128-NEXT: i32.select $push55=, $3, $19, $pop54 499; NO-SIMD128-NEXT: i32.store8 2($0), $pop55 500; NO-SIMD128-NEXT: i32.extend8_s $push57=, $2 501; NO-SIMD128-NEXT: i32.extend8_s $push56=, $18 502; NO-SIMD128-NEXT: i32.lt_s $push58=, $pop57, $pop56 503; NO-SIMD128-NEXT: i32.select $push59=, $2, $18, $pop58 504; NO-SIMD128-NEXT: i32.store8 1($0), $pop59 505; NO-SIMD128-NEXT: i32.extend8_s $push61=, $1 506; NO-SIMD128-NEXT: i32.extend8_s $push60=, $17 507; NO-SIMD128-NEXT: i32.lt_s $push62=, $pop61, $pop60 508; NO-SIMD128-NEXT: i32.select $push63=, $1, $17, $pop62 509; NO-SIMD128-NEXT: i32.store8 0($0), $pop63 510; NO-SIMD128-NEXT: return 511; 512; NO-SIMD128-FAST-LABEL: min_s_v16i8: 513; 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) -> () 514; NO-SIMD128-FAST-NEXT: # %bb.0: 515; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 516; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17 517; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $pop1, $pop0 518; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2 519; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 520; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2 521; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18 522; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $pop5, $pop4 523; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6 524; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7 525; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3 526; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19 527; NO-SIMD128-FAST-NEXT: i32.lt_s $push10=, $pop9, $pop8 528; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10 529; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11 530; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4 531; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20 532; NO-SIMD128-FAST-NEXT: i32.lt_s $push14=, $pop13, $pop12 533; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14 534; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop15 535; NO-SIMD128-FAST-NEXT: i32.extend8_s $push17=, $5 536; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $21 537; NO-SIMD128-FAST-NEXT: i32.lt_s $push18=, $pop17, $pop16 538; NO-SIMD128-FAST-NEXT: i32.select $push19=, $5, $21, $pop18 539; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop19 540; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $6 541; NO-SIMD128-FAST-NEXT: i32.extend8_s $push20=, $22 542; NO-SIMD128-FAST-NEXT: i32.lt_s $push22=, $pop21, $pop20 543; NO-SIMD128-FAST-NEXT: i32.select $push23=, $6, $22, $pop22 544; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop23 545; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $7 546; NO-SIMD128-FAST-NEXT: i32.extend8_s $push24=, $23 547; NO-SIMD128-FAST-NEXT: i32.lt_s $push26=, $pop25, $pop24 548; NO-SIMD128-FAST-NEXT: i32.select $push27=, $7, $23, $pop26 549; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop27 550; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $8 551; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $24 552; NO-SIMD128-FAST-NEXT: i32.lt_s $push30=, $pop29, $pop28 553; NO-SIMD128-FAST-NEXT: i32.select $push31=, $8, $24, $pop30 554; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop31 555; NO-SIMD128-FAST-NEXT: i32.extend8_s $push33=, $9 556; NO-SIMD128-FAST-NEXT: i32.extend8_s $push32=, $25 557; NO-SIMD128-FAST-NEXT: i32.lt_s $push34=, $pop33, $pop32 558; NO-SIMD128-FAST-NEXT: i32.select $push35=, $9, $25, $pop34 559; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop35 560; NO-SIMD128-FAST-NEXT: i32.extend8_s $push37=, $10 561; NO-SIMD128-FAST-NEXT: i32.extend8_s $push36=, $26 562; NO-SIMD128-FAST-NEXT: i32.lt_s $push38=, $pop37, $pop36 563; NO-SIMD128-FAST-NEXT: i32.select $push39=, $10, $26, $pop38 564; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop39 565; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $11 566; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $27 567; NO-SIMD128-FAST-NEXT: i32.lt_s $push42=, $pop41, $pop40 568; NO-SIMD128-FAST-NEXT: i32.select $push43=, $11, $27, $pop42 569; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop43 570; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $12 571; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $28 572; NO-SIMD128-FAST-NEXT: i32.lt_s $push46=, $pop45, $pop44 573; NO-SIMD128-FAST-NEXT: i32.select $push47=, $12, $28, $pop46 574; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop47 575; NO-SIMD128-FAST-NEXT: i32.extend8_s $push49=, $13 576; NO-SIMD128-FAST-NEXT: i32.extend8_s $push48=, $29 577; NO-SIMD128-FAST-NEXT: i32.lt_s $push50=, $pop49, $pop48 578; NO-SIMD128-FAST-NEXT: i32.select $push51=, $13, $29, $pop50 579; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop51 580; NO-SIMD128-FAST-NEXT: i32.extend8_s $push53=, $14 581; NO-SIMD128-FAST-NEXT: i32.extend8_s $push52=, $30 582; NO-SIMD128-FAST-NEXT: i32.lt_s $push54=, $pop53, $pop52 583; NO-SIMD128-FAST-NEXT: i32.select $push55=, $14, $30, $pop54 584; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop55 585; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $15 586; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $31 587; NO-SIMD128-FAST-NEXT: i32.lt_s $push58=, $pop57, $pop56 588; NO-SIMD128-FAST-NEXT: i32.select $push59=, $15, $31, $pop58 589; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop59 590; NO-SIMD128-FAST-NEXT: i32.extend8_s $push61=, $16 591; NO-SIMD128-FAST-NEXT: i32.extend8_s $push60=, $32 592; NO-SIMD128-FAST-NEXT: i32.lt_s $push62=, $pop61, $pop60 593; NO-SIMD128-FAST-NEXT: i32.select $push63=, $16, $32, $pop62 594; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop63 595; NO-SIMD128-FAST-NEXT: return 596 %c = icmp slt <16 x i8> %x, %y 597 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y 598 ret <16 x i8> %a 599} 600 601define <16 x i8> @min_u_v16i8(<16 x i8> %x, <16 x i8> %y) { 602; SIMD128-LABEL: min_u_v16i8: 603; SIMD128: .functype min_u_v16i8 (v128, v128) -> (v128) 604; SIMD128-NEXT: # %bb.0: 605; SIMD128-NEXT: i8x16.min_u $push0=, $0, $1 606; SIMD128-NEXT: return $pop0 607; 608; SIMD128-FAST-LABEL: min_u_v16i8: 609; SIMD128-FAST: .functype min_u_v16i8 (v128, v128) -> (v128) 610; SIMD128-FAST-NEXT: # %bb.0: 611; SIMD128-FAST-NEXT: i8x16.min_u $push0=, $0, $1 612; SIMD128-FAST-NEXT: return $pop0 613; 614; NO-SIMD128-LABEL: min_u_v16i8: 615; 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) -> () 616; NO-SIMD128-NEXT: # %bb.0: 617; NO-SIMD128-NEXT: i32.const $push0=, 255 618; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 619; NO-SIMD128-NEXT: i32.const $push95=, 255 620; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop95 621; NO-SIMD128-NEXT: i32.lt_u $push3=, $pop2, $pop1 622; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3 623; NO-SIMD128-NEXT: i32.store8 15($0), $pop4 624; NO-SIMD128-NEXT: i32.const $push94=, 255 625; NO-SIMD128-NEXT: i32.and $push6=, $15, $pop94 626; NO-SIMD128-NEXT: i32.const $push93=, 255 627; NO-SIMD128-NEXT: i32.and $push5=, $31, $pop93 628; NO-SIMD128-NEXT: i32.lt_u $push7=, $pop6, $pop5 629; NO-SIMD128-NEXT: i32.select $push8=, $15, $31, $pop7 630; NO-SIMD128-NEXT: i32.store8 14($0), $pop8 631; NO-SIMD128-NEXT: i32.const $push92=, 255 632; NO-SIMD128-NEXT: i32.and $push10=, $14, $pop92 633; NO-SIMD128-NEXT: i32.const $push91=, 255 634; NO-SIMD128-NEXT: i32.and $push9=, $30, $pop91 635; NO-SIMD128-NEXT: i32.lt_u $push11=, $pop10, $pop9 636; NO-SIMD128-NEXT: i32.select $push12=, $14, $30, $pop11 637; NO-SIMD128-NEXT: i32.store8 13($0), $pop12 638; NO-SIMD128-NEXT: i32.const $push90=, 255 639; NO-SIMD128-NEXT: i32.and $push14=, $13, $pop90 640; NO-SIMD128-NEXT: i32.const $push89=, 255 641; NO-SIMD128-NEXT: i32.and $push13=, $29, $pop89 642; NO-SIMD128-NEXT: i32.lt_u $push15=, $pop14, $pop13 643; NO-SIMD128-NEXT: i32.select $push16=, $13, $29, $pop15 644; NO-SIMD128-NEXT: i32.store8 12($0), $pop16 645; NO-SIMD128-NEXT: i32.const $push88=, 255 646; NO-SIMD128-NEXT: i32.and $push18=, $12, $pop88 647; NO-SIMD128-NEXT: i32.const $push87=, 255 648; NO-SIMD128-NEXT: i32.and $push17=, $28, $pop87 649; NO-SIMD128-NEXT: i32.lt_u $push19=, $pop18, $pop17 650; NO-SIMD128-NEXT: i32.select $push20=, $12, $28, $pop19 651; NO-SIMD128-NEXT: i32.store8 11($0), $pop20 652; NO-SIMD128-NEXT: i32.const $push86=, 255 653; NO-SIMD128-NEXT: i32.and $push22=, $11, $pop86 654; NO-SIMD128-NEXT: i32.const $push85=, 255 655; NO-SIMD128-NEXT: i32.and $push21=, $27, $pop85 656; NO-SIMD128-NEXT: i32.lt_u $push23=, $pop22, $pop21 657; NO-SIMD128-NEXT: i32.select $push24=, $11, $27, $pop23 658; NO-SIMD128-NEXT: i32.store8 10($0), $pop24 659; NO-SIMD128-NEXT: i32.const $push84=, 255 660; NO-SIMD128-NEXT: i32.and $push26=, $10, $pop84 661; NO-SIMD128-NEXT: i32.const $push83=, 255 662; NO-SIMD128-NEXT: i32.and $push25=, $26, $pop83 663; NO-SIMD128-NEXT: i32.lt_u $push27=, $pop26, $pop25 664; NO-SIMD128-NEXT: i32.select $push28=, $10, $26, $pop27 665; NO-SIMD128-NEXT: i32.store8 9($0), $pop28 666; NO-SIMD128-NEXT: i32.const $push82=, 255 667; NO-SIMD128-NEXT: i32.and $push30=, $9, $pop82 668; NO-SIMD128-NEXT: i32.const $push81=, 255 669; NO-SIMD128-NEXT: i32.and $push29=, $25, $pop81 670; NO-SIMD128-NEXT: i32.lt_u $push31=, $pop30, $pop29 671; NO-SIMD128-NEXT: i32.select $push32=, $9, $25, $pop31 672; NO-SIMD128-NEXT: i32.store8 8($0), $pop32 673; NO-SIMD128-NEXT: i32.const $push80=, 255 674; NO-SIMD128-NEXT: i32.and $push34=, $8, $pop80 675; NO-SIMD128-NEXT: i32.const $push79=, 255 676; NO-SIMD128-NEXT: i32.and $push33=, $24, $pop79 677; NO-SIMD128-NEXT: i32.lt_u $push35=, $pop34, $pop33 678; NO-SIMD128-NEXT: i32.select $push36=, $8, $24, $pop35 679; NO-SIMD128-NEXT: i32.store8 7($0), $pop36 680; NO-SIMD128-NEXT: i32.const $push78=, 255 681; NO-SIMD128-NEXT: i32.and $push38=, $7, $pop78 682; NO-SIMD128-NEXT: i32.const $push77=, 255 683; NO-SIMD128-NEXT: i32.and $push37=, $23, $pop77 684; NO-SIMD128-NEXT: i32.lt_u $push39=, $pop38, $pop37 685; NO-SIMD128-NEXT: i32.select $push40=, $7, $23, $pop39 686; NO-SIMD128-NEXT: i32.store8 6($0), $pop40 687; NO-SIMD128-NEXT: i32.const $push76=, 255 688; NO-SIMD128-NEXT: i32.and $push42=, $6, $pop76 689; NO-SIMD128-NEXT: i32.const $push75=, 255 690; NO-SIMD128-NEXT: i32.and $push41=, $22, $pop75 691; NO-SIMD128-NEXT: i32.lt_u $push43=, $pop42, $pop41 692; NO-SIMD128-NEXT: i32.select $push44=, $6, $22, $pop43 693; NO-SIMD128-NEXT: i32.store8 5($0), $pop44 694; NO-SIMD128-NEXT: i32.const $push74=, 255 695; NO-SIMD128-NEXT: i32.and $push46=, $5, $pop74 696; NO-SIMD128-NEXT: i32.const $push73=, 255 697; NO-SIMD128-NEXT: i32.and $push45=, $21, $pop73 698; NO-SIMD128-NEXT: i32.lt_u $push47=, $pop46, $pop45 699; NO-SIMD128-NEXT: i32.select $push48=, $5, $21, $pop47 700; NO-SIMD128-NEXT: i32.store8 4($0), $pop48 701; NO-SIMD128-NEXT: i32.const $push72=, 255 702; NO-SIMD128-NEXT: i32.and $push50=, $4, $pop72 703; NO-SIMD128-NEXT: i32.const $push71=, 255 704; NO-SIMD128-NEXT: i32.and $push49=, $20, $pop71 705; NO-SIMD128-NEXT: i32.lt_u $push51=, $pop50, $pop49 706; NO-SIMD128-NEXT: i32.select $push52=, $4, $20, $pop51 707; NO-SIMD128-NEXT: i32.store8 3($0), $pop52 708; NO-SIMD128-NEXT: i32.const $push70=, 255 709; NO-SIMD128-NEXT: i32.and $push54=, $3, $pop70 710; NO-SIMD128-NEXT: i32.const $push69=, 255 711; NO-SIMD128-NEXT: i32.and $push53=, $19, $pop69 712; NO-SIMD128-NEXT: i32.lt_u $push55=, $pop54, $pop53 713; NO-SIMD128-NEXT: i32.select $push56=, $3, $19, $pop55 714; NO-SIMD128-NEXT: i32.store8 2($0), $pop56 715; NO-SIMD128-NEXT: i32.const $push68=, 255 716; NO-SIMD128-NEXT: i32.and $push58=, $2, $pop68 717; NO-SIMD128-NEXT: i32.const $push67=, 255 718; NO-SIMD128-NEXT: i32.and $push57=, $18, $pop67 719; NO-SIMD128-NEXT: i32.lt_u $push59=, $pop58, $pop57 720; NO-SIMD128-NEXT: i32.select $push60=, $2, $18, $pop59 721; NO-SIMD128-NEXT: i32.store8 1($0), $pop60 722; NO-SIMD128-NEXT: i32.const $push66=, 255 723; NO-SIMD128-NEXT: i32.and $push62=, $1, $pop66 724; NO-SIMD128-NEXT: i32.const $push65=, 255 725; NO-SIMD128-NEXT: i32.and $push61=, $17, $pop65 726; NO-SIMD128-NEXT: i32.lt_u $push63=, $pop62, $pop61 727; NO-SIMD128-NEXT: i32.select $push64=, $1, $17, $pop63 728; NO-SIMD128-NEXT: i32.store8 0($0), $pop64 729; NO-SIMD128-NEXT: return 730; 731; NO-SIMD128-FAST-LABEL: min_u_v16i8: 732; 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) -> () 733; NO-SIMD128-FAST-NEXT: # %bb.0: 734; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 735; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 736; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255 737; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop95 738; NO-SIMD128-FAST-NEXT: i32.lt_u $push3=, $pop2, $pop1 739; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3 740; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 741; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255 742; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop94 743; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255 744; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop93 745; NO-SIMD128-FAST-NEXT: i32.lt_u $push7=, $pop6, $pop5 746; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7 747; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 748; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255 749; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop92 750; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255 751; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop91 752; NO-SIMD128-FAST-NEXT: i32.lt_u $push11=, $pop10, $pop9 753; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11 754; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 755; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255 756; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop90 757; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255 758; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop89 759; NO-SIMD128-FAST-NEXT: i32.lt_u $push15=, $pop14, $pop13 760; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15 761; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop16 762; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255 763; NO-SIMD128-FAST-NEXT: i32.and $push18=, $5, $pop88 764; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255 765; NO-SIMD128-FAST-NEXT: i32.and $push17=, $21, $pop87 766; NO-SIMD128-FAST-NEXT: i32.lt_u $push19=, $pop18, $pop17 767; NO-SIMD128-FAST-NEXT: i32.select $push20=, $5, $21, $pop19 768; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop20 769; NO-SIMD128-FAST-NEXT: i32.const $push86=, 255 770; NO-SIMD128-FAST-NEXT: i32.and $push22=, $6, $pop86 771; NO-SIMD128-FAST-NEXT: i32.const $push85=, 255 772; NO-SIMD128-FAST-NEXT: i32.and $push21=, $22, $pop85 773; NO-SIMD128-FAST-NEXT: i32.lt_u $push23=, $pop22, $pop21 774; NO-SIMD128-FAST-NEXT: i32.select $push24=, $6, $22, $pop23 775; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop24 776; NO-SIMD128-FAST-NEXT: i32.const $push84=, 255 777; NO-SIMD128-FAST-NEXT: i32.and $push26=, $7, $pop84 778; NO-SIMD128-FAST-NEXT: i32.const $push83=, 255 779; NO-SIMD128-FAST-NEXT: i32.and $push25=, $23, $pop83 780; NO-SIMD128-FAST-NEXT: i32.lt_u $push27=, $pop26, $pop25 781; NO-SIMD128-FAST-NEXT: i32.select $push28=, $7, $23, $pop27 782; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop28 783; NO-SIMD128-FAST-NEXT: i32.const $push82=, 255 784; NO-SIMD128-FAST-NEXT: i32.and $push30=, $8, $pop82 785; NO-SIMD128-FAST-NEXT: i32.const $push81=, 255 786; NO-SIMD128-FAST-NEXT: i32.and $push29=, $24, $pop81 787; NO-SIMD128-FAST-NEXT: i32.lt_u $push31=, $pop30, $pop29 788; NO-SIMD128-FAST-NEXT: i32.select $push32=, $8, $24, $pop31 789; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop32 790; NO-SIMD128-FAST-NEXT: i32.const $push80=, 255 791; NO-SIMD128-FAST-NEXT: i32.and $push34=, $9, $pop80 792; NO-SIMD128-FAST-NEXT: i32.const $push79=, 255 793; NO-SIMD128-FAST-NEXT: i32.and $push33=, $25, $pop79 794; NO-SIMD128-FAST-NEXT: i32.lt_u $push35=, $pop34, $pop33 795; NO-SIMD128-FAST-NEXT: i32.select $push36=, $9, $25, $pop35 796; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop36 797; NO-SIMD128-FAST-NEXT: i32.const $push78=, 255 798; NO-SIMD128-FAST-NEXT: i32.and $push38=, $10, $pop78 799; NO-SIMD128-FAST-NEXT: i32.const $push77=, 255 800; NO-SIMD128-FAST-NEXT: i32.and $push37=, $26, $pop77 801; NO-SIMD128-FAST-NEXT: i32.lt_u $push39=, $pop38, $pop37 802; NO-SIMD128-FAST-NEXT: i32.select $push40=, $10, $26, $pop39 803; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop40 804; NO-SIMD128-FAST-NEXT: i32.const $push76=, 255 805; NO-SIMD128-FAST-NEXT: i32.and $push42=, $11, $pop76 806; NO-SIMD128-FAST-NEXT: i32.const $push75=, 255 807; NO-SIMD128-FAST-NEXT: i32.and $push41=, $27, $pop75 808; NO-SIMD128-FAST-NEXT: i32.lt_u $push43=, $pop42, $pop41 809; NO-SIMD128-FAST-NEXT: i32.select $push44=, $11, $27, $pop43 810; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop44 811; NO-SIMD128-FAST-NEXT: i32.const $push74=, 255 812; NO-SIMD128-FAST-NEXT: i32.and $push46=, $12, $pop74 813; NO-SIMD128-FAST-NEXT: i32.const $push73=, 255 814; NO-SIMD128-FAST-NEXT: i32.and $push45=, $28, $pop73 815; NO-SIMD128-FAST-NEXT: i32.lt_u $push47=, $pop46, $pop45 816; NO-SIMD128-FAST-NEXT: i32.select $push48=, $12, $28, $pop47 817; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop48 818; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255 819; NO-SIMD128-FAST-NEXT: i32.and $push50=, $13, $pop72 820; NO-SIMD128-FAST-NEXT: i32.const $push71=, 255 821; NO-SIMD128-FAST-NEXT: i32.and $push49=, $29, $pop71 822; NO-SIMD128-FAST-NEXT: i32.lt_u $push51=, $pop50, $pop49 823; NO-SIMD128-FAST-NEXT: i32.select $push52=, $13, $29, $pop51 824; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop52 825; NO-SIMD128-FAST-NEXT: i32.const $push70=, 255 826; NO-SIMD128-FAST-NEXT: i32.and $push54=, $14, $pop70 827; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255 828; NO-SIMD128-FAST-NEXT: i32.and $push53=, $30, $pop69 829; NO-SIMD128-FAST-NEXT: i32.lt_u $push55=, $pop54, $pop53 830; NO-SIMD128-FAST-NEXT: i32.select $push56=, $14, $30, $pop55 831; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop56 832; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255 833; NO-SIMD128-FAST-NEXT: i32.and $push58=, $15, $pop68 834; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255 835; NO-SIMD128-FAST-NEXT: i32.and $push57=, $31, $pop67 836; NO-SIMD128-FAST-NEXT: i32.lt_u $push59=, $pop58, $pop57 837; NO-SIMD128-FAST-NEXT: i32.select $push60=, $15, $31, $pop59 838; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop60 839; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255 840; NO-SIMD128-FAST-NEXT: i32.and $push62=, $16, $pop66 841; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255 842; NO-SIMD128-FAST-NEXT: i32.and $push61=, $32, $pop65 843; NO-SIMD128-FAST-NEXT: i32.lt_u $push63=, $pop62, $pop61 844; NO-SIMD128-FAST-NEXT: i32.select $push64=, $16, $32, $pop63 845; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop64 846; NO-SIMD128-FAST-NEXT: return 847 %c = icmp ult <16 x i8> %x, %y 848 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y 849 ret <16 x i8> %a 850} 851 852define <16 x i8> @max_s_v16i8(<16 x i8> %x, <16 x i8> %y) { 853; SIMD128-LABEL: max_s_v16i8: 854; SIMD128: .functype max_s_v16i8 (v128, v128) -> (v128) 855; SIMD128-NEXT: # %bb.0: 856; SIMD128-NEXT: i8x16.max_s $push0=, $0, $1 857; SIMD128-NEXT: return $pop0 858; 859; SIMD128-FAST-LABEL: max_s_v16i8: 860; SIMD128-FAST: .functype max_s_v16i8 (v128, v128) -> (v128) 861; SIMD128-FAST-NEXT: # %bb.0: 862; SIMD128-FAST-NEXT: i8x16.max_s $push0=, $0, $1 863; SIMD128-FAST-NEXT: return $pop0 864; 865; NO-SIMD128-LABEL: max_s_v16i8: 866; 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) -> () 867; NO-SIMD128-NEXT: # %bb.0: 868; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 869; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32 870; NO-SIMD128-NEXT: i32.gt_s $push2=, $pop1, $pop0 871; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2 872; NO-SIMD128-NEXT: i32.store8 15($0), $pop3 873; NO-SIMD128-NEXT: i32.extend8_s $push5=, $15 874; NO-SIMD128-NEXT: i32.extend8_s $push4=, $31 875; NO-SIMD128-NEXT: i32.gt_s $push6=, $pop5, $pop4 876; NO-SIMD128-NEXT: i32.select $push7=, $15, $31, $pop6 877; NO-SIMD128-NEXT: i32.store8 14($0), $pop7 878; NO-SIMD128-NEXT: i32.extend8_s $push9=, $14 879; NO-SIMD128-NEXT: i32.extend8_s $push8=, $30 880; NO-SIMD128-NEXT: i32.gt_s $push10=, $pop9, $pop8 881; NO-SIMD128-NEXT: i32.select $push11=, $14, $30, $pop10 882; NO-SIMD128-NEXT: i32.store8 13($0), $pop11 883; NO-SIMD128-NEXT: i32.extend8_s $push13=, $13 884; NO-SIMD128-NEXT: i32.extend8_s $push12=, $29 885; NO-SIMD128-NEXT: i32.gt_s $push14=, $pop13, $pop12 886; NO-SIMD128-NEXT: i32.select $push15=, $13, $29, $pop14 887; NO-SIMD128-NEXT: i32.store8 12($0), $pop15 888; NO-SIMD128-NEXT: i32.extend8_s $push17=, $12 889; NO-SIMD128-NEXT: i32.extend8_s $push16=, $28 890; NO-SIMD128-NEXT: i32.gt_s $push18=, $pop17, $pop16 891; NO-SIMD128-NEXT: i32.select $push19=, $12, $28, $pop18 892; NO-SIMD128-NEXT: i32.store8 11($0), $pop19 893; NO-SIMD128-NEXT: i32.extend8_s $push21=, $11 894; NO-SIMD128-NEXT: i32.extend8_s $push20=, $27 895; NO-SIMD128-NEXT: i32.gt_s $push22=, $pop21, $pop20 896; NO-SIMD128-NEXT: i32.select $push23=, $11, $27, $pop22 897; NO-SIMD128-NEXT: i32.store8 10($0), $pop23 898; NO-SIMD128-NEXT: i32.extend8_s $push25=, $10 899; NO-SIMD128-NEXT: i32.extend8_s $push24=, $26 900; NO-SIMD128-NEXT: i32.gt_s $push26=, $pop25, $pop24 901; NO-SIMD128-NEXT: i32.select $push27=, $10, $26, $pop26 902; NO-SIMD128-NEXT: i32.store8 9($0), $pop27 903; NO-SIMD128-NEXT: i32.extend8_s $push29=, $9 904; NO-SIMD128-NEXT: i32.extend8_s $push28=, $25 905; NO-SIMD128-NEXT: i32.gt_s $push30=, $pop29, $pop28 906; NO-SIMD128-NEXT: i32.select $push31=, $9, $25, $pop30 907; NO-SIMD128-NEXT: i32.store8 8($0), $pop31 908; NO-SIMD128-NEXT: i32.extend8_s $push33=, $8 909; NO-SIMD128-NEXT: i32.extend8_s $push32=, $24 910; NO-SIMD128-NEXT: i32.gt_s $push34=, $pop33, $pop32 911; NO-SIMD128-NEXT: i32.select $push35=, $8, $24, $pop34 912; NO-SIMD128-NEXT: i32.store8 7($0), $pop35 913; NO-SIMD128-NEXT: i32.extend8_s $push37=, $7 914; NO-SIMD128-NEXT: i32.extend8_s $push36=, $23 915; NO-SIMD128-NEXT: i32.gt_s $push38=, $pop37, $pop36 916; NO-SIMD128-NEXT: i32.select $push39=, $7, $23, $pop38 917; NO-SIMD128-NEXT: i32.store8 6($0), $pop39 918; NO-SIMD128-NEXT: i32.extend8_s $push41=, $6 919; NO-SIMD128-NEXT: i32.extend8_s $push40=, $22 920; NO-SIMD128-NEXT: i32.gt_s $push42=, $pop41, $pop40 921; NO-SIMD128-NEXT: i32.select $push43=, $6, $22, $pop42 922; NO-SIMD128-NEXT: i32.store8 5($0), $pop43 923; NO-SIMD128-NEXT: i32.extend8_s $push45=, $5 924; NO-SIMD128-NEXT: i32.extend8_s $push44=, $21 925; NO-SIMD128-NEXT: i32.gt_s $push46=, $pop45, $pop44 926; NO-SIMD128-NEXT: i32.select $push47=, $5, $21, $pop46 927; NO-SIMD128-NEXT: i32.store8 4($0), $pop47 928; NO-SIMD128-NEXT: i32.extend8_s $push49=, $4 929; NO-SIMD128-NEXT: i32.extend8_s $push48=, $20 930; NO-SIMD128-NEXT: i32.gt_s $push50=, $pop49, $pop48 931; NO-SIMD128-NEXT: i32.select $push51=, $4, $20, $pop50 932; NO-SIMD128-NEXT: i32.store8 3($0), $pop51 933; NO-SIMD128-NEXT: i32.extend8_s $push53=, $3 934; NO-SIMD128-NEXT: i32.extend8_s $push52=, $19 935; NO-SIMD128-NEXT: i32.gt_s $push54=, $pop53, $pop52 936; NO-SIMD128-NEXT: i32.select $push55=, $3, $19, $pop54 937; NO-SIMD128-NEXT: i32.store8 2($0), $pop55 938; NO-SIMD128-NEXT: i32.extend8_s $push57=, $2 939; NO-SIMD128-NEXT: i32.extend8_s $push56=, $18 940; NO-SIMD128-NEXT: i32.gt_s $push58=, $pop57, $pop56 941; NO-SIMD128-NEXT: i32.select $push59=, $2, $18, $pop58 942; NO-SIMD128-NEXT: i32.store8 1($0), $pop59 943; NO-SIMD128-NEXT: i32.extend8_s $push61=, $1 944; NO-SIMD128-NEXT: i32.extend8_s $push60=, $17 945; NO-SIMD128-NEXT: i32.gt_s $push62=, $pop61, $pop60 946; NO-SIMD128-NEXT: i32.select $push63=, $1, $17, $pop62 947; NO-SIMD128-NEXT: i32.store8 0($0), $pop63 948; NO-SIMD128-NEXT: return 949; 950; NO-SIMD128-FAST-LABEL: max_s_v16i8: 951; 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) -> () 952; NO-SIMD128-FAST-NEXT: # %bb.0: 953; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 954; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17 955; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $pop1, $pop0 956; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2 957; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 958; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2 959; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18 960; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $pop5, $pop4 961; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6 962; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7 963; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3 964; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19 965; NO-SIMD128-FAST-NEXT: i32.gt_s $push10=, $pop9, $pop8 966; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10 967; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11 968; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4 969; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20 970; NO-SIMD128-FAST-NEXT: i32.gt_s $push14=, $pop13, $pop12 971; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14 972; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop15 973; NO-SIMD128-FAST-NEXT: i32.extend8_s $push17=, $5 974; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $21 975; NO-SIMD128-FAST-NEXT: i32.gt_s $push18=, $pop17, $pop16 976; NO-SIMD128-FAST-NEXT: i32.select $push19=, $5, $21, $pop18 977; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop19 978; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $6 979; NO-SIMD128-FAST-NEXT: i32.extend8_s $push20=, $22 980; NO-SIMD128-FAST-NEXT: i32.gt_s $push22=, $pop21, $pop20 981; NO-SIMD128-FAST-NEXT: i32.select $push23=, $6, $22, $pop22 982; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop23 983; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $7 984; NO-SIMD128-FAST-NEXT: i32.extend8_s $push24=, $23 985; NO-SIMD128-FAST-NEXT: i32.gt_s $push26=, $pop25, $pop24 986; NO-SIMD128-FAST-NEXT: i32.select $push27=, $7, $23, $pop26 987; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop27 988; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $8 989; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $24 990; NO-SIMD128-FAST-NEXT: i32.gt_s $push30=, $pop29, $pop28 991; NO-SIMD128-FAST-NEXT: i32.select $push31=, $8, $24, $pop30 992; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop31 993; NO-SIMD128-FAST-NEXT: i32.extend8_s $push33=, $9 994; NO-SIMD128-FAST-NEXT: i32.extend8_s $push32=, $25 995; NO-SIMD128-FAST-NEXT: i32.gt_s $push34=, $pop33, $pop32 996; NO-SIMD128-FAST-NEXT: i32.select $push35=, $9, $25, $pop34 997; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop35 998; NO-SIMD128-FAST-NEXT: i32.extend8_s $push37=, $10 999; NO-SIMD128-FAST-NEXT: i32.extend8_s $push36=, $26 1000; NO-SIMD128-FAST-NEXT: i32.gt_s $push38=, $pop37, $pop36 1001; NO-SIMD128-FAST-NEXT: i32.select $push39=, $10, $26, $pop38 1002; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop39 1003; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $11 1004; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $27 1005; NO-SIMD128-FAST-NEXT: i32.gt_s $push42=, $pop41, $pop40 1006; NO-SIMD128-FAST-NEXT: i32.select $push43=, $11, $27, $pop42 1007; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop43 1008; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $12 1009; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $28 1010; NO-SIMD128-FAST-NEXT: i32.gt_s $push46=, $pop45, $pop44 1011; NO-SIMD128-FAST-NEXT: i32.select $push47=, $12, $28, $pop46 1012; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop47 1013; NO-SIMD128-FAST-NEXT: i32.extend8_s $push49=, $13 1014; NO-SIMD128-FAST-NEXT: i32.extend8_s $push48=, $29 1015; NO-SIMD128-FAST-NEXT: i32.gt_s $push50=, $pop49, $pop48 1016; NO-SIMD128-FAST-NEXT: i32.select $push51=, $13, $29, $pop50 1017; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop51 1018; NO-SIMD128-FAST-NEXT: i32.extend8_s $push53=, $14 1019; NO-SIMD128-FAST-NEXT: i32.extend8_s $push52=, $30 1020; NO-SIMD128-FAST-NEXT: i32.gt_s $push54=, $pop53, $pop52 1021; NO-SIMD128-FAST-NEXT: i32.select $push55=, $14, $30, $pop54 1022; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop55 1023; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $15 1024; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $31 1025; NO-SIMD128-FAST-NEXT: i32.gt_s $push58=, $pop57, $pop56 1026; NO-SIMD128-FAST-NEXT: i32.select $push59=, $15, $31, $pop58 1027; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop59 1028; NO-SIMD128-FAST-NEXT: i32.extend8_s $push61=, $16 1029; NO-SIMD128-FAST-NEXT: i32.extend8_s $push60=, $32 1030; NO-SIMD128-FAST-NEXT: i32.gt_s $push62=, $pop61, $pop60 1031; NO-SIMD128-FAST-NEXT: i32.select $push63=, $16, $32, $pop62 1032; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop63 1033; NO-SIMD128-FAST-NEXT: return 1034 %c = icmp sgt <16 x i8> %x, %y 1035 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y 1036 ret <16 x i8> %a 1037} 1038 1039define <16 x i8> @max_u_v16i8(<16 x i8> %x, <16 x i8> %y) { 1040; SIMD128-LABEL: max_u_v16i8: 1041; SIMD128: .functype max_u_v16i8 (v128, v128) -> (v128) 1042; SIMD128-NEXT: # %bb.0: 1043; SIMD128-NEXT: i8x16.max_u $push0=, $0, $1 1044; SIMD128-NEXT: return $pop0 1045; 1046; SIMD128-FAST-LABEL: max_u_v16i8: 1047; SIMD128-FAST: .functype max_u_v16i8 (v128, v128) -> (v128) 1048; SIMD128-FAST-NEXT: # %bb.0: 1049; SIMD128-FAST-NEXT: i8x16.max_u $push0=, $0, $1 1050; SIMD128-FAST-NEXT: return $pop0 1051; 1052; NO-SIMD128-LABEL: max_u_v16i8: 1053; 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) -> () 1054; NO-SIMD128-NEXT: # %bb.0: 1055; NO-SIMD128-NEXT: i32.const $push0=, 255 1056; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 1057; NO-SIMD128-NEXT: i32.const $push95=, 255 1058; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop95 1059; NO-SIMD128-NEXT: i32.gt_u $push3=, $pop2, $pop1 1060; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3 1061; NO-SIMD128-NEXT: i32.store8 15($0), $pop4 1062; NO-SIMD128-NEXT: i32.const $push94=, 255 1063; NO-SIMD128-NEXT: i32.and $push6=, $15, $pop94 1064; NO-SIMD128-NEXT: i32.const $push93=, 255 1065; NO-SIMD128-NEXT: i32.and $push5=, $31, $pop93 1066; NO-SIMD128-NEXT: i32.gt_u $push7=, $pop6, $pop5 1067; NO-SIMD128-NEXT: i32.select $push8=, $15, $31, $pop7 1068; NO-SIMD128-NEXT: i32.store8 14($0), $pop8 1069; NO-SIMD128-NEXT: i32.const $push92=, 255 1070; NO-SIMD128-NEXT: i32.and $push10=, $14, $pop92 1071; NO-SIMD128-NEXT: i32.const $push91=, 255 1072; NO-SIMD128-NEXT: i32.and $push9=, $30, $pop91 1073; NO-SIMD128-NEXT: i32.gt_u $push11=, $pop10, $pop9 1074; NO-SIMD128-NEXT: i32.select $push12=, $14, $30, $pop11 1075; NO-SIMD128-NEXT: i32.store8 13($0), $pop12 1076; NO-SIMD128-NEXT: i32.const $push90=, 255 1077; NO-SIMD128-NEXT: i32.and $push14=, $13, $pop90 1078; NO-SIMD128-NEXT: i32.const $push89=, 255 1079; NO-SIMD128-NEXT: i32.and $push13=, $29, $pop89 1080; NO-SIMD128-NEXT: i32.gt_u $push15=, $pop14, $pop13 1081; NO-SIMD128-NEXT: i32.select $push16=, $13, $29, $pop15 1082; NO-SIMD128-NEXT: i32.store8 12($0), $pop16 1083; NO-SIMD128-NEXT: i32.const $push88=, 255 1084; NO-SIMD128-NEXT: i32.and $push18=, $12, $pop88 1085; NO-SIMD128-NEXT: i32.const $push87=, 255 1086; NO-SIMD128-NEXT: i32.and $push17=, $28, $pop87 1087; NO-SIMD128-NEXT: i32.gt_u $push19=, $pop18, $pop17 1088; NO-SIMD128-NEXT: i32.select $push20=, $12, $28, $pop19 1089; NO-SIMD128-NEXT: i32.store8 11($0), $pop20 1090; NO-SIMD128-NEXT: i32.const $push86=, 255 1091; NO-SIMD128-NEXT: i32.and $push22=, $11, $pop86 1092; NO-SIMD128-NEXT: i32.const $push85=, 255 1093; NO-SIMD128-NEXT: i32.and $push21=, $27, $pop85 1094; NO-SIMD128-NEXT: i32.gt_u $push23=, $pop22, $pop21 1095; NO-SIMD128-NEXT: i32.select $push24=, $11, $27, $pop23 1096; NO-SIMD128-NEXT: i32.store8 10($0), $pop24 1097; NO-SIMD128-NEXT: i32.const $push84=, 255 1098; NO-SIMD128-NEXT: i32.and $push26=, $10, $pop84 1099; NO-SIMD128-NEXT: i32.const $push83=, 255 1100; NO-SIMD128-NEXT: i32.and $push25=, $26, $pop83 1101; NO-SIMD128-NEXT: i32.gt_u $push27=, $pop26, $pop25 1102; NO-SIMD128-NEXT: i32.select $push28=, $10, $26, $pop27 1103; NO-SIMD128-NEXT: i32.store8 9($0), $pop28 1104; NO-SIMD128-NEXT: i32.const $push82=, 255 1105; NO-SIMD128-NEXT: i32.and $push30=, $9, $pop82 1106; NO-SIMD128-NEXT: i32.const $push81=, 255 1107; NO-SIMD128-NEXT: i32.and $push29=, $25, $pop81 1108; NO-SIMD128-NEXT: i32.gt_u $push31=, $pop30, $pop29 1109; NO-SIMD128-NEXT: i32.select $push32=, $9, $25, $pop31 1110; NO-SIMD128-NEXT: i32.store8 8($0), $pop32 1111; NO-SIMD128-NEXT: i32.const $push80=, 255 1112; NO-SIMD128-NEXT: i32.and $push34=, $8, $pop80 1113; NO-SIMD128-NEXT: i32.const $push79=, 255 1114; NO-SIMD128-NEXT: i32.and $push33=, $24, $pop79 1115; NO-SIMD128-NEXT: i32.gt_u $push35=, $pop34, $pop33 1116; NO-SIMD128-NEXT: i32.select $push36=, $8, $24, $pop35 1117; NO-SIMD128-NEXT: i32.store8 7($0), $pop36 1118; NO-SIMD128-NEXT: i32.const $push78=, 255 1119; NO-SIMD128-NEXT: i32.and $push38=, $7, $pop78 1120; NO-SIMD128-NEXT: i32.const $push77=, 255 1121; NO-SIMD128-NEXT: i32.and $push37=, $23, $pop77 1122; NO-SIMD128-NEXT: i32.gt_u $push39=, $pop38, $pop37 1123; NO-SIMD128-NEXT: i32.select $push40=, $7, $23, $pop39 1124; NO-SIMD128-NEXT: i32.store8 6($0), $pop40 1125; NO-SIMD128-NEXT: i32.const $push76=, 255 1126; NO-SIMD128-NEXT: i32.and $push42=, $6, $pop76 1127; NO-SIMD128-NEXT: i32.const $push75=, 255 1128; NO-SIMD128-NEXT: i32.and $push41=, $22, $pop75 1129; NO-SIMD128-NEXT: i32.gt_u $push43=, $pop42, $pop41 1130; NO-SIMD128-NEXT: i32.select $push44=, $6, $22, $pop43 1131; NO-SIMD128-NEXT: i32.store8 5($0), $pop44 1132; NO-SIMD128-NEXT: i32.const $push74=, 255 1133; NO-SIMD128-NEXT: i32.and $push46=, $5, $pop74 1134; NO-SIMD128-NEXT: i32.const $push73=, 255 1135; NO-SIMD128-NEXT: i32.and $push45=, $21, $pop73 1136; NO-SIMD128-NEXT: i32.gt_u $push47=, $pop46, $pop45 1137; NO-SIMD128-NEXT: i32.select $push48=, $5, $21, $pop47 1138; NO-SIMD128-NEXT: i32.store8 4($0), $pop48 1139; NO-SIMD128-NEXT: i32.const $push72=, 255 1140; NO-SIMD128-NEXT: i32.and $push50=, $4, $pop72 1141; NO-SIMD128-NEXT: i32.const $push71=, 255 1142; NO-SIMD128-NEXT: i32.and $push49=, $20, $pop71 1143; NO-SIMD128-NEXT: i32.gt_u $push51=, $pop50, $pop49 1144; NO-SIMD128-NEXT: i32.select $push52=, $4, $20, $pop51 1145; NO-SIMD128-NEXT: i32.store8 3($0), $pop52 1146; NO-SIMD128-NEXT: i32.const $push70=, 255 1147; NO-SIMD128-NEXT: i32.and $push54=, $3, $pop70 1148; NO-SIMD128-NEXT: i32.const $push69=, 255 1149; NO-SIMD128-NEXT: i32.and $push53=, $19, $pop69 1150; NO-SIMD128-NEXT: i32.gt_u $push55=, $pop54, $pop53 1151; NO-SIMD128-NEXT: i32.select $push56=, $3, $19, $pop55 1152; NO-SIMD128-NEXT: i32.store8 2($0), $pop56 1153; NO-SIMD128-NEXT: i32.const $push68=, 255 1154; NO-SIMD128-NEXT: i32.and $push58=, $2, $pop68 1155; NO-SIMD128-NEXT: i32.const $push67=, 255 1156; NO-SIMD128-NEXT: i32.and $push57=, $18, $pop67 1157; NO-SIMD128-NEXT: i32.gt_u $push59=, $pop58, $pop57 1158; NO-SIMD128-NEXT: i32.select $push60=, $2, $18, $pop59 1159; NO-SIMD128-NEXT: i32.store8 1($0), $pop60 1160; NO-SIMD128-NEXT: i32.const $push66=, 255 1161; NO-SIMD128-NEXT: i32.and $push62=, $1, $pop66 1162; NO-SIMD128-NEXT: i32.const $push65=, 255 1163; NO-SIMD128-NEXT: i32.and $push61=, $17, $pop65 1164; NO-SIMD128-NEXT: i32.gt_u $push63=, $pop62, $pop61 1165; NO-SIMD128-NEXT: i32.select $push64=, $1, $17, $pop63 1166; NO-SIMD128-NEXT: i32.store8 0($0), $pop64 1167; NO-SIMD128-NEXT: return 1168; 1169; NO-SIMD128-FAST-LABEL: max_u_v16i8: 1170; 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) -> () 1171; NO-SIMD128-FAST-NEXT: # %bb.0: 1172; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 1173; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 1174; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255 1175; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop95 1176; NO-SIMD128-FAST-NEXT: i32.gt_u $push3=, $pop2, $pop1 1177; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3 1178; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 1179; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255 1180; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop94 1181; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255 1182; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop93 1183; NO-SIMD128-FAST-NEXT: i32.gt_u $push7=, $pop6, $pop5 1184; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7 1185; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 1186; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255 1187; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop92 1188; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255 1189; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop91 1190; NO-SIMD128-FAST-NEXT: i32.gt_u $push11=, $pop10, $pop9 1191; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11 1192; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 1193; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255 1194; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop90 1195; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255 1196; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop89 1197; NO-SIMD128-FAST-NEXT: i32.gt_u $push15=, $pop14, $pop13 1198; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15 1199; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop16 1200; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255 1201; NO-SIMD128-FAST-NEXT: i32.and $push18=, $5, $pop88 1202; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255 1203; NO-SIMD128-FAST-NEXT: i32.and $push17=, $21, $pop87 1204; NO-SIMD128-FAST-NEXT: i32.gt_u $push19=, $pop18, $pop17 1205; NO-SIMD128-FAST-NEXT: i32.select $push20=, $5, $21, $pop19 1206; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop20 1207; NO-SIMD128-FAST-NEXT: i32.const $push86=, 255 1208; NO-SIMD128-FAST-NEXT: i32.and $push22=, $6, $pop86 1209; NO-SIMD128-FAST-NEXT: i32.const $push85=, 255 1210; NO-SIMD128-FAST-NEXT: i32.and $push21=, $22, $pop85 1211; NO-SIMD128-FAST-NEXT: i32.gt_u $push23=, $pop22, $pop21 1212; NO-SIMD128-FAST-NEXT: i32.select $push24=, $6, $22, $pop23 1213; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop24 1214; NO-SIMD128-FAST-NEXT: i32.const $push84=, 255 1215; NO-SIMD128-FAST-NEXT: i32.and $push26=, $7, $pop84 1216; NO-SIMD128-FAST-NEXT: i32.const $push83=, 255 1217; NO-SIMD128-FAST-NEXT: i32.and $push25=, $23, $pop83 1218; NO-SIMD128-FAST-NEXT: i32.gt_u $push27=, $pop26, $pop25 1219; NO-SIMD128-FAST-NEXT: i32.select $push28=, $7, $23, $pop27 1220; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop28 1221; NO-SIMD128-FAST-NEXT: i32.const $push82=, 255 1222; NO-SIMD128-FAST-NEXT: i32.and $push30=, $8, $pop82 1223; NO-SIMD128-FAST-NEXT: i32.const $push81=, 255 1224; NO-SIMD128-FAST-NEXT: i32.and $push29=, $24, $pop81 1225; NO-SIMD128-FAST-NEXT: i32.gt_u $push31=, $pop30, $pop29 1226; NO-SIMD128-FAST-NEXT: i32.select $push32=, $8, $24, $pop31 1227; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop32 1228; NO-SIMD128-FAST-NEXT: i32.const $push80=, 255 1229; NO-SIMD128-FAST-NEXT: i32.and $push34=, $9, $pop80 1230; NO-SIMD128-FAST-NEXT: i32.const $push79=, 255 1231; NO-SIMD128-FAST-NEXT: i32.and $push33=, $25, $pop79 1232; NO-SIMD128-FAST-NEXT: i32.gt_u $push35=, $pop34, $pop33 1233; NO-SIMD128-FAST-NEXT: i32.select $push36=, $9, $25, $pop35 1234; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop36 1235; NO-SIMD128-FAST-NEXT: i32.const $push78=, 255 1236; NO-SIMD128-FAST-NEXT: i32.and $push38=, $10, $pop78 1237; NO-SIMD128-FAST-NEXT: i32.const $push77=, 255 1238; NO-SIMD128-FAST-NEXT: i32.and $push37=, $26, $pop77 1239; NO-SIMD128-FAST-NEXT: i32.gt_u $push39=, $pop38, $pop37 1240; NO-SIMD128-FAST-NEXT: i32.select $push40=, $10, $26, $pop39 1241; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop40 1242; NO-SIMD128-FAST-NEXT: i32.const $push76=, 255 1243; NO-SIMD128-FAST-NEXT: i32.and $push42=, $11, $pop76 1244; NO-SIMD128-FAST-NEXT: i32.const $push75=, 255 1245; NO-SIMD128-FAST-NEXT: i32.and $push41=, $27, $pop75 1246; NO-SIMD128-FAST-NEXT: i32.gt_u $push43=, $pop42, $pop41 1247; NO-SIMD128-FAST-NEXT: i32.select $push44=, $11, $27, $pop43 1248; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop44 1249; NO-SIMD128-FAST-NEXT: i32.const $push74=, 255 1250; NO-SIMD128-FAST-NEXT: i32.and $push46=, $12, $pop74 1251; NO-SIMD128-FAST-NEXT: i32.const $push73=, 255 1252; NO-SIMD128-FAST-NEXT: i32.and $push45=, $28, $pop73 1253; NO-SIMD128-FAST-NEXT: i32.gt_u $push47=, $pop46, $pop45 1254; NO-SIMD128-FAST-NEXT: i32.select $push48=, $12, $28, $pop47 1255; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop48 1256; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255 1257; NO-SIMD128-FAST-NEXT: i32.and $push50=, $13, $pop72 1258; NO-SIMD128-FAST-NEXT: i32.const $push71=, 255 1259; NO-SIMD128-FAST-NEXT: i32.and $push49=, $29, $pop71 1260; NO-SIMD128-FAST-NEXT: i32.gt_u $push51=, $pop50, $pop49 1261; NO-SIMD128-FAST-NEXT: i32.select $push52=, $13, $29, $pop51 1262; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop52 1263; NO-SIMD128-FAST-NEXT: i32.const $push70=, 255 1264; NO-SIMD128-FAST-NEXT: i32.and $push54=, $14, $pop70 1265; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255 1266; NO-SIMD128-FAST-NEXT: i32.and $push53=, $30, $pop69 1267; NO-SIMD128-FAST-NEXT: i32.gt_u $push55=, $pop54, $pop53 1268; NO-SIMD128-FAST-NEXT: i32.select $push56=, $14, $30, $pop55 1269; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop56 1270; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255 1271; NO-SIMD128-FAST-NEXT: i32.and $push58=, $15, $pop68 1272; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255 1273; NO-SIMD128-FAST-NEXT: i32.and $push57=, $31, $pop67 1274; NO-SIMD128-FAST-NEXT: i32.gt_u $push59=, $pop58, $pop57 1275; NO-SIMD128-FAST-NEXT: i32.select $push60=, $15, $31, $pop59 1276; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop60 1277; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255 1278; NO-SIMD128-FAST-NEXT: i32.and $push62=, $16, $pop66 1279; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255 1280; NO-SIMD128-FAST-NEXT: i32.and $push61=, $32, $pop65 1281; NO-SIMD128-FAST-NEXT: i32.gt_u $push63=, $pop62, $pop61 1282; NO-SIMD128-FAST-NEXT: i32.select $push64=, $16, $32, $pop63 1283; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop64 1284; NO-SIMD128-FAST-NEXT: return 1285 %c = icmp ugt <16 x i8> %x, %y 1286 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y 1287 ret <16 x i8> %a 1288} 1289 1290define <16 x i8> @avgr_u_v16i8(<16 x i8> %x, <16 x i8> %y) { 1291; SIMD128-LABEL: avgr_u_v16i8: 1292; SIMD128: .functype avgr_u_v16i8 (v128, v128) -> (v128) 1293; SIMD128-NEXT: # %bb.0: 1294; SIMD128-NEXT: i8x16.avgr_u $push0=, $0, $1 1295; SIMD128-NEXT: return $pop0 1296; 1297; SIMD128-FAST-LABEL: avgr_u_v16i8: 1298; SIMD128-FAST: .functype avgr_u_v16i8 (v128, v128) -> (v128) 1299; SIMD128-FAST-NEXT: # %bb.0: 1300; SIMD128-FAST-NEXT: i8x16.avgr_u $push0=, $0, $1 1301; SIMD128-FAST-NEXT: return $pop0 1302; 1303; NO-SIMD128-LABEL: avgr_u_v16i8: 1304; 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) -> () 1305; NO-SIMD128-NEXT: # %bb.0: 1306; NO-SIMD128-NEXT: i32.add $push0=, $16, $32 1307; NO-SIMD128-NEXT: i32.const $push1=, 1 1308; NO-SIMD128-NEXT: i32.add $push2=, $pop0, $pop1 1309; NO-SIMD128-NEXT: i32.const $push3=, 254 1310; NO-SIMD128-NEXT: i32.and $push4=, $pop2, $pop3 1311; NO-SIMD128-NEXT: i32.const $push111=, 1 1312; NO-SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop111 1313; NO-SIMD128-NEXT: i32.store8 15($0), $pop5 1314; NO-SIMD128-NEXT: i32.add $push6=, $15, $31 1315; NO-SIMD128-NEXT: i32.const $push110=, 1 1316; NO-SIMD128-NEXT: i32.add $push7=, $pop6, $pop110 1317; NO-SIMD128-NEXT: i32.const $push109=, 254 1318; NO-SIMD128-NEXT: i32.and $push8=, $pop7, $pop109 1319; NO-SIMD128-NEXT: i32.const $push108=, 1 1320; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop108 1321; NO-SIMD128-NEXT: i32.store8 14($0), $pop9 1322; NO-SIMD128-NEXT: i32.add $push10=, $14, $30 1323; NO-SIMD128-NEXT: i32.const $push107=, 1 1324; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop107 1325; NO-SIMD128-NEXT: i32.const $push106=, 254 1326; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop106 1327; NO-SIMD128-NEXT: i32.const $push105=, 1 1328; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop105 1329; NO-SIMD128-NEXT: i32.store8 13($0), $pop13 1330; NO-SIMD128-NEXT: i32.add $push14=, $13, $29 1331; NO-SIMD128-NEXT: i32.const $push104=, 1 1332; NO-SIMD128-NEXT: i32.add $push15=, $pop14, $pop104 1333; NO-SIMD128-NEXT: i32.const $push103=, 254 1334; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $pop103 1335; NO-SIMD128-NEXT: i32.const $push102=, 1 1336; NO-SIMD128-NEXT: i32.shr_u $push17=, $pop16, $pop102 1337; NO-SIMD128-NEXT: i32.store8 12($0), $pop17 1338; NO-SIMD128-NEXT: i32.add $push18=, $12, $28 1339; NO-SIMD128-NEXT: i32.const $push101=, 1 1340; NO-SIMD128-NEXT: i32.add $push19=, $pop18, $pop101 1341; NO-SIMD128-NEXT: i32.const $push100=, 254 1342; NO-SIMD128-NEXT: i32.and $push20=, $pop19, $pop100 1343; NO-SIMD128-NEXT: i32.const $push99=, 1 1344; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop99 1345; NO-SIMD128-NEXT: i32.store8 11($0), $pop21 1346; NO-SIMD128-NEXT: i32.add $push22=, $11, $27 1347; NO-SIMD128-NEXT: i32.const $push98=, 1 1348; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop98 1349; NO-SIMD128-NEXT: i32.const $push97=, 254 1350; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop97 1351; NO-SIMD128-NEXT: i32.const $push96=, 1 1352; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop96 1353; NO-SIMD128-NEXT: i32.store8 10($0), $pop25 1354; NO-SIMD128-NEXT: i32.add $push26=, $10, $26 1355; NO-SIMD128-NEXT: i32.const $push95=, 1 1356; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop95 1357; NO-SIMD128-NEXT: i32.const $push94=, 254 1358; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop94 1359; NO-SIMD128-NEXT: i32.const $push93=, 1 1360; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop93 1361; NO-SIMD128-NEXT: i32.store8 9($0), $pop29 1362; NO-SIMD128-NEXT: i32.add $push30=, $9, $25 1363; NO-SIMD128-NEXT: i32.const $push92=, 1 1364; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop92 1365; NO-SIMD128-NEXT: i32.const $push91=, 254 1366; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop91 1367; NO-SIMD128-NEXT: i32.const $push90=, 1 1368; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop90 1369; NO-SIMD128-NEXT: i32.store8 8($0), $pop33 1370; NO-SIMD128-NEXT: i32.add $push34=, $8, $24 1371; NO-SIMD128-NEXT: i32.const $push89=, 1 1372; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop89 1373; NO-SIMD128-NEXT: i32.const $push88=, 254 1374; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop88 1375; NO-SIMD128-NEXT: i32.const $push87=, 1 1376; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop87 1377; NO-SIMD128-NEXT: i32.store8 7($0), $pop37 1378; NO-SIMD128-NEXT: i32.add $push38=, $7, $23 1379; NO-SIMD128-NEXT: i32.const $push86=, 1 1380; NO-SIMD128-NEXT: i32.add $push39=, $pop38, $pop86 1381; NO-SIMD128-NEXT: i32.const $push85=, 254 1382; NO-SIMD128-NEXT: i32.and $push40=, $pop39, $pop85 1383; NO-SIMD128-NEXT: i32.const $push84=, 1 1384; NO-SIMD128-NEXT: i32.shr_u $push41=, $pop40, $pop84 1385; NO-SIMD128-NEXT: i32.store8 6($0), $pop41 1386; NO-SIMD128-NEXT: i32.add $push42=, $6, $22 1387; NO-SIMD128-NEXT: i32.const $push83=, 1 1388; NO-SIMD128-NEXT: i32.add $push43=, $pop42, $pop83 1389; NO-SIMD128-NEXT: i32.const $push82=, 254 1390; NO-SIMD128-NEXT: i32.and $push44=, $pop43, $pop82 1391; NO-SIMD128-NEXT: i32.const $push81=, 1 1392; NO-SIMD128-NEXT: i32.shr_u $push45=, $pop44, $pop81 1393; NO-SIMD128-NEXT: i32.store8 5($0), $pop45 1394; NO-SIMD128-NEXT: i32.add $push46=, $5, $21 1395; NO-SIMD128-NEXT: i32.const $push80=, 1 1396; NO-SIMD128-NEXT: i32.add $push47=, $pop46, $pop80 1397; NO-SIMD128-NEXT: i32.const $push79=, 254 1398; NO-SIMD128-NEXT: i32.and $push48=, $pop47, $pop79 1399; NO-SIMD128-NEXT: i32.const $push78=, 1 1400; NO-SIMD128-NEXT: i32.shr_u $push49=, $pop48, $pop78 1401; NO-SIMD128-NEXT: i32.store8 4($0), $pop49 1402; NO-SIMD128-NEXT: i32.add $push50=, $4, $20 1403; NO-SIMD128-NEXT: i32.const $push77=, 1 1404; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop77 1405; NO-SIMD128-NEXT: i32.const $push76=, 254 1406; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop76 1407; NO-SIMD128-NEXT: i32.const $push75=, 1 1408; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop75 1409; NO-SIMD128-NEXT: i32.store8 3($0), $pop53 1410; NO-SIMD128-NEXT: i32.add $push54=, $3, $19 1411; NO-SIMD128-NEXT: i32.const $push74=, 1 1412; NO-SIMD128-NEXT: i32.add $push55=, $pop54, $pop74 1413; NO-SIMD128-NEXT: i32.const $push73=, 254 1414; NO-SIMD128-NEXT: i32.and $push56=, $pop55, $pop73 1415; NO-SIMD128-NEXT: i32.const $push72=, 1 1416; NO-SIMD128-NEXT: i32.shr_u $push57=, $pop56, $pop72 1417; NO-SIMD128-NEXT: i32.store8 2($0), $pop57 1418; NO-SIMD128-NEXT: i32.add $push58=, $2, $18 1419; NO-SIMD128-NEXT: i32.const $push71=, 1 1420; NO-SIMD128-NEXT: i32.add $push59=, $pop58, $pop71 1421; NO-SIMD128-NEXT: i32.const $push70=, 254 1422; NO-SIMD128-NEXT: i32.and $push60=, $pop59, $pop70 1423; NO-SIMD128-NEXT: i32.const $push69=, 1 1424; NO-SIMD128-NEXT: i32.shr_u $push61=, $pop60, $pop69 1425; NO-SIMD128-NEXT: i32.store8 1($0), $pop61 1426; NO-SIMD128-NEXT: i32.add $push62=, $1, $17 1427; NO-SIMD128-NEXT: i32.const $push68=, 1 1428; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop68 1429; NO-SIMD128-NEXT: i32.const $push67=, 254 1430; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop67 1431; NO-SIMD128-NEXT: i32.const $push66=, 1 1432; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop66 1433; NO-SIMD128-NEXT: i32.store8 0($0), $pop65 1434; NO-SIMD128-NEXT: return 1435; 1436; NO-SIMD128-FAST-LABEL: avgr_u_v16i8: 1437; 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) -> () 1438; NO-SIMD128-FAST-NEXT: # %bb.0: 1439; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 1440; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 1441; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 1442; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254 1443; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 1444; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1 1445; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop111 1446; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5 1447; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18 1448; NO-SIMD128-FAST-NEXT: i32.const $push110=, 1 1449; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop110 1450; NO-SIMD128-FAST-NEXT: i32.const $push109=, 254 1451; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop109 1452; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1 1453; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop108 1454; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9 1455; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19 1456; NO-SIMD128-FAST-NEXT: i32.const $push107=, 1 1457; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop107 1458; NO-SIMD128-FAST-NEXT: i32.const $push106=, 254 1459; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop106 1460; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1 1461; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop105 1462; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13 1463; NO-SIMD128-FAST-NEXT: i32.add $push14=, $4, $20 1464; NO-SIMD128-FAST-NEXT: i32.const $push104=, 1 1465; NO-SIMD128-FAST-NEXT: i32.add $push15=, $pop14, $pop104 1466; NO-SIMD128-FAST-NEXT: i32.const $push103=, 254 1467; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $pop103 1468; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1 1469; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop102 1470; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop17 1471; NO-SIMD128-FAST-NEXT: i32.add $push18=, $5, $21 1472; NO-SIMD128-FAST-NEXT: i32.const $push101=, 1 1473; NO-SIMD128-FAST-NEXT: i32.add $push19=, $pop18, $pop101 1474; NO-SIMD128-FAST-NEXT: i32.const $push100=, 254 1475; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $pop100 1476; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1 1477; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop99 1478; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21 1479; NO-SIMD128-FAST-NEXT: i32.add $push22=, $6, $22 1480; NO-SIMD128-FAST-NEXT: i32.const $push98=, 1 1481; NO-SIMD128-FAST-NEXT: i32.add $push23=, $pop22, $pop98 1482; NO-SIMD128-FAST-NEXT: i32.const $push97=, 254 1483; NO-SIMD128-FAST-NEXT: i32.and $push24=, $pop23, $pop97 1484; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1 1485; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop96 1486; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop25 1487; NO-SIMD128-FAST-NEXT: i32.add $push26=, $7, $23 1488; NO-SIMD128-FAST-NEXT: i32.const $push95=, 1 1489; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop95 1490; NO-SIMD128-FAST-NEXT: i32.const $push94=, 254 1491; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop94 1492; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1 1493; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop93 1494; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop29 1495; NO-SIMD128-FAST-NEXT: i32.add $push30=, $8, $24 1496; NO-SIMD128-FAST-NEXT: i32.const $push92=, 1 1497; NO-SIMD128-FAST-NEXT: i32.add $push31=, $pop30, $pop92 1498; NO-SIMD128-FAST-NEXT: i32.const $push91=, 254 1499; NO-SIMD128-FAST-NEXT: i32.and $push32=, $pop31, $pop91 1500; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1 1501; NO-SIMD128-FAST-NEXT: i32.shr_u $push33=, $pop32, $pop90 1502; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop33 1503; NO-SIMD128-FAST-NEXT: i32.add $push34=, $9, $25 1504; NO-SIMD128-FAST-NEXT: i32.const $push89=, 1 1505; NO-SIMD128-FAST-NEXT: i32.add $push35=, $pop34, $pop89 1506; NO-SIMD128-FAST-NEXT: i32.const $push88=, 254 1507; NO-SIMD128-FAST-NEXT: i32.and $push36=, $pop35, $pop88 1508; NO-SIMD128-FAST-NEXT: i32.const $push87=, 1 1509; NO-SIMD128-FAST-NEXT: i32.shr_u $push37=, $pop36, $pop87 1510; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop37 1511; NO-SIMD128-FAST-NEXT: i32.add $push38=, $10, $26 1512; NO-SIMD128-FAST-NEXT: i32.const $push86=, 1 1513; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop86 1514; NO-SIMD128-FAST-NEXT: i32.const $push85=, 254 1515; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop85 1516; NO-SIMD128-FAST-NEXT: i32.const $push84=, 1 1517; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop84 1518; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop41 1519; NO-SIMD128-FAST-NEXT: i32.add $push42=, $11, $27 1520; NO-SIMD128-FAST-NEXT: i32.const $push83=, 1 1521; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop83 1522; NO-SIMD128-FAST-NEXT: i32.const $push82=, 254 1523; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop82 1524; NO-SIMD128-FAST-NEXT: i32.const $push81=, 1 1525; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop81 1526; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop45 1527; NO-SIMD128-FAST-NEXT: i32.add $push46=, $12, $28 1528; NO-SIMD128-FAST-NEXT: i32.const $push80=, 1 1529; NO-SIMD128-FAST-NEXT: i32.add $push47=, $pop46, $pop80 1530; NO-SIMD128-FAST-NEXT: i32.const $push79=, 254 1531; NO-SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop79 1532; NO-SIMD128-FAST-NEXT: i32.const $push78=, 1 1533; NO-SIMD128-FAST-NEXT: i32.shr_u $push49=, $pop48, $pop78 1534; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop49 1535; NO-SIMD128-FAST-NEXT: i32.add $push50=, $13, $29 1536; NO-SIMD128-FAST-NEXT: i32.const $push77=, 1 1537; NO-SIMD128-FAST-NEXT: i32.add $push51=, $pop50, $pop77 1538; NO-SIMD128-FAST-NEXT: i32.const $push76=, 254 1539; NO-SIMD128-FAST-NEXT: i32.and $push52=, $pop51, $pop76 1540; NO-SIMD128-FAST-NEXT: i32.const $push75=, 1 1541; NO-SIMD128-FAST-NEXT: i32.shr_u $push53=, $pop52, $pop75 1542; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop53 1543; NO-SIMD128-FAST-NEXT: i32.add $push54=, $14, $30 1544; NO-SIMD128-FAST-NEXT: i32.const $push74=, 1 1545; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop74 1546; NO-SIMD128-FAST-NEXT: i32.const $push73=, 254 1547; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop73 1548; NO-SIMD128-FAST-NEXT: i32.const $push72=, 1 1549; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop72 1550; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop57 1551; NO-SIMD128-FAST-NEXT: i32.add $push58=, $15, $31 1552; NO-SIMD128-FAST-NEXT: i32.const $push71=, 1 1553; NO-SIMD128-FAST-NEXT: i32.add $push59=, $pop58, $pop71 1554; NO-SIMD128-FAST-NEXT: i32.const $push70=, 254 1555; NO-SIMD128-FAST-NEXT: i32.and $push60=, $pop59, $pop70 1556; NO-SIMD128-FAST-NEXT: i32.const $push69=, 1 1557; NO-SIMD128-FAST-NEXT: i32.shr_u $push61=, $pop60, $pop69 1558; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop61 1559; NO-SIMD128-FAST-NEXT: i32.add $push62=, $16, $32 1560; NO-SIMD128-FAST-NEXT: i32.const $push68=, 1 1561; NO-SIMD128-FAST-NEXT: i32.add $push63=, $pop62, $pop68 1562; NO-SIMD128-FAST-NEXT: i32.const $push67=, 254 1563; NO-SIMD128-FAST-NEXT: i32.and $push64=, $pop63, $pop67 1564; NO-SIMD128-FAST-NEXT: i32.const $push66=, 1 1565; NO-SIMD128-FAST-NEXT: i32.shr_u $push65=, $pop64, $pop66 1566; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop65 1567; NO-SIMD128-FAST-NEXT: return 1568 %a = add nuw <16 x i8> %x, %y 1569 %b = add nuw <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, 1570 i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1571 %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, 1572 i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 1573 ret <16 x i8> %c 1574} 1575 1576define <16 x i8> @avgr_u_v16i8_wrap(<16 x i8> %x, <16 x i8> %y) { 1577; SIMD128-LABEL: avgr_u_v16i8_wrap: 1578; SIMD128: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128) 1579; SIMD128-NEXT: # %bb.0: 1580; SIMD128-NEXT: i8x16.add $push0=, $0, $1 1581; SIMD128-NEXT: v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 1582; SIMD128-NEXT: i8x16.add $push2=, $pop0, $pop1 1583; SIMD128-NEXT: i32.const $push3=, 1 1584; SIMD128-NEXT: i8x16.shr_u $push4=, $pop2, $pop3 1585; SIMD128-NEXT: return $pop4 1586; 1587; SIMD128-FAST-LABEL: avgr_u_v16i8_wrap: 1588; SIMD128-FAST: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128) 1589; SIMD128-FAST-NEXT: # %bb.0: 1590; SIMD128-FAST-NEXT: i8x16.add $push2=, $0, $1 1591; SIMD128-FAST-NEXT: v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 1592; SIMD128-FAST-NEXT: i8x16.add $push1=, $pop2, $pop3 1593; SIMD128-FAST-NEXT: i32.const $push4=, 1 1594; SIMD128-FAST-NEXT: i8x16.shr_u $push0=, $pop1, $pop4 1595; SIMD128-FAST-NEXT: return $pop0 1596; 1597; NO-SIMD128-LABEL: avgr_u_v16i8_wrap: 1598; 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) -> () 1599; NO-SIMD128-NEXT: # %bb.0: 1600; NO-SIMD128-NEXT: i32.add $push0=, $16, $32 1601; NO-SIMD128-NEXT: i32.const $push1=, 1 1602; NO-SIMD128-NEXT: i32.add $push2=, $pop0, $pop1 1603; NO-SIMD128-NEXT: i32.const $push3=, 254 1604; NO-SIMD128-NEXT: i32.and $push4=, $pop2, $pop3 1605; NO-SIMD128-NEXT: i32.const $push111=, 1 1606; NO-SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop111 1607; NO-SIMD128-NEXT: i32.store8 15($0), $pop5 1608; NO-SIMD128-NEXT: i32.add $push6=, $15, $31 1609; NO-SIMD128-NEXT: i32.const $push110=, 1 1610; NO-SIMD128-NEXT: i32.add $push7=, $pop6, $pop110 1611; NO-SIMD128-NEXT: i32.const $push109=, 254 1612; NO-SIMD128-NEXT: i32.and $push8=, $pop7, $pop109 1613; NO-SIMD128-NEXT: i32.const $push108=, 1 1614; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop108 1615; NO-SIMD128-NEXT: i32.store8 14($0), $pop9 1616; NO-SIMD128-NEXT: i32.add $push10=, $14, $30 1617; NO-SIMD128-NEXT: i32.const $push107=, 1 1618; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop107 1619; NO-SIMD128-NEXT: i32.const $push106=, 254 1620; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop106 1621; NO-SIMD128-NEXT: i32.const $push105=, 1 1622; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop105 1623; NO-SIMD128-NEXT: i32.store8 13($0), $pop13 1624; NO-SIMD128-NEXT: i32.add $push14=, $13, $29 1625; NO-SIMD128-NEXT: i32.const $push104=, 1 1626; NO-SIMD128-NEXT: i32.add $push15=, $pop14, $pop104 1627; NO-SIMD128-NEXT: i32.const $push103=, 254 1628; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $pop103 1629; NO-SIMD128-NEXT: i32.const $push102=, 1 1630; NO-SIMD128-NEXT: i32.shr_u $push17=, $pop16, $pop102 1631; NO-SIMD128-NEXT: i32.store8 12($0), $pop17 1632; NO-SIMD128-NEXT: i32.add $push18=, $12, $28 1633; NO-SIMD128-NEXT: i32.const $push101=, 1 1634; NO-SIMD128-NEXT: i32.add $push19=, $pop18, $pop101 1635; NO-SIMD128-NEXT: i32.const $push100=, 254 1636; NO-SIMD128-NEXT: i32.and $push20=, $pop19, $pop100 1637; NO-SIMD128-NEXT: i32.const $push99=, 1 1638; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop99 1639; NO-SIMD128-NEXT: i32.store8 11($0), $pop21 1640; NO-SIMD128-NEXT: i32.add $push22=, $11, $27 1641; NO-SIMD128-NEXT: i32.const $push98=, 1 1642; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop98 1643; NO-SIMD128-NEXT: i32.const $push97=, 254 1644; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop97 1645; NO-SIMD128-NEXT: i32.const $push96=, 1 1646; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop96 1647; NO-SIMD128-NEXT: i32.store8 10($0), $pop25 1648; NO-SIMD128-NEXT: i32.add $push26=, $10, $26 1649; NO-SIMD128-NEXT: i32.const $push95=, 1 1650; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop95 1651; NO-SIMD128-NEXT: i32.const $push94=, 254 1652; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop94 1653; NO-SIMD128-NEXT: i32.const $push93=, 1 1654; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop93 1655; NO-SIMD128-NEXT: i32.store8 9($0), $pop29 1656; NO-SIMD128-NEXT: i32.add $push30=, $9, $25 1657; NO-SIMD128-NEXT: i32.const $push92=, 1 1658; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop92 1659; NO-SIMD128-NEXT: i32.const $push91=, 254 1660; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop91 1661; NO-SIMD128-NEXT: i32.const $push90=, 1 1662; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop90 1663; NO-SIMD128-NEXT: i32.store8 8($0), $pop33 1664; NO-SIMD128-NEXT: i32.add $push34=, $8, $24 1665; NO-SIMD128-NEXT: i32.const $push89=, 1 1666; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop89 1667; NO-SIMD128-NEXT: i32.const $push88=, 254 1668; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop88 1669; NO-SIMD128-NEXT: i32.const $push87=, 1 1670; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop87 1671; NO-SIMD128-NEXT: i32.store8 7($0), $pop37 1672; NO-SIMD128-NEXT: i32.add $push38=, $7, $23 1673; NO-SIMD128-NEXT: i32.const $push86=, 1 1674; NO-SIMD128-NEXT: i32.add $push39=, $pop38, $pop86 1675; NO-SIMD128-NEXT: i32.const $push85=, 254 1676; NO-SIMD128-NEXT: i32.and $push40=, $pop39, $pop85 1677; NO-SIMD128-NEXT: i32.const $push84=, 1 1678; NO-SIMD128-NEXT: i32.shr_u $push41=, $pop40, $pop84 1679; NO-SIMD128-NEXT: i32.store8 6($0), $pop41 1680; NO-SIMD128-NEXT: i32.add $push42=, $6, $22 1681; NO-SIMD128-NEXT: i32.const $push83=, 1 1682; NO-SIMD128-NEXT: i32.add $push43=, $pop42, $pop83 1683; NO-SIMD128-NEXT: i32.const $push82=, 254 1684; NO-SIMD128-NEXT: i32.and $push44=, $pop43, $pop82 1685; NO-SIMD128-NEXT: i32.const $push81=, 1 1686; NO-SIMD128-NEXT: i32.shr_u $push45=, $pop44, $pop81 1687; NO-SIMD128-NEXT: i32.store8 5($0), $pop45 1688; NO-SIMD128-NEXT: i32.add $push46=, $5, $21 1689; NO-SIMD128-NEXT: i32.const $push80=, 1 1690; NO-SIMD128-NEXT: i32.add $push47=, $pop46, $pop80 1691; NO-SIMD128-NEXT: i32.const $push79=, 254 1692; NO-SIMD128-NEXT: i32.and $push48=, $pop47, $pop79 1693; NO-SIMD128-NEXT: i32.const $push78=, 1 1694; NO-SIMD128-NEXT: i32.shr_u $push49=, $pop48, $pop78 1695; NO-SIMD128-NEXT: i32.store8 4($0), $pop49 1696; NO-SIMD128-NEXT: i32.add $push50=, $4, $20 1697; NO-SIMD128-NEXT: i32.const $push77=, 1 1698; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop77 1699; NO-SIMD128-NEXT: i32.const $push76=, 254 1700; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop76 1701; NO-SIMD128-NEXT: i32.const $push75=, 1 1702; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop75 1703; NO-SIMD128-NEXT: i32.store8 3($0), $pop53 1704; NO-SIMD128-NEXT: i32.add $push54=, $3, $19 1705; NO-SIMD128-NEXT: i32.const $push74=, 1 1706; NO-SIMD128-NEXT: i32.add $push55=, $pop54, $pop74 1707; NO-SIMD128-NEXT: i32.const $push73=, 254 1708; NO-SIMD128-NEXT: i32.and $push56=, $pop55, $pop73 1709; NO-SIMD128-NEXT: i32.const $push72=, 1 1710; NO-SIMD128-NEXT: i32.shr_u $push57=, $pop56, $pop72 1711; NO-SIMD128-NEXT: i32.store8 2($0), $pop57 1712; NO-SIMD128-NEXT: i32.add $push58=, $2, $18 1713; NO-SIMD128-NEXT: i32.const $push71=, 1 1714; NO-SIMD128-NEXT: i32.add $push59=, $pop58, $pop71 1715; NO-SIMD128-NEXT: i32.const $push70=, 254 1716; NO-SIMD128-NEXT: i32.and $push60=, $pop59, $pop70 1717; NO-SIMD128-NEXT: i32.const $push69=, 1 1718; NO-SIMD128-NEXT: i32.shr_u $push61=, $pop60, $pop69 1719; NO-SIMD128-NEXT: i32.store8 1($0), $pop61 1720; NO-SIMD128-NEXT: i32.add $push62=, $1, $17 1721; NO-SIMD128-NEXT: i32.const $push68=, 1 1722; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop68 1723; NO-SIMD128-NEXT: i32.const $push67=, 254 1724; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop67 1725; NO-SIMD128-NEXT: i32.const $push66=, 1 1726; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop66 1727; NO-SIMD128-NEXT: i32.store8 0($0), $pop65 1728; NO-SIMD128-NEXT: return 1729; 1730; NO-SIMD128-FAST-LABEL: avgr_u_v16i8_wrap: 1731; 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) -> () 1732; NO-SIMD128-FAST-NEXT: # %bb.0: 1733; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17 1734; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 1735; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 1736; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254 1737; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 1738; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1 1739; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop111 1740; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5 1741; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18 1742; NO-SIMD128-FAST-NEXT: i32.const $push110=, 1 1743; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop110 1744; NO-SIMD128-FAST-NEXT: i32.const $push109=, 254 1745; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop109 1746; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1 1747; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop108 1748; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9 1749; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19 1750; NO-SIMD128-FAST-NEXT: i32.const $push107=, 1 1751; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop107 1752; NO-SIMD128-FAST-NEXT: i32.const $push106=, 254 1753; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop106 1754; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1 1755; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop105 1756; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13 1757; NO-SIMD128-FAST-NEXT: i32.add $push14=, $4, $20 1758; NO-SIMD128-FAST-NEXT: i32.const $push104=, 1 1759; NO-SIMD128-FAST-NEXT: i32.add $push15=, $pop14, $pop104 1760; NO-SIMD128-FAST-NEXT: i32.const $push103=, 254 1761; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $pop103 1762; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1 1763; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop102 1764; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop17 1765; NO-SIMD128-FAST-NEXT: i32.add $push18=, $5, $21 1766; NO-SIMD128-FAST-NEXT: i32.const $push101=, 1 1767; NO-SIMD128-FAST-NEXT: i32.add $push19=, $pop18, $pop101 1768; NO-SIMD128-FAST-NEXT: i32.const $push100=, 254 1769; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $pop100 1770; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1 1771; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop99 1772; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21 1773; NO-SIMD128-FAST-NEXT: i32.add $push22=, $6, $22 1774; NO-SIMD128-FAST-NEXT: i32.const $push98=, 1 1775; NO-SIMD128-FAST-NEXT: i32.add $push23=, $pop22, $pop98 1776; NO-SIMD128-FAST-NEXT: i32.const $push97=, 254 1777; NO-SIMD128-FAST-NEXT: i32.and $push24=, $pop23, $pop97 1778; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1 1779; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop96 1780; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop25 1781; NO-SIMD128-FAST-NEXT: i32.add $push26=, $7, $23 1782; NO-SIMD128-FAST-NEXT: i32.const $push95=, 1 1783; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop95 1784; NO-SIMD128-FAST-NEXT: i32.const $push94=, 254 1785; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop94 1786; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1 1787; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop93 1788; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop29 1789; NO-SIMD128-FAST-NEXT: i32.add $push30=, $8, $24 1790; NO-SIMD128-FAST-NEXT: i32.const $push92=, 1 1791; NO-SIMD128-FAST-NEXT: i32.add $push31=, $pop30, $pop92 1792; NO-SIMD128-FAST-NEXT: i32.const $push91=, 254 1793; NO-SIMD128-FAST-NEXT: i32.and $push32=, $pop31, $pop91 1794; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1 1795; NO-SIMD128-FAST-NEXT: i32.shr_u $push33=, $pop32, $pop90 1796; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop33 1797; NO-SIMD128-FAST-NEXT: i32.add $push34=, $9, $25 1798; NO-SIMD128-FAST-NEXT: i32.const $push89=, 1 1799; NO-SIMD128-FAST-NEXT: i32.add $push35=, $pop34, $pop89 1800; NO-SIMD128-FAST-NEXT: i32.const $push88=, 254 1801; NO-SIMD128-FAST-NEXT: i32.and $push36=, $pop35, $pop88 1802; NO-SIMD128-FAST-NEXT: i32.const $push87=, 1 1803; NO-SIMD128-FAST-NEXT: i32.shr_u $push37=, $pop36, $pop87 1804; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop37 1805; NO-SIMD128-FAST-NEXT: i32.add $push38=, $10, $26 1806; NO-SIMD128-FAST-NEXT: i32.const $push86=, 1 1807; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop86 1808; NO-SIMD128-FAST-NEXT: i32.const $push85=, 254 1809; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop85 1810; NO-SIMD128-FAST-NEXT: i32.const $push84=, 1 1811; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop84 1812; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop41 1813; NO-SIMD128-FAST-NEXT: i32.add $push42=, $11, $27 1814; NO-SIMD128-FAST-NEXT: i32.const $push83=, 1 1815; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop83 1816; NO-SIMD128-FAST-NEXT: i32.const $push82=, 254 1817; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop82 1818; NO-SIMD128-FAST-NEXT: i32.const $push81=, 1 1819; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop81 1820; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop45 1821; NO-SIMD128-FAST-NEXT: i32.add $push46=, $12, $28 1822; NO-SIMD128-FAST-NEXT: i32.const $push80=, 1 1823; NO-SIMD128-FAST-NEXT: i32.add $push47=, $pop46, $pop80 1824; NO-SIMD128-FAST-NEXT: i32.const $push79=, 254 1825; NO-SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop79 1826; NO-SIMD128-FAST-NEXT: i32.const $push78=, 1 1827; NO-SIMD128-FAST-NEXT: i32.shr_u $push49=, $pop48, $pop78 1828; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop49 1829; NO-SIMD128-FAST-NEXT: i32.add $push50=, $13, $29 1830; NO-SIMD128-FAST-NEXT: i32.const $push77=, 1 1831; NO-SIMD128-FAST-NEXT: i32.add $push51=, $pop50, $pop77 1832; NO-SIMD128-FAST-NEXT: i32.const $push76=, 254 1833; NO-SIMD128-FAST-NEXT: i32.and $push52=, $pop51, $pop76 1834; NO-SIMD128-FAST-NEXT: i32.const $push75=, 1 1835; NO-SIMD128-FAST-NEXT: i32.shr_u $push53=, $pop52, $pop75 1836; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop53 1837; NO-SIMD128-FAST-NEXT: i32.add $push54=, $14, $30 1838; NO-SIMD128-FAST-NEXT: i32.const $push74=, 1 1839; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop74 1840; NO-SIMD128-FAST-NEXT: i32.const $push73=, 254 1841; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop73 1842; NO-SIMD128-FAST-NEXT: i32.const $push72=, 1 1843; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop72 1844; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop57 1845; NO-SIMD128-FAST-NEXT: i32.add $push58=, $15, $31 1846; NO-SIMD128-FAST-NEXT: i32.const $push71=, 1 1847; NO-SIMD128-FAST-NEXT: i32.add $push59=, $pop58, $pop71 1848; NO-SIMD128-FAST-NEXT: i32.const $push70=, 254 1849; NO-SIMD128-FAST-NEXT: i32.and $push60=, $pop59, $pop70 1850; NO-SIMD128-FAST-NEXT: i32.const $push69=, 1 1851; NO-SIMD128-FAST-NEXT: i32.shr_u $push61=, $pop60, $pop69 1852; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop61 1853; NO-SIMD128-FAST-NEXT: i32.add $push62=, $16, $32 1854; NO-SIMD128-FAST-NEXT: i32.const $push68=, 1 1855; NO-SIMD128-FAST-NEXT: i32.add $push63=, $pop62, $pop68 1856; NO-SIMD128-FAST-NEXT: i32.const $push67=, 254 1857; NO-SIMD128-FAST-NEXT: i32.and $push64=, $pop63, $pop67 1858; NO-SIMD128-FAST-NEXT: i32.const $push66=, 1 1859; NO-SIMD128-FAST-NEXT: i32.shr_u $push65=, $pop64, $pop66 1860; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop65 1861; NO-SIMD128-FAST-NEXT: return 1862 %a = add <16 x i8> %x, %y 1863 %b = add <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, 1864 i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1865 %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, 1866 i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2> 1867 ret <16 x i8> %c 1868} 1869 1870define <16 x i8> @abs_v16i8(<16 x i8> %x) { 1871; SIMD128-LABEL: abs_v16i8: 1872; SIMD128: .functype abs_v16i8 (v128) -> (v128) 1873; SIMD128-NEXT: # %bb.0: 1874; SIMD128-NEXT: i8x16.abs $push0=, $0 1875; SIMD128-NEXT: return $pop0 1876; 1877; SIMD128-FAST-LABEL: abs_v16i8: 1878; SIMD128-FAST: .functype abs_v16i8 (v128) -> (v128) 1879; SIMD128-FAST-NEXT: # %bb.0: 1880; SIMD128-FAST-NEXT: i8x16.abs $push0=, $0 1881; SIMD128-FAST-NEXT: return $pop0 1882; 1883; NO-SIMD128-LABEL: abs_v16i8: 1884; NO-SIMD128: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 1885; NO-SIMD128-NEXT: # %bb.0: 1886; NO-SIMD128-NEXT: i32.extend8_s $push0=, $16 1887; NO-SIMD128-NEXT: i32.const $push1=, 7 1888; NO-SIMD128-NEXT: i32.shr_s $push95=, $pop0, $pop1 1889; NO-SIMD128-NEXT: local.tee $push94=, $17=, $pop95 1890; NO-SIMD128-NEXT: i32.xor $push2=, $16, $pop94 1891; NO-SIMD128-NEXT: i32.sub $push3=, $pop2, $17 1892; NO-SIMD128-NEXT: i32.store8 15($0), $pop3 1893; NO-SIMD128-NEXT: i32.extend8_s $push4=, $15 1894; NO-SIMD128-NEXT: i32.const $push93=, 7 1895; NO-SIMD128-NEXT: i32.shr_s $push92=, $pop4, $pop93 1896; NO-SIMD128-NEXT: local.tee $push91=, $16=, $pop92 1897; NO-SIMD128-NEXT: i32.xor $push5=, $15, $pop91 1898; NO-SIMD128-NEXT: i32.sub $push6=, $pop5, $16 1899; NO-SIMD128-NEXT: i32.store8 14($0), $pop6 1900; NO-SIMD128-NEXT: i32.extend8_s $push7=, $14 1901; NO-SIMD128-NEXT: i32.const $push90=, 7 1902; NO-SIMD128-NEXT: i32.shr_s $push89=, $pop7, $pop90 1903; NO-SIMD128-NEXT: local.tee $push88=, $16=, $pop89 1904; NO-SIMD128-NEXT: i32.xor $push8=, $14, $pop88 1905; NO-SIMD128-NEXT: i32.sub $push9=, $pop8, $16 1906; NO-SIMD128-NEXT: i32.store8 13($0), $pop9 1907; NO-SIMD128-NEXT: i32.extend8_s $push10=, $13 1908; NO-SIMD128-NEXT: i32.const $push87=, 7 1909; NO-SIMD128-NEXT: i32.shr_s $push86=, $pop10, $pop87 1910; NO-SIMD128-NEXT: local.tee $push85=, $16=, $pop86 1911; NO-SIMD128-NEXT: i32.xor $push11=, $13, $pop85 1912; NO-SIMD128-NEXT: i32.sub $push12=, $pop11, $16 1913; NO-SIMD128-NEXT: i32.store8 12($0), $pop12 1914; NO-SIMD128-NEXT: i32.extend8_s $push13=, $12 1915; NO-SIMD128-NEXT: i32.const $push84=, 7 1916; NO-SIMD128-NEXT: i32.shr_s $push83=, $pop13, $pop84 1917; NO-SIMD128-NEXT: local.tee $push82=, $16=, $pop83 1918; NO-SIMD128-NEXT: i32.xor $push14=, $12, $pop82 1919; NO-SIMD128-NEXT: i32.sub $push15=, $pop14, $16 1920; NO-SIMD128-NEXT: i32.store8 11($0), $pop15 1921; NO-SIMD128-NEXT: i32.extend8_s $push16=, $11 1922; NO-SIMD128-NEXT: i32.const $push81=, 7 1923; NO-SIMD128-NEXT: i32.shr_s $push80=, $pop16, $pop81 1924; NO-SIMD128-NEXT: local.tee $push79=, $16=, $pop80 1925; NO-SIMD128-NEXT: i32.xor $push17=, $11, $pop79 1926; NO-SIMD128-NEXT: i32.sub $push18=, $pop17, $16 1927; NO-SIMD128-NEXT: i32.store8 10($0), $pop18 1928; NO-SIMD128-NEXT: i32.extend8_s $push19=, $10 1929; NO-SIMD128-NEXT: i32.const $push78=, 7 1930; NO-SIMD128-NEXT: i32.shr_s $push77=, $pop19, $pop78 1931; NO-SIMD128-NEXT: local.tee $push76=, $16=, $pop77 1932; NO-SIMD128-NEXT: i32.xor $push20=, $10, $pop76 1933; NO-SIMD128-NEXT: i32.sub $push21=, $pop20, $16 1934; NO-SIMD128-NEXT: i32.store8 9($0), $pop21 1935; NO-SIMD128-NEXT: i32.extend8_s $push22=, $9 1936; NO-SIMD128-NEXT: i32.const $push75=, 7 1937; NO-SIMD128-NEXT: i32.shr_s $push74=, $pop22, $pop75 1938; NO-SIMD128-NEXT: local.tee $push73=, $16=, $pop74 1939; NO-SIMD128-NEXT: i32.xor $push23=, $9, $pop73 1940; NO-SIMD128-NEXT: i32.sub $push24=, $pop23, $16 1941; NO-SIMD128-NEXT: i32.store8 8($0), $pop24 1942; NO-SIMD128-NEXT: i32.extend8_s $push25=, $8 1943; NO-SIMD128-NEXT: i32.const $push72=, 7 1944; NO-SIMD128-NEXT: i32.shr_s $push71=, $pop25, $pop72 1945; NO-SIMD128-NEXT: local.tee $push70=, $16=, $pop71 1946; NO-SIMD128-NEXT: i32.xor $push26=, $8, $pop70 1947; NO-SIMD128-NEXT: i32.sub $push27=, $pop26, $16 1948; NO-SIMD128-NEXT: i32.store8 7($0), $pop27 1949; NO-SIMD128-NEXT: i32.extend8_s $push28=, $7 1950; NO-SIMD128-NEXT: i32.const $push69=, 7 1951; NO-SIMD128-NEXT: i32.shr_s $push68=, $pop28, $pop69 1952; NO-SIMD128-NEXT: local.tee $push67=, $16=, $pop68 1953; NO-SIMD128-NEXT: i32.xor $push29=, $7, $pop67 1954; NO-SIMD128-NEXT: i32.sub $push30=, $pop29, $16 1955; NO-SIMD128-NEXT: i32.store8 6($0), $pop30 1956; NO-SIMD128-NEXT: i32.extend8_s $push31=, $6 1957; NO-SIMD128-NEXT: i32.const $push66=, 7 1958; NO-SIMD128-NEXT: i32.shr_s $push65=, $pop31, $pop66 1959; NO-SIMD128-NEXT: local.tee $push64=, $16=, $pop65 1960; NO-SIMD128-NEXT: i32.xor $push32=, $6, $pop64 1961; NO-SIMD128-NEXT: i32.sub $push33=, $pop32, $16 1962; NO-SIMD128-NEXT: i32.store8 5($0), $pop33 1963; NO-SIMD128-NEXT: i32.extend8_s $push34=, $5 1964; NO-SIMD128-NEXT: i32.const $push63=, 7 1965; NO-SIMD128-NEXT: i32.shr_s $push62=, $pop34, $pop63 1966; NO-SIMD128-NEXT: local.tee $push61=, $16=, $pop62 1967; NO-SIMD128-NEXT: i32.xor $push35=, $5, $pop61 1968; NO-SIMD128-NEXT: i32.sub $push36=, $pop35, $16 1969; NO-SIMD128-NEXT: i32.store8 4($0), $pop36 1970; NO-SIMD128-NEXT: i32.extend8_s $push37=, $4 1971; NO-SIMD128-NEXT: i32.const $push60=, 7 1972; NO-SIMD128-NEXT: i32.shr_s $push59=, $pop37, $pop60 1973; NO-SIMD128-NEXT: local.tee $push58=, $16=, $pop59 1974; NO-SIMD128-NEXT: i32.xor $push38=, $4, $pop58 1975; NO-SIMD128-NEXT: i32.sub $push39=, $pop38, $16 1976; NO-SIMD128-NEXT: i32.store8 3($0), $pop39 1977; NO-SIMD128-NEXT: i32.extend8_s $push40=, $3 1978; NO-SIMD128-NEXT: i32.const $push57=, 7 1979; NO-SIMD128-NEXT: i32.shr_s $push56=, $pop40, $pop57 1980; NO-SIMD128-NEXT: local.tee $push55=, $16=, $pop56 1981; NO-SIMD128-NEXT: i32.xor $push41=, $3, $pop55 1982; NO-SIMD128-NEXT: i32.sub $push42=, $pop41, $16 1983; NO-SIMD128-NEXT: i32.store8 2($0), $pop42 1984; NO-SIMD128-NEXT: i32.extend8_s $push43=, $2 1985; NO-SIMD128-NEXT: i32.const $push54=, 7 1986; NO-SIMD128-NEXT: i32.shr_s $push53=, $pop43, $pop54 1987; NO-SIMD128-NEXT: local.tee $push52=, $16=, $pop53 1988; NO-SIMD128-NEXT: i32.xor $push44=, $2, $pop52 1989; NO-SIMD128-NEXT: i32.sub $push45=, $pop44, $16 1990; NO-SIMD128-NEXT: i32.store8 1($0), $pop45 1991; NO-SIMD128-NEXT: i32.extend8_s $push46=, $1 1992; NO-SIMD128-NEXT: i32.const $push51=, 7 1993; NO-SIMD128-NEXT: i32.shr_s $push50=, $pop46, $pop51 1994; NO-SIMD128-NEXT: local.tee $push49=, $16=, $pop50 1995; NO-SIMD128-NEXT: i32.xor $push47=, $1, $pop49 1996; NO-SIMD128-NEXT: i32.sub $push48=, $pop47, $16 1997; NO-SIMD128-NEXT: i32.store8 0($0), $pop48 1998; NO-SIMD128-NEXT: return 1999; 2000; NO-SIMD128-FAST-LABEL: abs_v16i8: 2001; NO-SIMD128-FAST: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2002; NO-SIMD128-FAST-NEXT: # %bb.0: 2003; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $1 2004; NO-SIMD128-FAST-NEXT: i32.const $push1=, 7 2005; NO-SIMD128-FAST-NEXT: i32.shr_s $push95=, $pop0, $pop1 2006; NO-SIMD128-FAST-NEXT: local.tee $push94=, $17=, $pop95 2007; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop94 2008; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop2, $17 2009; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 2010; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $2 2011; NO-SIMD128-FAST-NEXT: i32.const $push93=, 7 2012; NO-SIMD128-FAST-NEXT: i32.shr_s $push92=, $pop4, $pop93 2013; NO-SIMD128-FAST-NEXT: local.tee $push91=, $1=, $pop92 2014; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop91 2015; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $1 2016; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6 2017; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $3 2018; NO-SIMD128-FAST-NEXT: i32.const $push90=, 7 2019; NO-SIMD128-FAST-NEXT: i32.shr_s $push89=, $pop7, $pop90 2020; NO-SIMD128-FAST-NEXT: local.tee $push88=, $2=, $pop89 2021; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $3, $pop88 2022; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop8, $2 2023; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9 2024; NO-SIMD128-FAST-NEXT: i32.extend8_s $push10=, $4 2025; NO-SIMD128-FAST-NEXT: i32.const $push87=, 7 2026; NO-SIMD128-FAST-NEXT: i32.shr_s $push86=, $pop10, $pop87 2027; NO-SIMD128-FAST-NEXT: local.tee $push85=, $3=, $pop86 2028; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $4, $pop85 2029; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop11, $3 2030; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop12 2031; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $5 2032; NO-SIMD128-FAST-NEXT: i32.const $push84=, 7 2033; NO-SIMD128-FAST-NEXT: i32.shr_s $push83=, $pop13, $pop84 2034; NO-SIMD128-FAST-NEXT: local.tee $push82=, $4=, $pop83 2035; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $5, $pop82 2036; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $pop14, $4 2037; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop15 2038; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $6 2039; NO-SIMD128-FAST-NEXT: i32.const $push81=, 7 2040; NO-SIMD128-FAST-NEXT: i32.shr_s $push80=, $pop16, $pop81 2041; NO-SIMD128-FAST-NEXT: local.tee $push79=, $5=, $pop80 2042; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $6, $pop79 2043; NO-SIMD128-FAST-NEXT: i32.sub $push18=, $pop17, $5 2044; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop18 2045; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $7 2046; NO-SIMD128-FAST-NEXT: i32.const $push78=, 7 2047; NO-SIMD128-FAST-NEXT: i32.shr_s $push77=, $pop19, $pop78 2048; NO-SIMD128-FAST-NEXT: local.tee $push76=, $6=, $pop77 2049; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $7, $pop76 2050; NO-SIMD128-FAST-NEXT: i32.sub $push21=, $pop20, $6 2051; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop21 2052; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $8 2053; NO-SIMD128-FAST-NEXT: i32.const $push75=, 7 2054; NO-SIMD128-FAST-NEXT: i32.shr_s $push74=, $pop22, $pop75 2055; NO-SIMD128-FAST-NEXT: local.tee $push73=, $7=, $pop74 2056; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $8, $pop73 2057; NO-SIMD128-FAST-NEXT: i32.sub $push24=, $pop23, $7 2058; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop24 2059; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $9 2060; NO-SIMD128-FAST-NEXT: i32.const $push72=, 7 2061; NO-SIMD128-FAST-NEXT: i32.shr_s $push71=, $pop25, $pop72 2062; NO-SIMD128-FAST-NEXT: local.tee $push70=, $8=, $pop71 2063; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $9, $pop70 2064; NO-SIMD128-FAST-NEXT: i32.sub $push27=, $pop26, $8 2065; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop27 2066; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $10 2067; NO-SIMD128-FAST-NEXT: i32.const $push69=, 7 2068; NO-SIMD128-FAST-NEXT: i32.shr_s $push68=, $pop28, $pop69 2069; NO-SIMD128-FAST-NEXT: local.tee $push67=, $9=, $pop68 2070; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $10, $pop67 2071; NO-SIMD128-FAST-NEXT: i32.sub $push30=, $pop29, $9 2072; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop30 2073; NO-SIMD128-FAST-NEXT: i32.extend8_s $push31=, $11 2074; NO-SIMD128-FAST-NEXT: i32.const $push66=, 7 2075; NO-SIMD128-FAST-NEXT: i32.shr_s $push65=, $pop31, $pop66 2076; NO-SIMD128-FAST-NEXT: local.tee $push64=, $10=, $pop65 2077; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $11, $pop64 2078; NO-SIMD128-FAST-NEXT: i32.sub $push33=, $pop32, $10 2079; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop33 2080; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $12 2081; NO-SIMD128-FAST-NEXT: i32.const $push63=, 7 2082; NO-SIMD128-FAST-NEXT: i32.shr_s $push62=, $pop34, $pop63 2083; NO-SIMD128-FAST-NEXT: local.tee $push61=, $11=, $pop62 2084; NO-SIMD128-FAST-NEXT: i32.xor $push35=, $12, $pop61 2085; NO-SIMD128-FAST-NEXT: i32.sub $push36=, $pop35, $11 2086; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop36 2087; NO-SIMD128-FAST-NEXT: i32.extend8_s $push37=, $13 2088; NO-SIMD128-FAST-NEXT: i32.const $push60=, 7 2089; NO-SIMD128-FAST-NEXT: i32.shr_s $push59=, $pop37, $pop60 2090; NO-SIMD128-FAST-NEXT: local.tee $push58=, $12=, $pop59 2091; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $13, $pop58 2092; NO-SIMD128-FAST-NEXT: i32.sub $push39=, $pop38, $12 2093; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop39 2094; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $14 2095; NO-SIMD128-FAST-NEXT: i32.const $push57=, 7 2096; NO-SIMD128-FAST-NEXT: i32.shr_s $push56=, $pop40, $pop57 2097; NO-SIMD128-FAST-NEXT: local.tee $push55=, $13=, $pop56 2098; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $14, $pop55 2099; NO-SIMD128-FAST-NEXT: i32.sub $push42=, $pop41, $13 2100; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop42 2101; NO-SIMD128-FAST-NEXT: i32.extend8_s $push43=, $15 2102; NO-SIMD128-FAST-NEXT: i32.const $push54=, 7 2103; NO-SIMD128-FAST-NEXT: i32.shr_s $push53=, $pop43, $pop54 2104; NO-SIMD128-FAST-NEXT: local.tee $push52=, $14=, $pop53 2105; NO-SIMD128-FAST-NEXT: i32.xor $push44=, $15, $pop52 2106; NO-SIMD128-FAST-NEXT: i32.sub $push45=, $pop44, $14 2107; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop45 2108; NO-SIMD128-FAST-NEXT: i32.extend8_s $push46=, $16 2109; NO-SIMD128-FAST-NEXT: i32.const $push51=, 7 2110; NO-SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop46, $pop51 2111; NO-SIMD128-FAST-NEXT: local.tee $push49=, $15=, $pop50 2112; NO-SIMD128-FAST-NEXT: i32.xor $push47=, $16, $pop49 2113; NO-SIMD128-FAST-NEXT: i32.sub $push48=, $pop47, $15 2114; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop48 2115; NO-SIMD128-FAST-NEXT: return 2116 %a = sub <16 x i8> zeroinitializer, %x 2117 %b = icmp slt <16 x i8> %x, zeroinitializer 2118 %c = select <16 x i1> %b, <16 x i8> %a, <16 x i8> %x 2119 ret <16 x i8> %c 2120} 2121 2122define <16 x i8> @neg_v16i8(<16 x i8> %x) { 2123; SIMD128-LABEL: neg_v16i8: 2124; SIMD128: .functype neg_v16i8 (v128) -> (v128) 2125; SIMD128-NEXT: # %bb.0: 2126; SIMD128-NEXT: i8x16.neg $push0=, $0 2127; SIMD128-NEXT: return $pop0 2128; 2129; SIMD128-FAST-LABEL: neg_v16i8: 2130; SIMD128-FAST: .functype neg_v16i8 (v128) -> (v128) 2131; SIMD128-FAST-NEXT: # %bb.0: 2132; SIMD128-FAST-NEXT: i8x16.neg $push0=, $0 2133; SIMD128-FAST-NEXT: return $pop0 2134; 2135; NO-SIMD128-LABEL: neg_v16i8: 2136; NO-SIMD128: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2137; NO-SIMD128-NEXT: # %bb.0: 2138; NO-SIMD128-NEXT: i32.const $push0=, 0 2139; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $16 2140; NO-SIMD128-NEXT: i32.store8 15($0), $pop1 2141; NO-SIMD128-NEXT: i32.const $push31=, 0 2142; NO-SIMD128-NEXT: i32.sub $push2=, $pop31, $15 2143; NO-SIMD128-NEXT: i32.store8 14($0), $pop2 2144; NO-SIMD128-NEXT: i32.const $push30=, 0 2145; NO-SIMD128-NEXT: i32.sub $push3=, $pop30, $14 2146; NO-SIMD128-NEXT: i32.store8 13($0), $pop3 2147; NO-SIMD128-NEXT: i32.const $push29=, 0 2148; NO-SIMD128-NEXT: i32.sub $push4=, $pop29, $13 2149; NO-SIMD128-NEXT: i32.store8 12($0), $pop4 2150; NO-SIMD128-NEXT: i32.const $push28=, 0 2151; NO-SIMD128-NEXT: i32.sub $push5=, $pop28, $12 2152; NO-SIMD128-NEXT: i32.store8 11($0), $pop5 2153; NO-SIMD128-NEXT: i32.const $push27=, 0 2154; NO-SIMD128-NEXT: i32.sub $push6=, $pop27, $11 2155; NO-SIMD128-NEXT: i32.store8 10($0), $pop6 2156; NO-SIMD128-NEXT: i32.const $push26=, 0 2157; NO-SIMD128-NEXT: i32.sub $push7=, $pop26, $10 2158; NO-SIMD128-NEXT: i32.store8 9($0), $pop7 2159; NO-SIMD128-NEXT: i32.const $push25=, 0 2160; NO-SIMD128-NEXT: i32.sub $push8=, $pop25, $9 2161; NO-SIMD128-NEXT: i32.store8 8($0), $pop8 2162; NO-SIMD128-NEXT: i32.const $push24=, 0 2163; NO-SIMD128-NEXT: i32.sub $push9=, $pop24, $8 2164; NO-SIMD128-NEXT: i32.store8 7($0), $pop9 2165; NO-SIMD128-NEXT: i32.const $push23=, 0 2166; NO-SIMD128-NEXT: i32.sub $push10=, $pop23, $7 2167; NO-SIMD128-NEXT: i32.store8 6($0), $pop10 2168; NO-SIMD128-NEXT: i32.const $push22=, 0 2169; NO-SIMD128-NEXT: i32.sub $push11=, $pop22, $6 2170; NO-SIMD128-NEXT: i32.store8 5($0), $pop11 2171; NO-SIMD128-NEXT: i32.const $push21=, 0 2172; NO-SIMD128-NEXT: i32.sub $push12=, $pop21, $5 2173; NO-SIMD128-NEXT: i32.store8 4($0), $pop12 2174; NO-SIMD128-NEXT: i32.const $push20=, 0 2175; NO-SIMD128-NEXT: i32.sub $push13=, $pop20, $4 2176; NO-SIMD128-NEXT: i32.store8 3($0), $pop13 2177; NO-SIMD128-NEXT: i32.const $push19=, 0 2178; NO-SIMD128-NEXT: i32.sub $push14=, $pop19, $3 2179; NO-SIMD128-NEXT: i32.store8 2($0), $pop14 2180; NO-SIMD128-NEXT: i32.const $push18=, 0 2181; NO-SIMD128-NEXT: i32.sub $push15=, $pop18, $2 2182; NO-SIMD128-NEXT: i32.store8 1($0), $pop15 2183; NO-SIMD128-NEXT: i32.const $push17=, 0 2184; NO-SIMD128-NEXT: i32.sub $push16=, $pop17, $1 2185; NO-SIMD128-NEXT: i32.store8 0($0), $pop16 2186; NO-SIMD128-NEXT: return 2187; 2188; NO-SIMD128-FAST-LABEL: neg_v16i8: 2189; NO-SIMD128-FAST: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2190; NO-SIMD128-FAST-NEXT: # %bb.0: 2191; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0 2192; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1 2193; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1 2194; NO-SIMD128-FAST-NEXT: i32.const $push31=, 0 2195; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop31, $2 2196; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2 2197; NO-SIMD128-FAST-NEXT: i32.const $push30=, 0 2198; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop30, $3 2199; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 2200; NO-SIMD128-FAST-NEXT: i32.const $push29=, 0 2201; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $pop29, $4 2202; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop4 2203; NO-SIMD128-FAST-NEXT: i32.const $push28=, 0 2204; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $pop28, $5 2205; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop5 2206; NO-SIMD128-FAST-NEXT: i32.const $push27=, 0 2207; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop27, $6 2208; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop6 2209; NO-SIMD128-FAST-NEXT: i32.const $push26=, 0 2210; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $pop26, $7 2211; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop7 2212; NO-SIMD128-FAST-NEXT: i32.const $push25=, 0 2213; NO-SIMD128-FAST-NEXT: i32.sub $push8=, $pop25, $8 2214; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop8 2215; NO-SIMD128-FAST-NEXT: i32.const $push24=, 0 2216; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop24, $9 2217; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop9 2218; NO-SIMD128-FAST-NEXT: i32.const $push23=, 0 2219; NO-SIMD128-FAST-NEXT: i32.sub $push10=, $pop23, $10 2220; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop10 2221; NO-SIMD128-FAST-NEXT: i32.const $push22=, 0 2222; NO-SIMD128-FAST-NEXT: i32.sub $push11=, $pop22, $11 2223; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop11 2224; NO-SIMD128-FAST-NEXT: i32.const $push21=, 0 2225; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop21, $12 2226; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop12 2227; NO-SIMD128-FAST-NEXT: i32.const $push20=, 0 2228; NO-SIMD128-FAST-NEXT: i32.sub $push13=, $pop20, $13 2229; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop13 2230; NO-SIMD128-FAST-NEXT: i32.const $push19=, 0 2231; NO-SIMD128-FAST-NEXT: i32.sub $push14=, $pop19, $14 2232; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop14 2233; NO-SIMD128-FAST-NEXT: i32.const $push18=, 0 2234; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $pop18, $15 2235; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop15 2236; NO-SIMD128-FAST-NEXT: i32.const $push17=, 0 2237; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $pop17, $16 2238; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop16 2239; NO-SIMD128-FAST-NEXT: return 2240 %a = sub <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, 2241 i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, 2242 %x 2243 ret <16 x i8> %a 2244} 2245 2246define <16 x i8> @shl_v16i8(<16 x i8> %v, i8 %x) { 2247; SIMD128-LABEL: shl_v16i8: 2248; SIMD128: .functype shl_v16i8 (v128, i32) -> (v128) 2249; SIMD128-NEXT: # %bb.0: 2250; SIMD128-NEXT: i8x16.shl $push0=, $0, $1 2251; SIMD128-NEXT: return $pop0 2252; 2253; SIMD128-FAST-LABEL: shl_v16i8: 2254; SIMD128-FAST: .functype shl_v16i8 (v128, i32) -> (v128) 2255; SIMD128-FAST-NEXT: # %bb.0: 2256; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $1 2257; SIMD128-FAST-NEXT: return $pop0 2258; 2259; NO-SIMD128-LABEL: shl_v16i8: 2260; NO-SIMD128: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2261; NO-SIMD128-NEXT: # %bb.0: 2262; NO-SIMD128-NEXT: i32.const $push0=, 255 2263; NO-SIMD128-NEXT: i32.and $push18=, $17, $pop0 2264; NO-SIMD128-NEXT: local.tee $push17=, $17=, $pop18 2265; NO-SIMD128-NEXT: i32.shl $push1=, $16, $pop17 2266; NO-SIMD128-NEXT: i32.store8 15($0), $pop1 2267; NO-SIMD128-NEXT: i32.shl $push2=, $15, $17 2268; NO-SIMD128-NEXT: i32.store8 14($0), $pop2 2269; NO-SIMD128-NEXT: i32.shl $push3=, $14, $17 2270; NO-SIMD128-NEXT: i32.store8 13($0), $pop3 2271; NO-SIMD128-NEXT: i32.shl $push4=, $13, $17 2272; NO-SIMD128-NEXT: i32.store8 12($0), $pop4 2273; NO-SIMD128-NEXT: i32.shl $push5=, $12, $17 2274; NO-SIMD128-NEXT: i32.store8 11($0), $pop5 2275; NO-SIMD128-NEXT: i32.shl $push6=, $11, $17 2276; NO-SIMD128-NEXT: i32.store8 10($0), $pop6 2277; NO-SIMD128-NEXT: i32.shl $push7=, $10, $17 2278; NO-SIMD128-NEXT: i32.store8 9($0), $pop7 2279; NO-SIMD128-NEXT: i32.shl $push8=, $9, $17 2280; NO-SIMD128-NEXT: i32.store8 8($0), $pop8 2281; NO-SIMD128-NEXT: i32.shl $push9=, $8, $17 2282; NO-SIMD128-NEXT: i32.store8 7($0), $pop9 2283; NO-SIMD128-NEXT: i32.shl $push10=, $7, $17 2284; NO-SIMD128-NEXT: i32.store8 6($0), $pop10 2285; NO-SIMD128-NEXT: i32.shl $push11=, $6, $17 2286; NO-SIMD128-NEXT: i32.store8 5($0), $pop11 2287; NO-SIMD128-NEXT: i32.shl $push12=, $5, $17 2288; NO-SIMD128-NEXT: i32.store8 4($0), $pop12 2289; NO-SIMD128-NEXT: i32.shl $push13=, $4, $17 2290; NO-SIMD128-NEXT: i32.store8 3($0), $pop13 2291; NO-SIMD128-NEXT: i32.shl $push14=, $3, $17 2292; NO-SIMD128-NEXT: i32.store8 2($0), $pop14 2293; NO-SIMD128-NEXT: i32.shl $push15=, $2, $17 2294; NO-SIMD128-NEXT: i32.store8 1($0), $pop15 2295; NO-SIMD128-NEXT: i32.shl $push16=, $1, $17 2296; NO-SIMD128-NEXT: i32.store8 0($0), $pop16 2297; NO-SIMD128-NEXT: return 2298; 2299; NO-SIMD128-FAST-LABEL: shl_v16i8: 2300; NO-SIMD128-FAST: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2301; NO-SIMD128-FAST-NEXT: # %bb.0: 2302; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 2303; NO-SIMD128-FAST-NEXT: i32.and $push18=, $17, $pop0 2304; NO-SIMD128-FAST-NEXT: local.tee $push17=, $17=, $pop18 2305; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $pop17 2306; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 2307; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $17 2308; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 2309; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $17 2310; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 2311; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $4, $17 2312; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop4 2313; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $5, $17 2314; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop5 2315; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $6, $17 2316; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop6 2317; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $7, $17 2318; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop7 2319; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $8, $17 2320; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop8 2321; NO-SIMD128-FAST-NEXT: i32.shl $push9=, $9, $17 2322; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop9 2323; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $10, $17 2324; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop10 2325; NO-SIMD128-FAST-NEXT: i32.shl $push11=, $11, $17 2326; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop11 2327; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $12, $17 2328; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop12 2329; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $13, $17 2330; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop13 2331; NO-SIMD128-FAST-NEXT: i32.shl $push14=, $14, $17 2332; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop14 2333; NO-SIMD128-FAST-NEXT: i32.shl $push15=, $15, $17 2334; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop15 2335; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $16, $17 2336; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop16 2337; NO-SIMD128-FAST-NEXT: return 2338 %t = insertelement <16 x i8> undef, i8 %x, i32 0 2339 %s = shufflevector <16 x i8> %t, <16 x i8> undef, 2340 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, 2341 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 2342 %a = shl <16 x i8> %v, %s 2343 ret <16 x i8> %a 2344} 2345 2346define <16 x i8> @shl_const_v16i8(<16 x i8> %v) { 2347; SIMD128-LABEL: shl_const_v16i8: 2348; SIMD128: .functype shl_const_v16i8 (v128) -> (v128) 2349; SIMD128-NEXT: # %bb.0: 2350; SIMD128-NEXT: i32.const $push0=, 5 2351; SIMD128-NEXT: i8x16.shl $push1=, $0, $pop0 2352; SIMD128-NEXT: return $pop1 2353; 2354; SIMD128-FAST-LABEL: shl_const_v16i8: 2355; SIMD128-FAST: .functype shl_const_v16i8 (v128) -> (v128) 2356; SIMD128-FAST-NEXT: # %bb.0: 2357; SIMD128-FAST-NEXT: i32.const $push1=, 5 2358; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $pop1 2359; SIMD128-FAST-NEXT: return $pop0 2360; 2361; NO-SIMD128-LABEL: shl_const_v16i8: 2362; NO-SIMD128: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2363; NO-SIMD128-NEXT: # %bb.0: 2364; NO-SIMD128-NEXT: i32.const $push0=, 5 2365; NO-SIMD128-NEXT: i32.shl $push1=, $16, $pop0 2366; NO-SIMD128-NEXT: i32.store8 15($0), $pop1 2367; NO-SIMD128-NEXT: i32.const $push31=, 5 2368; NO-SIMD128-NEXT: i32.shl $push2=, $15, $pop31 2369; NO-SIMD128-NEXT: i32.store8 14($0), $pop2 2370; NO-SIMD128-NEXT: i32.const $push30=, 5 2371; NO-SIMD128-NEXT: i32.shl $push3=, $14, $pop30 2372; NO-SIMD128-NEXT: i32.store8 13($0), $pop3 2373; NO-SIMD128-NEXT: i32.const $push29=, 5 2374; NO-SIMD128-NEXT: i32.shl $push4=, $13, $pop29 2375; NO-SIMD128-NEXT: i32.store8 12($0), $pop4 2376; NO-SIMD128-NEXT: i32.const $push28=, 5 2377; NO-SIMD128-NEXT: i32.shl $push5=, $12, $pop28 2378; NO-SIMD128-NEXT: i32.store8 11($0), $pop5 2379; NO-SIMD128-NEXT: i32.const $push27=, 5 2380; NO-SIMD128-NEXT: i32.shl $push6=, $11, $pop27 2381; NO-SIMD128-NEXT: i32.store8 10($0), $pop6 2382; NO-SIMD128-NEXT: i32.const $push26=, 5 2383; NO-SIMD128-NEXT: i32.shl $push7=, $10, $pop26 2384; NO-SIMD128-NEXT: i32.store8 9($0), $pop7 2385; NO-SIMD128-NEXT: i32.const $push25=, 5 2386; NO-SIMD128-NEXT: i32.shl $push8=, $9, $pop25 2387; NO-SIMD128-NEXT: i32.store8 8($0), $pop8 2388; NO-SIMD128-NEXT: i32.const $push24=, 5 2389; NO-SIMD128-NEXT: i32.shl $push9=, $8, $pop24 2390; NO-SIMD128-NEXT: i32.store8 7($0), $pop9 2391; NO-SIMD128-NEXT: i32.const $push23=, 5 2392; NO-SIMD128-NEXT: i32.shl $push10=, $7, $pop23 2393; NO-SIMD128-NEXT: i32.store8 6($0), $pop10 2394; NO-SIMD128-NEXT: i32.const $push22=, 5 2395; NO-SIMD128-NEXT: i32.shl $push11=, $6, $pop22 2396; NO-SIMD128-NEXT: i32.store8 5($0), $pop11 2397; NO-SIMD128-NEXT: i32.const $push21=, 5 2398; NO-SIMD128-NEXT: i32.shl $push12=, $5, $pop21 2399; NO-SIMD128-NEXT: i32.store8 4($0), $pop12 2400; NO-SIMD128-NEXT: i32.const $push20=, 5 2401; NO-SIMD128-NEXT: i32.shl $push13=, $4, $pop20 2402; NO-SIMD128-NEXT: i32.store8 3($0), $pop13 2403; NO-SIMD128-NEXT: i32.const $push19=, 5 2404; NO-SIMD128-NEXT: i32.shl $push14=, $3, $pop19 2405; NO-SIMD128-NEXT: i32.store8 2($0), $pop14 2406; NO-SIMD128-NEXT: i32.const $push18=, 5 2407; NO-SIMD128-NEXT: i32.shl $push15=, $2, $pop18 2408; NO-SIMD128-NEXT: i32.store8 1($0), $pop15 2409; NO-SIMD128-NEXT: i32.const $push17=, 5 2410; NO-SIMD128-NEXT: i32.shl $push16=, $1, $pop17 2411; NO-SIMD128-NEXT: i32.store8 0($0), $pop16 2412; NO-SIMD128-NEXT: return 2413; 2414; NO-SIMD128-FAST-LABEL: shl_const_v16i8: 2415; NO-SIMD128-FAST: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2416; NO-SIMD128-FAST-NEXT: # %bb.0: 2417; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5 2418; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0 2419; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1 2420; NO-SIMD128-FAST-NEXT: i32.const $push31=, 5 2421; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop31 2422; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2 2423; NO-SIMD128-FAST-NEXT: i32.const $push30=, 5 2424; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop30 2425; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 2426; NO-SIMD128-FAST-NEXT: i32.const $push29=, 5 2427; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $4, $pop29 2428; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop4 2429; NO-SIMD128-FAST-NEXT: i32.const $push28=, 5 2430; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $5, $pop28 2431; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop5 2432; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5 2433; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $6, $pop27 2434; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop6 2435; NO-SIMD128-FAST-NEXT: i32.const $push26=, 5 2436; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $7, $pop26 2437; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop7 2438; NO-SIMD128-FAST-NEXT: i32.const $push25=, 5 2439; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $8, $pop25 2440; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop8 2441; NO-SIMD128-FAST-NEXT: i32.const $push24=, 5 2442; NO-SIMD128-FAST-NEXT: i32.shl $push9=, $9, $pop24 2443; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop9 2444; NO-SIMD128-FAST-NEXT: i32.const $push23=, 5 2445; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $10, $pop23 2446; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop10 2447; NO-SIMD128-FAST-NEXT: i32.const $push22=, 5 2448; NO-SIMD128-FAST-NEXT: i32.shl $push11=, $11, $pop22 2449; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop11 2450; NO-SIMD128-FAST-NEXT: i32.const $push21=, 5 2451; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $12, $pop21 2452; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop12 2453; NO-SIMD128-FAST-NEXT: i32.const $push20=, 5 2454; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $13, $pop20 2455; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop13 2456; NO-SIMD128-FAST-NEXT: i32.const $push19=, 5 2457; NO-SIMD128-FAST-NEXT: i32.shl $push14=, $14, $pop19 2458; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop14 2459; NO-SIMD128-FAST-NEXT: i32.const $push18=, 5 2460; NO-SIMD128-FAST-NEXT: i32.shl $push15=, $15, $pop18 2461; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop15 2462; NO-SIMD128-FAST-NEXT: i32.const $push17=, 5 2463; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $16, $pop17 2464; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop16 2465; NO-SIMD128-FAST-NEXT: return 2466 %a = shl <16 x i8> %v, 2467 <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, 2468 i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> 2469 ret <16 x i8> %a 2470} 2471 2472define <16 x i8> @shl_vec_v16i8(<16 x i8> %v, <16 x i8> %x) { 2473; SIMD128-LABEL: shl_vec_v16i8: 2474; SIMD128: .functype shl_vec_v16i8 (v128, v128) -> (v128) 2475; SIMD128-NEXT: # %bb.0: 2476; SIMD128-NEXT: i8x16.extract_lane_u $push7=, $0, 0 2477; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0 2478; SIMD128-NEXT: i32.const $push1=, 7 2479; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 2480; SIMD128-NEXT: i32.shl $push8=, $pop7, $pop6 2481; SIMD128-NEXT: i8x16.splat $push9=, $pop8 2482; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $0, 1 2483; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 2484; SIMD128-NEXT: i32.const $push95=, 7 2485; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95 2486; SIMD128-NEXT: i32.shl $push4=, $pop3, $pop2 2487; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4 2488; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 2 2489; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2 2490; SIMD128-NEXT: i32.const $push94=, 7 2491; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94 2492; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12 2493; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14 2494; SIMD128-NEXT: i8x16.extract_lane_u $push18=, $0, 3 2495; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3 2496; SIMD128-NEXT: i32.const $push93=, 7 2497; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93 2498; SIMD128-NEXT: i32.shl $push19=, $pop18, $pop17 2499; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19 2500; SIMD128-NEXT: i8x16.extract_lane_u $push23=, $0, 4 2501; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4 2502; SIMD128-NEXT: i32.const $push92=, 7 2503; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92 2504; SIMD128-NEXT: i32.shl $push24=, $pop23, $pop22 2505; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24 2506; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $0, 5 2507; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5 2508; SIMD128-NEXT: i32.const $push91=, 7 2509; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91 2510; SIMD128-NEXT: i32.shl $push29=, $pop28, $pop27 2511; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29 2512; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 6 2513; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6 2514; SIMD128-NEXT: i32.const $push90=, 7 2515; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90 2516; SIMD128-NEXT: i32.shl $push34=, $pop33, $pop32 2517; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34 2518; SIMD128-NEXT: i8x16.extract_lane_u $push38=, $0, 7 2519; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7 2520; SIMD128-NEXT: i32.const $push89=, 7 2521; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89 2522; SIMD128-NEXT: i32.shl $push39=, $pop38, $pop37 2523; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39 2524; SIMD128-NEXT: i8x16.extract_lane_u $push43=, $0, 8 2525; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8 2526; SIMD128-NEXT: i32.const $push88=, 7 2527; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88 2528; SIMD128-NEXT: i32.shl $push44=, $pop43, $pop42 2529; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44 2530; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $0, 9 2531; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9 2532; SIMD128-NEXT: i32.const $push87=, 7 2533; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87 2534; SIMD128-NEXT: i32.shl $push49=, $pop48, $pop47 2535; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49 2536; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 10 2537; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10 2538; SIMD128-NEXT: i32.const $push86=, 7 2539; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86 2540; SIMD128-NEXT: i32.shl $push54=, $pop53, $pop52 2541; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54 2542; SIMD128-NEXT: i8x16.extract_lane_u $push58=, $0, 11 2543; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11 2544; SIMD128-NEXT: i32.const $push85=, 7 2545; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85 2546; SIMD128-NEXT: i32.shl $push59=, $pop58, $pop57 2547; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59 2548; SIMD128-NEXT: i8x16.extract_lane_u $push63=, $0, 12 2549; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12 2550; SIMD128-NEXT: i32.const $push84=, 7 2551; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84 2552; SIMD128-NEXT: i32.shl $push64=, $pop63, $pop62 2553; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64 2554; SIMD128-NEXT: i8x16.extract_lane_u $push68=, $0, 13 2555; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13 2556; SIMD128-NEXT: i32.const $push83=, 7 2557; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83 2558; SIMD128-NEXT: i32.shl $push69=, $pop68, $pop67 2559; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69 2560; SIMD128-NEXT: i8x16.extract_lane_u $push73=, $0, 14 2561; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14 2562; SIMD128-NEXT: i32.const $push82=, 7 2563; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82 2564; SIMD128-NEXT: i32.shl $push74=, $pop73, $pop72 2565; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74 2566; SIMD128-NEXT: i8x16.extract_lane_u $push78=, $0, 15 2567; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15 2568; SIMD128-NEXT: i32.const $push81=, 7 2569; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81 2570; SIMD128-NEXT: i32.shl $push79=, $pop78, $pop77 2571; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79 2572; SIMD128-NEXT: return $pop80 2573; 2574; SIMD128-FAST-LABEL: shl_vec_v16i8: 2575; SIMD128-FAST: .functype shl_vec_v16i8 (v128, v128) -> (v128) 2576; SIMD128-FAST-NEXT: # %bb.0: 2577; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push8=, $0, 0 2578; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0 2579; SIMD128-FAST-NEXT: i32.const $push2=, 7 2580; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 2581; SIMD128-FAST-NEXT: i32.shl $push9=, $pop8, $pop7 2582; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9 2583; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $0, 1 2584; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 2585; SIMD128-FAST-NEXT: i32.const $push95=, 7 2586; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95 2587; SIMD128-FAST-NEXT: i32.shl $push5=, $pop4, $pop3 2588; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5 2589; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 2 2590; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2 2591; SIMD128-FAST-NEXT: i32.const $push94=, 7 2592; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94 2593; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13 2594; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15 2595; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push19=, $0, 3 2596; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3 2597; SIMD128-FAST-NEXT: i32.const $push93=, 7 2598; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93 2599; SIMD128-FAST-NEXT: i32.shl $push20=, $pop19, $pop18 2600; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20 2601; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push24=, $0, 4 2602; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4 2603; SIMD128-FAST-NEXT: i32.const $push92=, 7 2604; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92 2605; SIMD128-FAST-NEXT: i32.shl $push25=, $pop24, $pop23 2606; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25 2607; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $0, 5 2608; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5 2609; SIMD128-FAST-NEXT: i32.const $push91=, 7 2610; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91 2611; SIMD128-FAST-NEXT: i32.shl $push30=, $pop29, $pop28 2612; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30 2613; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 6 2614; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6 2615; SIMD128-FAST-NEXT: i32.const $push90=, 7 2616; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90 2617; SIMD128-FAST-NEXT: i32.shl $push35=, $pop34, $pop33 2618; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35 2619; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push39=, $0, 7 2620; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7 2621; SIMD128-FAST-NEXT: i32.const $push89=, 7 2622; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89 2623; SIMD128-FAST-NEXT: i32.shl $push40=, $pop39, $pop38 2624; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40 2625; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push44=, $0, 8 2626; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8 2627; SIMD128-FAST-NEXT: i32.const $push88=, 7 2628; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88 2629; SIMD128-FAST-NEXT: i32.shl $push45=, $pop44, $pop43 2630; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45 2631; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $0, 9 2632; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9 2633; SIMD128-FAST-NEXT: i32.const $push87=, 7 2634; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87 2635; SIMD128-FAST-NEXT: i32.shl $push50=, $pop49, $pop48 2636; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50 2637; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 10 2638; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10 2639; SIMD128-FAST-NEXT: i32.const $push86=, 7 2640; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86 2641; SIMD128-FAST-NEXT: i32.shl $push55=, $pop54, $pop53 2642; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55 2643; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push59=, $0, 11 2644; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11 2645; SIMD128-FAST-NEXT: i32.const $push85=, 7 2646; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85 2647; SIMD128-FAST-NEXT: i32.shl $push60=, $pop59, $pop58 2648; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60 2649; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push64=, $0, 12 2650; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12 2651; SIMD128-FAST-NEXT: i32.const $push84=, 7 2652; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84 2653; SIMD128-FAST-NEXT: i32.shl $push65=, $pop64, $pop63 2654; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65 2655; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push69=, $0, 13 2656; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13 2657; SIMD128-FAST-NEXT: i32.const $push83=, 7 2658; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83 2659; SIMD128-FAST-NEXT: i32.shl $push70=, $pop69, $pop68 2660; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70 2661; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push74=, $0, 14 2662; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14 2663; SIMD128-FAST-NEXT: i32.const $push82=, 7 2664; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82 2665; SIMD128-FAST-NEXT: i32.shl $push75=, $pop74, $pop73 2666; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75 2667; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push79=, $0, 15 2668; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15 2669; SIMD128-FAST-NEXT: i32.const $push81=, 7 2670; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81 2671; SIMD128-FAST-NEXT: i32.shl $push80=, $pop79, $pop78 2672; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80 2673; SIMD128-FAST-NEXT: return $pop0 2674; 2675; NO-SIMD128-LABEL: shl_vec_v16i8: 2676; 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) -> () 2677; NO-SIMD128-NEXT: # %bb.0: 2678; NO-SIMD128-NEXT: i32.const $push0=, 255 2679; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop0 2680; NO-SIMD128-NEXT: i32.shl $push2=, $16, $pop1 2681; NO-SIMD128-NEXT: i32.store8 15($0), $pop2 2682; NO-SIMD128-NEXT: i32.const $push47=, 255 2683; NO-SIMD128-NEXT: i32.and $push3=, $31, $pop47 2684; NO-SIMD128-NEXT: i32.shl $push4=, $15, $pop3 2685; NO-SIMD128-NEXT: i32.store8 14($0), $pop4 2686; NO-SIMD128-NEXT: i32.const $push46=, 255 2687; NO-SIMD128-NEXT: i32.and $push5=, $30, $pop46 2688; NO-SIMD128-NEXT: i32.shl $push6=, $14, $pop5 2689; NO-SIMD128-NEXT: i32.store8 13($0), $pop6 2690; NO-SIMD128-NEXT: i32.const $push45=, 255 2691; NO-SIMD128-NEXT: i32.and $push7=, $29, $pop45 2692; NO-SIMD128-NEXT: i32.shl $push8=, $13, $pop7 2693; NO-SIMD128-NEXT: i32.store8 12($0), $pop8 2694; NO-SIMD128-NEXT: i32.const $push44=, 255 2695; NO-SIMD128-NEXT: i32.and $push9=, $28, $pop44 2696; NO-SIMD128-NEXT: i32.shl $push10=, $12, $pop9 2697; NO-SIMD128-NEXT: i32.store8 11($0), $pop10 2698; NO-SIMD128-NEXT: i32.const $push43=, 255 2699; NO-SIMD128-NEXT: i32.and $push11=, $27, $pop43 2700; NO-SIMD128-NEXT: i32.shl $push12=, $11, $pop11 2701; NO-SIMD128-NEXT: i32.store8 10($0), $pop12 2702; NO-SIMD128-NEXT: i32.const $push42=, 255 2703; NO-SIMD128-NEXT: i32.and $push13=, $26, $pop42 2704; NO-SIMD128-NEXT: i32.shl $push14=, $10, $pop13 2705; NO-SIMD128-NEXT: i32.store8 9($0), $pop14 2706; NO-SIMD128-NEXT: i32.const $push41=, 255 2707; NO-SIMD128-NEXT: i32.and $push15=, $25, $pop41 2708; NO-SIMD128-NEXT: i32.shl $push16=, $9, $pop15 2709; NO-SIMD128-NEXT: i32.store8 8($0), $pop16 2710; NO-SIMD128-NEXT: i32.const $push40=, 255 2711; NO-SIMD128-NEXT: i32.and $push17=, $24, $pop40 2712; NO-SIMD128-NEXT: i32.shl $push18=, $8, $pop17 2713; NO-SIMD128-NEXT: i32.store8 7($0), $pop18 2714; NO-SIMD128-NEXT: i32.const $push39=, 255 2715; NO-SIMD128-NEXT: i32.and $push19=, $23, $pop39 2716; NO-SIMD128-NEXT: i32.shl $push20=, $7, $pop19 2717; NO-SIMD128-NEXT: i32.store8 6($0), $pop20 2718; NO-SIMD128-NEXT: i32.const $push38=, 255 2719; NO-SIMD128-NEXT: i32.and $push21=, $22, $pop38 2720; NO-SIMD128-NEXT: i32.shl $push22=, $6, $pop21 2721; NO-SIMD128-NEXT: i32.store8 5($0), $pop22 2722; NO-SIMD128-NEXT: i32.const $push37=, 255 2723; NO-SIMD128-NEXT: i32.and $push23=, $21, $pop37 2724; NO-SIMD128-NEXT: i32.shl $push24=, $5, $pop23 2725; NO-SIMD128-NEXT: i32.store8 4($0), $pop24 2726; NO-SIMD128-NEXT: i32.const $push36=, 255 2727; NO-SIMD128-NEXT: i32.and $push25=, $20, $pop36 2728; NO-SIMD128-NEXT: i32.shl $push26=, $4, $pop25 2729; NO-SIMD128-NEXT: i32.store8 3($0), $pop26 2730; NO-SIMD128-NEXT: i32.const $push35=, 255 2731; NO-SIMD128-NEXT: i32.and $push27=, $19, $pop35 2732; NO-SIMD128-NEXT: i32.shl $push28=, $3, $pop27 2733; NO-SIMD128-NEXT: i32.store8 2($0), $pop28 2734; NO-SIMD128-NEXT: i32.const $push34=, 255 2735; NO-SIMD128-NEXT: i32.and $push29=, $18, $pop34 2736; NO-SIMD128-NEXT: i32.shl $push30=, $2, $pop29 2737; NO-SIMD128-NEXT: i32.store8 1($0), $pop30 2738; NO-SIMD128-NEXT: i32.const $push33=, 255 2739; NO-SIMD128-NEXT: i32.and $push31=, $17, $pop33 2740; NO-SIMD128-NEXT: i32.shl $push32=, $1, $pop31 2741; NO-SIMD128-NEXT: i32.store8 0($0), $pop32 2742; NO-SIMD128-NEXT: return 2743; 2744; NO-SIMD128-FAST-LABEL: shl_vec_v16i8: 2745; 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) -> () 2746; NO-SIMD128-FAST-NEXT: # %bb.0: 2747; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 2748; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop0 2749; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $pop1 2750; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 2751; NO-SIMD128-FAST-NEXT: i32.const $push47=, 255 2752; NO-SIMD128-FAST-NEXT: i32.and $push3=, $18, $pop47 2753; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $2, $pop3 2754; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 2755; NO-SIMD128-FAST-NEXT: i32.const $push46=, 255 2756; NO-SIMD128-FAST-NEXT: i32.and $push5=, $19, $pop46 2757; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $3, $pop5 2758; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 2759; NO-SIMD128-FAST-NEXT: i32.const $push45=, 255 2760; NO-SIMD128-FAST-NEXT: i32.and $push7=, $20, $pop45 2761; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $4, $pop7 2762; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop8 2763; NO-SIMD128-FAST-NEXT: i32.const $push44=, 255 2764; NO-SIMD128-FAST-NEXT: i32.and $push9=, $21, $pop44 2765; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $5, $pop9 2766; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop10 2767; NO-SIMD128-FAST-NEXT: i32.const $push43=, 255 2768; NO-SIMD128-FAST-NEXT: i32.and $push11=, $22, $pop43 2769; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $6, $pop11 2770; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop12 2771; NO-SIMD128-FAST-NEXT: i32.const $push42=, 255 2772; NO-SIMD128-FAST-NEXT: i32.and $push13=, $23, $pop42 2773; NO-SIMD128-FAST-NEXT: i32.shl $push14=, $7, $pop13 2774; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop14 2775; NO-SIMD128-FAST-NEXT: i32.const $push41=, 255 2776; NO-SIMD128-FAST-NEXT: i32.and $push15=, $24, $pop41 2777; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $pop15 2778; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop16 2779; NO-SIMD128-FAST-NEXT: i32.const $push40=, 255 2780; NO-SIMD128-FAST-NEXT: i32.and $push17=, $25, $pop40 2781; NO-SIMD128-FAST-NEXT: i32.shl $push18=, $9, $pop17 2782; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop18 2783; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255 2784; NO-SIMD128-FAST-NEXT: i32.and $push19=, $26, $pop39 2785; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $10, $pop19 2786; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop20 2787; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255 2788; NO-SIMD128-FAST-NEXT: i32.and $push21=, $27, $pop38 2789; NO-SIMD128-FAST-NEXT: i32.shl $push22=, $11, $pop21 2790; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop22 2791; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255 2792; NO-SIMD128-FAST-NEXT: i32.and $push23=, $28, $pop37 2793; NO-SIMD128-FAST-NEXT: i32.shl $push24=, $12, $pop23 2794; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop24 2795; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255 2796; NO-SIMD128-FAST-NEXT: i32.and $push25=, $29, $pop36 2797; NO-SIMD128-FAST-NEXT: i32.shl $push26=, $13, $pop25 2798; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop26 2799; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255 2800; NO-SIMD128-FAST-NEXT: i32.and $push27=, $30, $pop35 2801; NO-SIMD128-FAST-NEXT: i32.shl $push28=, $14, $pop27 2802; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop28 2803; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255 2804; NO-SIMD128-FAST-NEXT: i32.and $push29=, $31, $pop34 2805; NO-SIMD128-FAST-NEXT: i32.shl $push30=, $15, $pop29 2806; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop30 2807; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255 2808; NO-SIMD128-FAST-NEXT: i32.and $push31=, $32, $pop33 2809; NO-SIMD128-FAST-NEXT: i32.shl $push32=, $16, $pop31 2810; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop32 2811; NO-SIMD128-FAST-NEXT: return 2812 %a = shl <16 x i8> %v, %x 2813 ret <16 x i8> %a 2814} 2815 2816define <16 x i8> @shr_s_v16i8(<16 x i8> %v, i8 %x) { 2817; SIMD128-LABEL: shr_s_v16i8: 2818; SIMD128: .functype shr_s_v16i8 (v128, i32) -> (v128) 2819; SIMD128-NEXT: # %bb.0: 2820; SIMD128-NEXT: i8x16.shr_s $push0=, $0, $1 2821; SIMD128-NEXT: return $pop0 2822; 2823; SIMD128-FAST-LABEL: shr_s_v16i8: 2824; SIMD128-FAST: .functype shr_s_v16i8 (v128, i32) -> (v128) 2825; SIMD128-FAST-NEXT: # %bb.0: 2826; SIMD128-FAST-NEXT: i8x16.shr_s $push0=, $0, $1 2827; SIMD128-FAST-NEXT: return $pop0 2828; 2829; NO-SIMD128-LABEL: shr_s_v16i8: 2830; NO-SIMD128: .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 2831; NO-SIMD128-NEXT: # %bb.0: 2832; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 2833; NO-SIMD128-NEXT: i32.const $push0=, 255 2834; NO-SIMD128-NEXT: i32.and $push34=, $17, $pop0 2835; NO-SIMD128-NEXT: local.tee $push33=, $17=, $pop34 2836; NO-SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop33 2837; NO-SIMD128-NEXT: i32.store8 15($0), $pop2 2838; NO-SIMD128-NEXT: i32.extend8_s $push3=, $15 2839; NO-SIMD128-NEXT: i32.shr_s $push4=, $pop3, $17 2840; NO-SIMD128-NEXT: i32.store8 14($0), $pop4 2841; NO-SIMD128-NEXT: i32.extend8_s $push5=, $14 2842; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $17 2843; NO-SIMD128-NEXT: i32.store8 13($0), $pop6 2844; NO-SIMD128-NEXT: i32.extend8_s $push7=, $13 2845; NO-SIMD128-NEXT: i32.shr_s $push8=, $pop7, $17 2846; NO-SIMD128-NEXT: i32.store8 12($0), $pop8 2847; NO-SIMD128-NEXT: i32.extend8_s $push9=, $12 2848; NO-SIMD128-NEXT: i32.shr_s $push10=, $pop9, $17 2849; NO-SIMD128-NEXT: i32.store8 11($0), $pop10 2850; NO-SIMD128-NEXT: i32.extend8_s $push11=, $11 2851; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $17 2852; NO-SIMD128-NEXT: i32.store8 10($0), $pop12 2853; NO-SIMD128-NEXT: i32.extend8_s $push13=, $10 2854; NO-SIMD128-NEXT: i32.shr_s $push14=, $pop13, $17 2855; NO-SIMD128-NEXT: i32.store8 9($0), $pop14 2856; NO-SIMD128-NEXT: i32.extend8_s $push15=, $9 2857; NO-SIMD128-NEXT: i32.shr_s $push16=, $pop15, $17 2858; NO-SIMD128-NEXT: i32.store8 8($0), $pop16 2859; NO-SIMD128-NEXT: i32.extend8_s $push17=, $8 2860; NO-SIMD128-NEXT: i32.shr_s $push18=, $pop17, $17 2861; NO-SIMD128-NEXT: i32.store8 7($0), $pop18 2862; NO-SIMD128-NEXT: i32.extend8_s $push19=, $7 2863; NO-SIMD128-NEXT: i32.shr_s $push20=, $pop19, $17 2864; NO-SIMD128-NEXT: i32.store8 6($0), $pop20 2865; NO-SIMD128-NEXT: i32.extend8_s $push21=, $6 2866; NO-SIMD128-NEXT: i32.shr_s $push22=, $pop21, $17 2867; NO-SIMD128-NEXT: i32.store8 5($0), $pop22 2868; NO-SIMD128-NEXT: i32.extend8_s $push23=, $5 2869; NO-SIMD128-NEXT: i32.shr_s $push24=, $pop23, $17 2870; NO-SIMD128-NEXT: i32.store8 4($0), $pop24 2871; NO-SIMD128-NEXT: i32.extend8_s $push25=, $4 2872; NO-SIMD128-NEXT: i32.shr_s $push26=, $pop25, $17 2873; NO-SIMD128-NEXT: i32.store8 3($0), $pop26 2874; NO-SIMD128-NEXT: i32.extend8_s $push27=, $3 2875; NO-SIMD128-NEXT: i32.shr_s $push28=, $pop27, $17 2876; NO-SIMD128-NEXT: i32.store8 2($0), $pop28 2877; NO-SIMD128-NEXT: i32.extend8_s $push29=, $2 2878; NO-SIMD128-NEXT: i32.shr_s $push30=, $pop29, $17 2879; NO-SIMD128-NEXT: i32.store8 1($0), $pop30 2880; NO-SIMD128-NEXT: i32.extend8_s $push31=, $1 2881; NO-SIMD128-NEXT: i32.shr_s $push32=, $pop31, $17 2882; NO-SIMD128-NEXT: i32.store8 0($0), $pop32 2883; NO-SIMD128-NEXT: return 2884; 2885; NO-SIMD128-FAST-LABEL: shr_s_v16i8: 2886; 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) -> () 2887; NO-SIMD128-FAST-NEXT: # %bb.0: 2888; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 2889; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 2890; NO-SIMD128-FAST-NEXT: i32.and $push34=, $17, $pop0 2891; NO-SIMD128-FAST-NEXT: local.tee $push33=, $1=, $pop34 2892; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $pop1, $pop33 2893; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 2894; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $2 2895; NO-SIMD128-FAST-NEXT: i32.shr_s $push4=, $pop3, $1 2896; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 2897; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $3 2898; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $1 2899; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 2900; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $4 2901; NO-SIMD128-FAST-NEXT: i32.shr_s $push8=, $pop7, $1 2902; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop8 2903; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $5 2904; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $pop9, $1 2905; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop10 2906; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $6 2907; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $1 2908; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop12 2909; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $7 2910; NO-SIMD128-FAST-NEXT: i32.shr_s $push14=, $pop13, $1 2911; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop14 2912; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $8 2913; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $pop15, $1 2914; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop16 2915; NO-SIMD128-FAST-NEXT: i32.extend8_s $push17=, $9 2916; NO-SIMD128-FAST-NEXT: i32.shr_s $push18=, $pop17, $1 2917; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop18 2918; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $10 2919; NO-SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $1 2920; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop20 2921; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $11 2922; NO-SIMD128-FAST-NEXT: i32.shr_s $push22=, $pop21, $1 2923; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop22 2924; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $12 2925; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $1 2926; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop24 2927; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $13 2928; NO-SIMD128-FAST-NEXT: i32.shr_s $push26=, $pop25, $1 2929; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop26 2930; NO-SIMD128-FAST-NEXT: i32.extend8_s $push27=, $14 2931; NO-SIMD128-FAST-NEXT: i32.shr_s $push28=, $pop27, $1 2932; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop28 2933; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $15 2934; NO-SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $1 2935; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop30 2936; NO-SIMD128-FAST-NEXT: i32.extend8_s $push31=, $16 2937; NO-SIMD128-FAST-NEXT: i32.shr_s $push32=, $pop31, $1 2938; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop32 2939; NO-SIMD128-FAST-NEXT: return 2940 %t = insertelement <16 x i8> undef, i8 %x, i32 0 2941 %s = shufflevector <16 x i8> %t, <16 x i8> undef, 2942 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, 2943 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 2944 %a = ashr <16 x i8> %v, %s 2945 ret <16 x i8> %a 2946} 2947 2948define <16 x i8> @shr_s_vec_v16i8(<16 x i8> %v, <16 x i8> %x) { 2949; SIMD128-LABEL: shr_s_vec_v16i8: 2950; SIMD128: .functype shr_s_vec_v16i8 (v128, v128) -> (v128) 2951; SIMD128-NEXT: # %bb.0: 2952; SIMD128-NEXT: i8x16.extract_lane_s $push7=, $0, 0 2953; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0 2954; SIMD128-NEXT: i32.const $push1=, 7 2955; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 2956; SIMD128-NEXT: i32.shr_s $push8=, $pop7, $pop6 2957; SIMD128-NEXT: i8x16.splat $push9=, $pop8 2958; SIMD128-NEXT: i8x16.extract_lane_s $push3=, $0, 1 2959; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 2960; SIMD128-NEXT: i32.const $push95=, 7 2961; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95 2962; SIMD128-NEXT: i32.shr_s $push4=, $pop3, $pop2 2963; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4 2964; SIMD128-NEXT: i8x16.extract_lane_s $push13=, $0, 2 2965; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2 2966; SIMD128-NEXT: i32.const $push94=, 7 2967; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94 2968; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12 2969; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14 2970; SIMD128-NEXT: i8x16.extract_lane_s $push18=, $0, 3 2971; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3 2972; SIMD128-NEXT: i32.const $push93=, 7 2973; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93 2974; SIMD128-NEXT: i32.shr_s $push19=, $pop18, $pop17 2975; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19 2976; SIMD128-NEXT: i8x16.extract_lane_s $push23=, $0, 4 2977; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4 2978; SIMD128-NEXT: i32.const $push92=, 7 2979; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92 2980; SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22 2981; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24 2982; SIMD128-NEXT: i8x16.extract_lane_s $push28=, $0, 5 2983; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5 2984; SIMD128-NEXT: i32.const $push91=, 7 2985; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91 2986; SIMD128-NEXT: i32.shr_s $push29=, $pop28, $pop27 2987; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29 2988; SIMD128-NEXT: i8x16.extract_lane_s $push33=, $0, 6 2989; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6 2990; SIMD128-NEXT: i32.const $push90=, 7 2991; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90 2992; SIMD128-NEXT: i32.shr_s $push34=, $pop33, $pop32 2993; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34 2994; SIMD128-NEXT: i8x16.extract_lane_s $push38=, $0, 7 2995; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7 2996; SIMD128-NEXT: i32.const $push89=, 7 2997; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89 2998; SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37 2999; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39 3000; SIMD128-NEXT: i8x16.extract_lane_s $push43=, $0, 8 3001; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8 3002; SIMD128-NEXT: i32.const $push88=, 7 3003; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88 3004; SIMD128-NEXT: i32.shr_s $push44=, $pop43, $pop42 3005; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44 3006; SIMD128-NEXT: i8x16.extract_lane_s $push48=, $0, 9 3007; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9 3008; SIMD128-NEXT: i32.const $push87=, 7 3009; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87 3010; SIMD128-NEXT: i32.shr_s $push49=, $pop48, $pop47 3011; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49 3012; SIMD128-NEXT: i8x16.extract_lane_s $push53=, $0, 10 3013; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10 3014; SIMD128-NEXT: i32.const $push86=, 7 3015; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86 3016; SIMD128-NEXT: i32.shr_s $push54=, $pop53, $pop52 3017; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54 3018; SIMD128-NEXT: i8x16.extract_lane_s $push58=, $0, 11 3019; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11 3020; SIMD128-NEXT: i32.const $push85=, 7 3021; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85 3022; SIMD128-NEXT: i32.shr_s $push59=, $pop58, $pop57 3023; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59 3024; SIMD128-NEXT: i8x16.extract_lane_s $push63=, $0, 12 3025; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12 3026; SIMD128-NEXT: i32.const $push84=, 7 3027; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84 3028; SIMD128-NEXT: i32.shr_s $push64=, $pop63, $pop62 3029; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64 3030; SIMD128-NEXT: i8x16.extract_lane_s $push68=, $0, 13 3031; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13 3032; SIMD128-NEXT: i32.const $push83=, 7 3033; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83 3034; SIMD128-NEXT: i32.shr_s $push69=, $pop68, $pop67 3035; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69 3036; SIMD128-NEXT: i8x16.extract_lane_s $push73=, $0, 14 3037; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14 3038; SIMD128-NEXT: i32.const $push82=, 7 3039; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82 3040; SIMD128-NEXT: i32.shr_s $push74=, $pop73, $pop72 3041; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74 3042; SIMD128-NEXT: i8x16.extract_lane_s $push78=, $0, 15 3043; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15 3044; SIMD128-NEXT: i32.const $push81=, 7 3045; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81 3046; SIMD128-NEXT: i32.shr_s $push79=, $pop78, $pop77 3047; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79 3048; SIMD128-NEXT: return $pop80 3049; 3050; SIMD128-FAST-LABEL: shr_s_vec_v16i8: 3051; SIMD128-FAST: .functype shr_s_vec_v16i8 (v128, v128) -> (v128) 3052; SIMD128-FAST-NEXT: # %bb.0: 3053; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push8=, $0, 0 3054; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0 3055; SIMD128-FAST-NEXT: i32.const $push2=, 7 3056; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 3057; SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7 3058; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9 3059; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push4=, $0, 1 3060; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 3061; SIMD128-FAST-NEXT: i32.const $push95=, 7 3062; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95 3063; SIMD128-FAST-NEXT: i32.shr_s $push5=, $pop4, $pop3 3064; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5 3065; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push14=, $0, 2 3066; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2 3067; SIMD128-FAST-NEXT: i32.const $push94=, 7 3068; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94 3069; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 3070; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15 3071; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push19=, $0, 3 3072; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3 3073; SIMD128-FAST-NEXT: i32.const $push93=, 7 3074; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93 3075; SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $pop18 3076; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20 3077; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push24=, $0, 4 3078; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4 3079; SIMD128-FAST-NEXT: i32.const $push92=, 7 3080; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92 3081; SIMD128-FAST-NEXT: i32.shr_s $push25=, $pop24, $pop23 3082; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25 3083; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push29=, $0, 5 3084; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5 3085; SIMD128-FAST-NEXT: i32.const $push91=, 7 3086; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91 3087; SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28 3088; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30 3089; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push34=, $0, 6 3090; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6 3091; SIMD128-FAST-NEXT: i32.const $push90=, 7 3092; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90 3093; SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33 3094; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35 3095; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push39=, $0, 7 3096; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7 3097; SIMD128-FAST-NEXT: i32.const $push89=, 7 3098; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89 3099; SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38 3100; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40 3101; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push44=, $0, 8 3102; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8 3103; SIMD128-FAST-NEXT: i32.const $push88=, 7 3104; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88 3105; SIMD128-FAST-NEXT: i32.shr_s $push45=, $pop44, $pop43 3106; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45 3107; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push49=, $0, 9 3108; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9 3109; SIMD128-FAST-NEXT: i32.const $push87=, 7 3110; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87 3111; SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $pop48 3112; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50 3113; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push54=, $0, 10 3114; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10 3115; SIMD128-FAST-NEXT: i32.const $push86=, 7 3116; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86 3117; SIMD128-FAST-NEXT: i32.shr_s $push55=, $pop54, $pop53 3118; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55 3119; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push59=, $0, 11 3120; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11 3121; SIMD128-FAST-NEXT: i32.const $push85=, 7 3122; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85 3123; SIMD128-FAST-NEXT: i32.shr_s $push60=, $pop59, $pop58 3124; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60 3125; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push64=, $0, 12 3126; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12 3127; SIMD128-FAST-NEXT: i32.const $push84=, 7 3128; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84 3129; SIMD128-FAST-NEXT: i32.shr_s $push65=, $pop64, $pop63 3130; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65 3131; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push69=, $0, 13 3132; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13 3133; SIMD128-FAST-NEXT: i32.const $push83=, 7 3134; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83 3135; SIMD128-FAST-NEXT: i32.shr_s $push70=, $pop69, $pop68 3136; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70 3137; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push74=, $0, 14 3138; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14 3139; SIMD128-FAST-NEXT: i32.const $push82=, 7 3140; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82 3141; SIMD128-FAST-NEXT: i32.shr_s $push75=, $pop74, $pop73 3142; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75 3143; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push79=, $0, 15 3144; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15 3145; SIMD128-FAST-NEXT: i32.const $push81=, 7 3146; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81 3147; SIMD128-FAST-NEXT: i32.shr_s $push80=, $pop79, $pop78 3148; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80 3149; SIMD128-FAST-NEXT: return $pop0 3150; 3151; NO-SIMD128-LABEL: shr_s_vec_v16i8: 3152; NO-SIMD128: .functype shr_s_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) -> () 3153; NO-SIMD128-NEXT: # %bb.0: 3154; NO-SIMD128-NEXT: i32.extend8_s $push2=, $16 3155; NO-SIMD128-NEXT: i32.const $push0=, 255 3156; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop0 3157; NO-SIMD128-NEXT: i32.shr_s $push3=, $pop2, $pop1 3158; NO-SIMD128-NEXT: i32.store8 15($0), $pop3 3159; NO-SIMD128-NEXT: i32.extend8_s $push5=, $15 3160; NO-SIMD128-NEXT: i32.const $push63=, 255 3161; NO-SIMD128-NEXT: i32.and $push4=, $31, $pop63 3162; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $pop4 3163; NO-SIMD128-NEXT: i32.store8 14($0), $pop6 3164; NO-SIMD128-NEXT: i32.extend8_s $push8=, $14 3165; NO-SIMD128-NEXT: i32.const $push62=, 255 3166; NO-SIMD128-NEXT: i32.and $push7=, $30, $pop62 3167; NO-SIMD128-NEXT: i32.shr_s $push9=, $pop8, $pop7 3168; NO-SIMD128-NEXT: i32.store8 13($0), $pop9 3169; NO-SIMD128-NEXT: i32.extend8_s $push11=, $13 3170; NO-SIMD128-NEXT: i32.const $push61=, 255 3171; NO-SIMD128-NEXT: i32.and $push10=, $29, $pop61 3172; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $pop10 3173; NO-SIMD128-NEXT: i32.store8 12($0), $pop12 3174; NO-SIMD128-NEXT: i32.extend8_s $push14=, $12 3175; NO-SIMD128-NEXT: i32.const $push60=, 255 3176; NO-SIMD128-NEXT: i32.and $push13=, $28, $pop60 3177; NO-SIMD128-NEXT: i32.shr_s $push15=, $pop14, $pop13 3178; NO-SIMD128-NEXT: i32.store8 11($0), $pop15 3179; NO-SIMD128-NEXT: i32.extend8_s $push17=, $11 3180; NO-SIMD128-NEXT: i32.const $push59=, 255 3181; NO-SIMD128-NEXT: i32.and $push16=, $27, $pop59 3182; NO-SIMD128-NEXT: i32.shr_s $push18=, $pop17, $pop16 3183; NO-SIMD128-NEXT: i32.store8 10($0), $pop18 3184; NO-SIMD128-NEXT: i32.extend8_s $push20=, $10 3185; NO-SIMD128-NEXT: i32.const $push58=, 255 3186; NO-SIMD128-NEXT: i32.and $push19=, $26, $pop58 3187; NO-SIMD128-NEXT: i32.shr_s $push21=, $pop20, $pop19 3188; NO-SIMD128-NEXT: i32.store8 9($0), $pop21 3189; NO-SIMD128-NEXT: i32.extend8_s $push23=, $9 3190; NO-SIMD128-NEXT: i32.const $push57=, 255 3191; NO-SIMD128-NEXT: i32.and $push22=, $25, $pop57 3192; NO-SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22 3193; NO-SIMD128-NEXT: i32.store8 8($0), $pop24 3194; NO-SIMD128-NEXT: i32.extend8_s $push26=, $8 3195; NO-SIMD128-NEXT: i32.const $push56=, 255 3196; NO-SIMD128-NEXT: i32.and $push25=, $24, $pop56 3197; NO-SIMD128-NEXT: i32.shr_s $push27=, $pop26, $pop25 3198; NO-SIMD128-NEXT: i32.store8 7($0), $pop27 3199; NO-SIMD128-NEXT: i32.extend8_s $push29=, $7 3200; NO-SIMD128-NEXT: i32.const $push55=, 255 3201; NO-SIMD128-NEXT: i32.and $push28=, $23, $pop55 3202; NO-SIMD128-NEXT: i32.shr_s $push30=, $pop29, $pop28 3203; NO-SIMD128-NEXT: i32.store8 6($0), $pop30 3204; NO-SIMD128-NEXT: i32.extend8_s $push32=, $6 3205; NO-SIMD128-NEXT: i32.const $push54=, 255 3206; NO-SIMD128-NEXT: i32.and $push31=, $22, $pop54 3207; NO-SIMD128-NEXT: i32.shr_s $push33=, $pop32, $pop31 3208; NO-SIMD128-NEXT: i32.store8 5($0), $pop33 3209; NO-SIMD128-NEXT: i32.extend8_s $push35=, $5 3210; NO-SIMD128-NEXT: i32.const $push53=, 255 3211; NO-SIMD128-NEXT: i32.and $push34=, $21, $pop53 3212; NO-SIMD128-NEXT: i32.shr_s $push36=, $pop35, $pop34 3213; NO-SIMD128-NEXT: i32.store8 4($0), $pop36 3214; NO-SIMD128-NEXT: i32.extend8_s $push38=, $4 3215; NO-SIMD128-NEXT: i32.const $push52=, 255 3216; NO-SIMD128-NEXT: i32.and $push37=, $20, $pop52 3217; NO-SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37 3218; NO-SIMD128-NEXT: i32.store8 3($0), $pop39 3219; NO-SIMD128-NEXT: i32.extend8_s $push41=, $3 3220; NO-SIMD128-NEXT: i32.const $push51=, 255 3221; NO-SIMD128-NEXT: i32.and $push40=, $19, $pop51 3222; NO-SIMD128-NEXT: i32.shr_s $push42=, $pop41, $pop40 3223; NO-SIMD128-NEXT: i32.store8 2($0), $pop42 3224; NO-SIMD128-NEXT: i32.extend8_s $push44=, $2 3225; NO-SIMD128-NEXT: i32.const $push50=, 255 3226; NO-SIMD128-NEXT: i32.and $push43=, $18, $pop50 3227; NO-SIMD128-NEXT: i32.shr_s $push45=, $pop44, $pop43 3228; NO-SIMD128-NEXT: i32.store8 1($0), $pop45 3229; NO-SIMD128-NEXT: i32.extend8_s $push47=, $1 3230; NO-SIMD128-NEXT: i32.const $push49=, 255 3231; NO-SIMD128-NEXT: i32.and $push46=, $17, $pop49 3232; NO-SIMD128-NEXT: i32.shr_s $push48=, $pop47, $pop46 3233; NO-SIMD128-NEXT: i32.store8 0($0), $pop48 3234; NO-SIMD128-NEXT: return 3235; 3236; NO-SIMD128-FAST-LABEL: shr_s_vec_v16i8: 3237; NO-SIMD128-FAST: .functype shr_s_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) -> () 3238; NO-SIMD128-FAST-NEXT: # %bb.0: 3239; NO-SIMD128-FAST-NEXT: i32.extend8_s $push2=, $1 3240; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 3241; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop0 3242; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1 3243; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 3244; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2 3245; NO-SIMD128-FAST-NEXT: i32.const $push63=, 255 3246; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop63 3247; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4 3248; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6 3249; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $3 3250; NO-SIMD128-FAST-NEXT: i32.const $push62=, 255 3251; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop62 3252; NO-SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7 3253; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9 3254; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $4 3255; NO-SIMD128-FAST-NEXT: i32.const $push61=, 255 3256; NO-SIMD128-FAST-NEXT: i32.and $push10=, $20, $pop61 3257; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $pop10 3258; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop12 3259; NO-SIMD128-FAST-NEXT: i32.extend8_s $push14=, $5 3260; NO-SIMD128-FAST-NEXT: i32.const $push60=, 255 3261; NO-SIMD128-FAST-NEXT: i32.and $push13=, $21, $pop60 3262; NO-SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 3263; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop15 3264; NO-SIMD128-FAST-NEXT: i32.extend8_s $push17=, $6 3265; NO-SIMD128-FAST-NEXT: i32.const $push59=, 255 3266; NO-SIMD128-FAST-NEXT: i32.and $push16=, $22, $pop59 3267; NO-SIMD128-FAST-NEXT: i32.shr_s $push18=, $pop17, $pop16 3268; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop18 3269; NO-SIMD128-FAST-NEXT: i32.extend8_s $push20=, $7 3270; NO-SIMD128-FAST-NEXT: i32.const $push58=, 255 3271; NO-SIMD128-FAST-NEXT: i32.and $push19=, $23, $pop58 3272; NO-SIMD128-FAST-NEXT: i32.shr_s $push21=, $pop20, $pop19 3273; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop21 3274; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $8 3275; NO-SIMD128-FAST-NEXT: i32.const $push57=, 255 3276; NO-SIMD128-FAST-NEXT: i32.and $push22=, $24, $pop57 3277; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $pop22 3278; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop24 3279; NO-SIMD128-FAST-NEXT: i32.extend8_s $push26=, $9 3280; NO-SIMD128-FAST-NEXT: i32.const $push56=, 255 3281; NO-SIMD128-FAST-NEXT: i32.and $push25=, $25, $pop56 3282; NO-SIMD128-FAST-NEXT: i32.shr_s $push27=, $pop26, $pop25 3283; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop27 3284; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $10 3285; NO-SIMD128-FAST-NEXT: i32.const $push55=, 255 3286; NO-SIMD128-FAST-NEXT: i32.and $push28=, $26, $pop55 3287; NO-SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28 3288; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop30 3289; NO-SIMD128-FAST-NEXT: i32.extend8_s $push32=, $11 3290; NO-SIMD128-FAST-NEXT: i32.const $push54=, 255 3291; NO-SIMD128-FAST-NEXT: i32.and $push31=, $27, $pop54 3292; NO-SIMD128-FAST-NEXT: i32.shr_s $push33=, $pop32, $pop31 3293; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop33 3294; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $12 3295; NO-SIMD128-FAST-NEXT: i32.const $push53=, 255 3296; NO-SIMD128-FAST-NEXT: i32.and $push34=, $28, $pop53 3297; NO-SIMD128-FAST-NEXT: i32.shr_s $push36=, $pop35, $pop34 3298; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop36 3299; NO-SIMD128-FAST-NEXT: i32.extend8_s $push38=, $13 3300; NO-SIMD128-FAST-NEXT: i32.const $push52=, 255 3301; NO-SIMD128-FAST-NEXT: i32.and $push37=, $29, $pop52 3302; NO-SIMD128-FAST-NEXT: i32.shr_s $push39=, $pop38, $pop37 3303; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop39 3304; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $14 3305; NO-SIMD128-FAST-NEXT: i32.const $push51=, 255 3306; NO-SIMD128-FAST-NEXT: i32.and $push40=, $30, $pop51 3307; NO-SIMD128-FAST-NEXT: i32.shr_s $push42=, $pop41, $pop40 3308; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop42 3309; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $15 3310; NO-SIMD128-FAST-NEXT: i32.const $push50=, 255 3311; NO-SIMD128-FAST-NEXT: i32.and $push43=, $31, $pop50 3312; NO-SIMD128-FAST-NEXT: i32.shr_s $push45=, $pop44, $pop43 3313; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop45 3314; NO-SIMD128-FAST-NEXT: i32.extend8_s $push47=, $16 3315; NO-SIMD128-FAST-NEXT: i32.const $push49=, 255 3316; NO-SIMD128-FAST-NEXT: i32.and $push46=, $32, $pop49 3317; NO-SIMD128-FAST-NEXT: i32.shr_s $push48=, $pop47, $pop46 3318; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop48 3319; NO-SIMD128-FAST-NEXT: return 3320 %a = ashr <16 x i8> %v, %x 3321 ret <16 x i8> %a 3322} 3323 3324define <16 x i8> @shr_u_v16i8(<16 x i8> %v, i8 %x) { 3325; SIMD128-LABEL: shr_u_v16i8: 3326; SIMD128: .functype shr_u_v16i8 (v128, i32) -> (v128) 3327; SIMD128-NEXT: # %bb.0: 3328; SIMD128-NEXT: i8x16.shr_u $push0=, $0, $1 3329; SIMD128-NEXT: return $pop0 3330; 3331; SIMD128-FAST-LABEL: shr_u_v16i8: 3332; SIMD128-FAST: .functype shr_u_v16i8 (v128, i32) -> (v128) 3333; SIMD128-FAST-NEXT: # %bb.0: 3334; SIMD128-FAST-NEXT: i8x16.shr_u $push0=, $0, $1 3335; SIMD128-FAST-NEXT: return $pop0 3336; 3337; NO-SIMD128-LABEL: shr_u_v16i8: 3338; NO-SIMD128: .functype shr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 3339; NO-SIMD128-NEXT: # %bb.0: 3340; NO-SIMD128-NEXT: i32.const $push0=, 255 3341; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop0 3342; NO-SIMD128-NEXT: i32.const $push50=, 255 3343; NO-SIMD128-NEXT: i32.and $push49=, $17, $pop50 3344; NO-SIMD128-NEXT: local.tee $push48=, $17=, $pop49 3345; NO-SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop48 3346; NO-SIMD128-NEXT: i32.store8 15($0), $pop2 3347; NO-SIMD128-NEXT: i32.const $push47=, 255 3348; NO-SIMD128-NEXT: i32.and $push3=, $15, $pop47 3349; NO-SIMD128-NEXT: i32.shr_u $push4=, $pop3, $17 3350; NO-SIMD128-NEXT: i32.store8 14($0), $pop4 3351; NO-SIMD128-NEXT: i32.const $push46=, 255 3352; NO-SIMD128-NEXT: i32.and $push5=, $14, $pop46 3353; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $17 3354; NO-SIMD128-NEXT: i32.store8 13($0), $pop6 3355; NO-SIMD128-NEXT: i32.const $push45=, 255 3356; NO-SIMD128-NEXT: i32.and $push7=, $13, $pop45 3357; NO-SIMD128-NEXT: i32.shr_u $push8=, $pop7, $17 3358; NO-SIMD128-NEXT: i32.store8 12($0), $pop8 3359; NO-SIMD128-NEXT: i32.const $push44=, 255 3360; NO-SIMD128-NEXT: i32.and $push9=, $12, $pop44 3361; NO-SIMD128-NEXT: i32.shr_u $push10=, $pop9, $17 3362; NO-SIMD128-NEXT: i32.store8 11($0), $pop10 3363; NO-SIMD128-NEXT: i32.const $push43=, 255 3364; NO-SIMD128-NEXT: i32.and $push11=, $11, $pop43 3365; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $17 3366; NO-SIMD128-NEXT: i32.store8 10($0), $pop12 3367; NO-SIMD128-NEXT: i32.const $push42=, 255 3368; NO-SIMD128-NEXT: i32.and $push13=, $10, $pop42 3369; NO-SIMD128-NEXT: i32.shr_u $push14=, $pop13, $17 3370; NO-SIMD128-NEXT: i32.store8 9($0), $pop14 3371; NO-SIMD128-NEXT: i32.const $push41=, 255 3372; NO-SIMD128-NEXT: i32.and $push15=, $9, $pop41 3373; NO-SIMD128-NEXT: i32.shr_u $push16=, $pop15, $17 3374; NO-SIMD128-NEXT: i32.store8 8($0), $pop16 3375; NO-SIMD128-NEXT: i32.const $push40=, 255 3376; NO-SIMD128-NEXT: i32.and $push17=, $8, $pop40 3377; NO-SIMD128-NEXT: i32.shr_u $push18=, $pop17, $17 3378; NO-SIMD128-NEXT: i32.store8 7($0), $pop18 3379; NO-SIMD128-NEXT: i32.const $push39=, 255 3380; NO-SIMD128-NEXT: i32.and $push19=, $7, $pop39 3381; NO-SIMD128-NEXT: i32.shr_u $push20=, $pop19, $17 3382; NO-SIMD128-NEXT: i32.store8 6($0), $pop20 3383; NO-SIMD128-NEXT: i32.const $push38=, 255 3384; NO-SIMD128-NEXT: i32.and $push21=, $6, $pop38 3385; NO-SIMD128-NEXT: i32.shr_u $push22=, $pop21, $17 3386; NO-SIMD128-NEXT: i32.store8 5($0), $pop22 3387; NO-SIMD128-NEXT: i32.const $push37=, 255 3388; NO-SIMD128-NEXT: i32.and $push23=, $5, $pop37 3389; NO-SIMD128-NEXT: i32.shr_u $push24=, $pop23, $17 3390; NO-SIMD128-NEXT: i32.store8 4($0), $pop24 3391; NO-SIMD128-NEXT: i32.const $push36=, 255 3392; NO-SIMD128-NEXT: i32.and $push25=, $4, $pop36 3393; NO-SIMD128-NEXT: i32.shr_u $push26=, $pop25, $17 3394; NO-SIMD128-NEXT: i32.store8 3($0), $pop26 3395; NO-SIMD128-NEXT: i32.const $push35=, 255 3396; NO-SIMD128-NEXT: i32.and $push27=, $3, $pop35 3397; NO-SIMD128-NEXT: i32.shr_u $push28=, $pop27, $17 3398; NO-SIMD128-NEXT: i32.store8 2($0), $pop28 3399; NO-SIMD128-NEXT: i32.const $push34=, 255 3400; NO-SIMD128-NEXT: i32.and $push29=, $2, $pop34 3401; NO-SIMD128-NEXT: i32.shr_u $push30=, $pop29, $17 3402; NO-SIMD128-NEXT: i32.store8 1($0), $pop30 3403; NO-SIMD128-NEXT: i32.const $push33=, 255 3404; NO-SIMD128-NEXT: i32.and $push31=, $1, $pop33 3405; NO-SIMD128-NEXT: i32.shr_u $push32=, $pop31, $17 3406; NO-SIMD128-NEXT: i32.store8 0($0), $pop32 3407; NO-SIMD128-NEXT: return 3408; 3409; NO-SIMD128-FAST-LABEL: shr_u_v16i8: 3410; NO-SIMD128-FAST: .functype shr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 3411; NO-SIMD128-FAST-NEXT: # %bb.0: 3412; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 3413; NO-SIMD128-FAST-NEXT: i32.and $push1=, $1, $pop0 3414; NO-SIMD128-FAST-NEXT: i32.const $push50=, 255 3415; NO-SIMD128-FAST-NEXT: i32.and $push49=, $17, $pop50 3416; NO-SIMD128-FAST-NEXT: local.tee $push48=, $1=, $pop49 3417; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $pop1, $pop48 3418; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 3419; NO-SIMD128-FAST-NEXT: i32.const $push47=, 255 3420; NO-SIMD128-FAST-NEXT: i32.and $push3=, $2, $pop47 3421; NO-SIMD128-FAST-NEXT: i32.shr_u $push4=, $pop3, $1 3422; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 3423; NO-SIMD128-FAST-NEXT: i32.const $push46=, 255 3424; NO-SIMD128-FAST-NEXT: i32.and $push5=, $3, $pop46 3425; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $1 3426; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 3427; NO-SIMD128-FAST-NEXT: i32.const $push45=, 255 3428; NO-SIMD128-FAST-NEXT: i32.and $push7=, $4, $pop45 3429; NO-SIMD128-FAST-NEXT: i32.shr_u $push8=, $pop7, $1 3430; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop8 3431; NO-SIMD128-FAST-NEXT: i32.const $push44=, 255 3432; NO-SIMD128-FAST-NEXT: i32.and $push9=, $5, $pop44 3433; NO-SIMD128-FAST-NEXT: i32.shr_u $push10=, $pop9, $1 3434; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop10 3435; NO-SIMD128-FAST-NEXT: i32.const $push43=, 255 3436; NO-SIMD128-FAST-NEXT: i32.and $push11=, $6, $pop43 3437; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $1 3438; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop12 3439; NO-SIMD128-FAST-NEXT: i32.const $push42=, 255 3440; NO-SIMD128-FAST-NEXT: i32.and $push13=, $7, $pop42 3441; NO-SIMD128-FAST-NEXT: i32.shr_u $push14=, $pop13, $1 3442; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop14 3443; NO-SIMD128-FAST-NEXT: i32.const $push41=, 255 3444; NO-SIMD128-FAST-NEXT: i32.and $push15=, $8, $pop41 3445; NO-SIMD128-FAST-NEXT: i32.shr_u $push16=, $pop15, $1 3446; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop16 3447; NO-SIMD128-FAST-NEXT: i32.const $push40=, 255 3448; NO-SIMD128-FAST-NEXT: i32.and $push17=, $9, $pop40 3449; NO-SIMD128-FAST-NEXT: i32.shr_u $push18=, $pop17, $1 3450; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop18 3451; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255 3452; NO-SIMD128-FAST-NEXT: i32.and $push19=, $10, $pop39 3453; NO-SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $1 3454; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop20 3455; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255 3456; NO-SIMD128-FAST-NEXT: i32.and $push21=, $11, $pop38 3457; NO-SIMD128-FAST-NEXT: i32.shr_u $push22=, $pop21, $1 3458; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop22 3459; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255 3460; NO-SIMD128-FAST-NEXT: i32.and $push23=, $12, $pop37 3461; NO-SIMD128-FAST-NEXT: i32.shr_u $push24=, $pop23, $1 3462; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop24 3463; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255 3464; NO-SIMD128-FAST-NEXT: i32.and $push25=, $13, $pop36 3465; NO-SIMD128-FAST-NEXT: i32.shr_u $push26=, $pop25, $1 3466; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop26 3467; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255 3468; NO-SIMD128-FAST-NEXT: i32.and $push27=, $14, $pop35 3469; NO-SIMD128-FAST-NEXT: i32.shr_u $push28=, $pop27, $1 3470; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop28 3471; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255 3472; NO-SIMD128-FAST-NEXT: i32.and $push29=, $15, $pop34 3473; NO-SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $1 3474; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop30 3475; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255 3476; NO-SIMD128-FAST-NEXT: i32.and $push31=, $16, $pop33 3477; NO-SIMD128-FAST-NEXT: i32.shr_u $push32=, $pop31, $1 3478; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop32 3479; NO-SIMD128-FAST-NEXT: return 3480 %t = insertelement <16 x i8> undef, i8 %x, i32 0 3481 %s = shufflevector <16 x i8> %t, <16 x i8> undef, 3482 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, 3483 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 3484 %a = lshr <16 x i8> %v, %s 3485 ret <16 x i8> %a 3486} 3487 3488define <16 x i8> @shr_u_vec_v16i8(<16 x i8> %v, <16 x i8> %x) { 3489; SIMD128-LABEL: shr_u_vec_v16i8: 3490; SIMD128: .functype shr_u_vec_v16i8 (v128, v128) -> (v128) 3491; SIMD128-NEXT: # %bb.0: 3492; SIMD128-NEXT: i8x16.extract_lane_u $push7=, $0, 0 3493; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0 3494; SIMD128-NEXT: i32.const $push1=, 7 3495; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 3496; SIMD128-NEXT: i32.shr_u $push8=, $pop7, $pop6 3497; SIMD128-NEXT: i8x16.splat $push9=, $pop8 3498; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $0, 1 3499; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1 3500; SIMD128-NEXT: i32.const $push95=, 7 3501; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95 3502; SIMD128-NEXT: i32.shr_u $push4=, $pop3, $pop2 3503; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4 3504; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 2 3505; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2 3506; SIMD128-NEXT: i32.const $push94=, 7 3507; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94 3508; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12 3509; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14 3510; SIMD128-NEXT: i8x16.extract_lane_u $push18=, $0, 3 3511; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3 3512; SIMD128-NEXT: i32.const $push93=, 7 3513; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93 3514; SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop17 3515; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19 3516; SIMD128-NEXT: i8x16.extract_lane_u $push23=, $0, 4 3517; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4 3518; SIMD128-NEXT: i32.const $push92=, 7 3519; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92 3520; SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22 3521; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24 3522; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $0, 5 3523; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5 3524; SIMD128-NEXT: i32.const $push91=, 7 3525; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91 3526; SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop27 3527; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29 3528; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 6 3529; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6 3530; SIMD128-NEXT: i32.const $push90=, 7 3531; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90 3532; SIMD128-NEXT: i32.shr_u $push34=, $pop33, $pop32 3533; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34 3534; SIMD128-NEXT: i8x16.extract_lane_u $push38=, $0, 7 3535; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7 3536; SIMD128-NEXT: i32.const $push89=, 7 3537; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89 3538; SIMD128-NEXT: i32.shr_u $push39=, $pop38, $pop37 3539; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39 3540; SIMD128-NEXT: i8x16.extract_lane_u $push43=, $0, 8 3541; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8 3542; SIMD128-NEXT: i32.const $push88=, 7 3543; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88 3544; SIMD128-NEXT: i32.shr_u $push44=, $pop43, $pop42 3545; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44 3546; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $0, 9 3547; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9 3548; SIMD128-NEXT: i32.const $push87=, 7 3549; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87 3550; SIMD128-NEXT: i32.shr_u $push49=, $pop48, $pop47 3551; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49 3552; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 10 3553; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10 3554; SIMD128-NEXT: i32.const $push86=, 7 3555; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86 3556; SIMD128-NEXT: i32.shr_u $push54=, $pop53, $pop52 3557; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54 3558; SIMD128-NEXT: i8x16.extract_lane_u $push58=, $0, 11 3559; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11 3560; SIMD128-NEXT: i32.const $push85=, 7 3561; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85 3562; SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop57 3563; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59 3564; SIMD128-NEXT: i8x16.extract_lane_u $push63=, $0, 12 3565; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12 3566; SIMD128-NEXT: i32.const $push84=, 7 3567; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84 3568; SIMD128-NEXT: i32.shr_u $push64=, $pop63, $pop62 3569; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64 3570; SIMD128-NEXT: i8x16.extract_lane_u $push68=, $0, 13 3571; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13 3572; SIMD128-NEXT: i32.const $push83=, 7 3573; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83 3574; SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop67 3575; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69 3576; SIMD128-NEXT: i8x16.extract_lane_u $push73=, $0, 14 3577; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14 3578; SIMD128-NEXT: i32.const $push82=, 7 3579; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82 3580; SIMD128-NEXT: i32.shr_u $push74=, $pop73, $pop72 3581; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74 3582; SIMD128-NEXT: i8x16.extract_lane_u $push78=, $0, 15 3583; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15 3584; SIMD128-NEXT: i32.const $push81=, 7 3585; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81 3586; SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop77 3587; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79 3588; SIMD128-NEXT: return $pop80 3589; 3590; SIMD128-FAST-LABEL: shr_u_vec_v16i8: 3591; SIMD128-FAST: .functype shr_u_vec_v16i8 (v128, v128) -> (v128) 3592; SIMD128-FAST-NEXT: # %bb.0: 3593; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push8=, $0, 0 3594; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0 3595; SIMD128-FAST-NEXT: i32.const $push2=, 7 3596; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 3597; SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7 3598; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9 3599; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $0, 1 3600; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1 3601; SIMD128-FAST-NEXT: i32.const $push95=, 7 3602; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95 3603; SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop3 3604; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5 3605; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 2 3606; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2 3607; SIMD128-FAST-NEXT: i32.const $push94=, 7 3608; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94 3609; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13 3610; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15 3611; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push19=, $0, 3 3612; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3 3613; SIMD128-FAST-NEXT: i32.const $push93=, 7 3614; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93 3615; SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18 3616; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20 3617; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push24=, $0, 4 3618; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4 3619; SIMD128-FAST-NEXT: i32.const $push92=, 7 3620; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92 3621; SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23 3622; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25 3623; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $0, 5 3624; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5 3625; SIMD128-FAST-NEXT: i32.const $push91=, 7 3626; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91 3627; SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28 3628; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30 3629; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 6 3630; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6 3631; SIMD128-FAST-NEXT: i32.const $push90=, 7 3632; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90 3633; SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop33 3634; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35 3635; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push39=, $0, 7 3636; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7 3637; SIMD128-FAST-NEXT: i32.const $push89=, 7 3638; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89 3639; SIMD128-FAST-NEXT: i32.shr_u $push40=, $pop39, $pop38 3640; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40 3641; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push44=, $0, 8 3642; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8 3643; SIMD128-FAST-NEXT: i32.const $push88=, 7 3644; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88 3645; SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop43 3646; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45 3647; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $0, 9 3648; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9 3649; SIMD128-FAST-NEXT: i32.const $push87=, 7 3650; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87 3651; SIMD128-FAST-NEXT: i32.shr_u $push50=, $pop49, $pop48 3652; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50 3653; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 10 3654; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10 3655; SIMD128-FAST-NEXT: i32.const $push86=, 7 3656; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86 3657; SIMD128-FAST-NEXT: i32.shr_u $push55=, $pop54, $pop53 3658; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55 3659; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push59=, $0, 11 3660; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11 3661; SIMD128-FAST-NEXT: i32.const $push85=, 7 3662; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85 3663; SIMD128-FAST-NEXT: i32.shr_u $push60=, $pop59, $pop58 3664; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60 3665; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push64=, $0, 12 3666; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12 3667; SIMD128-FAST-NEXT: i32.const $push84=, 7 3668; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84 3669; SIMD128-FAST-NEXT: i32.shr_u $push65=, $pop64, $pop63 3670; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65 3671; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push69=, $0, 13 3672; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13 3673; SIMD128-FAST-NEXT: i32.const $push83=, 7 3674; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83 3675; SIMD128-FAST-NEXT: i32.shr_u $push70=, $pop69, $pop68 3676; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70 3677; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push74=, $0, 14 3678; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14 3679; SIMD128-FAST-NEXT: i32.const $push82=, 7 3680; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82 3681; SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop73 3682; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75 3683; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push79=, $0, 15 3684; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15 3685; SIMD128-FAST-NEXT: i32.const $push81=, 7 3686; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81 3687; SIMD128-FAST-NEXT: i32.shr_u $push80=, $pop79, $pop78 3688; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80 3689; SIMD128-FAST-NEXT: return $pop0 3690; 3691; NO-SIMD128-LABEL: shr_u_vec_v16i8: 3692; NO-SIMD128: .functype shr_u_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) -> () 3693; NO-SIMD128-NEXT: # %bb.0: 3694; NO-SIMD128-NEXT: i32.const $push0=, 255 3695; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 3696; NO-SIMD128-NEXT: i32.const $push79=, 255 3697; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop79 3698; NO-SIMD128-NEXT: i32.shr_u $push3=, $pop2, $pop1 3699; NO-SIMD128-NEXT: i32.store8 15($0), $pop3 3700; NO-SIMD128-NEXT: i32.const $push78=, 255 3701; NO-SIMD128-NEXT: i32.and $push5=, $15, $pop78 3702; NO-SIMD128-NEXT: i32.const $push77=, 255 3703; NO-SIMD128-NEXT: i32.and $push4=, $31, $pop77 3704; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $pop4 3705; NO-SIMD128-NEXT: i32.store8 14($0), $pop6 3706; NO-SIMD128-NEXT: i32.const $push76=, 255 3707; NO-SIMD128-NEXT: i32.and $push8=, $14, $pop76 3708; NO-SIMD128-NEXT: i32.const $push75=, 255 3709; NO-SIMD128-NEXT: i32.and $push7=, $30, $pop75 3710; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop7 3711; NO-SIMD128-NEXT: i32.store8 13($0), $pop9 3712; NO-SIMD128-NEXT: i32.const $push74=, 255 3713; NO-SIMD128-NEXT: i32.and $push11=, $13, $pop74 3714; NO-SIMD128-NEXT: i32.const $push73=, 255 3715; NO-SIMD128-NEXT: i32.and $push10=, $29, $pop73 3716; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $pop10 3717; NO-SIMD128-NEXT: i32.store8 12($0), $pop12 3718; NO-SIMD128-NEXT: i32.const $push72=, 255 3719; NO-SIMD128-NEXT: i32.and $push14=, $12, $pop72 3720; NO-SIMD128-NEXT: i32.const $push71=, 255 3721; NO-SIMD128-NEXT: i32.and $push13=, $28, $pop71 3722; NO-SIMD128-NEXT: i32.shr_u $push15=, $pop14, $pop13 3723; NO-SIMD128-NEXT: i32.store8 11($0), $pop15 3724; NO-SIMD128-NEXT: i32.const $push70=, 255 3725; NO-SIMD128-NEXT: i32.and $push17=, $11, $pop70 3726; NO-SIMD128-NEXT: i32.const $push69=, 255 3727; NO-SIMD128-NEXT: i32.and $push16=, $27, $pop69 3728; NO-SIMD128-NEXT: i32.shr_u $push18=, $pop17, $pop16 3729; NO-SIMD128-NEXT: i32.store8 10($0), $pop18 3730; NO-SIMD128-NEXT: i32.const $push68=, 255 3731; NO-SIMD128-NEXT: i32.and $push20=, $10, $pop68 3732; NO-SIMD128-NEXT: i32.const $push67=, 255 3733; NO-SIMD128-NEXT: i32.and $push19=, $26, $pop67 3734; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop19 3735; NO-SIMD128-NEXT: i32.store8 9($0), $pop21 3736; NO-SIMD128-NEXT: i32.const $push66=, 255 3737; NO-SIMD128-NEXT: i32.and $push23=, $9, $pop66 3738; NO-SIMD128-NEXT: i32.const $push65=, 255 3739; NO-SIMD128-NEXT: i32.and $push22=, $25, $pop65 3740; NO-SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22 3741; NO-SIMD128-NEXT: i32.store8 8($0), $pop24 3742; NO-SIMD128-NEXT: i32.const $push64=, 255 3743; NO-SIMD128-NEXT: i32.and $push26=, $8, $pop64 3744; NO-SIMD128-NEXT: i32.const $push63=, 255 3745; NO-SIMD128-NEXT: i32.and $push25=, $24, $pop63 3746; NO-SIMD128-NEXT: i32.shr_u $push27=, $pop26, $pop25 3747; NO-SIMD128-NEXT: i32.store8 7($0), $pop27 3748; NO-SIMD128-NEXT: i32.const $push62=, 255 3749; NO-SIMD128-NEXT: i32.and $push29=, $7, $pop62 3750; NO-SIMD128-NEXT: i32.const $push61=, 255 3751; NO-SIMD128-NEXT: i32.and $push28=, $23, $pop61 3752; NO-SIMD128-NEXT: i32.shr_u $push30=, $pop29, $pop28 3753; NO-SIMD128-NEXT: i32.store8 6($0), $pop30 3754; NO-SIMD128-NEXT: i32.const $push60=, 255 3755; NO-SIMD128-NEXT: i32.and $push32=, $6, $pop60 3756; NO-SIMD128-NEXT: i32.const $push59=, 255 3757; NO-SIMD128-NEXT: i32.and $push31=, $22, $pop59 3758; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop31 3759; NO-SIMD128-NEXT: i32.store8 5($0), $pop33 3760; NO-SIMD128-NEXT: i32.const $push58=, 255 3761; NO-SIMD128-NEXT: i32.and $push35=, $5, $pop58 3762; NO-SIMD128-NEXT: i32.const $push57=, 255 3763; NO-SIMD128-NEXT: i32.and $push34=, $21, $pop57 3764; NO-SIMD128-NEXT: i32.shr_u $push36=, $pop35, $pop34 3765; NO-SIMD128-NEXT: i32.store8 4($0), $pop36 3766; NO-SIMD128-NEXT: i32.const $push56=, 255 3767; NO-SIMD128-NEXT: i32.and $push38=, $4, $pop56 3768; NO-SIMD128-NEXT: i32.const $push55=, 255 3769; NO-SIMD128-NEXT: i32.and $push37=, $20, $pop55 3770; NO-SIMD128-NEXT: i32.shr_u $push39=, $pop38, $pop37 3771; NO-SIMD128-NEXT: i32.store8 3($0), $pop39 3772; NO-SIMD128-NEXT: i32.const $push54=, 255 3773; NO-SIMD128-NEXT: i32.and $push41=, $3, $pop54 3774; NO-SIMD128-NEXT: i32.const $push53=, 255 3775; NO-SIMD128-NEXT: i32.and $push40=, $19, $pop53 3776; NO-SIMD128-NEXT: i32.shr_u $push42=, $pop41, $pop40 3777; NO-SIMD128-NEXT: i32.store8 2($0), $pop42 3778; NO-SIMD128-NEXT: i32.const $push52=, 255 3779; NO-SIMD128-NEXT: i32.and $push44=, $2, $pop52 3780; NO-SIMD128-NEXT: i32.const $push51=, 255 3781; NO-SIMD128-NEXT: i32.and $push43=, $18, $pop51 3782; NO-SIMD128-NEXT: i32.shr_u $push45=, $pop44, $pop43 3783; NO-SIMD128-NEXT: i32.store8 1($0), $pop45 3784; NO-SIMD128-NEXT: i32.const $push50=, 255 3785; NO-SIMD128-NEXT: i32.and $push47=, $1, $pop50 3786; NO-SIMD128-NEXT: i32.const $push49=, 255 3787; NO-SIMD128-NEXT: i32.and $push46=, $17, $pop49 3788; NO-SIMD128-NEXT: i32.shr_u $push48=, $pop47, $pop46 3789; NO-SIMD128-NEXT: i32.store8 0($0), $pop48 3790; NO-SIMD128-NEXT: return 3791; 3792; NO-SIMD128-FAST-LABEL: shr_u_vec_v16i8: 3793; NO-SIMD128-FAST: .functype shr_u_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) -> () 3794; NO-SIMD128-FAST-NEXT: # %bb.0: 3795; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 3796; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 3797; NO-SIMD128-FAST-NEXT: i32.const $push79=, 255 3798; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop79 3799; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1 3800; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3 3801; NO-SIMD128-FAST-NEXT: i32.const $push78=, 255 3802; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop78 3803; NO-SIMD128-FAST-NEXT: i32.const $push77=, 255 3804; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop77 3805; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4 3806; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6 3807; NO-SIMD128-FAST-NEXT: i32.const $push76=, 255 3808; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop76 3809; NO-SIMD128-FAST-NEXT: i32.const $push75=, 255 3810; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop75 3811; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7 3812; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9 3813; NO-SIMD128-FAST-NEXT: i32.const $push74=, 255 3814; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop74 3815; NO-SIMD128-FAST-NEXT: i32.const $push73=, 255 3816; NO-SIMD128-FAST-NEXT: i32.and $push10=, $20, $pop73 3817; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $pop10 3818; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop12 3819; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255 3820; NO-SIMD128-FAST-NEXT: i32.and $push14=, $5, $pop72 3821; NO-SIMD128-FAST-NEXT: i32.const $push71=, 255 3822; NO-SIMD128-FAST-NEXT: i32.and $push13=, $21, $pop71 3823; NO-SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13 3824; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop15 3825; NO-SIMD128-FAST-NEXT: i32.const $push70=, 255 3826; NO-SIMD128-FAST-NEXT: i32.and $push17=, $6, $pop70 3827; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255 3828; NO-SIMD128-FAST-NEXT: i32.and $push16=, $22, $pop69 3829; NO-SIMD128-FAST-NEXT: i32.shr_u $push18=, $pop17, $pop16 3830; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop18 3831; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255 3832; NO-SIMD128-FAST-NEXT: i32.and $push20=, $7, $pop68 3833; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255 3834; NO-SIMD128-FAST-NEXT: i32.and $push19=, $23, $pop67 3835; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop19 3836; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop21 3837; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255 3838; NO-SIMD128-FAST-NEXT: i32.and $push23=, $8, $pop66 3839; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255 3840; NO-SIMD128-FAST-NEXT: i32.and $push22=, $24, $pop65 3841; NO-SIMD128-FAST-NEXT: i32.shr_u $push24=, $pop23, $pop22 3842; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop24 3843; NO-SIMD128-FAST-NEXT: i32.const $push64=, 255 3844; NO-SIMD128-FAST-NEXT: i32.and $push26=, $9, $pop64 3845; NO-SIMD128-FAST-NEXT: i32.const $push63=, 255 3846; NO-SIMD128-FAST-NEXT: i32.and $push25=, $25, $pop63 3847; NO-SIMD128-FAST-NEXT: i32.shr_u $push27=, $pop26, $pop25 3848; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop27 3849; NO-SIMD128-FAST-NEXT: i32.const $push62=, 255 3850; NO-SIMD128-FAST-NEXT: i32.and $push29=, $10, $pop62 3851; NO-SIMD128-FAST-NEXT: i32.const $push61=, 255 3852; NO-SIMD128-FAST-NEXT: i32.and $push28=, $26, $pop61 3853; NO-SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28 3854; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop30 3855; NO-SIMD128-FAST-NEXT: i32.const $push60=, 255 3856; NO-SIMD128-FAST-NEXT: i32.and $push32=, $11, $pop60 3857; NO-SIMD128-FAST-NEXT: i32.const $push59=, 255 3858; NO-SIMD128-FAST-NEXT: i32.and $push31=, $27, $pop59 3859; NO-SIMD128-FAST-NEXT: i32.shr_u $push33=, $pop32, $pop31 3860; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop33 3861; NO-SIMD128-FAST-NEXT: i32.const $push58=, 255 3862; NO-SIMD128-FAST-NEXT: i32.and $push35=, $12, $pop58 3863; NO-SIMD128-FAST-NEXT: i32.const $push57=, 255 3864; NO-SIMD128-FAST-NEXT: i32.and $push34=, $28, $pop57 3865; NO-SIMD128-FAST-NEXT: i32.shr_u $push36=, $pop35, $pop34 3866; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop36 3867; NO-SIMD128-FAST-NEXT: i32.const $push56=, 255 3868; NO-SIMD128-FAST-NEXT: i32.and $push38=, $13, $pop56 3869; NO-SIMD128-FAST-NEXT: i32.const $push55=, 255 3870; NO-SIMD128-FAST-NEXT: i32.and $push37=, $29, $pop55 3871; NO-SIMD128-FAST-NEXT: i32.shr_u $push39=, $pop38, $pop37 3872; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop39 3873; NO-SIMD128-FAST-NEXT: i32.const $push54=, 255 3874; NO-SIMD128-FAST-NEXT: i32.and $push41=, $14, $pop54 3875; NO-SIMD128-FAST-NEXT: i32.const $push53=, 255 3876; NO-SIMD128-FAST-NEXT: i32.and $push40=, $30, $pop53 3877; NO-SIMD128-FAST-NEXT: i32.shr_u $push42=, $pop41, $pop40 3878; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop42 3879; NO-SIMD128-FAST-NEXT: i32.const $push52=, 255 3880; NO-SIMD128-FAST-NEXT: i32.and $push44=, $15, $pop52 3881; NO-SIMD128-FAST-NEXT: i32.const $push51=, 255 3882; NO-SIMD128-FAST-NEXT: i32.and $push43=, $31, $pop51 3883; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop43 3884; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop45 3885; NO-SIMD128-FAST-NEXT: i32.const $push50=, 255 3886; NO-SIMD128-FAST-NEXT: i32.and $push47=, $16, $pop50 3887; NO-SIMD128-FAST-NEXT: i32.const $push49=, 255 3888; NO-SIMD128-FAST-NEXT: i32.and $push46=, $32, $pop49 3889; NO-SIMD128-FAST-NEXT: i32.shr_u $push48=, $pop47, $pop46 3890; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop48 3891; NO-SIMD128-FAST-NEXT: return 3892 %a = lshr <16 x i8> %v, %x 3893 ret <16 x i8> %a 3894} 3895 3896define <16 x i8> @and_v16i8(<16 x i8> %x, <16 x i8> %y) { 3897; SIMD128-LABEL: and_v16i8: 3898; SIMD128: .functype and_v16i8 (v128, v128) -> (v128) 3899; SIMD128-NEXT: # %bb.0: 3900; SIMD128-NEXT: v128.and $push0=, $0, $1 3901; SIMD128-NEXT: return $pop0 3902; 3903; SIMD128-FAST-LABEL: and_v16i8: 3904; SIMD128-FAST: .functype and_v16i8 (v128, v128) -> (v128) 3905; SIMD128-FAST-NEXT: # %bb.0: 3906; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 3907; SIMD128-FAST-NEXT: return $pop0 3908; 3909; NO-SIMD128-LABEL: and_v16i8: 3910; NO-SIMD128: .functype and_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) -> () 3911; NO-SIMD128-NEXT: # %bb.0: 3912; NO-SIMD128-NEXT: i32.and $push0=, $16, $32 3913; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 3914; NO-SIMD128-NEXT: i32.and $push1=, $15, $31 3915; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 3916; NO-SIMD128-NEXT: i32.and $push2=, $14, $30 3917; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 3918; NO-SIMD128-NEXT: i32.and $push3=, $13, $29 3919; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 3920; NO-SIMD128-NEXT: i32.and $push4=, $12, $28 3921; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 3922; NO-SIMD128-NEXT: i32.and $push5=, $11, $27 3923; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 3924; NO-SIMD128-NEXT: i32.and $push6=, $10, $26 3925; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 3926; NO-SIMD128-NEXT: i32.and $push7=, $9, $25 3927; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 3928; NO-SIMD128-NEXT: i32.and $push8=, $8, $24 3929; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 3930; NO-SIMD128-NEXT: i32.and $push9=, $7, $23 3931; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 3932; NO-SIMD128-NEXT: i32.and $push10=, $6, $22 3933; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 3934; NO-SIMD128-NEXT: i32.and $push11=, $5, $21 3935; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 3936; NO-SIMD128-NEXT: i32.and $push12=, $4, $20 3937; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 3938; NO-SIMD128-NEXT: i32.and $push13=, $3, $19 3939; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 3940; NO-SIMD128-NEXT: i32.and $push14=, $2, $18 3941; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 3942; NO-SIMD128-NEXT: i32.and $push15=, $1, $17 3943; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 3944; NO-SIMD128-NEXT: return 3945; 3946; NO-SIMD128-FAST-LABEL: and_v16i8: 3947; NO-SIMD128-FAST: .functype and_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) -> () 3948; NO-SIMD128-FAST-NEXT: # %bb.0: 3949; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $17 3950; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 3951; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $18 3952; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 3953; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $19 3954; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 3955; NO-SIMD128-FAST-NEXT: i32.and $push3=, $4, $20 3956; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 3957; NO-SIMD128-FAST-NEXT: i32.and $push4=, $5, $21 3958; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 3959; NO-SIMD128-FAST-NEXT: i32.and $push5=, $6, $22 3960; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 3961; NO-SIMD128-FAST-NEXT: i32.and $push6=, $7, $23 3962; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 3963; NO-SIMD128-FAST-NEXT: i32.and $push7=, $8, $24 3964; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 3965; NO-SIMD128-FAST-NEXT: i32.and $push8=, $9, $25 3966; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 3967; NO-SIMD128-FAST-NEXT: i32.and $push9=, $10, $26 3968; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 3969; NO-SIMD128-FAST-NEXT: i32.and $push10=, $11, $27 3970; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 3971; NO-SIMD128-FAST-NEXT: i32.and $push11=, $12, $28 3972; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 3973; NO-SIMD128-FAST-NEXT: i32.and $push12=, $13, $29 3974; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 3975; NO-SIMD128-FAST-NEXT: i32.and $push13=, $14, $30 3976; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 3977; NO-SIMD128-FAST-NEXT: i32.and $push14=, $15, $31 3978; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 3979; NO-SIMD128-FAST-NEXT: i32.and $push15=, $16, $32 3980; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 3981; NO-SIMD128-FAST-NEXT: return 3982 %a = and <16 x i8> %x, %y 3983 ret <16 x i8> %a 3984} 3985 3986define <16 x i8> @or_v16i8(<16 x i8> %x, <16 x i8> %y) { 3987; SIMD128-LABEL: or_v16i8: 3988; SIMD128: .functype or_v16i8 (v128, v128) -> (v128) 3989; SIMD128-NEXT: # %bb.0: 3990; SIMD128-NEXT: v128.or $push0=, $0, $1 3991; SIMD128-NEXT: return $pop0 3992; 3993; SIMD128-FAST-LABEL: or_v16i8: 3994; SIMD128-FAST: .functype or_v16i8 (v128, v128) -> (v128) 3995; SIMD128-FAST-NEXT: # %bb.0: 3996; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1 3997; SIMD128-FAST-NEXT: return $pop0 3998; 3999; NO-SIMD128-LABEL: or_v16i8: 4000; NO-SIMD128: .functype or_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) -> () 4001; NO-SIMD128-NEXT: # %bb.0: 4002; NO-SIMD128-NEXT: i32.or $push0=, $16, $32 4003; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 4004; NO-SIMD128-NEXT: i32.or $push1=, $15, $31 4005; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 4006; NO-SIMD128-NEXT: i32.or $push2=, $14, $30 4007; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 4008; NO-SIMD128-NEXT: i32.or $push3=, $13, $29 4009; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 4010; NO-SIMD128-NEXT: i32.or $push4=, $12, $28 4011; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 4012; NO-SIMD128-NEXT: i32.or $push5=, $11, $27 4013; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 4014; NO-SIMD128-NEXT: i32.or $push6=, $10, $26 4015; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 4016; NO-SIMD128-NEXT: i32.or $push7=, $9, $25 4017; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 4018; NO-SIMD128-NEXT: i32.or $push8=, $8, $24 4019; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 4020; NO-SIMD128-NEXT: i32.or $push9=, $7, $23 4021; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 4022; NO-SIMD128-NEXT: i32.or $push10=, $6, $22 4023; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 4024; NO-SIMD128-NEXT: i32.or $push11=, $5, $21 4025; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 4026; NO-SIMD128-NEXT: i32.or $push12=, $4, $20 4027; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 4028; NO-SIMD128-NEXT: i32.or $push13=, $3, $19 4029; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 4030; NO-SIMD128-NEXT: i32.or $push14=, $2, $18 4031; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 4032; NO-SIMD128-NEXT: i32.or $push15=, $1, $17 4033; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 4034; NO-SIMD128-NEXT: return 4035; 4036; NO-SIMD128-FAST-LABEL: or_v16i8: 4037; NO-SIMD128-FAST: .functype or_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) -> () 4038; NO-SIMD128-FAST-NEXT: # %bb.0: 4039; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $17 4040; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 4041; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $18 4042; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 4043; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $19 4044; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 4045; NO-SIMD128-FAST-NEXT: i32.or $push3=, $4, $20 4046; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 4047; NO-SIMD128-FAST-NEXT: i32.or $push4=, $5, $21 4048; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 4049; NO-SIMD128-FAST-NEXT: i32.or $push5=, $6, $22 4050; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 4051; NO-SIMD128-FAST-NEXT: i32.or $push6=, $7, $23 4052; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 4053; NO-SIMD128-FAST-NEXT: i32.or $push7=, $8, $24 4054; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 4055; NO-SIMD128-FAST-NEXT: i32.or $push8=, $9, $25 4056; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 4057; NO-SIMD128-FAST-NEXT: i32.or $push9=, $10, $26 4058; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 4059; NO-SIMD128-FAST-NEXT: i32.or $push10=, $11, $27 4060; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 4061; NO-SIMD128-FAST-NEXT: i32.or $push11=, $12, $28 4062; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 4063; NO-SIMD128-FAST-NEXT: i32.or $push12=, $13, $29 4064; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 4065; NO-SIMD128-FAST-NEXT: i32.or $push13=, $14, $30 4066; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 4067; NO-SIMD128-FAST-NEXT: i32.or $push14=, $15, $31 4068; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 4069; NO-SIMD128-FAST-NEXT: i32.or $push15=, $16, $32 4070; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 4071; NO-SIMD128-FAST-NEXT: return 4072 %a = or <16 x i8> %x, %y 4073 ret <16 x i8> %a 4074} 4075 4076define <16 x i8> @xor_v16i8(<16 x i8> %x, <16 x i8> %y) { 4077; SIMD128-LABEL: xor_v16i8: 4078; SIMD128: .functype xor_v16i8 (v128, v128) -> (v128) 4079; SIMD128-NEXT: # %bb.0: 4080; SIMD128-NEXT: v128.xor $push0=, $0, $1 4081; SIMD128-NEXT: return $pop0 4082; 4083; SIMD128-FAST-LABEL: xor_v16i8: 4084; SIMD128-FAST: .functype xor_v16i8 (v128, v128) -> (v128) 4085; SIMD128-FAST-NEXT: # %bb.0: 4086; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1 4087; SIMD128-FAST-NEXT: return $pop0 4088; 4089; NO-SIMD128-LABEL: xor_v16i8: 4090; NO-SIMD128: .functype xor_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) -> () 4091; NO-SIMD128-NEXT: # %bb.0: 4092; NO-SIMD128-NEXT: i32.xor $push0=, $16, $32 4093; NO-SIMD128-NEXT: i32.store8 15($0), $pop0 4094; NO-SIMD128-NEXT: i32.xor $push1=, $15, $31 4095; NO-SIMD128-NEXT: i32.store8 14($0), $pop1 4096; NO-SIMD128-NEXT: i32.xor $push2=, $14, $30 4097; NO-SIMD128-NEXT: i32.store8 13($0), $pop2 4098; NO-SIMD128-NEXT: i32.xor $push3=, $13, $29 4099; NO-SIMD128-NEXT: i32.store8 12($0), $pop3 4100; NO-SIMD128-NEXT: i32.xor $push4=, $12, $28 4101; NO-SIMD128-NEXT: i32.store8 11($0), $pop4 4102; NO-SIMD128-NEXT: i32.xor $push5=, $11, $27 4103; NO-SIMD128-NEXT: i32.store8 10($0), $pop5 4104; NO-SIMD128-NEXT: i32.xor $push6=, $10, $26 4105; NO-SIMD128-NEXT: i32.store8 9($0), $pop6 4106; NO-SIMD128-NEXT: i32.xor $push7=, $9, $25 4107; NO-SIMD128-NEXT: i32.store8 8($0), $pop7 4108; NO-SIMD128-NEXT: i32.xor $push8=, $8, $24 4109; NO-SIMD128-NEXT: i32.store8 7($0), $pop8 4110; NO-SIMD128-NEXT: i32.xor $push9=, $7, $23 4111; NO-SIMD128-NEXT: i32.store8 6($0), $pop9 4112; NO-SIMD128-NEXT: i32.xor $push10=, $6, $22 4113; NO-SIMD128-NEXT: i32.store8 5($0), $pop10 4114; NO-SIMD128-NEXT: i32.xor $push11=, $5, $21 4115; NO-SIMD128-NEXT: i32.store8 4($0), $pop11 4116; NO-SIMD128-NEXT: i32.xor $push12=, $4, $20 4117; NO-SIMD128-NEXT: i32.store8 3($0), $pop12 4118; NO-SIMD128-NEXT: i32.xor $push13=, $3, $19 4119; NO-SIMD128-NEXT: i32.store8 2($0), $pop13 4120; NO-SIMD128-NEXT: i32.xor $push14=, $2, $18 4121; NO-SIMD128-NEXT: i32.store8 1($0), $pop14 4122; NO-SIMD128-NEXT: i32.xor $push15=, $1, $17 4123; NO-SIMD128-NEXT: i32.store8 0($0), $pop15 4124; NO-SIMD128-NEXT: return 4125; 4126; NO-SIMD128-FAST-LABEL: xor_v16i8: 4127; NO-SIMD128-FAST: .functype xor_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) -> () 4128; NO-SIMD128-FAST-NEXT: # %bb.0: 4129; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $17 4130; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0 4131; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $18 4132; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1 4133; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $19 4134; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2 4135; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $4, $20 4136; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop3 4137; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $5, $21 4138; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop4 4139; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $6, $22 4140; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop5 4141; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $7, $23 4142; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop6 4143; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $8, $24 4144; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop7 4145; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $9, $25 4146; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop8 4147; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $10, $26 4148; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop9 4149; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $11, $27 4150; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop10 4151; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $12, $28 4152; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop11 4153; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $13, $29 4154; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop12 4155; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $14, $30 4156; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop13 4157; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $15, $31 4158; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop14 4159; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $16, $32 4160; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop15 4161; NO-SIMD128-FAST-NEXT: return 4162 %a = xor <16 x i8> %x, %y 4163 ret <16 x i8> %a 4164} 4165 4166define <16 x i8> @not_v16i8(<16 x i8> %x) { 4167; SIMD128-LABEL: not_v16i8: 4168; SIMD128: .functype not_v16i8 (v128) -> (v128) 4169; SIMD128-NEXT: # %bb.0: 4170; SIMD128-NEXT: v128.not $push0=, $0 4171; SIMD128-NEXT: return $pop0 4172; 4173; SIMD128-FAST-LABEL: not_v16i8: 4174; SIMD128-FAST: .functype not_v16i8 (v128) -> (v128) 4175; SIMD128-FAST-NEXT: # %bb.0: 4176; SIMD128-FAST-NEXT: v128.not $push0=, $0 4177; SIMD128-FAST-NEXT: return $pop0 4178; 4179; NO-SIMD128-LABEL: not_v16i8: 4180; NO-SIMD128: .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4181; NO-SIMD128-NEXT: # %bb.0: 4182; NO-SIMD128-NEXT: i32.const $push0=, -1 4183; NO-SIMD128-NEXT: i32.xor $push1=, $16, $pop0 4184; NO-SIMD128-NEXT: i32.store8 15($0), $pop1 4185; NO-SIMD128-NEXT: i32.const $push31=, -1 4186; NO-SIMD128-NEXT: i32.xor $push2=, $15, $pop31 4187; NO-SIMD128-NEXT: i32.store8 14($0), $pop2 4188; NO-SIMD128-NEXT: i32.const $push30=, -1 4189; NO-SIMD128-NEXT: i32.xor $push3=, $14, $pop30 4190; NO-SIMD128-NEXT: i32.store8 13($0), $pop3 4191; NO-SIMD128-NEXT: i32.const $push29=, -1 4192; NO-SIMD128-NEXT: i32.xor $push4=, $13, $pop29 4193; NO-SIMD128-NEXT: i32.store8 12($0), $pop4 4194; NO-SIMD128-NEXT: i32.const $push28=, -1 4195; NO-SIMD128-NEXT: i32.xor $push5=, $12, $pop28 4196; NO-SIMD128-NEXT: i32.store8 11($0), $pop5 4197; NO-SIMD128-NEXT: i32.const $push27=, -1 4198; NO-SIMD128-NEXT: i32.xor $push6=, $11, $pop27 4199; NO-SIMD128-NEXT: i32.store8 10($0), $pop6 4200; NO-SIMD128-NEXT: i32.const $push26=, -1 4201; NO-SIMD128-NEXT: i32.xor $push7=, $10, $pop26 4202; NO-SIMD128-NEXT: i32.store8 9($0), $pop7 4203; NO-SIMD128-NEXT: i32.const $push25=, -1 4204; NO-SIMD128-NEXT: i32.xor $push8=, $9, $pop25 4205; NO-SIMD128-NEXT: i32.store8 8($0), $pop8 4206; NO-SIMD128-NEXT: i32.const $push24=, -1 4207; NO-SIMD128-NEXT: i32.xor $push9=, $8, $pop24 4208; NO-SIMD128-NEXT: i32.store8 7($0), $pop9 4209; NO-SIMD128-NEXT: i32.const $push23=, -1 4210; NO-SIMD128-NEXT: i32.xor $push10=, $7, $pop23 4211; NO-SIMD128-NEXT: i32.store8 6($0), $pop10 4212; NO-SIMD128-NEXT: i32.const $push22=, -1 4213; NO-SIMD128-NEXT: i32.xor $push11=, $6, $pop22 4214; NO-SIMD128-NEXT: i32.store8 5($0), $pop11 4215; NO-SIMD128-NEXT: i32.const $push21=, -1 4216; NO-SIMD128-NEXT: i32.xor $push12=, $5, $pop21 4217; NO-SIMD128-NEXT: i32.store8 4($0), $pop12 4218; NO-SIMD128-NEXT: i32.const $push20=, -1 4219; NO-SIMD128-NEXT: i32.xor $push13=, $4, $pop20 4220; NO-SIMD128-NEXT: i32.store8 3($0), $pop13 4221; NO-SIMD128-NEXT: i32.const $push19=, -1 4222; NO-SIMD128-NEXT: i32.xor $push14=, $3, $pop19 4223; NO-SIMD128-NEXT: i32.store8 2($0), $pop14 4224; NO-SIMD128-NEXT: i32.const $push18=, -1 4225; NO-SIMD128-NEXT: i32.xor $push15=, $2, $pop18 4226; NO-SIMD128-NEXT: i32.store8 1($0), $pop15 4227; NO-SIMD128-NEXT: i32.const $push17=, -1 4228; NO-SIMD128-NEXT: i32.xor $push16=, $1, $pop17 4229; NO-SIMD128-NEXT: i32.store8 0($0), $pop16 4230; NO-SIMD128-NEXT: return 4231; 4232; NO-SIMD128-FAST-LABEL: not_v16i8: 4233; NO-SIMD128-FAST: .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4234; NO-SIMD128-FAST-NEXT: # %bb.0: 4235; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 4236; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 4237; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1 4238; NO-SIMD128-FAST-NEXT: i32.const $push31=, -1 4239; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop31 4240; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2 4241; NO-SIMD128-FAST-NEXT: i32.const $push30=, -1 4242; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop30 4243; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3 4244; NO-SIMD128-FAST-NEXT: i32.const $push29=, -1 4245; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $4, $pop29 4246; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop4 4247; NO-SIMD128-FAST-NEXT: i32.const $push28=, -1 4248; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $5, $pop28 4249; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop5 4250; NO-SIMD128-FAST-NEXT: i32.const $push27=, -1 4251; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $6, $pop27 4252; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop6 4253; NO-SIMD128-FAST-NEXT: i32.const $push26=, -1 4254; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $7, $pop26 4255; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop7 4256; NO-SIMD128-FAST-NEXT: i32.const $push25=, -1 4257; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $8, $pop25 4258; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop8 4259; NO-SIMD128-FAST-NEXT: i32.const $push24=, -1 4260; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $9, $pop24 4261; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop9 4262; NO-SIMD128-FAST-NEXT: i32.const $push23=, -1 4263; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $10, $pop23 4264; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop10 4265; NO-SIMD128-FAST-NEXT: i32.const $push22=, -1 4266; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $11, $pop22 4267; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop11 4268; NO-SIMD128-FAST-NEXT: i32.const $push21=, -1 4269; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $12, $pop21 4270; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop12 4271; NO-SIMD128-FAST-NEXT: i32.const $push20=, -1 4272; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $13, $pop20 4273; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop13 4274; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1 4275; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $14, $pop19 4276; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop14 4277; NO-SIMD128-FAST-NEXT: i32.const $push18=, -1 4278; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $15, $pop18 4279; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop15 4280; NO-SIMD128-FAST-NEXT: i32.const $push17=, -1 4281; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $16, $pop17 4282; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop16 4283; NO-SIMD128-FAST-NEXT: return 4284 %a = xor <16 x i8> %x, <i8 -1, i8 -1, i8 -1, i8 -1, 4285 i8 -1, i8 -1, i8 -1, i8 -1, 4286 i8 -1, i8 -1, i8 -1, i8 -1, 4287 i8 -1, i8 -1, i8 -1, i8 -1> 4288 ret <16 x i8> %a 4289} 4290 4291define <16 x i8> @andnot_v16i8(<16 x i8> %x, <16 x i8> %y) { 4292; SIMD128-LABEL: andnot_v16i8: 4293; SIMD128: .functype andnot_v16i8 (v128, v128) -> (v128) 4294; SIMD128-NEXT: # %bb.0: 4295; SIMD128-NEXT: v128.andnot $push0=, $0, $1 4296; SIMD128-NEXT: return $pop0 4297; 4298; SIMD128-FAST-LABEL: andnot_v16i8: 4299; SIMD128-FAST: .functype andnot_v16i8 (v128, v128) -> (v128) 4300; SIMD128-FAST-NEXT: # %bb.0: 4301; SIMD128-FAST-NEXT: v128.not $push0=, $1 4302; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0 4303; SIMD128-FAST-NEXT: return $pop1 4304; 4305; NO-SIMD128-LABEL: andnot_v16i8: 4306; NO-SIMD128: .functype andnot_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) -> () 4307; NO-SIMD128-NEXT: # %bb.0: 4308; NO-SIMD128-NEXT: i32.const $push0=, -1 4309; NO-SIMD128-NEXT: i32.xor $push1=, $32, $pop0 4310; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop1 4311; NO-SIMD128-NEXT: i32.store8 15($0), $pop2 4312; NO-SIMD128-NEXT: i32.const $push47=, -1 4313; NO-SIMD128-NEXT: i32.xor $push3=, $31, $pop47 4314; NO-SIMD128-NEXT: i32.and $push4=, $15, $pop3 4315; NO-SIMD128-NEXT: i32.store8 14($0), $pop4 4316; NO-SIMD128-NEXT: i32.const $push46=, -1 4317; NO-SIMD128-NEXT: i32.xor $push5=, $30, $pop46 4318; NO-SIMD128-NEXT: i32.and $push6=, $14, $pop5 4319; NO-SIMD128-NEXT: i32.store8 13($0), $pop6 4320; NO-SIMD128-NEXT: i32.const $push45=, -1 4321; NO-SIMD128-NEXT: i32.xor $push7=, $29, $pop45 4322; NO-SIMD128-NEXT: i32.and $push8=, $13, $pop7 4323; NO-SIMD128-NEXT: i32.store8 12($0), $pop8 4324; NO-SIMD128-NEXT: i32.const $push44=, -1 4325; NO-SIMD128-NEXT: i32.xor $push9=, $28, $pop44 4326; NO-SIMD128-NEXT: i32.and $push10=, $12, $pop9 4327; NO-SIMD128-NEXT: i32.store8 11($0), $pop10 4328; NO-SIMD128-NEXT: i32.const $push43=, -1 4329; NO-SIMD128-NEXT: i32.xor $push11=, $27, $pop43 4330; NO-SIMD128-NEXT: i32.and $push12=, $11, $pop11 4331; NO-SIMD128-NEXT: i32.store8 10($0), $pop12 4332; NO-SIMD128-NEXT: i32.const $push42=, -1 4333; NO-SIMD128-NEXT: i32.xor $push13=, $26, $pop42 4334; NO-SIMD128-NEXT: i32.and $push14=, $10, $pop13 4335; NO-SIMD128-NEXT: i32.store8 9($0), $pop14 4336; NO-SIMD128-NEXT: i32.const $push41=, -1 4337; NO-SIMD128-NEXT: i32.xor $push15=, $25, $pop41 4338; NO-SIMD128-NEXT: i32.and $push16=, $9, $pop15 4339; NO-SIMD128-NEXT: i32.store8 8($0), $pop16 4340; NO-SIMD128-NEXT: i32.const $push40=, -1 4341; NO-SIMD128-NEXT: i32.xor $push17=, $24, $pop40 4342; NO-SIMD128-NEXT: i32.and $push18=, $8, $pop17 4343; NO-SIMD128-NEXT: i32.store8 7($0), $pop18 4344; NO-SIMD128-NEXT: i32.const $push39=, -1 4345; NO-SIMD128-NEXT: i32.xor $push19=, $23, $pop39 4346; NO-SIMD128-NEXT: i32.and $push20=, $7, $pop19 4347; NO-SIMD128-NEXT: i32.store8 6($0), $pop20 4348; NO-SIMD128-NEXT: i32.const $push38=, -1 4349; NO-SIMD128-NEXT: i32.xor $push21=, $22, $pop38 4350; NO-SIMD128-NEXT: i32.and $push22=, $6, $pop21 4351; NO-SIMD128-NEXT: i32.store8 5($0), $pop22 4352; NO-SIMD128-NEXT: i32.const $push37=, -1 4353; NO-SIMD128-NEXT: i32.xor $push23=, $21, $pop37 4354; NO-SIMD128-NEXT: i32.and $push24=, $5, $pop23 4355; NO-SIMD128-NEXT: i32.store8 4($0), $pop24 4356; NO-SIMD128-NEXT: i32.const $push36=, -1 4357; NO-SIMD128-NEXT: i32.xor $push25=, $20, $pop36 4358; NO-SIMD128-NEXT: i32.and $push26=, $4, $pop25 4359; NO-SIMD128-NEXT: i32.store8 3($0), $pop26 4360; NO-SIMD128-NEXT: i32.const $push35=, -1 4361; NO-SIMD128-NEXT: i32.xor $push27=, $19, $pop35 4362; NO-SIMD128-NEXT: i32.and $push28=, $3, $pop27 4363; NO-SIMD128-NEXT: i32.store8 2($0), $pop28 4364; NO-SIMD128-NEXT: i32.const $push34=, -1 4365; NO-SIMD128-NEXT: i32.xor $push29=, $18, $pop34 4366; NO-SIMD128-NEXT: i32.and $push30=, $2, $pop29 4367; NO-SIMD128-NEXT: i32.store8 1($0), $pop30 4368; NO-SIMD128-NEXT: i32.const $push33=, -1 4369; NO-SIMD128-NEXT: i32.xor $push31=, $17, $pop33 4370; NO-SIMD128-NEXT: i32.and $push32=, $1, $pop31 4371; NO-SIMD128-NEXT: i32.store8 0($0), $pop32 4372; NO-SIMD128-NEXT: return 4373; 4374; NO-SIMD128-FAST-LABEL: andnot_v16i8: 4375; NO-SIMD128-FAST: .functype andnot_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) -> () 4376; NO-SIMD128-FAST-NEXT: # %bb.0: 4377; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 4378; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $17, $pop0 4379; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1 4380; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 4381; NO-SIMD128-FAST-NEXT: i32.const $push47=, -1 4382; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $18, $pop47 4383; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3 4384; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4 4385; NO-SIMD128-FAST-NEXT: i32.const $push46=, -1 4386; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $19, $pop46 4387; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5 4388; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6 4389; NO-SIMD128-FAST-NEXT: i32.const $push45=, -1 4390; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $20, $pop45 4391; NO-SIMD128-FAST-NEXT: i32.and $push8=, $4, $pop7 4392; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop8 4393; NO-SIMD128-FAST-NEXT: i32.const $push44=, -1 4394; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $21, $pop44 4395; NO-SIMD128-FAST-NEXT: i32.and $push10=, $5, $pop9 4396; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop10 4397; NO-SIMD128-FAST-NEXT: i32.const $push43=, -1 4398; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $22, $pop43 4399; NO-SIMD128-FAST-NEXT: i32.and $push12=, $6, $pop11 4400; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop12 4401; NO-SIMD128-FAST-NEXT: i32.const $push42=, -1 4402; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $23, $pop42 4403; NO-SIMD128-FAST-NEXT: i32.and $push14=, $7, $pop13 4404; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop14 4405; NO-SIMD128-FAST-NEXT: i32.const $push41=, -1 4406; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $24, $pop41 4407; NO-SIMD128-FAST-NEXT: i32.and $push16=, $8, $pop15 4408; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop16 4409; NO-SIMD128-FAST-NEXT: i32.const $push40=, -1 4410; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $25, $pop40 4411; NO-SIMD128-FAST-NEXT: i32.and $push18=, $9, $pop17 4412; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop18 4413; NO-SIMD128-FAST-NEXT: i32.const $push39=, -1 4414; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $26, $pop39 4415; NO-SIMD128-FAST-NEXT: i32.and $push20=, $10, $pop19 4416; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop20 4417; NO-SIMD128-FAST-NEXT: i32.const $push38=, -1 4418; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $27, $pop38 4419; NO-SIMD128-FAST-NEXT: i32.and $push22=, $11, $pop21 4420; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop22 4421; NO-SIMD128-FAST-NEXT: i32.const $push37=, -1 4422; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $28, $pop37 4423; NO-SIMD128-FAST-NEXT: i32.and $push24=, $12, $pop23 4424; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop24 4425; NO-SIMD128-FAST-NEXT: i32.const $push36=, -1 4426; NO-SIMD128-FAST-NEXT: i32.xor $push25=, $29, $pop36 4427; NO-SIMD128-FAST-NEXT: i32.and $push26=, $13, $pop25 4428; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop26 4429; NO-SIMD128-FAST-NEXT: i32.const $push35=, -1 4430; NO-SIMD128-FAST-NEXT: i32.xor $push27=, $30, $pop35 4431; NO-SIMD128-FAST-NEXT: i32.and $push28=, $14, $pop27 4432; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop28 4433; NO-SIMD128-FAST-NEXT: i32.const $push34=, -1 4434; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $31, $pop34 4435; NO-SIMD128-FAST-NEXT: i32.and $push30=, $15, $pop29 4436; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop30 4437; NO-SIMD128-FAST-NEXT: i32.const $push33=, -1 4438; NO-SIMD128-FAST-NEXT: i32.xor $push31=, $32, $pop33 4439; NO-SIMD128-FAST-NEXT: i32.and $push32=, $16, $pop31 4440; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop32 4441; NO-SIMD128-FAST-NEXT: return 4442 %inv_y = xor <16 x i8> %y, 4443 <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 4444 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 4445 %a = and <16 x i8> %x, %inv_y 4446 ret <16 x i8> %a 4447} 4448 4449define <16 x i8> @bitselect_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) { 4450; SIMD128-LABEL: bitselect_v16i8: 4451; SIMD128: .functype bitselect_v16i8 (v128, v128, v128) -> (v128) 4452; SIMD128-NEXT: # %bb.0: 4453; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 4454; SIMD128-NEXT: return $pop0 4455; 4456; SIMD128-FAST-LABEL: bitselect_v16i8: 4457; SIMD128-FAST: .functype bitselect_v16i8 (v128, v128, v128) -> (v128) 4458; SIMD128-FAST-NEXT: # %bb.0: 4459; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 4460; SIMD128-FAST-NEXT: v128.not $push2=, $0 4461; SIMD128-FAST-NEXT: v128.and $push3=, $pop2, $2 4462; SIMD128-FAST-NEXT: v128.or $push1=, $pop0, $pop3 4463; SIMD128-FAST-NEXT: return $pop1 4464; 4465; NO-SIMD128-LABEL: bitselect_v16i8: 4466; NO-SIMD128: .functype bitselect_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4467; NO-SIMD128-NEXT: # %bb.0: 4468; NO-SIMD128-NEXT: i32.and $push0=, $16, $32 4469; NO-SIMD128-NEXT: i32.const $push1=, -1 4470; NO-SIMD128-NEXT: i32.xor $push2=, $16, $pop1 4471; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $48 4472; NO-SIMD128-NEXT: i32.or $push4=, $pop0, $pop3 4473; NO-SIMD128-NEXT: i32.store8 15($0), $pop4 4474; NO-SIMD128-NEXT: i32.and $push5=, $15, $31 4475; NO-SIMD128-NEXT: i32.const $push79=, -1 4476; NO-SIMD128-NEXT: i32.xor $push6=, $15, $pop79 4477; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $47 4478; NO-SIMD128-NEXT: i32.or $push8=, $pop5, $pop7 4479; NO-SIMD128-NEXT: i32.store8 14($0), $pop8 4480; NO-SIMD128-NEXT: i32.and $push9=, $14, $30 4481; NO-SIMD128-NEXT: i32.const $push78=, -1 4482; NO-SIMD128-NEXT: i32.xor $push10=, $14, $pop78 4483; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $46 4484; NO-SIMD128-NEXT: i32.or $push12=, $pop9, $pop11 4485; NO-SIMD128-NEXT: i32.store8 13($0), $pop12 4486; NO-SIMD128-NEXT: i32.and $push13=, $13, $29 4487; NO-SIMD128-NEXT: i32.const $push77=, -1 4488; NO-SIMD128-NEXT: i32.xor $push14=, $13, $pop77 4489; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $45 4490; NO-SIMD128-NEXT: i32.or $push16=, $pop13, $pop15 4491; NO-SIMD128-NEXT: i32.store8 12($0), $pop16 4492; NO-SIMD128-NEXT: i32.and $push17=, $12, $28 4493; NO-SIMD128-NEXT: i32.const $push76=, -1 4494; NO-SIMD128-NEXT: i32.xor $push18=, $12, $pop76 4495; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $44 4496; NO-SIMD128-NEXT: i32.or $push20=, $pop17, $pop19 4497; NO-SIMD128-NEXT: i32.store8 11($0), $pop20 4498; NO-SIMD128-NEXT: i32.and $push21=, $11, $27 4499; NO-SIMD128-NEXT: i32.const $push75=, -1 4500; NO-SIMD128-NEXT: i32.xor $push22=, $11, $pop75 4501; NO-SIMD128-NEXT: i32.and $push23=, $pop22, $43 4502; NO-SIMD128-NEXT: i32.or $push24=, $pop21, $pop23 4503; NO-SIMD128-NEXT: i32.store8 10($0), $pop24 4504; NO-SIMD128-NEXT: i32.and $push25=, $10, $26 4505; NO-SIMD128-NEXT: i32.const $push74=, -1 4506; NO-SIMD128-NEXT: i32.xor $push26=, $10, $pop74 4507; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $42 4508; NO-SIMD128-NEXT: i32.or $push28=, $pop25, $pop27 4509; NO-SIMD128-NEXT: i32.store8 9($0), $pop28 4510; NO-SIMD128-NEXT: i32.and $push29=, $9, $25 4511; NO-SIMD128-NEXT: i32.const $push73=, -1 4512; NO-SIMD128-NEXT: i32.xor $push30=, $9, $pop73 4513; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $41 4514; NO-SIMD128-NEXT: i32.or $push32=, $pop29, $pop31 4515; NO-SIMD128-NEXT: i32.store8 8($0), $pop32 4516; NO-SIMD128-NEXT: i32.and $push33=, $8, $24 4517; NO-SIMD128-NEXT: i32.const $push72=, -1 4518; NO-SIMD128-NEXT: i32.xor $push34=, $8, $pop72 4519; NO-SIMD128-NEXT: i32.and $push35=, $pop34, $40 4520; NO-SIMD128-NEXT: i32.or $push36=, $pop33, $pop35 4521; NO-SIMD128-NEXT: i32.store8 7($0), $pop36 4522; NO-SIMD128-NEXT: i32.and $push37=, $7, $23 4523; NO-SIMD128-NEXT: i32.const $push71=, -1 4524; NO-SIMD128-NEXT: i32.xor $push38=, $7, $pop71 4525; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $39 4526; NO-SIMD128-NEXT: i32.or $push40=, $pop37, $pop39 4527; NO-SIMD128-NEXT: i32.store8 6($0), $pop40 4528; NO-SIMD128-NEXT: i32.and $push41=, $6, $22 4529; NO-SIMD128-NEXT: i32.const $push70=, -1 4530; NO-SIMD128-NEXT: i32.xor $push42=, $6, $pop70 4531; NO-SIMD128-NEXT: i32.and $push43=, $pop42, $38 4532; NO-SIMD128-NEXT: i32.or $push44=, $pop41, $pop43 4533; NO-SIMD128-NEXT: i32.store8 5($0), $pop44 4534; NO-SIMD128-NEXT: i32.and $push45=, $5, $21 4535; NO-SIMD128-NEXT: i32.const $push69=, -1 4536; NO-SIMD128-NEXT: i32.xor $push46=, $5, $pop69 4537; NO-SIMD128-NEXT: i32.and $push47=, $pop46, $37 4538; NO-SIMD128-NEXT: i32.or $push48=, $pop45, $pop47 4539; NO-SIMD128-NEXT: i32.store8 4($0), $pop48 4540; NO-SIMD128-NEXT: i32.and $push49=, $4, $20 4541; NO-SIMD128-NEXT: i32.const $push68=, -1 4542; NO-SIMD128-NEXT: i32.xor $push50=, $4, $pop68 4543; NO-SIMD128-NEXT: i32.and $push51=, $pop50, $36 4544; NO-SIMD128-NEXT: i32.or $push52=, $pop49, $pop51 4545; NO-SIMD128-NEXT: i32.store8 3($0), $pop52 4546; NO-SIMD128-NEXT: i32.and $push53=, $3, $19 4547; NO-SIMD128-NEXT: i32.const $push67=, -1 4548; NO-SIMD128-NEXT: i32.xor $push54=, $3, $pop67 4549; NO-SIMD128-NEXT: i32.and $push55=, $pop54, $35 4550; NO-SIMD128-NEXT: i32.or $push56=, $pop53, $pop55 4551; NO-SIMD128-NEXT: i32.store8 2($0), $pop56 4552; NO-SIMD128-NEXT: i32.and $push57=, $2, $18 4553; NO-SIMD128-NEXT: i32.const $push66=, -1 4554; NO-SIMD128-NEXT: i32.xor $push58=, $2, $pop66 4555; NO-SIMD128-NEXT: i32.and $push59=, $pop58, $34 4556; NO-SIMD128-NEXT: i32.or $push60=, $pop57, $pop59 4557; NO-SIMD128-NEXT: i32.store8 1($0), $pop60 4558; NO-SIMD128-NEXT: i32.and $push61=, $1, $17 4559; NO-SIMD128-NEXT: i32.const $push65=, -1 4560; NO-SIMD128-NEXT: i32.xor $push62=, $1, $pop65 4561; NO-SIMD128-NEXT: i32.and $push63=, $pop62, $33 4562; NO-SIMD128-NEXT: i32.or $push64=, $pop61, $pop63 4563; NO-SIMD128-NEXT: i32.store8 0($0), $pop64 4564; NO-SIMD128-NEXT: return 4565; 4566; NO-SIMD128-FAST-LABEL: bitselect_v16i8: 4567; NO-SIMD128-FAST: .functype bitselect_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4568; NO-SIMD128-FAST-NEXT: # %bb.0: 4569; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $17 4570; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1 4571; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1 4572; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $33 4573; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop0, $pop3 4574; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 4575; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $18 4576; NO-SIMD128-FAST-NEXT: i32.const $push79=, -1 4577; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop79 4578; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $34 4579; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop5, $pop7 4580; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 4581; NO-SIMD128-FAST-NEXT: i32.and $push9=, $3, $19 4582; NO-SIMD128-FAST-NEXT: i32.const $push78=, -1 4583; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop78 4584; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $35 4585; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop9, $pop11 4586; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 4587; NO-SIMD128-FAST-NEXT: i32.and $push13=, $4, $20 4588; NO-SIMD128-FAST-NEXT: i32.const $push77=, -1 4589; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop77 4590; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $36 4591; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop13, $pop15 4592; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop16 4593; NO-SIMD128-FAST-NEXT: i32.and $push17=, $5, $21 4594; NO-SIMD128-FAST-NEXT: i32.const $push76=, -1 4595; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $5, $pop76 4596; NO-SIMD128-FAST-NEXT: i32.and $push19=, $pop18, $37 4597; NO-SIMD128-FAST-NEXT: i32.or $push20=, $pop17, $pop19 4598; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop20 4599; NO-SIMD128-FAST-NEXT: i32.and $push21=, $6, $22 4600; NO-SIMD128-FAST-NEXT: i32.const $push75=, -1 4601; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $6, $pop75 4602; NO-SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $38 4603; NO-SIMD128-FAST-NEXT: i32.or $push24=, $pop21, $pop23 4604; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop24 4605; NO-SIMD128-FAST-NEXT: i32.and $push25=, $7, $23 4606; NO-SIMD128-FAST-NEXT: i32.const $push74=, -1 4607; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $7, $pop74 4608; NO-SIMD128-FAST-NEXT: i32.and $push27=, $pop26, $39 4609; NO-SIMD128-FAST-NEXT: i32.or $push28=, $pop25, $pop27 4610; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop28 4611; NO-SIMD128-FAST-NEXT: i32.and $push29=, $8, $24 4612; NO-SIMD128-FAST-NEXT: i32.const $push73=, -1 4613; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $8, $pop73 4614; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $40 4615; NO-SIMD128-FAST-NEXT: i32.or $push32=, $pop29, $pop31 4616; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop32 4617; NO-SIMD128-FAST-NEXT: i32.and $push33=, $9, $25 4618; NO-SIMD128-FAST-NEXT: i32.const $push72=, -1 4619; NO-SIMD128-FAST-NEXT: i32.xor $push34=, $9, $pop72 4620; NO-SIMD128-FAST-NEXT: i32.and $push35=, $pop34, $41 4621; NO-SIMD128-FAST-NEXT: i32.or $push36=, $pop33, $pop35 4622; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop36 4623; NO-SIMD128-FAST-NEXT: i32.and $push37=, $10, $26 4624; NO-SIMD128-FAST-NEXT: i32.const $push71=, -1 4625; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $10, $pop71 4626; NO-SIMD128-FAST-NEXT: i32.and $push39=, $pop38, $42 4627; NO-SIMD128-FAST-NEXT: i32.or $push40=, $pop37, $pop39 4628; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop40 4629; NO-SIMD128-FAST-NEXT: i32.and $push41=, $11, $27 4630; NO-SIMD128-FAST-NEXT: i32.const $push70=, -1 4631; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $11, $pop70 4632; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $43 4633; NO-SIMD128-FAST-NEXT: i32.or $push44=, $pop41, $pop43 4634; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop44 4635; NO-SIMD128-FAST-NEXT: i32.and $push45=, $12, $28 4636; NO-SIMD128-FAST-NEXT: i32.const $push69=, -1 4637; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $12, $pop69 4638; NO-SIMD128-FAST-NEXT: i32.and $push47=, $pop46, $44 4639; NO-SIMD128-FAST-NEXT: i32.or $push48=, $pop45, $pop47 4640; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop48 4641; NO-SIMD128-FAST-NEXT: i32.and $push49=, $13, $29 4642; NO-SIMD128-FAST-NEXT: i32.const $push68=, -1 4643; NO-SIMD128-FAST-NEXT: i32.xor $push50=, $13, $pop68 4644; NO-SIMD128-FAST-NEXT: i32.and $push51=, $pop50, $45 4645; NO-SIMD128-FAST-NEXT: i32.or $push52=, $pop49, $pop51 4646; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop52 4647; NO-SIMD128-FAST-NEXT: i32.and $push53=, $14, $30 4648; NO-SIMD128-FAST-NEXT: i32.const $push67=, -1 4649; NO-SIMD128-FAST-NEXT: i32.xor $push54=, $14, $pop67 4650; NO-SIMD128-FAST-NEXT: i32.and $push55=, $pop54, $46 4651; NO-SIMD128-FAST-NEXT: i32.or $push56=, $pop53, $pop55 4652; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop56 4653; NO-SIMD128-FAST-NEXT: i32.and $push57=, $15, $31 4654; NO-SIMD128-FAST-NEXT: i32.const $push66=, -1 4655; NO-SIMD128-FAST-NEXT: i32.xor $push58=, $15, $pop66 4656; NO-SIMD128-FAST-NEXT: i32.and $push59=, $pop58, $47 4657; NO-SIMD128-FAST-NEXT: i32.or $push60=, $pop57, $pop59 4658; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop60 4659; NO-SIMD128-FAST-NEXT: i32.and $push61=, $16, $32 4660; NO-SIMD128-FAST-NEXT: i32.const $push65=, -1 4661; NO-SIMD128-FAST-NEXT: i32.xor $push62=, $16, $pop65 4662; NO-SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $48 4663; NO-SIMD128-FAST-NEXT: i32.or $push64=, $pop61, $pop63 4664; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop64 4665; NO-SIMD128-FAST-NEXT: return 4666 %masked_v1 = and <16 x i8> %c, %v1 4667 %inv_mask = xor <16 x i8> %c, 4668 <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 4669 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 4670 %masked_v2 = and <16 x i8> %inv_mask, %v2 4671 %a = or <16 x i8> %masked_v1, %masked_v2 4672 ret <16 x i8> %a 4673} 4674 4675define <16 x i8> @bitselect_xor_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) { 4676; SIMD128-LABEL: bitselect_xor_v16i8: 4677; SIMD128: .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128) 4678; SIMD128-NEXT: # %bb.0: 4679; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 4680; SIMD128-NEXT: return $pop0 4681; 4682; SIMD128-FAST-LABEL: bitselect_xor_v16i8: 4683; SIMD128-FAST: .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128) 4684; SIMD128-FAST-NEXT: # %bb.0: 4685; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2 4686; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0 4687; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2 4688; SIMD128-FAST-NEXT: return $pop0 4689; 4690; NO-SIMD128-LABEL: bitselect_xor_v16i8: 4691; NO-SIMD128: .functype bitselect_xor_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4692; NO-SIMD128-NEXT: # %bb.0: 4693; NO-SIMD128-NEXT: i32.xor $push0=, $32, $48 4694; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $16 4695; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $48 4696; NO-SIMD128-NEXT: i32.store8 15($0), $pop2 4697; NO-SIMD128-NEXT: i32.xor $push3=, $31, $47 4698; NO-SIMD128-NEXT: i32.and $push4=, $pop3, $15 4699; NO-SIMD128-NEXT: i32.xor $push5=, $pop4, $47 4700; NO-SIMD128-NEXT: i32.store8 14($0), $pop5 4701; NO-SIMD128-NEXT: i32.xor $push6=, $30, $46 4702; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $14 4703; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $46 4704; NO-SIMD128-NEXT: i32.store8 13($0), $pop8 4705; NO-SIMD128-NEXT: i32.xor $push9=, $29, $45 4706; NO-SIMD128-NEXT: i32.and $push10=, $pop9, $13 4707; NO-SIMD128-NEXT: i32.xor $push11=, $pop10, $45 4708; NO-SIMD128-NEXT: i32.store8 12($0), $pop11 4709; NO-SIMD128-NEXT: i32.xor $push12=, $28, $44 4710; NO-SIMD128-NEXT: i32.and $push13=, $pop12, $12 4711; NO-SIMD128-NEXT: i32.xor $push14=, $pop13, $44 4712; NO-SIMD128-NEXT: i32.store8 11($0), $pop14 4713; NO-SIMD128-NEXT: i32.xor $push15=, $27, $43 4714; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $11 4715; NO-SIMD128-NEXT: i32.xor $push17=, $pop16, $43 4716; NO-SIMD128-NEXT: i32.store8 10($0), $pop17 4717; NO-SIMD128-NEXT: i32.xor $push18=, $26, $42 4718; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $10 4719; NO-SIMD128-NEXT: i32.xor $push20=, $pop19, $42 4720; NO-SIMD128-NEXT: i32.store8 9($0), $pop20 4721; NO-SIMD128-NEXT: i32.xor $push21=, $25, $41 4722; NO-SIMD128-NEXT: i32.and $push22=, $pop21, $9 4723; NO-SIMD128-NEXT: i32.xor $push23=, $pop22, $41 4724; NO-SIMD128-NEXT: i32.store8 8($0), $pop23 4725; NO-SIMD128-NEXT: i32.xor $push24=, $24, $40 4726; NO-SIMD128-NEXT: i32.and $push25=, $pop24, $8 4727; NO-SIMD128-NEXT: i32.xor $push26=, $pop25, $40 4728; NO-SIMD128-NEXT: i32.store8 7($0), $pop26 4729; NO-SIMD128-NEXT: i32.xor $push27=, $23, $39 4730; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $7 4731; NO-SIMD128-NEXT: i32.xor $push29=, $pop28, $39 4732; NO-SIMD128-NEXT: i32.store8 6($0), $pop29 4733; NO-SIMD128-NEXT: i32.xor $push30=, $22, $38 4734; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $6 4735; NO-SIMD128-NEXT: i32.xor $push32=, $pop31, $38 4736; NO-SIMD128-NEXT: i32.store8 5($0), $pop32 4737; NO-SIMD128-NEXT: i32.xor $push33=, $21, $37 4738; NO-SIMD128-NEXT: i32.and $push34=, $pop33, $5 4739; NO-SIMD128-NEXT: i32.xor $push35=, $pop34, $37 4740; NO-SIMD128-NEXT: i32.store8 4($0), $pop35 4741; NO-SIMD128-NEXT: i32.xor $push36=, $20, $36 4742; NO-SIMD128-NEXT: i32.and $push37=, $pop36, $4 4743; NO-SIMD128-NEXT: i32.xor $push38=, $pop37, $36 4744; NO-SIMD128-NEXT: i32.store8 3($0), $pop38 4745; NO-SIMD128-NEXT: i32.xor $push39=, $19, $35 4746; NO-SIMD128-NEXT: i32.and $push40=, $pop39, $3 4747; NO-SIMD128-NEXT: i32.xor $push41=, $pop40, $35 4748; NO-SIMD128-NEXT: i32.store8 2($0), $pop41 4749; NO-SIMD128-NEXT: i32.xor $push42=, $18, $34 4750; NO-SIMD128-NEXT: i32.and $push43=, $pop42, $2 4751; NO-SIMD128-NEXT: i32.xor $push44=, $pop43, $34 4752; NO-SIMD128-NEXT: i32.store8 1($0), $pop44 4753; NO-SIMD128-NEXT: i32.xor $push45=, $17, $33 4754; NO-SIMD128-NEXT: i32.and $push46=, $pop45, $1 4755; NO-SIMD128-NEXT: i32.xor $push47=, $pop46, $33 4756; NO-SIMD128-NEXT: i32.store8 0($0), $pop47 4757; NO-SIMD128-NEXT: return 4758; 4759; NO-SIMD128-FAST-LABEL: bitselect_xor_v16i8: 4760; NO-SIMD128-FAST: .functype bitselect_xor_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4761; NO-SIMD128-FAST-NEXT: # %bb.0: 4762; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $17, $33 4763; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1 4764; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $33 4765; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2 4766; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $18, $34 4767; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2 4768; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $34 4769; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop5 4770; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $19, $35 4771; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3 4772; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $35 4773; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop8 4774; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $20, $36 4775; NO-SIMD128-FAST-NEXT: i32.and $push10=, $pop9, $4 4776; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $pop10, $36 4777; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop11 4778; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $21, $37 4779; NO-SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $5 4780; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $pop13, $37 4781; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop14 4782; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $22, $38 4783; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $6 4784; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $pop16, $38 4785; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop17 4786; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $23, $39 4787; NO-SIMD128-FAST-NEXT: i32.and $push19=, $pop18, $7 4788; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $pop19, $39 4789; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop20 4790; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $24, $40 4791; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $8 4792; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $pop22, $40 4793; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop23 4794; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $25, $41 4795; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $9 4796; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $pop25, $41 4797; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26 4798; NO-SIMD128-FAST-NEXT: i32.xor $push27=, $26, $42 4799; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $10 4800; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $pop28, $42 4801; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop29 4802; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $27, $43 4803; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $11 4804; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $pop31, $43 4805; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop32 4806; NO-SIMD128-FAST-NEXT: i32.xor $push33=, $28, $44 4807; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $12 4808; NO-SIMD128-FAST-NEXT: i32.xor $push35=, $pop34, $44 4809; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop35 4810; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $29, $45 4811; NO-SIMD128-FAST-NEXT: i32.and $push37=, $pop36, $13 4812; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $pop37, $45 4813; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop38 4814; NO-SIMD128-FAST-NEXT: i32.xor $push39=, $30, $46 4815; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $14 4816; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $pop40, $46 4817; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop41 4818; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $31, $47 4819; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $15 4820; NO-SIMD128-FAST-NEXT: i32.xor $push44=, $pop43, $47 4821; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop44 4822; NO-SIMD128-FAST-NEXT: i32.xor $push45=, $32, $48 4823; NO-SIMD128-FAST-NEXT: i32.and $push46=, $pop45, $16 4824; NO-SIMD128-FAST-NEXT: i32.xor $push47=, $pop46, $48 4825; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop47 4826; NO-SIMD128-FAST-NEXT: return 4827 %xor1 = xor <16 x i8> %v1, %v2 4828 %and = and <16 x i8> %xor1, %c 4829 %a = xor <16 x i8> %and, %v2 4830 ret <16 x i8> %a 4831} 4832 4833define <16 x i8> @bitselect_xor_reversed_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) { 4834; SIMD128-LABEL: bitselect_xor_reversed_v16i8: 4835; SIMD128: .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128) 4836; SIMD128-NEXT: # %bb.0: 4837; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0 4838; SIMD128-NEXT: return $pop0 4839; 4840; SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8: 4841; SIMD128-FAST: .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128) 4842; SIMD128-FAST-NEXT: # %bb.0: 4843; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2 4844; SIMD128-FAST-NEXT: v128.not $push2=, $0 4845; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2 4846; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2 4847; SIMD128-FAST-NEXT: return $pop0 4848; 4849; NO-SIMD128-LABEL: bitselect_xor_reversed_v16i8: 4850; NO-SIMD128: .functype bitselect_xor_reversed_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4851; NO-SIMD128-NEXT: # %bb.0: 4852; NO-SIMD128-NEXT: i32.xor $push2=, $32, $48 4853; NO-SIMD128-NEXT: i32.const $push0=, -1 4854; NO-SIMD128-NEXT: i32.xor $push1=, $16, $pop0 4855; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1 4856; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $48 4857; NO-SIMD128-NEXT: i32.store8 15($0), $pop4 4858; NO-SIMD128-NEXT: i32.xor $push6=, $31, $47 4859; NO-SIMD128-NEXT: i32.const $push79=, -1 4860; NO-SIMD128-NEXT: i32.xor $push5=, $15, $pop79 4861; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $pop5 4862; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $47 4863; NO-SIMD128-NEXT: i32.store8 14($0), $pop8 4864; NO-SIMD128-NEXT: i32.xor $push10=, $30, $46 4865; NO-SIMD128-NEXT: i32.const $push78=, -1 4866; NO-SIMD128-NEXT: i32.xor $push9=, $14, $pop78 4867; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $pop9 4868; NO-SIMD128-NEXT: i32.xor $push12=, $pop11, $46 4869; NO-SIMD128-NEXT: i32.store8 13($0), $pop12 4870; NO-SIMD128-NEXT: i32.xor $push14=, $29, $45 4871; NO-SIMD128-NEXT: i32.const $push77=, -1 4872; NO-SIMD128-NEXT: i32.xor $push13=, $13, $pop77 4873; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $pop13 4874; NO-SIMD128-NEXT: i32.xor $push16=, $pop15, $45 4875; NO-SIMD128-NEXT: i32.store8 12($0), $pop16 4876; NO-SIMD128-NEXT: i32.xor $push18=, $28, $44 4877; NO-SIMD128-NEXT: i32.const $push76=, -1 4878; NO-SIMD128-NEXT: i32.xor $push17=, $12, $pop76 4879; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $pop17 4880; NO-SIMD128-NEXT: i32.xor $push20=, $pop19, $44 4881; NO-SIMD128-NEXT: i32.store8 11($0), $pop20 4882; NO-SIMD128-NEXT: i32.xor $push22=, $27, $43 4883; NO-SIMD128-NEXT: i32.const $push75=, -1 4884; NO-SIMD128-NEXT: i32.xor $push21=, $11, $pop75 4885; NO-SIMD128-NEXT: i32.and $push23=, $pop22, $pop21 4886; NO-SIMD128-NEXT: i32.xor $push24=, $pop23, $43 4887; NO-SIMD128-NEXT: i32.store8 10($0), $pop24 4888; NO-SIMD128-NEXT: i32.xor $push26=, $26, $42 4889; NO-SIMD128-NEXT: i32.const $push74=, -1 4890; NO-SIMD128-NEXT: i32.xor $push25=, $10, $pop74 4891; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $pop25 4892; NO-SIMD128-NEXT: i32.xor $push28=, $pop27, $42 4893; NO-SIMD128-NEXT: i32.store8 9($0), $pop28 4894; NO-SIMD128-NEXT: i32.xor $push30=, $25, $41 4895; NO-SIMD128-NEXT: i32.const $push73=, -1 4896; NO-SIMD128-NEXT: i32.xor $push29=, $9, $pop73 4897; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $pop29 4898; NO-SIMD128-NEXT: i32.xor $push32=, $pop31, $41 4899; NO-SIMD128-NEXT: i32.store8 8($0), $pop32 4900; NO-SIMD128-NEXT: i32.xor $push34=, $24, $40 4901; NO-SIMD128-NEXT: i32.const $push72=, -1 4902; NO-SIMD128-NEXT: i32.xor $push33=, $8, $pop72 4903; NO-SIMD128-NEXT: i32.and $push35=, $pop34, $pop33 4904; NO-SIMD128-NEXT: i32.xor $push36=, $pop35, $40 4905; NO-SIMD128-NEXT: i32.store8 7($0), $pop36 4906; NO-SIMD128-NEXT: i32.xor $push38=, $23, $39 4907; NO-SIMD128-NEXT: i32.const $push71=, -1 4908; NO-SIMD128-NEXT: i32.xor $push37=, $7, $pop71 4909; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $pop37 4910; NO-SIMD128-NEXT: i32.xor $push40=, $pop39, $39 4911; NO-SIMD128-NEXT: i32.store8 6($0), $pop40 4912; NO-SIMD128-NEXT: i32.xor $push42=, $22, $38 4913; NO-SIMD128-NEXT: i32.const $push70=, -1 4914; NO-SIMD128-NEXT: i32.xor $push41=, $6, $pop70 4915; NO-SIMD128-NEXT: i32.and $push43=, $pop42, $pop41 4916; NO-SIMD128-NEXT: i32.xor $push44=, $pop43, $38 4917; NO-SIMD128-NEXT: i32.store8 5($0), $pop44 4918; NO-SIMD128-NEXT: i32.xor $push46=, $21, $37 4919; NO-SIMD128-NEXT: i32.const $push69=, -1 4920; NO-SIMD128-NEXT: i32.xor $push45=, $5, $pop69 4921; NO-SIMD128-NEXT: i32.and $push47=, $pop46, $pop45 4922; NO-SIMD128-NEXT: i32.xor $push48=, $pop47, $37 4923; NO-SIMD128-NEXT: i32.store8 4($0), $pop48 4924; NO-SIMD128-NEXT: i32.xor $push50=, $20, $36 4925; NO-SIMD128-NEXT: i32.const $push68=, -1 4926; NO-SIMD128-NEXT: i32.xor $push49=, $4, $pop68 4927; NO-SIMD128-NEXT: i32.and $push51=, $pop50, $pop49 4928; NO-SIMD128-NEXT: i32.xor $push52=, $pop51, $36 4929; NO-SIMD128-NEXT: i32.store8 3($0), $pop52 4930; NO-SIMD128-NEXT: i32.xor $push54=, $19, $35 4931; NO-SIMD128-NEXT: i32.const $push67=, -1 4932; NO-SIMD128-NEXT: i32.xor $push53=, $3, $pop67 4933; NO-SIMD128-NEXT: i32.and $push55=, $pop54, $pop53 4934; NO-SIMD128-NEXT: i32.xor $push56=, $pop55, $35 4935; NO-SIMD128-NEXT: i32.store8 2($0), $pop56 4936; NO-SIMD128-NEXT: i32.xor $push58=, $18, $34 4937; NO-SIMD128-NEXT: i32.const $push66=, -1 4938; NO-SIMD128-NEXT: i32.xor $push57=, $2, $pop66 4939; NO-SIMD128-NEXT: i32.and $push59=, $pop58, $pop57 4940; NO-SIMD128-NEXT: i32.xor $push60=, $pop59, $34 4941; NO-SIMD128-NEXT: i32.store8 1($0), $pop60 4942; NO-SIMD128-NEXT: i32.xor $push62=, $17, $33 4943; NO-SIMD128-NEXT: i32.const $push65=, -1 4944; NO-SIMD128-NEXT: i32.xor $push61=, $1, $pop65 4945; NO-SIMD128-NEXT: i32.and $push63=, $pop62, $pop61 4946; NO-SIMD128-NEXT: i32.xor $push64=, $pop63, $33 4947; NO-SIMD128-NEXT: i32.store8 0($0), $pop64 4948; NO-SIMD128-NEXT: return 4949; 4950; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8: 4951; NO-SIMD128-FAST: .functype bitselect_xor_reversed_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, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 4952; NO-SIMD128-FAST-NEXT: # %bb.0: 4953; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $17, $33 4954; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 4955; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 4956; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1 4957; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $33 4958; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4 4959; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $18, $34 4960; NO-SIMD128-FAST-NEXT: i32.const $push79=, -1 4961; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop79 4962; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5 4963; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $34 4964; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8 4965; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $19, $35 4966; NO-SIMD128-FAST-NEXT: i32.const $push78=, -1 4967; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop78 4968; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9 4969; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $35 4970; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12 4971; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $20, $36 4972; NO-SIMD128-FAST-NEXT: i32.const $push77=, -1 4973; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop77 4974; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13 4975; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $36 4976; NO-SIMD128-FAST-NEXT: i32.store8 3($0), $pop16 4977; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $21, $37 4978; NO-SIMD128-FAST-NEXT: i32.const $push76=, -1 4979; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $5, $pop76 4980; NO-SIMD128-FAST-NEXT: i32.and $push19=, $pop18, $pop17 4981; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $pop19, $37 4982; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop20 4983; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $22, $38 4984; NO-SIMD128-FAST-NEXT: i32.const $push75=, -1 4985; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $6, $pop75 4986; NO-SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop21 4987; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $pop23, $38 4988; NO-SIMD128-FAST-NEXT: i32.store8 5($0), $pop24 4989; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $23, $39 4990; NO-SIMD128-FAST-NEXT: i32.const $push74=, -1 4991; NO-SIMD128-FAST-NEXT: i32.xor $push25=, $7, $pop74 4992; NO-SIMD128-FAST-NEXT: i32.and $push27=, $pop26, $pop25 4993; NO-SIMD128-FAST-NEXT: i32.xor $push28=, $pop27, $39 4994; NO-SIMD128-FAST-NEXT: i32.store8 6($0), $pop28 4995; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $24, $40 4996; NO-SIMD128-FAST-NEXT: i32.const $push73=, -1 4997; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $8, $pop73 4998; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $pop29 4999; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $pop31, $40 5000; NO-SIMD128-FAST-NEXT: i32.store8 7($0), $pop32 5001; NO-SIMD128-FAST-NEXT: i32.xor $push34=, $25, $41 5002; NO-SIMD128-FAST-NEXT: i32.const $push72=, -1 5003; NO-SIMD128-FAST-NEXT: i32.xor $push33=, $9, $pop72 5004; NO-SIMD128-FAST-NEXT: i32.and $push35=, $pop34, $pop33 5005; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $pop35, $41 5006; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop36 5007; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $26, $42 5008; NO-SIMD128-FAST-NEXT: i32.const $push71=, -1 5009; NO-SIMD128-FAST-NEXT: i32.xor $push37=, $10, $pop71 5010; NO-SIMD128-FAST-NEXT: i32.and $push39=, $pop38, $pop37 5011; NO-SIMD128-FAST-NEXT: i32.xor $push40=, $pop39, $42 5012; NO-SIMD128-FAST-NEXT: i32.store8 9($0), $pop40 5013; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $27, $43 5014; NO-SIMD128-FAST-NEXT: i32.const $push70=, -1 5015; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $11, $pop70 5016; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop41 5017; NO-SIMD128-FAST-NEXT: i32.xor $push44=, $pop43, $43 5018; NO-SIMD128-FAST-NEXT: i32.store8 10($0), $pop44 5019; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $28, $44 5020; NO-SIMD128-FAST-NEXT: i32.const $push69=, -1 5021; NO-SIMD128-FAST-NEXT: i32.xor $push45=, $12, $pop69 5022; NO-SIMD128-FAST-NEXT: i32.and $push47=, $pop46, $pop45 5023; NO-SIMD128-FAST-NEXT: i32.xor $push48=, $pop47, $44 5024; NO-SIMD128-FAST-NEXT: i32.store8 11($0), $pop48 5025; NO-SIMD128-FAST-NEXT: i32.xor $push50=, $29, $45 5026; NO-SIMD128-FAST-NEXT: i32.const $push68=, -1 5027; NO-SIMD128-FAST-NEXT: i32.xor $push49=, $13, $pop68 5028; NO-SIMD128-FAST-NEXT: i32.and $push51=, $pop50, $pop49 5029; NO-SIMD128-FAST-NEXT: i32.xor $push52=, $pop51, $45 5030; NO-SIMD128-FAST-NEXT: i32.store8 12($0), $pop52 5031; NO-SIMD128-FAST-NEXT: i32.xor $push54=, $30, $46 5032; NO-SIMD128-FAST-NEXT: i32.const $push67=, -1 5033; NO-SIMD128-FAST-NEXT: i32.xor $push53=, $14, $pop67 5034; NO-SIMD128-FAST-NEXT: i32.and $push55=, $pop54, $pop53 5035; NO-SIMD128-FAST-NEXT: i32.xor $push56=, $pop55, $46 5036; NO-SIMD128-FAST-NEXT: i32.store8 13($0), $pop56 5037; NO-SIMD128-FAST-NEXT: i32.xor $push58=, $31, $47 5038; NO-SIMD128-FAST-NEXT: i32.const $push66=, -1 5039; NO-SIMD128-FAST-NEXT: i32.xor $push57=, $15, $pop66 5040; NO-SIMD128-FAST-NEXT: i32.and $push59=, $pop58, $pop57 5041; NO-SIMD128-FAST-NEXT: i32.xor $push60=, $pop59, $47 5042; NO-SIMD128-FAST-NEXT: i32.store8 14($0), $pop60 5043; NO-SIMD128-FAST-NEXT: i32.xor $push62=, $32, $48 5044; NO-SIMD128-FAST-NEXT: i32.const $push65=, -1 5045; NO-SIMD128-FAST-NEXT: i32.xor $push61=, $16, $pop65 5046; NO-SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop61 5047; NO-SIMD128-FAST-NEXT: i32.xor $push64=, $pop63, $48 5048; NO-SIMD128-FAST-NEXT: i32.store8 15($0), $pop64 5049; NO-SIMD128-FAST-NEXT: return 5050 %xor1 = xor <16 x i8> %v1, %v2 5051 %notc = xor <16 x i8> %c, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 5052 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 5053 %and = and <16 x i8> %xor1, %notc 5054 %a = xor <16 x i8> %and, %v2 5055 ret <16 x i8> %a 5056} 5057 5058; ============================================================================== 5059; 8 x i16 5060; ============================================================================== 5061define <8 x i16> @add_v8i16(<8 x i16> %x, <8 x i16> %y) { 5062; SIMD128-LABEL: add_v8i16: 5063; SIMD128: .functype add_v8i16 (v128, v128) -> (v128) 5064; SIMD128-NEXT: # %bb.0: 5065; SIMD128-NEXT: i16x8.add $push0=, $0, $1 5066; SIMD128-NEXT: return $pop0 5067; 5068; SIMD128-FAST-LABEL: add_v8i16: 5069; SIMD128-FAST: .functype add_v8i16 (v128, v128) -> (v128) 5070; SIMD128-FAST-NEXT: # %bb.0: 5071; SIMD128-FAST-NEXT: i16x8.add $push0=, $0, $1 5072; SIMD128-FAST-NEXT: return $pop0 5073; 5074; NO-SIMD128-LABEL: add_v8i16: 5075; NO-SIMD128: .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5076; NO-SIMD128-NEXT: # %bb.0: 5077; NO-SIMD128-NEXT: i32.add $push0=, $8, $16 5078; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 5079; NO-SIMD128-NEXT: i32.add $push1=, $7, $15 5080; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 5081; NO-SIMD128-NEXT: i32.add $push2=, $6, $14 5082; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 5083; NO-SIMD128-NEXT: i32.add $push3=, $5, $13 5084; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 5085; NO-SIMD128-NEXT: i32.add $push4=, $4, $12 5086; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 5087; NO-SIMD128-NEXT: i32.add $push5=, $3, $11 5088; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 5089; NO-SIMD128-NEXT: i32.add $push6=, $2, $10 5090; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 5091; NO-SIMD128-NEXT: i32.add $push7=, $1, $9 5092; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 5093; NO-SIMD128-NEXT: return 5094; 5095; NO-SIMD128-FAST-LABEL: add_v8i16: 5096; NO-SIMD128-FAST: .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5097; NO-SIMD128-FAST-NEXT: # %bb.0: 5098; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9 5099; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 5100; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $10 5101; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 5102; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $11 5103; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 5104; NO-SIMD128-FAST-NEXT: i32.add $push3=, $4, $12 5105; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 5106; NO-SIMD128-FAST-NEXT: i32.add $push4=, $5, $13 5107; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 5108; NO-SIMD128-FAST-NEXT: i32.add $push5=, $6, $14 5109; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 5110; NO-SIMD128-FAST-NEXT: i32.add $push6=, $7, $15 5111; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 5112; NO-SIMD128-FAST-NEXT: i32.add $push7=, $8, $16 5113; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 5114; NO-SIMD128-FAST-NEXT: return 5115 %a = add <8 x i16> %x, %y 5116 ret <8 x i16> %a 5117} 5118 5119define <8 x i16> @sub_v8i16(<8 x i16> %x, <8 x i16> %y) { 5120; SIMD128-LABEL: sub_v8i16: 5121; SIMD128: .functype sub_v8i16 (v128, v128) -> (v128) 5122; SIMD128-NEXT: # %bb.0: 5123; SIMD128-NEXT: i16x8.sub $push0=, $0, $1 5124; SIMD128-NEXT: return $pop0 5125; 5126; SIMD128-FAST-LABEL: sub_v8i16: 5127; SIMD128-FAST: .functype sub_v8i16 (v128, v128) -> (v128) 5128; SIMD128-FAST-NEXT: # %bb.0: 5129; SIMD128-FAST-NEXT: i16x8.sub $push0=, $0, $1 5130; SIMD128-FAST-NEXT: return $pop0 5131; 5132; NO-SIMD128-LABEL: sub_v8i16: 5133; NO-SIMD128: .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5134; NO-SIMD128-NEXT: # %bb.0: 5135; NO-SIMD128-NEXT: i32.sub $push0=, $8, $16 5136; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 5137; NO-SIMD128-NEXT: i32.sub $push1=, $7, $15 5138; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 5139; NO-SIMD128-NEXT: i32.sub $push2=, $6, $14 5140; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 5141; NO-SIMD128-NEXT: i32.sub $push3=, $5, $13 5142; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 5143; NO-SIMD128-NEXT: i32.sub $push4=, $4, $12 5144; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 5145; NO-SIMD128-NEXT: i32.sub $push5=, $3, $11 5146; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 5147; NO-SIMD128-NEXT: i32.sub $push6=, $2, $10 5148; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 5149; NO-SIMD128-NEXT: i32.sub $push7=, $1, $9 5150; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 5151; NO-SIMD128-NEXT: return 5152; 5153; NO-SIMD128-FAST-LABEL: sub_v8i16: 5154; NO-SIMD128-FAST: .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5155; NO-SIMD128-FAST-NEXT: # %bb.0: 5156; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $9 5157; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 5158; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $10 5159; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 5160; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $11 5161; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 5162; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $4, $12 5163; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 5164; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $5, $13 5165; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 5166; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $6, $14 5167; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 5168; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $7, $15 5169; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 5170; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $8, $16 5171; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 5172; NO-SIMD128-FAST-NEXT: return 5173 %a = sub <8 x i16> %x, %y 5174 ret <8 x i16> %a 5175} 5176 5177define <8 x i16> @mul_v8i16(<8 x i16> %x, <8 x i16> %y) { 5178; SIMD128-LABEL: mul_v8i16: 5179; SIMD128: .functype mul_v8i16 (v128, v128) -> (v128) 5180; SIMD128-NEXT: # %bb.0: 5181; SIMD128-NEXT: i16x8.mul $push0=, $0, $1 5182; SIMD128-NEXT: return $pop0 5183; 5184; SIMD128-FAST-LABEL: mul_v8i16: 5185; SIMD128-FAST: .functype mul_v8i16 (v128, v128) -> (v128) 5186; SIMD128-FAST-NEXT: # %bb.0: 5187; SIMD128-FAST-NEXT: i16x8.mul $push0=, $0, $1 5188; SIMD128-FAST-NEXT: return $pop0 5189; 5190; NO-SIMD128-LABEL: mul_v8i16: 5191; NO-SIMD128: .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5192; NO-SIMD128-NEXT: # %bb.0: 5193; NO-SIMD128-NEXT: i32.mul $push0=, $8, $16 5194; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 5195; NO-SIMD128-NEXT: i32.mul $push1=, $7, $15 5196; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 5197; NO-SIMD128-NEXT: i32.mul $push2=, $6, $14 5198; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 5199; NO-SIMD128-NEXT: i32.mul $push3=, $5, $13 5200; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 5201; NO-SIMD128-NEXT: i32.mul $push4=, $4, $12 5202; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 5203; NO-SIMD128-NEXT: i32.mul $push5=, $3, $11 5204; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 5205; NO-SIMD128-NEXT: i32.mul $push6=, $2, $10 5206; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 5207; NO-SIMD128-NEXT: i32.mul $push7=, $1, $9 5208; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 5209; NO-SIMD128-NEXT: return 5210; 5211; NO-SIMD128-FAST-LABEL: mul_v8i16: 5212; NO-SIMD128-FAST: .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5213; NO-SIMD128-FAST-NEXT: # %bb.0: 5214; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $9 5215; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 5216; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $10 5217; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 5218; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $11 5219; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 5220; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $4, $12 5221; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 5222; NO-SIMD128-FAST-NEXT: i32.mul $push4=, $5, $13 5223; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 5224; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $6, $14 5225; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 5226; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $7, $15 5227; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 5228; NO-SIMD128-FAST-NEXT: i32.mul $push7=, $8, $16 5229; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 5230; NO-SIMD128-FAST-NEXT: return 5231 %a = mul <8 x i16> %x, %y 5232 ret <8 x i16> %a 5233} 5234 5235define <8 x i16> @min_s_v8i16(<8 x i16> %x, <8 x i16> %y) { 5236; SIMD128-LABEL: min_s_v8i16: 5237; SIMD128: .functype min_s_v8i16 (v128, v128) -> (v128) 5238; SIMD128-NEXT: # %bb.0: 5239; SIMD128-NEXT: i16x8.min_s $push0=, $0, $1 5240; SIMD128-NEXT: return $pop0 5241; 5242; SIMD128-FAST-LABEL: min_s_v8i16: 5243; SIMD128-FAST: .functype min_s_v8i16 (v128, v128) -> (v128) 5244; SIMD128-FAST-NEXT: # %bb.0: 5245; SIMD128-FAST-NEXT: i16x8.min_s $push0=, $0, $1 5246; SIMD128-FAST-NEXT: return $pop0 5247; 5248; NO-SIMD128-LABEL: min_s_v8i16: 5249; NO-SIMD128: .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5250; NO-SIMD128-NEXT: # %bb.0: 5251; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8 5252; NO-SIMD128-NEXT: i32.extend16_s $push0=, $16 5253; NO-SIMD128-NEXT: i32.lt_s $push2=, $pop1, $pop0 5254; NO-SIMD128-NEXT: i32.select $push3=, $8, $16, $pop2 5255; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 5256; NO-SIMD128-NEXT: i32.extend16_s $push5=, $7 5257; NO-SIMD128-NEXT: i32.extend16_s $push4=, $15 5258; NO-SIMD128-NEXT: i32.lt_s $push6=, $pop5, $pop4 5259; NO-SIMD128-NEXT: i32.select $push7=, $7, $15, $pop6 5260; NO-SIMD128-NEXT: i32.store16 12($0), $pop7 5261; NO-SIMD128-NEXT: i32.extend16_s $push9=, $6 5262; NO-SIMD128-NEXT: i32.extend16_s $push8=, $14 5263; NO-SIMD128-NEXT: i32.lt_s $push10=, $pop9, $pop8 5264; NO-SIMD128-NEXT: i32.select $push11=, $6, $14, $pop10 5265; NO-SIMD128-NEXT: i32.store16 10($0), $pop11 5266; NO-SIMD128-NEXT: i32.extend16_s $push13=, $5 5267; NO-SIMD128-NEXT: i32.extend16_s $push12=, $13 5268; NO-SIMD128-NEXT: i32.lt_s $push14=, $pop13, $pop12 5269; NO-SIMD128-NEXT: i32.select $push15=, $5, $13, $pop14 5270; NO-SIMD128-NEXT: i32.store16 8($0), $pop15 5271; NO-SIMD128-NEXT: i32.extend16_s $push17=, $4 5272; NO-SIMD128-NEXT: i32.extend16_s $push16=, $12 5273; NO-SIMD128-NEXT: i32.lt_s $push18=, $pop17, $pop16 5274; NO-SIMD128-NEXT: i32.select $push19=, $4, $12, $pop18 5275; NO-SIMD128-NEXT: i32.store16 6($0), $pop19 5276; NO-SIMD128-NEXT: i32.extend16_s $push21=, $3 5277; NO-SIMD128-NEXT: i32.extend16_s $push20=, $11 5278; NO-SIMD128-NEXT: i32.lt_s $push22=, $pop21, $pop20 5279; NO-SIMD128-NEXT: i32.select $push23=, $3, $11, $pop22 5280; NO-SIMD128-NEXT: i32.store16 4($0), $pop23 5281; NO-SIMD128-NEXT: i32.extend16_s $push25=, $2 5282; NO-SIMD128-NEXT: i32.extend16_s $push24=, $10 5283; NO-SIMD128-NEXT: i32.lt_s $push26=, $pop25, $pop24 5284; NO-SIMD128-NEXT: i32.select $push27=, $2, $10, $pop26 5285; NO-SIMD128-NEXT: i32.store16 2($0), $pop27 5286; NO-SIMD128-NEXT: i32.extend16_s $push29=, $1 5287; NO-SIMD128-NEXT: i32.extend16_s $push28=, $9 5288; NO-SIMD128-NEXT: i32.lt_s $push30=, $pop29, $pop28 5289; NO-SIMD128-NEXT: i32.select $push31=, $1, $9, $pop30 5290; NO-SIMD128-NEXT: i32.store16 0($0), $pop31 5291; NO-SIMD128-NEXT: return 5292; 5293; NO-SIMD128-FAST-LABEL: min_s_v8i16: 5294; NO-SIMD128-FAST: .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5295; NO-SIMD128-FAST-NEXT: # %bb.0: 5296; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1 5297; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9 5298; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $pop1, $pop0 5299; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $9, $pop2 5300; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 5301; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2 5302; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $10 5303; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $pop5, $pop4 5304; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $10, $pop6 5305; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop7 5306; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $3 5307; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $11 5308; NO-SIMD128-FAST-NEXT: i32.lt_s $push10=, $pop9, $pop8 5309; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $11, $pop10 5310; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop11 5311; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $4 5312; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $12 5313; NO-SIMD128-FAST-NEXT: i32.lt_s $push14=, $pop13, $pop12 5314; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $12, $pop14 5315; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop15 5316; NO-SIMD128-FAST-NEXT: i32.extend16_s $push17=, $5 5317; NO-SIMD128-FAST-NEXT: i32.extend16_s $push16=, $13 5318; NO-SIMD128-FAST-NEXT: i32.lt_s $push18=, $pop17, $pop16 5319; NO-SIMD128-FAST-NEXT: i32.select $push19=, $5, $13, $pop18 5320; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop19 5321; NO-SIMD128-FAST-NEXT: i32.extend16_s $push21=, $6 5322; NO-SIMD128-FAST-NEXT: i32.extend16_s $push20=, $14 5323; NO-SIMD128-FAST-NEXT: i32.lt_s $push22=, $pop21, $pop20 5324; NO-SIMD128-FAST-NEXT: i32.select $push23=, $6, $14, $pop22 5325; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop23 5326; NO-SIMD128-FAST-NEXT: i32.extend16_s $push25=, $7 5327; NO-SIMD128-FAST-NEXT: i32.extend16_s $push24=, $15 5328; NO-SIMD128-FAST-NEXT: i32.lt_s $push26=, $pop25, $pop24 5329; NO-SIMD128-FAST-NEXT: i32.select $push27=, $7, $15, $pop26 5330; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop27 5331; NO-SIMD128-FAST-NEXT: i32.extend16_s $push29=, $8 5332; NO-SIMD128-FAST-NEXT: i32.extend16_s $push28=, $16 5333; NO-SIMD128-FAST-NEXT: i32.lt_s $push30=, $pop29, $pop28 5334; NO-SIMD128-FAST-NEXT: i32.select $push31=, $8, $16, $pop30 5335; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop31 5336; NO-SIMD128-FAST-NEXT: return 5337 %c = icmp slt <8 x i16> %x, %y 5338 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y 5339 ret <8 x i16> %a 5340} 5341 5342define <8 x i16> @min_u_v8i16(<8 x i16> %x, <8 x i16> %y) { 5343; SIMD128-LABEL: min_u_v8i16: 5344; SIMD128: .functype min_u_v8i16 (v128, v128) -> (v128) 5345; SIMD128-NEXT: # %bb.0: 5346; SIMD128-NEXT: i16x8.min_u $push0=, $0, $1 5347; SIMD128-NEXT: return $pop0 5348; 5349; SIMD128-FAST-LABEL: min_u_v8i16: 5350; SIMD128-FAST: .functype min_u_v8i16 (v128, v128) -> (v128) 5351; SIMD128-FAST-NEXT: # %bb.0: 5352; SIMD128-FAST-NEXT: i16x8.min_u $push0=, $0, $1 5353; SIMD128-FAST-NEXT: return $pop0 5354; 5355; NO-SIMD128-LABEL: min_u_v8i16: 5356; NO-SIMD128: .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5357; NO-SIMD128-NEXT: # %bb.0: 5358; NO-SIMD128-NEXT: i32.const $push0=, 65535 5359; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0 5360; NO-SIMD128-NEXT: i32.const $push47=, 65535 5361; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop47 5362; NO-SIMD128-NEXT: i32.lt_u $push3=, $pop2, $pop1 5363; NO-SIMD128-NEXT: i32.select $push4=, $8, $16, $pop3 5364; NO-SIMD128-NEXT: i32.store16 14($0), $pop4 5365; NO-SIMD128-NEXT: i32.const $push46=, 65535 5366; NO-SIMD128-NEXT: i32.and $push6=, $7, $pop46 5367; NO-SIMD128-NEXT: i32.const $push45=, 65535 5368; NO-SIMD128-NEXT: i32.and $push5=, $15, $pop45 5369; NO-SIMD128-NEXT: i32.lt_u $push7=, $pop6, $pop5 5370; NO-SIMD128-NEXT: i32.select $push8=, $7, $15, $pop7 5371; NO-SIMD128-NEXT: i32.store16 12($0), $pop8 5372; NO-SIMD128-NEXT: i32.const $push44=, 65535 5373; NO-SIMD128-NEXT: i32.and $push10=, $6, $pop44 5374; NO-SIMD128-NEXT: i32.const $push43=, 65535 5375; NO-SIMD128-NEXT: i32.and $push9=, $14, $pop43 5376; NO-SIMD128-NEXT: i32.lt_u $push11=, $pop10, $pop9 5377; NO-SIMD128-NEXT: i32.select $push12=, $6, $14, $pop11 5378; NO-SIMD128-NEXT: i32.store16 10($0), $pop12 5379; NO-SIMD128-NEXT: i32.const $push42=, 65535 5380; NO-SIMD128-NEXT: i32.and $push14=, $5, $pop42 5381; NO-SIMD128-NEXT: i32.const $push41=, 65535 5382; NO-SIMD128-NEXT: i32.and $push13=, $13, $pop41 5383; NO-SIMD128-NEXT: i32.lt_u $push15=, $pop14, $pop13 5384; NO-SIMD128-NEXT: i32.select $push16=, $5, $13, $pop15 5385; NO-SIMD128-NEXT: i32.store16 8($0), $pop16 5386; NO-SIMD128-NEXT: i32.const $push40=, 65535 5387; NO-SIMD128-NEXT: i32.and $push18=, $4, $pop40 5388; NO-SIMD128-NEXT: i32.const $push39=, 65535 5389; NO-SIMD128-NEXT: i32.and $push17=, $12, $pop39 5390; NO-SIMD128-NEXT: i32.lt_u $push19=, $pop18, $pop17 5391; NO-SIMD128-NEXT: i32.select $push20=, $4, $12, $pop19 5392; NO-SIMD128-NEXT: i32.store16 6($0), $pop20 5393; NO-SIMD128-NEXT: i32.const $push38=, 65535 5394; NO-SIMD128-NEXT: i32.and $push22=, $3, $pop38 5395; NO-SIMD128-NEXT: i32.const $push37=, 65535 5396; NO-SIMD128-NEXT: i32.and $push21=, $11, $pop37 5397; NO-SIMD128-NEXT: i32.lt_u $push23=, $pop22, $pop21 5398; NO-SIMD128-NEXT: i32.select $push24=, $3, $11, $pop23 5399; NO-SIMD128-NEXT: i32.store16 4($0), $pop24 5400; NO-SIMD128-NEXT: i32.const $push36=, 65535 5401; NO-SIMD128-NEXT: i32.and $push26=, $2, $pop36 5402; NO-SIMD128-NEXT: i32.const $push35=, 65535 5403; NO-SIMD128-NEXT: i32.and $push25=, $10, $pop35 5404; NO-SIMD128-NEXT: i32.lt_u $push27=, $pop26, $pop25 5405; NO-SIMD128-NEXT: i32.select $push28=, $2, $10, $pop27 5406; NO-SIMD128-NEXT: i32.store16 2($0), $pop28 5407; NO-SIMD128-NEXT: i32.const $push34=, 65535 5408; NO-SIMD128-NEXT: i32.and $push30=, $1, $pop34 5409; NO-SIMD128-NEXT: i32.const $push33=, 65535 5410; NO-SIMD128-NEXT: i32.and $push29=, $9, $pop33 5411; NO-SIMD128-NEXT: i32.lt_u $push31=, $pop30, $pop29 5412; NO-SIMD128-NEXT: i32.select $push32=, $1, $9, $pop31 5413; NO-SIMD128-NEXT: i32.store16 0($0), $pop32 5414; NO-SIMD128-NEXT: return 5415; 5416; NO-SIMD128-FAST-LABEL: min_u_v8i16: 5417; NO-SIMD128-FAST: .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5418; NO-SIMD128-FAST-NEXT: # %bb.0: 5419; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 5420; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 5421; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65535 5422; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop47 5423; NO-SIMD128-FAST-NEXT: i32.lt_u $push3=, $pop2, $pop1 5424; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $9, $pop3 5425; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4 5426; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65535 5427; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop46 5428; NO-SIMD128-FAST-NEXT: i32.const $push45=, 65535 5429; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop45 5430; NO-SIMD128-FAST-NEXT: i32.lt_u $push7=, $pop6, $pop5 5431; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $10, $pop7 5432; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8 5433; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65535 5434; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop44 5435; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65535 5436; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $pop43 5437; NO-SIMD128-FAST-NEXT: i32.lt_u $push11=, $pop10, $pop9 5438; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $11, $pop11 5439; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12 5440; NO-SIMD128-FAST-NEXT: i32.const $push42=, 65535 5441; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop42 5442; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65535 5443; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $pop41 5444; NO-SIMD128-FAST-NEXT: i32.lt_u $push15=, $pop14, $pop13 5445; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $12, $pop15 5446; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop16 5447; NO-SIMD128-FAST-NEXT: i32.const $push40=, 65535 5448; NO-SIMD128-FAST-NEXT: i32.and $push18=, $5, $pop40 5449; NO-SIMD128-FAST-NEXT: i32.const $push39=, 65535 5450; NO-SIMD128-FAST-NEXT: i32.and $push17=, $13, $pop39 5451; NO-SIMD128-FAST-NEXT: i32.lt_u $push19=, $pop18, $pop17 5452; NO-SIMD128-FAST-NEXT: i32.select $push20=, $5, $13, $pop19 5453; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop20 5454; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65535 5455; NO-SIMD128-FAST-NEXT: i32.and $push22=, $6, $pop38 5456; NO-SIMD128-FAST-NEXT: i32.const $push37=, 65535 5457; NO-SIMD128-FAST-NEXT: i32.and $push21=, $14, $pop37 5458; NO-SIMD128-FAST-NEXT: i32.lt_u $push23=, $pop22, $pop21 5459; NO-SIMD128-FAST-NEXT: i32.select $push24=, $6, $14, $pop23 5460; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop24 5461; NO-SIMD128-FAST-NEXT: i32.const $push36=, 65535 5462; NO-SIMD128-FAST-NEXT: i32.and $push26=, $7, $pop36 5463; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65535 5464; NO-SIMD128-FAST-NEXT: i32.and $push25=, $15, $pop35 5465; NO-SIMD128-FAST-NEXT: i32.lt_u $push27=, $pop26, $pop25 5466; NO-SIMD128-FAST-NEXT: i32.select $push28=, $7, $15, $pop27 5467; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop28 5468; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535 5469; NO-SIMD128-FAST-NEXT: i32.and $push30=, $8, $pop34 5470; NO-SIMD128-FAST-NEXT: i32.const $push33=, 65535 5471; NO-SIMD128-FAST-NEXT: i32.and $push29=, $16, $pop33 5472; NO-SIMD128-FAST-NEXT: i32.lt_u $push31=, $pop30, $pop29 5473; NO-SIMD128-FAST-NEXT: i32.select $push32=, $8, $16, $pop31 5474; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop32 5475; NO-SIMD128-FAST-NEXT: return 5476 %c = icmp ult <8 x i16> %x, %y 5477 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y 5478 ret <8 x i16> %a 5479} 5480 5481define <8 x i16> @max_s_v8i16(<8 x i16> %x, <8 x i16> %y) { 5482; SIMD128-LABEL: max_s_v8i16: 5483; SIMD128: .functype max_s_v8i16 (v128, v128) -> (v128) 5484; SIMD128-NEXT: # %bb.0: 5485; SIMD128-NEXT: i16x8.max_s $push0=, $0, $1 5486; SIMD128-NEXT: return $pop0 5487; 5488; SIMD128-FAST-LABEL: max_s_v8i16: 5489; SIMD128-FAST: .functype max_s_v8i16 (v128, v128) -> (v128) 5490; SIMD128-FAST-NEXT: # %bb.0: 5491; SIMD128-FAST-NEXT: i16x8.max_s $push0=, $0, $1 5492; SIMD128-FAST-NEXT: return $pop0 5493; 5494; NO-SIMD128-LABEL: max_s_v8i16: 5495; NO-SIMD128: .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5496; NO-SIMD128-NEXT: # %bb.0: 5497; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8 5498; NO-SIMD128-NEXT: i32.extend16_s $push0=, $16 5499; NO-SIMD128-NEXT: i32.gt_s $push2=, $pop1, $pop0 5500; NO-SIMD128-NEXT: i32.select $push3=, $8, $16, $pop2 5501; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 5502; NO-SIMD128-NEXT: i32.extend16_s $push5=, $7 5503; NO-SIMD128-NEXT: i32.extend16_s $push4=, $15 5504; NO-SIMD128-NEXT: i32.gt_s $push6=, $pop5, $pop4 5505; NO-SIMD128-NEXT: i32.select $push7=, $7, $15, $pop6 5506; NO-SIMD128-NEXT: i32.store16 12($0), $pop7 5507; NO-SIMD128-NEXT: i32.extend16_s $push9=, $6 5508; NO-SIMD128-NEXT: i32.extend16_s $push8=, $14 5509; NO-SIMD128-NEXT: i32.gt_s $push10=, $pop9, $pop8 5510; NO-SIMD128-NEXT: i32.select $push11=, $6, $14, $pop10 5511; NO-SIMD128-NEXT: i32.store16 10($0), $pop11 5512; NO-SIMD128-NEXT: i32.extend16_s $push13=, $5 5513; NO-SIMD128-NEXT: i32.extend16_s $push12=, $13 5514; NO-SIMD128-NEXT: i32.gt_s $push14=, $pop13, $pop12 5515; NO-SIMD128-NEXT: i32.select $push15=, $5, $13, $pop14 5516; NO-SIMD128-NEXT: i32.store16 8($0), $pop15 5517; NO-SIMD128-NEXT: i32.extend16_s $push17=, $4 5518; NO-SIMD128-NEXT: i32.extend16_s $push16=, $12 5519; NO-SIMD128-NEXT: i32.gt_s $push18=, $pop17, $pop16 5520; NO-SIMD128-NEXT: i32.select $push19=, $4, $12, $pop18 5521; NO-SIMD128-NEXT: i32.store16 6($0), $pop19 5522; NO-SIMD128-NEXT: i32.extend16_s $push21=, $3 5523; NO-SIMD128-NEXT: i32.extend16_s $push20=, $11 5524; NO-SIMD128-NEXT: i32.gt_s $push22=, $pop21, $pop20 5525; NO-SIMD128-NEXT: i32.select $push23=, $3, $11, $pop22 5526; NO-SIMD128-NEXT: i32.store16 4($0), $pop23 5527; NO-SIMD128-NEXT: i32.extend16_s $push25=, $2 5528; NO-SIMD128-NEXT: i32.extend16_s $push24=, $10 5529; NO-SIMD128-NEXT: i32.gt_s $push26=, $pop25, $pop24 5530; NO-SIMD128-NEXT: i32.select $push27=, $2, $10, $pop26 5531; NO-SIMD128-NEXT: i32.store16 2($0), $pop27 5532; NO-SIMD128-NEXT: i32.extend16_s $push29=, $1 5533; NO-SIMD128-NEXT: i32.extend16_s $push28=, $9 5534; NO-SIMD128-NEXT: i32.gt_s $push30=, $pop29, $pop28 5535; NO-SIMD128-NEXT: i32.select $push31=, $1, $9, $pop30 5536; NO-SIMD128-NEXT: i32.store16 0($0), $pop31 5537; NO-SIMD128-NEXT: return 5538; 5539; NO-SIMD128-FAST-LABEL: max_s_v8i16: 5540; NO-SIMD128-FAST: .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5541; NO-SIMD128-FAST-NEXT: # %bb.0: 5542; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1 5543; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9 5544; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $pop1, $pop0 5545; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $9, $pop2 5546; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 5547; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2 5548; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $10 5549; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $pop5, $pop4 5550; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $10, $pop6 5551; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop7 5552; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $3 5553; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $11 5554; NO-SIMD128-FAST-NEXT: i32.gt_s $push10=, $pop9, $pop8 5555; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $11, $pop10 5556; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop11 5557; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $4 5558; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $12 5559; NO-SIMD128-FAST-NEXT: i32.gt_s $push14=, $pop13, $pop12 5560; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $12, $pop14 5561; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop15 5562; NO-SIMD128-FAST-NEXT: i32.extend16_s $push17=, $5 5563; NO-SIMD128-FAST-NEXT: i32.extend16_s $push16=, $13 5564; NO-SIMD128-FAST-NEXT: i32.gt_s $push18=, $pop17, $pop16 5565; NO-SIMD128-FAST-NEXT: i32.select $push19=, $5, $13, $pop18 5566; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop19 5567; NO-SIMD128-FAST-NEXT: i32.extend16_s $push21=, $6 5568; NO-SIMD128-FAST-NEXT: i32.extend16_s $push20=, $14 5569; NO-SIMD128-FAST-NEXT: i32.gt_s $push22=, $pop21, $pop20 5570; NO-SIMD128-FAST-NEXT: i32.select $push23=, $6, $14, $pop22 5571; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop23 5572; NO-SIMD128-FAST-NEXT: i32.extend16_s $push25=, $7 5573; NO-SIMD128-FAST-NEXT: i32.extend16_s $push24=, $15 5574; NO-SIMD128-FAST-NEXT: i32.gt_s $push26=, $pop25, $pop24 5575; NO-SIMD128-FAST-NEXT: i32.select $push27=, $7, $15, $pop26 5576; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop27 5577; NO-SIMD128-FAST-NEXT: i32.extend16_s $push29=, $8 5578; NO-SIMD128-FAST-NEXT: i32.extend16_s $push28=, $16 5579; NO-SIMD128-FAST-NEXT: i32.gt_s $push30=, $pop29, $pop28 5580; NO-SIMD128-FAST-NEXT: i32.select $push31=, $8, $16, $pop30 5581; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop31 5582; NO-SIMD128-FAST-NEXT: return 5583 %c = icmp sgt <8 x i16> %x, %y 5584 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y 5585 ret <8 x i16> %a 5586} 5587 5588define <8 x i16> @max_u_v8i16(<8 x i16> %x, <8 x i16> %y) { 5589; SIMD128-LABEL: max_u_v8i16: 5590; SIMD128: .functype max_u_v8i16 (v128, v128) -> (v128) 5591; SIMD128-NEXT: # %bb.0: 5592; SIMD128-NEXT: i16x8.max_u $push0=, $0, $1 5593; SIMD128-NEXT: return $pop0 5594; 5595; SIMD128-FAST-LABEL: max_u_v8i16: 5596; SIMD128-FAST: .functype max_u_v8i16 (v128, v128) -> (v128) 5597; SIMD128-FAST-NEXT: # %bb.0: 5598; SIMD128-FAST-NEXT: i16x8.max_u $push0=, $0, $1 5599; SIMD128-FAST-NEXT: return $pop0 5600; 5601; NO-SIMD128-LABEL: max_u_v8i16: 5602; NO-SIMD128: .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5603; NO-SIMD128-NEXT: # %bb.0: 5604; NO-SIMD128-NEXT: i32.const $push0=, 65535 5605; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0 5606; NO-SIMD128-NEXT: i32.const $push47=, 65535 5607; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop47 5608; NO-SIMD128-NEXT: i32.gt_u $push3=, $pop2, $pop1 5609; NO-SIMD128-NEXT: i32.select $push4=, $8, $16, $pop3 5610; NO-SIMD128-NEXT: i32.store16 14($0), $pop4 5611; NO-SIMD128-NEXT: i32.const $push46=, 65535 5612; NO-SIMD128-NEXT: i32.and $push6=, $7, $pop46 5613; NO-SIMD128-NEXT: i32.const $push45=, 65535 5614; NO-SIMD128-NEXT: i32.and $push5=, $15, $pop45 5615; NO-SIMD128-NEXT: i32.gt_u $push7=, $pop6, $pop5 5616; NO-SIMD128-NEXT: i32.select $push8=, $7, $15, $pop7 5617; NO-SIMD128-NEXT: i32.store16 12($0), $pop8 5618; NO-SIMD128-NEXT: i32.const $push44=, 65535 5619; NO-SIMD128-NEXT: i32.and $push10=, $6, $pop44 5620; NO-SIMD128-NEXT: i32.const $push43=, 65535 5621; NO-SIMD128-NEXT: i32.and $push9=, $14, $pop43 5622; NO-SIMD128-NEXT: i32.gt_u $push11=, $pop10, $pop9 5623; NO-SIMD128-NEXT: i32.select $push12=, $6, $14, $pop11 5624; NO-SIMD128-NEXT: i32.store16 10($0), $pop12 5625; NO-SIMD128-NEXT: i32.const $push42=, 65535 5626; NO-SIMD128-NEXT: i32.and $push14=, $5, $pop42 5627; NO-SIMD128-NEXT: i32.const $push41=, 65535 5628; NO-SIMD128-NEXT: i32.and $push13=, $13, $pop41 5629; NO-SIMD128-NEXT: i32.gt_u $push15=, $pop14, $pop13 5630; NO-SIMD128-NEXT: i32.select $push16=, $5, $13, $pop15 5631; NO-SIMD128-NEXT: i32.store16 8($0), $pop16 5632; NO-SIMD128-NEXT: i32.const $push40=, 65535 5633; NO-SIMD128-NEXT: i32.and $push18=, $4, $pop40 5634; NO-SIMD128-NEXT: i32.const $push39=, 65535 5635; NO-SIMD128-NEXT: i32.and $push17=, $12, $pop39 5636; NO-SIMD128-NEXT: i32.gt_u $push19=, $pop18, $pop17 5637; NO-SIMD128-NEXT: i32.select $push20=, $4, $12, $pop19 5638; NO-SIMD128-NEXT: i32.store16 6($0), $pop20 5639; NO-SIMD128-NEXT: i32.const $push38=, 65535 5640; NO-SIMD128-NEXT: i32.and $push22=, $3, $pop38 5641; NO-SIMD128-NEXT: i32.const $push37=, 65535 5642; NO-SIMD128-NEXT: i32.and $push21=, $11, $pop37 5643; NO-SIMD128-NEXT: i32.gt_u $push23=, $pop22, $pop21 5644; NO-SIMD128-NEXT: i32.select $push24=, $3, $11, $pop23 5645; NO-SIMD128-NEXT: i32.store16 4($0), $pop24 5646; NO-SIMD128-NEXT: i32.const $push36=, 65535 5647; NO-SIMD128-NEXT: i32.and $push26=, $2, $pop36 5648; NO-SIMD128-NEXT: i32.const $push35=, 65535 5649; NO-SIMD128-NEXT: i32.and $push25=, $10, $pop35 5650; NO-SIMD128-NEXT: i32.gt_u $push27=, $pop26, $pop25 5651; NO-SIMD128-NEXT: i32.select $push28=, $2, $10, $pop27 5652; NO-SIMD128-NEXT: i32.store16 2($0), $pop28 5653; NO-SIMD128-NEXT: i32.const $push34=, 65535 5654; NO-SIMD128-NEXT: i32.and $push30=, $1, $pop34 5655; NO-SIMD128-NEXT: i32.const $push33=, 65535 5656; NO-SIMD128-NEXT: i32.and $push29=, $9, $pop33 5657; NO-SIMD128-NEXT: i32.gt_u $push31=, $pop30, $pop29 5658; NO-SIMD128-NEXT: i32.select $push32=, $1, $9, $pop31 5659; NO-SIMD128-NEXT: i32.store16 0($0), $pop32 5660; NO-SIMD128-NEXT: return 5661; 5662; NO-SIMD128-FAST-LABEL: max_u_v8i16: 5663; NO-SIMD128-FAST: .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5664; NO-SIMD128-FAST-NEXT: # %bb.0: 5665; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 5666; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 5667; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65535 5668; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop47 5669; NO-SIMD128-FAST-NEXT: i32.gt_u $push3=, $pop2, $pop1 5670; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $9, $pop3 5671; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4 5672; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65535 5673; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop46 5674; NO-SIMD128-FAST-NEXT: i32.const $push45=, 65535 5675; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop45 5676; NO-SIMD128-FAST-NEXT: i32.gt_u $push7=, $pop6, $pop5 5677; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $10, $pop7 5678; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8 5679; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65535 5680; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop44 5681; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65535 5682; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $pop43 5683; NO-SIMD128-FAST-NEXT: i32.gt_u $push11=, $pop10, $pop9 5684; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $11, $pop11 5685; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12 5686; NO-SIMD128-FAST-NEXT: i32.const $push42=, 65535 5687; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop42 5688; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65535 5689; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $pop41 5690; NO-SIMD128-FAST-NEXT: i32.gt_u $push15=, $pop14, $pop13 5691; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $12, $pop15 5692; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop16 5693; NO-SIMD128-FAST-NEXT: i32.const $push40=, 65535 5694; NO-SIMD128-FAST-NEXT: i32.and $push18=, $5, $pop40 5695; NO-SIMD128-FAST-NEXT: i32.const $push39=, 65535 5696; NO-SIMD128-FAST-NEXT: i32.and $push17=, $13, $pop39 5697; NO-SIMD128-FAST-NEXT: i32.gt_u $push19=, $pop18, $pop17 5698; NO-SIMD128-FAST-NEXT: i32.select $push20=, $5, $13, $pop19 5699; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop20 5700; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65535 5701; NO-SIMD128-FAST-NEXT: i32.and $push22=, $6, $pop38 5702; NO-SIMD128-FAST-NEXT: i32.const $push37=, 65535 5703; NO-SIMD128-FAST-NEXT: i32.and $push21=, $14, $pop37 5704; NO-SIMD128-FAST-NEXT: i32.gt_u $push23=, $pop22, $pop21 5705; NO-SIMD128-FAST-NEXT: i32.select $push24=, $6, $14, $pop23 5706; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop24 5707; NO-SIMD128-FAST-NEXT: i32.const $push36=, 65535 5708; NO-SIMD128-FAST-NEXT: i32.and $push26=, $7, $pop36 5709; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65535 5710; NO-SIMD128-FAST-NEXT: i32.and $push25=, $15, $pop35 5711; NO-SIMD128-FAST-NEXT: i32.gt_u $push27=, $pop26, $pop25 5712; NO-SIMD128-FAST-NEXT: i32.select $push28=, $7, $15, $pop27 5713; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop28 5714; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535 5715; NO-SIMD128-FAST-NEXT: i32.and $push30=, $8, $pop34 5716; NO-SIMD128-FAST-NEXT: i32.const $push33=, 65535 5717; NO-SIMD128-FAST-NEXT: i32.and $push29=, $16, $pop33 5718; NO-SIMD128-FAST-NEXT: i32.gt_u $push31=, $pop30, $pop29 5719; NO-SIMD128-FAST-NEXT: i32.select $push32=, $8, $16, $pop31 5720; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop32 5721; NO-SIMD128-FAST-NEXT: return 5722 %c = icmp ugt <8 x i16> %x, %y 5723 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y 5724 ret <8 x i16> %a 5725} 5726 5727define <8 x i16> @avgr_u_v8i16(<8 x i16> %x, <8 x i16> %y) { 5728; SIMD128-LABEL: avgr_u_v8i16: 5729; SIMD128: .functype avgr_u_v8i16 (v128, v128) -> (v128) 5730; SIMD128-NEXT: # %bb.0: 5731; SIMD128-NEXT: i16x8.avgr_u $push0=, $0, $1 5732; SIMD128-NEXT: return $pop0 5733; 5734; SIMD128-FAST-LABEL: avgr_u_v8i16: 5735; SIMD128-FAST: .functype avgr_u_v8i16 (v128, v128) -> (v128) 5736; SIMD128-FAST-NEXT: # %bb.0: 5737; SIMD128-FAST-NEXT: i16x8.avgr_u $push0=, $0, $1 5738; SIMD128-FAST-NEXT: return $pop0 5739; 5740; NO-SIMD128-LABEL: avgr_u_v8i16: 5741; NO-SIMD128: .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5742; NO-SIMD128-NEXT: # %bb.0: 5743; NO-SIMD128-NEXT: i32.add $push0=, $8, $16 5744; NO-SIMD128-NEXT: i32.const $push1=, 1 5745; NO-SIMD128-NEXT: i32.add $push2=, $pop0, $pop1 5746; NO-SIMD128-NEXT: i32.const $push3=, 65534 5747; NO-SIMD128-NEXT: i32.and $push4=, $pop2, $pop3 5748; NO-SIMD128-NEXT: i32.const $push55=, 1 5749; NO-SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop55 5750; NO-SIMD128-NEXT: i32.store16 14($0), $pop5 5751; NO-SIMD128-NEXT: i32.add $push6=, $7, $15 5752; NO-SIMD128-NEXT: i32.const $push54=, 1 5753; NO-SIMD128-NEXT: i32.add $push7=, $pop6, $pop54 5754; NO-SIMD128-NEXT: i32.const $push53=, 65534 5755; NO-SIMD128-NEXT: i32.and $push8=, $pop7, $pop53 5756; NO-SIMD128-NEXT: i32.const $push52=, 1 5757; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop52 5758; NO-SIMD128-NEXT: i32.store16 12($0), $pop9 5759; NO-SIMD128-NEXT: i32.add $push10=, $6, $14 5760; NO-SIMD128-NEXT: i32.const $push51=, 1 5761; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop51 5762; NO-SIMD128-NEXT: i32.const $push50=, 65534 5763; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop50 5764; NO-SIMD128-NEXT: i32.const $push49=, 1 5765; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop49 5766; NO-SIMD128-NEXT: i32.store16 10($0), $pop13 5767; NO-SIMD128-NEXT: i32.add $push14=, $5, $13 5768; NO-SIMD128-NEXT: i32.const $push48=, 1 5769; NO-SIMD128-NEXT: i32.add $push15=, $pop14, $pop48 5770; NO-SIMD128-NEXT: i32.const $push47=, 65534 5771; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $pop47 5772; NO-SIMD128-NEXT: i32.const $push46=, 1 5773; NO-SIMD128-NEXT: i32.shr_u $push17=, $pop16, $pop46 5774; NO-SIMD128-NEXT: i32.store16 8($0), $pop17 5775; NO-SIMD128-NEXT: i32.add $push18=, $4, $12 5776; NO-SIMD128-NEXT: i32.const $push45=, 1 5777; NO-SIMD128-NEXT: i32.add $push19=, $pop18, $pop45 5778; NO-SIMD128-NEXT: i32.const $push44=, 65534 5779; NO-SIMD128-NEXT: i32.and $push20=, $pop19, $pop44 5780; NO-SIMD128-NEXT: i32.const $push43=, 1 5781; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop43 5782; NO-SIMD128-NEXT: i32.store16 6($0), $pop21 5783; NO-SIMD128-NEXT: i32.add $push22=, $3, $11 5784; NO-SIMD128-NEXT: i32.const $push42=, 1 5785; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop42 5786; NO-SIMD128-NEXT: i32.const $push41=, 65534 5787; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop41 5788; NO-SIMD128-NEXT: i32.const $push40=, 1 5789; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop40 5790; NO-SIMD128-NEXT: i32.store16 4($0), $pop25 5791; NO-SIMD128-NEXT: i32.add $push26=, $2, $10 5792; NO-SIMD128-NEXT: i32.const $push39=, 1 5793; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop39 5794; NO-SIMD128-NEXT: i32.const $push38=, 65534 5795; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop38 5796; NO-SIMD128-NEXT: i32.const $push37=, 1 5797; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop37 5798; NO-SIMD128-NEXT: i32.store16 2($0), $pop29 5799; NO-SIMD128-NEXT: i32.add $push30=, $1, $9 5800; NO-SIMD128-NEXT: i32.const $push36=, 1 5801; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop36 5802; NO-SIMD128-NEXT: i32.const $push35=, 65534 5803; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop35 5804; NO-SIMD128-NEXT: i32.const $push34=, 1 5805; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop34 5806; NO-SIMD128-NEXT: i32.store16 0($0), $pop33 5807; NO-SIMD128-NEXT: return 5808; 5809; NO-SIMD128-FAST-LABEL: avgr_u_v8i16: 5810; NO-SIMD128-FAST: .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5811; NO-SIMD128-FAST-NEXT: # %bb.0: 5812; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9 5813; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 5814; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 5815; NO-SIMD128-FAST-NEXT: i32.const $push3=, 65534 5816; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 5817; NO-SIMD128-FAST-NEXT: i32.const $push55=, 1 5818; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop55 5819; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop5 5820; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $10 5821; NO-SIMD128-FAST-NEXT: i32.const $push54=, 1 5822; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop54 5823; NO-SIMD128-FAST-NEXT: i32.const $push53=, 65534 5824; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop53 5825; NO-SIMD128-FAST-NEXT: i32.const $push52=, 1 5826; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop52 5827; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop9 5828; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $11 5829; NO-SIMD128-FAST-NEXT: i32.const $push51=, 1 5830; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop51 5831; NO-SIMD128-FAST-NEXT: i32.const $push50=, 65534 5832; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop50 5833; NO-SIMD128-FAST-NEXT: i32.const $push49=, 1 5834; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop49 5835; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop13 5836; NO-SIMD128-FAST-NEXT: i32.add $push14=, $4, $12 5837; NO-SIMD128-FAST-NEXT: i32.const $push48=, 1 5838; NO-SIMD128-FAST-NEXT: i32.add $push15=, $pop14, $pop48 5839; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65534 5840; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $pop47 5841; NO-SIMD128-FAST-NEXT: i32.const $push46=, 1 5842; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop46 5843; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop17 5844; NO-SIMD128-FAST-NEXT: i32.add $push18=, $5, $13 5845; NO-SIMD128-FAST-NEXT: i32.const $push45=, 1 5846; NO-SIMD128-FAST-NEXT: i32.add $push19=, $pop18, $pop45 5847; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65534 5848; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $pop44 5849; NO-SIMD128-FAST-NEXT: i32.const $push43=, 1 5850; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop43 5851; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop21 5852; NO-SIMD128-FAST-NEXT: i32.add $push22=, $6, $14 5853; NO-SIMD128-FAST-NEXT: i32.const $push42=, 1 5854; NO-SIMD128-FAST-NEXT: i32.add $push23=, $pop22, $pop42 5855; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65534 5856; NO-SIMD128-FAST-NEXT: i32.and $push24=, $pop23, $pop41 5857; NO-SIMD128-FAST-NEXT: i32.const $push40=, 1 5858; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop40 5859; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop25 5860; NO-SIMD128-FAST-NEXT: i32.add $push26=, $7, $15 5861; NO-SIMD128-FAST-NEXT: i32.const $push39=, 1 5862; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop39 5863; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65534 5864; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop38 5865; NO-SIMD128-FAST-NEXT: i32.const $push37=, 1 5866; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop37 5867; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop29 5868; NO-SIMD128-FAST-NEXT: i32.add $push30=, $8, $16 5869; NO-SIMD128-FAST-NEXT: i32.const $push36=, 1 5870; NO-SIMD128-FAST-NEXT: i32.add $push31=, $pop30, $pop36 5871; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65534 5872; NO-SIMD128-FAST-NEXT: i32.and $push32=, $pop31, $pop35 5873; NO-SIMD128-FAST-NEXT: i32.const $push34=, 1 5874; NO-SIMD128-FAST-NEXT: i32.shr_u $push33=, $pop32, $pop34 5875; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop33 5876; NO-SIMD128-FAST-NEXT: return 5877 %a = add nuw <8 x i16> %x, %y 5878 %b = add nuw <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 5879 %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 5880 ret <8 x i16> %c 5881} 5882 5883define <8 x i16> @avgr_u_v8i16_wrap(<8 x i16> %x, <8 x i16> %y) { 5884; SIMD128-LABEL: avgr_u_v8i16_wrap: 5885; SIMD128: .functype avgr_u_v8i16_wrap (v128, v128) -> (v128) 5886; SIMD128-NEXT: # %bb.0: 5887; SIMD128-NEXT: i16x8.add $push0=, $0, $1 5888; SIMD128-NEXT: v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1 5889; SIMD128-NEXT: i16x8.add $push2=, $pop0, $pop1 5890; SIMD128-NEXT: i32.const $push3=, 1 5891; SIMD128-NEXT: i16x8.shr_u $push4=, $pop2, $pop3 5892; SIMD128-NEXT: return $pop4 5893; 5894; SIMD128-FAST-LABEL: avgr_u_v8i16_wrap: 5895; SIMD128-FAST: .functype avgr_u_v8i16_wrap (v128, v128) -> (v128) 5896; SIMD128-FAST-NEXT: # %bb.0: 5897; SIMD128-FAST-NEXT: i16x8.add $push2=, $0, $1 5898; SIMD128-FAST-NEXT: v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1 5899; SIMD128-FAST-NEXT: i16x8.add $push1=, $pop2, $pop3 5900; SIMD128-FAST-NEXT: i32.const $push4=, 1 5901; SIMD128-FAST-NEXT: i16x8.shr_u $push0=, $pop1, $pop4 5902; SIMD128-FAST-NEXT: return $pop0 5903; 5904; NO-SIMD128-LABEL: avgr_u_v8i16_wrap: 5905; NO-SIMD128: .functype avgr_u_v8i16_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5906; NO-SIMD128-NEXT: # %bb.0: 5907; NO-SIMD128-NEXT: i32.add $push0=, $8, $16 5908; NO-SIMD128-NEXT: i32.const $push1=, 1 5909; NO-SIMD128-NEXT: i32.add $push2=, $pop0, $pop1 5910; NO-SIMD128-NEXT: i32.const $push3=, 65534 5911; NO-SIMD128-NEXT: i32.and $push4=, $pop2, $pop3 5912; NO-SIMD128-NEXT: i32.const $push55=, 1 5913; NO-SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop55 5914; NO-SIMD128-NEXT: i32.store16 14($0), $pop5 5915; NO-SIMD128-NEXT: i32.add $push6=, $7, $15 5916; NO-SIMD128-NEXT: i32.const $push54=, 1 5917; NO-SIMD128-NEXT: i32.add $push7=, $pop6, $pop54 5918; NO-SIMD128-NEXT: i32.const $push53=, 65534 5919; NO-SIMD128-NEXT: i32.and $push8=, $pop7, $pop53 5920; NO-SIMD128-NEXT: i32.const $push52=, 1 5921; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop52 5922; NO-SIMD128-NEXT: i32.store16 12($0), $pop9 5923; NO-SIMD128-NEXT: i32.add $push10=, $6, $14 5924; NO-SIMD128-NEXT: i32.const $push51=, 1 5925; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop51 5926; NO-SIMD128-NEXT: i32.const $push50=, 65534 5927; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop50 5928; NO-SIMD128-NEXT: i32.const $push49=, 1 5929; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop49 5930; NO-SIMD128-NEXT: i32.store16 10($0), $pop13 5931; NO-SIMD128-NEXT: i32.add $push14=, $5, $13 5932; NO-SIMD128-NEXT: i32.const $push48=, 1 5933; NO-SIMD128-NEXT: i32.add $push15=, $pop14, $pop48 5934; NO-SIMD128-NEXT: i32.const $push47=, 65534 5935; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $pop47 5936; NO-SIMD128-NEXT: i32.const $push46=, 1 5937; NO-SIMD128-NEXT: i32.shr_u $push17=, $pop16, $pop46 5938; NO-SIMD128-NEXT: i32.store16 8($0), $pop17 5939; NO-SIMD128-NEXT: i32.add $push18=, $4, $12 5940; NO-SIMD128-NEXT: i32.const $push45=, 1 5941; NO-SIMD128-NEXT: i32.add $push19=, $pop18, $pop45 5942; NO-SIMD128-NEXT: i32.const $push44=, 65534 5943; NO-SIMD128-NEXT: i32.and $push20=, $pop19, $pop44 5944; NO-SIMD128-NEXT: i32.const $push43=, 1 5945; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop43 5946; NO-SIMD128-NEXT: i32.store16 6($0), $pop21 5947; NO-SIMD128-NEXT: i32.add $push22=, $3, $11 5948; NO-SIMD128-NEXT: i32.const $push42=, 1 5949; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop42 5950; NO-SIMD128-NEXT: i32.const $push41=, 65534 5951; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop41 5952; NO-SIMD128-NEXT: i32.const $push40=, 1 5953; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop40 5954; NO-SIMD128-NEXT: i32.store16 4($0), $pop25 5955; NO-SIMD128-NEXT: i32.add $push26=, $2, $10 5956; NO-SIMD128-NEXT: i32.const $push39=, 1 5957; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop39 5958; NO-SIMD128-NEXT: i32.const $push38=, 65534 5959; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop38 5960; NO-SIMD128-NEXT: i32.const $push37=, 1 5961; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop37 5962; NO-SIMD128-NEXT: i32.store16 2($0), $pop29 5963; NO-SIMD128-NEXT: i32.add $push30=, $1, $9 5964; NO-SIMD128-NEXT: i32.const $push36=, 1 5965; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop36 5966; NO-SIMD128-NEXT: i32.const $push35=, 65534 5967; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop35 5968; NO-SIMD128-NEXT: i32.const $push34=, 1 5969; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop34 5970; NO-SIMD128-NEXT: i32.store16 0($0), $pop33 5971; NO-SIMD128-NEXT: return 5972; 5973; NO-SIMD128-FAST-LABEL: avgr_u_v8i16_wrap: 5974; NO-SIMD128-FAST: .functype avgr_u_v8i16_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 5975; NO-SIMD128-FAST-NEXT: # %bb.0: 5976; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9 5977; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1 5978; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1 5979; NO-SIMD128-FAST-NEXT: i32.const $push3=, 65534 5980; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3 5981; NO-SIMD128-FAST-NEXT: i32.const $push55=, 1 5982; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop55 5983; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop5 5984; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $10 5985; NO-SIMD128-FAST-NEXT: i32.const $push54=, 1 5986; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop54 5987; NO-SIMD128-FAST-NEXT: i32.const $push53=, 65534 5988; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop53 5989; NO-SIMD128-FAST-NEXT: i32.const $push52=, 1 5990; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop52 5991; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop9 5992; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $11 5993; NO-SIMD128-FAST-NEXT: i32.const $push51=, 1 5994; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop51 5995; NO-SIMD128-FAST-NEXT: i32.const $push50=, 65534 5996; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop50 5997; NO-SIMD128-FAST-NEXT: i32.const $push49=, 1 5998; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop49 5999; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop13 6000; NO-SIMD128-FAST-NEXT: i32.add $push14=, $4, $12 6001; NO-SIMD128-FAST-NEXT: i32.const $push48=, 1 6002; NO-SIMD128-FAST-NEXT: i32.add $push15=, $pop14, $pop48 6003; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65534 6004; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $pop47 6005; NO-SIMD128-FAST-NEXT: i32.const $push46=, 1 6006; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop46 6007; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop17 6008; NO-SIMD128-FAST-NEXT: i32.add $push18=, $5, $13 6009; NO-SIMD128-FAST-NEXT: i32.const $push45=, 1 6010; NO-SIMD128-FAST-NEXT: i32.add $push19=, $pop18, $pop45 6011; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65534 6012; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $pop44 6013; NO-SIMD128-FAST-NEXT: i32.const $push43=, 1 6014; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop43 6015; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop21 6016; NO-SIMD128-FAST-NEXT: i32.add $push22=, $6, $14 6017; NO-SIMD128-FAST-NEXT: i32.const $push42=, 1 6018; NO-SIMD128-FAST-NEXT: i32.add $push23=, $pop22, $pop42 6019; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65534 6020; NO-SIMD128-FAST-NEXT: i32.and $push24=, $pop23, $pop41 6021; NO-SIMD128-FAST-NEXT: i32.const $push40=, 1 6022; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop40 6023; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop25 6024; NO-SIMD128-FAST-NEXT: i32.add $push26=, $7, $15 6025; NO-SIMD128-FAST-NEXT: i32.const $push39=, 1 6026; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop39 6027; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65534 6028; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop38 6029; NO-SIMD128-FAST-NEXT: i32.const $push37=, 1 6030; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop37 6031; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop29 6032; NO-SIMD128-FAST-NEXT: i32.add $push30=, $8, $16 6033; NO-SIMD128-FAST-NEXT: i32.const $push36=, 1 6034; NO-SIMD128-FAST-NEXT: i32.add $push31=, $pop30, $pop36 6035; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65534 6036; NO-SIMD128-FAST-NEXT: i32.and $push32=, $pop31, $pop35 6037; NO-SIMD128-FAST-NEXT: i32.const $push34=, 1 6038; NO-SIMD128-FAST-NEXT: i32.shr_u $push33=, $pop32, $pop34 6039; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop33 6040; NO-SIMD128-FAST-NEXT: return 6041 %a = add <8 x i16> %x, %y 6042 %b = add <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 6043 %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2> 6044 ret <8 x i16> %c 6045} 6046 6047define <8 x i16> @abs_v8i16(<8 x i16> %x) { 6048; SIMD128-LABEL: abs_v8i16: 6049; SIMD128: .functype abs_v8i16 (v128) -> (v128) 6050; SIMD128-NEXT: # %bb.0: 6051; SIMD128-NEXT: i16x8.abs $push0=, $0 6052; SIMD128-NEXT: return $pop0 6053; 6054; SIMD128-FAST-LABEL: abs_v8i16: 6055; SIMD128-FAST: .functype abs_v8i16 (v128) -> (v128) 6056; SIMD128-FAST-NEXT: # %bb.0: 6057; SIMD128-FAST-NEXT: i16x8.abs $push0=, $0 6058; SIMD128-FAST-NEXT: return $pop0 6059; 6060; NO-SIMD128-LABEL: abs_v8i16: 6061; NO-SIMD128: .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6062; NO-SIMD128-NEXT: # %bb.0: 6063; NO-SIMD128-NEXT: i32.extend16_s $push0=, $8 6064; NO-SIMD128-NEXT: i32.const $push1=, 15 6065; NO-SIMD128-NEXT: i32.shr_s $push47=, $pop0, $pop1 6066; NO-SIMD128-NEXT: local.tee $push46=, $9=, $pop47 6067; NO-SIMD128-NEXT: i32.xor $push2=, $8, $pop46 6068; NO-SIMD128-NEXT: i32.sub $push3=, $pop2, $9 6069; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 6070; NO-SIMD128-NEXT: i32.extend16_s $push4=, $7 6071; NO-SIMD128-NEXT: i32.const $push45=, 15 6072; NO-SIMD128-NEXT: i32.shr_s $push44=, $pop4, $pop45 6073; NO-SIMD128-NEXT: local.tee $push43=, $8=, $pop44 6074; NO-SIMD128-NEXT: i32.xor $push5=, $7, $pop43 6075; NO-SIMD128-NEXT: i32.sub $push6=, $pop5, $8 6076; NO-SIMD128-NEXT: i32.store16 12($0), $pop6 6077; NO-SIMD128-NEXT: i32.extend16_s $push7=, $6 6078; NO-SIMD128-NEXT: i32.const $push42=, 15 6079; NO-SIMD128-NEXT: i32.shr_s $push41=, $pop7, $pop42 6080; NO-SIMD128-NEXT: local.tee $push40=, $8=, $pop41 6081; NO-SIMD128-NEXT: i32.xor $push8=, $6, $pop40 6082; NO-SIMD128-NEXT: i32.sub $push9=, $pop8, $8 6083; NO-SIMD128-NEXT: i32.store16 10($0), $pop9 6084; NO-SIMD128-NEXT: i32.extend16_s $push10=, $5 6085; NO-SIMD128-NEXT: i32.const $push39=, 15 6086; NO-SIMD128-NEXT: i32.shr_s $push38=, $pop10, $pop39 6087; NO-SIMD128-NEXT: local.tee $push37=, $8=, $pop38 6088; NO-SIMD128-NEXT: i32.xor $push11=, $5, $pop37 6089; NO-SIMD128-NEXT: i32.sub $push12=, $pop11, $8 6090; NO-SIMD128-NEXT: i32.store16 8($0), $pop12 6091; NO-SIMD128-NEXT: i32.extend16_s $push13=, $4 6092; NO-SIMD128-NEXT: i32.const $push36=, 15 6093; NO-SIMD128-NEXT: i32.shr_s $push35=, $pop13, $pop36 6094; NO-SIMD128-NEXT: local.tee $push34=, $8=, $pop35 6095; NO-SIMD128-NEXT: i32.xor $push14=, $4, $pop34 6096; NO-SIMD128-NEXT: i32.sub $push15=, $pop14, $8 6097; NO-SIMD128-NEXT: i32.store16 6($0), $pop15 6098; NO-SIMD128-NEXT: i32.extend16_s $push16=, $3 6099; NO-SIMD128-NEXT: i32.const $push33=, 15 6100; NO-SIMD128-NEXT: i32.shr_s $push32=, $pop16, $pop33 6101; NO-SIMD128-NEXT: local.tee $push31=, $8=, $pop32 6102; NO-SIMD128-NEXT: i32.xor $push17=, $3, $pop31 6103; NO-SIMD128-NEXT: i32.sub $push18=, $pop17, $8 6104; NO-SIMD128-NEXT: i32.store16 4($0), $pop18 6105; NO-SIMD128-NEXT: i32.extend16_s $push19=, $2 6106; NO-SIMD128-NEXT: i32.const $push30=, 15 6107; NO-SIMD128-NEXT: i32.shr_s $push29=, $pop19, $pop30 6108; NO-SIMD128-NEXT: local.tee $push28=, $8=, $pop29 6109; NO-SIMD128-NEXT: i32.xor $push20=, $2, $pop28 6110; NO-SIMD128-NEXT: i32.sub $push21=, $pop20, $8 6111; NO-SIMD128-NEXT: i32.store16 2($0), $pop21 6112; NO-SIMD128-NEXT: i32.extend16_s $push22=, $1 6113; NO-SIMD128-NEXT: i32.const $push27=, 15 6114; NO-SIMD128-NEXT: i32.shr_s $push26=, $pop22, $pop27 6115; NO-SIMD128-NEXT: local.tee $push25=, $8=, $pop26 6116; NO-SIMD128-NEXT: i32.xor $push23=, $1, $pop25 6117; NO-SIMD128-NEXT: i32.sub $push24=, $pop23, $8 6118; NO-SIMD128-NEXT: i32.store16 0($0), $pop24 6119; NO-SIMD128-NEXT: return 6120; 6121; NO-SIMD128-FAST-LABEL: abs_v8i16: 6122; NO-SIMD128-FAST: .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6123; NO-SIMD128-FAST-NEXT: # %bb.0: 6124; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $1 6125; NO-SIMD128-FAST-NEXT: i32.const $push1=, 15 6126; NO-SIMD128-FAST-NEXT: i32.shr_s $push47=, $pop0, $pop1 6127; NO-SIMD128-FAST-NEXT: local.tee $push46=, $9=, $pop47 6128; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop46 6129; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop2, $9 6130; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 6131; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $2 6132; NO-SIMD128-FAST-NEXT: i32.const $push45=, 15 6133; NO-SIMD128-FAST-NEXT: i32.shr_s $push44=, $pop4, $pop45 6134; NO-SIMD128-FAST-NEXT: local.tee $push43=, $1=, $pop44 6135; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop43 6136; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $1 6137; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6 6138; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $3 6139; NO-SIMD128-FAST-NEXT: i32.const $push42=, 15 6140; NO-SIMD128-FAST-NEXT: i32.shr_s $push41=, $pop7, $pop42 6141; NO-SIMD128-FAST-NEXT: local.tee $push40=, $2=, $pop41 6142; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $3, $pop40 6143; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop8, $2 6144; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9 6145; NO-SIMD128-FAST-NEXT: i32.extend16_s $push10=, $4 6146; NO-SIMD128-FAST-NEXT: i32.const $push39=, 15 6147; NO-SIMD128-FAST-NEXT: i32.shr_s $push38=, $pop10, $pop39 6148; NO-SIMD128-FAST-NEXT: local.tee $push37=, $3=, $pop38 6149; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $4, $pop37 6150; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop11, $3 6151; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop12 6152; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $5 6153; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15 6154; NO-SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop13, $pop36 6155; NO-SIMD128-FAST-NEXT: local.tee $push34=, $4=, $pop35 6156; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $5, $pop34 6157; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $pop14, $4 6158; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop15 6159; NO-SIMD128-FAST-NEXT: i32.extend16_s $push16=, $6 6160; NO-SIMD128-FAST-NEXT: i32.const $push33=, 15 6161; NO-SIMD128-FAST-NEXT: i32.shr_s $push32=, $pop16, $pop33 6162; NO-SIMD128-FAST-NEXT: local.tee $push31=, $5=, $pop32 6163; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $6, $pop31 6164; NO-SIMD128-FAST-NEXT: i32.sub $push18=, $pop17, $5 6165; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop18 6166; NO-SIMD128-FAST-NEXT: i32.extend16_s $push19=, $7 6167; NO-SIMD128-FAST-NEXT: i32.const $push30=, 15 6168; NO-SIMD128-FAST-NEXT: i32.shr_s $push29=, $pop19, $pop30 6169; NO-SIMD128-FAST-NEXT: local.tee $push28=, $6=, $pop29 6170; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $7, $pop28 6171; NO-SIMD128-FAST-NEXT: i32.sub $push21=, $pop20, $6 6172; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop21 6173; NO-SIMD128-FAST-NEXT: i32.extend16_s $push22=, $8 6174; NO-SIMD128-FAST-NEXT: i32.const $push27=, 15 6175; NO-SIMD128-FAST-NEXT: i32.shr_s $push26=, $pop22, $pop27 6176; NO-SIMD128-FAST-NEXT: local.tee $push25=, $7=, $pop26 6177; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $8, $pop25 6178; NO-SIMD128-FAST-NEXT: i32.sub $push24=, $pop23, $7 6179; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop24 6180; NO-SIMD128-FAST-NEXT: return 6181 %a = sub <8 x i16> zeroinitializer, %x 6182 %b = icmp slt <8 x i16> %x, zeroinitializer 6183 %c = select <8 x i1> %b, <8 x i16> %a, <8 x i16> %x 6184 ret <8 x i16> %c 6185} 6186 6187define <8 x i16> @neg_v8i16(<8 x i16> %x) { 6188; SIMD128-LABEL: neg_v8i16: 6189; SIMD128: .functype neg_v8i16 (v128) -> (v128) 6190; SIMD128-NEXT: # %bb.0: 6191; SIMD128-NEXT: i16x8.neg $push0=, $0 6192; SIMD128-NEXT: return $pop0 6193; 6194; SIMD128-FAST-LABEL: neg_v8i16: 6195; SIMD128-FAST: .functype neg_v8i16 (v128) -> (v128) 6196; SIMD128-FAST-NEXT: # %bb.0: 6197; SIMD128-FAST-NEXT: i16x8.neg $push0=, $0 6198; SIMD128-FAST-NEXT: return $pop0 6199; 6200; NO-SIMD128-LABEL: neg_v8i16: 6201; NO-SIMD128: .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6202; NO-SIMD128-NEXT: # %bb.0: 6203; NO-SIMD128-NEXT: i32.const $push0=, 0 6204; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $8 6205; NO-SIMD128-NEXT: i32.store16 14($0), $pop1 6206; NO-SIMD128-NEXT: i32.const $push15=, 0 6207; NO-SIMD128-NEXT: i32.sub $push2=, $pop15, $7 6208; NO-SIMD128-NEXT: i32.store16 12($0), $pop2 6209; NO-SIMD128-NEXT: i32.const $push14=, 0 6210; NO-SIMD128-NEXT: i32.sub $push3=, $pop14, $6 6211; NO-SIMD128-NEXT: i32.store16 10($0), $pop3 6212; NO-SIMD128-NEXT: i32.const $push13=, 0 6213; NO-SIMD128-NEXT: i32.sub $push4=, $pop13, $5 6214; NO-SIMD128-NEXT: i32.store16 8($0), $pop4 6215; NO-SIMD128-NEXT: i32.const $push12=, 0 6216; NO-SIMD128-NEXT: i32.sub $push5=, $pop12, $4 6217; NO-SIMD128-NEXT: i32.store16 6($0), $pop5 6218; NO-SIMD128-NEXT: i32.const $push11=, 0 6219; NO-SIMD128-NEXT: i32.sub $push6=, $pop11, $3 6220; NO-SIMD128-NEXT: i32.store16 4($0), $pop6 6221; NO-SIMD128-NEXT: i32.const $push10=, 0 6222; NO-SIMD128-NEXT: i32.sub $push7=, $pop10, $2 6223; NO-SIMD128-NEXT: i32.store16 2($0), $pop7 6224; NO-SIMD128-NEXT: i32.const $push9=, 0 6225; NO-SIMD128-NEXT: i32.sub $push8=, $pop9, $1 6226; NO-SIMD128-NEXT: i32.store16 0($0), $pop8 6227; NO-SIMD128-NEXT: return 6228; 6229; NO-SIMD128-FAST-LABEL: neg_v8i16: 6230; NO-SIMD128-FAST: .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6231; NO-SIMD128-FAST-NEXT: # %bb.0: 6232; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0 6233; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1 6234; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1 6235; NO-SIMD128-FAST-NEXT: i32.const $push15=, 0 6236; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop15, $2 6237; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2 6238; NO-SIMD128-FAST-NEXT: i32.const $push14=, 0 6239; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop14, $3 6240; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3 6241; NO-SIMD128-FAST-NEXT: i32.const $push13=, 0 6242; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $pop13, $4 6243; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop4 6244; NO-SIMD128-FAST-NEXT: i32.const $push12=, 0 6245; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $pop12, $5 6246; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop5 6247; NO-SIMD128-FAST-NEXT: i32.const $push11=, 0 6248; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop11, $6 6249; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop6 6250; NO-SIMD128-FAST-NEXT: i32.const $push10=, 0 6251; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $pop10, $7 6252; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop7 6253; NO-SIMD128-FAST-NEXT: i32.const $push9=, 0 6254; NO-SIMD128-FAST-NEXT: i32.sub $push8=, $pop9, $8 6255; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop8 6256; NO-SIMD128-FAST-NEXT: return 6257 %a = sub <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, 6258 %x 6259 ret <8 x i16> %a 6260} 6261 6262define <8 x i16> @shl_v8i16(<8 x i16> %v, i16 %x) { 6263; SIMD128-LABEL: shl_v8i16: 6264; SIMD128: .functype shl_v8i16 (v128, i32) -> (v128) 6265; SIMD128-NEXT: # %bb.0: 6266; SIMD128-NEXT: i16x8.shl $push0=, $0, $1 6267; SIMD128-NEXT: return $pop0 6268; 6269; SIMD128-FAST-LABEL: shl_v8i16: 6270; SIMD128-FAST: .functype shl_v8i16 (v128, i32) -> (v128) 6271; SIMD128-FAST-NEXT: # %bb.0: 6272; SIMD128-FAST-NEXT: i16x8.shl $push0=, $0, $1 6273; SIMD128-FAST-NEXT: return $pop0 6274; 6275; NO-SIMD128-LABEL: shl_v8i16: 6276; NO-SIMD128: .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6277; NO-SIMD128-NEXT: # %bb.0: 6278; NO-SIMD128-NEXT: i32.const $push0=, 65535 6279; NO-SIMD128-NEXT: i32.and $push10=, $9, $pop0 6280; NO-SIMD128-NEXT: local.tee $push9=, $9=, $pop10 6281; NO-SIMD128-NEXT: i32.shl $push1=, $8, $pop9 6282; NO-SIMD128-NEXT: i32.store16 14($0), $pop1 6283; NO-SIMD128-NEXT: i32.shl $push2=, $7, $9 6284; NO-SIMD128-NEXT: i32.store16 12($0), $pop2 6285; NO-SIMD128-NEXT: i32.shl $push3=, $6, $9 6286; NO-SIMD128-NEXT: i32.store16 10($0), $pop3 6287; NO-SIMD128-NEXT: i32.shl $push4=, $5, $9 6288; NO-SIMD128-NEXT: i32.store16 8($0), $pop4 6289; NO-SIMD128-NEXT: i32.shl $push5=, $4, $9 6290; NO-SIMD128-NEXT: i32.store16 6($0), $pop5 6291; NO-SIMD128-NEXT: i32.shl $push6=, $3, $9 6292; NO-SIMD128-NEXT: i32.store16 4($0), $pop6 6293; NO-SIMD128-NEXT: i32.shl $push7=, $2, $9 6294; NO-SIMD128-NEXT: i32.store16 2($0), $pop7 6295; NO-SIMD128-NEXT: i32.shl $push8=, $1, $9 6296; NO-SIMD128-NEXT: i32.store16 0($0), $pop8 6297; NO-SIMD128-NEXT: return 6298; 6299; NO-SIMD128-FAST-LABEL: shl_v8i16: 6300; NO-SIMD128-FAST: .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6301; NO-SIMD128-FAST-NEXT: # %bb.0: 6302; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 6303; NO-SIMD128-FAST-NEXT: i32.and $push10=, $9, $pop0 6304; NO-SIMD128-FAST-NEXT: local.tee $push9=, $9=, $pop10 6305; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $pop9 6306; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 6307; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $9 6308; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 6309; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $9 6310; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3 6311; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $4, $9 6312; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop4 6313; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $5, $9 6314; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop5 6315; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $6, $9 6316; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop6 6317; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $7, $9 6318; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop7 6319; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $8, $9 6320; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop8 6321; NO-SIMD128-FAST-NEXT: return 6322 %t = insertelement <8 x i16> undef, i16 %x, i32 0 6323 %s = shufflevector <8 x i16> %t, <8 x i16> undef, 6324 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 6325 %a = shl <8 x i16> %v, %s 6326 ret <8 x i16> %a 6327} 6328 6329define <8 x i16> @shl_const_v8i16(<8 x i16> %v) { 6330; SIMD128-LABEL: shl_const_v8i16: 6331; SIMD128: .functype shl_const_v8i16 (v128) -> (v128) 6332; SIMD128-NEXT: # %bb.0: 6333; SIMD128-NEXT: i32.const $push0=, 5 6334; SIMD128-NEXT: i16x8.shl $push1=, $0, $pop0 6335; SIMD128-NEXT: return $pop1 6336; 6337; SIMD128-FAST-LABEL: shl_const_v8i16: 6338; SIMD128-FAST: .functype shl_const_v8i16 (v128) -> (v128) 6339; SIMD128-FAST-NEXT: # %bb.0: 6340; SIMD128-FAST-NEXT: i32.const $push1=, 5 6341; SIMD128-FAST-NEXT: i16x8.shl $push0=, $0, $pop1 6342; SIMD128-FAST-NEXT: return $pop0 6343; 6344; NO-SIMD128-LABEL: shl_const_v8i16: 6345; NO-SIMD128: .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6346; NO-SIMD128-NEXT: # %bb.0: 6347; NO-SIMD128-NEXT: i32.const $push0=, 5 6348; NO-SIMD128-NEXT: i32.shl $push1=, $8, $pop0 6349; NO-SIMD128-NEXT: i32.store16 14($0), $pop1 6350; NO-SIMD128-NEXT: i32.const $push15=, 5 6351; NO-SIMD128-NEXT: i32.shl $push2=, $7, $pop15 6352; NO-SIMD128-NEXT: i32.store16 12($0), $pop2 6353; NO-SIMD128-NEXT: i32.const $push14=, 5 6354; NO-SIMD128-NEXT: i32.shl $push3=, $6, $pop14 6355; NO-SIMD128-NEXT: i32.store16 10($0), $pop3 6356; NO-SIMD128-NEXT: i32.const $push13=, 5 6357; NO-SIMD128-NEXT: i32.shl $push4=, $5, $pop13 6358; NO-SIMD128-NEXT: i32.store16 8($0), $pop4 6359; NO-SIMD128-NEXT: i32.const $push12=, 5 6360; NO-SIMD128-NEXT: i32.shl $push5=, $4, $pop12 6361; NO-SIMD128-NEXT: i32.store16 6($0), $pop5 6362; NO-SIMD128-NEXT: i32.const $push11=, 5 6363; NO-SIMD128-NEXT: i32.shl $push6=, $3, $pop11 6364; NO-SIMD128-NEXT: i32.store16 4($0), $pop6 6365; NO-SIMD128-NEXT: i32.const $push10=, 5 6366; NO-SIMD128-NEXT: i32.shl $push7=, $2, $pop10 6367; NO-SIMD128-NEXT: i32.store16 2($0), $pop7 6368; NO-SIMD128-NEXT: i32.const $push9=, 5 6369; NO-SIMD128-NEXT: i32.shl $push8=, $1, $pop9 6370; NO-SIMD128-NEXT: i32.store16 0($0), $pop8 6371; NO-SIMD128-NEXT: return 6372; 6373; NO-SIMD128-FAST-LABEL: shl_const_v8i16: 6374; NO-SIMD128-FAST: .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6375; NO-SIMD128-FAST-NEXT: # %bb.0: 6376; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5 6377; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0 6378; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1 6379; NO-SIMD128-FAST-NEXT: i32.const $push15=, 5 6380; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop15 6381; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2 6382; NO-SIMD128-FAST-NEXT: i32.const $push14=, 5 6383; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop14 6384; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3 6385; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5 6386; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $4, $pop13 6387; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop4 6388; NO-SIMD128-FAST-NEXT: i32.const $push12=, 5 6389; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $5, $pop12 6390; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop5 6391; NO-SIMD128-FAST-NEXT: i32.const $push11=, 5 6392; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $6, $pop11 6393; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop6 6394; NO-SIMD128-FAST-NEXT: i32.const $push10=, 5 6395; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $7, $pop10 6396; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop7 6397; NO-SIMD128-FAST-NEXT: i32.const $push9=, 5 6398; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $8, $pop9 6399; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop8 6400; NO-SIMD128-FAST-NEXT: return 6401 %a = shl <8 x i16> %v, 6402 <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5> 6403 ret <8 x i16> %a 6404} 6405 6406define <8 x i16> @shl_vec_v8i16(<8 x i16> %v, <8 x i16> %x) { 6407; SIMD128-LABEL: shl_vec_v8i16: 6408; SIMD128: .functype shl_vec_v8i16 (v128, v128) -> (v128) 6409; SIMD128-NEXT: # %bb.0: 6410; SIMD128-NEXT: i16x8.extract_lane_u $push7=, $0, 0 6411; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0 6412; SIMD128-NEXT: i32.const $push1=, 15 6413; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 6414; SIMD128-NEXT: i32.shl $push8=, $pop7, $pop6 6415; SIMD128-NEXT: i16x8.splat $push9=, $pop8 6416; SIMD128-NEXT: i16x8.extract_lane_u $push3=, $0, 1 6417; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1 6418; SIMD128-NEXT: i32.const $push47=, 15 6419; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47 6420; SIMD128-NEXT: i32.shl $push4=, $pop3, $pop2 6421; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4 6422; SIMD128-NEXT: i16x8.extract_lane_u $push13=, $0, 2 6423; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2 6424; SIMD128-NEXT: i32.const $push46=, 15 6425; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46 6426; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12 6427; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14 6428; SIMD128-NEXT: i16x8.extract_lane_u $push18=, $0, 3 6429; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3 6430; SIMD128-NEXT: i32.const $push45=, 15 6431; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45 6432; SIMD128-NEXT: i32.shl $push19=, $pop18, $pop17 6433; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19 6434; SIMD128-NEXT: i16x8.extract_lane_u $push23=, $0, 4 6435; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4 6436; SIMD128-NEXT: i32.const $push44=, 15 6437; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44 6438; SIMD128-NEXT: i32.shl $push24=, $pop23, $pop22 6439; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24 6440; SIMD128-NEXT: i16x8.extract_lane_u $push28=, $0, 5 6441; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5 6442; SIMD128-NEXT: i32.const $push43=, 15 6443; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43 6444; SIMD128-NEXT: i32.shl $push29=, $pop28, $pop27 6445; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29 6446; SIMD128-NEXT: i16x8.extract_lane_u $push33=, $0, 6 6447; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6 6448; SIMD128-NEXT: i32.const $push42=, 15 6449; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42 6450; SIMD128-NEXT: i32.shl $push34=, $pop33, $pop32 6451; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34 6452; SIMD128-NEXT: i16x8.extract_lane_u $push38=, $0, 7 6453; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7 6454; SIMD128-NEXT: i32.const $push41=, 15 6455; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41 6456; SIMD128-NEXT: i32.shl $push39=, $pop38, $pop37 6457; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39 6458; SIMD128-NEXT: return $pop40 6459; 6460; SIMD128-FAST-LABEL: shl_vec_v8i16: 6461; SIMD128-FAST: .functype shl_vec_v8i16 (v128, v128) -> (v128) 6462; SIMD128-FAST-NEXT: # %bb.0: 6463; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push8=, $0, 0 6464; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0 6465; SIMD128-FAST-NEXT: i32.const $push2=, 15 6466; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 6467; SIMD128-FAST-NEXT: i32.shl $push9=, $pop8, $pop7 6468; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9 6469; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push4=, $0, 1 6470; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1 6471; SIMD128-FAST-NEXT: i32.const $push47=, 15 6472; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47 6473; SIMD128-FAST-NEXT: i32.shl $push5=, $pop4, $pop3 6474; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5 6475; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push14=, $0, 2 6476; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2 6477; SIMD128-FAST-NEXT: i32.const $push46=, 15 6478; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46 6479; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13 6480; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15 6481; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push19=, $0, 3 6482; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3 6483; SIMD128-FAST-NEXT: i32.const $push45=, 15 6484; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45 6485; SIMD128-FAST-NEXT: i32.shl $push20=, $pop19, $pop18 6486; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20 6487; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push24=, $0, 4 6488; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4 6489; SIMD128-FAST-NEXT: i32.const $push44=, 15 6490; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44 6491; SIMD128-FAST-NEXT: i32.shl $push25=, $pop24, $pop23 6492; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25 6493; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push29=, $0, 5 6494; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5 6495; SIMD128-FAST-NEXT: i32.const $push43=, 15 6496; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43 6497; SIMD128-FAST-NEXT: i32.shl $push30=, $pop29, $pop28 6498; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30 6499; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push34=, $0, 6 6500; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6 6501; SIMD128-FAST-NEXT: i32.const $push42=, 15 6502; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42 6503; SIMD128-FAST-NEXT: i32.shl $push35=, $pop34, $pop33 6504; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35 6505; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push39=, $0, 7 6506; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7 6507; SIMD128-FAST-NEXT: i32.const $push41=, 15 6508; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41 6509; SIMD128-FAST-NEXT: i32.shl $push40=, $pop39, $pop38 6510; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40 6511; SIMD128-FAST-NEXT: return $pop0 6512; 6513; NO-SIMD128-LABEL: shl_vec_v8i16: 6514; NO-SIMD128: .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6515; NO-SIMD128-NEXT: # %bb.0: 6516; NO-SIMD128-NEXT: i32.const $push0=, 65535 6517; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop0 6518; NO-SIMD128-NEXT: i32.shl $push2=, $8, $pop1 6519; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 6520; NO-SIMD128-NEXT: i32.const $push23=, 65535 6521; NO-SIMD128-NEXT: i32.and $push3=, $15, $pop23 6522; NO-SIMD128-NEXT: i32.shl $push4=, $7, $pop3 6523; NO-SIMD128-NEXT: i32.store16 12($0), $pop4 6524; NO-SIMD128-NEXT: i32.const $push22=, 65535 6525; NO-SIMD128-NEXT: i32.and $push5=, $14, $pop22 6526; NO-SIMD128-NEXT: i32.shl $push6=, $6, $pop5 6527; NO-SIMD128-NEXT: i32.store16 10($0), $pop6 6528; NO-SIMD128-NEXT: i32.const $push21=, 65535 6529; NO-SIMD128-NEXT: i32.and $push7=, $13, $pop21 6530; NO-SIMD128-NEXT: i32.shl $push8=, $5, $pop7 6531; NO-SIMD128-NEXT: i32.store16 8($0), $pop8 6532; NO-SIMD128-NEXT: i32.const $push20=, 65535 6533; NO-SIMD128-NEXT: i32.and $push9=, $12, $pop20 6534; NO-SIMD128-NEXT: i32.shl $push10=, $4, $pop9 6535; NO-SIMD128-NEXT: i32.store16 6($0), $pop10 6536; NO-SIMD128-NEXT: i32.const $push19=, 65535 6537; NO-SIMD128-NEXT: i32.and $push11=, $11, $pop19 6538; NO-SIMD128-NEXT: i32.shl $push12=, $3, $pop11 6539; NO-SIMD128-NEXT: i32.store16 4($0), $pop12 6540; NO-SIMD128-NEXT: i32.const $push18=, 65535 6541; NO-SIMD128-NEXT: i32.and $push13=, $10, $pop18 6542; NO-SIMD128-NEXT: i32.shl $push14=, $2, $pop13 6543; NO-SIMD128-NEXT: i32.store16 2($0), $pop14 6544; NO-SIMD128-NEXT: i32.const $push17=, 65535 6545; NO-SIMD128-NEXT: i32.and $push15=, $9, $pop17 6546; NO-SIMD128-NEXT: i32.shl $push16=, $1, $pop15 6547; NO-SIMD128-NEXT: i32.store16 0($0), $pop16 6548; NO-SIMD128-NEXT: return 6549; 6550; NO-SIMD128-FAST-LABEL: shl_vec_v8i16: 6551; NO-SIMD128-FAST: .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6552; NO-SIMD128-FAST-NEXT: # %bb.0: 6553; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 6554; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop0 6555; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $pop1 6556; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 6557; NO-SIMD128-FAST-NEXT: i32.const $push23=, 65535 6558; NO-SIMD128-FAST-NEXT: i32.and $push3=, $10, $pop23 6559; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $2, $pop3 6560; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4 6561; NO-SIMD128-FAST-NEXT: i32.const $push22=, 65535 6562; NO-SIMD128-FAST-NEXT: i32.and $push5=, $11, $pop22 6563; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $3, $pop5 6564; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6 6565; NO-SIMD128-FAST-NEXT: i32.const $push21=, 65535 6566; NO-SIMD128-FAST-NEXT: i32.and $push7=, $12, $pop21 6567; NO-SIMD128-FAST-NEXT: i32.shl $push8=, $4, $pop7 6568; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop8 6569; NO-SIMD128-FAST-NEXT: i32.const $push20=, 65535 6570; NO-SIMD128-FAST-NEXT: i32.and $push9=, $13, $pop20 6571; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $5, $pop9 6572; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop10 6573; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535 6574; NO-SIMD128-FAST-NEXT: i32.and $push11=, $14, $pop19 6575; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $6, $pop11 6576; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop12 6577; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535 6578; NO-SIMD128-FAST-NEXT: i32.and $push13=, $15, $pop18 6579; NO-SIMD128-FAST-NEXT: i32.shl $push14=, $7, $pop13 6580; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop14 6581; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535 6582; NO-SIMD128-FAST-NEXT: i32.and $push15=, $16, $pop17 6583; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $pop15 6584; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop16 6585; NO-SIMD128-FAST-NEXT: return 6586 %a = shl <8 x i16> %v, %x 6587 ret <8 x i16> %a 6588} 6589 6590define <8 x i16> @shr_s_v8i16(<8 x i16> %v, i16 %x) { 6591; SIMD128-LABEL: shr_s_v8i16: 6592; SIMD128: .functype shr_s_v8i16 (v128, i32) -> (v128) 6593; SIMD128-NEXT: # %bb.0: 6594; SIMD128-NEXT: i16x8.shr_s $push0=, $0, $1 6595; SIMD128-NEXT: return $pop0 6596; 6597; SIMD128-FAST-LABEL: shr_s_v8i16: 6598; SIMD128-FAST: .functype shr_s_v8i16 (v128, i32) -> (v128) 6599; SIMD128-FAST-NEXT: # %bb.0: 6600; SIMD128-FAST-NEXT: i16x8.shr_s $push0=, $0, $1 6601; SIMD128-FAST-NEXT: return $pop0 6602; 6603; NO-SIMD128-LABEL: shr_s_v8i16: 6604; NO-SIMD128: .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6605; NO-SIMD128-NEXT: # %bb.0: 6606; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8 6607; NO-SIMD128-NEXT: i32.const $push0=, 65535 6608; NO-SIMD128-NEXT: i32.and $push18=, $9, $pop0 6609; NO-SIMD128-NEXT: local.tee $push17=, $9=, $pop18 6610; NO-SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop17 6611; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 6612; NO-SIMD128-NEXT: i32.extend16_s $push3=, $7 6613; NO-SIMD128-NEXT: i32.shr_s $push4=, $pop3, $9 6614; NO-SIMD128-NEXT: i32.store16 12($0), $pop4 6615; NO-SIMD128-NEXT: i32.extend16_s $push5=, $6 6616; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $9 6617; NO-SIMD128-NEXT: i32.store16 10($0), $pop6 6618; NO-SIMD128-NEXT: i32.extend16_s $push7=, $5 6619; NO-SIMD128-NEXT: i32.shr_s $push8=, $pop7, $9 6620; NO-SIMD128-NEXT: i32.store16 8($0), $pop8 6621; NO-SIMD128-NEXT: i32.extend16_s $push9=, $4 6622; NO-SIMD128-NEXT: i32.shr_s $push10=, $pop9, $9 6623; NO-SIMD128-NEXT: i32.store16 6($0), $pop10 6624; NO-SIMD128-NEXT: i32.extend16_s $push11=, $3 6625; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $9 6626; NO-SIMD128-NEXT: i32.store16 4($0), $pop12 6627; NO-SIMD128-NEXT: i32.extend16_s $push13=, $2 6628; NO-SIMD128-NEXT: i32.shr_s $push14=, $pop13, $9 6629; NO-SIMD128-NEXT: i32.store16 2($0), $pop14 6630; NO-SIMD128-NEXT: i32.extend16_s $push15=, $1 6631; NO-SIMD128-NEXT: i32.shr_s $push16=, $pop15, $9 6632; NO-SIMD128-NEXT: i32.store16 0($0), $pop16 6633; NO-SIMD128-NEXT: return 6634; 6635; NO-SIMD128-FAST-LABEL: shr_s_v8i16: 6636; NO-SIMD128-FAST: .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6637; NO-SIMD128-FAST-NEXT: # %bb.0: 6638; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1 6639; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 6640; NO-SIMD128-FAST-NEXT: i32.and $push18=, $9, $pop0 6641; NO-SIMD128-FAST-NEXT: local.tee $push17=, $1=, $pop18 6642; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $pop1, $pop17 6643; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 6644; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $2 6645; NO-SIMD128-FAST-NEXT: i32.shr_s $push4=, $pop3, $1 6646; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4 6647; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $3 6648; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $1 6649; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6 6650; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $4 6651; NO-SIMD128-FAST-NEXT: i32.shr_s $push8=, $pop7, $1 6652; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop8 6653; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $5 6654; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $pop9, $1 6655; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop10 6656; NO-SIMD128-FAST-NEXT: i32.extend16_s $push11=, $6 6657; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $1 6658; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop12 6659; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $7 6660; NO-SIMD128-FAST-NEXT: i32.shr_s $push14=, $pop13, $1 6661; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop14 6662; NO-SIMD128-FAST-NEXT: i32.extend16_s $push15=, $8 6663; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $pop15, $1 6664; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop16 6665; NO-SIMD128-FAST-NEXT: return 6666 %t = insertelement <8 x i16> undef, i16 %x, i32 0 6667 %s = shufflevector <8 x i16> %t, <8 x i16> undef, 6668 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 6669 %a = ashr <8 x i16> %v, %s 6670 ret <8 x i16> %a 6671} 6672 6673define <8 x i16> @shr_s_vec_v8i16(<8 x i16> %v, <8 x i16> %x) { 6674; SIMD128-LABEL: shr_s_vec_v8i16: 6675; SIMD128: .functype shr_s_vec_v8i16 (v128, v128) -> (v128) 6676; SIMD128-NEXT: # %bb.0: 6677; SIMD128-NEXT: i16x8.extract_lane_s $push7=, $0, 0 6678; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0 6679; SIMD128-NEXT: i32.const $push1=, 15 6680; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 6681; SIMD128-NEXT: i32.shr_s $push8=, $pop7, $pop6 6682; SIMD128-NEXT: i16x8.splat $push9=, $pop8 6683; SIMD128-NEXT: i16x8.extract_lane_s $push3=, $0, 1 6684; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1 6685; SIMD128-NEXT: i32.const $push47=, 15 6686; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47 6687; SIMD128-NEXT: i32.shr_s $push4=, $pop3, $pop2 6688; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4 6689; SIMD128-NEXT: i16x8.extract_lane_s $push13=, $0, 2 6690; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2 6691; SIMD128-NEXT: i32.const $push46=, 15 6692; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46 6693; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12 6694; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14 6695; SIMD128-NEXT: i16x8.extract_lane_s $push18=, $0, 3 6696; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3 6697; SIMD128-NEXT: i32.const $push45=, 15 6698; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45 6699; SIMD128-NEXT: i32.shr_s $push19=, $pop18, $pop17 6700; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19 6701; SIMD128-NEXT: i16x8.extract_lane_s $push23=, $0, 4 6702; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4 6703; SIMD128-NEXT: i32.const $push44=, 15 6704; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44 6705; SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22 6706; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24 6707; SIMD128-NEXT: i16x8.extract_lane_s $push28=, $0, 5 6708; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5 6709; SIMD128-NEXT: i32.const $push43=, 15 6710; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43 6711; SIMD128-NEXT: i32.shr_s $push29=, $pop28, $pop27 6712; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29 6713; SIMD128-NEXT: i16x8.extract_lane_s $push33=, $0, 6 6714; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6 6715; SIMD128-NEXT: i32.const $push42=, 15 6716; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42 6717; SIMD128-NEXT: i32.shr_s $push34=, $pop33, $pop32 6718; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34 6719; SIMD128-NEXT: i16x8.extract_lane_s $push38=, $0, 7 6720; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7 6721; SIMD128-NEXT: i32.const $push41=, 15 6722; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41 6723; SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37 6724; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39 6725; SIMD128-NEXT: return $pop40 6726; 6727; SIMD128-FAST-LABEL: shr_s_vec_v8i16: 6728; SIMD128-FAST: .functype shr_s_vec_v8i16 (v128, v128) -> (v128) 6729; SIMD128-FAST-NEXT: # %bb.0: 6730; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push8=, $0, 0 6731; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0 6732; SIMD128-FAST-NEXT: i32.const $push2=, 15 6733; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 6734; SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7 6735; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9 6736; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push4=, $0, 1 6737; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1 6738; SIMD128-FAST-NEXT: i32.const $push47=, 15 6739; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47 6740; SIMD128-FAST-NEXT: i32.shr_s $push5=, $pop4, $pop3 6741; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5 6742; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push14=, $0, 2 6743; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2 6744; SIMD128-FAST-NEXT: i32.const $push46=, 15 6745; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46 6746; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 6747; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15 6748; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push19=, $0, 3 6749; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3 6750; SIMD128-FAST-NEXT: i32.const $push45=, 15 6751; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45 6752; SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $pop18 6753; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20 6754; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push24=, $0, 4 6755; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4 6756; SIMD128-FAST-NEXT: i32.const $push44=, 15 6757; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44 6758; SIMD128-FAST-NEXT: i32.shr_s $push25=, $pop24, $pop23 6759; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25 6760; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push29=, $0, 5 6761; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5 6762; SIMD128-FAST-NEXT: i32.const $push43=, 15 6763; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43 6764; SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28 6765; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30 6766; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push34=, $0, 6 6767; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6 6768; SIMD128-FAST-NEXT: i32.const $push42=, 15 6769; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42 6770; SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33 6771; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35 6772; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push39=, $0, 7 6773; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7 6774; SIMD128-FAST-NEXT: i32.const $push41=, 15 6775; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41 6776; SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38 6777; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40 6778; SIMD128-FAST-NEXT: return $pop0 6779; 6780; NO-SIMD128-LABEL: shr_s_vec_v8i16: 6781; NO-SIMD128: .functype shr_s_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6782; NO-SIMD128-NEXT: # %bb.0: 6783; NO-SIMD128-NEXT: i32.extend16_s $push2=, $8 6784; NO-SIMD128-NEXT: i32.const $push0=, 65535 6785; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop0 6786; NO-SIMD128-NEXT: i32.shr_s $push3=, $pop2, $pop1 6787; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 6788; NO-SIMD128-NEXT: i32.extend16_s $push5=, $7 6789; NO-SIMD128-NEXT: i32.const $push31=, 65535 6790; NO-SIMD128-NEXT: i32.and $push4=, $15, $pop31 6791; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $pop4 6792; NO-SIMD128-NEXT: i32.store16 12($0), $pop6 6793; NO-SIMD128-NEXT: i32.extend16_s $push8=, $6 6794; NO-SIMD128-NEXT: i32.const $push30=, 65535 6795; NO-SIMD128-NEXT: i32.and $push7=, $14, $pop30 6796; NO-SIMD128-NEXT: i32.shr_s $push9=, $pop8, $pop7 6797; NO-SIMD128-NEXT: i32.store16 10($0), $pop9 6798; NO-SIMD128-NEXT: i32.extend16_s $push11=, $5 6799; NO-SIMD128-NEXT: i32.const $push29=, 65535 6800; NO-SIMD128-NEXT: i32.and $push10=, $13, $pop29 6801; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $pop10 6802; NO-SIMD128-NEXT: i32.store16 8($0), $pop12 6803; NO-SIMD128-NEXT: i32.extend16_s $push14=, $4 6804; NO-SIMD128-NEXT: i32.const $push28=, 65535 6805; NO-SIMD128-NEXT: i32.and $push13=, $12, $pop28 6806; NO-SIMD128-NEXT: i32.shr_s $push15=, $pop14, $pop13 6807; NO-SIMD128-NEXT: i32.store16 6($0), $pop15 6808; NO-SIMD128-NEXT: i32.extend16_s $push17=, $3 6809; NO-SIMD128-NEXT: i32.const $push27=, 65535 6810; NO-SIMD128-NEXT: i32.and $push16=, $11, $pop27 6811; NO-SIMD128-NEXT: i32.shr_s $push18=, $pop17, $pop16 6812; NO-SIMD128-NEXT: i32.store16 4($0), $pop18 6813; NO-SIMD128-NEXT: i32.extend16_s $push20=, $2 6814; NO-SIMD128-NEXT: i32.const $push26=, 65535 6815; NO-SIMD128-NEXT: i32.and $push19=, $10, $pop26 6816; NO-SIMD128-NEXT: i32.shr_s $push21=, $pop20, $pop19 6817; NO-SIMD128-NEXT: i32.store16 2($0), $pop21 6818; NO-SIMD128-NEXT: i32.extend16_s $push23=, $1 6819; NO-SIMD128-NEXT: i32.const $push25=, 65535 6820; NO-SIMD128-NEXT: i32.and $push22=, $9, $pop25 6821; NO-SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22 6822; NO-SIMD128-NEXT: i32.store16 0($0), $pop24 6823; NO-SIMD128-NEXT: return 6824; 6825; NO-SIMD128-FAST-LABEL: shr_s_vec_v8i16: 6826; NO-SIMD128-FAST: .functype shr_s_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6827; NO-SIMD128-FAST-NEXT: # %bb.0: 6828; NO-SIMD128-FAST-NEXT: i32.extend16_s $push2=, $1 6829; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 6830; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop0 6831; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1 6832; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 6833; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2 6834; NO-SIMD128-FAST-NEXT: i32.const $push31=, 65535 6835; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop31 6836; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4 6837; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6 6838; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $3 6839; NO-SIMD128-FAST-NEXT: i32.const $push30=, 65535 6840; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop30 6841; NO-SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7 6842; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9 6843; NO-SIMD128-FAST-NEXT: i32.extend16_s $push11=, $4 6844; NO-SIMD128-FAST-NEXT: i32.const $push29=, 65535 6845; NO-SIMD128-FAST-NEXT: i32.and $push10=, $12, $pop29 6846; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $pop10 6847; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop12 6848; NO-SIMD128-FAST-NEXT: i32.extend16_s $push14=, $5 6849; NO-SIMD128-FAST-NEXT: i32.const $push28=, 65535 6850; NO-SIMD128-FAST-NEXT: i32.and $push13=, $13, $pop28 6851; NO-SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 6852; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop15 6853; NO-SIMD128-FAST-NEXT: i32.extend16_s $push17=, $6 6854; NO-SIMD128-FAST-NEXT: i32.const $push27=, 65535 6855; NO-SIMD128-FAST-NEXT: i32.and $push16=, $14, $pop27 6856; NO-SIMD128-FAST-NEXT: i32.shr_s $push18=, $pop17, $pop16 6857; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop18 6858; NO-SIMD128-FAST-NEXT: i32.extend16_s $push20=, $7 6859; NO-SIMD128-FAST-NEXT: i32.const $push26=, 65535 6860; NO-SIMD128-FAST-NEXT: i32.and $push19=, $15, $pop26 6861; NO-SIMD128-FAST-NEXT: i32.shr_s $push21=, $pop20, $pop19 6862; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop21 6863; NO-SIMD128-FAST-NEXT: i32.extend16_s $push23=, $8 6864; NO-SIMD128-FAST-NEXT: i32.const $push25=, 65535 6865; NO-SIMD128-FAST-NEXT: i32.and $push22=, $16, $pop25 6866; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $pop22 6867; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop24 6868; NO-SIMD128-FAST-NEXT: return 6869 %a = ashr <8 x i16> %v, %x 6870 ret <8 x i16> %a 6871} 6872 6873define <8 x i16> @shr_u_v8i16(<8 x i16> %v, i16 %x) { 6874; SIMD128-LABEL: shr_u_v8i16: 6875; SIMD128: .functype shr_u_v8i16 (v128, i32) -> (v128) 6876; SIMD128-NEXT: # %bb.0: 6877; SIMD128-NEXT: i16x8.shr_u $push0=, $0, $1 6878; SIMD128-NEXT: return $pop0 6879; 6880; SIMD128-FAST-LABEL: shr_u_v8i16: 6881; SIMD128-FAST: .functype shr_u_v8i16 (v128, i32) -> (v128) 6882; SIMD128-FAST-NEXT: # %bb.0: 6883; SIMD128-FAST-NEXT: i16x8.shr_u $push0=, $0, $1 6884; SIMD128-FAST-NEXT: return $pop0 6885; 6886; NO-SIMD128-LABEL: shr_u_v8i16: 6887; NO-SIMD128: .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6888; NO-SIMD128-NEXT: # %bb.0: 6889; NO-SIMD128-NEXT: i32.const $push0=, 65535 6890; NO-SIMD128-NEXT: i32.and $push1=, $8, $pop0 6891; NO-SIMD128-NEXT: i32.const $push26=, 65535 6892; NO-SIMD128-NEXT: i32.and $push25=, $9, $pop26 6893; NO-SIMD128-NEXT: local.tee $push24=, $9=, $pop25 6894; NO-SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop24 6895; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 6896; NO-SIMD128-NEXT: i32.const $push23=, 65535 6897; NO-SIMD128-NEXT: i32.and $push3=, $7, $pop23 6898; NO-SIMD128-NEXT: i32.shr_u $push4=, $pop3, $9 6899; NO-SIMD128-NEXT: i32.store16 12($0), $pop4 6900; NO-SIMD128-NEXT: i32.const $push22=, 65535 6901; NO-SIMD128-NEXT: i32.and $push5=, $6, $pop22 6902; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $9 6903; NO-SIMD128-NEXT: i32.store16 10($0), $pop6 6904; NO-SIMD128-NEXT: i32.const $push21=, 65535 6905; NO-SIMD128-NEXT: i32.and $push7=, $5, $pop21 6906; NO-SIMD128-NEXT: i32.shr_u $push8=, $pop7, $9 6907; NO-SIMD128-NEXT: i32.store16 8($0), $pop8 6908; NO-SIMD128-NEXT: i32.const $push20=, 65535 6909; NO-SIMD128-NEXT: i32.and $push9=, $4, $pop20 6910; NO-SIMD128-NEXT: i32.shr_u $push10=, $pop9, $9 6911; NO-SIMD128-NEXT: i32.store16 6($0), $pop10 6912; NO-SIMD128-NEXT: i32.const $push19=, 65535 6913; NO-SIMD128-NEXT: i32.and $push11=, $3, $pop19 6914; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $9 6915; NO-SIMD128-NEXT: i32.store16 4($0), $pop12 6916; NO-SIMD128-NEXT: i32.const $push18=, 65535 6917; NO-SIMD128-NEXT: i32.and $push13=, $2, $pop18 6918; NO-SIMD128-NEXT: i32.shr_u $push14=, $pop13, $9 6919; NO-SIMD128-NEXT: i32.store16 2($0), $pop14 6920; NO-SIMD128-NEXT: i32.const $push17=, 65535 6921; NO-SIMD128-NEXT: i32.and $push15=, $1, $pop17 6922; NO-SIMD128-NEXT: i32.shr_u $push16=, $pop15, $9 6923; NO-SIMD128-NEXT: i32.store16 0($0), $pop16 6924; NO-SIMD128-NEXT: return 6925; 6926; NO-SIMD128-FAST-LABEL: shr_u_v8i16: 6927; NO-SIMD128-FAST: .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 6928; NO-SIMD128-FAST-NEXT: # %bb.0: 6929; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 6930; NO-SIMD128-FAST-NEXT: i32.and $push1=, $1, $pop0 6931; NO-SIMD128-FAST-NEXT: i32.const $push26=, 65535 6932; NO-SIMD128-FAST-NEXT: i32.and $push25=, $9, $pop26 6933; NO-SIMD128-FAST-NEXT: local.tee $push24=, $1=, $pop25 6934; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $pop1, $pop24 6935; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 6936; NO-SIMD128-FAST-NEXT: i32.const $push23=, 65535 6937; NO-SIMD128-FAST-NEXT: i32.and $push3=, $2, $pop23 6938; NO-SIMD128-FAST-NEXT: i32.shr_u $push4=, $pop3, $1 6939; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4 6940; NO-SIMD128-FAST-NEXT: i32.const $push22=, 65535 6941; NO-SIMD128-FAST-NEXT: i32.and $push5=, $3, $pop22 6942; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $1 6943; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6 6944; NO-SIMD128-FAST-NEXT: i32.const $push21=, 65535 6945; NO-SIMD128-FAST-NEXT: i32.and $push7=, $4, $pop21 6946; NO-SIMD128-FAST-NEXT: i32.shr_u $push8=, $pop7, $1 6947; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop8 6948; NO-SIMD128-FAST-NEXT: i32.const $push20=, 65535 6949; NO-SIMD128-FAST-NEXT: i32.and $push9=, $5, $pop20 6950; NO-SIMD128-FAST-NEXT: i32.shr_u $push10=, $pop9, $1 6951; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop10 6952; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535 6953; NO-SIMD128-FAST-NEXT: i32.and $push11=, $6, $pop19 6954; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $1 6955; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop12 6956; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535 6957; NO-SIMD128-FAST-NEXT: i32.and $push13=, $7, $pop18 6958; NO-SIMD128-FAST-NEXT: i32.shr_u $push14=, $pop13, $1 6959; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop14 6960; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535 6961; NO-SIMD128-FAST-NEXT: i32.and $push15=, $8, $pop17 6962; NO-SIMD128-FAST-NEXT: i32.shr_u $push16=, $pop15, $1 6963; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop16 6964; NO-SIMD128-FAST-NEXT: return 6965 %t = insertelement <8 x i16> undef, i16 %x, i32 0 6966 %s = shufflevector <8 x i16> %t, <8 x i16> undef, 6967 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0> 6968 %a = lshr <8 x i16> %v, %s 6969 ret <8 x i16> %a 6970} 6971 6972define <8 x i16> @shr_u_vec_v8i16(<8 x i16> %v, <8 x i16> %x) { 6973; SIMD128-LABEL: shr_u_vec_v8i16: 6974; SIMD128: .functype shr_u_vec_v8i16 (v128, v128) -> (v128) 6975; SIMD128-NEXT: # %bb.0: 6976; SIMD128-NEXT: i16x8.extract_lane_u $push7=, $0, 0 6977; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0 6978; SIMD128-NEXT: i32.const $push1=, 15 6979; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1 6980; SIMD128-NEXT: i32.shr_u $push8=, $pop7, $pop6 6981; SIMD128-NEXT: i16x8.splat $push9=, $pop8 6982; SIMD128-NEXT: i16x8.extract_lane_u $push3=, $0, 1 6983; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1 6984; SIMD128-NEXT: i32.const $push47=, 15 6985; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47 6986; SIMD128-NEXT: i32.shr_u $push4=, $pop3, $pop2 6987; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4 6988; SIMD128-NEXT: i16x8.extract_lane_u $push13=, $0, 2 6989; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2 6990; SIMD128-NEXT: i32.const $push46=, 15 6991; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46 6992; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12 6993; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14 6994; SIMD128-NEXT: i16x8.extract_lane_u $push18=, $0, 3 6995; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3 6996; SIMD128-NEXT: i32.const $push45=, 15 6997; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45 6998; SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop17 6999; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19 7000; SIMD128-NEXT: i16x8.extract_lane_u $push23=, $0, 4 7001; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4 7002; SIMD128-NEXT: i32.const $push44=, 15 7003; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44 7004; SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22 7005; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24 7006; SIMD128-NEXT: i16x8.extract_lane_u $push28=, $0, 5 7007; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5 7008; SIMD128-NEXT: i32.const $push43=, 15 7009; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43 7010; SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop27 7011; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29 7012; SIMD128-NEXT: i16x8.extract_lane_u $push33=, $0, 6 7013; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6 7014; SIMD128-NEXT: i32.const $push42=, 15 7015; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42 7016; SIMD128-NEXT: i32.shr_u $push34=, $pop33, $pop32 7017; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34 7018; SIMD128-NEXT: i16x8.extract_lane_u $push38=, $0, 7 7019; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7 7020; SIMD128-NEXT: i32.const $push41=, 15 7021; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41 7022; SIMD128-NEXT: i32.shr_u $push39=, $pop38, $pop37 7023; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39 7024; SIMD128-NEXT: return $pop40 7025; 7026; SIMD128-FAST-LABEL: shr_u_vec_v8i16: 7027; SIMD128-FAST: .functype shr_u_vec_v8i16 (v128, v128) -> (v128) 7028; SIMD128-FAST-NEXT: # %bb.0: 7029; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push8=, $0, 0 7030; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0 7031; SIMD128-FAST-NEXT: i32.const $push2=, 15 7032; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2 7033; SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7 7034; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9 7035; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push4=, $0, 1 7036; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1 7037; SIMD128-FAST-NEXT: i32.const $push47=, 15 7038; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47 7039; SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop3 7040; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5 7041; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push14=, $0, 2 7042; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2 7043; SIMD128-FAST-NEXT: i32.const $push46=, 15 7044; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46 7045; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13 7046; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15 7047; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push19=, $0, 3 7048; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3 7049; SIMD128-FAST-NEXT: i32.const $push45=, 15 7050; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45 7051; SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18 7052; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20 7053; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push24=, $0, 4 7054; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4 7055; SIMD128-FAST-NEXT: i32.const $push44=, 15 7056; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44 7057; SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23 7058; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25 7059; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push29=, $0, 5 7060; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5 7061; SIMD128-FAST-NEXT: i32.const $push43=, 15 7062; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43 7063; SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28 7064; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30 7065; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push34=, $0, 6 7066; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6 7067; SIMD128-FAST-NEXT: i32.const $push42=, 15 7068; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42 7069; SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop33 7070; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35 7071; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push39=, $0, 7 7072; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7 7073; SIMD128-FAST-NEXT: i32.const $push41=, 15 7074; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41 7075; SIMD128-FAST-NEXT: i32.shr_u $push40=, $pop39, $pop38 7076; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40 7077; SIMD128-FAST-NEXT: return $pop0 7078; 7079; NO-SIMD128-LABEL: shr_u_vec_v8i16: 7080; NO-SIMD128: .functype shr_u_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7081; NO-SIMD128-NEXT: # %bb.0: 7082; NO-SIMD128-NEXT: i32.const $push0=, 65535 7083; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0 7084; NO-SIMD128-NEXT: i32.const $push39=, 65535 7085; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop39 7086; NO-SIMD128-NEXT: i32.shr_u $push3=, $pop2, $pop1 7087; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 7088; NO-SIMD128-NEXT: i32.const $push38=, 65535 7089; NO-SIMD128-NEXT: i32.and $push5=, $7, $pop38 7090; NO-SIMD128-NEXT: i32.const $push37=, 65535 7091; NO-SIMD128-NEXT: i32.and $push4=, $15, $pop37 7092; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $pop4 7093; NO-SIMD128-NEXT: i32.store16 12($0), $pop6 7094; NO-SIMD128-NEXT: i32.const $push36=, 65535 7095; NO-SIMD128-NEXT: i32.and $push8=, $6, $pop36 7096; NO-SIMD128-NEXT: i32.const $push35=, 65535 7097; NO-SIMD128-NEXT: i32.and $push7=, $14, $pop35 7098; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop7 7099; NO-SIMD128-NEXT: i32.store16 10($0), $pop9 7100; NO-SIMD128-NEXT: i32.const $push34=, 65535 7101; NO-SIMD128-NEXT: i32.and $push11=, $5, $pop34 7102; NO-SIMD128-NEXT: i32.const $push33=, 65535 7103; NO-SIMD128-NEXT: i32.and $push10=, $13, $pop33 7104; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $pop10 7105; NO-SIMD128-NEXT: i32.store16 8($0), $pop12 7106; NO-SIMD128-NEXT: i32.const $push32=, 65535 7107; NO-SIMD128-NEXT: i32.and $push14=, $4, $pop32 7108; NO-SIMD128-NEXT: i32.const $push31=, 65535 7109; NO-SIMD128-NEXT: i32.and $push13=, $12, $pop31 7110; NO-SIMD128-NEXT: i32.shr_u $push15=, $pop14, $pop13 7111; NO-SIMD128-NEXT: i32.store16 6($0), $pop15 7112; NO-SIMD128-NEXT: i32.const $push30=, 65535 7113; NO-SIMD128-NEXT: i32.and $push17=, $3, $pop30 7114; NO-SIMD128-NEXT: i32.const $push29=, 65535 7115; NO-SIMD128-NEXT: i32.and $push16=, $11, $pop29 7116; NO-SIMD128-NEXT: i32.shr_u $push18=, $pop17, $pop16 7117; NO-SIMD128-NEXT: i32.store16 4($0), $pop18 7118; NO-SIMD128-NEXT: i32.const $push28=, 65535 7119; NO-SIMD128-NEXT: i32.and $push20=, $2, $pop28 7120; NO-SIMD128-NEXT: i32.const $push27=, 65535 7121; NO-SIMD128-NEXT: i32.and $push19=, $10, $pop27 7122; NO-SIMD128-NEXT: i32.shr_u $push21=, $pop20, $pop19 7123; NO-SIMD128-NEXT: i32.store16 2($0), $pop21 7124; NO-SIMD128-NEXT: i32.const $push26=, 65535 7125; NO-SIMD128-NEXT: i32.and $push23=, $1, $pop26 7126; NO-SIMD128-NEXT: i32.const $push25=, 65535 7127; NO-SIMD128-NEXT: i32.and $push22=, $9, $pop25 7128; NO-SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22 7129; NO-SIMD128-NEXT: i32.store16 0($0), $pop24 7130; NO-SIMD128-NEXT: return 7131; 7132; NO-SIMD128-FAST-LABEL: shr_u_vec_v8i16: 7133; NO-SIMD128-FAST: .functype shr_u_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7134; NO-SIMD128-FAST-NEXT: # %bb.0: 7135; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 7136; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 7137; NO-SIMD128-FAST-NEXT: i32.const $push39=, 65535 7138; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop39 7139; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1 7140; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 7141; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65535 7142; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop38 7143; NO-SIMD128-FAST-NEXT: i32.const $push37=, 65535 7144; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop37 7145; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4 7146; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6 7147; NO-SIMD128-FAST-NEXT: i32.const $push36=, 65535 7148; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop36 7149; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65535 7150; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop35 7151; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7 7152; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9 7153; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535 7154; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop34 7155; NO-SIMD128-FAST-NEXT: i32.const $push33=, 65535 7156; NO-SIMD128-FAST-NEXT: i32.and $push10=, $12, $pop33 7157; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $pop10 7158; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop12 7159; NO-SIMD128-FAST-NEXT: i32.const $push32=, 65535 7160; NO-SIMD128-FAST-NEXT: i32.and $push14=, $5, $pop32 7161; NO-SIMD128-FAST-NEXT: i32.const $push31=, 65535 7162; NO-SIMD128-FAST-NEXT: i32.and $push13=, $13, $pop31 7163; NO-SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13 7164; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop15 7165; NO-SIMD128-FAST-NEXT: i32.const $push30=, 65535 7166; NO-SIMD128-FAST-NEXT: i32.and $push17=, $6, $pop30 7167; NO-SIMD128-FAST-NEXT: i32.const $push29=, 65535 7168; NO-SIMD128-FAST-NEXT: i32.and $push16=, $14, $pop29 7169; NO-SIMD128-FAST-NEXT: i32.shr_u $push18=, $pop17, $pop16 7170; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop18 7171; NO-SIMD128-FAST-NEXT: i32.const $push28=, 65535 7172; NO-SIMD128-FAST-NEXT: i32.and $push20=, $7, $pop28 7173; NO-SIMD128-FAST-NEXT: i32.const $push27=, 65535 7174; NO-SIMD128-FAST-NEXT: i32.and $push19=, $15, $pop27 7175; NO-SIMD128-FAST-NEXT: i32.shr_u $push21=, $pop20, $pop19 7176; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop21 7177; NO-SIMD128-FAST-NEXT: i32.const $push26=, 65535 7178; NO-SIMD128-FAST-NEXT: i32.and $push23=, $8, $pop26 7179; NO-SIMD128-FAST-NEXT: i32.const $push25=, 65535 7180; NO-SIMD128-FAST-NEXT: i32.and $push22=, $16, $pop25 7181; NO-SIMD128-FAST-NEXT: i32.shr_u $push24=, $pop23, $pop22 7182; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop24 7183; NO-SIMD128-FAST-NEXT: return 7184 %a = lshr <8 x i16> %v, %x 7185 ret <8 x i16> %a 7186} 7187 7188define <8 x i16> @and_v8i16(<8 x i16> %x, <8 x i16> %y) { 7189; SIMD128-LABEL: and_v8i16: 7190; SIMD128: .functype and_v8i16 (v128, v128) -> (v128) 7191; SIMD128-NEXT: # %bb.0: 7192; SIMD128-NEXT: v128.and $push0=, $0, $1 7193; SIMD128-NEXT: return $pop0 7194; 7195; SIMD128-FAST-LABEL: and_v8i16: 7196; SIMD128-FAST: .functype and_v8i16 (v128, v128) -> (v128) 7197; SIMD128-FAST-NEXT: # %bb.0: 7198; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 7199; SIMD128-FAST-NEXT: return $pop0 7200; 7201; NO-SIMD128-LABEL: and_v8i16: 7202; NO-SIMD128: .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7203; NO-SIMD128-NEXT: # %bb.0: 7204; NO-SIMD128-NEXT: i32.and $push0=, $8, $16 7205; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 7206; NO-SIMD128-NEXT: i32.and $push1=, $7, $15 7207; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 7208; NO-SIMD128-NEXT: i32.and $push2=, $6, $14 7209; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 7210; NO-SIMD128-NEXT: i32.and $push3=, $5, $13 7211; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 7212; NO-SIMD128-NEXT: i32.and $push4=, $4, $12 7213; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 7214; NO-SIMD128-NEXT: i32.and $push5=, $3, $11 7215; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 7216; NO-SIMD128-NEXT: i32.and $push6=, $2, $10 7217; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 7218; NO-SIMD128-NEXT: i32.and $push7=, $1, $9 7219; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 7220; NO-SIMD128-NEXT: return 7221; 7222; NO-SIMD128-FAST-LABEL: and_v8i16: 7223; NO-SIMD128-FAST: .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7224; NO-SIMD128-FAST-NEXT: # %bb.0: 7225; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $9 7226; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 7227; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $10 7228; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 7229; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $11 7230; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 7231; NO-SIMD128-FAST-NEXT: i32.and $push3=, $4, $12 7232; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 7233; NO-SIMD128-FAST-NEXT: i32.and $push4=, $5, $13 7234; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 7235; NO-SIMD128-FAST-NEXT: i32.and $push5=, $6, $14 7236; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 7237; NO-SIMD128-FAST-NEXT: i32.and $push6=, $7, $15 7238; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 7239; NO-SIMD128-FAST-NEXT: i32.and $push7=, $8, $16 7240; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 7241; NO-SIMD128-FAST-NEXT: return 7242 %a = and <8 x i16> %x, %y 7243 ret <8 x i16> %a 7244} 7245 7246define <8 x i16> @or_v8i16(<8 x i16> %x, <8 x i16> %y) { 7247; SIMD128-LABEL: or_v8i16: 7248; SIMD128: .functype or_v8i16 (v128, v128) -> (v128) 7249; SIMD128-NEXT: # %bb.0: 7250; SIMD128-NEXT: v128.or $push0=, $0, $1 7251; SIMD128-NEXT: return $pop0 7252; 7253; SIMD128-FAST-LABEL: or_v8i16: 7254; SIMD128-FAST: .functype or_v8i16 (v128, v128) -> (v128) 7255; SIMD128-FAST-NEXT: # %bb.0: 7256; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1 7257; SIMD128-FAST-NEXT: return $pop0 7258; 7259; NO-SIMD128-LABEL: or_v8i16: 7260; NO-SIMD128: .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7261; NO-SIMD128-NEXT: # %bb.0: 7262; NO-SIMD128-NEXT: i32.or $push0=, $8, $16 7263; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 7264; NO-SIMD128-NEXT: i32.or $push1=, $7, $15 7265; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 7266; NO-SIMD128-NEXT: i32.or $push2=, $6, $14 7267; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 7268; NO-SIMD128-NEXT: i32.or $push3=, $5, $13 7269; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 7270; NO-SIMD128-NEXT: i32.or $push4=, $4, $12 7271; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 7272; NO-SIMD128-NEXT: i32.or $push5=, $3, $11 7273; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 7274; NO-SIMD128-NEXT: i32.or $push6=, $2, $10 7275; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 7276; NO-SIMD128-NEXT: i32.or $push7=, $1, $9 7277; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 7278; NO-SIMD128-NEXT: return 7279; 7280; NO-SIMD128-FAST-LABEL: or_v8i16: 7281; NO-SIMD128-FAST: .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7282; NO-SIMD128-FAST-NEXT: # %bb.0: 7283; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $9 7284; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 7285; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $10 7286; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 7287; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $11 7288; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 7289; NO-SIMD128-FAST-NEXT: i32.or $push3=, $4, $12 7290; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 7291; NO-SIMD128-FAST-NEXT: i32.or $push4=, $5, $13 7292; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 7293; NO-SIMD128-FAST-NEXT: i32.or $push5=, $6, $14 7294; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 7295; NO-SIMD128-FAST-NEXT: i32.or $push6=, $7, $15 7296; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 7297; NO-SIMD128-FAST-NEXT: i32.or $push7=, $8, $16 7298; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 7299; NO-SIMD128-FAST-NEXT: return 7300 %a = or <8 x i16> %x, %y 7301 ret <8 x i16> %a 7302} 7303 7304define <8 x i16> @xor_v8i16(<8 x i16> %x, <8 x i16> %y) { 7305; SIMD128-LABEL: xor_v8i16: 7306; SIMD128: .functype xor_v8i16 (v128, v128) -> (v128) 7307; SIMD128-NEXT: # %bb.0: 7308; SIMD128-NEXT: v128.xor $push0=, $0, $1 7309; SIMD128-NEXT: return $pop0 7310; 7311; SIMD128-FAST-LABEL: xor_v8i16: 7312; SIMD128-FAST: .functype xor_v8i16 (v128, v128) -> (v128) 7313; SIMD128-FAST-NEXT: # %bb.0: 7314; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1 7315; SIMD128-FAST-NEXT: return $pop0 7316; 7317; NO-SIMD128-LABEL: xor_v8i16: 7318; NO-SIMD128: .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7319; NO-SIMD128-NEXT: # %bb.0: 7320; NO-SIMD128-NEXT: i32.xor $push0=, $8, $16 7321; NO-SIMD128-NEXT: i32.store16 14($0), $pop0 7322; NO-SIMD128-NEXT: i32.xor $push1=, $7, $15 7323; NO-SIMD128-NEXT: i32.store16 12($0), $pop1 7324; NO-SIMD128-NEXT: i32.xor $push2=, $6, $14 7325; NO-SIMD128-NEXT: i32.store16 10($0), $pop2 7326; NO-SIMD128-NEXT: i32.xor $push3=, $5, $13 7327; NO-SIMD128-NEXT: i32.store16 8($0), $pop3 7328; NO-SIMD128-NEXT: i32.xor $push4=, $4, $12 7329; NO-SIMD128-NEXT: i32.store16 6($0), $pop4 7330; NO-SIMD128-NEXT: i32.xor $push5=, $3, $11 7331; NO-SIMD128-NEXT: i32.store16 4($0), $pop5 7332; NO-SIMD128-NEXT: i32.xor $push6=, $2, $10 7333; NO-SIMD128-NEXT: i32.store16 2($0), $pop6 7334; NO-SIMD128-NEXT: i32.xor $push7=, $1, $9 7335; NO-SIMD128-NEXT: i32.store16 0($0), $pop7 7336; NO-SIMD128-NEXT: return 7337; 7338; NO-SIMD128-FAST-LABEL: xor_v8i16: 7339; NO-SIMD128-FAST: .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7340; NO-SIMD128-FAST-NEXT: # %bb.0: 7341; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $9 7342; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0 7343; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $10 7344; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1 7345; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $11 7346; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2 7347; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $4, $12 7348; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop3 7349; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $5, $13 7350; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop4 7351; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $6, $14 7352; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop5 7353; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $7, $15 7354; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop6 7355; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $8, $16 7356; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop7 7357; NO-SIMD128-FAST-NEXT: return 7358 %a = xor <8 x i16> %x, %y 7359 ret <8 x i16> %a 7360} 7361 7362define <8 x i16> @not_v8i16(<8 x i16> %x) { 7363; SIMD128-LABEL: not_v8i16: 7364; SIMD128: .functype not_v8i16 (v128) -> (v128) 7365; SIMD128-NEXT: # %bb.0: 7366; SIMD128-NEXT: v128.not $push0=, $0 7367; SIMD128-NEXT: return $pop0 7368; 7369; SIMD128-FAST-LABEL: not_v8i16: 7370; SIMD128-FAST: .functype not_v8i16 (v128) -> (v128) 7371; SIMD128-FAST-NEXT: # %bb.0: 7372; SIMD128-FAST-NEXT: v128.not $push0=, $0 7373; SIMD128-FAST-NEXT: return $pop0 7374; 7375; NO-SIMD128-LABEL: not_v8i16: 7376; NO-SIMD128: .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7377; NO-SIMD128-NEXT: # %bb.0: 7378; NO-SIMD128-NEXT: i32.const $push0=, -1 7379; NO-SIMD128-NEXT: i32.xor $push1=, $8, $pop0 7380; NO-SIMD128-NEXT: i32.store16 14($0), $pop1 7381; NO-SIMD128-NEXT: i32.const $push15=, -1 7382; NO-SIMD128-NEXT: i32.xor $push2=, $7, $pop15 7383; NO-SIMD128-NEXT: i32.store16 12($0), $pop2 7384; NO-SIMD128-NEXT: i32.const $push14=, -1 7385; NO-SIMD128-NEXT: i32.xor $push3=, $6, $pop14 7386; NO-SIMD128-NEXT: i32.store16 10($0), $pop3 7387; NO-SIMD128-NEXT: i32.const $push13=, -1 7388; NO-SIMD128-NEXT: i32.xor $push4=, $5, $pop13 7389; NO-SIMD128-NEXT: i32.store16 8($0), $pop4 7390; NO-SIMD128-NEXT: i32.const $push12=, -1 7391; NO-SIMD128-NEXT: i32.xor $push5=, $4, $pop12 7392; NO-SIMD128-NEXT: i32.store16 6($0), $pop5 7393; NO-SIMD128-NEXT: i32.const $push11=, -1 7394; NO-SIMD128-NEXT: i32.xor $push6=, $3, $pop11 7395; NO-SIMD128-NEXT: i32.store16 4($0), $pop6 7396; NO-SIMD128-NEXT: i32.const $push10=, -1 7397; NO-SIMD128-NEXT: i32.xor $push7=, $2, $pop10 7398; NO-SIMD128-NEXT: i32.store16 2($0), $pop7 7399; NO-SIMD128-NEXT: i32.const $push9=, -1 7400; NO-SIMD128-NEXT: i32.xor $push8=, $1, $pop9 7401; NO-SIMD128-NEXT: i32.store16 0($0), $pop8 7402; NO-SIMD128-NEXT: return 7403; 7404; NO-SIMD128-FAST-LABEL: not_v8i16: 7405; NO-SIMD128-FAST: .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7406; NO-SIMD128-FAST-NEXT: # %bb.0: 7407; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 7408; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 7409; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1 7410; NO-SIMD128-FAST-NEXT: i32.const $push15=, -1 7411; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop15 7412; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2 7413; NO-SIMD128-FAST-NEXT: i32.const $push14=, -1 7414; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop14 7415; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3 7416; NO-SIMD128-FAST-NEXT: i32.const $push13=, -1 7417; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $4, $pop13 7418; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop4 7419; NO-SIMD128-FAST-NEXT: i32.const $push12=, -1 7420; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $5, $pop12 7421; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop5 7422; NO-SIMD128-FAST-NEXT: i32.const $push11=, -1 7423; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $6, $pop11 7424; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop6 7425; NO-SIMD128-FAST-NEXT: i32.const $push10=, -1 7426; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $7, $pop10 7427; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop7 7428; NO-SIMD128-FAST-NEXT: i32.const $push9=, -1 7429; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $8, $pop9 7430; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop8 7431; NO-SIMD128-FAST-NEXT: return 7432 %a = xor <8 x i16> %x, <i16 -1, i16 -1, i16 -1, i16 -1, 7433 i16 -1, i16 -1, i16 -1, i16 -1> 7434 ret <8 x i16> %a 7435} 7436 7437define <8 x i16> @andnot_v8i16(<8 x i16> %x, <8 x i16> %y) { 7438; SIMD128-LABEL: andnot_v8i16: 7439; SIMD128: .functype andnot_v8i16 (v128, v128) -> (v128) 7440; SIMD128-NEXT: # %bb.0: 7441; SIMD128-NEXT: v128.andnot $push0=, $0, $1 7442; SIMD128-NEXT: return $pop0 7443; 7444; SIMD128-FAST-LABEL: andnot_v8i16: 7445; SIMD128-FAST: .functype andnot_v8i16 (v128, v128) -> (v128) 7446; SIMD128-FAST-NEXT: # %bb.0: 7447; SIMD128-FAST-NEXT: v128.not $push0=, $1 7448; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0 7449; SIMD128-FAST-NEXT: return $pop1 7450; 7451; NO-SIMD128-LABEL: andnot_v8i16: 7452; NO-SIMD128: .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7453; NO-SIMD128-NEXT: # %bb.0: 7454; NO-SIMD128-NEXT: i32.const $push0=, -1 7455; NO-SIMD128-NEXT: i32.xor $push1=, $16, $pop0 7456; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop1 7457; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 7458; NO-SIMD128-NEXT: i32.const $push23=, -1 7459; NO-SIMD128-NEXT: i32.xor $push3=, $15, $pop23 7460; NO-SIMD128-NEXT: i32.and $push4=, $7, $pop3 7461; NO-SIMD128-NEXT: i32.store16 12($0), $pop4 7462; NO-SIMD128-NEXT: i32.const $push22=, -1 7463; NO-SIMD128-NEXT: i32.xor $push5=, $14, $pop22 7464; NO-SIMD128-NEXT: i32.and $push6=, $6, $pop5 7465; NO-SIMD128-NEXT: i32.store16 10($0), $pop6 7466; NO-SIMD128-NEXT: i32.const $push21=, -1 7467; NO-SIMD128-NEXT: i32.xor $push7=, $13, $pop21 7468; NO-SIMD128-NEXT: i32.and $push8=, $5, $pop7 7469; NO-SIMD128-NEXT: i32.store16 8($0), $pop8 7470; NO-SIMD128-NEXT: i32.const $push20=, -1 7471; NO-SIMD128-NEXT: i32.xor $push9=, $12, $pop20 7472; NO-SIMD128-NEXT: i32.and $push10=, $4, $pop9 7473; NO-SIMD128-NEXT: i32.store16 6($0), $pop10 7474; NO-SIMD128-NEXT: i32.const $push19=, -1 7475; NO-SIMD128-NEXT: i32.xor $push11=, $11, $pop19 7476; NO-SIMD128-NEXT: i32.and $push12=, $3, $pop11 7477; NO-SIMD128-NEXT: i32.store16 4($0), $pop12 7478; NO-SIMD128-NEXT: i32.const $push18=, -1 7479; NO-SIMD128-NEXT: i32.xor $push13=, $10, $pop18 7480; NO-SIMD128-NEXT: i32.and $push14=, $2, $pop13 7481; NO-SIMD128-NEXT: i32.store16 2($0), $pop14 7482; NO-SIMD128-NEXT: i32.const $push17=, -1 7483; NO-SIMD128-NEXT: i32.xor $push15=, $9, $pop17 7484; NO-SIMD128-NEXT: i32.and $push16=, $1, $pop15 7485; NO-SIMD128-NEXT: i32.store16 0($0), $pop16 7486; NO-SIMD128-NEXT: return 7487; 7488; NO-SIMD128-FAST-LABEL: andnot_v8i16: 7489; NO-SIMD128-FAST: .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 7490; NO-SIMD128-FAST-NEXT: # %bb.0: 7491; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 7492; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $9, $pop0 7493; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1 7494; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 7495; NO-SIMD128-FAST-NEXT: i32.const $push23=, -1 7496; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $10, $pop23 7497; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3 7498; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4 7499; NO-SIMD128-FAST-NEXT: i32.const $push22=, -1 7500; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $11, $pop22 7501; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5 7502; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6 7503; NO-SIMD128-FAST-NEXT: i32.const $push21=, -1 7504; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $12, $pop21 7505; NO-SIMD128-FAST-NEXT: i32.and $push8=, $4, $pop7 7506; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop8 7507; NO-SIMD128-FAST-NEXT: i32.const $push20=, -1 7508; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $13, $pop20 7509; NO-SIMD128-FAST-NEXT: i32.and $push10=, $5, $pop9 7510; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop10 7511; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1 7512; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $14, $pop19 7513; NO-SIMD128-FAST-NEXT: i32.and $push12=, $6, $pop11 7514; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop12 7515; NO-SIMD128-FAST-NEXT: i32.const $push18=, -1 7516; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $15, $pop18 7517; NO-SIMD128-FAST-NEXT: i32.and $push14=, $7, $pop13 7518; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop14 7519; NO-SIMD128-FAST-NEXT: i32.const $push17=, -1 7520; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $16, $pop17 7521; NO-SIMD128-FAST-NEXT: i32.and $push16=, $8, $pop15 7522; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop16 7523; NO-SIMD128-FAST-NEXT: return 7524 %inv_y = xor <8 x i16> %y, 7525 <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 7526 %a = and <8 x i16> %x, %inv_y 7527 ret <8 x i16> %a 7528} 7529 7530define <8 x i16> @bitselect_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) { 7531; SIMD128-LABEL: bitselect_v8i16: 7532; SIMD128: .functype bitselect_v8i16 (v128, v128, v128) -> (v128) 7533; SIMD128-NEXT: # %bb.0: 7534; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 7535; SIMD128-NEXT: return $pop0 7536; 7537; SIMD128-FAST-LABEL: bitselect_v8i16: 7538; SIMD128-FAST: .functype bitselect_v8i16 (v128, v128, v128) -> (v128) 7539; SIMD128-FAST-NEXT: # %bb.0: 7540; SIMD128-FAST-NEXT: v128.and $push0=, $1, $0 7541; SIMD128-FAST-NEXT: v128.not $push2=, $0 7542; SIMD128-FAST-NEXT: v128.and $push3=, $2, $pop2 7543; SIMD128-FAST-NEXT: v128.or $push1=, $pop0, $pop3 7544; SIMD128-FAST-NEXT: return $pop1 7545; 7546; NO-SIMD128-LABEL: bitselect_v8i16: 7547; NO-SIMD128: .functype bitselect_v8i16 (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) -> () 7548; NO-SIMD128-NEXT: # %bb.0: 7549; NO-SIMD128-NEXT: i32.and $push0=, $16, $8 7550; NO-SIMD128-NEXT: i32.const $push1=, -1 7551; NO-SIMD128-NEXT: i32.xor $push2=, $8, $pop1 7552; NO-SIMD128-NEXT: i32.and $push3=, $24, $pop2 7553; NO-SIMD128-NEXT: i32.or $push4=, $pop0, $pop3 7554; NO-SIMD128-NEXT: i32.store16 14($0), $pop4 7555; NO-SIMD128-NEXT: i32.and $push5=, $15, $7 7556; NO-SIMD128-NEXT: i32.const $push39=, -1 7557; NO-SIMD128-NEXT: i32.xor $push6=, $7, $pop39 7558; NO-SIMD128-NEXT: i32.and $push7=, $23, $pop6 7559; NO-SIMD128-NEXT: i32.or $push8=, $pop5, $pop7 7560; NO-SIMD128-NEXT: i32.store16 12($0), $pop8 7561; NO-SIMD128-NEXT: i32.and $push9=, $14, $6 7562; NO-SIMD128-NEXT: i32.const $push38=, -1 7563; NO-SIMD128-NEXT: i32.xor $push10=, $6, $pop38 7564; NO-SIMD128-NEXT: i32.and $push11=, $22, $pop10 7565; NO-SIMD128-NEXT: i32.or $push12=, $pop9, $pop11 7566; NO-SIMD128-NEXT: i32.store16 10($0), $pop12 7567; NO-SIMD128-NEXT: i32.and $push13=, $13, $5 7568; NO-SIMD128-NEXT: i32.const $push37=, -1 7569; NO-SIMD128-NEXT: i32.xor $push14=, $5, $pop37 7570; NO-SIMD128-NEXT: i32.and $push15=, $21, $pop14 7571; NO-SIMD128-NEXT: i32.or $push16=, $pop13, $pop15 7572; NO-SIMD128-NEXT: i32.store16 8($0), $pop16 7573; NO-SIMD128-NEXT: i32.and $push17=, $12, $4 7574; NO-SIMD128-NEXT: i32.const $push36=, -1 7575; NO-SIMD128-NEXT: i32.xor $push18=, $4, $pop36 7576; NO-SIMD128-NEXT: i32.and $push19=, $20, $pop18 7577; NO-SIMD128-NEXT: i32.or $push20=, $pop17, $pop19 7578; NO-SIMD128-NEXT: i32.store16 6($0), $pop20 7579; NO-SIMD128-NEXT: i32.and $push21=, $11, $3 7580; NO-SIMD128-NEXT: i32.const $push35=, -1 7581; NO-SIMD128-NEXT: i32.xor $push22=, $3, $pop35 7582; NO-SIMD128-NEXT: i32.and $push23=, $19, $pop22 7583; NO-SIMD128-NEXT: i32.or $push24=, $pop21, $pop23 7584; NO-SIMD128-NEXT: i32.store16 4($0), $pop24 7585; NO-SIMD128-NEXT: i32.and $push25=, $10, $2 7586; NO-SIMD128-NEXT: i32.const $push34=, -1 7587; NO-SIMD128-NEXT: i32.xor $push26=, $2, $pop34 7588; NO-SIMD128-NEXT: i32.and $push27=, $18, $pop26 7589; NO-SIMD128-NEXT: i32.or $push28=, $pop25, $pop27 7590; NO-SIMD128-NEXT: i32.store16 2($0), $pop28 7591; NO-SIMD128-NEXT: i32.and $push29=, $9, $1 7592; NO-SIMD128-NEXT: i32.const $push33=, -1 7593; NO-SIMD128-NEXT: i32.xor $push30=, $1, $pop33 7594; NO-SIMD128-NEXT: i32.and $push31=, $17, $pop30 7595; NO-SIMD128-NEXT: i32.or $push32=, $pop29, $pop31 7596; NO-SIMD128-NEXT: i32.store16 0($0), $pop32 7597; NO-SIMD128-NEXT: return 7598; 7599; NO-SIMD128-FAST-LABEL: bitselect_v8i16: 7600; NO-SIMD128-FAST: .functype bitselect_v8i16 (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) -> () 7601; NO-SIMD128-FAST-NEXT: # %bb.0: 7602; NO-SIMD128-FAST-NEXT: i32.and $push0=, $9, $1 7603; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1 7604; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1 7605; NO-SIMD128-FAST-NEXT: i32.and $push3=, $17, $pop2 7606; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop0, $pop3 7607; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4 7608; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $2 7609; NO-SIMD128-FAST-NEXT: i32.const $push39=, -1 7610; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop39 7611; NO-SIMD128-FAST-NEXT: i32.and $push7=, $18, $pop6 7612; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop5, $pop7 7613; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8 7614; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $3 7615; NO-SIMD128-FAST-NEXT: i32.const $push38=, -1 7616; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop38 7617; NO-SIMD128-FAST-NEXT: i32.and $push11=, $19, $pop10 7618; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop9, $pop11 7619; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12 7620; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $4 7621; NO-SIMD128-FAST-NEXT: i32.const $push37=, -1 7622; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop37 7623; NO-SIMD128-FAST-NEXT: i32.and $push15=, $20, $pop14 7624; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop13, $pop15 7625; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop16 7626; NO-SIMD128-FAST-NEXT: i32.and $push17=, $13, $5 7627; NO-SIMD128-FAST-NEXT: i32.const $push36=, -1 7628; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $5, $pop36 7629; NO-SIMD128-FAST-NEXT: i32.and $push19=, $21, $pop18 7630; NO-SIMD128-FAST-NEXT: i32.or $push20=, $pop17, $pop19 7631; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop20 7632; NO-SIMD128-FAST-NEXT: i32.and $push21=, $14, $6 7633; NO-SIMD128-FAST-NEXT: i32.const $push35=, -1 7634; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $6, $pop35 7635; NO-SIMD128-FAST-NEXT: i32.and $push23=, $22, $pop22 7636; NO-SIMD128-FAST-NEXT: i32.or $push24=, $pop21, $pop23 7637; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop24 7638; NO-SIMD128-FAST-NEXT: i32.and $push25=, $15, $7 7639; NO-SIMD128-FAST-NEXT: i32.const $push34=, -1 7640; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $7, $pop34 7641; NO-SIMD128-FAST-NEXT: i32.and $push27=, $23, $pop26 7642; NO-SIMD128-FAST-NEXT: i32.or $push28=, $pop25, $pop27 7643; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop28 7644; NO-SIMD128-FAST-NEXT: i32.and $push29=, $16, $8 7645; NO-SIMD128-FAST-NEXT: i32.const $push33=, -1 7646; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $8, $pop33 7647; NO-SIMD128-FAST-NEXT: i32.and $push31=, $24, $pop30 7648; NO-SIMD128-FAST-NEXT: i32.or $push32=, $pop29, $pop31 7649; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop32 7650; NO-SIMD128-FAST-NEXT: return 7651 %masked_v1 = and <8 x i16> %v1, %c 7652 %inv_mask = xor <8 x i16> 7653 <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>, 7654 %c 7655 %masked_v2 = and <8 x i16> %v2, %inv_mask 7656 %a = or <8 x i16> %masked_v1, %masked_v2 7657 ret <8 x i16> %a 7658} 7659 7660define <8 x i16> @bitselect_xor_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) { 7661; SIMD128-LABEL: bitselect_xor_v8i16: 7662; SIMD128: .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128) 7663; SIMD128-NEXT: # %bb.0: 7664; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 7665; SIMD128-NEXT: return $pop0 7666; 7667; SIMD128-FAST-LABEL: bitselect_xor_v8i16: 7668; SIMD128-FAST: .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128) 7669; SIMD128-FAST-NEXT: # %bb.0: 7670; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2 7671; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0 7672; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2 7673; SIMD128-FAST-NEXT: return $pop0 7674; 7675; NO-SIMD128-LABEL: bitselect_xor_v8i16: 7676; NO-SIMD128: .functype bitselect_xor_v8i16 (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) -> () 7677; NO-SIMD128-NEXT: # %bb.0: 7678; NO-SIMD128-NEXT: i32.xor $push0=, $16, $24 7679; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $8 7680; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $24 7681; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 7682; NO-SIMD128-NEXT: i32.xor $push3=, $15, $23 7683; NO-SIMD128-NEXT: i32.and $push4=, $pop3, $7 7684; NO-SIMD128-NEXT: i32.xor $push5=, $pop4, $23 7685; NO-SIMD128-NEXT: i32.store16 12($0), $pop5 7686; NO-SIMD128-NEXT: i32.xor $push6=, $14, $22 7687; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $6 7688; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $22 7689; NO-SIMD128-NEXT: i32.store16 10($0), $pop8 7690; NO-SIMD128-NEXT: i32.xor $push9=, $13, $21 7691; NO-SIMD128-NEXT: i32.and $push10=, $pop9, $5 7692; NO-SIMD128-NEXT: i32.xor $push11=, $pop10, $21 7693; NO-SIMD128-NEXT: i32.store16 8($0), $pop11 7694; NO-SIMD128-NEXT: i32.xor $push12=, $12, $20 7695; NO-SIMD128-NEXT: i32.and $push13=, $pop12, $4 7696; NO-SIMD128-NEXT: i32.xor $push14=, $pop13, $20 7697; NO-SIMD128-NEXT: i32.store16 6($0), $pop14 7698; NO-SIMD128-NEXT: i32.xor $push15=, $11, $19 7699; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $3 7700; NO-SIMD128-NEXT: i32.xor $push17=, $pop16, $19 7701; NO-SIMD128-NEXT: i32.store16 4($0), $pop17 7702; NO-SIMD128-NEXT: i32.xor $push18=, $10, $18 7703; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $2 7704; NO-SIMD128-NEXT: i32.xor $push20=, $pop19, $18 7705; NO-SIMD128-NEXT: i32.store16 2($0), $pop20 7706; NO-SIMD128-NEXT: i32.xor $push21=, $9, $17 7707; NO-SIMD128-NEXT: i32.and $push22=, $pop21, $1 7708; NO-SIMD128-NEXT: i32.xor $push23=, $pop22, $17 7709; NO-SIMD128-NEXT: i32.store16 0($0), $pop23 7710; NO-SIMD128-NEXT: return 7711; 7712; NO-SIMD128-FAST-LABEL: bitselect_xor_v8i16: 7713; NO-SIMD128-FAST: .functype bitselect_xor_v8i16 (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) -> () 7714; NO-SIMD128-FAST-NEXT: # %bb.0: 7715; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $9, $17 7716; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1 7717; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $17 7718; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 7719; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $10, $18 7720; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2 7721; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $18 7722; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5 7723; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $11, $19 7724; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3 7725; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $19 7726; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8 7727; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $12, $20 7728; NO-SIMD128-FAST-NEXT: i32.and $push10=, $pop9, $4 7729; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $pop10, $20 7730; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop11 7731; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $13, $21 7732; NO-SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $5 7733; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $pop13, $21 7734; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop14 7735; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $14, $22 7736; NO-SIMD128-FAST-NEXT: i32.and $push16=, $pop15, $6 7737; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $pop16, $22 7738; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop17 7739; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $15, $23 7740; NO-SIMD128-FAST-NEXT: i32.and $push19=, $pop18, $7 7741; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $pop19, $23 7742; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop20 7743; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $16, $24 7744; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $8 7745; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $pop22, $24 7746; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop23 7747; NO-SIMD128-FAST-NEXT: return 7748 %xor1 = xor <8 x i16> %v1, %v2 7749 %and = and <8 x i16> %xor1, %c 7750 %a = xor <8 x i16> %and, %v2 7751 ret <8 x i16> %a 7752} 7753 7754define <8 x i16> @bitselect_xor_reversed_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) { 7755; SIMD128-LABEL: bitselect_xor_reversed_v8i16: 7756; SIMD128: .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128) 7757; SIMD128-NEXT: # %bb.0: 7758; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0 7759; SIMD128-NEXT: return $pop0 7760; 7761; SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16: 7762; SIMD128-FAST: .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128) 7763; SIMD128-FAST-NEXT: # %bb.0: 7764; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2 7765; SIMD128-FAST-NEXT: v128.not $push2=, $0 7766; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2 7767; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2 7768; SIMD128-FAST-NEXT: return $pop0 7769; 7770; NO-SIMD128-LABEL: bitselect_xor_reversed_v8i16: 7771; NO-SIMD128: .functype bitselect_xor_reversed_v8i16 (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) -> () 7772; NO-SIMD128-NEXT: # %bb.0: 7773; NO-SIMD128-NEXT: i32.xor $push2=, $16, $24 7774; NO-SIMD128-NEXT: i32.const $push0=, -1 7775; NO-SIMD128-NEXT: i32.xor $push1=, $8, $pop0 7776; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1 7777; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $24 7778; NO-SIMD128-NEXT: i32.store16 14($0), $pop4 7779; NO-SIMD128-NEXT: i32.xor $push6=, $15, $23 7780; NO-SIMD128-NEXT: i32.const $push39=, -1 7781; NO-SIMD128-NEXT: i32.xor $push5=, $7, $pop39 7782; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $pop5 7783; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $23 7784; NO-SIMD128-NEXT: i32.store16 12($0), $pop8 7785; NO-SIMD128-NEXT: i32.xor $push10=, $14, $22 7786; NO-SIMD128-NEXT: i32.const $push38=, -1 7787; NO-SIMD128-NEXT: i32.xor $push9=, $6, $pop38 7788; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $pop9 7789; NO-SIMD128-NEXT: i32.xor $push12=, $pop11, $22 7790; NO-SIMD128-NEXT: i32.store16 10($0), $pop12 7791; NO-SIMD128-NEXT: i32.xor $push14=, $13, $21 7792; NO-SIMD128-NEXT: i32.const $push37=, -1 7793; NO-SIMD128-NEXT: i32.xor $push13=, $5, $pop37 7794; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $pop13 7795; NO-SIMD128-NEXT: i32.xor $push16=, $pop15, $21 7796; NO-SIMD128-NEXT: i32.store16 8($0), $pop16 7797; NO-SIMD128-NEXT: i32.xor $push18=, $12, $20 7798; NO-SIMD128-NEXT: i32.const $push36=, -1 7799; NO-SIMD128-NEXT: i32.xor $push17=, $4, $pop36 7800; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $pop17 7801; NO-SIMD128-NEXT: i32.xor $push20=, $pop19, $20 7802; NO-SIMD128-NEXT: i32.store16 6($0), $pop20 7803; NO-SIMD128-NEXT: i32.xor $push22=, $11, $19 7804; NO-SIMD128-NEXT: i32.const $push35=, -1 7805; NO-SIMD128-NEXT: i32.xor $push21=, $3, $pop35 7806; NO-SIMD128-NEXT: i32.and $push23=, $pop22, $pop21 7807; NO-SIMD128-NEXT: i32.xor $push24=, $pop23, $19 7808; NO-SIMD128-NEXT: i32.store16 4($0), $pop24 7809; NO-SIMD128-NEXT: i32.xor $push26=, $10, $18 7810; NO-SIMD128-NEXT: i32.const $push34=, -1 7811; NO-SIMD128-NEXT: i32.xor $push25=, $2, $pop34 7812; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $pop25 7813; NO-SIMD128-NEXT: i32.xor $push28=, $pop27, $18 7814; NO-SIMD128-NEXT: i32.store16 2($0), $pop28 7815; NO-SIMD128-NEXT: i32.xor $push30=, $9, $17 7816; NO-SIMD128-NEXT: i32.const $push33=, -1 7817; NO-SIMD128-NEXT: i32.xor $push29=, $1, $pop33 7818; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $pop29 7819; NO-SIMD128-NEXT: i32.xor $push32=, $pop31, $17 7820; NO-SIMD128-NEXT: i32.store16 0($0), $pop32 7821; NO-SIMD128-NEXT: return 7822; 7823; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16: 7824; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v8i16 (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) -> () 7825; NO-SIMD128-FAST-NEXT: # %bb.0: 7826; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $9, $17 7827; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 7828; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 7829; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1 7830; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $17 7831; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4 7832; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $10, $18 7833; NO-SIMD128-FAST-NEXT: i32.const $push39=, -1 7834; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop39 7835; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5 7836; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $18 7837; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8 7838; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $11, $19 7839; NO-SIMD128-FAST-NEXT: i32.const $push38=, -1 7840; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop38 7841; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9 7842; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $19 7843; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12 7844; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $12, $20 7845; NO-SIMD128-FAST-NEXT: i32.const $push37=, -1 7846; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop37 7847; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13 7848; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $20 7849; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop16 7850; NO-SIMD128-FAST-NEXT: i32.xor $push18=, $13, $21 7851; NO-SIMD128-FAST-NEXT: i32.const $push36=, -1 7852; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $5, $pop36 7853; NO-SIMD128-FAST-NEXT: i32.and $push19=, $pop18, $pop17 7854; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $pop19, $21 7855; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop20 7856; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $14, $22 7857; NO-SIMD128-FAST-NEXT: i32.const $push35=, -1 7858; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $6, $pop35 7859; NO-SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop21 7860; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $pop23, $22 7861; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop24 7862; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $15, $23 7863; NO-SIMD128-FAST-NEXT: i32.const $push34=, -1 7864; NO-SIMD128-FAST-NEXT: i32.xor $push25=, $7, $pop34 7865; NO-SIMD128-FAST-NEXT: i32.and $push27=, $pop26, $pop25 7866; NO-SIMD128-FAST-NEXT: i32.xor $push28=, $pop27, $23 7867; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop28 7868; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $16, $24 7869; NO-SIMD128-FAST-NEXT: i32.const $push33=, -1 7870; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $8, $pop33 7871; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $pop29 7872; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $pop31, $24 7873; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop32 7874; NO-SIMD128-FAST-NEXT: return 7875 %xor1 = xor <8 x i16> %v1, %v2 7876 %notc = xor <8 x i16> %c, <i16 -1, i16 -1, i16 -1, i16 -1, 7877 i16 -1, i16 -1, i16 -1, i16 -1> 7878 %and = and <8 x i16> %xor1, %notc 7879 %a = xor <8 x i16> %and, %v2 7880 ret <8 x i16> %a 7881} 7882 7883define <8 x i16> @extmul_low_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) { 7884; SIMD128-LABEL: extmul_low_s_v8i16: 7885; SIMD128: .functype extmul_low_s_v8i16 (v128, v128) -> (v128) 7886; SIMD128-NEXT: # %bb.0: 7887; SIMD128-NEXT: i16x8.extmul_low_i8x16_s $push0=, $0, $1 7888; SIMD128-NEXT: return $pop0 7889; 7890; SIMD128-FAST-LABEL: extmul_low_s_v8i16: 7891; SIMD128-FAST: .functype extmul_low_s_v8i16 (v128, v128) -> (v128) 7892; SIMD128-FAST-NEXT: # %bb.0: 7893; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_s $push0=, $0 7894; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_s $push1=, $1 7895; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1 7896; SIMD128-FAST-NEXT: return $pop2 7897; 7898; NO-SIMD128-LABEL: extmul_low_s_v8i16: 7899; NO-SIMD128: .functype extmul_low_s_v8i16 (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) -> () 7900; NO-SIMD128-NEXT: # %bb.0: 7901; NO-SIMD128-NEXT: i32.extend8_s $push1=, $8 7902; NO-SIMD128-NEXT: i32.extend8_s $push0=, $24 7903; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 7904; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 7905; NO-SIMD128-NEXT: i32.extend8_s $push4=, $7 7906; NO-SIMD128-NEXT: i32.extend8_s $push3=, $23 7907; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 7908; NO-SIMD128-NEXT: i32.store16 12($0), $pop5 7909; NO-SIMD128-NEXT: i32.extend8_s $push7=, $6 7910; NO-SIMD128-NEXT: i32.extend8_s $push6=, $22 7911; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6 7912; NO-SIMD128-NEXT: i32.store16 10($0), $pop8 7913; NO-SIMD128-NEXT: i32.extend8_s $push10=, $5 7914; NO-SIMD128-NEXT: i32.extend8_s $push9=, $21 7915; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9 7916; NO-SIMD128-NEXT: i32.store16 8($0), $pop11 7917; NO-SIMD128-NEXT: i32.extend8_s $push13=, $4 7918; NO-SIMD128-NEXT: i32.extend8_s $push12=, $20 7919; NO-SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12 7920; NO-SIMD128-NEXT: i32.store16 6($0), $pop14 7921; NO-SIMD128-NEXT: i32.extend8_s $push16=, $3 7922; NO-SIMD128-NEXT: i32.extend8_s $push15=, $19 7923; NO-SIMD128-NEXT: i32.mul $push17=, $pop16, $pop15 7924; NO-SIMD128-NEXT: i32.store16 4($0), $pop17 7925; NO-SIMD128-NEXT: i32.extend8_s $push19=, $2 7926; NO-SIMD128-NEXT: i32.extend8_s $push18=, $18 7927; NO-SIMD128-NEXT: i32.mul $push20=, $pop19, $pop18 7928; NO-SIMD128-NEXT: i32.store16 2($0), $pop20 7929; NO-SIMD128-NEXT: i32.extend8_s $push22=, $1 7930; NO-SIMD128-NEXT: i32.extend8_s $push21=, $17 7931; NO-SIMD128-NEXT: i32.mul $push23=, $pop22, $pop21 7932; NO-SIMD128-NEXT: i32.store16 0($0), $pop23 7933; NO-SIMD128-NEXT: return 7934; 7935; NO-SIMD128-FAST-LABEL: extmul_low_s_v8i16: 7936; NO-SIMD128-FAST: .functype extmul_low_s_v8i16 (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) -> () 7937; NO-SIMD128-FAST-NEXT: # %bb.0: 7938; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1 7939; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17 7940; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0 7941; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 7942; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $2 7943; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $18 7944; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3 7945; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5 7946; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $3 7947; NO-SIMD128-FAST-NEXT: i32.extend8_s $push6=, $19 7948; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6 7949; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8 7950; NO-SIMD128-FAST-NEXT: i32.extend8_s $push10=, $4 7951; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $20 7952; NO-SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 7953; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop11 7954; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $5 7955; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $21 7956; NO-SIMD128-FAST-NEXT: i32.mul $push14=, $pop13, $pop12 7957; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop14 7958; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $6 7959; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $22 7960; NO-SIMD128-FAST-NEXT: i32.mul $push17=, $pop16, $pop15 7961; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop17 7962; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $7 7963; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $23 7964; NO-SIMD128-FAST-NEXT: i32.mul $push20=, $pop19, $pop18 7965; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop20 7966; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $8 7967; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $24 7968; NO-SIMD128-FAST-NEXT: i32.mul $push23=, $pop22, $pop21 7969; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop23 7970; NO-SIMD128-FAST-NEXT: return 7971 %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef, 7972 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 7973 %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef, 7974 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 7975 %extended1 = sext <8 x i8> %low1 to <8 x i16> 7976 %extended2 = sext <8 x i8> %low2 to <8 x i16> 7977 %a = mul <8 x i16> %extended1, %extended2 7978 ret <8 x i16> %a 7979} 7980 7981define <8 x i16> @extmul_high_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) { 7982; SIMD128-LABEL: extmul_high_s_v8i16: 7983; SIMD128: .functype extmul_high_s_v8i16 (v128, v128) -> (v128) 7984; SIMD128-NEXT: # %bb.0: 7985; SIMD128-NEXT: i16x8.extmul_high_i8x16_s $push0=, $0, $1 7986; SIMD128-NEXT: return $pop0 7987; 7988; SIMD128-FAST-LABEL: extmul_high_s_v8i16: 7989; SIMD128-FAST: .functype extmul_high_s_v8i16 (v128, v128) -> (v128) 7990; SIMD128-FAST-NEXT: # %bb.0: 7991; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_s $push0=, $0 7992; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_s $push1=, $1 7993; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1 7994; SIMD128-FAST-NEXT: return $pop2 7995; 7996; NO-SIMD128-LABEL: extmul_high_s_v8i16: 7997; NO-SIMD128: .functype extmul_high_s_v8i16 (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) -> () 7998; NO-SIMD128-NEXT: # %bb.0: 7999; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16 8000; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32 8001; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 8002; NO-SIMD128-NEXT: i32.store16 14($0), $pop2 8003; NO-SIMD128-NEXT: i32.extend8_s $push4=, $15 8004; NO-SIMD128-NEXT: i32.extend8_s $push3=, $31 8005; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 8006; NO-SIMD128-NEXT: i32.store16 12($0), $pop5 8007; NO-SIMD128-NEXT: i32.extend8_s $push7=, $14 8008; NO-SIMD128-NEXT: i32.extend8_s $push6=, $30 8009; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6 8010; NO-SIMD128-NEXT: i32.store16 10($0), $pop8 8011; NO-SIMD128-NEXT: i32.extend8_s $push10=, $13 8012; NO-SIMD128-NEXT: i32.extend8_s $push9=, $29 8013; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9 8014; NO-SIMD128-NEXT: i32.store16 8($0), $pop11 8015; NO-SIMD128-NEXT: i32.extend8_s $push13=, $12 8016; NO-SIMD128-NEXT: i32.extend8_s $push12=, $28 8017; NO-SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12 8018; NO-SIMD128-NEXT: i32.store16 6($0), $pop14 8019; NO-SIMD128-NEXT: i32.extend8_s $push16=, $11 8020; NO-SIMD128-NEXT: i32.extend8_s $push15=, $27 8021; NO-SIMD128-NEXT: i32.mul $push17=, $pop16, $pop15 8022; NO-SIMD128-NEXT: i32.store16 4($0), $pop17 8023; NO-SIMD128-NEXT: i32.extend8_s $push19=, $10 8024; NO-SIMD128-NEXT: i32.extend8_s $push18=, $26 8025; NO-SIMD128-NEXT: i32.mul $push20=, $pop19, $pop18 8026; NO-SIMD128-NEXT: i32.store16 2($0), $pop20 8027; NO-SIMD128-NEXT: i32.extend8_s $push22=, $9 8028; NO-SIMD128-NEXT: i32.extend8_s $push21=, $25 8029; NO-SIMD128-NEXT: i32.mul $push23=, $pop22, $pop21 8030; NO-SIMD128-NEXT: i32.store16 0($0), $pop23 8031; NO-SIMD128-NEXT: return 8032; 8033; NO-SIMD128-FAST-LABEL: extmul_high_s_v8i16: 8034; NO-SIMD128-FAST: .functype extmul_high_s_v8i16 (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) -> () 8035; NO-SIMD128-FAST-NEXT: # %bb.0: 8036; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $9 8037; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $25 8038; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0 8039; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2 8040; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $10 8041; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $26 8042; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3 8043; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5 8044; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $11 8045; NO-SIMD128-FAST-NEXT: i32.extend8_s $push6=, $27 8046; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6 8047; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8 8048; NO-SIMD128-FAST-NEXT: i32.extend8_s $push10=, $12 8049; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $28 8050; NO-SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 8051; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop11 8052; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $13 8053; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $29 8054; NO-SIMD128-FAST-NEXT: i32.mul $push14=, $pop13, $pop12 8055; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop14 8056; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $14 8057; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $30 8058; NO-SIMD128-FAST-NEXT: i32.mul $push17=, $pop16, $pop15 8059; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop17 8060; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $15 8061; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $31 8062; NO-SIMD128-FAST-NEXT: i32.mul $push20=, $pop19, $pop18 8063; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop20 8064; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $16 8065; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $32 8066; NO-SIMD128-FAST-NEXT: i32.mul $push23=, $pop22, $pop21 8067; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop23 8068; NO-SIMD128-FAST-NEXT: return 8069 %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef, 8070 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 8071 %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef, 8072 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 8073 %extended1 = sext <8 x i8> %high1 to <8 x i16> 8074 %extended2 = sext <8 x i8> %high2 to <8 x i16> 8075 %a = mul <8 x i16> %extended1, %extended2 8076 ret <8 x i16> %a 8077} 8078 8079define <8 x i16> @extmul_low_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) { 8080; SIMD128-LABEL: extmul_low_u_v8i16: 8081; SIMD128: .functype extmul_low_u_v8i16 (v128, v128) -> (v128) 8082; SIMD128-NEXT: # %bb.0: 8083; SIMD128-NEXT: i16x8.extmul_low_i8x16_u $push0=, $0, $1 8084; SIMD128-NEXT: return $pop0 8085; 8086; SIMD128-FAST-LABEL: extmul_low_u_v8i16: 8087; SIMD128-FAST: .functype extmul_low_u_v8i16 (v128, v128) -> (v128) 8088; SIMD128-FAST-NEXT: # %bb.0: 8089; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_u $push0=, $0 8090; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_u $push1=, $1 8091; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1 8092; SIMD128-FAST-NEXT: return $pop2 8093; 8094; NO-SIMD128-LABEL: extmul_low_u_v8i16: 8095; NO-SIMD128: .functype extmul_low_u_v8i16 (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) -> () 8096; NO-SIMD128-NEXT: # %bb.0: 8097; NO-SIMD128-NEXT: i32.const $push0=, 255 8098; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0 8099; NO-SIMD128-NEXT: i32.const $push39=, 255 8100; NO-SIMD128-NEXT: i32.and $push1=, $24, $pop39 8101; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1 8102; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 8103; NO-SIMD128-NEXT: i32.const $push38=, 255 8104; NO-SIMD128-NEXT: i32.and $push5=, $7, $pop38 8105; NO-SIMD128-NEXT: i32.const $push37=, 255 8106; NO-SIMD128-NEXT: i32.and $push4=, $23, $pop37 8107; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4 8108; NO-SIMD128-NEXT: i32.store16 12($0), $pop6 8109; NO-SIMD128-NEXT: i32.const $push36=, 255 8110; NO-SIMD128-NEXT: i32.and $push8=, $6, $pop36 8111; NO-SIMD128-NEXT: i32.const $push35=, 255 8112; NO-SIMD128-NEXT: i32.and $push7=, $22, $pop35 8113; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7 8114; NO-SIMD128-NEXT: i32.store16 10($0), $pop9 8115; NO-SIMD128-NEXT: i32.const $push34=, 255 8116; NO-SIMD128-NEXT: i32.and $push11=, $5, $pop34 8117; NO-SIMD128-NEXT: i32.const $push33=, 255 8118; NO-SIMD128-NEXT: i32.and $push10=, $21, $pop33 8119; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10 8120; NO-SIMD128-NEXT: i32.store16 8($0), $pop12 8121; NO-SIMD128-NEXT: i32.const $push32=, 255 8122; NO-SIMD128-NEXT: i32.and $push14=, $4, $pop32 8123; NO-SIMD128-NEXT: i32.const $push31=, 255 8124; NO-SIMD128-NEXT: i32.and $push13=, $20, $pop31 8125; NO-SIMD128-NEXT: i32.mul $push15=, $pop14, $pop13 8126; NO-SIMD128-NEXT: i32.store16 6($0), $pop15 8127; NO-SIMD128-NEXT: i32.const $push30=, 255 8128; NO-SIMD128-NEXT: i32.and $push17=, $3, $pop30 8129; NO-SIMD128-NEXT: i32.const $push29=, 255 8130; NO-SIMD128-NEXT: i32.and $push16=, $19, $pop29 8131; NO-SIMD128-NEXT: i32.mul $push18=, $pop17, $pop16 8132; NO-SIMD128-NEXT: i32.store16 4($0), $pop18 8133; NO-SIMD128-NEXT: i32.const $push28=, 255 8134; NO-SIMD128-NEXT: i32.and $push20=, $2, $pop28 8135; NO-SIMD128-NEXT: i32.const $push27=, 255 8136; NO-SIMD128-NEXT: i32.and $push19=, $18, $pop27 8137; NO-SIMD128-NEXT: i32.mul $push21=, $pop20, $pop19 8138; NO-SIMD128-NEXT: i32.store16 2($0), $pop21 8139; NO-SIMD128-NEXT: i32.const $push26=, 255 8140; NO-SIMD128-NEXT: i32.and $push23=, $1, $pop26 8141; NO-SIMD128-NEXT: i32.const $push25=, 255 8142; NO-SIMD128-NEXT: i32.and $push22=, $17, $pop25 8143; NO-SIMD128-NEXT: i32.mul $push24=, $pop23, $pop22 8144; NO-SIMD128-NEXT: i32.store16 0($0), $pop24 8145; NO-SIMD128-NEXT: return 8146; 8147; NO-SIMD128-FAST-LABEL: extmul_low_u_v8i16: 8148; NO-SIMD128-FAST: .functype extmul_low_u_v8i16 (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) -> () 8149; NO-SIMD128-FAST-NEXT: # %bb.0: 8150; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 8151; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 8152; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255 8153; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop39 8154; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 8155; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 8156; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255 8157; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop38 8158; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255 8159; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop37 8160; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 8161; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6 8162; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255 8163; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop36 8164; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255 8165; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop35 8166; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7 8167; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9 8168; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255 8169; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop34 8170; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255 8171; NO-SIMD128-FAST-NEXT: i32.and $push10=, $20, $pop33 8172; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10 8173; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop12 8174; NO-SIMD128-FAST-NEXT: i32.const $push32=, 255 8175; NO-SIMD128-FAST-NEXT: i32.and $push14=, $5, $pop32 8176; NO-SIMD128-FAST-NEXT: i32.const $push31=, 255 8177; NO-SIMD128-FAST-NEXT: i32.and $push13=, $21, $pop31 8178; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $pop14, $pop13 8179; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop15 8180; NO-SIMD128-FAST-NEXT: i32.const $push30=, 255 8181; NO-SIMD128-FAST-NEXT: i32.and $push17=, $6, $pop30 8182; NO-SIMD128-FAST-NEXT: i32.const $push29=, 255 8183; NO-SIMD128-FAST-NEXT: i32.and $push16=, $22, $pop29 8184; NO-SIMD128-FAST-NEXT: i32.mul $push18=, $pop17, $pop16 8185; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop18 8186; NO-SIMD128-FAST-NEXT: i32.const $push28=, 255 8187; NO-SIMD128-FAST-NEXT: i32.and $push20=, $7, $pop28 8188; NO-SIMD128-FAST-NEXT: i32.const $push27=, 255 8189; NO-SIMD128-FAST-NEXT: i32.and $push19=, $23, $pop27 8190; NO-SIMD128-FAST-NEXT: i32.mul $push21=, $pop20, $pop19 8191; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop21 8192; NO-SIMD128-FAST-NEXT: i32.const $push26=, 255 8193; NO-SIMD128-FAST-NEXT: i32.and $push23=, $8, $pop26 8194; NO-SIMD128-FAST-NEXT: i32.const $push25=, 255 8195; NO-SIMD128-FAST-NEXT: i32.and $push22=, $24, $pop25 8196; NO-SIMD128-FAST-NEXT: i32.mul $push24=, $pop23, $pop22 8197; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop24 8198; NO-SIMD128-FAST-NEXT: return 8199 %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef, 8200 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 8201 %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef, 8202 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 8203 %extended1 = zext <8 x i8> %low1 to <8 x i16> 8204 %extended2 = zext <8 x i8> %low2 to <8 x i16> 8205 %a = mul <8 x i16> %extended1, %extended2 8206 ret <8 x i16> %a 8207} 8208 8209define <8 x i16> @extmul_high_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) { 8210; SIMD128-LABEL: extmul_high_u_v8i16: 8211; SIMD128: .functype extmul_high_u_v8i16 (v128, v128) -> (v128) 8212; SIMD128-NEXT: # %bb.0: 8213; SIMD128-NEXT: i16x8.extmul_high_i8x16_u $push0=, $0, $1 8214; SIMD128-NEXT: return $pop0 8215; 8216; SIMD128-FAST-LABEL: extmul_high_u_v8i16: 8217; SIMD128-FAST: .functype extmul_high_u_v8i16 (v128, v128) -> (v128) 8218; SIMD128-FAST-NEXT: # %bb.0: 8219; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_u $push0=, $0 8220; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_u $push1=, $1 8221; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1 8222; SIMD128-FAST-NEXT: return $pop2 8223; 8224; NO-SIMD128-LABEL: extmul_high_u_v8i16: 8225; NO-SIMD128: .functype extmul_high_u_v8i16 (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) -> () 8226; NO-SIMD128-NEXT: # %bb.0: 8227; NO-SIMD128-NEXT: i32.const $push0=, 255 8228; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0 8229; NO-SIMD128-NEXT: i32.const $push39=, 255 8230; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop39 8231; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1 8232; NO-SIMD128-NEXT: i32.store16 14($0), $pop3 8233; NO-SIMD128-NEXT: i32.const $push38=, 255 8234; NO-SIMD128-NEXT: i32.and $push5=, $15, $pop38 8235; NO-SIMD128-NEXT: i32.const $push37=, 255 8236; NO-SIMD128-NEXT: i32.and $push4=, $31, $pop37 8237; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4 8238; NO-SIMD128-NEXT: i32.store16 12($0), $pop6 8239; NO-SIMD128-NEXT: i32.const $push36=, 255 8240; NO-SIMD128-NEXT: i32.and $push8=, $14, $pop36 8241; NO-SIMD128-NEXT: i32.const $push35=, 255 8242; NO-SIMD128-NEXT: i32.and $push7=, $30, $pop35 8243; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7 8244; NO-SIMD128-NEXT: i32.store16 10($0), $pop9 8245; NO-SIMD128-NEXT: i32.const $push34=, 255 8246; NO-SIMD128-NEXT: i32.and $push11=, $13, $pop34 8247; NO-SIMD128-NEXT: i32.const $push33=, 255 8248; NO-SIMD128-NEXT: i32.and $push10=, $29, $pop33 8249; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10 8250; NO-SIMD128-NEXT: i32.store16 8($0), $pop12 8251; NO-SIMD128-NEXT: i32.const $push32=, 255 8252; NO-SIMD128-NEXT: i32.and $push14=, $12, $pop32 8253; NO-SIMD128-NEXT: i32.const $push31=, 255 8254; NO-SIMD128-NEXT: i32.and $push13=, $28, $pop31 8255; NO-SIMD128-NEXT: i32.mul $push15=, $pop14, $pop13 8256; NO-SIMD128-NEXT: i32.store16 6($0), $pop15 8257; NO-SIMD128-NEXT: i32.const $push30=, 255 8258; NO-SIMD128-NEXT: i32.and $push17=, $11, $pop30 8259; NO-SIMD128-NEXT: i32.const $push29=, 255 8260; NO-SIMD128-NEXT: i32.and $push16=, $27, $pop29 8261; NO-SIMD128-NEXT: i32.mul $push18=, $pop17, $pop16 8262; NO-SIMD128-NEXT: i32.store16 4($0), $pop18 8263; NO-SIMD128-NEXT: i32.const $push28=, 255 8264; NO-SIMD128-NEXT: i32.and $push20=, $10, $pop28 8265; NO-SIMD128-NEXT: i32.const $push27=, 255 8266; NO-SIMD128-NEXT: i32.and $push19=, $26, $pop27 8267; NO-SIMD128-NEXT: i32.mul $push21=, $pop20, $pop19 8268; NO-SIMD128-NEXT: i32.store16 2($0), $pop21 8269; NO-SIMD128-NEXT: i32.const $push26=, 255 8270; NO-SIMD128-NEXT: i32.and $push23=, $9, $pop26 8271; NO-SIMD128-NEXT: i32.const $push25=, 255 8272; NO-SIMD128-NEXT: i32.and $push22=, $25, $pop25 8273; NO-SIMD128-NEXT: i32.mul $push24=, $pop23, $pop22 8274; NO-SIMD128-NEXT: i32.store16 0($0), $pop24 8275; NO-SIMD128-NEXT: return 8276; 8277; NO-SIMD128-FAST-LABEL: extmul_high_u_v8i16: 8278; NO-SIMD128-FAST: .functype extmul_high_u_v8i16 (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) -> () 8279; NO-SIMD128-FAST-NEXT: # %bb.0: 8280; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255 8281; NO-SIMD128-FAST-NEXT: i32.and $push2=, $9, $pop0 8282; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255 8283; NO-SIMD128-FAST-NEXT: i32.and $push1=, $25, $pop39 8284; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 8285; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3 8286; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255 8287; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop38 8288; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255 8289; NO-SIMD128-FAST-NEXT: i32.and $push4=, $26, $pop37 8290; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 8291; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6 8292; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255 8293; NO-SIMD128-FAST-NEXT: i32.and $push8=, $11, $pop36 8294; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255 8295; NO-SIMD128-FAST-NEXT: i32.and $push7=, $27, $pop35 8296; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7 8297; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9 8298; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255 8299; NO-SIMD128-FAST-NEXT: i32.and $push11=, $12, $pop34 8300; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255 8301; NO-SIMD128-FAST-NEXT: i32.and $push10=, $28, $pop33 8302; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10 8303; NO-SIMD128-FAST-NEXT: i32.store16 6($0), $pop12 8304; NO-SIMD128-FAST-NEXT: i32.const $push32=, 255 8305; NO-SIMD128-FAST-NEXT: i32.and $push14=, $13, $pop32 8306; NO-SIMD128-FAST-NEXT: i32.const $push31=, 255 8307; NO-SIMD128-FAST-NEXT: i32.and $push13=, $29, $pop31 8308; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $pop14, $pop13 8309; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop15 8310; NO-SIMD128-FAST-NEXT: i32.const $push30=, 255 8311; NO-SIMD128-FAST-NEXT: i32.and $push17=, $14, $pop30 8312; NO-SIMD128-FAST-NEXT: i32.const $push29=, 255 8313; NO-SIMD128-FAST-NEXT: i32.and $push16=, $30, $pop29 8314; NO-SIMD128-FAST-NEXT: i32.mul $push18=, $pop17, $pop16 8315; NO-SIMD128-FAST-NEXT: i32.store16 10($0), $pop18 8316; NO-SIMD128-FAST-NEXT: i32.const $push28=, 255 8317; NO-SIMD128-FAST-NEXT: i32.and $push20=, $15, $pop28 8318; NO-SIMD128-FAST-NEXT: i32.const $push27=, 255 8319; NO-SIMD128-FAST-NEXT: i32.and $push19=, $31, $pop27 8320; NO-SIMD128-FAST-NEXT: i32.mul $push21=, $pop20, $pop19 8321; NO-SIMD128-FAST-NEXT: i32.store16 12($0), $pop21 8322; NO-SIMD128-FAST-NEXT: i32.const $push26=, 255 8323; NO-SIMD128-FAST-NEXT: i32.and $push23=, $16, $pop26 8324; NO-SIMD128-FAST-NEXT: i32.const $push25=, 255 8325; NO-SIMD128-FAST-NEXT: i32.and $push22=, $32, $pop25 8326; NO-SIMD128-FAST-NEXT: i32.mul $push24=, $pop23, $pop22 8327; NO-SIMD128-FAST-NEXT: i32.store16 14($0), $pop24 8328; NO-SIMD128-FAST-NEXT: return 8329 %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef, 8330 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 8331 %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef, 8332 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 8333 %extended1 = zext <8 x i8> %high1 to <8 x i16> 8334 %extended2 = zext <8 x i8> %high2 to <8 x i16> 8335 %a = mul <8 x i16> %extended1, %extended2 8336 ret <8 x i16> %a 8337} 8338 8339; ============================================================================== 8340; 4 x i32 8341; ============================================================================== 8342define <4 x i32> @add_v4i32(<4 x i32> %x, <4 x i32> %y) { 8343; SIMD128-LABEL: add_v4i32: 8344; SIMD128: .functype add_v4i32 (v128, v128) -> (v128) 8345; SIMD128-NEXT: # %bb.0: 8346; SIMD128-NEXT: i32x4.add $push0=, $0, $1 8347; SIMD128-NEXT: return $pop0 8348; 8349; SIMD128-FAST-LABEL: add_v4i32: 8350; SIMD128-FAST: .functype add_v4i32 (v128, v128) -> (v128) 8351; SIMD128-FAST-NEXT: # %bb.0: 8352; SIMD128-FAST-NEXT: i32x4.add $push0=, $0, $1 8353; SIMD128-FAST-NEXT: return $pop0 8354; 8355; NO-SIMD128-LABEL: add_v4i32: 8356; NO-SIMD128: .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8357; NO-SIMD128-NEXT: # %bb.0: 8358; NO-SIMD128-NEXT: i32.add $push0=, $4, $8 8359; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8360; NO-SIMD128-NEXT: i32.add $push1=, $3, $7 8361; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8362; NO-SIMD128-NEXT: i32.add $push2=, $2, $6 8363; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8364; NO-SIMD128-NEXT: i32.add $push3=, $1, $5 8365; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8366; NO-SIMD128-NEXT: return 8367; 8368; NO-SIMD128-FAST-LABEL: add_v4i32: 8369; NO-SIMD128-FAST: .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8370; NO-SIMD128-FAST-NEXT: # %bb.0: 8371; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $5 8372; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8373; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $6 8374; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 8375; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $7 8376; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 8377; NO-SIMD128-FAST-NEXT: i32.add $push3=, $4, $8 8378; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 8379; NO-SIMD128-FAST-NEXT: return 8380 %a = add <4 x i32> %x, %y 8381 ret <4 x i32> %a 8382} 8383 8384define <4 x i32> @sub_v4i32(<4 x i32> %x, <4 x i32> %y) { 8385; SIMD128-LABEL: sub_v4i32: 8386; SIMD128: .functype sub_v4i32 (v128, v128) -> (v128) 8387; SIMD128-NEXT: # %bb.0: 8388; SIMD128-NEXT: i32x4.sub $push0=, $0, $1 8389; SIMD128-NEXT: return $pop0 8390; 8391; SIMD128-FAST-LABEL: sub_v4i32: 8392; SIMD128-FAST: .functype sub_v4i32 (v128, v128) -> (v128) 8393; SIMD128-FAST-NEXT: # %bb.0: 8394; SIMD128-FAST-NEXT: i32x4.sub $push0=, $0, $1 8395; SIMD128-FAST-NEXT: return $pop0 8396; 8397; NO-SIMD128-LABEL: sub_v4i32: 8398; NO-SIMD128: .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8399; NO-SIMD128-NEXT: # %bb.0: 8400; NO-SIMD128-NEXT: i32.sub $push0=, $4, $8 8401; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8402; NO-SIMD128-NEXT: i32.sub $push1=, $3, $7 8403; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8404; NO-SIMD128-NEXT: i32.sub $push2=, $2, $6 8405; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8406; NO-SIMD128-NEXT: i32.sub $push3=, $1, $5 8407; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8408; NO-SIMD128-NEXT: return 8409; 8410; NO-SIMD128-FAST-LABEL: sub_v4i32: 8411; NO-SIMD128-FAST: .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8412; NO-SIMD128-FAST-NEXT: # %bb.0: 8413; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $5 8414; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8415; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $6 8416; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 8417; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $7 8418; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 8419; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $4, $8 8420; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 8421; NO-SIMD128-FAST-NEXT: return 8422 %a = sub <4 x i32> %x, %y 8423 ret <4 x i32> %a 8424} 8425 8426define <4 x i32> @mul_v4i32(<4 x i32> %x, <4 x i32> %y) { 8427; SIMD128-LABEL: mul_v4i32: 8428; SIMD128: .functype mul_v4i32 (v128, v128) -> (v128) 8429; SIMD128-NEXT: # %bb.0: 8430; SIMD128-NEXT: i32x4.mul $push0=, $0, $1 8431; SIMD128-NEXT: return $pop0 8432; 8433; SIMD128-FAST-LABEL: mul_v4i32: 8434; SIMD128-FAST: .functype mul_v4i32 (v128, v128) -> (v128) 8435; SIMD128-FAST-NEXT: # %bb.0: 8436; SIMD128-FAST-NEXT: i32x4.mul $push0=, $0, $1 8437; SIMD128-FAST-NEXT: return $pop0 8438; 8439; NO-SIMD128-LABEL: mul_v4i32: 8440; NO-SIMD128: .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8441; NO-SIMD128-NEXT: # %bb.0: 8442; NO-SIMD128-NEXT: i32.mul $push0=, $4, $8 8443; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8444; NO-SIMD128-NEXT: i32.mul $push1=, $3, $7 8445; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8446; NO-SIMD128-NEXT: i32.mul $push2=, $2, $6 8447; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8448; NO-SIMD128-NEXT: i32.mul $push3=, $1, $5 8449; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8450; NO-SIMD128-NEXT: return 8451; 8452; NO-SIMD128-FAST-LABEL: mul_v4i32: 8453; NO-SIMD128-FAST: .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8454; NO-SIMD128-FAST-NEXT: # %bb.0: 8455; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $5 8456; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8457; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $6 8458; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 8459; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $7 8460; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 8461; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $4, $8 8462; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 8463; NO-SIMD128-FAST-NEXT: return 8464 %a = mul <4 x i32> %x, %y 8465 ret <4 x i32> %a 8466} 8467 8468define <4 x i32> @min_s_v4i32(<4 x i32> %x, <4 x i32> %y) { 8469; SIMD128-LABEL: min_s_v4i32: 8470; SIMD128: .functype min_s_v4i32 (v128, v128) -> (v128) 8471; SIMD128-NEXT: # %bb.0: 8472; SIMD128-NEXT: i32x4.min_s $push0=, $0, $1 8473; SIMD128-NEXT: return $pop0 8474; 8475; SIMD128-FAST-LABEL: min_s_v4i32: 8476; SIMD128-FAST: .functype min_s_v4i32 (v128, v128) -> (v128) 8477; SIMD128-FAST-NEXT: # %bb.0: 8478; SIMD128-FAST-NEXT: i32x4.min_s $push0=, $0, $1 8479; SIMD128-FAST-NEXT: return $pop0 8480; 8481; NO-SIMD128-LABEL: min_s_v4i32: 8482; NO-SIMD128: .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8483; NO-SIMD128-NEXT: # %bb.0: 8484; NO-SIMD128-NEXT: i32.lt_s $push0=, $4, $8 8485; NO-SIMD128-NEXT: i32.select $push1=, $4, $8, $pop0 8486; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8487; NO-SIMD128-NEXT: i32.lt_s $push2=, $3, $7 8488; NO-SIMD128-NEXT: i32.select $push3=, $3, $7, $pop2 8489; NO-SIMD128-NEXT: i32.store 8($0), $pop3 8490; NO-SIMD128-NEXT: i32.lt_s $push4=, $2, $6 8491; NO-SIMD128-NEXT: i32.select $push5=, $2, $6, $pop4 8492; NO-SIMD128-NEXT: i32.store 4($0), $pop5 8493; NO-SIMD128-NEXT: i32.lt_s $push6=, $1, $5 8494; NO-SIMD128-NEXT: i32.select $push7=, $1, $5, $pop6 8495; NO-SIMD128-NEXT: i32.store 0($0), $pop7 8496; NO-SIMD128-NEXT: return 8497; 8498; NO-SIMD128-FAST-LABEL: min_s_v4i32: 8499; NO-SIMD128-FAST: .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8500; NO-SIMD128-FAST-NEXT: # %bb.0: 8501; NO-SIMD128-FAST-NEXT: i32.lt_s $push0=, $1, $5 8502; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0 8503; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8504; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $2, $6 8505; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2 8506; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3 8507; NO-SIMD128-FAST-NEXT: i32.lt_s $push4=, $3, $7 8508; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4 8509; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5 8510; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $4, $8 8511; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6 8512; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop7 8513; NO-SIMD128-FAST-NEXT: return 8514 %c = icmp slt <4 x i32> %x, %y 8515 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y 8516 ret <4 x i32> %a 8517} 8518 8519define <4 x i32> @min_u_v4i32(<4 x i32> %x, <4 x i32> %y) { 8520; SIMD128-LABEL: min_u_v4i32: 8521; SIMD128: .functype min_u_v4i32 (v128, v128) -> (v128) 8522; SIMD128-NEXT: # %bb.0: 8523; SIMD128-NEXT: i32x4.min_u $push0=, $0, $1 8524; SIMD128-NEXT: return $pop0 8525; 8526; SIMD128-FAST-LABEL: min_u_v4i32: 8527; SIMD128-FAST: .functype min_u_v4i32 (v128, v128) -> (v128) 8528; SIMD128-FAST-NEXT: # %bb.0: 8529; SIMD128-FAST-NEXT: i32x4.min_u $push0=, $0, $1 8530; SIMD128-FAST-NEXT: return $pop0 8531; 8532; NO-SIMD128-LABEL: min_u_v4i32: 8533; NO-SIMD128: .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8534; NO-SIMD128-NEXT: # %bb.0: 8535; NO-SIMD128-NEXT: i32.lt_u $push0=, $4, $8 8536; NO-SIMD128-NEXT: i32.select $push1=, $4, $8, $pop0 8537; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8538; NO-SIMD128-NEXT: i32.lt_u $push2=, $3, $7 8539; NO-SIMD128-NEXT: i32.select $push3=, $3, $7, $pop2 8540; NO-SIMD128-NEXT: i32.store 8($0), $pop3 8541; NO-SIMD128-NEXT: i32.lt_u $push4=, $2, $6 8542; NO-SIMD128-NEXT: i32.select $push5=, $2, $6, $pop4 8543; NO-SIMD128-NEXT: i32.store 4($0), $pop5 8544; NO-SIMD128-NEXT: i32.lt_u $push6=, $1, $5 8545; NO-SIMD128-NEXT: i32.select $push7=, $1, $5, $pop6 8546; NO-SIMD128-NEXT: i32.store 0($0), $pop7 8547; NO-SIMD128-NEXT: return 8548; 8549; NO-SIMD128-FAST-LABEL: min_u_v4i32: 8550; NO-SIMD128-FAST: .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8551; NO-SIMD128-FAST-NEXT: # %bb.0: 8552; NO-SIMD128-FAST-NEXT: i32.lt_u $push0=, $1, $5 8553; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0 8554; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8555; NO-SIMD128-FAST-NEXT: i32.lt_u $push2=, $2, $6 8556; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2 8557; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3 8558; NO-SIMD128-FAST-NEXT: i32.lt_u $push4=, $3, $7 8559; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4 8560; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5 8561; NO-SIMD128-FAST-NEXT: i32.lt_u $push6=, $4, $8 8562; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6 8563; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop7 8564; NO-SIMD128-FAST-NEXT: return 8565 %c = icmp ult <4 x i32> %x, %y 8566 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y 8567 ret <4 x i32> %a 8568} 8569 8570define <4 x i32> @max_s_v4i32(<4 x i32> %x, <4 x i32> %y) { 8571; SIMD128-LABEL: max_s_v4i32: 8572; SIMD128: .functype max_s_v4i32 (v128, v128) -> (v128) 8573; SIMD128-NEXT: # %bb.0: 8574; SIMD128-NEXT: i32x4.max_s $push0=, $0, $1 8575; SIMD128-NEXT: return $pop0 8576; 8577; SIMD128-FAST-LABEL: max_s_v4i32: 8578; SIMD128-FAST: .functype max_s_v4i32 (v128, v128) -> (v128) 8579; SIMD128-FAST-NEXT: # %bb.0: 8580; SIMD128-FAST-NEXT: i32x4.max_s $push0=, $0, $1 8581; SIMD128-FAST-NEXT: return $pop0 8582; 8583; NO-SIMD128-LABEL: max_s_v4i32: 8584; NO-SIMD128: .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8585; NO-SIMD128-NEXT: # %bb.0: 8586; NO-SIMD128-NEXT: i32.gt_s $push0=, $4, $8 8587; NO-SIMD128-NEXT: i32.select $push1=, $4, $8, $pop0 8588; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8589; NO-SIMD128-NEXT: i32.gt_s $push2=, $3, $7 8590; NO-SIMD128-NEXT: i32.select $push3=, $3, $7, $pop2 8591; NO-SIMD128-NEXT: i32.store 8($0), $pop3 8592; NO-SIMD128-NEXT: i32.gt_s $push4=, $2, $6 8593; NO-SIMD128-NEXT: i32.select $push5=, $2, $6, $pop4 8594; NO-SIMD128-NEXT: i32.store 4($0), $pop5 8595; NO-SIMD128-NEXT: i32.gt_s $push6=, $1, $5 8596; NO-SIMD128-NEXT: i32.select $push7=, $1, $5, $pop6 8597; NO-SIMD128-NEXT: i32.store 0($0), $pop7 8598; NO-SIMD128-NEXT: return 8599; 8600; NO-SIMD128-FAST-LABEL: max_s_v4i32: 8601; NO-SIMD128-FAST: .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8602; NO-SIMD128-FAST-NEXT: # %bb.0: 8603; NO-SIMD128-FAST-NEXT: i32.gt_s $push0=, $1, $5 8604; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0 8605; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8606; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $2, $6 8607; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2 8608; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3 8609; NO-SIMD128-FAST-NEXT: i32.gt_s $push4=, $3, $7 8610; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4 8611; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5 8612; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $4, $8 8613; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6 8614; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop7 8615; NO-SIMD128-FAST-NEXT: return 8616 %c = icmp sgt <4 x i32> %x, %y 8617 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y 8618 ret <4 x i32> %a 8619} 8620 8621define <4 x i32> @max_u_v4i32(<4 x i32> %x, <4 x i32> %y) { 8622; SIMD128-LABEL: max_u_v4i32: 8623; SIMD128: .functype max_u_v4i32 (v128, v128) -> (v128) 8624; SIMD128-NEXT: # %bb.0: 8625; SIMD128-NEXT: i32x4.max_u $push0=, $0, $1 8626; SIMD128-NEXT: return $pop0 8627; 8628; SIMD128-FAST-LABEL: max_u_v4i32: 8629; SIMD128-FAST: .functype max_u_v4i32 (v128, v128) -> (v128) 8630; SIMD128-FAST-NEXT: # %bb.0: 8631; SIMD128-FAST-NEXT: i32x4.max_u $push0=, $0, $1 8632; SIMD128-FAST-NEXT: return $pop0 8633; 8634; NO-SIMD128-LABEL: max_u_v4i32: 8635; NO-SIMD128: .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8636; NO-SIMD128-NEXT: # %bb.0: 8637; NO-SIMD128-NEXT: i32.gt_u $push0=, $4, $8 8638; NO-SIMD128-NEXT: i32.select $push1=, $4, $8, $pop0 8639; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8640; NO-SIMD128-NEXT: i32.gt_u $push2=, $3, $7 8641; NO-SIMD128-NEXT: i32.select $push3=, $3, $7, $pop2 8642; NO-SIMD128-NEXT: i32.store 8($0), $pop3 8643; NO-SIMD128-NEXT: i32.gt_u $push4=, $2, $6 8644; NO-SIMD128-NEXT: i32.select $push5=, $2, $6, $pop4 8645; NO-SIMD128-NEXT: i32.store 4($0), $pop5 8646; NO-SIMD128-NEXT: i32.gt_u $push6=, $1, $5 8647; NO-SIMD128-NEXT: i32.select $push7=, $1, $5, $pop6 8648; NO-SIMD128-NEXT: i32.store 0($0), $pop7 8649; NO-SIMD128-NEXT: return 8650; 8651; NO-SIMD128-FAST-LABEL: max_u_v4i32: 8652; NO-SIMD128-FAST: .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8653; NO-SIMD128-FAST-NEXT: # %bb.0: 8654; NO-SIMD128-FAST-NEXT: i32.gt_u $push0=, $1, $5 8655; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0 8656; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8657; NO-SIMD128-FAST-NEXT: i32.gt_u $push2=, $2, $6 8658; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2 8659; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3 8660; NO-SIMD128-FAST-NEXT: i32.gt_u $push4=, $3, $7 8661; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4 8662; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5 8663; NO-SIMD128-FAST-NEXT: i32.gt_u $push6=, $4, $8 8664; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6 8665; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop7 8666; NO-SIMD128-FAST-NEXT: return 8667 %c = icmp ugt <4 x i32> %x, %y 8668 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y 8669 ret <4 x i32> %a 8670} 8671 8672define <4 x i32> @abs_v4i32(<4 x i32> %x) { 8673; SIMD128-LABEL: abs_v4i32: 8674; SIMD128: .functype abs_v4i32 (v128) -> (v128) 8675; SIMD128-NEXT: # %bb.0: 8676; SIMD128-NEXT: i32x4.abs $push0=, $0 8677; SIMD128-NEXT: return $pop0 8678; 8679; SIMD128-FAST-LABEL: abs_v4i32: 8680; SIMD128-FAST: .functype abs_v4i32 (v128) -> (v128) 8681; SIMD128-FAST-NEXT: # %bb.0: 8682; SIMD128-FAST-NEXT: i32x4.abs $push0=, $0 8683; SIMD128-FAST-NEXT: return $pop0 8684; 8685; NO-SIMD128-LABEL: abs_v4i32: 8686; NO-SIMD128: .functype abs_v4i32 (i32, i32, i32, i32, i32) -> () 8687; NO-SIMD128-NEXT: # %bb.0: 8688; NO-SIMD128-NEXT: i32.const $push0=, 31 8689; NO-SIMD128-NEXT: i32.shr_s $push19=, $4, $pop0 8690; NO-SIMD128-NEXT: local.tee $push18=, $5=, $pop19 8691; NO-SIMD128-NEXT: i32.xor $push1=, $4, $pop18 8692; NO-SIMD128-NEXT: i32.sub $push2=, $pop1, $5 8693; NO-SIMD128-NEXT: i32.store 12($0), $pop2 8694; NO-SIMD128-NEXT: i32.const $push17=, 31 8695; NO-SIMD128-NEXT: i32.shr_s $push16=, $3, $pop17 8696; NO-SIMD128-NEXT: local.tee $push15=, $4=, $pop16 8697; NO-SIMD128-NEXT: i32.xor $push3=, $3, $pop15 8698; NO-SIMD128-NEXT: i32.sub $push4=, $pop3, $4 8699; NO-SIMD128-NEXT: i32.store 8($0), $pop4 8700; NO-SIMD128-NEXT: i32.const $push14=, 31 8701; NO-SIMD128-NEXT: i32.shr_s $push13=, $2, $pop14 8702; NO-SIMD128-NEXT: local.tee $push12=, $4=, $pop13 8703; NO-SIMD128-NEXT: i32.xor $push5=, $2, $pop12 8704; NO-SIMD128-NEXT: i32.sub $push6=, $pop5, $4 8705; NO-SIMD128-NEXT: i32.store 4($0), $pop6 8706; NO-SIMD128-NEXT: i32.const $push11=, 31 8707; NO-SIMD128-NEXT: i32.shr_s $push10=, $1, $pop11 8708; NO-SIMD128-NEXT: local.tee $push9=, $4=, $pop10 8709; NO-SIMD128-NEXT: i32.xor $push7=, $1, $pop9 8710; NO-SIMD128-NEXT: i32.sub $push8=, $pop7, $4 8711; NO-SIMD128-NEXT: i32.store 0($0), $pop8 8712; NO-SIMD128-NEXT: return 8713; 8714; NO-SIMD128-FAST-LABEL: abs_v4i32: 8715; NO-SIMD128-FAST: .functype abs_v4i32 (i32, i32, i32, i32, i32) -> () 8716; NO-SIMD128-FAST-NEXT: # %bb.0: 8717; NO-SIMD128-FAST-NEXT: i32.const $push0=, 31 8718; NO-SIMD128-FAST-NEXT: i32.shr_s $push19=, $1, $pop0 8719; NO-SIMD128-FAST-NEXT: local.tee $push18=, $5=, $pop19 8720; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop18 8721; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop1, $5 8722; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2 8723; NO-SIMD128-FAST-NEXT: i32.const $push17=, 31 8724; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $2, $pop17 8725; NO-SIMD128-FAST-NEXT: local.tee $push15=, $1=, $pop16 8726; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $2, $pop15 8727; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $pop3, $1 8728; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop4 8729; NO-SIMD128-FAST-NEXT: i32.const $push14=, 31 8730; NO-SIMD128-FAST-NEXT: i32.shr_s $push13=, $3, $pop14 8731; NO-SIMD128-FAST-NEXT: local.tee $push12=, $2=, $pop13 8732; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $3, $pop12 8733; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $2 8734; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop6 8735; NO-SIMD128-FAST-NEXT: i32.const $push11=, 31 8736; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $4, $pop11 8737; NO-SIMD128-FAST-NEXT: local.tee $push9=, $3=, $pop10 8738; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $4, $pop9 8739; NO-SIMD128-FAST-NEXT: i32.sub $push8=, $pop7, $3 8740; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop8 8741; NO-SIMD128-FAST-NEXT: return 8742 %a = sub <4 x i32> zeroinitializer, %x 8743 %b = icmp slt <4 x i32> %x, zeroinitializer 8744 %c = select <4 x i1> %b, <4 x i32> %a, <4 x i32> %x 8745 ret <4 x i32> %c 8746} 8747 8748define <4 x i32> @neg_v4i32(<4 x i32> %x) { 8749; SIMD128-LABEL: neg_v4i32: 8750; SIMD128: .functype neg_v4i32 (v128) -> (v128) 8751; SIMD128-NEXT: # %bb.0: 8752; SIMD128-NEXT: i32x4.neg $push0=, $0 8753; SIMD128-NEXT: return $pop0 8754; 8755; SIMD128-FAST-LABEL: neg_v4i32: 8756; SIMD128-FAST: .functype neg_v4i32 (v128) -> (v128) 8757; SIMD128-FAST-NEXT: # %bb.0: 8758; SIMD128-FAST-NEXT: i32x4.neg $push0=, $0 8759; SIMD128-FAST-NEXT: return $pop0 8760; 8761; NO-SIMD128-LABEL: neg_v4i32: 8762; NO-SIMD128: .functype neg_v4i32 (i32, i32, i32, i32, i32) -> () 8763; NO-SIMD128-NEXT: # %bb.0: 8764; NO-SIMD128-NEXT: i32.const $push0=, 0 8765; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $4 8766; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8767; NO-SIMD128-NEXT: i32.const $push7=, 0 8768; NO-SIMD128-NEXT: i32.sub $push2=, $pop7, $3 8769; NO-SIMD128-NEXT: i32.store 8($0), $pop2 8770; NO-SIMD128-NEXT: i32.const $push6=, 0 8771; NO-SIMD128-NEXT: i32.sub $push3=, $pop6, $2 8772; NO-SIMD128-NEXT: i32.store 4($0), $pop3 8773; NO-SIMD128-NEXT: i32.const $push5=, 0 8774; NO-SIMD128-NEXT: i32.sub $push4=, $pop5, $1 8775; NO-SIMD128-NEXT: i32.store 0($0), $pop4 8776; NO-SIMD128-NEXT: return 8777; 8778; NO-SIMD128-FAST-LABEL: neg_v4i32: 8779; NO-SIMD128-FAST: .functype neg_v4i32 (i32, i32, i32, i32, i32) -> () 8780; NO-SIMD128-FAST-NEXT: # %bb.0: 8781; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0 8782; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1 8783; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8784; NO-SIMD128-FAST-NEXT: i32.const $push7=, 0 8785; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop7, $2 8786; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2 8787; NO-SIMD128-FAST-NEXT: i32.const $push6=, 0 8788; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop6, $3 8789; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3 8790; NO-SIMD128-FAST-NEXT: i32.const $push5=, 0 8791; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $pop5, $4 8792; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop4 8793; NO-SIMD128-FAST-NEXT: return 8794 %a = sub <4 x i32> <i32 0, i32 0, i32 0, i32 0>, %x 8795 ret <4 x i32> %a 8796} 8797 8798define <4 x i32> @shl_v4i32(<4 x i32> %v, i32 %x) { 8799; SIMD128-LABEL: shl_v4i32: 8800; SIMD128: .functype shl_v4i32 (v128, i32) -> (v128) 8801; SIMD128-NEXT: # %bb.0: 8802; SIMD128-NEXT: i32x4.shl $push0=, $0, $1 8803; SIMD128-NEXT: return $pop0 8804; 8805; SIMD128-FAST-LABEL: shl_v4i32: 8806; SIMD128-FAST: .functype shl_v4i32 (v128, i32) -> (v128) 8807; SIMD128-FAST-NEXT: # %bb.0: 8808; SIMD128-FAST-NEXT: i32x4.shl $push0=, $0, $1 8809; SIMD128-FAST-NEXT: return $pop0 8810; 8811; NO-SIMD128-LABEL: shl_v4i32: 8812; NO-SIMD128: .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> () 8813; NO-SIMD128-NEXT: # %bb.0: 8814; NO-SIMD128-NEXT: i32.shl $push0=, $4, $5 8815; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8816; NO-SIMD128-NEXT: i32.shl $push1=, $3, $5 8817; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8818; NO-SIMD128-NEXT: i32.shl $push2=, $2, $5 8819; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8820; NO-SIMD128-NEXT: i32.shl $push3=, $1, $5 8821; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8822; NO-SIMD128-NEXT: return 8823; 8824; NO-SIMD128-FAST-LABEL: shl_v4i32: 8825; NO-SIMD128-FAST: .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> () 8826; NO-SIMD128-FAST-NEXT: # %bb.0: 8827; NO-SIMD128-FAST-NEXT: i32.shl $push0=, $1, $5 8828; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8829; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $5 8830; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 8831; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $3, $5 8832; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 8833; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $4, $5 8834; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 8835; NO-SIMD128-FAST-NEXT: return 8836 %t = insertelement <4 x i32> undef, i32 %x, i32 0 8837 %s = shufflevector <4 x i32> %t, <4 x i32> undef, 8838 <4 x i32> <i32 0, i32 0, i32 0, i32 0> 8839 %a = shl <4 x i32> %v, %s 8840 ret <4 x i32> %a 8841} 8842 8843define <4 x i32> @shl_const_v4i32(<4 x i32> %v) { 8844; SIMD128-LABEL: shl_const_v4i32: 8845; SIMD128: .functype shl_const_v4i32 (v128) -> (v128) 8846; SIMD128-NEXT: # %bb.0: 8847; SIMD128-NEXT: i32.const $push0=, 5 8848; SIMD128-NEXT: i32x4.shl $push1=, $0, $pop0 8849; SIMD128-NEXT: return $pop1 8850; 8851; SIMD128-FAST-LABEL: shl_const_v4i32: 8852; SIMD128-FAST: .functype shl_const_v4i32 (v128) -> (v128) 8853; SIMD128-FAST-NEXT: # %bb.0: 8854; SIMD128-FAST-NEXT: i32.const $push1=, 5 8855; SIMD128-FAST-NEXT: i32x4.shl $push0=, $0, $pop1 8856; SIMD128-FAST-NEXT: return $pop0 8857; 8858; NO-SIMD128-LABEL: shl_const_v4i32: 8859; NO-SIMD128: .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> () 8860; NO-SIMD128-NEXT: # %bb.0: 8861; NO-SIMD128-NEXT: i32.const $push0=, 5 8862; NO-SIMD128-NEXT: i32.shl $push1=, $4, $pop0 8863; NO-SIMD128-NEXT: i32.store 12($0), $pop1 8864; NO-SIMD128-NEXT: i32.const $push7=, 5 8865; NO-SIMD128-NEXT: i32.shl $push2=, $3, $pop7 8866; NO-SIMD128-NEXT: i32.store 8($0), $pop2 8867; NO-SIMD128-NEXT: i32.const $push6=, 5 8868; NO-SIMD128-NEXT: i32.shl $push3=, $2, $pop6 8869; NO-SIMD128-NEXT: i32.store 4($0), $pop3 8870; NO-SIMD128-NEXT: i32.const $push5=, 5 8871; NO-SIMD128-NEXT: i32.shl $push4=, $1, $pop5 8872; NO-SIMD128-NEXT: i32.store 0($0), $pop4 8873; NO-SIMD128-NEXT: return 8874; 8875; NO-SIMD128-FAST-LABEL: shl_const_v4i32: 8876; NO-SIMD128-FAST: .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> () 8877; NO-SIMD128-FAST-NEXT: # %bb.0: 8878; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5 8879; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0 8880; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 8881; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5 8882; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop7 8883; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2 8884; NO-SIMD128-FAST-NEXT: i32.const $push6=, 5 8885; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop6 8886; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3 8887; NO-SIMD128-FAST-NEXT: i32.const $push5=, 5 8888; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $4, $pop5 8889; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop4 8890; NO-SIMD128-FAST-NEXT: return 8891 %a = shl <4 x i32> %v, <i32 5, i32 5, i32 5, i32 5> 8892 ret <4 x i32> %a 8893} 8894 8895define <4 x i32> @shl_vec_v4i32(<4 x i32> %v, <4 x i32> %x) { 8896; SIMD128-LABEL: shl_vec_v4i32: 8897; SIMD128: .functype shl_vec_v4i32 (v128, v128) -> (v128) 8898; SIMD128-NEXT: # %bb.0: 8899; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0 8900; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0 8901; SIMD128-NEXT: i32.shl $push5=, $pop4, $pop3 8902; SIMD128-NEXT: i32x4.splat $push6=, $pop5 8903; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1 8904; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1 8905; SIMD128-NEXT: i32.shl $push2=, $pop1, $pop0 8906; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2 8907; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2 8908; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2 8909; SIMD128-NEXT: i32.shl $push10=, $pop9, $pop8 8910; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10 8911; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3 8912; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3 8913; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12 8914; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14 8915; SIMD128-NEXT: return $pop15 8916; 8917; SIMD128-FAST-LABEL: shl_vec_v4i32: 8918; SIMD128-FAST: .functype shl_vec_v4i32 (v128, v128) -> (v128) 8919; SIMD128-FAST-NEXT: # %bb.0: 8920; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0 8921; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0 8922; SIMD128-FAST-NEXT: i32.shl $push6=, $pop5, $pop4 8923; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6 8924; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1 8925; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1 8926; SIMD128-FAST-NEXT: i32.shl $push3=, $pop2, $pop1 8927; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3 8928; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2 8929; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2 8930; SIMD128-FAST-NEXT: i32.shl $push11=, $pop10, $pop9 8931; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11 8932; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3 8933; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3 8934; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13 8935; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15 8936; SIMD128-FAST-NEXT: return $pop0 8937; 8938; NO-SIMD128-LABEL: shl_vec_v4i32: 8939; NO-SIMD128: .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8940; NO-SIMD128-NEXT: # %bb.0: 8941; NO-SIMD128-NEXT: i32.shl $push0=, $4, $8 8942; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8943; NO-SIMD128-NEXT: i32.shl $push1=, $3, $7 8944; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8945; NO-SIMD128-NEXT: i32.shl $push2=, $2, $6 8946; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8947; NO-SIMD128-NEXT: i32.shl $push3=, $1, $5 8948; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8949; NO-SIMD128-NEXT: return 8950; 8951; NO-SIMD128-FAST-LABEL: shl_vec_v4i32: 8952; NO-SIMD128-FAST: .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 8953; NO-SIMD128-FAST-NEXT: # %bb.0: 8954; NO-SIMD128-FAST-NEXT: i32.shl $push0=, $1, $5 8955; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8956; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $6 8957; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 8958; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $3, $7 8959; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 8960; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $4, $8 8961; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 8962; NO-SIMD128-FAST-NEXT: return 8963 %a = shl <4 x i32> %v, %x 8964 ret <4 x i32> %a 8965} 8966 8967define <4 x i32> @shr_s_v4i32(<4 x i32> %v, i32 %x) { 8968; SIMD128-LABEL: shr_s_v4i32: 8969; SIMD128: .functype shr_s_v4i32 (v128, i32) -> (v128) 8970; SIMD128-NEXT: # %bb.0: 8971; SIMD128-NEXT: i32x4.shr_s $push0=, $0, $1 8972; SIMD128-NEXT: return $pop0 8973; 8974; SIMD128-FAST-LABEL: shr_s_v4i32: 8975; SIMD128-FAST: .functype shr_s_v4i32 (v128, i32) -> (v128) 8976; SIMD128-FAST-NEXT: # %bb.0: 8977; SIMD128-FAST-NEXT: i32x4.shr_s $push0=, $0, $1 8978; SIMD128-FAST-NEXT: return $pop0 8979; 8980; NO-SIMD128-LABEL: shr_s_v4i32: 8981; NO-SIMD128: .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> () 8982; NO-SIMD128-NEXT: # %bb.0: 8983; NO-SIMD128-NEXT: i32.shr_s $push0=, $4, $5 8984; NO-SIMD128-NEXT: i32.store 12($0), $pop0 8985; NO-SIMD128-NEXT: i32.shr_s $push1=, $3, $5 8986; NO-SIMD128-NEXT: i32.store 8($0), $pop1 8987; NO-SIMD128-NEXT: i32.shr_s $push2=, $2, $5 8988; NO-SIMD128-NEXT: i32.store 4($0), $pop2 8989; NO-SIMD128-NEXT: i32.shr_s $push3=, $1, $5 8990; NO-SIMD128-NEXT: i32.store 0($0), $pop3 8991; NO-SIMD128-NEXT: return 8992; 8993; NO-SIMD128-FAST-LABEL: shr_s_v4i32: 8994; NO-SIMD128-FAST: .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> () 8995; NO-SIMD128-FAST-NEXT: # %bb.0: 8996; NO-SIMD128-FAST-NEXT: i32.shr_s $push0=, $1, $5 8997; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 8998; NO-SIMD128-FAST-NEXT: i32.shr_s $push1=, $2, $5 8999; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9000; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $3, $5 9001; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9002; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $4, $5 9003; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9004; NO-SIMD128-FAST-NEXT: return 9005 %t = insertelement <4 x i32> undef, i32 %x, i32 0 9006 %s = shufflevector <4 x i32> %t, <4 x i32> undef, 9007 <4 x i32> <i32 0, i32 0, i32 0, i32 0> 9008 %a = ashr <4 x i32> %v, %s 9009 ret <4 x i32> %a 9010} 9011 9012define <4 x i32> @shr_s_vec_v4i32(<4 x i32> %v, <4 x i32> %x) { 9013; SIMD128-LABEL: shr_s_vec_v4i32: 9014; SIMD128: .functype shr_s_vec_v4i32 (v128, v128) -> (v128) 9015; SIMD128-NEXT: # %bb.0: 9016; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0 9017; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0 9018; SIMD128-NEXT: i32.shr_s $push5=, $pop4, $pop3 9019; SIMD128-NEXT: i32x4.splat $push6=, $pop5 9020; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1 9021; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1 9022; SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop0 9023; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2 9024; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2 9025; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2 9026; SIMD128-NEXT: i32.shr_s $push10=, $pop9, $pop8 9027; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10 9028; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3 9029; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3 9030; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12 9031; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14 9032; SIMD128-NEXT: return $pop15 9033; 9034; SIMD128-FAST-LABEL: shr_s_vec_v4i32: 9035; SIMD128-FAST: .functype shr_s_vec_v4i32 (v128, v128) -> (v128) 9036; SIMD128-FAST-NEXT: # %bb.0: 9037; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0 9038; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0 9039; SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4 9040; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6 9041; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1 9042; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1 9043; SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1 9044; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3 9045; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2 9046; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2 9047; SIMD128-FAST-NEXT: i32.shr_s $push11=, $pop10, $pop9 9048; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11 9049; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3 9050; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3 9051; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13 9052; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15 9053; SIMD128-FAST-NEXT: return $pop0 9054; 9055; NO-SIMD128-LABEL: shr_s_vec_v4i32: 9056; NO-SIMD128: .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9057; NO-SIMD128-NEXT: # %bb.0: 9058; NO-SIMD128-NEXT: i32.shr_s $push0=, $4, $8 9059; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9060; NO-SIMD128-NEXT: i32.shr_s $push1=, $3, $7 9061; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9062; NO-SIMD128-NEXT: i32.shr_s $push2=, $2, $6 9063; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9064; NO-SIMD128-NEXT: i32.shr_s $push3=, $1, $5 9065; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9066; NO-SIMD128-NEXT: return 9067; 9068; NO-SIMD128-FAST-LABEL: shr_s_vec_v4i32: 9069; NO-SIMD128-FAST: .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9070; NO-SIMD128-FAST-NEXT: # %bb.0: 9071; NO-SIMD128-FAST-NEXT: i32.shr_s $push0=, $1, $5 9072; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9073; NO-SIMD128-FAST-NEXT: i32.shr_s $push1=, $2, $6 9074; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9075; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $3, $7 9076; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9077; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $4, $8 9078; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9079; NO-SIMD128-FAST-NEXT: return 9080 %a = ashr <4 x i32> %v, %x 9081 ret <4 x i32> %a 9082} 9083 9084define <4 x i32> @shr_u_v4i32(<4 x i32> %v, i32 %x) { 9085; SIMD128-LABEL: shr_u_v4i32: 9086; SIMD128: .functype shr_u_v4i32 (v128, i32) -> (v128) 9087; SIMD128-NEXT: # %bb.0: 9088; SIMD128-NEXT: i32x4.shr_u $push0=, $0, $1 9089; SIMD128-NEXT: return $pop0 9090; 9091; SIMD128-FAST-LABEL: shr_u_v4i32: 9092; SIMD128-FAST: .functype shr_u_v4i32 (v128, i32) -> (v128) 9093; SIMD128-FAST-NEXT: # %bb.0: 9094; SIMD128-FAST-NEXT: i32x4.shr_u $push0=, $0, $1 9095; SIMD128-FAST-NEXT: return $pop0 9096; 9097; NO-SIMD128-LABEL: shr_u_v4i32: 9098; NO-SIMD128: .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> () 9099; NO-SIMD128-NEXT: # %bb.0: 9100; NO-SIMD128-NEXT: i32.shr_u $push0=, $4, $5 9101; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9102; NO-SIMD128-NEXT: i32.shr_u $push1=, $3, $5 9103; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9104; NO-SIMD128-NEXT: i32.shr_u $push2=, $2, $5 9105; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9106; NO-SIMD128-NEXT: i32.shr_u $push3=, $1, $5 9107; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9108; NO-SIMD128-NEXT: return 9109; 9110; NO-SIMD128-FAST-LABEL: shr_u_v4i32: 9111; NO-SIMD128-FAST: .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> () 9112; NO-SIMD128-FAST-NEXT: # %bb.0: 9113; NO-SIMD128-FAST-NEXT: i32.shr_u $push0=, $1, $5 9114; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9115; NO-SIMD128-FAST-NEXT: i32.shr_u $push1=, $2, $5 9116; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9117; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $3, $5 9118; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9119; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $4, $5 9120; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9121; NO-SIMD128-FAST-NEXT: return 9122 %t = insertelement <4 x i32> undef, i32 %x, i32 0 9123 %s = shufflevector <4 x i32> %t, <4 x i32> undef, 9124 <4 x i32> <i32 0, i32 0, i32 0, i32 0> 9125 %a = lshr <4 x i32> %v, %s 9126 ret <4 x i32> %a 9127} 9128 9129define <4 x i32> @shr_u_vec_v4i32(<4 x i32> %v, <4 x i32> %x) { 9130; SIMD128-LABEL: shr_u_vec_v4i32: 9131; SIMD128: .functype shr_u_vec_v4i32 (v128, v128) -> (v128) 9132; SIMD128-NEXT: # %bb.0: 9133; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0 9134; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0 9135; SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop3 9136; SIMD128-NEXT: i32x4.splat $push6=, $pop5 9137; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1 9138; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1 9139; SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop0 9140; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2 9141; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2 9142; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2 9143; SIMD128-NEXT: i32.shr_u $push10=, $pop9, $pop8 9144; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10 9145; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3 9146; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3 9147; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12 9148; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14 9149; SIMD128-NEXT: return $pop15 9150; 9151; SIMD128-FAST-LABEL: shr_u_vec_v4i32: 9152; SIMD128-FAST: .functype shr_u_vec_v4i32 (v128, v128) -> (v128) 9153; SIMD128-FAST-NEXT: # %bb.0: 9154; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0 9155; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0 9156; SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4 9157; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6 9158; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1 9159; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1 9160; SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1 9161; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3 9162; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2 9163; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2 9164; SIMD128-FAST-NEXT: i32.shr_u $push11=, $pop10, $pop9 9165; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11 9166; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3 9167; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3 9168; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13 9169; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15 9170; SIMD128-FAST-NEXT: return $pop0 9171; 9172; NO-SIMD128-LABEL: shr_u_vec_v4i32: 9173; NO-SIMD128: .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9174; NO-SIMD128-NEXT: # %bb.0: 9175; NO-SIMD128-NEXT: i32.shr_u $push0=, $4, $8 9176; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9177; NO-SIMD128-NEXT: i32.shr_u $push1=, $3, $7 9178; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9179; NO-SIMD128-NEXT: i32.shr_u $push2=, $2, $6 9180; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9181; NO-SIMD128-NEXT: i32.shr_u $push3=, $1, $5 9182; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9183; NO-SIMD128-NEXT: return 9184; 9185; NO-SIMD128-FAST-LABEL: shr_u_vec_v4i32: 9186; NO-SIMD128-FAST: .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9187; NO-SIMD128-FAST-NEXT: # %bb.0: 9188; NO-SIMD128-FAST-NEXT: i32.shr_u $push0=, $1, $5 9189; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9190; NO-SIMD128-FAST-NEXT: i32.shr_u $push1=, $2, $6 9191; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9192; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $3, $7 9193; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9194; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $4, $8 9195; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9196; NO-SIMD128-FAST-NEXT: return 9197 %a = lshr <4 x i32> %v, %x 9198 ret <4 x i32> %a 9199} 9200 9201define <4 x i32> @and_v4i32(<4 x i32> %x, <4 x i32> %y) { 9202; SIMD128-LABEL: and_v4i32: 9203; SIMD128: .functype and_v4i32 (v128, v128) -> (v128) 9204; SIMD128-NEXT: # %bb.0: 9205; SIMD128-NEXT: v128.and $push0=, $0, $1 9206; SIMD128-NEXT: return $pop0 9207; 9208; SIMD128-FAST-LABEL: and_v4i32: 9209; SIMD128-FAST: .functype and_v4i32 (v128, v128) -> (v128) 9210; SIMD128-FAST-NEXT: # %bb.0: 9211; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 9212; SIMD128-FAST-NEXT: return $pop0 9213; 9214; NO-SIMD128-LABEL: and_v4i32: 9215; NO-SIMD128: .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9216; NO-SIMD128-NEXT: # %bb.0: 9217; NO-SIMD128-NEXT: i32.and $push0=, $4, $8 9218; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9219; NO-SIMD128-NEXT: i32.and $push1=, $3, $7 9220; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9221; NO-SIMD128-NEXT: i32.and $push2=, $2, $6 9222; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9223; NO-SIMD128-NEXT: i32.and $push3=, $1, $5 9224; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9225; NO-SIMD128-NEXT: return 9226; 9227; NO-SIMD128-FAST-LABEL: and_v4i32: 9228; NO-SIMD128-FAST: .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9229; NO-SIMD128-FAST-NEXT: # %bb.0: 9230; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $5 9231; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9232; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $6 9233; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9234; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $7 9235; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9236; NO-SIMD128-FAST-NEXT: i32.and $push3=, $4, $8 9237; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9238; NO-SIMD128-FAST-NEXT: return 9239 %a = and <4 x i32> %x, %y 9240 ret <4 x i32> %a 9241} 9242 9243define <4 x i32> @or_v4i32(<4 x i32> %x, <4 x i32> %y) { 9244; SIMD128-LABEL: or_v4i32: 9245; SIMD128: .functype or_v4i32 (v128, v128) -> (v128) 9246; SIMD128-NEXT: # %bb.0: 9247; SIMD128-NEXT: v128.or $push0=, $0, $1 9248; SIMD128-NEXT: return $pop0 9249; 9250; SIMD128-FAST-LABEL: or_v4i32: 9251; SIMD128-FAST: .functype or_v4i32 (v128, v128) -> (v128) 9252; SIMD128-FAST-NEXT: # %bb.0: 9253; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1 9254; SIMD128-FAST-NEXT: return $pop0 9255; 9256; NO-SIMD128-LABEL: or_v4i32: 9257; NO-SIMD128: .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9258; NO-SIMD128-NEXT: # %bb.0: 9259; NO-SIMD128-NEXT: i32.or $push0=, $4, $8 9260; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9261; NO-SIMD128-NEXT: i32.or $push1=, $3, $7 9262; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9263; NO-SIMD128-NEXT: i32.or $push2=, $2, $6 9264; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9265; NO-SIMD128-NEXT: i32.or $push3=, $1, $5 9266; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9267; NO-SIMD128-NEXT: return 9268; 9269; NO-SIMD128-FAST-LABEL: or_v4i32: 9270; NO-SIMD128-FAST: .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9271; NO-SIMD128-FAST-NEXT: # %bb.0: 9272; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $5 9273; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9274; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $6 9275; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9276; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $7 9277; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9278; NO-SIMD128-FAST-NEXT: i32.or $push3=, $4, $8 9279; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9280; NO-SIMD128-FAST-NEXT: return 9281 %a = or <4 x i32> %x, %y 9282 ret <4 x i32> %a 9283} 9284 9285define <4 x i32> @xor_v4i32(<4 x i32> %x, <4 x i32> %y) { 9286; SIMD128-LABEL: xor_v4i32: 9287; SIMD128: .functype xor_v4i32 (v128, v128) -> (v128) 9288; SIMD128-NEXT: # %bb.0: 9289; SIMD128-NEXT: v128.xor $push0=, $0, $1 9290; SIMD128-NEXT: return $pop0 9291; 9292; SIMD128-FAST-LABEL: xor_v4i32: 9293; SIMD128-FAST: .functype xor_v4i32 (v128, v128) -> (v128) 9294; SIMD128-FAST-NEXT: # %bb.0: 9295; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1 9296; SIMD128-FAST-NEXT: return $pop0 9297; 9298; NO-SIMD128-LABEL: xor_v4i32: 9299; NO-SIMD128: .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9300; NO-SIMD128-NEXT: # %bb.0: 9301; NO-SIMD128-NEXT: i32.xor $push0=, $4, $8 9302; NO-SIMD128-NEXT: i32.store 12($0), $pop0 9303; NO-SIMD128-NEXT: i32.xor $push1=, $3, $7 9304; NO-SIMD128-NEXT: i32.store 8($0), $pop1 9305; NO-SIMD128-NEXT: i32.xor $push2=, $2, $6 9306; NO-SIMD128-NEXT: i32.store 4($0), $pop2 9307; NO-SIMD128-NEXT: i32.xor $push3=, $1, $5 9308; NO-SIMD128-NEXT: i32.store 0($0), $pop3 9309; NO-SIMD128-NEXT: return 9310; 9311; NO-SIMD128-FAST-LABEL: xor_v4i32: 9312; NO-SIMD128-FAST: .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9313; NO-SIMD128-FAST-NEXT: # %bb.0: 9314; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $5 9315; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0 9316; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $6 9317; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1 9318; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $7 9319; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2 9320; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $4, $8 9321; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop3 9322; NO-SIMD128-FAST-NEXT: return 9323 %a = xor <4 x i32> %x, %y 9324 ret <4 x i32> %a 9325} 9326 9327define <4 x i32> @not_v4i32(<4 x i32> %x) { 9328; SIMD128-LABEL: not_v4i32: 9329; SIMD128: .functype not_v4i32 (v128) -> (v128) 9330; SIMD128-NEXT: # %bb.0: 9331; SIMD128-NEXT: v128.not $push0=, $0 9332; SIMD128-NEXT: return $pop0 9333; 9334; SIMD128-FAST-LABEL: not_v4i32: 9335; SIMD128-FAST: .functype not_v4i32 (v128) -> (v128) 9336; SIMD128-FAST-NEXT: # %bb.0: 9337; SIMD128-FAST-NEXT: v128.not $push0=, $0 9338; SIMD128-FAST-NEXT: return $pop0 9339; 9340; NO-SIMD128-LABEL: not_v4i32: 9341; NO-SIMD128: .functype not_v4i32 (i32, i32, i32, i32, i32) -> () 9342; NO-SIMD128-NEXT: # %bb.0: 9343; NO-SIMD128-NEXT: i32.const $push0=, -1 9344; NO-SIMD128-NEXT: i32.xor $push1=, $4, $pop0 9345; NO-SIMD128-NEXT: i32.store 12($0), $pop1 9346; NO-SIMD128-NEXT: i32.const $push7=, -1 9347; NO-SIMD128-NEXT: i32.xor $push2=, $3, $pop7 9348; NO-SIMD128-NEXT: i32.store 8($0), $pop2 9349; NO-SIMD128-NEXT: i32.const $push6=, -1 9350; NO-SIMD128-NEXT: i32.xor $push3=, $2, $pop6 9351; NO-SIMD128-NEXT: i32.store 4($0), $pop3 9352; NO-SIMD128-NEXT: i32.const $push5=, -1 9353; NO-SIMD128-NEXT: i32.xor $push4=, $1, $pop5 9354; NO-SIMD128-NEXT: i32.store 0($0), $pop4 9355; NO-SIMD128-NEXT: return 9356; 9357; NO-SIMD128-FAST-LABEL: not_v4i32: 9358; NO-SIMD128-FAST: .functype not_v4i32 (i32, i32, i32, i32, i32) -> () 9359; NO-SIMD128-FAST-NEXT: # %bb.0: 9360; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 9361; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 9362; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1 9363; NO-SIMD128-FAST-NEXT: i32.const $push7=, -1 9364; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop7 9365; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2 9366; NO-SIMD128-FAST-NEXT: i32.const $push6=, -1 9367; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop6 9368; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3 9369; NO-SIMD128-FAST-NEXT: i32.const $push5=, -1 9370; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $4, $pop5 9371; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop4 9372; NO-SIMD128-FAST-NEXT: return 9373 %a = xor <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1> 9374 ret <4 x i32> %a 9375} 9376 9377define <4 x i32> @andnot_v4i32(<4 x i32> %x, <4 x i32> %y) { 9378; SIMD128-LABEL: andnot_v4i32: 9379; SIMD128: .functype andnot_v4i32 (v128, v128) -> (v128) 9380; SIMD128-NEXT: # %bb.0: 9381; SIMD128-NEXT: v128.andnot $push0=, $0, $1 9382; SIMD128-NEXT: return $pop0 9383; 9384; SIMD128-FAST-LABEL: andnot_v4i32: 9385; SIMD128-FAST: .functype andnot_v4i32 (v128, v128) -> (v128) 9386; SIMD128-FAST-NEXT: # %bb.0: 9387; SIMD128-FAST-NEXT: v128.not $push0=, $1 9388; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0 9389; SIMD128-FAST-NEXT: return $pop1 9390; 9391; NO-SIMD128-LABEL: andnot_v4i32: 9392; NO-SIMD128: .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9393; NO-SIMD128-NEXT: # %bb.0: 9394; NO-SIMD128-NEXT: i32.const $push0=, -1 9395; NO-SIMD128-NEXT: i32.xor $push1=, $8, $pop0 9396; NO-SIMD128-NEXT: i32.and $push2=, $4, $pop1 9397; NO-SIMD128-NEXT: i32.store 12($0), $pop2 9398; NO-SIMD128-NEXT: i32.const $push11=, -1 9399; NO-SIMD128-NEXT: i32.xor $push3=, $7, $pop11 9400; NO-SIMD128-NEXT: i32.and $push4=, $3, $pop3 9401; NO-SIMD128-NEXT: i32.store 8($0), $pop4 9402; NO-SIMD128-NEXT: i32.const $push10=, -1 9403; NO-SIMD128-NEXT: i32.xor $push5=, $6, $pop10 9404; NO-SIMD128-NEXT: i32.and $push6=, $2, $pop5 9405; NO-SIMD128-NEXT: i32.store 4($0), $pop6 9406; NO-SIMD128-NEXT: i32.const $push9=, -1 9407; NO-SIMD128-NEXT: i32.xor $push7=, $5, $pop9 9408; NO-SIMD128-NEXT: i32.and $push8=, $1, $pop7 9409; NO-SIMD128-NEXT: i32.store 0($0), $pop8 9410; NO-SIMD128-NEXT: return 9411; 9412; NO-SIMD128-FAST-LABEL: andnot_v4i32: 9413; NO-SIMD128-FAST: .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9414; NO-SIMD128-FAST-NEXT: # %bb.0: 9415; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 9416; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $5, $pop0 9417; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1 9418; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2 9419; NO-SIMD128-FAST-NEXT: i32.const $push11=, -1 9420; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $6, $pop11 9421; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3 9422; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop4 9423; NO-SIMD128-FAST-NEXT: i32.const $push10=, -1 9424; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $7, $pop10 9425; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5 9426; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop6 9427; NO-SIMD128-FAST-NEXT: i32.const $push9=, -1 9428; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $8, $pop9 9429; NO-SIMD128-FAST-NEXT: i32.and $push8=, $4, $pop7 9430; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop8 9431; NO-SIMD128-FAST-NEXT: return 9432 %inv_y = xor <4 x i32> %y, <i32 -1, i32 -1, i32 -1, i32 -1> 9433 %a = and <4 x i32> %x, %inv_y 9434 ret <4 x i32> %a 9435} 9436 9437define <4 x i32> @bitselect_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) { 9438; SIMD128-LABEL: bitselect_v4i32: 9439; SIMD128: .functype bitselect_v4i32 (v128, v128, v128) -> (v128) 9440; SIMD128-NEXT: # %bb.0: 9441; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 9442; SIMD128-NEXT: return $pop0 9443; 9444; SIMD128-FAST-LABEL: bitselect_v4i32: 9445; SIMD128-FAST: .functype bitselect_v4i32 (v128, v128, v128) -> (v128) 9446; SIMD128-FAST-NEXT: # %bb.0: 9447; SIMD128-FAST-NEXT: v128.not $push2=, $0 9448; SIMD128-FAST-NEXT: v128.and $push3=, $pop2, $2 9449; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 9450; SIMD128-FAST-NEXT: v128.or $push1=, $pop3, $pop0 9451; SIMD128-FAST-NEXT: return $pop1 9452; 9453; NO-SIMD128-LABEL: bitselect_v4i32: 9454; NO-SIMD128: .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9455; NO-SIMD128-NEXT: # %bb.0: 9456; NO-SIMD128-NEXT: i32.const $push1=, -1 9457; NO-SIMD128-NEXT: i32.xor $push2=, $4, $pop1 9458; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $12 9459; NO-SIMD128-NEXT: i32.and $push0=, $4, $8 9460; NO-SIMD128-NEXT: i32.or $push4=, $pop3, $pop0 9461; NO-SIMD128-NEXT: i32.store 12($0), $pop4 9462; NO-SIMD128-NEXT: i32.const $push19=, -1 9463; NO-SIMD128-NEXT: i32.xor $push6=, $3, $pop19 9464; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $11 9465; NO-SIMD128-NEXT: i32.and $push5=, $3, $7 9466; NO-SIMD128-NEXT: i32.or $push8=, $pop7, $pop5 9467; NO-SIMD128-NEXT: i32.store 8($0), $pop8 9468; NO-SIMD128-NEXT: i32.const $push18=, -1 9469; NO-SIMD128-NEXT: i32.xor $push10=, $2, $pop18 9470; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $10 9471; NO-SIMD128-NEXT: i32.and $push9=, $2, $6 9472; NO-SIMD128-NEXT: i32.or $push12=, $pop11, $pop9 9473; NO-SIMD128-NEXT: i32.store 4($0), $pop12 9474; NO-SIMD128-NEXT: i32.const $push17=, -1 9475; NO-SIMD128-NEXT: i32.xor $push14=, $1, $pop17 9476; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $9 9477; NO-SIMD128-NEXT: i32.and $push13=, $1, $5 9478; NO-SIMD128-NEXT: i32.or $push16=, $pop15, $pop13 9479; NO-SIMD128-NEXT: i32.store 0($0), $pop16 9480; NO-SIMD128-NEXT: return 9481; 9482; NO-SIMD128-FAST-LABEL: bitselect_v4i32: 9483; NO-SIMD128-FAST: .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9484; NO-SIMD128-FAST-NEXT: # %bb.0: 9485; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1 9486; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1 9487; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $9 9488; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $5 9489; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop3, $pop0 9490; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop4 9491; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1 9492; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop19 9493; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $10 9494; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $6 9495; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop7, $pop5 9496; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop8 9497; NO-SIMD128-FAST-NEXT: i32.const $push18=, -1 9498; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop18 9499; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $11 9500; NO-SIMD128-FAST-NEXT: i32.and $push9=, $3, $7 9501; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop11, $pop9 9502; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop12 9503; NO-SIMD128-FAST-NEXT: i32.const $push17=, -1 9504; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop17 9505; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $12 9506; NO-SIMD128-FAST-NEXT: i32.and $push13=, $4, $8 9507; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop15, $pop13 9508; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop16 9509; NO-SIMD128-FAST-NEXT: return 9510 %masked_v1 = and <4 x i32> %c, %v1 9511 %inv_mask = xor <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, %c 9512 %masked_v2 = and <4 x i32> %inv_mask, %v2 9513 %a = or <4 x i32> %masked_v2, %masked_v1 9514 ret <4 x i32> %a 9515} 9516 9517define <4 x i32> @bitselect_xor_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) { 9518; SIMD128-LABEL: bitselect_xor_v4i32: 9519; SIMD128: .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128) 9520; SIMD128-NEXT: # %bb.0: 9521; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 9522; SIMD128-NEXT: return $pop0 9523; 9524; SIMD128-FAST-LABEL: bitselect_xor_v4i32: 9525; SIMD128-FAST: .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128) 9526; SIMD128-FAST-NEXT: # %bb.0: 9527; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2 9528; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0 9529; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2 9530; SIMD128-FAST-NEXT: return $pop0 9531; 9532; NO-SIMD128-LABEL: bitselect_xor_v4i32: 9533; NO-SIMD128: .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9534; NO-SIMD128-NEXT: # %bb.0: 9535; NO-SIMD128-NEXT: i32.xor $push0=, $8, $12 9536; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $4 9537; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $12 9538; NO-SIMD128-NEXT: i32.store 12($0), $pop2 9539; NO-SIMD128-NEXT: i32.xor $push3=, $7, $11 9540; NO-SIMD128-NEXT: i32.and $push4=, $pop3, $3 9541; NO-SIMD128-NEXT: i32.xor $push5=, $pop4, $11 9542; NO-SIMD128-NEXT: i32.store 8($0), $pop5 9543; NO-SIMD128-NEXT: i32.xor $push6=, $6, $10 9544; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $2 9545; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $10 9546; NO-SIMD128-NEXT: i32.store 4($0), $pop8 9547; NO-SIMD128-NEXT: i32.xor $push9=, $5, $9 9548; NO-SIMD128-NEXT: i32.and $push10=, $pop9, $1 9549; NO-SIMD128-NEXT: i32.xor $push11=, $pop10, $9 9550; NO-SIMD128-NEXT: i32.store 0($0), $pop11 9551; NO-SIMD128-NEXT: return 9552; 9553; NO-SIMD128-FAST-LABEL: bitselect_xor_v4i32: 9554; NO-SIMD128-FAST: .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9555; NO-SIMD128-FAST-NEXT: # %bb.0: 9556; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $5, $9 9557; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1 9558; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $9 9559; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2 9560; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $6, $10 9561; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2 9562; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $10 9563; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5 9564; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $7, $11 9565; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3 9566; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $11 9567; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8 9568; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $8, $12 9569; NO-SIMD128-FAST-NEXT: i32.and $push10=, $pop9, $4 9570; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $pop10, $12 9571; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop11 9572; NO-SIMD128-FAST-NEXT: return 9573 %xor1 = xor <4 x i32> %v1, %v2 9574 %and = and <4 x i32> %xor1, %c 9575 %a = xor <4 x i32> %and, %v2 9576 ret <4 x i32> %a 9577} 9578 9579define <4 x i32> @bitselect_xor_reversed_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) { 9580; SIMD128-LABEL: bitselect_xor_reversed_v4i32: 9581; SIMD128: .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128) 9582; SIMD128-NEXT: # %bb.0: 9583; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0 9584; SIMD128-NEXT: return $pop0 9585; 9586; SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32: 9587; SIMD128-FAST: .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128) 9588; SIMD128-FAST-NEXT: # %bb.0: 9589; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2 9590; SIMD128-FAST-NEXT: v128.not $push2=, $0 9591; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2 9592; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2 9593; SIMD128-FAST-NEXT: return $pop0 9594; 9595; NO-SIMD128-LABEL: bitselect_xor_reversed_v4i32: 9596; NO-SIMD128: .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9597; NO-SIMD128-NEXT: # %bb.0: 9598; NO-SIMD128-NEXT: i32.xor $push2=, $8, $12 9599; NO-SIMD128-NEXT: i32.const $push0=, -1 9600; NO-SIMD128-NEXT: i32.xor $push1=, $4, $pop0 9601; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1 9602; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $12 9603; NO-SIMD128-NEXT: i32.store 12($0), $pop4 9604; NO-SIMD128-NEXT: i32.xor $push6=, $7, $11 9605; NO-SIMD128-NEXT: i32.const $push19=, -1 9606; NO-SIMD128-NEXT: i32.xor $push5=, $3, $pop19 9607; NO-SIMD128-NEXT: i32.and $push7=, $pop6, $pop5 9608; NO-SIMD128-NEXT: i32.xor $push8=, $pop7, $11 9609; NO-SIMD128-NEXT: i32.store 8($0), $pop8 9610; NO-SIMD128-NEXT: i32.xor $push10=, $6, $10 9611; NO-SIMD128-NEXT: i32.const $push18=, -1 9612; NO-SIMD128-NEXT: i32.xor $push9=, $2, $pop18 9613; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $pop9 9614; NO-SIMD128-NEXT: i32.xor $push12=, $pop11, $10 9615; NO-SIMD128-NEXT: i32.store 4($0), $pop12 9616; NO-SIMD128-NEXT: i32.xor $push14=, $5, $9 9617; NO-SIMD128-NEXT: i32.const $push17=, -1 9618; NO-SIMD128-NEXT: i32.xor $push13=, $1, $pop17 9619; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $pop13 9620; NO-SIMD128-NEXT: i32.xor $push16=, $pop15, $9 9621; NO-SIMD128-NEXT: i32.store 0($0), $pop16 9622; NO-SIMD128-NEXT: return 9623; 9624; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32: 9625; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9626; NO-SIMD128-FAST-NEXT: # %bb.0: 9627; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $5, $9 9628; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1 9629; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0 9630; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1 9631; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $9 9632; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop4 9633; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $6, $10 9634; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1 9635; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop19 9636; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5 9637; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $10 9638; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop8 9639; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $7, $11 9640; NO-SIMD128-FAST-NEXT: i32.const $push18=, -1 9641; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop18 9642; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9 9643; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $11 9644; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop12 9645; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $8, $12 9646; NO-SIMD128-FAST-NEXT: i32.const $push17=, -1 9647; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop17 9648; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13 9649; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $12 9650; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop16 9651; NO-SIMD128-FAST-NEXT: return 9652 %xor1 = xor <4 x i32> %v1, %v2 9653 %notc = xor <4 x i32> %c, <i32 -1, i32 -1, i32 -1, i32 -1> 9654 %and = and <4 x i32> %xor1, %notc 9655 %a = xor <4 x i32> %and, %v2 9656 ret <4 x i32> %a 9657} 9658 9659define <4 x i32> @extmul_low_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) { 9660; SIMD128-LABEL: extmul_low_s_v4i32: 9661; SIMD128: .functype extmul_low_s_v4i32 (v128, v128) -> (v128) 9662; SIMD128-NEXT: # %bb.0: 9663; SIMD128-NEXT: i32x4.extmul_low_i16x8_s $push0=, $0, $1 9664; SIMD128-NEXT: return $pop0 9665; 9666; SIMD128-FAST-LABEL: extmul_low_s_v4i32: 9667; SIMD128-FAST: .functype extmul_low_s_v4i32 (v128, v128) -> (v128) 9668; SIMD128-FAST-NEXT: # %bb.0: 9669; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_s $push0=, $0 9670; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_s $push1=, $1 9671; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1 9672; SIMD128-FAST-NEXT: return $pop2 9673; 9674; NO-SIMD128-LABEL: extmul_low_s_v4i32: 9675; NO-SIMD128: .functype extmul_low_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9676; NO-SIMD128-NEXT: # %bb.0: 9677; NO-SIMD128-NEXT: i32.extend16_s $push1=, $4 9678; NO-SIMD128-NEXT: i32.extend16_s $push0=, $12 9679; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 9680; NO-SIMD128-NEXT: i32.store 12($0), $pop2 9681; NO-SIMD128-NEXT: i32.extend16_s $push4=, $3 9682; NO-SIMD128-NEXT: i32.extend16_s $push3=, $11 9683; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 9684; NO-SIMD128-NEXT: i32.store 8($0), $pop5 9685; NO-SIMD128-NEXT: i32.extend16_s $push7=, $2 9686; NO-SIMD128-NEXT: i32.extend16_s $push6=, $10 9687; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6 9688; NO-SIMD128-NEXT: i32.store 4($0), $pop8 9689; NO-SIMD128-NEXT: i32.extend16_s $push10=, $1 9690; NO-SIMD128-NEXT: i32.extend16_s $push9=, $9 9691; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9 9692; NO-SIMD128-NEXT: i32.store 0($0), $pop11 9693; NO-SIMD128-NEXT: return 9694; 9695; NO-SIMD128-FAST-LABEL: extmul_low_s_v4i32: 9696; NO-SIMD128-FAST: .functype extmul_low_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9697; NO-SIMD128-FAST-NEXT: # %bb.0: 9698; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1 9699; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9 9700; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0 9701; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2 9702; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $2 9703; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $10 9704; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3 9705; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5 9706; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $3 9707; NO-SIMD128-FAST-NEXT: i32.extend16_s $push6=, $11 9708; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6 9709; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8 9710; NO-SIMD128-FAST-NEXT: i32.extend16_s $push10=, $4 9711; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $12 9712; NO-SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 9713; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop11 9714; NO-SIMD128-FAST-NEXT: return 9715 %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef, 9716 <4 x i32> <i32 0, i32 1, i32 2, i32 3> 9717 %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef, 9718 <4 x i32> <i32 0, i32 1, i32 2, i32 3> 9719 %extended1 = sext <4 x i16> %low1 to <4 x i32> 9720 %extended2 = sext <4 x i16> %low2 to <4 x i32> 9721 %a = mul <4 x i32> %extended1, %extended2 9722 ret <4 x i32> %a 9723} 9724 9725define <4 x i32> @extmul_high_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) { 9726; SIMD128-LABEL: extmul_high_s_v4i32: 9727; SIMD128: .functype extmul_high_s_v4i32 (v128, v128) -> (v128) 9728; SIMD128-NEXT: # %bb.0: 9729; SIMD128-NEXT: i32x4.extmul_high_i16x8_s $push0=, $0, $1 9730; SIMD128-NEXT: return $pop0 9731; 9732; SIMD128-FAST-LABEL: extmul_high_s_v4i32: 9733; SIMD128-FAST: .functype extmul_high_s_v4i32 (v128, v128) -> (v128) 9734; SIMD128-FAST-NEXT: # %bb.0: 9735; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_s $push0=, $0 9736; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_s $push1=, $1 9737; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1 9738; SIMD128-FAST-NEXT: return $pop2 9739; 9740; NO-SIMD128-LABEL: extmul_high_s_v4i32: 9741; NO-SIMD128: .functype extmul_high_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9742; NO-SIMD128-NEXT: # %bb.0: 9743; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8 9744; NO-SIMD128-NEXT: i32.extend16_s $push0=, $16 9745; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0 9746; NO-SIMD128-NEXT: i32.store 12($0), $pop2 9747; NO-SIMD128-NEXT: i32.extend16_s $push4=, $7 9748; NO-SIMD128-NEXT: i32.extend16_s $push3=, $15 9749; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3 9750; NO-SIMD128-NEXT: i32.store 8($0), $pop5 9751; NO-SIMD128-NEXT: i32.extend16_s $push7=, $6 9752; NO-SIMD128-NEXT: i32.extend16_s $push6=, $14 9753; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6 9754; NO-SIMD128-NEXT: i32.store 4($0), $pop8 9755; NO-SIMD128-NEXT: i32.extend16_s $push10=, $5 9756; NO-SIMD128-NEXT: i32.extend16_s $push9=, $13 9757; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9 9758; NO-SIMD128-NEXT: i32.store 0($0), $pop11 9759; NO-SIMD128-NEXT: return 9760; 9761; NO-SIMD128-FAST-LABEL: extmul_high_s_v4i32: 9762; NO-SIMD128-FAST: .functype extmul_high_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9763; NO-SIMD128-FAST-NEXT: # %bb.0: 9764; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $5 9765; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $13 9766; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0 9767; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2 9768; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $6 9769; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $14 9770; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3 9771; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5 9772; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $7 9773; NO-SIMD128-FAST-NEXT: i32.extend16_s $push6=, $15 9774; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6 9775; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8 9776; NO-SIMD128-FAST-NEXT: i32.extend16_s $push10=, $8 9777; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $16 9778; NO-SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9 9779; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop11 9780; NO-SIMD128-FAST-NEXT: return 9781 %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef, 9782 <4 x i32> <i32 4, i32 5, i32 6, i32 7> 9783 %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef, 9784 <4 x i32> <i32 4, i32 5, i32 6, i32 7> 9785 %extended1 = sext <4 x i16> %high1 to <4 x i32> 9786 %extended2 = sext <4 x i16> %high2 to <4 x i32> 9787 %a = mul <4 x i32> %extended1, %extended2 9788 ret <4 x i32> %a 9789} 9790 9791define <4 x i32> @extmul_low_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) { 9792; SIMD128-LABEL: extmul_low_u_v4i32: 9793; SIMD128: .functype extmul_low_u_v4i32 (v128, v128) -> (v128) 9794; SIMD128-NEXT: # %bb.0: 9795; SIMD128-NEXT: i32x4.extmul_low_i16x8_u $push0=, $0, $1 9796; SIMD128-NEXT: return $pop0 9797; 9798; SIMD128-FAST-LABEL: extmul_low_u_v4i32: 9799; SIMD128-FAST: .functype extmul_low_u_v4i32 (v128, v128) -> (v128) 9800; SIMD128-FAST-NEXT: # %bb.0: 9801; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_u $push0=, $0 9802; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_u $push1=, $1 9803; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1 9804; SIMD128-FAST-NEXT: return $pop2 9805; 9806; NO-SIMD128-LABEL: extmul_low_u_v4i32: 9807; NO-SIMD128: .functype extmul_low_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9808; NO-SIMD128-NEXT: # %bb.0: 9809; NO-SIMD128-NEXT: i32.const $push0=, 65535 9810; NO-SIMD128-NEXT: i32.and $push2=, $4, $pop0 9811; NO-SIMD128-NEXT: i32.const $push19=, 65535 9812; NO-SIMD128-NEXT: i32.and $push1=, $12, $pop19 9813; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1 9814; NO-SIMD128-NEXT: i32.store 12($0), $pop3 9815; NO-SIMD128-NEXT: i32.const $push18=, 65535 9816; NO-SIMD128-NEXT: i32.and $push5=, $3, $pop18 9817; NO-SIMD128-NEXT: i32.const $push17=, 65535 9818; NO-SIMD128-NEXT: i32.and $push4=, $11, $pop17 9819; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4 9820; NO-SIMD128-NEXT: i32.store 8($0), $pop6 9821; NO-SIMD128-NEXT: i32.const $push16=, 65535 9822; NO-SIMD128-NEXT: i32.and $push8=, $2, $pop16 9823; NO-SIMD128-NEXT: i32.const $push15=, 65535 9824; NO-SIMD128-NEXT: i32.and $push7=, $10, $pop15 9825; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7 9826; NO-SIMD128-NEXT: i32.store 4($0), $pop9 9827; NO-SIMD128-NEXT: i32.const $push14=, 65535 9828; NO-SIMD128-NEXT: i32.and $push11=, $1, $pop14 9829; NO-SIMD128-NEXT: i32.const $push13=, 65535 9830; NO-SIMD128-NEXT: i32.and $push10=, $9, $pop13 9831; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10 9832; NO-SIMD128-NEXT: i32.store 0($0), $pop12 9833; NO-SIMD128-NEXT: return 9834; 9835; NO-SIMD128-FAST-LABEL: extmul_low_u_v4i32: 9836; NO-SIMD128-FAST: .functype extmul_low_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9837; NO-SIMD128-FAST-NEXT: # %bb.0: 9838; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 9839; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0 9840; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535 9841; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop19 9842; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 9843; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3 9844; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535 9845; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop18 9846; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535 9847; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop17 9848; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 9849; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop6 9850; NO-SIMD128-FAST-NEXT: i32.const $push16=, 65535 9851; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop16 9852; NO-SIMD128-FAST-NEXT: i32.const $push15=, 65535 9853; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop15 9854; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7 9855; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop9 9856; NO-SIMD128-FAST-NEXT: i32.const $push14=, 65535 9857; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop14 9858; NO-SIMD128-FAST-NEXT: i32.const $push13=, 65535 9859; NO-SIMD128-FAST-NEXT: i32.and $push10=, $12, $pop13 9860; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10 9861; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop12 9862; NO-SIMD128-FAST-NEXT: return 9863 %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef, 9864 <4 x i32> <i32 0, i32 1, i32 2, i32 3> 9865 %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef, 9866 <4 x i32> <i32 0, i32 1, i32 2, i32 3> 9867 %extended1 = zext <4 x i16> %low1 to <4 x i32> 9868 %extended2 = zext <4 x i16> %low2 to <4 x i32> 9869 %a = mul <4 x i32> %extended1, %extended2 9870 ret <4 x i32> %a 9871} 9872 9873define <4 x i32> @extmul_high_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) { 9874; SIMD128-LABEL: extmul_high_u_v4i32: 9875; SIMD128: .functype extmul_high_u_v4i32 (v128, v128) -> (v128) 9876; SIMD128-NEXT: # %bb.0: 9877; SIMD128-NEXT: i32x4.extmul_high_i16x8_u $push0=, $0, $1 9878; SIMD128-NEXT: return $pop0 9879; 9880; SIMD128-FAST-LABEL: extmul_high_u_v4i32: 9881; SIMD128-FAST: .functype extmul_high_u_v4i32 (v128, v128) -> (v128) 9882; SIMD128-FAST-NEXT: # %bb.0: 9883; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_u $push0=, $0 9884; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_u $push1=, $1 9885; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1 9886; SIMD128-FAST-NEXT: return $pop2 9887; 9888; NO-SIMD128-LABEL: extmul_high_u_v4i32: 9889; NO-SIMD128: .functype extmul_high_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9890; NO-SIMD128-NEXT: # %bb.0: 9891; NO-SIMD128-NEXT: i32.const $push0=, 65535 9892; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0 9893; NO-SIMD128-NEXT: i32.const $push19=, 65535 9894; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop19 9895; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1 9896; NO-SIMD128-NEXT: i32.store 12($0), $pop3 9897; NO-SIMD128-NEXT: i32.const $push18=, 65535 9898; NO-SIMD128-NEXT: i32.and $push5=, $7, $pop18 9899; NO-SIMD128-NEXT: i32.const $push17=, 65535 9900; NO-SIMD128-NEXT: i32.and $push4=, $15, $pop17 9901; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4 9902; NO-SIMD128-NEXT: i32.store 8($0), $pop6 9903; NO-SIMD128-NEXT: i32.const $push16=, 65535 9904; NO-SIMD128-NEXT: i32.and $push8=, $6, $pop16 9905; NO-SIMD128-NEXT: i32.const $push15=, 65535 9906; NO-SIMD128-NEXT: i32.and $push7=, $14, $pop15 9907; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7 9908; NO-SIMD128-NEXT: i32.store 4($0), $pop9 9909; NO-SIMD128-NEXT: i32.const $push14=, 65535 9910; NO-SIMD128-NEXT: i32.and $push11=, $5, $pop14 9911; NO-SIMD128-NEXT: i32.const $push13=, 65535 9912; NO-SIMD128-NEXT: i32.and $push10=, $13, $pop13 9913; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10 9914; NO-SIMD128-NEXT: i32.store 0($0), $pop12 9915; NO-SIMD128-NEXT: return 9916; 9917; NO-SIMD128-FAST-LABEL: extmul_high_u_v4i32: 9918; NO-SIMD128-FAST: .functype extmul_high_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 9919; NO-SIMD128-FAST-NEXT: # %bb.0: 9920; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535 9921; NO-SIMD128-FAST-NEXT: i32.and $push2=, $5, $pop0 9922; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535 9923; NO-SIMD128-FAST-NEXT: i32.and $push1=, $13, $pop19 9924; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1 9925; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3 9926; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535 9927; NO-SIMD128-FAST-NEXT: i32.and $push5=, $6, $pop18 9928; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535 9929; NO-SIMD128-FAST-NEXT: i32.and $push4=, $14, $pop17 9930; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4 9931; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop6 9932; NO-SIMD128-FAST-NEXT: i32.const $push16=, 65535 9933; NO-SIMD128-FAST-NEXT: i32.and $push8=, $7, $pop16 9934; NO-SIMD128-FAST-NEXT: i32.const $push15=, 65535 9935; NO-SIMD128-FAST-NEXT: i32.and $push7=, $15, $pop15 9936; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7 9937; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop9 9938; NO-SIMD128-FAST-NEXT: i32.const $push14=, 65535 9939; NO-SIMD128-FAST-NEXT: i32.and $push11=, $8, $pop14 9940; NO-SIMD128-FAST-NEXT: i32.const $push13=, 65535 9941; NO-SIMD128-FAST-NEXT: i32.and $push10=, $16, $pop13 9942; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10 9943; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop12 9944; NO-SIMD128-FAST-NEXT: return 9945 %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef, 9946 <4 x i32> <i32 4, i32 5, i32 6, i32 7> 9947 %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef, 9948 <4 x i32> <i32 4, i32 5, i32 6, i32 7> 9949 %extended1 = zext <4 x i16> %high1 to <4 x i32> 9950 %extended2 = zext <4 x i16> %high2 to <4 x i32> 9951 %a = mul <4 x i32> %extended1, %extended2 9952 ret <4 x i32> %a 9953} 9954 9955; ============================================================================== 9956; 2 x i64 9957; ============================================================================== 9958define <2 x i64> @add_v2i64(<2 x i64> %x, <2 x i64> %y) { 9959; SIMD128-LABEL: add_v2i64: 9960; SIMD128: .functype add_v2i64 (v128, v128) -> (v128) 9961; SIMD128-NEXT: # %bb.0: 9962; SIMD128-NEXT: i64x2.add $push0=, $0, $1 9963; SIMD128-NEXT: return $pop0 9964; 9965; SIMD128-FAST-LABEL: add_v2i64: 9966; SIMD128-FAST: .functype add_v2i64 (v128, v128) -> (v128) 9967; SIMD128-FAST-NEXT: # %bb.0: 9968; SIMD128-FAST-NEXT: i64x2.add $push0=, $0, $1 9969; SIMD128-FAST-NEXT: return $pop0 9970; 9971; NO-SIMD128-LABEL: add_v2i64: 9972; NO-SIMD128: .functype add_v2i64 (i32, i64, i64, i64, i64) -> () 9973; NO-SIMD128-NEXT: # %bb.0: 9974; NO-SIMD128-NEXT: i64.add $push0=, $2, $4 9975; NO-SIMD128-NEXT: i64.store 8($0), $pop0 9976; NO-SIMD128-NEXT: i64.add $push1=, $1, $3 9977; NO-SIMD128-NEXT: i64.store 0($0), $pop1 9978; NO-SIMD128-NEXT: return 9979; 9980; NO-SIMD128-FAST-LABEL: add_v2i64: 9981; NO-SIMD128-FAST: .functype add_v2i64 (i32, i64, i64, i64, i64) -> () 9982; NO-SIMD128-FAST-NEXT: # %bb.0: 9983; NO-SIMD128-FAST-NEXT: i64.add $push0=, $1, $3 9984; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 9985; NO-SIMD128-FAST-NEXT: i64.add $push1=, $2, $4 9986; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 9987; NO-SIMD128-FAST-NEXT: return 9988 %a = add <2 x i64> %x, %y 9989 ret <2 x i64> %a 9990} 9991 9992define <2 x i64> @sub_v2i64(<2 x i64> %x, <2 x i64> %y) { 9993; SIMD128-LABEL: sub_v2i64: 9994; SIMD128: .functype sub_v2i64 (v128, v128) -> (v128) 9995; SIMD128-NEXT: # %bb.0: 9996; SIMD128-NEXT: i64x2.sub $push0=, $0, $1 9997; SIMD128-NEXT: return $pop0 9998; 9999; SIMD128-FAST-LABEL: sub_v2i64: 10000; SIMD128-FAST: .functype sub_v2i64 (v128, v128) -> (v128) 10001; SIMD128-FAST-NEXT: # %bb.0: 10002; SIMD128-FAST-NEXT: i64x2.sub $push0=, $0, $1 10003; SIMD128-FAST-NEXT: return $pop0 10004; 10005; NO-SIMD128-LABEL: sub_v2i64: 10006; NO-SIMD128: .functype sub_v2i64 (i32, i64, i64, i64, i64) -> () 10007; NO-SIMD128-NEXT: # %bb.0: 10008; NO-SIMD128-NEXT: i64.sub $push0=, $2, $4 10009; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10010; NO-SIMD128-NEXT: i64.sub $push1=, $1, $3 10011; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10012; NO-SIMD128-NEXT: return 10013; 10014; NO-SIMD128-FAST-LABEL: sub_v2i64: 10015; NO-SIMD128-FAST: .functype sub_v2i64 (i32, i64, i64, i64, i64) -> () 10016; NO-SIMD128-FAST-NEXT: # %bb.0: 10017; NO-SIMD128-FAST-NEXT: i64.sub $push0=, $1, $3 10018; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10019; NO-SIMD128-FAST-NEXT: i64.sub $push1=, $2, $4 10020; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10021; NO-SIMD128-FAST-NEXT: return 10022 %a = sub <2 x i64> %x, %y 10023 ret <2 x i64> %a 10024} 10025 10026define <2 x i64> @mul_v2i64(<2 x i64> %x, <2 x i64> %y) { 10027; SIMD128-LABEL: mul_v2i64: 10028; SIMD128: .functype mul_v2i64 (v128, v128) -> (v128) 10029; SIMD128-NEXT: # %bb.0: 10030; SIMD128-NEXT: i64x2.mul $push0=, $0, $1 10031; SIMD128-NEXT: return $pop0 10032; 10033; SIMD128-FAST-LABEL: mul_v2i64: 10034; SIMD128-FAST: .functype mul_v2i64 (v128, v128) -> (v128) 10035; SIMD128-FAST-NEXT: # %bb.0: 10036; SIMD128-FAST-NEXT: i64x2.mul $push0=, $0, $1 10037; SIMD128-FAST-NEXT: return $pop0 10038; 10039; NO-SIMD128-LABEL: mul_v2i64: 10040; NO-SIMD128: .functype mul_v2i64 (i32, i64, i64, i64, i64) -> () 10041; NO-SIMD128-NEXT: # %bb.0: 10042; NO-SIMD128-NEXT: i64.mul $push0=, $2, $4 10043; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10044; NO-SIMD128-NEXT: i64.mul $push1=, $1, $3 10045; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10046; NO-SIMD128-NEXT: return 10047; 10048; NO-SIMD128-FAST-LABEL: mul_v2i64: 10049; NO-SIMD128-FAST: .functype mul_v2i64 (i32, i64, i64, i64, i64) -> () 10050; NO-SIMD128-FAST-NEXT: # %bb.0: 10051; NO-SIMD128-FAST-NEXT: i64.mul $push0=, $1, $3 10052; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10053; NO-SIMD128-FAST-NEXT: i64.mul $push1=, $2, $4 10054; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10055; NO-SIMD128-FAST-NEXT: return 10056 %a = mul <2 x i64> %x, %y 10057 ret <2 x i64> %a 10058} 10059 10060define <2 x i64> @abs_v2i64(<2 x i64> %x) { 10061; SIMD128-LABEL: abs_v2i64: 10062; SIMD128: .functype abs_v2i64 (v128) -> (v128) 10063; SIMD128-NEXT: # %bb.0: 10064; SIMD128-NEXT: i64x2.abs $push0=, $0 10065; SIMD128-NEXT: return $pop0 10066; 10067; SIMD128-FAST-LABEL: abs_v2i64: 10068; SIMD128-FAST: .functype abs_v2i64 (v128) -> (v128) 10069; SIMD128-FAST-NEXT: # %bb.0: 10070; SIMD128-FAST-NEXT: i64x2.abs $push0=, $0 10071; SIMD128-FAST-NEXT: return $pop0 10072; 10073; NO-SIMD128-LABEL: abs_v2i64: 10074; NO-SIMD128: .functype abs_v2i64 (i32, i64, i64) -> () 10075; NO-SIMD128-NEXT: # %bb.0: 10076; NO-SIMD128-NEXT: i64.const $push0=, 63 10077; NO-SIMD128-NEXT: i64.shr_s $push9=, $2, $pop0 10078; NO-SIMD128-NEXT: local.tee $push8=, $3=, $pop9 10079; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop8 10080; NO-SIMD128-NEXT: i64.sub $push2=, $pop1, $3 10081; NO-SIMD128-NEXT: i64.store 8($0), $pop2 10082; NO-SIMD128-NEXT: i64.const $push7=, 63 10083; NO-SIMD128-NEXT: i64.shr_s $push6=, $1, $pop7 10084; NO-SIMD128-NEXT: local.tee $push5=, $2=, $pop6 10085; NO-SIMD128-NEXT: i64.xor $push3=, $1, $pop5 10086; NO-SIMD128-NEXT: i64.sub $push4=, $pop3, $2 10087; NO-SIMD128-NEXT: i64.store 0($0), $pop4 10088; NO-SIMD128-NEXT: return 10089; 10090; NO-SIMD128-FAST-LABEL: abs_v2i64: 10091; NO-SIMD128-FAST: .functype abs_v2i64 (i32, i64, i64) -> () 10092; NO-SIMD128-FAST-NEXT: # %bb.0: 10093; NO-SIMD128-FAST-NEXT: i64.const $push0=, 63 10094; NO-SIMD128-FAST-NEXT: i64.shr_s $push9=, $1, $pop0 10095; NO-SIMD128-FAST-NEXT: local.tee $push8=, $3=, $pop9 10096; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop8 10097; NO-SIMD128-FAST-NEXT: i64.sub $push2=, $pop1, $3 10098; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 10099; NO-SIMD128-FAST-NEXT: i64.const $push7=, 63 10100; NO-SIMD128-FAST-NEXT: i64.shr_s $push6=, $2, $pop7 10101; NO-SIMD128-FAST-NEXT: local.tee $push5=, $1=, $pop6 10102; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $2, $pop5 10103; NO-SIMD128-FAST-NEXT: i64.sub $push4=, $pop3, $1 10104; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop4 10105; NO-SIMD128-FAST-NEXT: return 10106 %a = sub <2 x i64> zeroinitializer, %x 10107 %b = icmp slt <2 x i64> %x, zeroinitializer 10108 %c = select <2 x i1> %b, <2 x i64> %a, <2 x i64> %x 10109 ret <2 x i64> %c 10110} 10111 10112define <2 x i64> @neg_v2i64(<2 x i64> %x) { 10113; SIMD128-LABEL: neg_v2i64: 10114; SIMD128: .functype neg_v2i64 (v128) -> (v128) 10115; SIMD128-NEXT: # %bb.0: 10116; SIMD128-NEXT: i64x2.neg $push0=, $0 10117; SIMD128-NEXT: return $pop0 10118; 10119; SIMD128-FAST-LABEL: neg_v2i64: 10120; SIMD128-FAST: .functype neg_v2i64 (v128) -> (v128) 10121; SIMD128-FAST-NEXT: # %bb.0: 10122; SIMD128-FAST-NEXT: i64x2.neg $push0=, $0 10123; SIMD128-FAST-NEXT: return $pop0 10124; 10125; NO-SIMD128-LABEL: neg_v2i64: 10126; NO-SIMD128: .functype neg_v2i64 (i32, i64, i64) -> () 10127; NO-SIMD128-NEXT: # %bb.0: 10128; NO-SIMD128-NEXT: i64.const $push0=, 0 10129; NO-SIMD128-NEXT: i64.sub $push1=, $pop0, $2 10130; NO-SIMD128-NEXT: i64.store 8($0), $pop1 10131; NO-SIMD128-NEXT: i64.const $push3=, 0 10132; NO-SIMD128-NEXT: i64.sub $push2=, $pop3, $1 10133; NO-SIMD128-NEXT: i64.store 0($0), $pop2 10134; NO-SIMD128-NEXT: return 10135; 10136; NO-SIMD128-FAST-LABEL: neg_v2i64: 10137; NO-SIMD128-FAST: .functype neg_v2i64 (i32, i64, i64) -> () 10138; NO-SIMD128-FAST-NEXT: # %bb.0: 10139; NO-SIMD128-FAST-NEXT: i64.const $push0=, 0 10140; NO-SIMD128-FAST-NEXT: i64.sub $push1=, $pop0, $1 10141; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10142; NO-SIMD128-FAST-NEXT: i64.const $push3=, 0 10143; NO-SIMD128-FAST-NEXT: i64.sub $push2=, $pop3, $2 10144; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2 10145; NO-SIMD128-FAST-NEXT: return 10146 %a = sub <2 x i64> <i64 0, i64 0>, %x 10147 ret <2 x i64> %a 10148} 10149 10150define <2 x i64> @shl_v2i64(<2 x i64> %v, i32 %x) { 10151; SIMD128-LABEL: shl_v2i64: 10152; SIMD128: .functype shl_v2i64 (v128, i32) -> (v128) 10153; SIMD128-NEXT: # %bb.0: 10154; SIMD128-NEXT: i64x2.shl $push0=, $0, $1 10155; SIMD128-NEXT: return $pop0 10156; 10157; SIMD128-FAST-LABEL: shl_v2i64: 10158; SIMD128-FAST: .functype shl_v2i64 (v128, i32) -> (v128) 10159; SIMD128-FAST-NEXT: # %bb.0: 10160; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $1 10161; SIMD128-FAST-NEXT: return $pop0 10162; 10163; NO-SIMD128-LABEL: shl_v2i64: 10164; NO-SIMD128: .functype shl_v2i64 (i32, i64, i64, i32) -> () 10165; NO-SIMD128-NEXT: # %bb.0: 10166; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3 10167; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10168; NO-SIMD128-NEXT: i64.shl $push0=, $2, $pop2 10169; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10170; NO-SIMD128-NEXT: i64.shl $push1=, $1, $4 10171; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10172; NO-SIMD128-NEXT: return 10173; 10174; NO-SIMD128-FAST-LABEL: shl_v2i64: 10175; NO-SIMD128-FAST: .functype shl_v2i64 (i32, i64, i64, i32) -> () 10176; NO-SIMD128-FAST-NEXT: # %bb.0: 10177; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3 10178; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10179; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $2, $pop2 10180; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10181; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $4 10182; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10183; NO-SIMD128-FAST-NEXT: return 10184 %x2 = zext i32 %x to i64 10185 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10186 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10187 %a = shl <2 x i64> %v, %s 10188 ret <2 x i64> %a 10189} 10190 10191define <2 x i64> @shl_sext_v2i64(<2 x i64> %v, i32 %x) { 10192; SIMD128-LABEL: shl_sext_v2i64: 10193; SIMD128: .functype shl_sext_v2i64 (v128, i32) -> (v128) 10194; SIMD128-NEXT: # %bb.0: 10195; SIMD128-NEXT: i64x2.shl $push0=, $0, $1 10196; SIMD128-NEXT: return $pop0 10197; 10198; SIMD128-FAST-LABEL: shl_sext_v2i64: 10199; SIMD128-FAST: .functype shl_sext_v2i64 (v128, i32) -> (v128) 10200; SIMD128-FAST-NEXT: # %bb.0: 10201; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $1 10202; SIMD128-FAST-NEXT: return $pop0 10203; 10204; NO-SIMD128-LABEL: shl_sext_v2i64: 10205; NO-SIMD128: .functype shl_sext_v2i64 (i32, i64, i64, i32) -> () 10206; NO-SIMD128-NEXT: # %bb.0: 10207; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3 10208; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10209; NO-SIMD128-NEXT: i64.shl $push0=, $2, $pop2 10210; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10211; NO-SIMD128-NEXT: i64.shl $push1=, $1, $4 10212; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10213; NO-SIMD128-NEXT: return 10214; 10215; NO-SIMD128-FAST-LABEL: shl_sext_v2i64: 10216; NO-SIMD128-FAST: .functype shl_sext_v2i64 (i32, i64, i64, i32) -> () 10217; NO-SIMD128-FAST-NEXT: # %bb.0: 10218; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3 10219; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10220; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $2, $pop2 10221; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10222; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $4 10223; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10224; NO-SIMD128-FAST-NEXT: return 10225 %x2 = sext i32 %x to i64 10226 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10227 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10228 %a = shl <2 x i64> %v, %s 10229 ret <2 x i64> %a 10230} 10231 10232define <2 x i64> @shl_noext_v2i64(<2 x i64> %v, i64 %x) { 10233; SIMD128-LABEL: shl_noext_v2i64: 10234; SIMD128: .functype shl_noext_v2i64 (v128, i64) -> (v128) 10235; SIMD128-NEXT: # %bb.0: 10236; SIMD128-NEXT: i32.wrap_i64 $push0=, $1 10237; SIMD128-NEXT: i64x2.shl $push1=, $0, $pop0 10238; SIMD128-NEXT: return $pop1 10239; 10240; SIMD128-FAST-LABEL: shl_noext_v2i64: 10241; SIMD128-FAST: .functype shl_noext_v2i64 (v128, i64) -> (v128) 10242; SIMD128-FAST-NEXT: # %bb.0: 10243; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1 10244; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $pop1 10245; SIMD128-FAST-NEXT: return $pop0 10246; 10247; NO-SIMD128-LABEL: shl_noext_v2i64: 10248; NO-SIMD128: .functype shl_noext_v2i64 (i32, i64, i64, i64) -> () 10249; NO-SIMD128-NEXT: # %bb.0: 10250; NO-SIMD128-NEXT: i64.shl $push0=, $2, $3 10251; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10252; NO-SIMD128-NEXT: i64.shl $push1=, $1, $3 10253; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10254; NO-SIMD128-NEXT: return 10255; 10256; NO-SIMD128-FAST-LABEL: shl_noext_v2i64: 10257; NO-SIMD128-FAST: .functype shl_noext_v2i64 (i32, i64, i64, i64) -> () 10258; NO-SIMD128-FAST-NEXT: # %bb.0: 10259; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $1, $3 10260; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10261; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $2, $3 10262; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10263; NO-SIMD128-FAST-NEXT: return 10264 %t = insertelement <2 x i64> undef, i64 %x, i32 0 10265 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10266 %a = shl <2 x i64> %v, %s 10267 ret <2 x i64> %a 10268} 10269 10270define <2 x i64> @shl_const_v2i64(<2 x i64> %v) { 10271; SIMD128-LABEL: shl_const_v2i64: 10272; SIMD128: .functype shl_const_v2i64 (v128) -> (v128) 10273; SIMD128-NEXT: # %bb.0: 10274; SIMD128-NEXT: i32.const $push0=, 5 10275; SIMD128-NEXT: i64x2.shl $push1=, $0, $pop0 10276; SIMD128-NEXT: return $pop1 10277; 10278; SIMD128-FAST-LABEL: shl_const_v2i64: 10279; SIMD128-FAST: .functype shl_const_v2i64 (v128) -> (v128) 10280; SIMD128-FAST-NEXT: # %bb.0: 10281; SIMD128-FAST-NEXT: i32.const $push1=, 5 10282; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $pop1 10283; SIMD128-FAST-NEXT: return $pop0 10284; 10285; NO-SIMD128-LABEL: shl_const_v2i64: 10286; NO-SIMD128: .functype shl_const_v2i64 (i32, i64, i64) -> () 10287; NO-SIMD128-NEXT: # %bb.0: 10288; NO-SIMD128-NEXT: i64.const $push0=, 5 10289; NO-SIMD128-NEXT: i64.shl $push1=, $2, $pop0 10290; NO-SIMD128-NEXT: i64.store 8($0), $pop1 10291; NO-SIMD128-NEXT: i64.const $push3=, 5 10292; NO-SIMD128-NEXT: i64.shl $push2=, $1, $pop3 10293; NO-SIMD128-NEXT: i64.store 0($0), $pop2 10294; NO-SIMD128-NEXT: return 10295; 10296; NO-SIMD128-FAST-LABEL: shl_const_v2i64: 10297; NO-SIMD128-FAST: .functype shl_const_v2i64 (i32, i64, i64) -> () 10298; NO-SIMD128-FAST-NEXT: # %bb.0: 10299; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5 10300; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $pop0 10301; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10302; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5 10303; NO-SIMD128-FAST-NEXT: i64.shl $push2=, $2, $pop3 10304; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2 10305; NO-SIMD128-FAST-NEXT: return 10306 %a = shl <2 x i64> %v, <i64 5, i64 5> 10307 ret <2 x i64> %a 10308} 10309 10310define <2 x i64> @shl_vec_v2i64(<2 x i64> %v, <2 x i64> %x) { 10311; SIMD128-LABEL: shl_vec_v2i64: 10312; SIMD128: .functype shl_vec_v2i64 (v128, v128) -> (v128) 10313; SIMD128-NEXT: # %bb.0: 10314; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0 10315; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0 10316; SIMD128-NEXT: i64.shl $push5=, $pop4, $pop3 10317; SIMD128-NEXT: i64x2.splat $push6=, $pop5 10318; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1 10319; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1 10320; SIMD128-NEXT: i64.shl $push2=, $pop1, $pop0 10321; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2 10322; SIMD128-NEXT: return $pop7 10323; 10324; SIMD128-FAST-LABEL: shl_vec_v2i64: 10325; SIMD128-FAST: .functype shl_vec_v2i64 (v128, v128) -> (v128) 10326; SIMD128-FAST-NEXT: # %bb.0: 10327; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0 10328; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0 10329; SIMD128-FAST-NEXT: i64.shl $push6=, $pop5, $pop4 10330; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6 10331; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1 10332; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1 10333; SIMD128-FAST-NEXT: i64.shl $push3=, $pop2, $pop1 10334; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3 10335; SIMD128-FAST-NEXT: return $pop0 10336; 10337; NO-SIMD128-LABEL: shl_vec_v2i64: 10338; NO-SIMD128: .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10339; NO-SIMD128-NEXT: # %bb.0: 10340; NO-SIMD128-NEXT: i64.shl $push0=, $2, $4 10341; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10342; NO-SIMD128-NEXT: i64.shl $push1=, $1, $3 10343; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10344; NO-SIMD128-NEXT: return 10345; 10346; NO-SIMD128-FAST-LABEL: shl_vec_v2i64: 10347; NO-SIMD128-FAST: .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10348; NO-SIMD128-FAST-NEXT: # %bb.0: 10349; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $1, $3 10350; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10351; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $2, $4 10352; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10353; NO-SIMD128-FAST-NEXT: return 10354 %a = shl <2 x i64> %v, %x 10355 ret <2 x i64> %a 10356} 10357 10358define <2 x i64> @shr_s_v2i64(<2 x i64> %v, i32 %x) { 10359; SIMD128-LABEL: shr_s_v2i64: 10360; SIMD128: .functype shr_s_v2i64 (v128, i32) -> (v128) 10361; SIMD128-NEXT: # %bb.0: 10362; SIMD128-NEXT: i64x2.shr_s $push0=, $0, $1 10363; SIMD128-NEXT: return $pop0 10364; 10365; SIMD128-FAST-LABEL: shr_s_v2i64: 10366; SIMD128-FAST: .functype shr_s_v2i64 (v128, i32) -> (v128) 10367; SIMD128-FAST-NEXT: # %bb.0: 10368; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $1 10369; SIMD128-FAST-NEXT: return $pop0 10370; 10371; NO-SIMD128-LABEL: shr_s_v2i64: 10372; NO-SIMD128: .functype shr_s_v2i64 (i32, i64, i64, i32) -> () 10373; NO-SIMD128-NEXT: # %bb.0: 10374; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3 10375; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10376; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $pop2 10377; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10378; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $4 10379; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10380; NO-SIMD128-NEXT: return 10381; 10382; NO-SIMD128-FAST-LABEL: shr_s_v2i64: 10383; NO-SIMD128-FAST: .functype shr_s_v2i64 (i32, i64, i64, i32) -> () 10384; NO-SIMD128-FAST-NEXT: # %bb.0: 10385; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3 10386; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10387; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $2, $pop2 10388; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10389; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $4 10390; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10391; NO-SIMD128-FAST-NEXT: return 10392 %x2 = zext i32 %x to i64 10393 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10394 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10395 %a = ashr <2 x i64> %v, %s 10396 ret <2 x i64> %a 10397} 10398 10399define <2 x i64> @shr_s_sext_v2i64(<2 x i64> %v, i32 %x) { 10400; SIMD128-LABEL: shr_s_sext_v2i64: 10401; SIMD128: .functype shr_s_sext_v2i64 (v128, i32) -> (v128) 10402; SIMD128-NEXT: # %bb.0: 10403; SIMD128-NEXT: i64x2.shr_s $push0=, $0, $1 10404; SIMD128-NEXT: return $pop0 10405; 10406; SIMD128-FAST-LABEL: shr_s_sext_v2i64: 10407; SIMD128-FAST: .functype shr_s_sext_v2i64 (v128, i32) -> (v128) 10408; SIMD128-FAST-NEXT: # %bb.0: 10409; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $1 10410; SIMD128-FAST-NEXT: return $pop0 10411; 10412; NO-SIMD128-LABEL: shr_s_sext_v2i64: 10413; NO-SIMD128: .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> () 10414; NO-SIMD128-NEXT: # %bb.0: 10415; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3 10416; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10417; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $pop2 10418; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10419; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $4 10420; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10421; NO-SIMD128-NEXT: return 10422; 10423; NO-SIMD128-FAST-LABEL: shr_s_sext_v2i64: 10424; NO-SIMD128-FAST: .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> () 10425; NO-SIMD128-FAST-NEXT: # %bb.0: 10426; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3 10427; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10428; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $2, $pop2 10429; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10430; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $4 10431; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10432; NO-SIMD128-FAST-NEXT: return 10433 %x2 = sext i32 %x to i64 10434 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10435 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10436 %a = ashr <2 x i64> %v, %s 10437 ret <2 x i64> %a 10438} 10439 10440define <2 x i64> @shr_s_noext_v2i64(<2 x i64> %v, i64 %x) { 10441; SIMD128-LABEL: shr_s_noext_v2i64: 10442; SIMD128: .functype shr_s_noext_v2i64 (v128, i64) -> (v128) 10443; SIMD128-NEXT: # %bb.0: 10444; SIMD128-NEXT: i32.wrap_i64 $push0=, $1 10445; SIMD128-NEXT: i64x2.shr_s $push1=, $0, $pop0 10446; SIMD128-NEXT: return $pop1 10447; 10448; SIMD128-FAST-LABEL: shr_s_noext_v2i64: 10449; SIMD128-FAST: .functype shr_s_noext_v2i64 (v128, i64) -> (v128) 10450; SIMD128-FAST-NEXT: # %bb.0: 10451; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1 10452; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $pop1 10453; SIMD128-FAST-NEXT: return $pop0 10454; 10455; NO-SIMD128-LABEL: shr_s_noext_v2i64: 10456; NO-SIMD128: .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> () 10457; NO-SIMD128-NEXT: # %bb.0: 10458; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $3 10459; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10460; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $3 10461; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10462; NO-SIMD128-NEXT: return 10463; 10464; NO-SIMD128-FAST-LABEL: shr_s_noext_v2i64: 10465; NO-SIMD128-FAST: .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> () 10466; NO-SIMD128-FAST-NEXT: # %bb.0: 10467; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $1, $3 10468; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10469; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $2, $3 10470; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10471; NO-SIMD128-FAST-NEXT: return 10472 %t = insertelement <2 x i64> undef, i64 %x, i32 0 10473 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10474 %a = ashr <2 x i64> %v, %s 10475 ret <2 x i64> %a 10476} 10477 10478define <2 x i64> @shr_s_const_v2i64(<2 x i64> %v) { 10479; SIMD128-LABEL: shr_s_const_v2i64: 10480; SIMD128: .functype shr_s_const_v2i64 (v128) -> (v128) 10481; SIMD128-NEXT: # %bb.0: 10482; SIMD128-NEXT: i32.const $push0=, 5 10483; SIMD128-NEXT: i64x2.shr_s $push1=, $0, $pop0 10484; SIMD128-NEXT: return $pop1 10485; 10486; SIMD128-FAST-LABEL: shr_s_const_v2i64: 10487; SIMD128-FAST: .functype shr_s_const_v2i64 (v128) -> (v128) 10488; SIMD128-FAST-NEXT: # %bb.0: 10489; SIMD128-FAST-NEXT: i32.const $push1=, 5 10490; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $pop1 10491; SIMD128-FAST-NEXT: return $pop0 10492; 10493; NO-SIMD128-LABEL: shr_s_const_v2i64: 10494; NO-SIMD128: .functype shr_s_const_v2i64 (i32, i64, i64) -> () 10495; NO-SIMD128-NEXT: # %bb.0: 10496; NO-SIMD128-NEXT: i64.const $push0=, 5 10497; NO-SIMD128-NEXT: i64.shr_s $push1=, $2, $pop0 10498; NO-SIMD128-NEXT: i64.store 8($0), $pop1 10499; NO-SIMD128-NEXT: i64.const $push3=, 5 10500; NO-SIMD128-NEXT: i64.shr_s $push2=, $1, $pop3 10501; NO-SIMD128-NEXT: i64.store 0($0), $pop2 10502; NO-SIMD128-NEXT: return 10503; 10504; NO-SIMD128-FAST-LABEL: shr_s_const_v2i64: 10505; NO-SIMD128-FAST: .functype shr_s_const_v2i64 (i32, i64, i64) -> () 10506; NO-SIMD128-FAST-NEXT: # %bb.0: 10507; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5 10508; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $pop0 10509; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10510; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5 10511; NO-SIMD128-FAST-NEXT: i64.shr_s $push2=, $2, $pop3 10512; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2 10513; NO-SIMD128-FAST-NEXT: return 10514 %a = ashr <2 x i64> %v, <i64 5, i64 5> 10515 ret <2 x i64> %a 10516} 10517 10518define <2 x i64> @shr_s_vec_v2i64(<2 x i64> %v, <2 x i64> %x) { 10519; SIMD128-LABEL: shr_s_vec_v2i64: 10520; SIMD128: .functype shr_s_vec_v2i64 (v128, v128) -> (v128) 10521; SIMD128-NEXT: # %bb.0: 10522; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0 10523; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0 10524; SIMD128-NEXT: i64.shr_s $push5=, $pop4, $pop3 10525; SIMD128-NEXT: i64x2.splat $push6=, $pop5 10526; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1 10527; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1 10528; SIMD128-NEXT: i64.shr_s $push2=, $pop1, $pop0 10529; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2 10530; SIMD128-NEXT: return $pop7 10531; 10532; SIMD128-FAST-LABEL: shr_s_vec_v2i64: 10533; SIMD128-FAST: .functype shr_s_vec_v2i64 (v128, v128) -> (v128) 10534; SIMD128-FAST-NEXT: # %bb.0: 10535; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0 10536; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0 10537; SIMD128-FAST-NEXT: i64.shr_s $push6=, $pop5, $pop4 10538; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6 10539; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1 10540; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1 10541; SIMD128-FAST-NEXT: i64.shr_s $push3=, $pop2, $pop1 10542; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3 10543; SIMD128-FAST-NEXT: return $pop0 10544; 10545; NO-SIMD128-LABEL: shr_s_vec_v2i64: 10546; NO-SIMD128: .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10547; NO-SIMD128-NEXT: # %bb.0: 10548; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $4 10549; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10550; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $3 10551; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10552; NO-SIMD128-NEXT: return 10553; 10554; NO-SIMD128-FAST-LABEL: shr_s_vec_v2i64: 10555; NO-SIMD128-FAST: .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10556; NO-SIMD128-FAST-NEXT: # %bb.0: 10557; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $1, $3 10558; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10559; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $2, $4 10560; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10561; NO-SIMD128-FAST-NEXT: return 10562 %a = ashr <2 x i64> %v, %x 10563 ret <2 x i64> %a 10564} 10565 10566define <2 x i64> @shr_u_v2i64(<2 x i64> %v, i32 %x) { 10567; SIMD128-LABEL: shr_u_v2i64: 10568; SIMD128: .functype shr_u_v2i64 (v128, i32) -> (v128) 10569; SIMD128-NEXT: # %bb.0: 10570; SIMD128-NEXT: i64x2.shr_u $push0=, $0, $1 10571; SIMD128-NEXT: return $pop0 10572; 10573; SIMD128-FAST-LABEL: shr_u_v2i64: 10574; SIMD128-FAST: .functype shr_u_v2i64 (v128, i32) -> (v128) 10575; SIMD128-FAST-NEXT: # %bb.0: 10576; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $1 10577; SIMD128-FAST-NEXT: return $pop0 10578; 10579; NO-SIMD128-LABEL: shr_u_v2i64: 10580; NO-SIMD128: .functype shr_u_v2i64 (i32, i64, i64, i32) -> () 10581; NO-SIMD128-NEXT: # %bb.0: 10582; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3 10583; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10584; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $pop2 10585; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10586; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $4 10587; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10588; NO-SIMD128-NEXT: return 10589; 10590; NO-SIMD128-FAST-LABEL: shr_u_v2i64: 10591; NO-SIMD128-FAST: .functype shr_u_v2i64 (i32, i64, i64, i32) -> () 10592; NO-SIMD128-FAST-NEXT: # %bb.0: 10593; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3 10594; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10595; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $2, $pop2 10596; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10597; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $4 10598; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10599; NO-SIMD128-FAST-NEXT: return 10600 %x2 = zext i32 %x to i64 10601 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10602 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10603 %a = lshr <2 x i64> %v, %s 10604 ret <2 x i64> %a 10605} 10606 10607define <2 x i64> @shr_u_sext_v2i64(<2 x i64> %v, i32 %x) { 10608; SIMD128-LABEL: shr_u_sext_v2i64: 10609; SIMD128: .functype shr_u_sext_v2i64 (v128, i32) -> (v128) 10610; SIMD128-NEXT: # %bb.0: 10611; SIMD128-NEXT: i64x2.shr_u $push0=, $0, $1 10612; SIMD128-NEXT: return $pop0 10613; 10614; SIMD128-FAST-LABEL: shr_u_sext_v2i64: 10615; SIMD128-FAST: .functype shr_u_sext_v2i64 (v128, i32) -> (v128) 10616; SIMD128-FAST-NEXT: # %bb.0: 10617; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $1 10618; SIMD128-FAST-NEXT: return $pop0 10619; 10620; NO-SIMD128-LABEL: shr_u_sext_v2i64: 10621; NO-SIMD128: .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> () 10622; NO-SIMD128-NEXT: # %bb.0: 10623; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3 10624; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3 10625; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $pop2 10626; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10627; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $4 10628; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10629; NO-SIMD128-NEXT: return 10630; 10631; NO-SIMD128-FAST-LABEL: shr_u_sext_v2i64: 10632; NO-SIMD128-FAST: .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> () 10633; NO-SIMD128-FAST-NEXT: # %bb.0: 10634; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3 10635; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3 10636; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $2, $pop2 10637; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 10638; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $4 10639; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10640; NO-SIMD128-FAST-NEXT: return 10641 %x2 = sext i32 %x to i64 10642 %t = insertelement <2 x i64> undef, i64 %x2, i32 0 10643 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10644 %a = lshr <2 x i64> %v, %s 10645 ret <2 x i64> %a 10646} 10647 10648define <2 x i64> @shr_u_noext_v2i64(<2 x i64> %v, i64 %x) { 10649; SIMD128-LABEL: shr_u_noext_v2i64: 10650; SIMD128: .functype shr_u_noext_v2i64 (v128, i64) -> (v128) 10651; SIMD128-NEXT: # %bb.0: 10652; SIMD128-NEXT: i32.wrap_i64 $push0=, $1 10653; SIMD128-NEXT: i64x2.shr_u $push1=, $0, $pop0 10654; SIMD128-NEXT: return $pop1 10655; 10656; SIMD128-FAST-LABEL: shr_u_noext_v2i64: 10657; SIMD128-FAST: .functype shr_u_noext_v2i64 (v128, i64) -> (v128) 10658; SIMD128-FAST-NEXT: # %bb.0: 10659; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1 10660; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $pop1 10661; SIMD128-FAST-NEXT: return $pop0 10662; 10663; NO-SIMD128-LABEL: shr_u_noext_v2i64: 10664; NO-SIMD128: .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> () 10665; NO-SIMD128-NEXT: # %bb.0: 10666; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $3 10667; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10668; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $3 10669; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10670; NO-SIMD128-NEXT: return 10671; 10672; NO-SIMD128-FAST-LABEL: shr_u_noext_v2i64: 10673; NO-SIMD128-FAST: .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> () 10674; NO-SIMD128-FAST-NEXT: # %bb.0: 10675; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $1, $3 10676; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10677; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $2, $3 10678; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10679; NO-SIMD128-FAST-NEXT: return 10680 %t = insertelement <2 x i64> undef, i64 %x, i32 0 10681 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0> 10682 %a = lshr <2 x i64> %v, %s 10683 ret <2 x i64> %a 10684} 10685 10686define <2 x i64> @shr_u_const_v2i64(<2 x i64> %v) { 10687; SIMD128-LABEL: shr_u_const_v2i64: 10688; SIMD128: .functype shr_u_const_v2i64 (v128) -> (v128) 10689; SIMD128-NEXT: # %bb.0: 10690; SIMD128-NEXT: i32.const $push0=, 5 10691; SIMD128-NEXT: i64x2.shr_u $push1=, $0, $pop0 10692; SIMD128-NEXT: return $pop1 10693; 10694; SIMD128-FAST-LABEL: shr_u_const_v2i64: 10695; SIMD128-FAST: .functype shr_u_const_v2i64 (v128) -> (v128) 10696; SIMD128-FAST-NEXT: # %bb.0: 10697; SIMD128-FAST-NEXT: i32.const $push1=, 5 10698; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $pop1 10699; SIMD128-FAST-NEXT: return $pop0 10700; 10701; NO-SIMD128-LABEL: shr_u_const_v2i64: 10702; NO-SIMD128: .functype shr_u_const_v2i64 (i32, i64, i64) -> () 10703; NO-SIMD128-NEXT: # %bb.0: 10704; NO-SIMD128-NEXT: i64.const $push0=, 5 10705; NO-SIMD128-NEXT: i64.shr_u $push1=, $2, $pop0 10706; NO-SIMD128-NEXT: i64.store 8($0), $pop1 10707; NO-SIMD128-NEXT: i64.const $push3=, 5 10708; NO-SIMD128-NEXT: i64.shr_u $push2=, $1, $pop3 10709; NO-SIMD128-NEXT: i64.store 0($0), $pop2 10710; NO-SIMD128-NEXT: return 10711; 10712; NO-SIMD128-FAST-LABEL: shr_u_const_v2i64: 10713; NO-SIMD128-FAST: .functype shr_u_const_v2i64 (i32, i64, i64) -> () 10714; NO-SIMD128-FAST-NEXT: # %bb.0: 10715; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5 10716; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $pop0 10717; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10718; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5 10719; NO-SIMD128-FAST-NEXT: i64.shr_u $push2=, $2, $pop3 10720; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2 10721; NO-SIMD128-FAST-NEXT: return 10722 %a = lshr <2 x i64> %v, <i64 5, i64 5> 10723 ret <2 x i64> %a 10724} 10725 10726define <2 x i64> @shr_u_vec_v2i64(<2 x i64> %v, <2 x i64> %x) { 10727; SIMD128-LABEL: shr_u_vec_v2i64: 10728; SIMD128: .functype shr_u_vec_v2i64 (v128, v128) -> (v128) 10729; SIMD128-NEXT: # %bb.0: 10730; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0 10731; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0 10732; SIMD128-NEXT: i64.shr_u $push5=, $pop4, $pop3 10733; SIMD128-NEXT: i64x2.splat $push6=, $pop5 10734; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1 10735; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1 10736; SIMD128-NEXT: i64.shr_u $push2=, $pop1, $pop0 10737; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2 10738; SIMD128-NEXT: return $pop7 10739; 10740; SIMD128-FAST-LABEL: shr_u_vec_v2i64: 10741; SIMD128-FAST: .functype shr_u_vec_v2i64 (v128, v128) -> (v128) 10742; SIMD128-FAST-NEXT: # %bb.0: 10743; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0 10744; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0 10745; SIMD128-FAST-NEXT: i64.shr_u $push6=, $pop5, $pop4 10746; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6 10747; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1 10748; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1 10749; SIMD128-FAST-NEXT: i64.shr_u $push3=, $pop2, $pop1 10750; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3 10751; SIMD128-FAST-NEXT: return $pop0 10752; 10753; NO-SIMD128-LABEL: shr_u_vec_v2i64: 10754; NO-SIMD128: .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10755; NO-SIMD128-NEXT: # %bb.0: 10756; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $4 10757; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10758; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $3 10759; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10760; NO-SIMD128-NEXT: return 10761; 10762; NO-SIMD128-FAST-LABEL: shr_u_vec_v2i64: 10763; NO-SIMD128-FAST: .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> () 10764; NO-SIMD128-FAST-NEXT: # %bb.0: 10765; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $1, $3 10766; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10767; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $2, $4 10768; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10769; NO-SIMD128-FAST-NEXT: return 10770 %a = lshr <2 x i64> %v, %x 10771 ret <2 x i64> %a 10772} 10773 10774define <2 x i64> @and_v2i64(<2 x i64> %x, <2 x i64> %y) { 10775; SIMD128-LABEL: and_v2i64: 10776; SIMD128: .functype and_v2i64 (v128, v128) -> (v128) 10777; SIMD128-NEXT: # %bb.0: 10778; SIMD128-NEXT: v128.and $push0=, $0, $1 10779; SIMD128-NEXT: return $pop0 10780; 10781; SIMD128-FAST-LABEL: and_v2i64: 10782; SIMD128-FAST: .functype and_v2i64 (v128, v128) -> (v128) 10783; SIMD128-FAST-NEXT: # %bb.0: 10784; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1 10785; SIMD128-FAST-NEXT: return $pop0 10786; 10787; NO-SIMD128-LABEL: and_v2i64: 10788; NO-SIMD128: .functype and_v2i64 (i32, i64, i64, i64, i64) -> () 10789; NO-SIMD128-NEXT: # %bb.0: 10790; NO-SIMD128-NEXT: i64.and $push0=, $2, $4 10791; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10792; NO-SIMD128-NEXT: i64.and $push1=, $1, $3 10793; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10794; NO-SIMD128-NEXT: return 10795; 10796; NO-SIMD128-FAST-LABEL: and_v2i64: 10797; NO-SIMD128-FAST: .functype and_v2i64 (i32, i64, i64, i64, i64) -> () 10798; NO-SIMD128-FAST-NEXT: # %bb.0: 10799; NO-SIMD128-FAST-NEXT: i64.and $push0=, $1, $3 10800; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10801; NO-SIMD128-FAST-NEXT: i64.and $push1=, $2, $4 10802; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10803; NO-SIMD128-FAST-NEXT: return 10804 %a = and <2 x i64> %x, %y 10805 ret <2 x i64> %a 10806} 10807 10808define <2 x i64> @or_v2i64(<2 x i64> %x, <2 x i64> %y) { 10809; SIMD128-LABEL: or_v2i64: 10810; SIMD128: .functype or_v2i64 (v128, v128) -> (v128) 10811; SIMD128-NEXT: # %bb.0: 10812; SIMD128-NEXT: v128.or $push0=, $0, $1 10813; SIMD128-NEXT: return $pop0 10814; 10815; SIMD128-FAST-LABEL: or_v2i64: 10816; SIMD128-FAST: .functype or_v2i64 (v128, v128) -> (v128) 10817; SIMD128-FAST-NEXT: # %bb.0: 10818; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1 10819; SIMD128-FAST-NEXT: return $pop0 10820; 10821; NO-SIMD128-LABEL: or_v2i64: 10822; NO-SIMD128: .functype or_v2i64 (i32, i64, i64, i64, i64) -> () 10823; NO-SIMD128-NEXT: # %bb.0: 10824; NO-SIMD128-NEXT: i64.or $push0=, $2, $4 10825; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10826; NO-SIMD128-NEXT: i64.or $push1=, $1, $3 10827; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10828; NO-SIMD128-NEXT: return 10829; 10830; NO-SIMD128-FAST-LABEL: or_v2i64: 10831; NO-SIMD128-FAST: .functype or_v2i64 (i32, i64, i64, i64, i64) -> () 10832; NO-SIMD128-FAST-NEXT: # %bb.0: 10833; NO-SIMD128-FAST-NEXT: i64.or $push0=, $1, $3 10834; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10835; NO-SIMD128-FAST-NEXT: i64.or $push1=, $2, $4 10836; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10837; NO-SIMD128-FAST-NEXT: return 10838 %a = or <2 x i64> %x, %y 10839 ret <2 x i64> %a 10840} 10841 10842define <2 x i64> @xor_v2i64(<2 x i64> %x, <2 x i64> %y) { 10843; SIMD128-LABEL: xor_v2i64: 10844; SIMD128: .functype xor_v2i64 (v128, v128) -> (v128) 10845; SIMD128-NEXT: # %bb.0: 10846; SIMD128-NEXT: v128.xor $push0=, $0, $1 10847; SIMD128-NEXT: return $pop0 10848; 10849; SIMD128-FAST-LABEL: xor_v2i64: 10850; SIMD128-FAST: .functype xor_v2i64 (v128, v128) -> (v128) 10851; SIMD128-FAST-NEXT: # %bb.0: 10852; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1 10853; SIMD128-FAST-NEXT: return $pop0 10854; 10855; NO-SIMD128-LABEL: xor_v2i64: 10856; NO-SIMD128: .functype xor_v2i64 (i32, i64, i64, i64, i64) -> () 10857; NO-SIMD128-NEXT: # %bb.0: 10858; NO-SIMD128-NEXT: i64.xor $push0=, $2, $4 10859; NO-SIMD128-NEXT: i64.store 8($0), $pop0 10860; NO-SIMD128-NEXT: i64.xor $push1=, $1, $3 10861; NO-SIMD128-NEXT: i64.store 0($0), $pop1 10862; NO-SIMD128-NEXT: return 10863; 10864; NO-SIMD128-FAST-LABEL: xor_v2i64: 10865; NO-SIMD128-FAST: .functype xor_v2i64 (i32, i64, i64, i64, i64) -> () 10866; NO-SIMD128-FAST-NEXT: # %bb.0: 10867; NO-SIMD128-FAST-NEXT: i64.xor $push0=, $1, $3 10868; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0 10869; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $2, $4 10870; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1 10871; NO-SIMD128-FAST-NEXT: return 10872 %a = xor <2 x i64> %x, %y 10873 ret <2 x i64> %a 10874} 10875 10876define <2 x i64> @not_v2i64(<2 x i64> %x) { 10877; SIMD128-LABEL: not_v2i64: 10878; SIMD128: .functype not_v2i64 (v128) -> (v128) 10879; SIMD128-NEXT: # %bb.0: 10880; SIMD128-NEXT: v128.not $push0=, $0 10881; SIMD128-NEXT: return $pop0 10882; 10883; SIMD128-FAST-LABEL: not_v2i64: 10884; SIMD128-FAST: .functype not_v2i64 (v128) -> (v128) 10885; SIMD128-FAST-NEXT: # %bb.0: 10886; SIMD128-FAST-NEXT: v128.not $push0=, $0 10887; SIMD128-FAST-NEXT: return $pop0 10888; 10889; NO-SIMD128-LABEL: not_v2i64: 10890; NO-SIMD128: .functype not_v2i64 (i32, i64, i64) -> () 10891; NO-SIMD128-NEXT: # %bb.0: 10892; NO-SIMD128-NEXT: i64.const $push0=, -1 10893; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop0 10894; NO-SIMD128-NEXT: i64.store 8($0), $pop1 10895; NO-SIMD128-NEXT: i64.const $push3=, -1 10896; NO-SIMD128-NEXT: i64.xor $push2=, $1, $pop3 10897; NO-SIMD128-NEXT: i64.store 0($0), $pop2 10898; NO-SIMD128-NEXT: return 10899; 10900; NO-SIMD128-FAST-LABEL: not_v2i64: 10901; NO-SIMD128-FAST: .functype not_v2i64 (i32, i64, i64) -> () 10902; NO-SIMD128-FAST-NEXT: # %bb.0: 10903; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1 10904; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop0 10905; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 10906; NO-SIMD128-FAST-NEXT: i64.const $push3=, -1 10907; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $2, $pop3 10908; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2 10909; NO-SIMD128-FAST-NEXT: return 10910 %a = xor <2 x i64> %x, <i64 -1, i64 -1> 10911 ret <2 x i64> %a 10912} 10913 10914define <2 x i64> @andnot_v2i64(<2 x i64> %x, <2 x i64> %y) { 10915; SIMD128-LABEL: andnot_v2i64: 10916; SIMD128: .functype andnot_v2i64 (v128, v128) -> (v128) 10917; SIMD128-NEXT: # %bb.0: 10918; SIMD128-NEXT: v128.andnot $push0=, $0, $1 10919; SIMD128-NEXT: return $pop0 10920; 10921; SIMD128-FAST-LABEL: andnot_v2i64: 10922; SIMD128-FAST: .functype andnot_v2i64 (v128, v128) -> (v128) 10923; SIMD128-FAST-NEXT: # %bb.0: 10924; SIMD128-FAST-NEXT: v128.not $push0=, $1 10925; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0 10926; SIMD128-FAST-NEXT: return $pop1 10927; 10928; NO-SIMD128-LABEL: andnot_v2i64: 10929; NO-SIMD128: .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> () 10930; NO-SIMD128-NEXT: # %bb.0: 10931; NO-SIMD128-NEXT: i64.const $push0=, -1 10932; NO-SIMD128-NEXT: i64.xor $push1=, $4, $pop0 10933; NO-SIMD128-NEXT: i64.and $push2=, $2, $pop1 10934; NO-SIMD128-NEXT: i64.store 8($0), $pop2 10935; NO-SIMD128-NEXT: i64.const $push5=, -1 10936; NO-SIMD128-NEXT: i64.xor $push3=, $3, $pop5 10937; NO-SIMD128-NEXT: i64.and $push4=, $1, $pop3 10938; NO-SIMD128-NEXT: i64.store 0($0), $pop4 10939; NO-SIMD128-NEXT: return 10940; 10941; NO-SIMD128-FAST-LABEL: andnot_v2i64: 10942; NO-SIMD128-FAST: .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> () 10943; NO-SIMD128-FAST-NEXT: # %bb.0: 10944; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1 10945; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $3, $pop0 10946; NO-SIMD128-FAST-NEXT: i64.and $push2=, $1, $pop1 10947; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 10948; NO-SIMD128-FAST-NEXT: i64.const $push5=, -1 10949; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $4, $pop5 10950; NO-SIMD128-FAST-NEXT: i64.and $push4=, $2, $pop3 10951; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop4 10952; NO-SIMD128-FAST-NEXT: return 10953 %inv_y = xor <2 x i64> %y, <i64 -1, i64 -1> 10954 %a = and <2 x i64> %x, %inv_y 10955 ret <2 x i64> %a 10956} 10957 10958define <2 x i64> @bitselect_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) { 10959; SIMD128-LABEL: bitselect_v2i64: 10960; SIMD128: .functype bitselect_v2i64 (v128, v128, v128) -> (v128) 10961; SIMD128-NEXT: # %bb.0: 10962; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 10963; SIMD128-NEXT: return $pop0 10964; 10965; SIMD128-FAST-LABEL: bitselect_v2i64: 10966; SIMD128-FAST: .functype bitselect_v2i64 (v128, v128, v128) -> (v128) 10967; SIMD128-FAST-NEXT: # %bb.0: 10968; SIMD128-FAST-NEXT: v128.not $push2=, $0 10969; SIMD128-FAST-NEXT: v128.and $push3=, $2, $pop2 10970; SIMD128-FAST-NEXT: v128.and $push0=, $1, $0 10971; SIMD128-FAST-NEXT: v128.or $push1=, $pop3, $pop0 10972; SIMD128-FAST-NEXT: return $pop1 10973; 10974; NO-SIMD128-LABEL: bitselect_v2i64: 10975; NO-SIMD128: .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 10976; NO-SIMD128-NEXT: # %bb.0: 10977; NO-SIMD128-NEXT: i64.const $push1=, -1 10978; NO-SIMD128-NEXT: i64.xor $push2=, $2, $pop1 10979; NO-SIMD128-NEXT: i64.and $push3=, $6, $pop2 10980; NO-SIMD128-NEXT: i64.and $push0=, $4, $2 10981; NO-SIMD128-NEXT: i64.or $push4=, $pop3, $pop0 10982; NO-SIMD128-NEXT: i64.store 8($0), $pop4 10983; NO-SIMD128-NEXT: i64.const $push9=, -1 10984; NO-SIMD128-NEXT: i64.xor $push6=, $1, $pop9 10985; NO-SIMD128-NEXT: i64.and $push7=, $5, $pop6 10986; NO-SIMD128-NEXT: i64.and $push5=, $3, $1 10987; NO-SIMD128-NEXT: i64.or $push8=, $pop7, $pop5 10988; NO-SIMD128-NEXT: i64.store 0($0), $pop8 10989; NO-SIMD128-NEXT: return 10990; 10991; NO-SIMD128-FAST-LABEL: bitselect_v2i64: 10992; NO-SIMD128-FAST: .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 10993; NO-SIMD128-FAST-NEXT: # %bb.0: 10994; NO-SIMD128-FAST-NEXT: i64.const $push1=, -1 10995; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $1, $pop1 10996; NO-SIMD128-FAST-NEXT: i64.and $push3=, $5, $pop2 10997; NO-SIMD128-FAST-NEXT: i64.and $push0=, $3, $1 10998; NO-SIMD128-FAST-NEXT: i64.or $push4=, $pop3, $pop0 10999; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop4 11000; NO-SIMD128-FAST-NEXT: i64.const $push9=, -1 11001; NO-SIMD128-FAST-NEXT: i64.xor $push6=, $2, $pop9 11002; NO-SIMD128-FAST-NEXT: i64.and $push7=, $6, $pop6 11003; NO-SIMD128-FAST-NEXT: i64.and $push5=, $4, $2 11004; NO-SIMD128-FAST-NEXT: i64.or $push8=, $pop7, $pop5 11005; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop8 11006; NO-SIMD128-FAST-NEXT: return 11007 %masked_v1 = and <2 x i64> %v1, %c 11008 %inv_mask = xor <2 x i64> <i64 -1, i64 -1>, %c 11009 %masked_v2 = and <2 x i64> %v2, %inv_mask 11010 %a = or <2 x i64> %masked_v2, %masked_v1 11011 ret <2 x i64> %a 11012} 11013 11014define <2 x i64> @bitselect_xor_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) { 11015; SIMD128-LABEL: bitselect_xor_v2i64: 11016; SIMD128: .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128) 11017; SIMD128-NEXT: # %bb.0: 11018; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0 11019; SIMD128-NEXT: return $pop0 11020; 11021; SIMD128-FAST-LABEL: bitselect_xor_v2i64: 11022; SIMD128-FAST: .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128) 11023; SIMD128-FAST-NEXT: # %bb.0: 11024; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2 11025; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0 11026; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2 11027; SIMD128-FAST-NEXT: return $pop0 11028; 11029; NO-SIMD128-LABEL: bitselect_xor_v2i64: 11030; NO-SIMD128: .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 11031; NO-SIMD128-NEXT: # %bb.0: 11032; NO-SIMD128-NEXT: i64.xor $push0=, $4, $6 11033; NO-SIMD128-NEXT: i64.and $push1=, $pop0, $2 11034; NO-SIMD128-NEXT: i64.xor $push2=, $pop1, $6 11035; NO-SIMD128-NEXT: i64.store 8($0), $pop2 11036; NO-SIMD128-NEXT: i64.xor $push3=, $3, $5 11037; NO-SIMD128-NEXT: i64.and $push4=, $pop3, $1 11038; NO-SIMD128-NEXT: i64.xor $push5=, $pop4, $5 11039; NO-SIMD128-NEXT: i64.store 0($0), $pop5 11040; NO-SIMD128-NEXT: return 11041; 11042; NO-SIMD128-FAST-LABEL: bitselect_xor_v2i64: 11043; NO-SIMD128-FAST: .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 11044; NO-SIMD128-FAST-NEXT: # %bb.0: 11045; NO-SIMD128-FAST-NEXT: i64.xor $push0=, $3, $5 11046; NO-SIMD128-FAST-NEXT: i64.and $push1=, $pop0, $1 11047; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $pop1, $5 11048; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 11049; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $4, $6 11050; NO-SIMD128-FAST-NEXT: i64.and $push4=, $pop3, $2 11051; NO-SIMD128-FAST-NEXT: i64.xor $push5=, $pop4, $6 11052; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5 11053; NO-SIMD128-FAST-NEXT: return 11054 %xor1 = xor <2 x i64> %v1, %v2 11055 %and = and <2 x i64> %xor1, %c 11056 %a = xor <2 x i64> %and, %v2 11057 ret <2 x i64> %a 11058} 11059 11060define <2 x i64> @bitselect_xor_reversed_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) { 11061; SIMD128-LABEL: bitselect_xor_reversed_v2i64: 11062; SIMD128: .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128) 11063; SIMD128-NEXT: # %bb.0: 11064; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0 11065; SIMD128-NEXT: return $pop0 11066; 11067; SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64: 11068; SIMD128-FAST: .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128) 11069; SIMD128-FAST-NEXT: # %bb.0: 11070; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2 11071; SIMD128-FAST-NEXT: v128.not $push2=, $0 11072; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2 11073; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2 11074; SIMD128-FAST-NEXT: return $pop0 11075; 11076; NO-SIMD128-LABEL: bitselect_xor_reversed_v2i64: 11077; NO-SIMD128: .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 11078; NO-SIMD128-NEXT: # %bb.0: 11079; NO-SIMD128-NEXT: i64.xor $push2=, $4, $6 11080; NO-SIMD128-NEXT: i64.const $push0=, -1 11081; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop0 11082; NO-SIMD128-NEXT: i64.and $push3=, $pop2, $pop1 11083; NO-SIMD128-NEXT: i64.xor $push4=, $pop3, $6 11084; NO-SIMD128-NEXT: i64.store 8($0), $pop4 11085; NO-SIMD128-NEXT: i64.xor $push6=, $3, $5 11086; NO-SIMD128-NEXT: i64.const $push9=, -1 11087; NO-SIMD128-NEXT: i64.xor $push5=, $1, $pop9 11088; NO-SIMD128-NEXT: i64.and $push7=, $pop6, $pop5 11089; NO-SIMD128-NEXT: i64.xor $push8=, $pop7, $5 11090; NO-SIMD128-NEXT: i64.store 0($0), $pop8 11091; NO-SIMD128-NEXT: return 11092; 11093; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64: 11094; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> () 11095; NO-SIMD128-FAST-NEXT: # %bb.0: 11096; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $3, $5 11097; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1 11098; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop0 11099; NO-SIMD128-FAST-NEXT: i64.and $push3=, $pop2, $pop1 11100; NO-SIMD128-FAST-NEXT: i64.xor $push4=, $pop3, $5 11101; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop4 11102; NO-SIMD128-FAST-NEXT: i64.xor $push6=, $4, $6 11103; NO-SIMD128-FAST-NEXT: i64.const $push9=, -1 11104; NO-SIMD128-FAST-NEXT: i64.xor $push5=, $2, $pop9 11105; NO-SIMD128-FAST-NEXT: i64.and $push7=, $pop6, $pop5 11106; NO-SIMD128-FAST-NEXT: i64.xor $push8=, $pop7, $6 11107; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop8 11108; NO-SIMD128-FAST-NEXT: return 11109 %xor1 = xor <2 x i64> %v1, %v2 11110 %notc = xor <2 x i64> %c, <i64 -1, i64 -1> 11111 %and = and <2 x i64> %xor1, %notc 11112 %a = xor <2 x i64> %and, %v2 11113 ret <2 x i64> %a 11114} 11115 11116define <2 x i64> @extmul_low_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) { 11117; SIMD128-LABEL: extmul_low_s_v2i64: 11118; SIMD128: .functype extmul_low_s_v2i64 (v128, v128) -> (v128) 11119; SIMD128-NEXT: # %bb.0: 11120; SIMD128-NEXT: i64x2.extmul_low_i32x4_s $push0=, $0, $1 11121; SIMD128-NEXT: return $pop0 11122; 11123; SIMD128-FAST-LABEL: extmul_low_s_v2i64: 11124; SIMD128-FAST: .functype extmul_low_s_v2i64 (v128, v128) -> (v128) 11125; SIMD128-FAST-NEXT: # %bb.0: 11126; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_s $push0=, $0 11127; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_s $push1=, $1 11128; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1 11129; SIMD128-FAST-NEXT: return $pop2 11130; 11131; NO-SIMD128-LABEL: extmul_low_s_v2i64: 11132; NO-SIMD128: .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11133; NO-SIMD128-NEXT: # %bb.0: 11134; NO-SIMD128-NEXT: i64.extend_i32_s $push1=, $2 11135; NO-SIMD128-NEXT: i64.extend_i32_s $push0=, $6 11136; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0 11137; NO-SIMD128-NEXT: i64.store 8($0), $pop2 11138; NO-SIMD128-NEXT: i64.extend_i32_s $push4=, $1 11139; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $5 11140; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3 11141; NO-SIMD128-NEXT: i64.store 0($0), $pop5 11142; NO-SIMD128-NEXT: return 11143; 11144; NO-SIMD128-FAST-LABEL: extmul_low_s_v2i64: 11145; NO-SIMD128-FAST: .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11146; NO-SIMD128-FAST-NEXT: # %bb.0: 11147; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push1=, $1 11148; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push0=, $5 11149; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0 11150; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 11151; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push4=, $2 11152; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $6 11153; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3 11154; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5 11155; NO-SIMD128-FAST-NEXT: return 11156 %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 11157 %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 11158 %extended1 = sext <2 x i32> %low1 to <2 x i64> 11159 %extended2 = sext <2 x i32> %low2 to <2 x i64> 11160 %a = mul <2 x i64> %extended1, %extended2 11161 ret <2 x i64> %a 11162} 11163 11164define <2 x i64> @extmul_high_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) { 11165; SIMD128-LABEL: extmul_high_s_v2i64: 11166; SIMD128: .functype extmul_high_s_v2i64 (v128, v128) -> (v128) 11167; SIMD128-NEXT: # %bb.0: 11168; SIMD128-NEXT: i64x2.extmul_high_i32x4_s $push0=, $0, $1 11169; SIMD128-NEXT: return $pop0 11170; 11171; SIMD128-FAST-LABEL: extmul_high_s_v2i64: 11172; SIMD128-FAST: .functype extmul_high_s_v2i64 (v128, v128) -> (v128) 11173; SIMD128-FAST-NEXT: # %bb.0: 11174; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_s $push0=, $0 11175; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_s $push1=, $1 11176; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1 11177; SIMD128-FAST-NEXT: return $pop2 11178; 11179; NO-SIMD128-LABEL: extmul_high_s_v2i64: 11180; NO-SIMD128: .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11181; NO-SIMD128-NEXT: # %bb.0: 11182; NO-SIMD128-NEXT: i64.extend_i32_s $push1=, $4 11183; NO-SIMD128-NEXT: i64.extend_i32_s $push0=, $8 11184; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0 11185; NO-SIMD128-NEXT: i64.store 8($0), $pop2 11186; NO-SIMD128-NEXT: i64.extend_i32_s $push4=, $3 11187; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $7 11188; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3 11189; NO-SIMD128-NEXT: i64.store 0($0), $pop5 11190; NO-SIMD128-NEXT: return 11191; 11192; NO-SIMD128-FAST-LABEL: extmul_high_s_v2i64: 11193; NO-SIMD128-FAST: .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11194; NO-SIMD128-FAST-NEXT: # %bb.0: 11195; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push1=, $3 11196; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push0=, $7 11197; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0 11198; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 11199; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push4=, $4 11200; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $8 11201; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3 11202; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5 11203; NO-SIMD128-FAST-NEXT: return 11204 %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 11205 %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 11206 %extended1 = sext <2 x i32> %high1 to <2 x i64> 11207 %extended2 = sext <2 x i32> %high2 to <2 x i64> 11208 %a = mul <2 x i64> %extended1, %extended2 11209 ret <2 x i64> %a 11210} 11211 11212define <2 x i64> @extmul_low_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) { 11213; SIMD128-LABEL: extmul_low_u_v2i64: 11214; SIMD128: .functype extmul_low_u_v2i64 (v128, v128) -> (v128) 11215; SIMD128-NEXT: # %bb.0: 11216; SIMD128-NEXT: i64x2.extmul_low_i32x4_u $push0=, $0, $1 11217; SIMD128-NEXT: return $pop0 11218; 11219; SIMD128-FAST-LABEL: extmul_low_u_v2i64: 11220; SIMD128-FAST: .functype extmul_low_u_v2i64 (v128, v128) -> (v128) 11221; SIMD128-FAST-NEXT: # %bb.0: 11222; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_u $push0=, $0 11223; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_u $push1=, $1 11224; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1 11225; SIMD128-FAST-NEXT: return $pop2 11226; 11227; NO-SIMD128-LABEL: extmul_low_u_v2i64: 11228; NO-SIMD128: .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11229; NO-SIMD128-NEXT: # %bb.0: 11230; NO-SIMD128-NEXT: i64.extend_i32_u $push1=, $2 11231; NO-SIMD128-NEXT: i64.extend_i32_u $push0=, $6 11232; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0 11233; NO-SIMD128-NEXT: i64.store 8($0), $pop2 11234; NO-SIMD128-NEXT: i64.extend_i32_u $push4=, $1 11235; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $5 11236; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3 11237; NO-SIMD128-NEXT: i64.store 0($0), $pop5 11238; NO-SIMD128-NEXT: return 11239; 11240; NO-SIMD128-FAST-LABEL: extmul_low_u_v2i64: 11241; NO-SIMD128-FAST: .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11242; NO-SIMD128-FAST-NEXT: # %bb.0: 11243; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push1=, $1 11244; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push0=, $5 11245; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0 11246; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 11247; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push4=, $2 11248; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $6 11249; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3 11250; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5 11251; NO-SIMD128-FAST-NEXT: return 11252 %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 11253 %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1> 11254 %extended1 = zext <2 x i32> %low1 to <2 x i64> 11255 %extended2 = zext <2 x i32> %low2 to <2 x i64> 11256 %a = mul <2 x i64> %extended1, %extended2 11257 ret <2 x i64> %a 11258} 11259 11260define <2 x i64> @extmul_high_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) { 11261; SIMD128-LABEL: extmul_high_u_v2i64: 11262; SIMD128: .functype extmul_high_u_v2i64 (v128, v128) -> (v128) 11263; SIMD128-NEXT: # %bb.0: 11264; SIMD128-NEXT: i64x2.extmul_high_i32x4_u $push0=, $0, $1 11265; SIMD128-NEXT: return $pop0 11266; 11267; SIMD128-FAST-LABEL: extmul_high_u_v2i64: 11268; SIMD128-FAST: .functype extmul_high_u_v2i64 (v128, v128) -> (v128) 11269; SIMD128-FAST-NEXT: # %bb.0: 11270; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_u $push0=, $0 11271; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_u $push1=, $1 11272; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1 11273; SIMD128-FAST-NEXT: return $pop2 11274; 11275; NO-SIMD128-LABEL: extmul_high_u_v2i64: 11276; NO-SIMD128: .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11277; NO-SIMD128-NEXT: # %bb.0: 11278; NO-SIMD128-NEXT: i64.extend_i32_u $push1=, $4 11279; NO-SIMD128-NEXT: i64.extend_i32_u $push0=, $8 11280; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0 11281; NO-SIMD128-NEXT: i64.store 8($0), $pop2 11282; NO-SIMD128-NEXT: i64.extend_i32_u $push4=, $3 11283; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $7 11284; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3 11285; NO-SIMD128-NEXT: i64.store 0($0), $pop5 11286; NO-SIMD128-NEXT: return 11287; 11288; NO-SIMD128-FAST-LABEL: extmul_high_u_v2i64: 11289; NO-SIMD128-FAST: .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 11290; NO-SIMD128-FAST-NEXT: # %bb.0: 11291; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push1=, $3 11292; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push0=, $7 11293; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0 11294; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2 11295; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push4=, $4 11296; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $8 11297; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3 11298; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5 11299; NO-SIMD128-FAST-NEXT: return 11300 %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 11301 %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 11302 %extended1 = zext <2 x i32> %high1 to <2 x i64> 11303 %extended2 = zext <2 x i32> %high2 to <2 x i64> 11304 %a = mul <2 x i64> %extended1, %extended2 11305 ret <2 x i64> %a 11306} 11307 11308; ============================================================================== 11309; 4 x float 11310; ============================================================================== 11311define <4 x float> @neg_v4f32(<4 x float> %x) { 11312 ; nsz makes this semantically equivalent to flipping sign bit 11313; SIMD128-LABEL: neg_v4f32: 11314; SIMD128: .functype neg_v4f32 (v128) -> (v128) 11315; SIMD128-NEXT: # %bb.0: 11316; SIMD128-NEXT: f32x4.neg $push0=, $0 11317; SIMD128-NEXT: return $pop0 11318; 11319; SIMD128-FAST-LABEL: neg_v4f32: 11320; SIMD128-FAST: .functype neg_v4f32 (v128) -> (v128) 11321; SIMD128-FAST-NEXT: # %bb.0: 11322; SIMD128-FAST-NEXT: f32x4.neg $push0=, $0 11323; SIMD128-FAST-NEXT: return $pop0 11324; 11325; NO-SIMD128-LABEL: neg_v4f32: 11326; NO-SIMD128: .functype neg_v4f32 (i32, f32, f32, f32, f32) -> () 11327; NO-SIMD128-NEXT: # %bb.0: 11328; NO-SIMD128-NEXT: f32.neg $push0=, $4 11329; NO-SIMD128-NEXT: f32.store 12($0), $pop0 11330; NO-SIMD128-NEXT: f32.neg $push1=, $3 11331; NO-SIMD128-NEXT: f32.store 8($0), $pop1 11332; NO-SIMD128-NEXT: f32.neg $push2=, $2 11333; NO-SIMD128-NEXT: f32.store 4($0), $pop2 11334; NO-SIMD128-NEXT: f32.neg $push3=, $1 11335; NO-SIMD128-NEXT: f32.store 0($0), $pop3 11336; NO-SIMD128-NEXT: return 11337; 11338; NO-SIMD128-FAST-LABEL: neg_v4f32: 11339; NO-SIMD128-FAST: .functype neg_v4f32 (i32, f32, f32, f32, f32) -> () 11340; NO-SIMD128-FAST-NEXT: # %bb.0: 11341; NO-SIMD128-FAST-NEXT: f32.neg $push0=, $1 11342; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 11343; NO-SIMD128-FAST-NEXT: f32.neg $push1=, $2 11344; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 11345; NO-SIMD128-FAST-NEXT: f32.neg $push2=, $3 11346; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 11347; NO-SIMD128-FAST-NEXT: f32.neg $push3=, $4 11348; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 11349; NO-SIMD128-FAST-NEXT: return 11350 %a = fsub nsz <4 x float> <float 0.0, float 0.0, float 0.0, float 0.0>, %x 11351 ret <4 x float> %a 11352} 11353 11354declare <4 x float> @llvm.fabs.v4f32(<4 x float>) nounwind readnone 11355define <4 x float> @abs_v4f32(<4 x float> %x) { 11356; SIMD128-LABEL: abs_v4f32: 11357; SIMD128: .functype abs_v4f32 (v128) -> (v128) 11358; SIMD128-NEXT: # %bb.0: 11359; SIMD128-NEXT: f32x4.abs $push0=, $0 11360; SIMD128-NEXT: return $pop0 11361; 11362; SIMD128-FAST-LABEL: abs_v4f32: 11363; SIMD128-FAST: .functype abs_v4f32 (v128) -> (v128) 11364; SIMD128-FAST-NEXT: # %bb.0: 11365; SIMD128-FAST-NEXT: f32x4.abs $push0=, $0 11366; SIMD128-FAST-NEXT: return $pop0 11367; 11368; NO-SIMD128-LABEL: abs_v4f32: 11369; NO-SIMD128: .functype abs_v4f32 (i32, f32, f32, f32, f32) -> () 11370; NO-SIMD128-NEXT: # %bb.0: 11371; NO-SIMD128-NEXT: f32.abs $push0=, $4 11372; NO-SIMD128-NEXT: f32.store 12($0), $pop0 11373; NO-SIMD128-NEXT: f32.abs $push1=, $3 11374; NO-SIMD128-NEXT: f32.store 8($0), $pop1 11375; NO-SIMD128-NEXT: f32.abs $push2=, $2 11376; NO-SIMD128-NEXT: f32.store 4($0), $pop2 11377; NO-SIMD128-NEXT: f32.abs $push3=, $1 11378; NO-SIMD128-NEXT: f32.store 0($0), $pop3 11379; NO-SIMD128-NEXT: return 11380; 11381; NO-SIMD128-FAST-LABEL: abs_v4f32: 11382; NO-SIMD128-FAST: .functype abs_v4f32 (i32, f32, f32, f32, f32) -> () 11383; NO-SIMD128-FAST-NEXT: # %bb.0: 11384; NO-SIMD128-FAST-NEXT: f32.abs $push0=, $1 11385; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 11386; NO-SIMD128-FAST-NEXT: f32.abs $push1=, $2 11387; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 11388; NO-SIMD128-FAST-NEXT: f32.abs $push2=, $3 11389; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 11390; NO-SIMD128-FAST-NEXT: f32.abs $push3=, $4 11391; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 11392; NO-SIMD128-FAST-NEXT: return 11393 %a = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x) 11394 ret <4 x float> %a 11395} 11396 11397define <4 x float> @min_unordered_v4f32(<4 x float> %x) { 11398; SIMD128-LABEL: min_unordered_v4f32: 11399; SIMD128: .functype min_unordered_v4f32 (v128) -> (v128) 11400; SIMD128-NEXT: # %bb.0: 11401; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11402; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0 11403; SIMD128-NEXT: return $pop1 11404; 11405; SIMD128-FAST-LABEL: min_unordered_v4f32: 11406; SIMD128-FAST: .functype min_unordered_v4f32 (v128) -> (v128) 11407; SIMD128-FAST-NEXT: # %bb.0: 11408; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11409; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1 11410; SIMD128-FAST-NEXT: return $pop0 11411; 11412; NO-SIMD128-LABEL: min_unordered_v4f32: 11413; NO-SIMD128: .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> () 11414; NO-SIMD128-NEXT: # %bb.0: 11415; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2 11416; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2 11417; NO-SIMD128-NEXT: f32.gt $push1=, $4, $pop15 11418; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $4, $pop1 11419; NO-SIMD128-NEXT: f32.store 12($0), $pop2 11420; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2 11421; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2 11422; NO-SIMD128-NEXT: f32.gt $push3=, $3, $pop13 11423; NO-SIMD128-NEXT: f32.select $push4=, $pop14, $3, $pop3 11424; NO-SIMD128-NEXT: f32.store 8($0), $pop4 11425; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2 11426; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2 11427; NO-SIMD128-NEXT: f32.gt $push5=, $2, $pop11 11428; NO-SIMD128-NEXT: f32.select $push6=, $pop12, $2, $pop5 11429; NO-SIMD128-NEXT: f32.store 4($0), $pop6 11430; NO-SIMD128-NEXT: f32.const $push10=, 0x1.4p2 11431; NO-SIMD128-NEXT: f32.const $push9=, 0x1.4p2 11432; NO-SIMD128-NEXT: f32.gt $push7=, $1, $pop9 11433; NO-SIMD128-NEXT: f32.select $push8=, $pop10, $1, $pop7 11434; NO-SIMD128-NEXT: f32.store 0($0), $pop8 11435; NO-SIMD128-NEXT: return 11436; 11437; NO-SIMD128-FAST-LABEL: min_unordered_v4f32: 11438; NO-SIMD128-FAST: .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> () 11439; NO-SIMD128-FAST-NEXT: # %bb.0: 11440; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2 11441; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2 11442; NO-SIMD128-FAST-NEXT: f32.gt $push1=, $1, $pop15 11443; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1 11444; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2 11445; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2 11446; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2 11447; NO-SIMD128-FAST-NEXT: f32.gt $push3=, $2, $pop13 11448; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop14, $2, $pop3 11449; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4 11450; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2 11451; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2 11452; NO-SIMD128-FAST-NEXT: f32.gt $push5=, $3, $pop11 11453; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop12, $3, $pop5 11454; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6 11455; NO-SIMD128-FAST-NEXT: f32.const $push10=, 0x1.4p2 11456; NO-SIMD128-FAST-NEXT: f32.const $push9=, 0x1.4p2 11457; NO-SIMD128-FAST-NEXT: f32.gt $push7=, $4, $pop9 11458; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop10, $4, $pop7 11459; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop8 11460; NO-SIMD128-FAST-NEXT: return 11461 %cmps = fcmp ule <4 x float> %x, <float 5., float 5., float 5., float 5.> 11462 %a = select <4 x i1> %cmps, <4 x float> %x, 11463 <4 x float> <float 5., float 5., float 5., float 5.> 11464 ret <4 x float> %a 11465} 11466 11467define <4 x float> @max_unordered_v4f32(<4 x float> %x) { 11468; SIMD128-LABEL: max_unordered_v4f32: 11469; SIMD128: .functype max_unordered_v4f32 (v128) -> (v128) 11470; SIMD128-NEXT: # %bb.0: 11471; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11472; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0 11473; SIMD128-NEXT: return $pop1 11474; 11475; SIMD128-FAST-LABEL: max_unordered_v4f32: 11476; SIMD128-FAST: .functype max_unordered_v4f32 (v128) -> (v128) 11477; SIMD128-FAST-NEXT: # %bb.0: 11478; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11479; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1 11480; SIMD128-FAST-NEXT: return $pop0 11481; 11482; NO-SIMD128-LABEL: max_unordered_v4f32: 11483; NO-SIMD128: .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> () 11484; NO-SIMD128-NEXT: # %bb.0: 11485; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2 11486; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2 11487; NO-SIMD128-NEXT: f32.lt $push1=, $4, $pop15 11488; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $4, $pop1 11489; NO-SIMD128-NEXT: f32.store 12($0), $pop2 11490; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2 11491; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2 11492; NO-SIMD128-NEXT: f32.lt $push3=, $3, $pop13 11493; NO-SIMD128-NEXT: f32.select $push4=, $pop14, $3, $pop3 11494; NO-SIMD128-NEXT: f32.store 8($0), $pop4 11495; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2 11496; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2 11497; NO-SIMD128-NEXT: f32.lt $push5=, $2, $pop11 11498; NO-SIMD128-NEXT: f32.select $push6=, $pop12, $2, $pop5 11499; NO-SIMD128-NEXT: f32.store 4($0), $pop6 11500; NO-SIMD128-NEXT: f32.const $push10=, 0x1.4p2 11501; NO-SIMD128-NEXT: f32.const $push9=, 0x1.4p2 11502; NO-SIMD128-NEXT: f32.lt $push7=, $1, $pop9 11503; NO-SIMD128-NEXT: f32.select $push8=, $pop10, $1, $pop7 11504; NO-SIMD128-NEXT: f32.store 0($0), $pop8 11505; NO-SIMD128-NEXT: return 11506; 11507; NO-SIMD128-FAST-LABEL: max_unordered_v4f32: 11508; NO-SIMD128-FAST: .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> () 11509; NO-SIMD128-FAST-NEXT: # %bb.0: 11510; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2 11511; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2 11512; NO-SIMD128-FAST-NEXT: f32.lt $push1=, $1, $pop15 11513; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1 11514; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2 11515; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2 11516; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2 11517; NO-SIMD128-FAST-NEXT: f32.lt $push3=, $2, $pop13 11518; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop14, $2, $pop3 11519; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4 11520; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2 11521; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2 11522; NO-SIMD128-FAST-NEXT: f32.lt $push5=, $3, $pop11 11523; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop12, $3, $pop5 11524; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6 11525; NO-SIMD128-FAST-NEXT: f32.const $push10=, 0x1.4p2 11526; NO-SIMD128-FAST-NEXT: f32.const $push9=, 0x1.4p2 11527; NO-SIMD128-FAST-NEXT: f32.lt $push7=, $4, $pop9 11528; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop10, $4, $pop7 11529; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop8 11530; NO-SIMD128-FAST-NEXT: return 11531 %cmps = fcmp uge <4 x float> %x, <float 5., float 5., float 5., float 5.> 11532 %a = select <4 x i1> %cmps, <4 x float> %x, 11533 <4 x float> <float 5., float 5., float 5., float 5.> 11534 ret <4 x float> %a 11535} 11536 11537define <4 x float> @min_ordered_v4f32(<4 x float> %x) { 11538; SIMD128-LABEL: min_ordered_v4f32: 11539; SIMD128: .functype min_ordered_v4f32 (v128) -> (v128) 11540; SIMD128-NEXT: # %bb.0: 11541; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11542; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0 11543; SIMD128-NEXT: return $pop1 11544; 11545; SIMD128-FAST-LABEL: min_ordered_v4f32: 11546; SIMD128-FAST: .functype min_ordered_v4f32 (v128) -> (v128) 11547; SIMD128-FAST-NEXT: # %bb.0: 11548; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11549; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1 11550; SIMD128-FAST-NEXT: return $pop0 11551; 11552; NO-SIMD128-LABEL: min_ordered_v4f32: 11553; NO-SIMD128: .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> () 11554; NO-SIMD128-NEXT: # %bb.0: 11555; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2 11556; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2 11557; NO-SIMD128-NEXT: f32.ge $push1=, $4, $pop15 11558; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $4, $pop1 11559; NO-SIMD128-NEXT: f32.store 12($0), $pop2 11560; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2 11561; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2 11562; NO-SIMD128-NEXT: f32.ge $push3=, $3, $pop13 11563; NO-SIMD128-NEXT: f32.select $push4=, $pop14, $3, $pop3 11564; NO-SIMD128-NEXT: f32.store 8($0), $pop4 11565; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2 11566; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2 11567; NO-SIMD128-NEXT: f32.ge $push5=, $2, $pop11 11568; NO-SIMD128-NEXT: f32.select $push6=, $pop12, $2, $pop5 11569; NO-SIMD128-NEXT: f32.store 4($0), $pop6 11570; NO-SIMD128-NEXT: f32.const $push10=, 0x1.4p2 11571; NO-SIMD128-NEXT: f32.const $push9=, 0x1.4p2 11572; NO-SIMD128-NEXT: f32.ge $push7=, $1, $pop9 11573; NO-SIMD128-NEXT: f32.select $push8=, $pop10, $1, $pop7 11574; NO-SIMD128-NEXT: f32.store 0($0), $pop8 11575; NO-SIMD128-NEXT: return 11576; 11577; NO-SIMD128-FAST-LABEL: min_ordered_v4f32: 11578; NO-SIMD128-FAST: .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> () 11579; NO-SIMD128-FAST-NEXT: # %bb.0: 11580; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2 11581; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2 11582; NO-SIMD128-FAST-NEXT: f32.ge $push1=, $1, $pop15 11583; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1 11584; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2 11585; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2 11586; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2 11587; NO-SIMD128-FAST-NEXT: f32.ge $push3=, $2, $pop13 11588; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop14, $2, $pop3 11589; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4 11590; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2 11591; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2 11592; NO-SIMD128-FAST-NEXT: f32.ge $push5=, $3, $pop11 11593; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop12, $3, $pop5 11594; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6 11595; NO-SIMD128-FAST-NEXT: f32.const $push10=, 0x1.4p2 11596; NO-SIMD128-FAST-NEXT: f32.const $push9=, 0x1.4p2 11597; NO-SIMD128-FAST-NEXT: f32.ge $push7=, $4, $pop9 11598; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop10, $4, $pop7 11599; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop8 11600; NO-SIMD128-FAST-NEXT: return 11601 %cmps = fcmp ole <4 x float> <float 5., float 5., float 5., float 5.>, %x 11602 %a = select <4 x i1> %cmps, 11603 <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x 11604 ret <4 x float> %a 11605} 11606 11607define <4 x float> @max_ordered_v4f32(<4 x float> %x) { 11608; SIMD128-LABEL: max_ordered_v4f32: 11609; SIMD128: .functype max_ordered_v4f32 (v128) -> (v128) 11610; SIMD128-NEXT: # %bb.0: 11611; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11612; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0 11613; SIMD128-NEXT: return $pop1 11614; 11615; SIMD128-FAST-LABEL: max_ordered_v4f32: 11616; SIMD128-FAST: .functype max_ordered_v4f32 (v128) -> (v128) 11617; SIMD128-FAST-NEXT: # %bb.0: 11618; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 11619; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1 11620; SIMD128-FAST-NEXT: return $pop0 11621; 11622; NO-SIMD128-LABEL: max_ordered_v4f32: 11623; NO-SIMD128: .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> () 11624; NO-SIMD128-NEXT: # %bb.0: 11625; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2 11626; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2 11627; NO-SIMD128-NEXT: f32.le $push1=, $4, $pop15 11628; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $4, $pop1 11629; NO-SIMD128-NEXT: f32.store 12($0), $pop2 11630; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2 11631; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2 11632; NO-SIMD128-NEXT: f32.le $push3=, $3, $pop13 11633; NO-SIMD128-NEXT: f32.select $push4=, $pop14, $3, $pop3 11634; NO-SIMD128-NEXT: f32.store 8($0), $pop4 11635; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2 11636; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2 11637; NO-SIMD128-NEXT: f32.le $push5=, $2, $pop11 11638; NO-SIMD128-NEXT: f32.select $push6=, $pop12, $2, $pop5 11639; NO-SIMD128-NEXT: f32.store 4($0), $pop6 11640; NO-SIMD128-NEXT: f32.const $push10=, 0x1.4p2 11641; NO-SIMD128-NEXT: f32.const $push9=, 0x1.4p2 11642; NO-SIMD128-NEXT: f32.le $push7=, $1, $pop9 11643; NO-SIMD128-NEXT: f32.select $push8=, $pop10, $1, $pop7 11644; NO-SIMD128-NEXT: f32.store 0($0), $pop8 11645; NO-SIMD128-NEXT: return 11646; 11647; NO-SIMD128-FAST-LABEL: max_ordered_v4f32: 11648; NO-SIMD128-FAST: .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> () 11649; NO-SIMD128-FAST-NEXT: # %bb.0: 11650; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2 11651; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2 11652; NO-SIMD128-FAST-NEXT: f32.le $push1=, $1, $pop15 11653; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1 11654; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2 11655; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2 11656; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2 11657; NO-SIMD128-FAST-NEXT: f32.le $push3=, $2, $pop13 11658; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop14, $2, $pop3 11659; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4 11660; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2 11661; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2 11662; NO-SIMD128-FAST-NEXT: f32.le $push5=, $3, $pop11 11663; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop12, $3, $pop5 11664; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6 11665; NO-SIMD128-FAST-NEXT: f32.const $push10=, 0x1.4p2 11666; NO-SIMD128-FAST-NEXT: f32.const $push9=, 0x1.4p2 11667; NO-SIMD128-FAST-NEXT: f32.le $push7=, $4, $pop9 11668; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop10, $4, $pop7 11669; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop8 11670; NO-SIMD128-FAST-NEXT: return 11671 %cmps = fcmp oge <4 x float> <float 5., float 5., float 5., float 5.>, %x 11672 %a = select <4 x i1> %cmps, 11673 <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x 11674 ret <4 x float> %a 11675} 11676 11677declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>) 11678define <4 x float> @min_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 11679; SIMD128-LABEL: min_intrinsic_v4f32: 11680; SIMD128: .functype min_intrinsic_v4f32 (v128, v128) -> (v128) 11681; SIMD128-NEXT: # %bb.0: 11682; SIMD128-NEXT: f32x4.min $push0=, $0, $1 11683; SIMD128-NEXT: return $pop0 11684; 11685; SIMD128-FAST-LABEL: min_intrinsic_v4f32: 11686; SIMD128-FAST: .functype min_intrinsic_v4f32 (v128, v128) -> (v128) 11687; SIMD128-FAST-NEXT: # %bb.0: 11688; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $1 11689; SIMD128-FAST-NEXT: return $pop0 11690; 11691; NO-SIMD128-LABEL: min_intrinsic_v4f32: 11692; NO-SIMD128: .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11693; NO-SIMD128-NEXT: # %bb.0: 11694; NO-SIMD128-NEXT: f32.min $push0=, $4, $8 11695; NO-SIMD128-NEXT: f32.store 12($0), $pop0 11696; NO-SIMD128-NEXT: f32.min $push1=, $3, $7 11697; NO-SIMD128-NEXT: f32.store 8($0), $pop1 11698; NO-SIMD128-NEXT: f32.min $push2=, $2, $6 11699; NO-SIMD128-NEXT: f32.store 4($0), $pop2 11700; NO-SIMD128-NEXT: f32.min $push3=, $1, $5 11701; NO-SIMD128-NEXT: f32.store 0($0), $pop3 11702; NO-SIMD128-NEXT: return 11703; 11704; NO-SIMD128-FAST-LABEL: min_intrinsic_v4f32: 11705; NO-SIMD128-FAST: .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11706; NO-SIMD128-FAST-NEXT: # %bb.0: 11707; NO-SIMD128-FAST-NEXT: f32.min $push0=, $1, $5 11708; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 11709; NO-SIMD128-FAST-NEXT: f32.min $push1=, $2, $6 11710; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 11711; NO-SIMD128-FAST-NEXT: f32.min $push2=, $3, $7 11712; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 11713; NO-SIMD128-FAST-NEXT: f32.min $push3=, $4, $8 11714; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 11715; NO-SIMD128-FAST-NEXT: return 11716 %a = call <4 x float> @llvm.minimum.v4f32(<4 x float> %x, <4 x float> %y) 11717 ret <4 x float> %a 11718} 11719 11720declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>) 11721define <4 x float> @minnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 11722; SIMD128-LABEL: minnum_intrinsic_v4f32: 11723; SIMD128: .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128) 11724; SIMD128-NEXT: # %bb.0: 11725; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0 11726; SIMD128-NEXT: local.tee $push26=, $3=, $pop27 11727; SIMD128-NEXT: f32x4.extract_lane $push25=, $1, 0 11728; SIMD128-NEXT: local.tee $push24=, $2=, $pop25 11729; SIMD128-NEXT: f32.lt $push2=, $3, $2 11730; SIMD128-NEXT: f32.select $push3=, $pop26, $pop24, $pop2 11731; SIMD128-NEXT: f32x4.splat $push4=, $pop3 11732; SIMD128-NEXT: f32x4.extract_lane $push23=, $0, 1 11733; SIMD128-NEXT: local.tee $push22=, $3=, $pop23 11734; SIMD128-NEXT: f32x4.extract_lane $push21=, $1, 1 11735; SIMD128-NEXT: local.tee $push20=, $2=, $pop21 11736; SIMD128-NEXT: f32.lt $push0=, $3, $2 11737; SIMD128-NEXT: f32.select $push1=, $pop22, $pop20, $pop0 11738; SIMD128-NEXT: f32x4.replace_lane $push5=, $pop4, 1, $pop1 11739; SIMD128-NEXT: f32x4.extract_lane $push19=, $0, 2 11740; SIMD128-NEXT: local.tee $push18=, $3=, $pop19 11741; SIMD128-NEXT: f32x4.extract_lane $push17=, $1, 2 11742; SIMD128-NEXT: local.tee $push16=, $2=, $pop17 11743; SIMD128-NEXT: f32.lt $push6=, $3, $2 11744; SIMD128-NEXT: f32.select $push7=, $pop18, $pop16, $pop6 11745; SIMD128-NEXT: f32x4.replace_lane $push8=, $pop5, 2, $pop7 11746; SIMD128-NEXT: f32x4.extract_lane $push15=, $0, 3 11747; SIMD128-NEXT: local.tee $push14=, $3=, $pop15 11748; SIMD128-NEXT: f32x4.extract_lane $push13=, $1, 3 11749; SIMD128-NEXT: local.tee $push12=, $2=, $pop13 11750; SIMD128-NEXT: f32.lt $push9=, $3, $2 11751; SIMD128-NEXT: f32.select $push10=, $pop14, $pop12, $pop9 11752; SIMD128-NEXT: f32x4.replace_lane $push11=, $pop8, 3, $pop10 11753; SIMD128-NEXT: return $pop11 11754; 11755; SIMD128-FAST-LABEL: minnum_intrinsic_v4f32: 11756; SIMD128-FAST: .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128) 11757; SIMD128-FAST-NEXT: # %bb.0: 11758; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0 11759; SIMD128-FAST-NEXT: local.tee $push26=, $3=, $pop27 11760; SIMD128-FAST-NEXT: f32x4.extract_lane $push25=, $1, 0 11761; SIMD128-FAST-NEXT: local.tee $push24=, $2=, $pop25 11762; SIMD128-FAST-NEXT: f32.lt $push3=, $3, $2 11763; SIMD128-FAST-NEXT: f32.select $push4=, $pop26, $pop24, $pop3 11764; SIMD128-FAST-NEXT: f32x4.splat $push5=, $pop4 11765; SIMD128-FAST-NEXT: f32x4.extract_lane $push23=, $0, 1 11766; SIMD128-FAST-NEXT: local.tee $push22=, $3=, $pop23 11767; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $1, 1 11768; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21 11769; SIMD128-FAST-NEXT: f32.lt $push1=, $3, $2 11770; SIMD128-FAST-NEXT: f32.select $push2=, $pop22, $pop20, $pop1 11771; SIMD128-FAST-NEXT: f32x4.replace_lane $push6=, $pop5, 1, $pop2 11772; SIMD128-FAST-NEXT: f32x4.extract_lane $push19=, $0, 2 11773; SIMD128-FAST-NEXT: local.tee $push18=, $3=, $pop19 11774; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $1, 2 11775; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17 11776; SIMD128-FAST-NEXT: f32.lt $push7=, $3, $2 11777; SIMD128-FAST-NEXT: f32.select $push8=, $pop18, $pop16, $pop7 11778; SIMD128-FAST-NEXT: f32x4.replace_lane $push9=, $pop6, 2, $pop8 11779; SIMD128-FAST-NEXT: f32x4.extract_lane $push15=, $0, 3 11780; SIMD128-FAST-NEXT: local.tee $push14=, $3=, $pop15 11781; SIMD128-FAST-NEXT: f32x4.extract_lane $push13=, $1, 3 11782; SIMD128-FAST-NEXT: local.tee $push12=, $2=, $pop13 11783; SIMD128-FAST-NEXT: f32.lt $push10=, $3, $2 11784; SIMD128-FAST-NEXT: f32.select $push11=, $pop14, $pop12, $pop10 11785; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop9, 3, $pop11 11786; SIMD128-FAST-NEXT: return $pop0 11787; 11788; NO-SIMD128-LABEL: minnum_intrinsic_v4f32: 11789; NO-SIMD128: .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11790; NO-SIMD128-NEXT: # %bb.0: 11791; NO-SIMD128-NEXT: f32.lt $push0=, $4, $8 11792; NO-SIMD128-NEXT: f32.select $push1=, $4, $8, $pop0 11793; NO-SIMD128-NEXT: f32.store 12($0), $pop1 11794; NO-SIMD128-NEXT: f32.lt $push2=, $3, $7 11795; NO-SIMD128-NEXT: f32.select $push3=, $3, $7, $pop2 11796; NO-SIMD128-NEXT: f32.store 8($0), $pop3 11797; NO-SIMD128-NEXT: f32.lt $push4=, $2, $6 11798; NO-SIMD128-NEXT: f32.select $push5=, $2, $6, $pop4 11799; NO-SIMD128-NEXT: f32.store 4($0), $pop5 11800; NO-SIMD128-NEXT: f32.lt $push6=, $1, $5 11801; NO-SIMD128-NEXT: f32.select $push7=, $1, $5, $pop6 11802; NO-SIMD128-NEXT: f32.store 0($0), $pop7 11803; NO-SIMD128-NEXT: return 11804; 11805; NO-SIMD128-FAST-LABEL: minnum_intrinsic_v4f32: 11806; NO-SIMD128-FAST: .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11807; NO-SIMD128-FAST-NEXT: # %bb.0: 11808; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $1, $5 11809; NO-SIMD128-FAST-NEXT: f32.select $push1=, $1, $5, $pop0 11810; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 11811; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $2, $6 11812; NO-SIMD128-FAST-NEXT: f32.select $push3=, $2, $6, $pop2 11813; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 11814; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $3, $7 11815; NO-SIMD128-FAST-NEXT: f32.select $push5=, $3, $7, $pop4 11816; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 11817; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $4, $8 11818; NO-SIMD128-FAST-NEXT: f32.select $push7=, $4, $8, $pop6 11819; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 11820; NO-SIMD128-FAST-NEXT: return 11821 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y) 11822 ret <4 x float> %a 11823} 11824 11825define <4 x float> @minnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 11826; SIMD128-LABEL: minnum_nsz_intrinsic_v4f32: 11827; SIMD128: .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128) 11828; SIMD128-NEXT: # %bb.0: 11829; SIMD128-NEXT: f32x4.min $push0=, $0, $1 11830; SIMD128-NEXT: return $pop0 11831; 11832; SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32: 11833; SIMD128-FAST: .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128) 11834; SIMD128-FAST-NEXT: # %bb.0: 11835; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $1 11836; SIMD128-FAST-NEXT: return $pop0 11837; 11838; NO-SIMD128-LABEL: minnum_nsz_intrinsic_v4f32: 11839; NO-SIMD128: .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11840; NO-SIMD128-NEXT: # %bb.0: 11841; NO-SIMD128-NEXT: f32.min $push0=, $4, $8 11842; NO-SIMD128-NEXT: f32.store 12($0), $pop0 11843; NO-SIMD128-NEXT: f32.min $push1=, $3, $7 11844; NO-SIMD128-NEXT: f32.store 8($0), $pop1 11845; NO-SIMD128-NEXT: f32.min $push2=, $2, $6 11846; NO-SIMD128-NEXT: f32.store 4($0), $pop2 11847; NO-SIMD128-NEXT: f32.min $push3=, $1, $5 11848; NO-SIMD128-NEXT: f32.store 0($0), $pop3 11849; NO-SIMD128-NEXT: return 11850; 11851; NO-SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32: 11852; NO-SIMD128-FAST: .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 11853; NO-SIMD128-FAST-NEXT: # %bb.0: 11854; NO-SIMD128-FAST-NEXT: f32.min $push0=, $1, $5 11855; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 11856; NO-SIMD128-FAST-NEXT: f32.min $push1=, $2, $6 11857; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 11858; NO-SIMD128-FAST-NEXT: f32.min $push2=, $3, $7 11859; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 11860; NO-SIMD128-FAST-NEXT: f32.min $push3=, $4, $8 11861; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 11862; NO-SIMD128-FAST-NEXT: return 11863 %a = call nnan nsz <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y) 11864 ret <4 x float> %a 11865} 11866 11867define <4 x float> @fminnumv432_non_zero_intrinsic(<4 x float> %x) { 11868; SIMD128-LABEL: fminnumv432_non_zero_intrinsic: 11869; SIMD128: .functype fminnumv432_non_zero_intrinsic (v128) -> (v128) 11870; SIMD128-NEXT: # %bb.0: 11871; SIMD128-NEXT: v128.const $push0=, -0x1p0, -0x1p0, -0x1p0, -0x1p0 11872; SIMD128-NEXT: f32x4.min $push1=, $0, $pop0 11873; SIMD128-NEXT: return $pop1 11874; 11875; SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic: 11876; SIMD128-FAST: .functype fminnumv432_non_zero_intrinsic (v128) -> (v128) 11877; SIMD128-FAST-NEXT: # %bb.0: 11878; SIMD128-FAST-NEXT: v128.const $push1=, -0x1p0, -0x1p0, -0x1p0, -0x1p0 11879; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $pop1 11880; SIMD128-FAST-NEXT: return $pop0 11881; 11882; NO-SIMD128-LABEL: fminnumv432_non_zero_intrinsic: 11883; NO-SIMD128: .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> () 11884; NO-SIMD128-NEXT: # %bb.0: 11885; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0 11886; NO-SIMD128-NEXT: f32.min $push1=, $4, $pop0 11887; NO-SIMD128-NEXT: f32.store 12($0), $pop1 11888; NO-SIMD128-NEXT: f32.const $push7=, -0x1p0 11889; NO-SIMD128-NEXT: f32.min $push2=, $3, $pop7 11890; NO-SIMD128-NEXT: f32.store 8($0), $pop2 11891; NO-SIMD128-NEXT: f32.const $push6=, -0x1p0 11892; NO-SIMD128-NEXT: f32.min $push3=, $2, $pop6 11893; NO-SIMD128-NEXT: f32.store 4($0), $pop3 11894; NO-SIMD128-NEXT: f32.const $push5=, -0x1p0 11895; NO-SIMD128-NEXT: f32.min $push4=, $1, $pop5 11896; NO-SIMD128-NEXT: f32.store 0($0), $pop4 11897; NO-SIMD128-NEXT: return 11898; 11899; NO-SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic: 11900; NO-SIMD128-FAST: .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> () 11901; NO-SIMD128-FAST-NEXT: # %bb.0: 11902; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0 11903; NO-SIMD128-FAST-NEXT: f32.min $push1=, $1, $pop0 11904; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 11905; NO-SIMD128-FAST-NEXT: f32.const $push7=, -0x1p0 11906; NO-SIMD128-FAST-NEXT: f32.min $push2=, $2, $pop7 11907; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop2 11908; NO-SIMD128-FAST-NEXT: f32.const $push6=, -0x1p0 11909; NO-SIMD128-FAST-NEXT: f32.min $push3=, $3, $pop6 11910; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop3 11911; NO-SIMD128-FAST-NEXT: f32.const $push5=, -0x1p0 11912; NO-SIMD128-FAST-NEXT: f32.min $push4=, $4, $pop5 11913; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop4 11914; NO-SIMD128-FAST-NEXT: return 11915 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float -1.0, float -1.0, float -1.0>) 11916 ret <4 x float> %a 11917} 11918 11919define <4 x float> @fminnumv432_one_zero_intrinsic(<4 x float> %x) { 11920; SIMD128-LABEL: fminnumv432_one_zero_intrinsic: 11921; SIMD128: .functype fminnumv432_one_zero_intrinsic (v128) -> (v128) 11922; SIMD128-NEXT: # %bb.0: 11923; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0 11924; SIMD128-NEXT: local.tee $push26=, $1=, $pop27 11925; SIMD128-NEXT: f32.const $push3=, -0x1p0 11926; SIMD128-NEXT: f32.const $push25=, -0x1p0 11927; SIMD128-NEXT: f32.lt $push4=, $1, $pop25 11928; SIMD128-NEXT: f32.select $push5=, $pop26, $pop3, $pop4 11929; SIMD128-NEXT: f32x4.splat $push6=, $pop5 11930; SIMD128-NEXT: f32x4.extract_lane $push24=, $0, 1 11931; SIMD128-NEXT: local.tee $push23=, $1=, $pop24 11932; SIMD128-NEXT: f32.const $push0=, 0x0p0 11933; SIMD128-NEXT: f32.const $push22=, 0x0p0 11934; SIMD128-NEXT: f32.lt $push1=, $1, $pop22 11935; SIMD128-NEXT: f32.select $push2=, $pop23, $pop0, $pop1 11936; SIMD128-NEXT: f32x4.replace_lane $push7=, $pop6, 1, $pop2 11937; SIMD128-NEXT: f32x4.extract_lane $push21=, $0, 2 11938; SIMD128-NEXT: local.tee $push20=, $1=, $pop21 11939; SIMD128-NEXT: f32.const $push19=, -0x1p0 11940; SIMD128-NEXT: f32.const $push18=, -0x1p0 11941; SIMD128-NEXT: f32.lt $push8=, $1, $pop18 11942; SIMD128-NEXT: f32.select $push9=, $pop20, $pop19, $pop8 11943; SIMD128-NEXT: f32x4.replace_lane $push10=, $pop7, 2, $pop9 11944; SIMD128-NEXT: f32x4.extract_lane $push17=, $0, 3 11945; SIMD128-NEXT: local.tee $push16=, $1=, $pop17 11946; SIMD128-NEXT: f32.const $push15=, -0x1p0 11947; SIMD128-NEXT: f32.const $push14=, -0x1p0 11948; SIMD128-NEXT: f32.lt $push11=, $1, $pop14 11949; SIMD128-NEXT: f32.select $push12=, $pop16, $pop15, $pop11 11950; SIMD128-NEXT: f32x4.replace_lane $push13=, $pop10, 3, $pop12 11951; SIMD128-NEXT: return $pop13 11952; 11953; SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic: 11954; SIMD128-FAST: .functype fminnumv432_one_zero_intrinsic (v128) -> (v128) 11955; SIMD128-FAST-NEXT: # %bb.0: 11956; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0 11957; SIMD128-FAST-NEXT: local.tee $push26=, $1=, $pop27 11958; SIMD128-FAST-NEXT: f32.const $push4=, -0x1p0 11959; SIMD128-FAST-NEXT: f32.const $push25=, -0x1p0 11960; SIMD128-FAST-NEXT: f32.lt $push5=, $1, $pop25 11961; SIMD128-FAST-NEXT: f32.select $push6=, $pop26, $pop4, $pop5 11962; SIMD128-FAST-NEXT: f32x4.splat $push7=, $pop6 11963; SIMD128-FAST-NEXT: f32x4.extract_lane $push24=, $0, 1 11964; SIMD128-FAST-NEXT: local.tee $push23=, $1=, $pop24 11965; SIMD128-FAST-NEXT: f32.const $push1=, 0x0p0 11966; SIMD128-FAST-NEXT: f32.const $push22=, 0x0p0 11967; SIMD128-FAST-NEXT: f32.lt $push2=, $1, $pop22 11968; SIMD128-FAST-NEXT: f32.select $push3=, $pop23, $pop1, $pop2 11969; SIMD128-FAST-NEXT: f32x4.replace_lane $push8=, $pop7, 1, $pop3 11970; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $0, 2 11971; SIMD128-FAST-NEXT: local.tee $push20=, $1=, $pop21 11972; SIMD128-FAST-NEXT: f32.const $push19=, -0x1p0 11973; SIMD128-FAST-NEXT: f32.const $push18=, -0x1p0 11974; SIMD128-FAST-NEXT: f32.lt $push9=, $1, $pop18 11975; SIMD128-FAST-NEXT: f32.select $push10=, $pop20, $pop19, $pop9 11976; SIMD128-FAST-NEXT: f32x4.replace_lane $push11=, $pop8, 2, $pop10 11977; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $0, 3 11978; SIMD128-FAST-NEXT: local.tee $push16=, $1=, $pop17 11979; SIMD128-FAST-NEXT: f32.const $push15=, -0x1p0 11980; SIMD128-FAST-NEXT: f32.const $push14=, -0x1p0 11981; SIMD128-FAST-NEXT: f32.lt $push12=, $1, $pop14 11982; SIMD128-FAST-NEXT: f32.select $push13=, $pop16, $pop15, $pop12 11983; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop11, 3, $pop13 11984; SIMD128-FAST-NEXT: return $pop0 11985; 11986; NO-SIMD128-LABEL: fminnumv432_one_zero_intrinsic: 11987; NO-SIMD128: .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> () 11988; NO-SIMD128-NEXT: # %bb.0: 11989; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0 11990; NO-SIMD128-NEXT: f32.min $push1=, $4, $pop0 11991; NO-SIMD128-NEXT: f32.store 12($0), $pop1 11992; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0 11993; NO-SIMD128-NEXT: f32.min $push2=, $3, $pop9 11994; NO-SIMD128-NEXT: f32.store 8($0), $pop2 11995; NO-SIMD128-NEXT: f32.const $push3=, 0x0p0 11996; NO-SIMD128-NEXT: f32.const $push8=, 0x0p0 11997; NO-SIMD128-NEXT: f32.lt $push4=, $2, $pop8 11998; NO-SIMD128-NEXT: f32.select $push5=, $2, $pop3, $pop4 11999; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12000; NO-SIMD128-NEXT: f32.const $push7=, -0x1p0 12001; NO-SIMD128-NEXT: f32.min $push6=, $1, $pop7 12002; NO-SIMD128-NEXT: f32.store 0($0), $pop6 12003; NO-SIMD128-NEXT: return 12004; 12005; NO-SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic: 12006; NO-SIMD128-FAST: .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> () 12007; NO-SIMD128-FAST-NEXT: # %bb.0: 12008; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0 12009; NO-SIMD128-FAST-NEXT: f32.min $push1=, $1, $pop0 12010; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12011; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0 12012; NO-SIMD128-FAST-NEXT: f32.min $push2=, $3, $pop9 12013; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 12014; NO-SIMD128-FAST-NEXT: f32.const $push3=, 0x0p0 12015; NO-SIMD128-FAST-NEXT: f32.const $push8=, 0x0p0 12016; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $2, $pop8 12017; NO-SIMD128-FAST-NEXT: f32.select $push5=, $2, $pop3, $pop4 12018; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop5 12019; NO-SIMD128-FAST-NEXT: f32.const $push7=, -0x1p0 12020; NO-SIMD128-FAST-NEXT: f32.min $push6=, $4, $pop7 12021; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop6 12022; NO-SIMD128-FAST-NEXT: return 12023 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 0.0, float -1.0, float -1.0>) 12024 ret <4 x float> %a 12025} 12026 12027declare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>) 12028define <4 x float> @max_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 12029; SIMD128-LABEL: max_intrinsic_v4f32: 12030; SIMD128: .functype max_intrinsic_v4f32 (v128, v128) -> (v128) 12031; SIMD128-NEXT: # %bb.0: 12032; SIMD128-NEXT: f32x4.max $push0=, $0, $1 12033; SIMD128-NEXT: return $pop0 12034; 12035; SIMD128-FAST-LABEL: max_intrinsic_v4f32: 12036; SIMD128-FAST: .functype max_intrinsic_v4f32 (v128, v128) -> (v128) 12037; SIMD128-FAST-NEXT: # %bb.0: 12038; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $1 12039; SIMD128-FAST-NEXT: return $pop0 12040; 12041; NO-SIMD128-LABEL: max_intrinsic_v4f32: 12042; NO-SIMD128: .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12043; NO-SIMD128-NEXT: # %bb.0: 12044; NO-SIMD128-NEXT: f32.max $push0=, $4, $8 12045; NO-SIMD128-NEXT: f32.store 12($0), $pop0 12046; NO-SIMD128-NEXT: f32.max $push1=, $3, $7 12047; NO-SIMD128-NEXT: f32.store 8($0), $pop1 12048; NO-SIMD128-NEXT: f32.max $push2=, $2, $6 12049; NO-SIMD128-NEXT: f32.store 4($0), $pop2 12050; NO-SIMD128-NEXT: f32.max $push3=, $1, $5 12051; NO-SIMD128-NEXT: f32.store 0($0), $pop3 12052; NO-SIMD128-NEXT: return 12053; 12054; NO-SIMD128-FAST-LABEL: max_intrinsic_v4f32: 12055; NO-SIMD128-FAST: .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12056; NO-SIMD128-FAST-NEXT: # %bb.0: 12057; NO-SIMD128-FAST-NEXT: f32.max $push0=, $1, $5 12058; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 12059; NO-SIMD128-FAST-NEXT: f32.max $push1=, $2, $6 12060; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 12061; NO-SIMD128-FAST-NEXT: f32.max $push2=, $3, $7 12062; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 12063; NO-SIMD128-FAST-NEXT: f32.max $push3=, $4, $8 12064; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 12065; NO-SIMD128-FAST-NEXT: return 12066 %a = call <4 x float> @llvm.maximum.v4f32(<4 x float> %x, <4 x float> %y) 12067 ret <4 x float> %a 12068} 12069 12070declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>) 12071define <4 x float> @maxnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 12072; SIMD128-LABEL: maxnum_intrinsic_v4f32: 12073; SIMD128: .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128) 12074; SIMD128-NEXT: # %bb.0: 12075; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0 12076; SIMD128-NEXT: local.tee $push26=, $3=, $pop27 12077; SIMD128-NEXT: f32x4.extract_lane $push25=, $1, 0 12078; SIMD128-NEXT: local.tee $push24=, $2=, $pop25 12079; SIMD128-NEXT: f32.gt $push2=, $3, $2 12080; SIMD128-NEXT: f32.select $push3=, $pop26, $pop24, $pop2 12081; SIMD128-NEXT: f32x4.splat $push4=, $pop3 12082; SIMD128-NEXT: f32x4.extract_lane $push23=, $0, 1 12083; SIMD128-NEXT: local.tee $push22=, $3=, $pop23 12084; SIMD128-NEXT: f32x4.extract_lane $push21=, $1, 1 12085; SIMD128-NEXT: local.tee $push20=, $2=, $pop21 12086; SIMD128-NEXT: f32.gt $push0=, $3, $2 12087; SIMD128-NEXT: f32.select $push1=, $pop22, $pop20, $pop0 12088; SIMD128-NEXT: f32x4.replace_lane $push5=, $pop4, 1, $pop1 12089; SIMD128-NEXT: f32x4.extract_lane $push19=, $0, 2 12090; SIMD128-NEXT: local.tee $push18=, $3=, $pop19 12091; SIMD128-NEXT: f32x4.extract_lane $push17=, $1, 2 12092; SIMD128-NEXT: local.tee $push16=, $2=, $pop17 12093; SIMD128-NEXT: f32.gt $push6=, $3, $2 12094; SIMD128-NEXT: f32.select $push7=, $pop18, $pop16, $pop6 12095; SIMD128-NEXT: f32x4.replace_lane $push8=, $pop5, 2, $pop7 12096; SIMD128-NEXT: f32x4.extract_lane $push15=, $0, 3 12097; SIMD128-NEXT: local.tee $push14=, $3=, $pop15 12098; SIMD128-NEXT: f32x4.extract_lane $push13=, $1, 3 12099; SIMD128-NEXT: local.tee $push12=, $2=, $pop13 12100; SIMD128-NEXT: f32.gt $push9=, $3, $2 12101; SIMD128-NEXT: f32.select $push10=, $pop14, $pop12, $pop9 12102; SIMD128-NEXT: f32x4.replace_lane $push11=, $pop8, 3, $pop10 12103; SIMD128-NEXT: return $pop11 12104; 12105; SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32: 12106; SIMD128-FAST: .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128) 12107; SIMD128-FAST-NEXT: # %bb.0: 12108; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0 12109; SIMD128-FAST-NEXT: local.tee $push26=, $3=, $pop27 12110; SIMD128-FAST-NEXT: f32x4.extract_lane $push25=, $1, 0 12111; SIMD128-FAST-NEXT: local.tee $push24=, $2=, $pop25 12112; SIMD128-FAST-NEXT: f32.gt $push3=, $3, $2 12113; SIMD128-FAST-NEXT: f32.select $push4=, $pop26, $pop24, $pop3 12114; SIMD128-FAST-NEXT: f32x4.splat $push5=, $pop4 12115; SIMD128-FAST-NEXT: f32x4.extract_lane $push23=, $0, 1 12116; SIMD128-FAST-NEXT: local.tee $push22=, $3=, $pop23 12117; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $1, 1 12118; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21 12119; SIMD128-FAST-NEXT: f32.gt $push1=, $3, $2 12120; SIMD128-FAST-NEXT: f32.select $push2=, $pop22, $pop20, $pop1 12121; SIMD128-FAST-NEXT: f32x4.replace_lane $push6=, $pop5, 1, $pop2 12122; SIMD128-FAST-NEXT: f32x4.extract_lane $push19=, $0, 2 12123; SIMD128-FAST-NEXT: local.tee $push18=, $3=, $pop19 12124; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $1, 2 12125; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17 12126; SIMD128-FAST-NEXT: f32.gt $push7=, $3, $2 12127; SIMD128-FAST-NEXT: f32.select $push8=, $pop18, $pop16, $pop7 12128; SIMD128-FAST-NEXT: f32x4.replace_lane $push9=, $pop6, 2, $pop8 12129; SIMD128-FAST-NEXT: f32x4.extract_lane $push15=, $0, 3 12130; SIMD128-FAST-NEXT: local.tee $push14=, $3=, $pop15 12131; SIMD128-FAST-NEXT: f32x4.extract_lane $push13=, $1, 3 12132; SIMD128-FAST-NEXT: local.tee $push12=, $2=, $pop13 12133; SIMD128-FAST-NEXT: f32.gt $push10=, $3, $2 12134; SIMD128-FAST-NEXT: f32.select $push11=, $pop14, $pop12, $pop10 12135; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop9, 3, $pop11 12136; SIMD128-FAST-NEXT: return $pop0 12137; 12138; NO-SIMD128-LABEL: maxnum_intrinsic_v4f32: 12139; NO-SIMD128: .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12140; NO-SIMD128-NEXT: # %bb.0: 12141; NO-SIMD128-NEXT: f32.gt $push0=, $4, $8 12142; NO-SIMD128-NEXT: f32.select $push1=, $4, $8, $pop0 12143; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12144; NO-SIMD128-NEXT: f32.gt $push2=, $3, $7 12145; NO-SIMD128-NEXT: f32.select $push3=, $3, $7, $pop2 12146; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12147; NO-SIMD128-NEXT: f32.gt $push4=, $2, $6 12148; NO-SIMD128-NEXT: f32.select $push5=, $2, $6, $pop4 12149; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12150; NO-SIMD128-NEXT: f32.gt $push6=, $1, $5 12151; NO-SIMD128-NEXT: f32.select $push7=, $1, $5, $pop6 12152; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12153; NO-SIMD128-NEXT: return 12154; 12155; NO-SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32: 12156; NO-SIMD128-FAST: .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12157; NO-SIMD128-FAST-NEXT: # %bb.0: 12158; NO-SIMD128-FAST-NEXT: f32.gt $push0=, $1, $5 12159; NO-SIMD128-FAST-NEXT: f32.select $push1=, $1, $5, $pop0 12160; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12161; NO-SIMD128-FAST-NEXT: f32.gt $push2=, $2, $6 12162; NO-SIMD128-FAST-NEXT: f32.select $push3=, $2, $6, $pop2 12163; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12164; NO-SIMD128-FAST-NEXT: f32.gt $push4=, $3, $7 12165; NO-SIMD128-FAST-NEXT: f32.select $push5=, $3, $7, $pop4 12166; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12167; NO-SIMD128-FAST-NEXT: f32.gt $push6=, $4, $8 12168; NO-SIMD128-FAST-NEXT: f32.select $push7=, $4, $8, $pop6 12169; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12170; NO-SIMD128-FAST-NEXT: return 12171 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y) 12172 ret <4 x float> %a 12173} 12174 12175define <4 x float> @maxnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 12176; SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32: 12177; SIMD128: .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128) 12178; SIMD128-NEXT: # %bb.0: 12179; SIMD128-NEXT: f32x4.max $push0=, $0, $1 12180; SIMD128-NEXT: return $pop0 12181; 12182; SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32: 12183; SIMD128-FAST: .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128) 12184; SIMD128-FAST-NEXT: # %bb.0: 12185; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $1 12186; SIMD128-FAST-NEXT: return $pop0 12187; 12188; NO-SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32: 12189; NO-SIMD128: .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12190; NO-SIMD128-NEXT: # %bb.0: 12191; NO-SIMD128-NEXT: f32.max $push0=, $4, $8 12192; NO-SIMD128-NEXT: f32.store 12($0), $pop0 12193; NO-SIMD128-NEXT: f32.max $push1=, $3, $7 12194; NO-SIMD128-NEXT: f32.store 8($0), $pop1 12195; NO-SIMD128-NEXT: f32.max $push2=, $2, $6 12196; NO-SIMD128-NEXT: f32.store 4($0), $pop2 12197; NO-SIMD128-NEXT: f32.max $push3=, $1, $5 12198; NO-SIMD128-NEXT: f32.store 0($0), $pop3 12199; NO-SIMD128-NEXT: return 12200; 12201; NO-SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32: 12202; NO-SIMD128-FAST: .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12203; NO-SIMD128-FAST-NEXT: # %bb.0: 12204; NO-SIMD128-FAST-NEXT: f32.max $push0=, $1, $5 12205; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 12206; NO-SIMD128-FAST-NEXT: f32.max $push1=, $2, $6 12207; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 12208; NO-SIMD128-FAST-NEXT: f32.max $push2=, $3, $7 12209; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 12210; NO-SIMD128-FAST-NEXT: f32.max $push3=, $4, $8 12211; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 12212; NO-SIMD128-FAST-NEXT: return 12213 %a = call nnan nsz <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y) 12214 ret <4 x float> %a 12215} 12216 12217define <4 x float> @maxnum_one_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 12218; SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32: 12219; SIMD128: .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128) 12220; SIMD128-NEXT: # %bb.0: 12221; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0 12222; SIMD128-NEXT: local.tee $push26=, $2=, $pop27 12223; SIMD128-NEXT: f32.const $push3=, -0x1p0 12224; SIMD128-NEXT: f32.const $push25=, -0x1p0 12225; SIMD128-NEXT: f32.gt $push4=, $2, $pop25 12226; SIMD128-NEXT: f32.select $push5=, $pop26, $pop3, $pop4 12227; SIMD128-NEXT: f32x4.splat $push6=, $pop5 12228; SIMD128-NEXT: f32x4.extract_lane $push24=, $0, 1 12229; SIMD128-NEXT: local.tee $push23=, $2=, $pop24 12230; SIMD128-NEXT: f32.const $push0=, 0x0p0 12231; SIMD128-NEXT: f32.const $push22=, 0x0p0 12232; SIMD128-NEXT: f32.gt $push1=, $2, $pop22 12233; SIMD128-NEXT: f32.select $push2=, $pop23, $pop0, $pop1 12234; SIMD128-NEXT: f32x4.replace_lane $push7=, $pop6, 1, $pop2 12235; SIMD128-NEXT: f32x4.extract_lane $push21=, $0, 2 12236; SIMD128-NEXT: local.tee $push20=, $2=, $pop21 12237; SIMD128-NEXT: f32.const $push19=, -0x1p0 12238; SIMD128-NEXT: f32.const $push18=, -0x1p0 12239; SIMD128-NEXT: f32.gt $push8=, $2, $pop18 12240; SIMD128-NEXT: f32.select $push9=, $pop20, $pop19, $pop8 12241; SIMD128-NEXT: f32x4.replace_lane $push10=, $pop7, 2, $pop9 12242; SIMD128-NEXT: f32x4.extract_lane $push17=, $0, 3 12243; SIMD128-NEXT: local.tee $push16=, $2=, $pop17 12244; SIMD128-NEXT: f32.const $push15=, -0x1p0 12245; SIMD128-NEXT: f32.const $push14=, -0x1p0 12246; SIMD128-NEXT: f32.gt $push11=, $2, $pop14 12247; SIMD128-NEXT: f32.select $push12=, $pop16, $pop15, $pop11 12248; SIMD128-NEXT: f32x4.replace_lane $push13=, $pop10, 3, $pop12 12249; SIMD128-NEXT: return $pop13 12250; 12251; SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32: 12252; SIMD128-FAST: .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128) 12253; SIMD128-FAST-NEXT: # %bb.0: 12254; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0 12255; SIMD128-FAST-NEXT: local.tee $push26=, $2=, $pop27 12256; SIMD128-FAST-NEXT: f32.const $push4=, -0x1p0 12257; SIMD128-FAST-NEXT: f32.const $push25=, -0x1p0 12258; SIMD128-FAST-NEXT: f32.gt $push5=, $2, $pop25 12259; SIMD128-FAST-NEXT: f32.select $push6=, $pop26, $pop4, $pop5 12260; SIMD128-FAST-NEXT: f32x4.splat $push7=, $pop6 12261; SIMD128-FAST-NEXT: f32x4.extract_lane $push24=, $0, 1 12262; SIMD128-FAST-NEXT: local.tee $push23=, $2=, $pop24 12263; SIMD128-FAST-NEXT: f32.const $push1=, 0x0p0 12264; SIMD128-FAST-NEXT: f32.const $push22=, 0x0p0 12265; SIMD128-FAST-NEXT: f32.gt $push2=, $2, $pop22 12266; SIMD128-FAST-NEXT: f32.select $push3=, $pop23, $pop1, $pop2 12267; SIMD128-FAST-NEXT: f32x4.replace_lane $push8=, $pop7, 1, $pop3 12268; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $0, 2 12269; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21 12270; SIMD128-FAST-NEXT: f32.const $push19=, -0x1p0 12271; SIMD128-FAST-NEXT: f32.const $push18=, -0x1p0 12272; SIMD128-FAST-NEXT: f32.gt $push9=, $2, $pop18 12273; SIMD128-FAST-NEXT: f32.select $push10=, $pop20, $pop19, $pop9 12274; SIMD128-FAST-NEXT: f32x4.replace_lane $push11=, $pop8, 2, $pop10 12275; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $0, 3 12276; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17 12277; SIMD128-FAST-NEXT: f32.const $push15=, -0x1p0 12278; SIMD128-FAST-NEXT: f32.const $push14=, -0x1p0 12279; SIMD128-FAST-NEXT: f32.gt $push12=, $2, $pop14 12280; SIMD128-FAST-NEXT: f32.select $push13=, $pop16, $pop15, $pop12 12281; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop11, 3, $pop13 12282; SIMD128-FAST-NEXT: return $pop0 12283; 12284; NO-SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32: 12285; NO-SIMD128: .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12286; NO-SIMD128-NEXT: # %bb.0: 12287; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0 12288; NO-SIMD128-NEXT: f32.max $push1=, $4, $pop0 12289; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12290; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0 12291; NO-SIMD128-NEXT: f32.max $push2=, $3, $pop9 12292; NO-SIMD128-NEXT: f32.store 8($0), $pop2 12293; NO-SIMD128-NEXT: f32.const $push3=, 0x0p0 12294; NO-SIMD128-NEXT: f32.const $push8=, 0x0p0 12295; NO-SIMD128-NEXT: f32.gt $push4=, $2, $pop8 12296; NO-SIMD128-NEXT: f32.select $push5=, $2, $pop3, $pop4 12297; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12298; NO-SIMD128-NEXT: f32.const $push7=, -0x1p0 12299; NO-SIMD128-NEXT: f32.max $push6=, $1, $pop7 12300; NO-SIMD128-NEXT: f32.store 0($0), $pop6 12301; NO-SIMD128-NEXT: return 12302; 12303; NO-SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32: 12304; NO-SIMD128-FAST: .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12305; NO-SIMD128-FAST-NEXT: # %bb.0: 12306; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0 12307; NO-SIMD128-FAST-NEXT: f32.max $push1=, $1, $pop0 12308; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12309; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0 12310; NO-SIMD128-FAST-NEXT: f32.max $push2=, $3, $pop9 12311; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 12312; NO-SIMD128-FAST-NEXT: f32.const $push3=, 0x0p0 12313; NO-SIMD128-FAST-NEXT: f32.const $push8=, 0x0p0 12314; NO-SIMD128-FAST-NEXT: f32.gt $push4=, $2, $pop8 12315; NO-SIMD128-FAST-NEXT: f32.select $push5=, $2, $pop3, $pop4 12316; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop5 12317; NO-SIMD128-FAST-NEXT: f32.const $push7=, -0x1p0 12318; NO-SIMD128-FAST-NEXT: f32.max $push6=, $4, $pop7 12319; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop6 12320; NO-SIMD128-FAST-NEXT: return 12321 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 0.0, float -1.0, float -1.0>) 12322 ret <4 x float> %a 12323} 12324 12325define <4 x float> @maxnum_non_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) { 12326; SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32: 12327; SIMD128: .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128) 12328; SIMD128-NEXT: # %bb.0: 12329; SIMD128-NEXT: v128.const $push0=, -0x1p0, 0x1p0, -0x1p0, -0x1p0 12330; SIMD128-NEXT: f32x4.max $push1=, $0, $pop0 12331; SIMD128-NEXT: return $pop1 12332; 12333; SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32: 12334; SIMD128-FAST: .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128) 12335; SIMD128-FAST-NEXT: # %bb.0: 12336; SIMD128-FAST-NEXT: v128.const $push1=, -0x1p0, 0x1p0, -0x1p0, -0x1p0 12337; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $pop1 12338; SIMD128-FAST-NEXT: return $pop0 12339; 12340; NO-SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32: 12341; NO-SIMD128: .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12342; NO-SIMD128-NEXT: # %bb.0: 12343; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0 12344; NO-SIMD128-NEXT: f32.max $push1=, $4, $pop0 12345; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12346; NO-SIMD128-NEXT: f32.const $push7=, -0x1p0 12347; NO-SIMD128-NEXT: f32.max $push2=, $3, $pop7 12348; NO-SIMD128-NEXT: f32.store 8($0), $pop2 12349; NO-SIMD128-NEXT: f32.const $push3=, 0x1p0 12350; NO-SIMD128-NEXT: f32.max $push4=, $2, $pop3 12351; NO-SIMD128-NEXT: f32.store 4($0), $pop4 12352; NO-SIMD128-NEXT: f32.const $push6=, -0x1p0 12353; NO-SIMD128-NEXT: f32.max $push5=, $1, $pop6 12354; NO-SIMD128-NEXT: f32.store 0($0), $pop5 12355; NO-SIMD128-NEXT: return 12356; 12357; NO-SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32: 12358; NO-SIMD128-FAST: .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12359; NO-SIMD128-FAST-NEXT: # %bb.0: 12360; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0 12361; NO-SIMD128-FAST-NEXT: f32.max $push1=, $1, $pop0 12362; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12363; NO-SIMD128-FAST-NEXT: f32.const $push2=, 0x1p0 12364; NO-SIMD128-FAST-NEXT: f32.max $push3=, $2, $pop2 12365; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12366; NO-SIMD128-FAST-NEXT: f32.const $push7=, -0x1p0 12367; NO-SIMD128-FAST-NEXT: f32.max $push4=, $3, $pop7 12368; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop4 12369; NO-SIMD128-FAST-NEXT: f32.const $push6=, -0x1p0 12370; NO-SIMD128-FAST-NEXT: f32.max $push5=, $4, $pop6 12371; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop5 12372; NO-SIMD128-FAST-NEXT: return 12373 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 1.0, float -1.0, float -1.0>) 12374 ret <4 x float> %a 12375} 12376 12377define <4 x float> @min_const_intrinsic_v4f32() { 12378; SIMD128-LABEL: min_const_intrinsic_v4f32: 12379; SIMD128: .functype min_const_intrinsic_v4f32 () -> (v128) 12380; SIMD128-NEXT: # %bb.0: 12381; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 12382; SIMD128-NEXT: return $pop0 12383; 12384; SIMD128-FAST-LABEL: min_const_intrinsic_v4f32: 12385; SIMD128-FAST: .functype min_const_intrinsic_v4f32 () -> (v128) 12386; SIMD128-FAST-NEXT: # %bb.0: 12387; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 12388; SIMD128-FAST-NEXT: return $pop0 12389; 12390; NO-SIMD128-LABEL: min_const_intrinsic_v4f32: 12391; NO-SIMD128: .functype min_const_intrinsic_v4f32 (i32) -> () 12392; NO-SIMD128-NEXT: # %bb.0: 12393; NO-SIMD128-NEXT: i64.const $push0=, 4656722015785320448 12394; NO-SIMD128-NEXT: i64.store 8($0), $pop0 12395; NO-SIMD128-NEXT: i64.const $push1=, 4656722015785320448 12396; NO-SIMD128-NEXT: i64.store 0($0), $pop1 12397; NO-SIMD128-NEXT: return 12398; 12399; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v4f32: 12400; NO-SIMD128-FAST: .functype min_const_intrinsic_v4f32 (i32) -> () 12401; NO-SIMD128-FAST-NEXT: # %bb.0: 12402; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4656722015785320448 12403; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 12404; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4656722015785320448 12405; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 12406; NO-SIMD128-FAST-NEXT: return 12407 %a = call <4 x float> @llvm.minimum.v4f32( 12408 <4 x float> <float 42., float 42., float 42., float 42.>, 12409 <4 x float> <float 5., float 5., float 5., float 5.> 12410 ) 12411 ret <4 x float> %a 12412} 12413 12414define <4 x float> @max_const_intrinsic_v4f32() { 12415; SIMD128-LABEL: max_const_intrinsic_v4f32: 12416; SIMD128: .functype max_const_intrinsic_v4f32 () -> (v128) 12417; SIMD128-NEXT: # %bb.0: 12418; SIMD128-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5 12419; SIMD128-NEXT: return $pop0 12420; 12421; SIMD128-FAST-LABEL: max_const_intrinsic_v4f32: 12422; SIMD128-FAST: .functype max_const_intrinsic_v4f32 () -> (v128) 12423; SIMD128-FAST-NEXT: # %bb.0: 12424; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5 12425; SIMD128-FAST-NEXT: return $pop0 12426; 12427; NO-SIMD128-LABEL: max_const_intrinsic_v4f32: 12428; NO-SIMD128: .functype max_const_intrinsic_v4f32 (i32) -> () 12429; NO-SIMD128-NEXT: # %bb.0: 12430; NO-SIMD128-NEXT: i64.const $push0=, 4767060206681587712 12431; NO-SIMD128-NEXT: i64.store 8($0), $pop0 12432; NO-SIMD128-NEXT: i64.const $push1=, 4767060206681587712 12433; NO-SIMD128-NEXT: i64.store 0($0), $pop1 12434; NO-SIMD128-NEXT: return 12435; 12436; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v4f32: 12437; NO-SIMD128-FAST: .functype max_const_intrinsic_v4f32 (i32) -> () 12438; NO-SIMD128-FAST-NEXT: # %bb.0: 12439; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4767060206681587712 12440; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 12441; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4767060206681587712 12442; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 12443; NO-SIMD128-FAST-NEXT: return 12444 %a = call <4 x float> @llvm.maximum.v4f32( 12445 <4 x float> <float 42., float 42., float 42., float 42.>, 12446 <4 x float> <float 5., float 5., float 5., float 5.> 12447 ) 12448 ret <4 x float> %a 12449} 12450 12451define <4 x float> @pmin_v4f32(<4 x float> %x, <4 x float> %y) { 12452; SIMD128-LABEL: pmin_v4f32: 12453; SIMD128: .functype pmin_v4f32 (v128, v128) -> (v128) 12454; SIMD128-NEXT: # %bb.0: 12455; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1 12456; SIMD128-NEXT: return $pop0 12457; 12458; SIMD128-FAST-LABEL: pmin_v4f32: 12459; SIMD128-FAST: .functype pmin_v4f32 (v128, v128) -> (v128) 12460; SIMD128-FAST-NEXT: # %bb.0: 12461; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1 12462; SIMD128-FAST-NEXT: return $pop0 12463; 12464; NO-SIMD128-LABEL: pmin_v4f32: 12465; NO-SIMD128: .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12466; NO-SIMD128-NEXT: # %bb.0: 12467; NO-SIMD128-NEXT: f32.lt $push0=, $8, $4 12468; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12469; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12470; NO-SIMD128-NEXT: f32.lt $push2=, $7, $3 12471; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12472; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12473; NO-SIMD128-NEXT: f32.lt $push4=, $6, $2 12474; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12475; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12476; NO-SIMD128-NEXT: f32.lt $push6=, $5, $1 12477; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12478; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12479; NO-SIMD128-NEXT: return 12480; 12481; NO-SIMD128-FAST-LABEL: pmin_v4f32: 12482; NO-SIMD128-FAST: .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12483; NO-SIMD128-FAST-NEXT: # %bb.0: 12484; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $5, $1 12485; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12486; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12487; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $6, $2 12488; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12489; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12490; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $7, $3 12491; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12492; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12493; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $8, $4 12494; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12495; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12496; NO-SIMD128-FAST-NEXT: return 12497 %c = fcmp olt <4 x float> %y, %x 12498 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12499 ret <4 x float> %a 12500} 12501 12502define <4 x float> @pmin_v4f32_fast_olt(<4 x float> %x, <4 x float> %y) { 12503; SIMD128-LABEL: pmin_v4f32_fast_olt: 12504; SIMD128: .functype pmin_v4f32_fast_olt (v128, v128) -> (v128) 12505; SIMD128-NEXT: # %bb.0: 12506; SIMD128-NEXT: f32x4.pmin $push0=, $1, $0 12507; SIMD128-NEXT: return $pop0 12508; 12509; SIMD128-FAST-LABEL: pmin_v4f32_fast_olt: 12510; SIMD128-FAST: .functype pmin_v4f32_fast_olt (v128, v128) -> (v128) 12511; SIMD128-FAST-NEXT: # %bb.0: 12512; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $1, $0 12513; SIMD128-FAST-NEXT: return $pop0 12514; 12515; NO-SIMD128-LABEL: pmin_v4f32_fast_olt: 12516; NO-SIMD128: .functype pmin_v4f32_fast_olt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12517; NO-SIMD128-NEXT: # %bb.0: 12518; NO-SIMD128-NEXT: f32.lt $push0=, $8, $4 12519; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12520; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12521; NO-SIMD128-NEXT: f32.lt $push2=, $7, $3 12522; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12523; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12524; NO-SIMD128-NEXT: f32.lt $push4=, $6, $2 12525; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12526; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12527; NO-SIMD128-NEXT: f32.lt $push6=, $5, $1 12528; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12529; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12530; NO-SIMD128-NEXT: return 12531; 12532; NO-SIMD128-FAST-LABEL: pmin_v4f32_fast_olt: 12533; NO-SIMD128-FAST: .functype pmin_v4f32_fast_olt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12534; NO-SIMD128-FAST-NEXT: # %bb.0: 12535; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $5, $1 12536; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12537; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12538; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $6, $2 12539; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12540; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12541; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $7, $3 12542; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12543; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12544; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $8, $4 12545; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12546; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12547; NO-SIMD128-FAST-NEXT: return 12548 %c = fcmp fast olt <4 x float> %y, %x 12549 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12550 ret <4 x float> %a 12551} 12552 12553define <4 x float> @pmin_v4f32_fast_ogt(<4 x float> %x, <4 x float> %y) { 12554; SIMD128-LABEL: pmin_v4f32_fast_ogt: 12555; SIMD128: .functype pmin_v4f32_fast_ogt (v128, v128) -> (v128) 12556; SIMD128-NEXT: # %bb.0: 12557; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1 12558; SIMD128-NEXT: return $pop0 12559; 12560; SIMD128-FAST-LABEL: pmin_v4f32_fast_ogt: 12561; SIMD128-FAST: .functype pmin_v4f32_fast_ogt (v128, v128) -> (v128) 12562; SIMD128-FAST-NEXT: # %bb.0: 12563; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1 12564; SIMD128-FAST-NEXT: return $pop0 12565; 12566; NO-SIMD128-LABEL: pmin_v4f32_fast_ogt: 12567; NO-SIMD128: .functype pmin_v4f32_fast_ogt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12568; NO-SIMD128-NEXT: # %bb.0: 12569; NO-SIMD128-NEXT: f32.gt $push0=, $4, $8 12570; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12571; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12572; NO-SIMD128-NEXT: f32.gt $push2=, $3, $7 12573; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12574; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12575; NO-SIMD128-NEXT: f32.gt $push4=, $2, $6 12576; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12577; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12578; NO-SIMD128-NEXT: f32.gt $push6=, $1, $5 12579; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12580; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12581; NO-SIMD128-NEXT: return 12582; 12583; NO-SIMD128-FAST-LABEL: pmin_v4f32_fast_ogt: 12584; NO-SIMD128-FAST: .functype pmin_v4f32_fast_ogt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12585; NO-SIMD128-FAST-NEXT: # %bb.0: 12586; NO-SIMD128-FAST-NEXT: f32.gt $push0=, $1, $5 12587; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12588; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12589; NO-SIMD128-FAST-NEXT: f32.gt $push2=, $2, $6 12590; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12591; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12592; NO-SIMD128-FAST-NEXT: f32.gt $push4=, $3, $7 12593; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12594; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12595; NO-SIMD128-FAST-NEXT: f32.gt $push6=, $4, $8 12596; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12597; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12598; NO-SIMD128-FAST-NEXT: return 12599 %c = fcmp fast ogt <4 x float> %x, %y 12600 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12601 ret <4 x float> %a 12602} 12603 12604define <4 x float> @pmin_v4f32_fast_ole(<4 x float> %x, <4 x float> %y) { 12605; SIMD128-LABEL: pmin_v4f32_fast_ole: 12606; SIMD128: .functype pmin_v4f32_fast_ole (v128, v128) -> (v128) 12607; SIMD128-NEXT: # %bb.0: 12608; SIMD128-NEXT: f32x4.pmin $push0=, $1, $0 12609; SIMD128-NEXT: return $pop0 12610; 12611; SIMD128-FAST-LABEL: pmin_v4f32_fast_ole: 12612; SIMD128-FAST: .functype pmin_v4f32_fast_ole (v128, v128) -> (v128) 12613; SIMD128-FAST-NEXT: # %bb.0: 12614; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $1, $0 12615; SIMD128-FAST-NEXT: return $pop0 12616; 12617; NO-SIMD128-LABEL: pmin_v4f32_fast_ole: 12618; NO-SIMD128: .functype pmin_v4f32_fast_ole (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12619; NO-SIMD128-NEXT: # %bb.0: 12620; NO-SIMD128-NEXT: f32.le $push0=, $8, $4 12621; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12622; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12623; NO-SIMD128-NEXT: f32.le $push2=, $7, $3 12624; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12625; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12626; NO-SIMD128-NEXT: f32.le $push4=, $6, $2 12627; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12628; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12629; NO-SIMD128-NEXT: f32.le $push6=, $5, $1 12630; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12631; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12632; NO-SIMD128-NEXT: return 12633; 12634; NO-SIMD128-FAST-LABEL: pmin_v4f32_fast_ole: 12635; NO-SIMD128-FAST: .functype pmin_v4f32_fast_ole (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12636; NO-SIMD128-FAST-NEXT: # %bb.0: 12637; NO-SIMD128-FAST-NEXT: f32.le $push0=, $5, $1 12638; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12639; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12640; NO-SIMD128-FAST-NEXT: f32.le $push2=, $6, $2 12641; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12642; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12643; NO-SIMD128-FAST-NEXT: f32.le $push4=, $7, $3 12644; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12645; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12646; NO-SIMD128-FAST-NEXT: f32.le $push6=, $8, $4 12647; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12648; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12649; NO-SIMD128-FAST-NEXT: return 12650 %c = fcmp fast ole <4 x float> %y, %x 12651 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12652 ret <4 x float> %a 12653} 12654 12655define <4 x float> @pmin_v4f32_fast_oge(<4 x float> %x, <4 x float> %y) { 12656; SIMD128-LABEL: pmin_v4f32_fast_oge: 12657; SIMD128: .functype pmin_v4f32_fast_oge (v128, v128) -> (v128) 12658; SIMD128-NEXT: # %bb.0: 12659; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1 12660; SIMD128-NEXT: return $pop0 12661; 12662; SIMD128-FAST-LABEL: pmin_v4f32_fast_oge: 12663; SIMD128-FAST: .functype pmin_v4f32_fast_oge (v128, v128) -> (v128) 12664; SIMD128-FAST-NEXT: # %bb.0: 12665; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1 12666; SIMD128-FAST-NEXT: return $pop0 12667; 12668; NO-SIMD128-LABEL: pmin_v4f32_fast_oge: 12669; NO-SIMD128: .functype pmin_v4f32_fast_oge (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12670; NO-SIMD128-NEXT: # %bb.0: 12671; NO-SIMD128-NEXT: f32.ge $push0=, $4, $8 12672; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12673; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12674; NO-SIMD128-NEXT: f32.ge $push2=, $3, $7 12675; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12676; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12677; NO-SIMD128-NEXT: f32.ge $push4=, $2, $6 12678; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12679; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12680; NO-SIMD128-NEXT: f32.ge $push6=, $1, $5 12681; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12682; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12683; NO-SIMD128-NEXT: return 12684; 12685; NO-SIMD128-FAST-LABEL: pmin_v4f32_fast_oge: 12686; NO-SIMD128-FAST: .functype pmin_v4f32_fast_oge (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12687; NO-SIMD128-FAST-NEXT: # %bb.0: 12688; NO-SIMD128-FAST-NEXT: f32.ge $push0=, $1, $5 12689; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12690; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12691; NO-SIMD128-FAST-NEXT: f32.ge $push2=, $2, $6 12692; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12693; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12694; NO-SIMD128-FAST-NEXT: f32.ge $push4=, $3, $7 12695; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12696; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12697; NO-SIMD128-FAST-NEXT: f32.ge $push6=, $4, $8 12698; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12699; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12700; NO-SIMD128-FAST-NEXT: return 12701 %c = fcmp fast oge <4 x float> %x, %y 12702 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12703 ret <4 x float> %a 12704} 12705 12706define <4 x i32> @pmin_int_v4f32(<4 x i32> %x, <4 x i32> %y) { 12707; SIMD128-LABEL: pmin_int_v4f32: 12708; SIMD128: .functype pmin_int_v4f32 (v128, v128) -> (v128) 12709; SIMD128-NEXT: # %bb.0: 12710; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1 12711; SIMD128-NEXT: return $pop0 12712; 12713; SIMD128-FAST-LABEL: pmin_int_v4f32: 12714; SIMD128-FAST: .functype pmin_int_v4f32 (v128, v128) -> (v128) 12715; SIMD128-FAST-NEXT: # %bb.0: 12716; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1 12717; SIMD128-FAST-NEXT: return $pop0 12718; 12719; NO-SIMD128-LABEL: pmin_int_v4f32: 12720; NO-SIMD128: .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 12721; NO-SIMD128-NEXT: # %bb.0: 12722; NO-SIMD128-NEXT: f32.reinterpret_i32 $push1=, $8 12723; NO-SIMD128-NEXT: f32.reinterpret_i32 $push0=, $4 12724; NO-SIMD128-NEXT: f32.lt $push2=, $pop1, $pop0 12725; NO-SIMD128-NEXT: i32.select $push3=, $8, $4, $pop2 12726; NO-SIMD128-NEXT: i32.store 12($0), $pop3 12727; NO-SIMD128-NEXT: f32.reinterpret_i32 $push5=, $7 12728; NO-SIMD128-NEXT: f32.reinterpret_i32 $push4=, $3 12729; NO-SIMD128-NEXT: f32.lt $push6=, $pop5, $pop4 12730; NO-SIMD128-NEXT: i32.select $push7=, $7, $3, $pop6 12731; NO-SIMD128-NEXT: i32.store 8($0), $pop7 12732; NO-SIMD128-NEXT: f32.reinterpret_i32 $push9=, $6 12733; NO-SIMD128-NEXT: f32.reinterpret_i32 $push8=, $2 12734; NO-SIMD128-NEXT: f32.lt $push10=, $pop9, $pop8 12735; NO-SIMD128-NEXT: i32.select $push11=, $6, $2, $pop10 12736; NO-SIMD128-NEXT: i32.store 4($0), $pop11 12737; NO-SIMD128-NEXT: f32.reinterpret_i32 $push13=, $5 12738; NO-SIMD128-NEXT: f32.reinterpret_i32 $push12=, $1 12739; NO-SIMD128-NEXT: f32.lt $push14=, $pop13, $pop12 12740; NO-SIMD128-NEXT: i32.select $push15=, $5, $1, $pop14 12741; NO-SIMD128-NEXT: i32.store 0($0), $pop15 12742; NO-SIMD128-NEXT: return 12743; 12744; NO-SIMD128-FAST-LABEL: pmin_int_v4f32: 12745; NO-SIMD128-FAST: .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 12746; NO-SIMD128-FAST-NEXT: # %bb.0: 12747; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push1=, $5 12748; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push0=, $1 12749; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $pop1, $pop0 12750; NO-SIMD128-FAST-NEXT: i32.select $push3=, $5, $1, $pop2 12751; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3 12752; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push5=, $6 12753; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push4=, $2 12754; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $pop5, $pop4 12755; NO-SIMD128-FAST-NEXT: i32.select $push7=, $6, $2, $pop6 12756; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop7 12757; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push9=, $7 12758; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push8=, $3 12759; NO-SIMD128-FAST-NEXT: f32.lt $push10=, $pop9, $pop8 12760; NO-SIMD128-FAST-NEXT: i32.select $push11=, $7, $3, $pop10 12761; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop11 12762; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push13=, $8 12763; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push12=, $4 12764; NO-SIMD128-FAST-NEXT: f32.lt $push14=, $pop13, $pop12 12765; NO-SIMD128-FAST-NEXT: i32.select $push15=, $8, $4, $pop14 12766; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop15 12767; NO-SIMD128-FAST-NEXT: return 12768 %fx = bitcast <4 x i32> %x to <4 x float> 12769 %fy = bitcast <4 x i32> %y to <4 x float> 12770 %c = fcmp olt <4 x float> %fy, %fx 12771 %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x 12772 ret <4 x i32> %a 12773} 12774 12775define <4 x float> @pmax_v4f32(<4 x float> %x, <4 x float> %y) { 12776; SIMD128-LABEL: pmax_v4f32: 12777; SIMD128: .functype pmax_v4f32 (v128, v128) -> (v128) 12778; SIMD128-NEXT: # %bb.0: 12779; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 12780; SIMD128-NEXT: return $pop0 12781; 12782; SIMD128-FAST-LABEL: pmax_v4f32: 12783; SIMD128-FAST: .functype pmax_v4f32 (v128, v128) -> (v128) 12784; SIMD128-FAST-NEXT: # %bb.0: 12785; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 12786; SIMD128-FAST-NEXT: return $pop0 12787; 12788; NO-SIMD128-LABEL: pmax_v4f32: 12789; NO-SIMD128: .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12790; NO-SIMD128-NEXT: # %bb.0: 12791; NO-SIMD128-NEXT: f32.lt $push0=, $4, $8 12792; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12793; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12794; NO-SIMD128-NEXT: f32.lt $push2=, $3, $7 12795; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12796; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12797; NO-SIMD128-NEXT: f32.lt $push4=, $2, $6 12798; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12799; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12800; NO-SIMD128-NEXT: f32.lt $push6=, $1, $5 12801; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12802; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12803; NO-SIMD128-NEXT: return 12804; 12805; NO-SIMD128-FAST-LABEL: pmax_v4f32: 12806; NO-SIMD128-FAST: .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12807; NO-SIMD128-FAST-NEXT: # %bb.0: 12808; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $1, $5 12809; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12810; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12811; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $2, $6 12812; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12813; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12814; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $3, $7 12815; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12816; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12817; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $4, $8 12818; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12819; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12820; NO-SIMD128-FAST-NEXT: return 12821 %c = fcmp olt <4 x float> %x, %y 12822 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12823 ret <4 x float> %a 12824} 12825 12826define <4 x float> @pmax_v4f32_fast_ogt(<4 x float> %x, <4 x float> %y) { 12827; SIMD128-LABEL: pmax_v4f32_fast_ogt: 12828; SIMD128: .functype pmax_v4f32_fast_ogt (v128, v128) -> (v128) 12829; SIMD128-NEXT: # %bb.0: 12830; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 12831; SIMD128-NEXT: return $pop0 12832; 12833; SIMD128-FAST-LABEL: pmax_v4f32_fast_ogt: 12834; SIMD128-FAST: .functype pmax_v4f32_fast_ogt (v128, v128) -> (v128) 12835; SIMD128-FAST-NEXT: # %bb.0: 12836; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 12837; SIMD128-FAST-NEXT: return $pop0 12838; 12839; NO-SIMD128-LABEL: pmax_v4f32_fast_ogt: 12840; NO-SIMD128: .functype pmax_v4f32_fast_ogt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12841; NO-SIMD128-NEXT: # %bb.0: 12842; NO-SIMD128-NEXT: f32.gt $push0=, $4, $8 12843; NO-SIMD128-NEXT: f32.select $push1=, $4, $8, $pop0 12844; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12845; NO-SIMD128-NEXT: f32.gt $push2=, $3, $7 12846; NO-SIMD128-NEXT: f32.select $push3=, $3, $7, $pop2 12847; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12848; NO-SIMD128-NEXT: f32.gt $push4=, $2, $6 12849; NO-SIMD128-NEXT: f32.select $push5=, $2, $6, $pop4 12850; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12851; NO-SIMD128-NEXT: f32.gt $push6=, $1, $5 12852; NO-SIMD128-NEXT: f32.select $push7=, $1, $5, $pop6 12853; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12854; NO-SIMD128-NEXT: return 12855; 12856; NO-SIMD128-FAST-LABEL: pmax_v4f32_fast_ogt: 12857; NO-SIMD128-FAST: .functype pmax_v4f32_fast_ogt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12858; NO-SIMD128-FAST-NEXT: # %bb.0: 12859; NO-SIMD128-FAST-NEXT: f32.gt $push0=, $1, $5 12860; NO-SIMD128-FAST-NEXT: f32.select $push1=, $1, $5, $pop0 12861; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12862; NO-SIMD128-FAST-NEXT: f32.gt $push2=, $2, $6 12863; NO-SIMD128-FAST-NEXT: f32.select $push3=, $2, $6, $pop2 12864; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12865; NO-SIMD128-FAST-NEXT: f32.gt $push4=, $3, $7 12866; NO-SIMD128-FAST-NEXT: f32.select $push5=, $3, $7, $pop4 12867; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12868; NO-SIMD128-FAST-NEXT: f32.gt $push6=, $4, $8 12869; NO-SIMD128-FAST-NEXT: f32.select $push7=, $4, $8, $pop6 12870; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12871; NO-SIMD128-FAST-NEXT: return 12872 %c = fcmp fast ogt <4 x float> %x, %y 12873 %a = select <4 x i1> %c, <4 x float> %x, <4 x float> %y 12874 ret <4 x float> %a 12875} 12876 12877define <4 x float> @pmax_v4f32_fast_olt(<4 x float> %x, <4 x float> %y) { 12878; SIMD128-LABEL: pmax_v4f32_fast_olt: 12879; SIMD128: .functype pmax_v4f32_fast_olt (v128, v128) -> (v128) 12880; SIMD128-NEXT: # %bb.0: 12881; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 12882; SIMD128-NEXT: return $pop0 12883; 12884; SIMD128-FAST-LABEL: pmax_v4f32_fast_olt: 12885; SIMD128-FAST: .functype pmax_v4f32_fast_olt (v128, v128) -> (v128) 12886; SIMD128-FAST-NEXT: # %bb.0: 12887; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 12888; SIMD128-FAST-NEXT: return $pop0 12889; 12890; NO-SIMD128-LABEL: pmax_v4f32_fast_olt: 12891; NO-SIMD128: .functype pmax_v4f32_fast_olt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12892; NO-SIMD128-NEXT: # %bb.0: 12893; NO-SIMD128-NEXT: f32.lt $push0=, $4, $8 12894; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12895; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12896; NO-SIMD128-NEXT: f32.lt $push2=, $3, $7 12897; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 12898; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12899; NO-SIMD128-NEXT: f32.lt $push4=, $2, $6 12900; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 12901; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12902; NO-SIMD128-NEXT: f32.lt $push6=, $1, $5 12903; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 12904; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12905; NO-SIMD128-NEXT: return 12906; 12907; NO-SIMD128-FAST-LABEL: pmax_v4f32_fast_olt: 12908; NO-SIMD128-FAST: .functype pmax_v4f32_fast_olt (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12909; NO-SIMD128-FAST-NEXT: # %bb.0: 12910; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $1, $5 12911; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 12912; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12913; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $2, $6 12914; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 12915; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12916; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $3, $7 12917; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 12918; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12919; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $4, $8 12920; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 12921; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12922; NO-SIMD128-FAST-NEXT: return 12923 %c = fcmp fast olt <4 x float> %x, %y 12924 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 12925 ret <4 x float> %a 12926} 12927 12928define <4 x float> @pmax_v4f32_fast_oge(<4 x float> %x, <4 x float> %y) { 12929; SIMD128-LABEL: pmax_v4f32_fast_oge: 12930; SIMD128: .functype pmax_v4f32_fast_oge (v128, v128) -> (v128) 12931; SIMD128-NEXT: # %bb.0: 12932; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 12933; SIMD128-NEXT: return $pop0 12934; 12935; SIMD128-FAST-LABEL: pmax_v4f32_fast_oge: 12936; SIMD128-FAST: .functype pmax_v4f32_fast_oge (v128, v128) -> (v128) 12937; SIMD128-FAST-NEXT: # %bb.0: 12938; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 12939; SIMD128-FAST-NEXT: return $pop0 12940; 12941; NO-SIMD128-LABEL: pmax_v4f32_fast_oge: 12942; NO-SIMD128: .functype pmax_v4f32_fast_oge (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12943; NO-SIMD128-NEXT: # %bb.0: 12944; NO-SIMD128-NEXT: f32.ge $push0=, $4, $8 12945; NO-SIMD128-NEXT: f32.select $push1=, $4, $8, $pop0 12946; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12947; NO-SIMD128-NEXT: f32.ge $push2=, $3, $7 12948; NO-SIMD128-NEXT: f32.select $push3=, $3, $7, $pop2 12949; NO-SIMD128-NEXT: f32.store 8($0), $pop3 12950; NO-SIMD128-NEXT: f32.ge $push4=, $2, $6 12951; NO-SIMD128-NEXT: f32.select $push5=, $2, $6, $pop4 12952; NO-SIMD128-NEXT: f32.store 4($0), $pop5 12953; NO-SIMD128-NEXT: f32.ge $push6=, $1, $5 12954; NO-SIMD128-NEXT: f32.select $push7=, $1, $5, $pop6 12955; NO-SIMD128-NEXT: f32.store 0($0), $pop7 12956; NO-SIMD128-NEXT: return 12957; 12958; NO-SIMD128-FAST-LABEL: pmax_v4f32_fast_oge: 12959; NO-SIMD128-FAST: .functype pmax_v4f32_fast_oge (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12960; NO-SIMD128-FAST-NEXT: # %bb.0: 12961; NO-SIMD128-FAST-NEXT: f32.ge $push0=, $1, $5 12962; NO-SIMD128-FAST-NEXT: f32.select $push1=, $1, $5, $pop0 12963; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 12964; NO-SIMD128-FAST-NEXT: f32.ge $push2=, $2, $6 12965; NO-SIMD128-FAST-NEXT: f32.select $push3=, $2, $6, $pop2 12966; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 12967; NO-SIMD128-FAST-NEXT: f32.ge $push4=, $3, $7 12968; NO-SIMD128-FAST-NEXT: f32.select $push5=, $3, $7, $pop4 12969; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 12970; NO-SIMD128-FAST-NEXT: f32.ge $push6=, $4, $8 12971; NO-SIMD128-FAST-NEXT: f32.select $push7=, $4, $8, $pop6 12972; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 12973; NO-SIMD128-FAST-NEXT: return 12974 %c = fcmp fast oge <4 x float> %x, %y 12975 %a = select <4 x i1> %c, <4 x float> %x, <4 x float> %y 12976 ret <4 x float> %a 12977} 12978 12979define <4 x float> @pmax_v4f32_fast_ole(<4 x float> %x, <4 x float> %y) { 12980; SIMD128-LABEL: pmax_v4f32_fast_ole: 12981; SIMD128: .functype pmax_v4f32_fast_ole (v128, v128) -> (v128) 12982; SIMD128-NEXT: # %bb.0: 12983; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 12984; SIMD128-NEXT: return $pop0 12985; 12986; SIMD128-FAST-LABEL: pmax_v4f32_fast_ole: 12987; SIMD128-FAST: .functype pmax_v4f32_fast_ole (v128, v128) -> (v128) 12988; SIMD128-FAST-NEXT: # %bb.0: 12989; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 12990; SIMD128-FAST-NEXT: return $pop0 12991; 12992; NO-SIMD128-LABEL: pmax_v4f32_fast_ole: 12993; NO-SIMD128: .functype pmax_v4f32_fast_ole (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 12994; NO-SIMD128-NEXT: # %bb.0: 12995; NO-SIMD128-NEXT: f32.le $push0=, $4, $8 12996; NO-SIMD128-NEXT: f32.select $push1=, $8, $4, $pop0 12997; NO-SIMD128-NEXT: f32.store 12($0), $pop1 12998; NO-SIMD128-NEXT: f32.le $push2=, $3, $7 12999; NO-SIMD128-NEXT: f32.select $push3=, $7, $3, $pop2 13000; NO-SIMD128-NEXT: f32.store 8($0), $pop3 13001; NO-SIMD128-NEXT: f32.le $push4=, $2, $6 13002; NO-SIMD128-NEXT: f32.select $push5=, $6, $2, $pop4 13003; NO-SIMD128-NEXT: f32.store 4($0), $pop5 13004; NO-SIMD128-NEXT: f32.le $push6=, $1, $5 13005; NO-SIMD128-NEXT: f32.select $push7=, $5, $1, $pop6 13006; NO-SIMD128-NEXT: f32.store 0($0), $pop7 13007; NO-SIMD128-NEXT: return 13008; 13009; NO-SIMD128-FAST-LABEL: pmax_v4f32_fast_ole: 13010; NO-SIMD128-FAST: .functype pmax_v4f32_fast_ole (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13011; NO-SIMD128-FAST-NEXT: # %bb.0: 13012; NO-SIMD128-FAST-NEXT: f32.le $push0=, $1, $5 13013; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0 13014; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1 13015; NO-SIMD128-FAST-NEXT: f32.le $push2=, $2, $6 13016; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2 13017; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3 13018; NO-SIMD128-FAST-NEXT: f32.le $push4=, $3, $7 13019; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4 13020; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5 13021; NO-SIMD128-FAST-NEXT: f32.le $push6=, $4, $8 13022; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6 13023; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop7 13024; NO-SIMD128-FAST-NEXT: return 13025 %c = fcmp fast ole <4 x float> %x, %y 13026 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x 13027 ret <4 x float> %a 13028} 13029 13030define <4 x i32> @pmax_int_v4f32(<4 x i32> %x, <4 x i32> %y) { 13031; SIMD128-LABEL: pmax_int_v4f32: 13032; SIMD128: .functype pmax_int_v4f32 (v128, v128) -> (v128) 13033; SIMD128-NEXT: # %bb.0: 13034; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 13035; SIMD128-NEXT: return $pop0 13036; 13037; SIMD128-FAST-LABEL: pmax_int_v4f32: 13038; SIMD128-FAST: .functype pmax_int_v4f32 (v128, v128) -> (v128) 13039; SIMD128-FAST-NEXT: # %bb.0: 13040; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 13041; SIMD128-FAST-NEXT: return $pop0 13042; 13043; NO-SIMD128-LABEL: pmax_int_v4f32: 13044; NO-SIMD128: .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 13045; NO-SIMD128-NEXT: # %bb.0: 13046; NO-SIMD128-NEXT: f32.reinterpret_i32 $push1=, $4 13047; NO-SIMD128-NEXT: f32.reinterpret_i32 $push0=, $8 13048; NO-SIMD128-NEXT: f32.lt $push2=, $pop1, $pop0 13049; NO-SIMD128-NEXT: i32.select $push3=, $8, $4, $pop2 13050; NO-SIMD128-NEXT: i32.store 12($0), $pop3 13051; NO-SIMD128-NEXT: f32.reinterpret_i32 $push5=, $3 13052; NO-SIMD128-NEXT: f32.reinterpret_i32 $push4=, $7 13053; NO-SIMD128-NEXT: f32.lt $push6=, $pop5, $pop4 13054; NO-SIMD128-NEXT: i32.select $push7=, $7, $3, $pop6 13055; NO-SIMD128-NEXT: i32.store 8($0), $pop7 13056; NO-SIMD128-NEXT: f32.reinterpret_i32 $push9=, $2 13057; NO-SIMD128-NEXT: f32.reinterpret_i32 $push8=, $6 13058; NO-SIMD128-NEXT: f32.lt $push10=, $pop9, $pop8 13059; NO-SIMD128-NEXT: i32.select $push11=, $6, $2, $pop10 13060; NO-SIMD128-NEXT: i32.store 4($0), $pop11 13061; NO-SIMD128-NEXT: f32.reinterpret_i32 $push13=, $1 13062; NO-SIMD128-NEXT: f32.reinterpret_i32 $push12=, $5 13063; NO-SIMD128-NEXT: f32.lt $push14=, $pop13, $pop12 13064; NO-SIMD128-NEXT: i32.select $push15=, $5, $1, $pop14 13065; NO-SIMD128-NEXT: i32.store 0($0), $pop15 13066; NO-SIMD128-NEXT: return 13067; 13068; NO-SIMD128-FAST-LABEL: pmax_int_v4f32: 13069; NO-SIMD128-FAST: .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> () 13070; NO-SIMD128-FAST-NEXT: # %bb.0: 13071; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push1=, $1 13072; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push0=, $5 13073; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $pop1, $pop0 13074; NO-SIMD128-FAST-NEXT: i32.select $push3=, $5, $1, $pop2 13075; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3 13076; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push5=, $2 13077; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push4=, $6 13078; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $pop5, $pop4 13079; NO-SIMD128-FAST-NEXT: i32.select $push7=, $6, $2, $pop6 13080; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop7 13081; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push9=, $3 13082; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push8=, $7 13083; NO-SIMD128-FAST-NEXT: f32.lt $push10=, $pop9, $pop8 13084; NO-SIMD128-FAST-NEXT: i32.select $push11=, $7, $3, $pop10 13085; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop11 13086; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push13=, $4 13087; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push12=, $8 13088; NO-SIMD128-FAST-NEXT: f32.lt $push14=, $pop13, $pop12 13089; NO-SIMD128-FAST-NEXT: i32.select $push15=, $8, $4, $pop14 13090; NO-SIMD128-FAST-NEXT: i32.store 12($0), $pop15 13091; NO-SIMD128-FAST-NEXT: return 13092 %fx = bitcast <4 x i32> %x to <4 x float> 13093 %fy = bitcast <4 x i32> %y to <4 x float> 13094 %c = fcmp olt <4 x float> %fx, %fy 13095 %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x 13096 ret <4 x i32> %a 13097} 13098 13099define <4 x float> @add_v4f32(<4 x float> %x, <4 x float> %y) { 13100; SIMD128-LABEL: add_v4f32: 13101; SIMD128: .functype add_v4f32 (v128, v128) -> (v128) 13102; SIMD128-NEXT: # %bb.0: 13103; SIMD128-NEXT: f32x4.add $push0=, $0, $1 13104; SIMD128-NEXT: return $pop0 13105; 13106; SIMD128-FAST-LABEL: add_v4f32: 13107; SIMD128-FAST: .functype add_v4f32 (v128, v128) -> (v128) 13108; SIMD128-FAST-NEXT: # %bb.0: 13109; SIMD128-FAST-NEXT: f32x4.add $push0=, $0, $1 13110; SIMD128-FAST-NEXT: return $pop0 13111; 13112; NO-SIMD128-LABEL: add_v4f32: 13113; NO-SIMD128: .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13114; NO-SIMD128-NEXT: # %bb.0: 13115; NO-SIMD128-NEXT: f32.add $push0=, $4, $8 13116; NO-SIMD128-NEXT: f32.store 12($0), $pop0 13117; NO-SIMD128-NEXT: f32.add $push1=, $3, $7 13118; NO-SIMD128-NEXT: f32.store 8($0), $pop1 13119; NO-SIMD128-NEXT: f32.add $push2=, $2, $6 13120; NO-SIMD128-NEXT: f32.store 4($0), $pop2 13121; NO-SIMD128-NEXT: f32.add $push3=, $1, $5 13122; NO-SIMD128-NEXT: f32.store 0($0), $pop3 13123; NO-SIMD128-NEXT: return 13124; 13125; NO-SIMD128-FAST-LABEL: add_v4f32: 13126; NO-SIMD128-FAST: .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13127; NO-SIMD128-FAST-NEXT: # %bb.0: 13128; NO-SIMD128-FAST-NEXT: f32.add $push0=, $1, $5 13129; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 13130; NO-SIMD128-FAST-NEXT: f32.add $push1=, $2, $6 13131; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 13132; NO-SIMD128-FAST-NEXT: f32.add $push2=, $3, $7 13133; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 13134; NO-SIMD128-FAST-NEXT: f32.add $push3=, $4, $8 13135; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 13136; NO-SIMD128-FAST-NEXT: return 13137 %a = fadd <4 x float> %x, %y 13138 ret <4 x float> %a 13139} 13140 13141define <4 x float> @sub_v4f32(<4 x float> %x, <4 x float> %y) { 13142; SIMD128-LABEL: sub_v4f32: 13143; SIMD128: .functype sub_v4f32 (v128, v128) -> (v128) 13144; SIMD128-NEXT: # %bb.0: 13145; SIMD128-NEXT: f32x4.sub $push0=, $0, $1 13146; SIMD128-NEXT: return $pop0 13147; 13148; SIMD128-FAST-LABEL: sub_v4f32: 13149; SIMD128-FAST: .functype sub_v4f32 (v128, v128) -> (v128) 13150; SIMD128-FAST-NEXT: # %bb.0: 13151; SIMD128-FAST-NEXT: f32x4.sub $push0=, $0, $1 13152; SIMD128-FAST-NEXT: return $pop0 13153; 13154; NO-SIMD128-LABEL: sub_v4f32: 13155; NO-SIMD128: .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13156; NO-SIMD128-NEXT: # %bb.0: 13157; NO-SIMD128-NEXT: f32.sub $push0=, $4, $8 13158; NO-SIMD128-NEXT: f32.store 12($0), $pop0 13159; NO-SIMD128-NEXT: f32.sub $push1=, $3, $7 13160; NO-SIMD128-NEXT: f32.store 8($0), $pop1 13161; NO-SIMD128-NEXT: f32.sub $push2=, $2, $6 13162; NO-SIMD128-NEXT: f32.store 4($0), $pop2 13163; NO-SIMD128-NEXT: f32.sub $push3=, $1, $5 13164; NO-SIMD128-NEXT: f32.store 0($0), $pop3 13165; NO-SIMD128-NEXT: return 13166; 13167; NO-SIMD128-FAST-LABEL: sub_v4f32: 13168; NO-SIMD128-FAST: .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13169; NO-SIMD128-FAST-NEXT: # %bb.0: 13170; NO-SIMD128-FAST-NEXT: f32.sub $push0=, $1, $5 13171; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 13172; NO-SIMD128-FAST-NEXT: f32.sub $push1=, $2, $6 13173; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 13174; NO-SIMD128-FAST-NEXT: f32.sub $push2=, $3, $7 13175; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 13176; NO-SIMD128-FAST-NEXT: f32.sub $push3=, $4, $8 13177; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 13178; NO-SIMD128-FAST-NEXT: return 13179 %a = fsub <4 x float> %x, %y 13180 ret <4 x float> %a 13181} 13182 13183define <4 x float> @div_v4f32(<4 x float> %x, <4 x float> %y) { 13184; SIMD128-LABEL: div_v4f32: 13185; SIMD128: .functype div_v4f32 (v128, v128) -> (v128) 13186; SIMD128-NEXT: # %bb.0: 13187; SIMD128-NEXT: f32x4.div $push0=, $0, $1 13188; SIMD128-NEXT: return $pop0 13189; 13190; SIMD128-FAST-LABEL: div_v4f32: 13191; SIMD128-FAST: .functype div_v4f32 (v128, v128) -> (v128) 13192; SIMD128-FAST-NEXT: # %bb.0: 13193; SIMD128-FAST-NEXT: f32x4.div $push0=, $0, $1 13194; SIMD128-FAST-NEXT: return $pop0 13195; 13196; NO-SIMD128-LABEL: div_v4f32: 13197; NO-SIMD128: .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13198; NO-SIMD128-NEXT: # %bb.0: 13199; NO-SIMD128-NEXT: f32.div $push0=, $4, $8 13200; NO-SIMD128-NEXT: f32.store 12($0), $pop0 13201; NO-SIMD128-NEXT: f32.div $push1=, $3, $7 13202; NO-SIMD128-NEXT: f32.store 8($0), $pop1 13203; NO-SIMD128-NEXT: f32.div $push2=, $2, $6 13204; NO-SIMD128-NEXT: f32.store 4($0), $pop2 13205; NO-SIMD128-NEXT: f32.div $push3=, $1, $5 13206; NO-SIMD128-NEXT: f32.store 0($0), $pop3 13207; NO-SIMD128-NEXT: return 13208; 13209; NO-SIMD128-FAST-LABEL: div_v4f32: 13210; NO-SIMD128-FAST: .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13211; NO-SIMD128-FAST-NEXT: # %bb.0: 13212; NO-SIMD128-FAST-NEXT: f32.div $push0=, $1, $5 13213; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 13214; NO-SIMD128-FAST-NEXT: f32.div $push1=, $2, $6 13215; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 13216; NO-SIMD128-FAST-NEXT: f32.div $push2=, $3, $7 13217; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 13218; NO-SIMD128-FAST-NEXT: f32.div $push3=, $4, $8 13219; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 13220; NO-SIMD128-FAST-NEXT: return 13221 %a = fdiv <4 x float> %x, %y 13222 ret <4 x float> %a 13223} 13224 13225define <4 x float> @mul_v4f32(<4 x float> %x, <4 x float> %y) { 13226; SIMD128-LABEL: mul_v4f32: 13227; SIMD128: .functype mul_v4f32 (v128, v128) -> (v128) 13228; SIMD128-NEXT: # %bb.0: 13229; SIMD128-NEXT: f32x4.mul $push0=, $0, $1 13230; SIMD128-NEXT: return $pop0 13231; 13232; SIMD128-FAST-LABEL: mul_v4f32: 13233; SIMD128-FAST: .functype mul_v4f32 (v128, v128) -> (v128) 13234; SIMD128-FAST-NEXT: # %bb.0: 13235; SIMD128-FAST-NEXT: f32x4.mul $push0=, $0, $1 13236; SIMD128-FAST-NEXT: return $pop0 13237; 13238; NO-SIMD128-LABEL: mul_v4f32: 13239; NO-SIMD128: .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13240; NO-SIMD128-NEXT: # %bb.0: 13241; NO-SIMD128-NEXT: f32.mul $push0=, $4, $8 13242; NO-SIMD128-NEXT: f32.store 12($0), $pop0 13243; NO-SIMD128-NEXT: f32.mul $push1=, $3, $7 13244; NO-SIMD128-NEXT: f32.store 8($0), $pop1 13245; NO-SIMD128-NEXT: f32.mul $push2=, $2, $6 13246; NO-SIMD128-NEXT: f32.store 4($0), $pop2 13247; NO-SIMD128-NEXT: f32.mul $push3=, $1, $5 13248; NO-SIMD128-NEXT: f32.store 0($0), $pop3 13249; NO-SIMD128-NEXT: return 13250; 13251; NO-SIMD128-FAST-LABEL: mul_v4f32: 13252; NO-SIMD128-FAST: .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> () 13253; NO-SIMD128-FAST-NEXT: # %bb.0: 13254; NO-SIMD128-FAST-NEXT: f32.mul $push0=, $1, $5 13255; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 13256; NO-SIMD128-FAST-NEXT: f32.mul $push1=, $2, $6 13257; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 13258; NO-SIMD128-FAST-NEXT: f32.mul $push2=, $3, $7 13259; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 13260; NO-SIMD128-FAST-NEXT: f32.mul $push3=, $4, $8 13261; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 13262; NO-SIMD128-FAST-NEXT: return 13263 %a = fmul <4 x float> %x, %y 13264 ret <4 x float> %a 13265} 13266 13267declare <4 x float> @llvm.sqrt.v4f32(<4 x float> %x) 13268define <4 x float> @sqrt_v4f32(<4 x float> %x) { 13269; SIMD128-LABEL: sqrt_v4f32: 13270; SIMD128: .functype sqrt_v4f32 (v128) -> (v128) 13271; SIMD128-NEXT: # %bb.0: 13272; SIMD128-NEXT: f32x4.sqrt $push0=, $0 13273; SIMD128-NEXT: return $pop0 13274; 13275; SIMD128-FAST-LABEL: sqrt_v4f32: 13276; SIMD128-FAST: .functype sqrt_v4f32 (v128) -> (v128) 13277; SIMD128-FAST-NEXT: # %bb.0: 13278; SIMD128-FAST-NEXT: f32x4.sqrt $push0=, $0 13279; SIMD128-FAST-NEXT: return $pop0 13280; 13281; NO-SIMD128-LABEL: sqrt_v4f32: 13282; NO-SIMD128: .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> () 13283; NO-SIMD128-NEXT: # %bb.0: 13284; NO-SIMD128-NEXT: f32.sqrt $push0=, $4 13285; NO-SIMD128-NEXT: f32.store 12($0), $pop0 13286; NO-SIMD128-NEXT: f32.sqrt $push1=, $3 13287; NO-SIMD128-NEXT: f32.store 8($0), $pop1 13288; NO-SIMD128-NEXT: f32.sqrt $push2=, $2 13289; NO-SIMD128-NEXT: f32.store 4($0), $pop2 13290; NO-SIMD128-NEXT: f32.sqrt $push3=, $1 13291; NO-SIMD128-NEXT: f32.store 0($0), $pop3 13292; NO-SIMD128-NEXT: return 13293; 13294; NO-SIMD128-FAST-LABEL: sqrt_v4f32: 13295; NO-SIMD128-FAST: .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> () 13296; NO-SIMD128-FAST-NEXT: # %bb.0: 13297; NO-SIMD128-FAST-NEXT: f32.sqrt $push0=, $1 13298; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0 13299; NO-SIMD128-FAST-NEXT: f32.sqrt $push1=, $2 13300; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1 13301; NO-SIMD128-FAST-NEXT: f32.sqrt $push2=, $3 13302; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2 13303; NO-SIMD128-FAST-NEXT: f32.sqrt $push3=, $4 13304; NO-SIMD128-FAST-NEXT: f32.store 12($0), $pop3 13305; NO-SIMD128-FAST-NEXT: return 13306 %a = call <4 x float> @llvm.sqrt.v4f32(<4 x float> %x) 13307 ret <4 x float> %a 13308} 13309 13310; ============================================================================== 13311; 2 x double 13312; ============================================================================== 13313define <2 x double> @neg_v2f64(<2 x double> %x) { 13314 ; nsz makes this semantically equivalent to flipping sign bit 13315; SIMD128-LABEL: neg_v2f64: 13316; SIMD128: .functype neg_v2f64 (v128) -> (v128) 13317; SIMD128-NEXT: # %bb.0: 13318; SIMD128-NEXT: f64x2.neg $push0=, $0 13319; SIMD128-NEXT: return $pop0 13320; 13321; SIMD128-FAST-LABEL: neg_v2f64: 13322; SIMD128-FAST: .functype neg_v2f64 (v128) -> (v128) 13323; SIMD128-FAST-NEXT: # %bb.0: 13324; SIMD128-FAST-NEXT: f64x2.neg $push0=, $0 13325; SIMD128-FAST-NEXT: return $pop0 13326; 13327; NO-SIMD128-LABEL: neg_v2f64: 13328; NO-SIMD128: .functype neg_v2f64 (i32, f64, f64) -> () 13329; NO-SIMD128-NEXT: # %bb.0: 13330; NO-SIMD128-NEXT: f64.neg $push0=, $2 13331; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13332; NO-SIMD128-NEXT: f64.neg $push1=, $1 13333; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13334; NO-SIMD128-NEXT: return 13335; 13336; NO-SIMD128-FAST-LABEL: neg_v2f64: 13337; NO-SIMD128-FAST: .functype neg_v2f64 (i32, f64, f64) -> () 13338; NO-SIMD128-FAST-NEXT: # %bb.0: 13339; NO-SIMD128-FAST-NEXT: f64.neg $push0=, $1 13340; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13341; NO-SIMD128-FAST-NEXT: f64.neg $push1=, $2 13342; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13343; NO-SIMD128-FAST-NEXT: return 13344 %a = fsub nsz <2 x double> <double 0., double 0.>, %x 13345 ret <2 x double> %a 13346} 13347 13348declare <2 x double> @llvm.fabs.v2f64(<2 x double>) nounwind readnone 13349define <2 x double> @abs_v2f64(<2 x double> %x) { 13350; SIMD128-LABEL: abs_v2f64: 13351; SIMD128: .functype abs_v2f64 (v128) -> (v128) 13352; SIMD128-NEXT: # %bb.0: 13353; SIMD128-NEXT: f64x2.abs $push0=, $0 13354; SIMD128-NEXT: return $pop0 13355; 13356; SIMD128-FAST-LABEL: abs_v2f64: 13357; SIMD128-FAST: .functype abs_v2f64 (v128) -> (v128) 13358; SIMD128-FAST-NEXT: # %bb.0: 13359; SIMD128-FAST-NEXT: f64x2.abs $push0=, $0 13360; SIMD128-FAST-NEXT: return $pop0 13361; 13362; NO-SIMD128-LABEL: abs_v2f64: 13363; NO-SIMD128: .functype abs_v2f64 (i32, f64, f64) -> () 13364; NO-SIMD128-NEXT: # %bb.0: 13365; NO-SIMD128-NEXT: f64.abs $push0=, $2 13366; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13367; NO-SIMD128-NEXT: f64.abs $push1=, $1 13368; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13369; NO-SIMD128-NEXT: return 13370; 13371; NO-SIMD128-FAST-LABEL: abs_v2f64: 13372; NO-SIMD128-FAST: .functype abs_v2f64 (i32, f64, f64) -> () 13373; NO-SIMD128-FAST-NEXT: # %bb.0: 13374; NO-SIMD128-FAST-NEXT: f64.abs $push0=, $1 13375; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13376; NO-SIMD128-FAST-NEXT: f64.abs $push1=, $2 13377; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13378; NO-SIMD128-FAST-NEXT: return 13379 %a = call <2 x double> @llvm.fabs.v2f64(<2 x double> %x) 13380 ret <2 x double> %a 13381} 13382 13383define <2 x double> @min_unordered_v2f64(<2 x double> %x) { 13384; SIMD128-LABEL: min_unordered_v2f64: 13385; SIMD128: .functype min_unordered_v2f64 (v128) -> (v128) 13386; SIMD128-NEXT: # %bb.0: 13387; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13388; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0 13389; SIMD128-NEXT: return $pop1 13390; 13391; SIMD128-FAST-LABEL: min_unordered_v2f64: 13392; SIMD128-FAST: .functype min_unordered_v2f64 (v128) -> (v128) 13393; SIMD128-FAST-NEXT: # %bb.0: 13394; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 13395; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1 13396; SIMD128-FAST-NEXT: return $pop0 13397; 13398; NO-SIMD128-LABEL: min_unordered_v2f64: 13399; NO-SIMD128: .functype min_unordered_v2f64 (i32, f64, f64) -> () 13400; NO-SIMD128-NEXT: # %bb.0: 13401; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2 13402; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2 13403; NO-SIMD128-NEXT: f64.gt $push1=, $2, $pop7 13404; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1 13405; NO-SIMD128-NEXT: f64.store 8($0), $pop2 13406; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2 13407; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2 13408; NO-SIMD128-NEXT: f64.gt $push3=, $1, $pop5 13409; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3 13410; NO-SIMD128-NEXT: f64.store 0($0), $pop4 13411; NO-SIMD128-NEXT: return 13412; 13413; NO-SIMD128-FAST-LABEL: min_unordered_v2f64: 13414; NO-SIMD128-FAST: .functype min_unordered_v2f64 (i32, f64, f64) -> () 13415; NO-SIMD128-FAST-NEXT: # %bb.0: 13416; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2 13417; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2 13418; NO-SIMD128-FAST-NEXT: f64.gt $push1=, $1, $pop7 13419; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1 13420; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2 13421; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2 13422; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2 13423; NO-SIMD128-FAST-NEXT: f64.gt $push3=, $2, $pop5 13424; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3 13425; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4 13426; NO-SIMD128-FAST-NEXT: return 13427 %cmps = fcmp ule <2 x double> %x, <double 5., double 5.> 13428 %a = select <2 x i1> %cmps, <2 x double> %x, 13429 <2 x double> <double 5., double 5.> 13430 ret <2 x double> %a 13431} 13432 13433define <2 x double> @max_unordered_v2f64(<2 x double> %x) { 13434; SIMD128-LABEL: max_unordered_v2f64: 13435; SIMD128: .functype max_unordered_v2f64 (v128) -> (v128) 13436; SIMD128-NEXT: # %bb.0: 13437; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13438; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0 13439; SIMD128-NEXT: return $pop1 13440; 13441; SIMD128-FAST-LABEL: max_unordered_v2f64: 13442; SIMD128-FAST: .functype max_unordered_v2f64 (v128) -> (v128) 13443; SIMD128-FAST-NEXT: # %bb.0: 13444; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 13445; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1 13446; SIMD128-FAST-NEXT: return $pop0 13447; 13448; NO-SIMD128-LABEL: max_unordered_v2f64: 13449; NO-SIMD128: .functype max_unordered_v2f64 (i32, f64, f64) -> () 13450; NO-SIMD128-NEXT: # %bb.0: 13451; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2 13452; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2 13453; NO-SIMD128-NEXT: f64.lt $push1=, $2, $pop7 13454; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1 13455; NO-SIMD128-NEXT: f64.store 8($0), $pop2 13456; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2 13457; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2 13458; NO-SIMD128-NEXT: f64.lt $push3=, $1, $pop5 13459; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3 13460; NO-SIMD128-NEXT: f64.store 0($0), $pop4 13461; NO-SIMD128-NEXT: return 13462; 13463; NO-SIMD128-FAST-LABEL: max_unordered_v2f64: 13464; NO-SIMD128-FAST: .functype max_unordered_v2f64 (i32, f64, f64) -> () 13465; NO-SIMD128-FAST-NEXT: # %bb.0: 13466; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2 13467; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2 13468; NO-SIMD128-FAST-NEXT: f64.lt $push1=, $1, $pop7 13469; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1 13470; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2 13471; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2 13472; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2 13473; NO-SIMD128-FAST-NEXT: f64.lt $push3=, $2, $pop5 13474; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3 13475; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4 13476; NO-SIMD128-FAST-NEXT: return 13477 %cmps = fcmp uge <2 x double> %x, <double 5., double 5.> 13478 %a = select <2 x i1> %cmps, <2 x double> %x, 13479 <2 x double> <double 5., double 5.> 13480 ret <2 x double> %a 13481} 13482 13483define <2 x double> @min_ordered_v2f64(<2 x double> %x) { 13484; SIMD128-LABEL: min_ordered_v2f64: 13485; SIMD128: .functype min_ordered_v2f64 (v128) -> (v128) 13486; SIMD128-NEXT: # %bb.0: 13487; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13488; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0 13489; SIMD128-NEXT: return $pop1 13490; 13491; SIMD128-FAST-LABEL: min_ordered_v2f64: 13492; SIMD128-FAST: .functype min_ordered_v2f64 (v128) -> (v128) 13493; SIMD128-FAST-NEXT: # %bb.0: 13494; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 13495; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1 13496; SIMD128-FAST-NEXT: return $pop0 13497; 13498; NO-SIMD128-LABEL: min_ordered_v2f64: 13499; NO-SIMD128: .functype min_ordered_v2f64 (i32, f64, f64) -> () 13500; NO-SIMD128-NEXT: # %bb.0: 13501; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2 13502; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2 13503; NO-SIMD128-NEXT: f64.ge $push1=, $2, $pop7 13504; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1 13505; NO-SIMD128-NEXT: f64.store 8($0), $pop2 13506; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2 13507; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2 13508; NO-SIMD128-NEXT: f64.ge $push3=, $1, $pop5 13509; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3 13510; NO-SIMD128-NEXT: f64.store 0($0), $pop4 13511; NO-SIMD128-NEXT: return 13512; 13513; NO-SIMD128-FAST-LABEL: min_ordered_v2f64: 13514; NO-SIMD128-FAST: .functype min_ordered_v2f64 (i32, f64, f64) -> () 13515; NO-SIMD128-FAST-NEXT: # %bb.0: 13516; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2 13517; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2 13518; NO-SIMD128-FAST-NEXT: f64.ge $push1=, $1, $pop7 13519; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1 13520; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2 13521; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2 13522; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2 13523; NO-SIMD128-FAST-NEXT: f64.ge $push3=, $2, $pop5 13524; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3 13525; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4 13526; NO-SIMD128-FAST-NEXT: return 13527 %cmps = fcmp ole <2 x double> <double 5., double 5.>, %x 13528 %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>, 13529 <2 x double> %x 13530 ret <2 x double> %a 13531} 13532 13533define <2 x double> @max_ordered_v2f64(<2 x double> %x) { 13534; SIMD128-LABEL: max_ordered_v2f64: 13535; SIMD128: .functype max_ordered_v2f64 (v128) -> (v128) 13536; SIMD128-NEXT: # %bb.0: 13537; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13538; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0 13539; SIMD128-NEXT: return $pop1 13540; 13541; SIMD128-FAST-LABEL: max_ordered_v2f64: 13542; SIMD128-FAST: .functype max_ordered_v2f64 (v128) -> (v128) 13543; SIMD128-FAST-NEXT: # %bb.0: 13544; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 13545; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1 13546; SIMD128-FAST-NEXT: return $pop0 13547; 13548; NO-SIMD128-LABEL: max_ordered_v2f64: 13549; NO-SIMD128: .functype max_ordered_v2f64 (i32, f64, f64) -> () 13550; NO-SIMD128-NEXT: # %bb.0: 13551; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2 13552; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2 13553; NO-SIMD128-NEXT: f64.le $push1=, $2, $pop7 13554; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1 13555; NO-SIMD128-NEXT: f64.store 8($0), $pop2 13556; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2 13557; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2 13558; NO-SIMD128-NEXT: f64.le $push3=, $1, $pop5 13559; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3 13560; NO-SIMD128-NEXT: f64.store 0($0), $pop4 13561; NO-SIMD128-NEXT: return 13562; 13563; NO-SIMD128-FAST-LABEL: max_ordered_v2f64: 13564; NO-SIMD128-FAST: .functype max_ordered_v2f64 (i32, f64, f64) -> () 13565; NO-SIMD128-FAST-NEXT: # %bb.0: 13566; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2 13567; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2 13568; NO-SIMD128-FAST-NEXT: f64.le $push1=, $1, $pop7 13569; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1 13570; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2 13571; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2 13572; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2 13573; NO-SIMD128-FAST-NEXT: f64.le $push3=, $2, $pop5 13574; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3 13575; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4 13576; NO-SIMD128-FAST-NEXT: return 13577 %cmps = fcmp oge <2 x double> <double 5., double 5.>, %x 13578 %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>, 13579 <2 x double> %x 13580 ret <2 x double> %a 13581} 13582 13583declare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>) 13584define <2 x double> @min_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) { 13585; SIMD128-LABEL: min_intrinsic_v2f64: 13586; SIMD128: .functype min_intrinsic_v2f64 (v128, v128) -> (v128) 13587; SIMD128-NEXT: # %bb.0: 13588; SIMD128-NEXT: f64x2.min $push0=, $0, $1 13589; SIMD128-NEXT: return $pop0 13590; 13591; SIMD128-FAST-LABEL: min_intrinsic_v2f64: 13592; SIMD128-FAST: .functype min_intrinsic_v2f64 (v128, v128) -> (v128) 13593; SIMD128-FAST-NEXT: # %bb.0: 13594; SIMD128-FAST-NEXT: f64x2.min $push0=, $0, $1 13595; SIMD128-FAST-NEXT: return $pop0 13596; 13597; NO-SIMD128-LABEL: min_intrinsic_v2f64: 13598; NO-SIMD128: .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> () 13599; NO-SIMD128-NEXT: # %bb.0: 13600; NO-SIMD128-NEXT: f64.min $push0=, $2, $4 13601; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13602; NO-SIMD128-NEXT: f64.min $push1=, $1, $3 13603; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13604; NO-SIMD128-NEXT: return 13605; 13606; NO-SIMD128-FAST-LABEL: min_intrinsic_v2f64: 13607; NO-SIMD128-FAST: .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> () 13608; NO-SIMD128-FAST-NEXT: # %bb.0: 13609; NO-SIMD128-FAST-NEXT: f64.min $push0=, $1, $3 13610; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13611; NO-SIMD128-FAST-NEXT: f64.min $push1=, $2, $4 13612; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13613; NO-SIMD128-FAST-NEXT: return 13614 %a = call <2 x double> @llvm.minimum.v2f64(<2 x double> %x, <2 x double> %y) 13615 ret <2 x double> %a 13616} 13617 13618declare <2 x double> @llvm.maximum.v2f64(<2 x double>, <2 x double>) 13619define <2 x double> @max_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) { 13620; SIMD128-LABEL: max_intrinsic_v2f64: 13621; SIMD128: .functype max_intrinsic_v2f64 (v128, v128) -> (v128) 13622; SIMD128-NEXT: # %bb.0: 13623; SIMD128-NEXT: f64x2.max $push0=, $0, $1 13624; SIMD128-NEXT: return $pop0 13625; 13626; SIMD128-FAST-LABEL: max_intrinsic_v2f64: 13627; SIMD128-FAST: .functype max_intrinsic_v2f64 (v128, v128) -> (v128) 13628; SIMD128-FAST-NEXT: # %bb.0: 13629; SIMD128-FAST-NEXT: f64x2.max $push0=, $0, $1 13630; SIMD128-FAST-NEXT: return $pop0 13631; 13632; NO-SIMD128-LABEL: max_intrinsic_v2f64: 13633; NO-SIMD128: .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> () 13634; NO-SIMD128-NEXT: # %bb.0: 13635; NO-SIMD128-NEXT: f64.max $push0=, $2, $4 13636; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13637; NO-SIMD128-NEXT: f64.max $push1=, $1, $3 13638; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13639; NO-SIMD128-NEXT: return 13640; 13641; NO-SIMD128-FAST-LABEL: max_intrinsic_v2f64: 13642; NO-SIMD128-FAST: .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> () 13643; NO-SIMD128-FAST-NEXT: # %bb.0: 13644; NO-SIMD128-FAST-NEXT: f64.max $push0=, $1, $3 13645; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13646; NO-SIMD128-FAST-NEXT: f64.max $push1=, $2, $4 13647; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13648; NO-SIMD128-FAST-NEXT: return 13649 %a = call <2 x double> @llvm.maximum.v2f64(<2 x double> %x, <2 x double> %y) 13650 ret <2 x double> %a 13651} 13652 13653define <2 x double> @min_const_intrinsic_v2f64() { 13654; SIMD128-LABEL: min_const_intrinsic_v2f64: 13655; SIMD128: .functype min_const_intrinsic_v2f64 () -> (v128) 13656; SIMD128-NEXT: # %bb.0: 13657; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13658; SIMD128-NEXT: return $pop0 13659; 13660; SIMD128-FAST-LABEL: min_const_intrinsic_v2f64: 13661; SIMD128-FAST: .functype min_const_intrinsic_v2f64 () -> (v128) 13662; SIMD128-FAST-NEXT: # %bb.0: 13663; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 13664; SIMD128-FAST-NEXT: return $pop0 13665; 13666; NO-SIMD128-LABEL: min_const_intrinsic_v2f64: 13667; NO-SIMD128: .functype min_const_intrinsic_v2f64 (i32) -> () 13668; NO-SIMD128-NEXT: # %bb.0: 13669; NO-SIMD128-NEXT: i64.const $push0=, 4617315517961601024 13670; NO-SIMD128-NEXT: i64.store 8($0), $pop0 13671; NO-SIMD128-NEXT: i64.const $push1=, 4617315517961601024 13672; NO-SIMD128-NEXT: i64.store 0($0), $pop1 13673; NO-SIMD128-NEXT: return 13674; 13675; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v2f64: 13676; NO-SIMD128-FAST: .functype min_const_intrinsic_v2f64 (i32) -> () 13677; NO-SIMD128-FAST-NEXT: # %bb.0: 13678; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4617315517961601024 13679; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 13680; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4617315517961601024 13681; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 13682; NO-SIMD128-FAST-NEXT: return 13683 %a = call <2 x double> @llvm.minimum.v2f64( 13684 <2 x double> <double 42., double 42.>, 13685 <2 x double> <double 5., double 5.> 13686 ) 13687 ret <2 x double> %a 13688} 13689 13690define <2 x double> @max_const_intrinsic_v2f64() { 13691; SIMD128-LABEL: max_const_intrinsic_v2f64: 13692; SIMD128: .functype max_const_intrinsic_v2f64 () -> (v128) 13693; SIMD128-NEXT: # %bb.0: 13694; SIMD128-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5 13695; SIMD128-NEXT: return $pop0 13696; 13697; SIMD128-FAST-LABEL: max_const_intrinsic_v2f64: 13698; SIMD128-FAST: .functype max_const_intrinsic_v2f64 () -> (v128) 13699; SIMD128-FAST-NEXT: # %bb.0: 13700; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5 13701; SIMD128-FAST-NEXT: return $pop0 13702; 13703; NO-SIMD128-LABEL: max_const_intrinsic_v2f64: 13704; NO-SIMD128: .functype max_const_intrinsic_v2f64 (i32) -> () 13705; NO-SIMD128-NEXT: # %bb.0: 13706; NO-SIMD128-NEXT: i64.const $push0=, 4631107791820423168 13707; NO-SIMD128-NEXT: i64.store 8($0), $pop0 13708; NO-SIMD128-NEXT: i64.const $push1=, 4631107791820423168 13709; NO-SIMD128-NEXT: i64.store 0($0), $pop1 13710; NO-SIMD128-NEXT: return 13711; 13712; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v2f64: 13713; NO-SIMD128-FAST: .functype max_const_intrinsic_v2f64 (i32) -> () 13714; NO-SIMD128-FAST-NEXT: # %bb.0: 13715; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4631107791820423168 13716; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0 13717; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4631107791820423168 13718; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1 13719; NO-SIMD128-FAST-NEXT: return 13720 %a = call <2 x double> @llvm.maximum.v2f64( 13721 <2 x double> <double 42., double 42.>, 13722 <2 x double> <double 5., double 5.> 13723 ) 13724 ret <2 x double> %a 13725} 13726 13727define <2 x double> @pmin_v2f64(<2 x double> %x, <2 x double> %y) { 13728; SIMD128-LABEL: pmin_v2f64: 13729; SIMD128: .functype pmin_v2f64 (v128, v128) -> (v128) 13730; SIMD128-NEXT: # %bb.0: 13731; SIMD128-NEXT: f64x2.pmin $push0=, $0, $1 13732; SIMD128-NEXT: return $pop0 13733; 13734; SIMD128-FAST-LABEL: pmin_v2f64: 13735; SIMD128-FAST: .functype pmin_v2f64 (v128, v128) -> (v128) 13736; SIMD128-FAST-NEXT: # %bb.0: 13737; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $1 13738; SIMD128-FAST-NEXT: return $pop0 13739; 13740; NO-SIMD128-LABEL: pmin_v2f64: 13741; NO-SIMD128: .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> () 13742; NO-SIMD128-NEXT: # %bb.0: 13743; NO-SIMD128-NEXT: f64.lt $push0=, $4, $2 13744; NO-SIMD128-NEXT: f64.select $push1=, $4, $2, $pop0 13745; NO-SIMD128-NEXT: f64.store 8($0), $pop1 13746; NO-SIMD128-NEXT: f64.lt $push2=, $3, $1 13747; NO-SIMD128-NEXT: f64.select $push3=, $3, $1, $pop2 13748; NO-SIMD128-NEXT: f64.store 0($0), $pop3 13749; NO-SIMD128-NEXT: return 13750; 13751; NO-SIMD128-FAST-LABEL: pmin_v2f64: 13752; NO-SIMD128-FAST: .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> () 13753; NO-SIMD128-FAST-NEXT: # %bb.0: 13754; NO-SIMD128-FAST-NEXT: f64.lt $push0=, $3, $1 13755; NO-SIMD128-FAST-NEXT: f64.select $push1=, $3, $1, $pop0 13756; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop1 13757; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $4, $2 13758; NO-SIMD128-FAST-NEXT: f64.select $push3=, $4, $2, $pop2 13759; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop3 13760; NO-SIMD128-FAST-NEXT: return 13761 %c = fcmp olt <2 x double> %y, %x 13762 %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x 13763 ret <2 x double> %a 13764} 13765 13766define <2 x i64> @pmin_int_v2f64(<2 x i64> %x, <2 x i64> %y) { 13767; SIMD128-LABEL: pmin_int_v2f64: 13768; SIMD128: .functype pmin_int_v2f64 (v128, v128) -> (v128) 13769; SIMD128-NEXT: # %bb.0: 13770; SIMD128-NEXT: f64x2.pmin $push0=, $0, $1 13771; SIMD128-NEXT: return $pop0 13772; 13773; SIMD128-FAST-LABEL: pmin_int_v2f64: 13774; SIMD128-FAST: .functype pmin_int_v2f64 (v128, v128) -> (v128) 13775; SIMD128-FAST-NEXT: # %bb.0: 13776; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $1 13777; SIMD128-FAST-NEXT: return $pop0 13778; 13779; NO-SIMD128-LABEL: pmin_int_v2f64: 13780; NO-SIMD128: .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> () 13781; NO-SIMD128-NEXT: # %bb.0: 13782; NO-SIMD128-NEXT: f64.reinterpret_i64 $push1=, $4 13783; NO-SIMD128-NEXT: f64.reinterpret_i64 $push0=, $2 13784; NO-SIMD128-NEXT: f64.lt $push2=, $pop1, $pop0 13785; NO-SIMD128-NEXT: i64.select $push3=, $4, $2, $pop2 13786; NO-SIMD128-NEXT: i64.store 8($0), $pop3 13787; NO-SIMD128-NEXT: f64.reinterpret_i64 $push5=, $3 13788; NO-SIMD128-NEXT: f64.reinterpret_i64 $push4=, $1 13789; NO-SIMD128-NEXT: f64.lt $push6=, $pop5, $pop4 13790; NO-SIMD128-NEXT: i64.select $push7=, $3, $1, $pop6 13791; NO-SIMD128-NEXT: i64.store 0($0), $pop7 13792; NO-SIMD128-NEXT: return 13793; 13794; NO-SIMD128-FAST-LABEL: pmin_int_v2f64: 13795; NO-SIMD128-FAST: .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> () 13796; NO-SIMD128-FAST-NEXT: # %bb.0: 13797; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push1=, $3 13798; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push0=, $1 13799; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $pop1, $pop0 13800; NO-SIMD128-FAST-NEXT: i64.select $push3=, $3, $1, $pop2 13801; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop3 13802; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push5=, $4 13803; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push4=, $2 13804; NO-SIMD128-FAST-NEXT: f64.lt $push6=, $pop5, $pop4 13805; NO-SIMD128-FAST-NEXT: i64.select $push7=, $4, $2, $pop6 13806; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop7 13807; NO-SIMD128-FAST-NEXT: return 13808 %fx = bitcast <2 x i64> %x to <2 x double> 13809 %fy = bitcast <2 x i64> %y to <2 x double> 13810 %c = fcmp olt <2 x double> %fy, %fx 13811 %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x 13812 ret <2 x i64> %a 13813} 13814 13815define <2 x double> @pmax_v2f64(<2 x double> %x, <2 x double> %y) { 13816; SIMD128-LABEL: pmax_v2f64: 13817; SIMD128: .functype pmax_v2f64 (v128, v128) -> (v128) 13818; SIMD128-NEXT: # %bb.0: 13819; SIMD128-NEXT: f64x2.pmax $push0=, $0, $1 13820; SIMD128-NEXT: return $pop0 13821; 13822; SIMD128-FAST-LABEL: pmax_v2f64: 13823; SIMD128-FAST: .functype pmax_v2f64 (v128, v128) -> (v128) 13824; SIMD128-FAST-NEXT: # %bb.0: 13825; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $1 13826; SIMD128-FAST-NEXT: return $pop0 13827; 13828; NO-SIMD128-LABEL: pmax_v2f64: 13829; NO-SIMD128: .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> () 13830; NO-SIMD128-NEXT: # %bb.0: 13831; NO-SIMD128-NEXT: f64.lt $push0=, $2, $4 13832; NO-SIMD128-NEXT: f64.select $push1=, $4, $2, $pop0 13833; NO-SIMD128-NEXT: f64.store 8($0), $pop1 13834; NO-SIMD128-NEXT: f64.lt $push2=, $1, $3 13835; NO-SIMD128-NEXT: f64.select $push3=, $3, $1, $pop2 13836; NO-SIMD128-NEXT: f64.store 0($0), $pop3 13837; NO-SIMD128-NEXT: return 13838; 13839; NO-SIMD128-FAST-LABEL: pmax_v2f64: 13840; NO-SIMD128-FAST: .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> () 13841; NO-SIMD128-FAST-NEXT: # %bb.0: 13842; NO-SIMD128-FAST-NEXT: f64.lt $push0=, $1, $3 13843; NO-SIMD128-FAST-NEXT: f64.select $push1=, $3, $1, $pop0 13844; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop1 13845; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $2, $4 13846; NO-SIMD128-FAST-NEXT: f64.select $push3=, $4, $2, $pop2 13847; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop3 13848; NO-SIMD128-FAST-NEXT: return 13849 %c = fcmp olt <2 x double> %x, %y 13850 %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x 13851 ret <2 x double> %a 13852} 13853 13854define <2 x i64> @pmax_int_v2f64(<2 x i64> %x, <2 x i64> %y) { 13855; SIMD128-LABEL: pmax_int_v2f64: 13856; SIMD128: .functype pmax_int_v2f64 (v128, v128) -> (v128) 13857; SIMD128-NEXT: # %bb.0: 13858; SIMD128-NEXT: f64x2.pmax $push0=, $0, $1 13859; SIMD128-NEXT: return $pop0 13860; 13861; SIMD128-FAST-LABEL: pmax_int_v2f64: 13862; SIMD128-FAST: .functype pmax_int_v2f64 (v128, v128) -> (v128) 13863; SIMD128-FAST-NEXT: # %bb.0: 13864; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $1 13865; SIMD128-FAST-NEXT: return $pop0 13866; 13867; NO-SIMD128-LABEL: pmax_int_v2f64: 13868; NO-SIMD128: .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> () 13869; NO-SIMD128-NEXT: # %bb.0: 13870; NO-SIMD128-NEXT: f64.reinterpret_i64 $push1=, $2 13871; NO-SIMD128-NEXT: f64.reinterpret_i64 $push0=, $4 13872; NO-SIMD128-NEXT: f64.lt $push2=, $pop1, $pop0 13873; NO-SIMD128-NEXT: i64.select $push3=, $4, $2, $pop2 13874; NO-SIMD128-NEXT: i64.store 8($0), $pop3 13875; NO-SIMD128-NEXT: f64.reinterpret_i64 $push5=, $1 13876; NO-SIMD128-NEXT: f64.reinterpret_i64 $push4=, $3 13877; NO-SIMD128-NEXT: f64.lt $push6=, $pop5, $pop4 13878; NO-SIMD128-NEXT: i64.select $push7=, $3, $1, $pop6 13879; NO-SIMD128-NEXT: i64.store 0($0), $pop7 13880; NO-SIMD128-NEXT: return 13881; 13882; NO-SIMD128-FAST-LABEL: pmax_int_v2f64: 13883; NO-SIMD128-FAST: .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> () 13884; NO-SIMD128-FAST-NEXT: # %bb.0: 13885; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push1=, $1 13886; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push0=, $3 13887; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $pop1, $pop0 13888; NO-SIMD128-FAST-NEXT: i64.select $push3=, $3, $1, $pop2 13889; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop3 13890; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push5=, $2 13891; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push4=, $4 13892; NO-SIMD128-FAST-NEXT: f64.lt $push6=, $pop5, $pop4 13893; NO-SIMD128-FAST-NEXT: i64.select $push7=, $4, $2, $pop6 13894; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop7 13895; NO-SIMD128-FAST-NEXT: return 13896 %fx = bitcast <2 x i64> %x to <2 x double> 13897 %fy = bitcast <2 x i64> %y to <2 x double> 13898 %c = fcmp olt <2 x double> %fx, %fy 13899 %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x 13900 ret <2 x i64> %a 13901} 13902 13903define <2 x double> @add_v2f64(<2 x double> %x, <2 x double> %y) { 13904; SIMD128-LABEL: add_v2f64: 13905; SIMD128: .functype add_v2f64 (v128, v128) -> (v128) 13906; SIMD128-NEXT: # %bb.0: 13907; SIMD128-NEXT: f64x2.add $push0=, $0, $1 13908; SIMD128-NEXT: return $pop0 13909; 13910; SIMD128-FAST-LABEL: add_v2f64: 13911; SIMD128-FAST: .functype add_v2f64 (v128, v128) -> (v128) 13912; SIMD128-FAST-NEXT: # %bb.0: 13913; SIMD128-FAST-NEXT: f64x2.add $push0=, $0, $1 13914; SIMD128-FAST-NEXT: return $pop0 13915; 13916; NO-SIMD128-LABEL: add_v2f64: 13917; NO-SIMD128: .functype add_v2f64 (i32, f64, f64, f64, f64) -> () 13918; NO-SIMD128-NEXT: # %bb.0: 13919; NO-SIMD128-NEXT: f64.add $push0=, $2, $4 13920; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13921; NO-SIMD128-NEXT: f64.add $push1=, $1, $3 13922; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13923; NO-SIMD128-NEXT: return 13924; 13925; NO-SIMD128-FAST-LABEL: add_v2f64: 13926; NO-SIMD128-FAST: .functype add_v2f64 (i32, f64, f64, f64, f64) -> () 13927; NO-SIMD128-FAST-NEXT: # %bb.0: 13928; NO-SIMD128-FAST-NEXT: f64.add $push0=, $1, $3 13929; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13930; NO-SIMD128-FAST-NEXT: f64.add $push1=, $2, $4 13931; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13932; NO-SIMD128-FAST-NEXT: return 13933 %a = fadd <2 x double> %x, %y 13934 ret <2 x double> %a 13935} 13936 13937define <2 x double> @sub_v2f64(<2 x double> %x, <2 x double> %y) { 13938; SIMD128-LABEL: sub_v2f64: 13939; SIMD128: .functype sub_v2f64 (v128, v128) -> (v128) 13940; SIMD128-NEXT: # %bb.0: 13941; SIMD128-NEXT: f64x2.sub $push0=, $0, $1 13942; SIMD128-NEXT: return $pop0 13943; 13944; SIMD128-FAST-LABEL: sub_v2f64: 13945; SIMD128-FAST: .functype sub_v2f64 (v128, v128) -> (v128) 13946; SIMD128-FAST-NEXT: # %bb.0: 13947; SIMD128-FAST-NEXT: f64x2.sub $push0=, $0, $1 13948; SIMD128-FAST-NEXT: return $pop0 13949; 13950; NO-SIMD128-LABEL: sub_v2f64: 13951; NO-SIMD128: .functype sub_v2f64 (i32, f64, f64, f64, f64) -> () 13952; NO-SIMD128-NEXT: # %bb.0: 13953; NO-SIMD128-NEXT: f64.sub $push0=, $2, $4 13954; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13955; NO-SIMD128-NEXT: f64.sub $push1=, $1, $3 13956; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13957; NO-SIMD128-NEXT: return 13958; 13959; NO-SIMD128-FAST-LABEL: sub_v2f64: 13960; NO-SIMD128-FAST: .functype sub_v2f64 (i32, f64, f64, f64, f64) -> () 13961; NO-SIMD128-FAST-NEXT: # %bb.0: 13962; NO-SIMD128-FAST-NEXT: f64.sub $push0=, $1, $3 13963; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13964; NO-SIMD128-FAST-NEXT: f64.sub $push1=, $2, $4 13965; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 13966; NO-SIMD128-FAST-NEXT: return 13967 %a = fsub <2 x double> %x, %y 13968 ret <2 x double> %a 13969} 13970 13971define <2 x double> @div_v2f64(<2 x double> %x, <2 x double> %y) { 13972; SIMD128-LABEL: div_v2f64: 13973; SIMD128: .functype div_v2f64 (v128, v128) -> (v128) 13974; SIMD128-NEXT: # %bb.0: 13975; SIMD128-NEXT: f64x2.div $push0=, $0, $1 13976; SIMD128-NEXT: return $pop0 13977; 13978; SIMD128-FAST-LABEL: div_v2f64: 13979; SIMD128-FAST: .functype div_v2f64 (v128, v128) -> (v128) 13980; SIMD128-FAST-NEXT: # %bb.0: 13981; SIMD128-FAST-NEXT: f64x2.div $push0=, $0, $1 13982; SIMD128-FAST-NEXT: return $pop0 13983; 13984; NO-SIMD128-LABEL: div_v2f64: 13985; NO-SIMD128: .functype div_v2f64 (i32, f64, f64, f64, f64) -> () 13986; NO-SIMD128-NEXT: # %bb.0: 13987; NO-SIMD128-NEXT: f64.div $push0=, $2, $4 13988; NO-SIMD128-NEXT: f64.store 8($0), $pop0 13989; NO-SIMD128-NEXT: f64.div $push1=, $1, $3 13990; NO-SIMD128-NEXT: f64.store 0($0), $pop1 13991; NO-SIMD128-NEXT: return 13992; 13993; NO-SIMD128-FAST-LABEL: div_v2f64: 13994; NO-SIMD128-FAST: .functype div_v2f64 (i32, f64, f64, f64, f64) -> () 13995; NO-SIMD128-FAST-NEXT: # %bb.0: 13996; NO-SIMD128-FAST-NEXT: f64.div $push0=, $1, $3 13997; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 13998; NO-SIMD128-FAST-NEXT: f64.div $push1=, $2, $4 13999; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 14000; NO-SIMD128-FAST-NEXT: return 14001 %a = fdiv <2 x double> %x, %y 14002 ret <2 x double> %a 14003} 14004 14005define <2 x double> @mul_v2f64(<2 x double> %x, <2 x double> %y) { 14006; SIMD128-LABEL: mul_v2f64: 14007; SIMD128: .functype mul_v2f64 (v128, v128) -> (v128) 14008; SIMD128-NEXT: # %bb.0: 14009; SIMD128-NEXT: f64x2.mul $push0=, $0, $1 14010; SIMD128-NEXT: return $pop0 14011; 14012; SIMD128-FAST-LABEL: mul_v2f64: 14013; SIMD128-FAST: .functype mul_v2f64 (v128, v128) -> (v128) 14014; SIMD128-FAST-NEXT: # %bb.0: 14015; SIMD128-FAST-NEXT: f64x2.mul $push0=, $0, $1 14016; SIMD128-FAST-NEXT: return $pop0 14017; 14018; NO-SIMD128-LABEL: mul_v2f64: 14019; NO-SIMD128: .functype mul_v2f64 (i32, f64, f64, f64, f64) -> () 14020; NO-SIMD128-NEXT: # %bb.0: 14021; NO-SIMD128-NEXT: f64.mul $push0=, $2, $4 14022; NO-SIMD128-NEXT: f64.store 8($0), $pop0 14023; NO-SIMD128-NEXT: f64.mul $push1=, $1, $3 14024; NO-SIMD128-NEXT: f64.store 0($0), $pop1 14025; NO-SIMD128-NEXT: return 14026; 14027; NO-SIMD128-FAST-LABEL: mul_v2f64: 14028; NO-SIMD128-FAST: .functype mul_v2f64 (i32, f64, f64, f64, f64) -> () 14029; NO-SIMD128-FAST-NEXT: # %bb.0: 14030; NO-SIMD128-FAST-NEXT: f64.mul $push0=, $1, $3 14031; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 14032; NO-SIMD128-FAST-NEXT: f64.mul $push1=, $2, $4 14033; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 14034; NO-SIMD128-FAST-NEXT: return 14035 %a = fmul <2 x double> %x, %y 14036 ret <2 x double> %a 14037} 14038 14039declare <2 x double> @llvm.sqrt.v2f64(<2 x double> %x) 14040define <2 x double> @sqrt_v2f64(<2 x double> %x) { 14041; SIMD128-LABEL: sqrt_v2f64: 14042; SIMD128: .functype sqrt_v2f64 (v128) -> (v128) 14043; SIMD128-NEXT: # %bb.0: 14044; SIMD128-NEXT: f64x2.sqrt $push0=, $0 14045; SIMD128-NEXT: return $pop0 14046; 14047; SIMD128-FAST-LABEL: sqrt_v2f64: 14048; SIMD128-FAST: .functype sqrt_v2f64 (v128) -> (v128) 14049; SIMD128-FAST-NEXT: # %bb.0: 14050; SIMD128-FAST-NEXT: f64x2.sqrt $push0=, $0 14051; SIMD128-FAST-NEXT: return $pop0 14052; 14053; NO-SIMD128-LABEL: sqrt_v2f64: 14054; NO-SIMD128: .functype sqrt_v2f64 (i32, f64, f64) -> () 14055; NO-SIMD128-NEXT: # %bb.0: 14056; NO-SIMD128-NEXT: f64.sqrt $push0=, $2 14057; NO-SIMD128-NEXT: f64.store 8($0), $pop0 14058; NO-SIMD128-NEXT: f64.sqrt $push1=, $1 14059; NO-SIMD128-NEXT: f64.store 0($0), $pop1 14060; NO-SIMD128-NEXT: return 14061; 14062; NO-SIMD128-FAST-LABEL: sqrt_v2f64: 14063; NO-SIMD128-FAST: .functype sqrt_v2f64 (i32, f64, f64) -> () 14064; NO-SIMD128-FAST-NEXT: # %bb.0: 14065; NO-SIMD128-FAST-NEXT: f64.sqrt $push0=, $1 14066; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0 14067; NO-SIMD128-FAST-NEXT: f64.sqrt $push1=, $2 14068; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1 14069; NO-SIMD128-FAST-NEXT: return 14070 %a = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %x) 14071 ret <2 x double> %a 14072} 14073