brintos

brintos / llvm-project-archived public Read only

0
0
Text · 47.5 KiB · 70c6baf Raw
1097 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 | FileCheck %s3 4; Tests that bool vecreduce produces anytrue and alltrue instructions5 6target triple = "wasm32-unknown-unknown"7 8declare i1 @llvm.vector.reduce.or.v2i1(<2 x i1>)9declare i1 @llvm.vector.reduce.or.v4i1(<4 x i1>)10declare i1 @llvm.vector.reduce.or.v7i1(<7 x i1>)11declare i1 @llvm.vector.reduce.or.v8i1(<8 x i1>)12declare i1 @llvm.vector.reduce.or.v16i1(<16 x i1>)13declare i1 @llvm.vector.reduce.or.v64i1(<64 x i1>)14declare i1 @llvm.vector.reduce.and.v2i1(<2 x i1>)15declare i1 @llvm.vector.reduce.and.v4i1(<4 x i1>)16declare i1 @llvm.vector.reduce.and.v7i1(<7 x i1>)17declare i1 @llvm.vector.reduce.and.v8i1(<8 x i1>)18declare i1 @llvm.vector.reduce.and.v16i1(<16 x i1>)19declare i1 @llvm.vector.reduce.and.v64i1(<64 x i1> %x)20 21; =====================22; Regular vectors of i123; =====================24 25define i1 @test_any_v8i1(<8 x i1> %x) {26; CHECK-LABEL: test_any_v8i1:27; CHECK:         .functype test_any_v8i1 (v128) -> (i32)28; CHECK-NEXT:  # %bb.0:29; CHECK-NEXT:    i32.const $push0=, 1530; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop031; CHECK-NEXT:    i32.const $push4=, 1532; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop433; CHECK-NEXT:    v128.any_true $push3=, $pop234; CHECK-NEXT:    return $pop335  %ret = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> %x)36  ret i1 %ret37}38 39define i1 @test_all_v8i1(<8 x i1> %x) {40; CHECK-LABEL: test_all_v8i1:41; CHECK:         .functype test_all_v8i1 (v128) -> (i32)42; CHECK-NEXT:  # %bb.0:43; CHECK-NEXT:    i32.const $push0=, 1544; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop045; CHECK-NEXT:    i32.const $push4=, 1546; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop447; CHECK-NEXT:    i16x8.all_true $push3=, $pop248; CHECK-NEXT:    return $pop349  %ret = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> %x)50  ret i1 %ret51}52 53define i1 @test_none_v8i1(<8 x i1> %x) {54; CHECK-LABEL: test_none_v8i1:55; CHECK:         .functype test_none_v8i1 (v128) -> (i32)56; CHECK-NEXT:  # %bb.0:57; CHECK-NEXT:    i32.const $push0=, 1558; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop059; CHECK-NEXT:    i32.const $push6=, 1560; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop661; CHECK-NEXT:    v128.any_true $push3=, $pop262; CHECK-NEXT:    i32.const $push4=, 163; CHECK-NEXT:    i32.xor $push5=, $pop3, $pop464; CHECK-NEXT:    return $pop565  %any = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> %x)66  %none = xor i1 %any, 167  ret i1 %none68}69 70define i1 @test_not_all_v8i1(<8 x i1> %x) {71; CHECK-LABEL: test_not_all_v8i1:72; CHECK:         .functype test_not_all_v8i1 (v128) -> (i32)73; CHECK-NEXT:  # %bb.0:74; CHECK-NEXT:    i32.const $push0=, 1575; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop076; CHECK-NEXT:    i32.const $push6=, 1577; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop678; CHECK-NEXT:    i16x8.all_true $push3=, $pop279; CHECK-NEXT:    i32.const $push4=, 180; CHECK-NEXT:    i32.xor $push5=, $pop3, $pop481; CHECK-NEXT:    return $pop582  %all = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> %x)83  %notall = xor i1 %all, 184  ret i1 %notall85}86 87define i1 @test_any_v16i1(<16 x i1> %x) {88; CHECK-LABEL: test_any_v16i1:89; CHECK:         .functype test_any_v16i1 (v128) -> (i32)90; CHECK-NEXT:  # %bb.0:91; CHECK-NEXT:    i32.const $push0=, 792; CHECK-NEXT:    i8x16.shl $push1=, $0, $pop093; CHECK-NEXT:    i32.const $push4=, 794; CHECK-NEXT:    i8x16.shr_s $push2=, $pop1, $pop495; CHECK-NEXT:    v128.any_true $push3=, $pop296; CHECK-NEXT:    return $pop397  %ret = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> %x)98  ret i1 %ret99}100 101define i1 @test_all_v16i1(<16 x i1> %x) {102; CHECK-LABEL: test_all_v16i1:103; CHECK:         .functype test_all_v16i1 (v128) -> (i32)104; CHECK-NEXT:  # %bb.0:105; CHECK-NEXT:    i32.const $push0=, 7106; CHECK-NEXT:    i8x16.shl $push1=, $0, $pop0107; CHECK-NEXT:    i32.const $push4=, 7108; CHECK-NEXT:    i8x16.shr_s $push2=, $pop1, $pop4109; CHECK-NEXT:    i8x16.all_true $push3=, $pop2110; CHECK-NEXT:    return $pop3111  %ret = call i1 @llvm.vector.reduce.and.v16i1(<16 x i1> %x)112  ret i1 %ret113}114 115; ==================================116; Regular vectors of larger integers117; ==================================118 119define i1 @test_any_v16i8(<16 x i8> %x) {120; CHECK-LABEL: test_any_v16i8:121; CHECK:         .functype test_any_v16i8 (v128) -> (i32)122; CHECK-NEXT:  # %bb.0:123; CHECK-NEXT:    i32.const $push0=, 7124; CHECK-NEXT:    i8x16.shl $push1=, $0, $pop0125; CHECK-NEXT:    i32.const $push4=, 7126; CHECK-NEXT:    i8x16.shr_s $push2=, $pop1, $pop4127; CHECK-NEXT:    v128.any_true $push3=, $pop2128; CHECK-NEXT:    return $pop3129  %bits = trunc <16 x i8> %x to <16 x i1>130  %ret = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> %bits)131  ret i1 %ret132}133 134define i1 @test_all_v16i8(<16 x i8> %x) {135; CHECK-LABEL: test_all_v16i8:136; CHECK:         .functype test_all_v16i8 (v128) -> (i32)137; CHECK-NEXT:  # %bb.0:138; CHECK-NEXT:    i32.const $push0=, 7139; CHECK-NEXT:    i8x16.shl $push1=, $0, $pop0140; CHECK-NEXT:    i32.const $push4=, 7141; CHECK-NEXT:    i8x16.shr_s $push2=, $pop1, $pop4142; CHECK-NEXT:    i8x16.all_true $push3=, $pop2143; CHECK-NEXT:    return $pop3144  %bits = trunc <16 x i8> %x to <16 x i1>145  %ret = call i1 @llvm.vector.reduce.and.v16i1(<16 x i1> %bits)146  ret i1 %ret147}148 149define i1 @test_any_v8i16(<8 x i16> %x) {150; CHECK-LABEL: test_any_v8i16:151; CHECK:         .functype test_any_v8i16 (v128) -> (i32)152; CHECK-NEXT:  # %bb.0:153; CHECK-NEXT:    i32.const $push0=, 15154; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop0155; CHECK-NEXT:    i32.const $push4=, 15156; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop4157; CHECK-NEXT:    v128.any_true $push3=, $pop2158; CHECK-NEXT:    return $pop3159  %bits = trunc <8 x i16> %x to <8 x i1>160  %ret = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> %bits)161  ret i1 %ret162}163 164define i1 @test_all_v8i16(<8 x i16> %x) {165; CHECK-LABEL: test_all_v8i16:166; CHECK:         .functype test_all_v8i16 (v128) -> (i32)167; CHECK-NEXT:  # %bb.0:168; CHECK-NEXT:    i32.const $push0=, 15169; CHECK-NEXT:    i16x8.shl $push1=, $0, $pop0170; CHECK-NEXT:    i32.const $push4=, 15171; CHECK-NEXT:    i16x8.shr_s $push2=, $pop1, $pop4172; CHECK-NEXT:    i16x8.all_true $push3=, $pop2173; CHECK-NEXT:    return $pop3174  %bits = trunc <8 x i16> %x to <8 x i1>175  %ret = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> %bits)176  ret i1 %ret177}178 179define i1 @test_any_v4i32(<4 x i32> %x) {180; CHECK-LABEL: test_any_v4i32:181; CHECK:         .functype test_any_v4i32 (v128) -> (i32)182; CHECK-NEXT:  # %bb.0:183; CHECK-NEXT:    i32.const $push0=, 31184; CHECK-NEXT:    i32x4.shl $push1=, $0, $pop0185; CHECK-NEXT:    i32.const $push4=, 31186; CHECK-NEXT:    i32x4.shr_s $push2=, $pop1, $pop4187; CHECK-NEXT:    v128.any_true $push3=, $pop2188; CHECK-NEXT:    return $pop3189  %bits = trunc <4 x i32> %x to <4 x i1>190  %ret = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> %bits)191  ret i1 %ret192}193 194define i1 @test_all_v4i32(<4 x i32> %x) {195; CHECK-LABEL: test_all_v4i32:196; CHECK:         .functype test_all_v4i32 (v128) -> (i32)197; CHECK-NEXT:  # %bb.0:198; CHECK-NEXT:    i32.const $push0=, 31199; CHECK-NEXT:    i32x4.shl $push1=, $0, $pop0200; CHECK-NEXT:    i32.const $push4=, 31201; CHECK-NEXT:    i32x4.shr_s $push2=, $pop1, $pop4202; CHECK-NEXT:    i32x4.all_true $push3=, $pop2203; CHECK-NEXT:    return $pop3204  %bits = trunc <4 x i32> %x to <4 x i1>205  %ret = call i1 @llvm.vector.reduce.and.v4i1(<4 x i1> %bits)206  ret i1 %ret207}208 209define i1 @test_any_v2i64(<2 x i64> %x) {210; CHECK-LABEL: test_any_v2i64:211; CHECK:         .functype test_any_v2i64 (v128) -> (i32)212; CHECK-NEXT:  # %bb.0:213; CHECK-NEXT:    i32.const $push0=, 63214; CHECK-NEXT:    i64x2.shl $push1=, $0, $pop0215; CHECK-NEXT:    i32.const $push4=, 63216; CHECK-NEXT:    i64x2.shr_s $push2=, $pop1, $pop4217; CHECK-NEXT:    v128.any_true $push3=, $pop2218; CHECK-NEXT:    return $pop3219  %bits = trunc <2 x i64> %x to <2 x i1>220  %ret = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> %bits)221  ret i1 %ret222}223 224define i1 @test_all_v2i64(<2 x i64> %x) {225; CHECK-LABEL: test_all_v2i64:226; CHECK:         .functype test_all_v2i64 (v128) -> (i32)227; CHECK-NEXT:  # %bb.0:228; CHECK-NEXT:    i32.const $push0=, 63229; CHECK-NEXT:    i64x2.shl $push1=, $0, $pop0230; CHECK-NEXT:    i32.const $push4=, 63231; CHECK-NEXT:    i64x2.shr_s $push2=, $pop1, $pop4232; CHECK-NEXT:    i64x2.all_true $push3=, $pop2233; CHECK-NEXT:    return $pop3234  %bits = trunc <2 x i64> %x to <2 x i1>235  %ret = call i1 @llvm.vector.reduce.and.v2i1(<2 x i1> %bits)236  ret i1 %ret237}238 239; ====================240; Unusual vector sizes241; ====================242 243define i1 @test_any_v7i1(<7 x i1> %x) {244; CHECK-LABEL: test_any_v7i1:245; CHECK:         .functype test_any_v7i1 (i32, i32, i32, i32, i32, i32, i32) -> (i32)246; CHECK-NEXT:  # %bb.0:247; CHECK-NEXT:    i32.or $push0=, $0, $1248; CHECK-NEXT:    i32.or $push1=, $pop0, $2249; CHECK-NEXT:    i32.or $push2=, $pop1, $3250; CHECK-NEXT:    i32.or $push3=, $pop2, $4251; CHECK-NEXT:    i32.or $push4=, $pop3, $5252; CHECK-NEXT:    i32.or $push5=, $pop4, $6253; CHECK-NEXT:    return $pop5254  %ret = call i1 @llvm.vector.reduce.or.v7i1(<7 x i1> %x)255  ret i1 %ret256}257 258define i1 @test_all_v7i1(<7 x i1> %x) {259; CHECK-LABEL: test_all_v7i1:260; CHECK:         .functype test_all_v7i1 (i32, i32, i32, i32, i32, i32, i32) -> (i32)261; CHECK-NEXT:  # %bb.0:262; CHECK-NEXT:    i32.and $push0=, $0, $1263; CHECK-NEXT:    i32.and $push1=, $pop0, $2264; CHECK-NEXT:    i32.and $push2=, $pop1, $3265; CHECK-NEXT:    i32.and $push3=, $pop2, $4266; CHECK-NEXT:    i32.and $push4=, $pop3, $5267; CHECK-NEXT:    i32.and $push5=, $pop4, $6268; CHECK-NEXT:    i32.const $push6=, 1269; CHECK-NEXT:    i32.and $push7=, $pop5, $pop6270; CHECK-NEXT:    return $pop7271  %ret = call i1 @llvm.vector.reduce.and.v7i1(<7 x i1> %x)272  ret i1 %ret273}274 275define i1 @test_any_v8i8(<8 x i8> %x) {276; CHECK-LABEL: test_any_v8i8:277; CHECK:         .functype test_any_v8i8 (v128) -> (i32)278; CHECK-NEXT:  # %bb.0:279; CHECK-NEXT:    i16x8.extend_low_i8x16_u $push0=, $0280; CHECK-NEXT:    i32.const $push1=, 15281; CHECK-NEXT:    i16x8.shl $push2=, $pop0, $pop1282; CHECK-NEXT:    i32.const $push5=, 15283; CHECK-NEXT:    i16x8.shr_s $push3=, $pop2, $pop5284; CHECK-NEXT:    v128.any_true $push4=, $pop3285; CHECK-NEXT:    return $pop4286  %bits = trunc <8 x i8> %x to <8 x i1>287  %ret = call i1 @llvm.vector.reduce.or.v8i1(<8 x i1> %bits)288  ret i1 %ret289}290 291define i1 @test_all_v8i8(<8 x i8> %x) {292; CHECK-LABEL: test_all_v8i8:293; CHECK:         .functype test_all_v8i8 (v128) -> (i32)294; CHECK-NEXT:  # %bb.0:295; CHECK-NEXT:    i16x8.extend_low_i8x16_u $push0=, $0296; CHECK-NEXT:    i32.const $push1=, 15297; CHECK-NEXT:    i16x8.shl $push2=, $pop0, $pop1298; CHECK-NEXT:    i32.const $push5=, 15299; CHECK-NEXT:    i16x8.shr_s $push3=, $pop2, $pop5300; CHECK-NEXT:    i16x8.all_true $push4=, $pop3301; CHECK-NEXT:    return $pop4302  %bits = trunc <8 x i8> %x to <8 x i1>303  %ret = call i1 @llvm.vector.reduce.and.v8i1(<8 x i1> %bits)304  ret i1 %ret305}306 307;; TODO: Improve this codegen.308define i1 @test_any_v64i8(<64 x i8> %x) {309; CHECK-LABEL: test_any_v64i8:310; CHECK:         .functype test_any_v64i8 (v128, v128, v128, v128) -> (i32)311; CHECK-NEXT:  # %bb.0:312; CHECK-NEXT:    global.get $push264=, __stack_pointer313; CHECK-NEXT:    i32.const $push265=, 16314; CHECK-NEXT:    i32.sub $drop=, $pop264, $pop265315; CHECK-NEXT:    i8x16.extract_lane_u $push254=, $0, 15316; CHECK-NEXT:    i8x16.extract_lane_u $push253=, $2, 15317; CHECK-NEXT:    i32.or $push255=, $pop254, $pop253318; CHECK-NEXT:    i32.const $push133=, 15319; CHECK-NEXT:    i32.shl $push256=, $pop255, $pop133320; CHECK-NEXT:    i8x16.extract_lane_u $push195=, $0, 0321; CHECK-NEXT:    i32.const $push1=, 1322; CHECK-NEXT:    i32.and $push196=, $pop195, $pop1323; CHECK-NEXT:    i8x16.extract_lane_u $push197=, $0, 1324; CHECK-NEXT:    i32.const $push368=, 1325; CHECK-NEXT:    i32.and $push198=, $pop197, $pop368326; CHECK-NEXT:    i32.const $push367=, 1327; CHECK-NEXT:    i32.shl $push199=, $pop198, $pop367328; CHECK-NEXT:    i32.or $push200=, $pop196, $pop199329; CHECK-NEXT:    i8x16.extract_lane_u $push201=, $0, 2330; CHECK-NEXT:    i32.const $push366=, 1331; CHECK-NEXT:    i32.and $push202=, $pop201, $pop366332; CHECK-NEXT:    i32.const $push9=, 2333; CHECK-NEXT:    i32.shl $push203=, $pop202, $pop9334; CHECK-NEXT:    i32.or $push204=, $pop200, $pop203335; CHECK-NEXT:    i8x16.extract_lane_u $push205=, $0, 3336; CHECK-NEXT:    i32.const $push365=, 1337; CHECK-NEXT:    i32.and $push206=, $pop205, $pop365338; CHECK-NEXT:    i32.const $push14=, 3339; CHECK-NEXT:    i32.shl $push207=, $pop206, $pop14340; CHECK-NEXT:    i32.or $push208=, $pop204, $pop207341; CHECK-NEXT:    i8x16.extract_lane_u $push209=, $0, 4342; CHECK-NEXT:    i32.const $push364=, 1343; CHECK-NEXT:    i32.and $push210=, $pop209, $pop364344; CHECK-NEXT:    i32.const $push19=, 4345; CHECK-NEXT:    i32.shl $push211=, $pop210, $pop19346; CHECK-NEXT:    i32.or $push212=, $pop208, $pop211347; CHECK-NEXT:    i8x16.extract_lane_u $push213=, $0, 5348; CHECK-NEXT:    i32.const $push363=, 1349; CHECK-NEXT:    i32.and $push214=, $pop213, $pop363350; CHECK-NEXT:    i32.const $push24=, 5351; CHECK-NEXT:    i32.shl $push215=, $pop214, $pop24352; CHECK-NEXT:    i32.or $push216=, $pop212, $pop215353; CHECK-NEXT:    i8x16.extract_lane_u $push217=, $0, 6354; CHECK-NEXT:    i32.const $push362=, 1355; CHECK-NEXT:    i32.and $push218=, $pop217, $pop362356; CHECK-NEXT:    i32.const $push29=, 6357; CHECK-NEXT:    i32.shl $push219=, $pop218, $pop29358; CHECK-NEXT:    i32.or $push220=, $pop216, $pop219359; CHECK-NEXT:    i8x16.extract_lane_u $push221=, $0, 7360; CHECK-NEXT:    i32.const $push361=, 1361; CHECK-NEXT:    i32.and $push222=, $pop221, $pop361362; CHECK-NEXT:    i32.const $push34=, 7363; CHECK-NEXT:    i32.shl $push223=, $pop222, $pop34364; CHECK-NEXT:    i32.or $push224=, $pop220, $pop223365; CHECK-NEXT:    i8x16.extract_lane_u $push225=, $0, 8366; CHECK-NEXT:    i32.const $push360=, 1367; CHECK-NEXT:    i32.and $push226=, $pop225, $pop360368; CHECK-NEXT:    i32.const $push39=, 8369; CHECK-NEXT:    i32.shl $push227=, $pop226, $pop39370; CHECK-NEXT:    i32.or $push228=, $pop224, $pop227371; CHECK-NEXT:    i8x16.extract_lane_u $push229=, $0, 9372; CHECK-NEXT:    i32.const $push359=, 1373; CHECK-NEXT:    i32.and $push230=, $pop229, $pop359374; CHECK-NEXT:    i32.const $push44=, 9375; CHECK-NEXT:    i32.shl $push231=, $pop230, $pop44376; CHECK-NEXT:    i32.or $push232=, $pop228, $pop231377; CHECK-NEXT:    i8x16.extract_lane_u $push233=, $0, 10378; CHECK-NEXT:    i32.const $push358=, 1379; CHECK-NEXT:    i32.and $push234=, $pop233, $pop358380; CHECK-NEXT:    i32.const $push49=, 10381; CHECK-NEXT:    i32.shl $push235=, $pop234, $pop49382; CHECK-NEXT:    i32.or $push236=, $pop232, $pop235383; CHECK-NEXT:    i8x16.extract_lane_u $push237=, $0, 11384; CHECK-NEXT:    i32.const $push357=, 1385; CHECK-NEXT:    i32.and $push238=, $pop237, $pop357386; CHECK-NEXT:    i32.const $push54=, 11387; CHECK-NEXT:    i32.shl $push239=, $pop238, $pop54388; CHECK-NEXT:    i32.or $push240=, $pop236, $pop239389; CHECK-NEXT:    i8x16.extract_lane_u $push241=, $0, 12390; CHECK-NEXT:    i32.const $push356=, 1391; CHECK-NEXT:    i32.and $push242=, $pop241, $pop356392; CHECK-NEXT:    i32.const $push59=, 12393; CHECK-NEXT:    i32.shl $push243=, $pop242, $pop59394; CHECK-NEXT:    i32.or $push244=, $pop240, $pop243395; CHECK-NEXT:    i8x16.extract_lane_u $push245=, $0, 13396; CHECK-NEXT:    i32.const $push355=, 1397; CHECK-NEXT:    i32.and $push246=, $pop245, $pop355398; CHECK-NEXT:    i32.const $push64=, 13399; CHECK-NEXT:    i32.shl $push247=, $pop246, $pop64400; CHECK-NEXT:    i32.or $push248=, $pop244, $pop247401; CHECK-NEXT:    i8x16.extract_lane_u $push249=, $0, 14402; CHECK-NEXT:    i32.const $push354=, 1403; CHECK-NEXT:    i32.and $push250=, $pop249, $pop354404; CHECK-NEXT:    i32.const $push69=, 14405; CHECK-NEXT:    i32.shl $push251=, $pop250, $pop69406; CHECK-NEXT:    i32.or $push252=, $pop248, $pop251407; CHECK-NEXT:    i32.or $push257=, $pop256, $pop252408; CHECK-NEXT:    i8x16.extract_lane_u $push137=, $2, 0409; CHECK-NEXT:    i32.const $push353=, 1410; CHECK-NEXT:    i32.and $push138=, $pop137, $pop353411; CHECK-NEXT:    i8x16.extract_lane_u $push139=, $2, 1412; CHECK-NEXT:    i32.const $push352=, 1413; CHECK-NEXT:    i32.and $push140=, $pop139, $pop352414; CHECK-NEXT:    i32.const $push351=, 1415; CHECK-NEXT:    i32.shl $push141=, $pop140, $pop351416; CHECK-NEXT:    i32.or $push142=, $pop138, $pop141417; CHECK-NEXT:    i8x16.extract_lane_u $push143=, $2, 2418; CHECK-NEXT:    i32.const $push350=, 1419; CHECK-NEXT:    i32.and $push144=, $pop143, $pop350420; CHECK-NEXT:    i32.const $push349=, 2421; CHECK-NEXT:    i32.shl $push145=, $pop144, $pop349422; CHECK-NEXT:    i32.or $push146=, $pop142, $pop145423; CHECK-NEXT:    i8x16.extract_lane_u $push147=, $2, 3424; CHECK-NEXT:    i32.const $push348=, 1425; CHECK-NEXT:    i32.and $push148=, $pop147, $pop348426; CHECK-NEXT:    i32.const $push347=, 3427; CHECK-NEXT:    i32.shl $push149=, $pop148, $pop347428; CHECK-NEXT:    i32.or $push150=, $pop146, $pop149429; CHECK-NEXT:    i8x16.extract_lane_u $push151=, $2, 4430; CHECK-NEXT:    i32.const $push346=, 1431; CHECK-NEXT:    i32.and $push152=, $pop151, $pop346432; CHECK-NEXT:    i32.const $push345=, 4433; CHECK-NEXT:    i32.shl $push153=, $pop152, $pop345434; CHECK-NEXT:    i32.or $push154=, $pop150, $pop153435; CHECK-NEXT:    i8x16.extract_lane_u $push155=, $2, 5436; CHECK-NEXT:    i32.const $push344=, 1437; CHECK-NEXT:    i32.and $push156=, $pop155, $pop344438; CHECK-NEXT:    i32.const $push343=, 5439; CHECK-NEXT:    i32.shl $push157=, $pop156, $pop343440; CHECK-NEXT:    i32.or $push158=, $pop154, $pop157441; CHECK-NEXT:    i8x16.extract_lane_u $push159=, $2, 6442; CHECK-NEXT:    i32.const $push342=, 1443; CHECK-NEXT:    i32.and $push160=, $pop159, $pop342444; CHECK-NEXT:    i32.const $push341=, 6445; CHECK-NEXT:    i32.shl $push161=, $pop160, $pop341446; CHECK-NEXT:    i32.or $push162=, $pop158, $pop161447; CHECK-NEXT:    i8x16.extract_lane_u $push163=, $2, 7448; CHECK-NEXT:    i32.const $push340=, 1449; CHECK-NEXT:    i32.and $push164=, $pop163, $pop340450; CHECK-NEXT:    i32.const $push339=, 7451; CHECK-NEXT:    i32.shl $push165=, $pop164, $pop339452; CHECK-NEXT:    i32.or $push166=, $pop162, $pop165453; CHECK-NEXT:    i8x16.extract_lane_u $push167=, $2, 8454; CHECK-NEXT:    i32.const $push338=, 1455; CHECK-NEXT:    i32.and $push168=, $pop167, $pop338456; CHECK-NEXT:    i32.const $push337=, 8457; CHECK-NEXT:    i32.shl $push169=, $pop168, $pop337458; CHECK-NEXT:    i32.or $push170=, $pop166, $pop169459; CHECK-NEXT:    i8x16.extract_lane_u $push171=, $2, 9460; CHECK-NEXT:    i32.const $push336=, 1461; CHECK-NEXT:    i32.and $push172=, $pop171, $pop336462; CHECK-NEXT:    i32.const $push335=, 9463; CHECK-NEXT:    i32.shl $push173=, $pop172, $pop335464; CHECK-NEXT:    i32.or $push174=, $pop170, $pop173465; CHECK-NEXT:    i8x16.extract_lane_u $push175=, $2, 10466; CHECK-NEXT:    i32.const $push334=, 1467; CHECK-NEXT:    i32.and $push176=, $pop175, $pop334468; CHECK-NEXT:    i32.const $push333=, 10469; CHECK-NEXT:    i32.shl $push177=, $pop176, $pop333470; CHECK-NEXT:    i32.or $push178=, $pop174, $pop177471; CHECK-NEXT:    i8x16.extract_lane_u $push179=, $2, 11472; CHECK-NEXT:    i32.const $push332=, 1473; CHECK-NEXT:    i32.and $push180=, $pop179, $pop332474; CHECK-NEXT:    i32.const $push331=, 11475; CHECK-NEXT:    i32.shl $push181=, $pop180, $pop331476; CHECK-NEXT:    i32.or $push182=, $pop178, $pop181477; CHECK-NEXT:    i8x16.extract_lane_u $push183=, $2, 12478; CHECK-NEXT:    i32.const $push330=, 1479; CHECK-NEXT:    i32.and $push184=, $pop183, $pop330480; CHECK-NEXT:    i32.const $push329=, 12481; CHECK-NEXT:    i32.shl $push185=, $pop184, $pop329482; CHECK-NEXT:    i32.or $push186=, $pop182, $pop185483; CHECK-NEXT:    i8x16.extract_lane_u $push187=, $2, 13484; CHECK-NEXT:    i32.const $push328=, 1485; CHECK-NEXT:    i32.and $push188=, $pop187, $pop328486; CHECK-NEXT:    i32.const $push327=, 13487; CHECK-NEXT:    i32.shl $push189=, $pop188, $pop327488; CHECK-NEXT:    i32.or $push190=, $pop186, $pop189489; CHECK-NEXT:    i8x16.extract_lane_u $push191=, $2, 14490; CHECK-NEXT:    i32.const $push326=, 1491; CHECK-NEXT:    i32.and $push192=, $pop191, $pop326492; CHECK-NEXT:    i32.const $push325=, 14493; CHECK-NEXT:    i32.shl $push193=, $pop192, $pop325494; CHECK-NEXT:    i32.or $push194=, $pop190, $pop193495; CHECK-NEXT:    i32.or $push258=, $pop257, $pop194496; CHECK-NEXT:    i8x16.extract_lane_u $push131=, $1, 15497; CHECK-NEXT:    i8x16.extract_lane_u $push130=, $3, 15498; CHECK-NEXT:    i32.or $push132=, $pop131, $pop130499; CHECK-NEXT:    i32.const $push324=, 15500; CHECK-NEXT:    i32.shl $push134=, $pop132, $pop324501; CHECK-NEXT:    i8x16.extract_lane_u $push72=, $1, 0502; CHECK-NEXT:    i32.const $push323=, 1503; CHECK-NEXT:    i32.and $push73=, $pop72, $pop323504; CHECK-NEXT:    i8x16.extract_lane_u $push74=, $1, 1505; CHECK-NEXT:    i32.const $push322=, 1506; CHECK-NEXT:    i32.and $push75=, $pop74, $pop322507; CHECK-NEXT:    i32.const $push321=, 1508; CHECK-NEXT:    i32.shl $push76=, $pop75, $pop321509; CHECK-NEXT:    i32.or $push77=, $pop73, $pop76510; CHECK-NEXT:    i8x16.extract_lane_u $push78=, $1, 2511; CHECK-NEXT:    i32.const $push320=, 1512; CHECK-NEXT:    i32.and $push79=, $pop78, $pop320513; CHECK-NEXT:    i32.const $push319=, 2514; CHECK-NEXT:    i32.shl $push80=, $pop79, $pop319515; CHECK-NEXT:    i32.or $push81=, $pop77, $pop80516; CHECK-NEXT:    i8x16.extract_lane_u $push82=, $1, 3517; CHECK-NEXT:    i32.const $push318=, 1518; CHECK-NEXT:    i32.and $push83=, $pop82, $pop318519; CHECK-NEXT:    i32.const $push317=, 3520; CHECK-NEXT:    i32.shl $push84=, $pop83, $pop317521; CHECK-NEXT:    i32.or $push85=, $pop81, $pop84522; CHECK-NEXT:    i8x16.extract_lane_u $push86=, $1, 4523; CHECK-NEXT:    i32.const $push316=, 1524; CHECK-NEXT:    i32.and $push87=, $pop86, $pop316525; CHECK-NEXT:    i32.const $push315=, 4526; CHECK-NEXT:    i32.shl $push88=, $pop87, $pop315527; CHECK-NEXT:    i32.or $push89=, $pop85, $pop88528; CHECK-NEXT:    i8x16.extract_lane_u $push90=, $1, 5529; CHECK-NEXT:    i32.const $push314=, 1530; CHECK-NEXT:    i32.and $push91=, $pop90, $pop314531; CHECK-NEXT:    i32.const $push313=, 5532; CHECK-NEXT:    i32.shl $push92=, $pop91, $pop313533; CHECK-NEXT:    i32.or $push93=, $pop89, $pop92534; CHECK-NEXT:    i8x16.extract_lane_u $push94=, $1, 6535; CHECK-NEXT:    i32.const $push312=, 1536; CHECK-NEXT:    i32.and $push95=, $pop94, $pop312537; CHECK-NEXT:    i32.const $push311=, 6538; CHECK-NEXT:    i32.shl $push96=, $pop95, $pop311539; CHECK-NEXT:    i32.or $push97=, $pop93, $pop96540; CHECK-NEXT:    i8x16.extract_lane_u $push98=, $1, 7541; CHECK-NEXT:    i32.const $push310=, 1542; CHECK-NEXT:    i32.and $push99=, $pop98, $pop310543; CHECK-NEXT:    i32.const $push309=, 7544; CHECK-NEXT:    i32.shl $push100=, $pop99, $pop309545; CHECK-NEXT:    i32.or $push101=, $pop97, $pop100546; CHECK-NEXT:    i8x16.extract_lane_u $push102=, $1, 8547; CHECK-NEXT:    i32.const $push308=, 1548; CHECK-NEXT:    i32.and $push103=, $pop102, $pop308549; CHECK-NEXT:    i32.const $push307=, 8550; CHECK-NEXT:    i32.shl $push104=, $pop103, $pop307551; CHECK-NEXT:    i32.or $push105=, $pop101, $pop104552; CHECK-NEXT:    i8x16.extract_lane_u $push106=, $1, 9553; CHECK-NEXT:    i32.const $push306=, 1554; CHECK-NEXT:    i32.and $push107=, $pop106, $pop306555; CHECK-NEXT:    i32.const $push305=, 9556; CHECK-NEXT:    i32.shl $push108=, $pop107, $pop305557; CHECK-NEXT:    i32.or $push109=, $pop105, $pop108558; CHECK-NEXT:    i8x16.extract_lane_u $push110=, $1, 10559; CHECK-NEXT:    i32.const $push304=, 1560; CHECK-NEXT:    i32.and $push111=, $pop110, $pop304561; CHECK-NEXT:    i32.const $push303=, 10562; CHECK-NEXT:    i32.shl $push112=, $pop111, $pop303563; CHECK-NEXT:    i32.or $push113=, $pop109, $pop112564; CHECK-NEXT:    i8x16.extract_lane_u $push114=, $1, 11565; CHECK-NEXT:    i32.const $push302=, 1566; CHECK-NEXT:    i32.and $push115=, $pop114, $pop302567; CHECK-NEXT:    i32.const $push301=, 11568; CHECK-NEXT:    i32.shl $push116=, $pop115, $pop301569; CHECK-NEXT:    i32.or $push117=, $pop113, $pop116570; CHECK-NEXT:    i8x16.extract_lane_u $push118=, $1, 12571; CHECK-NEXT:    i32.const $push300=, 1572; CHECK-NEXT:    i32.and $push119=, $pop118, $pop300573; CHECK-NEXT:    i32.const $push299=, 12574; CHECK-NEXT:    i32.shl $push120=, $pop119, $pop299575; CHECK-NEXT:    i32.or $push121=, $pop117, $pop120576; CHECK-NEXT:    i8x16.extract_lane_u $push122=, $1, 13577; CHECK-NEXT:    i32.const $push298=, 1578; CHECK-NEXT:    i32.and $push123=, $pop122, $pop298579; CHECK-NEXT:    i32.const $push297=, 13580; CHECK-NEXT:    i32.shl $push124=, $pop123, $pop297581; CHECK-NEXT:    i32.or $push125=, $pop121, $pop124582; CHECK-NEXT:    i8x16.extract_lane_u $push126=, $1, 14583; CHECK-NEXT:    i32.const $push296=, 1584; CHECK-NEXT:    i32.and $push127=, $pop126, $pop296585; CHECK-NEXT:    i32.const $push295=, 14586; CHECK-NEXT:    i32.shl $push128=, $pop127, $pop295587; CHECK-NEXT:    i32.or $push129=, $pop125, $pop128588; CHECK-NEXT:    i32.or $push135=, $pop134, $pop129589; CHECK-NEXT:    i8x16.extract_lane_u $push0=, $3, 0590; CHECK-NEXT:    i32.const $push294=, 1591; CHECK-NEXT:    i32.and $push2=, $pop0, $pop294592; CHECK-NEXT:    i8x16.extract_lane_u $push3=, $3, 1593; CHECK-NEXT:    i32.const $push293=, 1594; CHECK-NEXT:    i32.and $push4=, $pop3, $pop293595; CHECK-NEXT:    i32.const $push292=, 1596; CHECK-NEXT:    i32.shl $push5=, $pop4, $pop292597; CHECK-NEXT:    i32.or $push6=, $pop2, $pop5598; CHECK-NEXT:    i8x16.extract_lane_u $push7=, $3, 2599; CHECK-NEXT:    i32.const $push291=, 1600; CHECK-NEXT:    i32.and $push8=, $pop7, $pop291601; CHECK-NEXT:    i32.const $push290=, 2602; CHECK-NEXT:    i32.shl $push10=, $pop8, $pop290603; CHECK-NEXT:    i32.or $push11=, $pop6, $pop10604; CHECK-NEXT:    i8x16.extract_lane_u $push12=, $3, 3605; CHECK-NEXT:    i32.const $push289=, 1606; CHECK-NEXT:    i32.and $push13=, $pop12, $pop289607; CHECK-NEXT:    i32.const $push288=, 3608; CHECK-NEXT:    i32.shl $push15=, $pop13, $pop288609; CHECK-NEXT:    i32.or $push16=, $pop11, $pop15610; CHECK-NEXT:    i8x16.extract_lane_u $push17=, $3, 4611; CHECK-NEXT:    i32.const $push287=, 1612; CHECK-NEXT:    i32.and $push18=, $pop17, $pop287613; CHECK-NEXT:    i32.const $push286=, 4614; CHECK-NEXT:    i32.shl $push20=, $pop18, $pop286615; CHECK-NEXT:    i32.or $push21=, $pop16, $pop20616; CHECK-NEXT:    i8x16.extract_lane_u $push22=, $3, 5617; CHECK-NEXT:    i32.const $push285=, 1618; CHECK-NEXT:    i32.and $push23=, $pop22, $pop285619; CHECK-NEXT:    i32.const $push284=, 5620; CHECK-NEXT:    i32.shl $push25=, $pop23, $pop284621; CHECK-NEXT:    i32.or $push26=, $pop21, $pop25622; CHECK-NEXT:    i8x16.extract_lane_u $push27=, $3, 6623; CHECK-NEXT:    i32.const $push283=, 1624; CHECK-NEXT:    i32.and $push28=, $pop27, $pop283625; CHECK-NEXT:    i32.const $push282=, 6626; CHECK-NEXT:    i32.shl $push30=, $pop28, $pop282627; CHECK-NEXT:    i32.or $push31=, $pop26, $pop30628; CHECK-NEXT:    i8x16.extract_lane_u $push32=, $3, 7629; CHECK-NEXT:    i32.const $push281=, 1630; CHECK-NEXT:    i32.and $push33=, $pop32, $pop281631; CHECK-NEXT:    i32.const $push280=, 7632; CHECK-NEXT:    i32.shl $push35=, $pop33, $pop280633; CHECK-NEXT:    i32.or $push36=, $pop31, $pop35634; CHECK-NEXT:    i8x16.extract_lane_u $push37=, $3, 8635; CHECK-NEXT:    i32.const $push279=, 1636; CHECK-NEXT:    i32.and $push38=, $pop37, $pop279637; CHECK-NEXT:    i32.const $push278=, 8638; CHECK-NEXT:    i32.shl $push40=, $pop38, $pop278639; CHECK-NEXT:    i32.or $push41=, $pop36, $pop40640; CHECK-NEXT:    i8x16.extract_lane_u $push42=, $3, 9641; CHECK-NEXT:    i32.const $push277=, 1642; CHECK-NEXT:    i32.and $push43=, $pop42, $pop277643; CHECK-NEXT:    i32.const $push276=, 9644; CHECK-NEXT:    i32.shl $push45=, $pop43, $pop276645; CHECK-NEXT:    i32.or $push46=, $pop41, $pop45646; CHECK-NEXT:    i8x16.extract_lane_u $push47=, $3, 10647; CHECK-NEXT:    i32.const $push275=, 1648; CHECK-NEXT:    i32.and $push48=, $pop47, $pop275649; CHECK-NEXT:    i32.const $push274=, 10650; CHECK-NEXT:    i32.shl $push50=, $pop48, $pop274651; CHECK-NEXT:    i32.or $push51=, $pop46, $pop50652; CHECK-NEXT:    i8x16.extract_lane_u $push52=, $3, 11653; CHECK-NEXT:    i32.const $push273=, 1654; CHECK-NEXT:    i32.and $push53=, $pop52, $pop273655; CHECK-NEXT:    i32.const $push272=, 11656; CHECK-NEXT:    i32.shl $push55=, $pop53, $pop272657; CHECK-NEXT:    i32.or $push56=, $pop51, $pop55658; CHECK-NEXT:    i8x16.extract_lane_u $push57=, $3, 12659; CHECK-NEXT:    i32.const $push271=, 1660; CHECK-NEXT:    i32.and $push58=, $pop57, $pop271661; CHECK-NEXT:    i32.const $push270=, 12662; CHECK-NEXT:    i32.shl $push60=, $pop58, $pop270663; CHECK-NEXT:    i32.or $push61=, $pop56, $pop60664; CHECK-NEXT:    i8x16.extract_lane_u $push62=, $3, 13665; CHECK-NEXT:    i32.const $push269=, 1666; CHECK-NEXT:    i32.and $push63=, $pop62, $pop269667; CHECK-NEXT:    i32.const $push268=, 13668; CHECK-NEXT:    i32.shl $push65=, $pop63, $pop268669; CHECK-NEXT:    i32.or $push66=, $pop61, $pop65670; CHECK-NEXT:    i8x16.extract_lane_u $push67=, $3, 14671; CHECK-NEXT:    i32.const $push267=, 1672; CHECK-NEXT:    i32.and $push68=, $pop67, $pop267673; CHECK-NEXT:    i32.const $push266=, 14674; CHECK-NEXT:    i32.shl $push70=, $pop68, $pop266675; CHECK-NEXT:    i32.or $push71=, $pop66, $pop70676; CHECK-NEXT:    i32.or $push136=, $pop135, $pop71677; CHECK-NEXT:    i32.or $push259=, $pop258, $pop136678; CHECK-NEXT:    i32.const $push260=, 65535679; CHECK-NEXT:    i32.and $push261=, $pop259, $pop260680; CHECK-NEXT:    i32.const $push262=, 0681; CHECK-NEXT:    i32.ne $push263=, $pop261, $pop262682; CHECK-NEXT:    return $pop263683  %bits = trunc <64 x i8> %x to <64 x i1>684  %ret = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> %bits)685  ret i1 %ret686}687 688;; TODO: Improve this codegen.689define i1 @test_all_v64i8(<64 x i8> %x) {690; CHECK-LABEL: test_all_v64i8:691; CHECK:         .functype test_all_v64i8 (v128, v128, v128, v128) -> (i32)692; CHECK-NEXT:  # %bb.0:693; CHECK-NEXT:    global.get $push287=, __stack_pointer694; CHECK-NEXT:    i32.const $push288=, 16695; CHECK-NEXT:    i32.sub $drop=, $pop287, $pop288696; CHECK-NEXT:    i8x16.extract_lane_u $push220=, $2, 0697; CHECK-NEXT:    i32.const $push1=, 1698; CHECK-NEXT:    i32.and $push221=, $pop220, $pop1699; CHECK-NEXT:    i8x16.extract_lane_u $push222=, $2, 1700; CHECK-NEXT:    i32.const $push380=, 1701; CHECK-NEXT:    i32.and $push223=, $pop222, $pop380702; CHECK-NEXT:    i32.const $push379=, 1703; CHECK-NEXT:    i32.shl $push224=, $pop223, $pop379704; CHECK-NEXT:    i32.or $push225=, $pop221, $pop224705; CHECK-NEXT:    i8x16.extract_lane_u $push226=, $2, 2706; CHECK-NEXT:    i32.const $push378=, 1707; CHECK-NEXT:    i32.and $push227=, $pop226, $pop378708; CHECK-NEXT:    i32.const $push87=, 2709; CHECK-NEXT:    i32.shl $push228=, $pop227, $pop87710; CHECK-NEXT:    i32.or $push229=, $pop225, $pop228711; CHECK-NEXT:    i8x16.extract_lane_u $push230=, $2, 3712; CHECK-NEXT:    i32.const $push377=, 1713; CHECK-NEXT:    i32.and $push231=, $pop230, $pop377714; CHECK-NEXT:    i32.const $push92=, 3715; CHECK-NEXT:    i32.shl $push232=, $pop231, $pop92716; CHECK-NEXT:    i32.or $push233=, $pop229, $pop232717; CHECK-NEXT:    i8x16.extract_lane_u $push234=, $2, 4718; CHECK-NEXT:    i32.const $push376=, 1719; CHECK-NEXT:    i32.and $push235=, $pop234, $pop376720; CHECK-NEXT:    i32.const $push97=, 4721; CHECK-NEXT:    i32.shl $push236=, $pop235, $pop97722; CHECK-NEXT:    i32.or $push237=, $pop233, $pop236723; CHECK-NEXT:    i8x16.extract_lane_u $push238=, $2, 5724; CHECK-NEXT:    i32.const $push375=, 1725; CHECK-NEXT:    i32.and $push239=, $pop238, $pop375726; CHECK-NEXT:    i32.const $push102=, 5727; CHECK-NEXT:    i32.shl $push240=, $pop239, $pop102728; CHECK-NEXT:    i32.or $push241=, $pop237, $pop240729; CHECK-NEXT:    i8x16.extract_lane_u $push242=, $2, 6730; CHECK-NEXT:    i32.const $push374=, 1731; CHECK-NEXT:    i32.and $push243=, $pop242, $pop374732; CHECK-NEXT:    i32.const $push107=, 6733; CHECK-NEXT:    i32.shl $push244=, $pop243, $pop107734; CHECK-NEXT:    i32.or $push245=, $pop241, $pop244735; CHECK-NEXT:    i8x16.extract_lane_u $push246=, $2, 7736; CHECK-NEXT:    i32.const $push373=, 1737; CHECK-NEXT:    i32.and $push247=, $pop246, $pop373738; CHECK-NEXT:    i32.const $push112=, 7739; CHECK-NEXT:    i32.shl $push248=, $pop247, $pop112740; CHECK-NEXT:    i32.or $push249=, $pop245, $pop248741; CHECK-NEXT:    i8x16.extract_lane_u $push250=, $2, 8742; CHECK-NEXT:    i32.const $push372=, 1743; CHECK-NEXT:    i32.and $push251=, $pop250, $pop372744; CHECK-NEXT:    i32.const $push117=, 8745; CHECK-NEXT:    i32.shl $push252=, $pop251, $pop117746; CHECK-NEXT:    i32.or $push253=, $pop249, $pop252747; CHECK-NEXT:    i8x16.extract_lane_u $push254=, $2, 9748; CHECK-NEXT:    i32.const $push371=, 1749; CHECK-NEXT:    i32.and $push255=, $pop254, $pop371750; CHECK-NEXT:    i32.const $push122=, 9751; CHECK-NEXT:    i32.shl $push256=, $pop255, $pop122752; CHECK-NEXT:    i32.or $push257=, $pop253, $pop256753; CHECK-NEXT:    i8x16.extract_lane_u $push258=, $2, 10754; CHECK-NEXT:    i32.const $push370=, 1755; CHECK-NEXT:    i32.and $push259=, $pop258, $pop370756; CHECK-NEXT:    i32.const $push127=, 10757; CHECK-NEXT:    i32.shl $push260=, $pop259, $pop127758; CHECK-NEXT:    i32.or $push261=, $pop257, $pop260759; CHECK-NEXT:    i8x16.extract_lane_u $push262=, $2, 11760; CHECK-NEXT:    i32.const $push369=, 1761; CHECK-NEXT:    i32.and $push263=, $pop262, $pop369762; CHECK-NEXT:    i32.const $push132=, 11763; CHECK-NEXT:    i32.shl $push264=, $pop263, $pop132764; CHECK-NEXT:    i32.or $push265=, $pop261, $pop264765; CHECK-NEXT:    i8x16.extract_lane_u $push266=, $2, 12766; CHECK-NEXT:    i32.const $push368=, 1767; CHECK-NEXT:    i32.and $push267=, $pop266, $pop368768; CHECK-NEXT:    i32.const $push137=, 12769; CHECK-NEXT:    i32.shl $push268=, $pop267, $pop137770; CHECK-NEXT:    i32.or $push269=, $pop265, $pop268771; CHECK-NEXT:    i8x16.extract_lane_u $push270=, $2, 13772; CHECK-NEXT:    i32.const $push367=, 1773; CHECK-NEXT:    i32.and $push271=, $pop270, $pop367774; CHECK-NEXT:    i32.const $push142=, 13775; CHECK-NEXT:    i32.shl $push272=, $pop271, $pop142776; CHECK-NEXT:    i32.or $push273=, $pop269, $pop272777; CHECK-NEXT:    i8x16.extract_lane_u $push274=, $2, 14778; CHECK-NEXT:    i32.const $push366=, 1779; CHECK-NEXT:    i32.and $push275=, $pop274, $pop366780; CHECK-NEXT:    i32.const $push147=, 14781; CHECK-NEXT:    i32.shl $push276=, $pop275, $pop147782; CHECK-NEXT:    i32.or $push277=, $pop273, $pop276783; CHECK-NEXT:    i8x16.extract_lane_u $push278=, $2, 15784; CHECK-NEXT:    i32.const $push151=, 15785; CHECK-NEXT:    i32.shl $push279=, $pop278, $pop151786; CHECK-NEXT:    i32.or $push280=, $pop277, $pop279787; CHECK-NEXT:    i32.const $push154=, 65535788; CHECK-NEXT:    i32.and $push281=, $pop280, $pop154789; CHECK-NEXT:    i8x16.extract_lane_u $push217=, $3, 15790; CHECK-NEXT:    i32.const $push76=, 31791; CHECK-NEXT:    i32.shl $push218=, $pop217, $pop76792; CHECK-NEXT:    i8x16.extract_lane_u $push213=, $3, 14793; CHECK-NEXT:    i32.const $push365=, 1794; CHECK-NEXT:    i32.and $push214=, $pop213, $pop365795; CHECK-NEXT:    i32.const $push72=, 30796; CHECK-NEXT:    i32.shl $push215=, $pop214, $pop72797; CHECK-NEXT:    i8x16.extract_lane_u $push209=, $3, 13798; CHECK-NEXT:    i32.const $push364=, 1799; CHECK-NEXT:    i32.and $push210=, $pop209, $pop364800; CHECK-NEXT:    i32.const $push67=, 29801; CHECK-NEXT:    i32.shl $push211=, $pop210, $pop67802; CHECK-NEXT:    i8x16.extract_lane_u $push205=, $3, 12803; CHECK-NEXT:    i32.const $push363=, 1804; CHECK-NEXT:    i32.and $push206=, $pop205, $pop363805; CHECK-NEXT:    i32.const $push62=, 28806; CHECK-NEXT:    i32.shl $push207=, $pop206, $pop62807; CHECK-NEXT:    i8x16.extract_lane_u $push201=, $3, 11808; CHECK-NEXT:    i32.const $push362=, 1809; CHECK-NEXT:    i32.and $push202=, $pop201, $pop362810; CHECK-NEXT:    i32.const $push57=, 27811; CHECK-NEXT:    i32.shl $push203=, $pop202, $pop57812; CHECK-NEXT:    i8x16.extract_lane_u $push197=, $3, 10813; CHECK-NEXT:    i32.const $push361=, 1814; CHECK-NEXT:    i32.and $push198=, $pop197, $pop361815; CHECK-NEXT:    i32.const $push52=, 26816; CHECK-NEXT:    i32.shl $push199=, $pop198, $pop52817; CHECK-NEXT:    i8x16.extract_lane_u $push193=, $3, 9818; CHECK-NEXT:    i32.const $push360=, 1819; CHECK-NEXT:    i32.and $push194=, $pop193, $pop360820; CHECK-NEXT:    i32.const $push47=, 25821; CHECK-NEXT:    i32.shl $push195=, $pop194, $pop47822; CHECK-NEXT:    i8x16.extract_lane_u $push189=, $3, 8823; CHECK-NEXT:    i32.const $push359=, 1824; CHECK-NEXT:    i32.and $push190=, $pop189, $pop359825; CHECK-NEXT:    i32.const $push42=, 24826; CHECK-NEXT:    i32.shl $push191=, $pop190, $pop42827; CHECK-NEXT:    i8x16.extract_lane_u $push185=, $3, 7828; CHECK-NEXT:    i32.const $push358=, 1829; CHECK-NEXT:    i32.and $push186=, $pop185, $pop358830; CHECK-NEXT:    i32.const $push37=, 23831; CHECK-NEXT:    i32.shl $push187=, $pop186, $pop37832; CHECK-NEXT:    i8x16.extract_lane_u $push181=, $3, 6833; CHECK-NEXT:    i32.const $push357=, 1834; CHECK-NEXT:    i32.and $push182=, $pop181, $pop357835; CHECK-NEXT:    i32.const $push32=, 22836; CHECK-NEXT:    i32.shl $push183=, $pop182, $pop32837; CHECK-NEXT:    i8x16.extract_lane_u $push177=, $3, 5838; CHECK-NEXT:    i32.const $push356=, 1839; CHECK-NEXT:    i32.and $push178=, $pop177, $pop356840; CHECK-NEXT:    i32.const $push27=, 21841; CHECK-NEXT:    i32.shl $push179=, $pop178, $pop27842; CHECK-NEXT:    i8x16.extract_lane_u $push173=, $3, 4843; CHECK-NEXT:    i32.const $push355=, 1844; CHECK-NEXT:    i32.and $push174=, $pop173, $pop355845; CHECK-NEXT:    i32.const $push22=, 20846; CHECK-NEXT:    i32.shl $push175=, $pop174, $pop22847; CHECK-NEXT:    i8x16.extract_lane_u $push169=, $3, 3848; CHECK-NEXT:    i32.const $push354=, 1849; CHECK-NEXT:    i32.and $push170=, $pop169, $pop354850; CHECK-NEXT:    i32.const $push17=, 19851; CHECK-NEXT:    i32.shl $push171=, $pop170, $pop17852; CHECK-NEXT:    i8x16.extract_lane_u $push165=, $3, 2853; CHECK-NEXT:    i32.const $push353=, 1854; CHECK-NEXT:    i32.and $push166=, $pop165, $pop353855; CHECK-NEXT:    i32.const $push12=, 18856; CHECK-NEXT:    i32.shl $push167=, $pop166, $pop12857; CHECK-NEXT:    i8x16.extract_lane_u $push161=, $3, 1858; CHECK-NEXT:    i32.const $push352=, 1859; CHECK-NEXT:    i32.and $push162=, $pop161, $pop352860; CHECK-NEXT:    i32.const $push7=, 17861; CHECK-NEXT:    i32.shl $push163=, $pop162, $pop7862; CHECK-NEXT:    i8x16.extract_lane_u $push158=, $3, 0863; CHECK-NEXT:    i32.const $push351=, 1864; CHECK-NEXT:    i32.and $push159=, $pop158, $pop351865; CHECK-NEXT:    i32.const $push3=, 16866; CHECK-NEXT:    i32.shl $push160=, $pop159, $pop3867; CHECK-NEXT:    i32.or $push164=, $pop163, $pop160868; CHECK-NEXT:    i32.or $push168=, $pop167, $pop164869; CHECK-NEXT:    i32.or $push172=, $pop171, $pop168870; CHECK-NEXT:    i32.or $push176=, $pop175, $pop172871; CHECK-NEXT:    i32.or $push180=, $pop179, $pop176872; CHECK-NEXT:    i32.or $push184=, $pop183, $pop180873; CHECK-NEXT:    i32.or $push188=, $pop187, $pop184874; CHECK-NEXT:    i32.or $push192=, $pop191, $pop188875; CHECK-NEXT:    i32.or $push196=, $pop195, $pop192876; CHECK-NEXT:    i32.or $push200=, $pop199, $pop196877; CHECK-NEXT:    i32.or $push204=, $pop203, $pop200878; CHECK-NEXT:    i32.or $push208=, $pop207, $pop204879; CHECK-NEXT:    i32.or $push212=, $pop211, $pop208880; CHECK-NEXT:    i32.or $push216=, $pop215, $pop212881; CHECK-NEXT:    i32.or $push219=, $pop218, $pop216882; CHECK-NEXT:    i32.or $push282=, $pop281, $pop219883; CHECK-NEXT:    i64.extend_i32_u $push283=, $pop282884; CHECK-NEXT:    i8x16.extract_lane_u $push79=, $0, 0885; CHECK-NEXT:    i32.const $push350=, 1886; CHECK-NEXT:    i32.and $push80=, $pop79, $pop350887; CHECK-NEXT:    i8x16.extract_lane_u $push81=, $0, 1888; CHECK-NEXT:    i32.const $push349=, 1889; CHECK-NEXT:    i32.and $push82=, $pop81, $pop349890; CHECK-NEXT:    i32.const $push348=, 1891; CHECK-NEXT:    i32.shl $push83=, $pop82, $pop348892; CHECK-NEXT:    i32.or $push84=, $pop80, $pop83893; CHECK-NEXT:    i8x16.extract_lane_u $push85=, $0, 2894; CHECK-NEXT:    i32.const $push347=, 1895; CHECK-NEXT:    i32.and $push86=, $pop85, $pop347896; CHECK-NEXT:    i32.const $push346=, 2897; CHECK-NEXT:    i32.shl $push88=, $pop86, $pop346898; CHECK-NEXT:    i32.or $push89=, $pop84, $pop88899; CHECK-NEXT:    i8x16.extract_lane_u $push90=, $0, 3900; CHECK-NEXT:    i32.const $push345=, 1901; CHECK-NEXT:    i32.and $push91=, $pop90, $pop345902; CHECK-NEXT:    i32.const $push344=, 3903; CHECK-NEXT:    i32.shl $push93=, $pop91, $pop344904; CHECK-NEXT:    i32.or $push94=, $pop89, $pop93905; CHECK-NEXT:    i8x16.extract_lane_u $push95=, $0, 4906; CHECK-NEXT:    i32.const $push343=, 1907; CHECK-NEXT:    i32.and $push96=, $pop95, $pop343908; CHECK-NEXT:    i32.const $push342=, 4909; CHECK-NEXT:    i32.shl $push98=, $pop96, $pop342910; CHECK-NEXT:    i32.or $push99=, $pop94, $pop98911; CHECK-NEXT:    i8x16.extract_lane_u $push100=, $0, 5912; CHECK-NEXT:    i32.const $push341=, 1913; CHECK-NEXT:    i32.and $push101=, $pop100, $pop341914; CHECK-NEXT:    i32.const $push340=, 5915; CHECK-NEXT:    i32.shl $push103=, $pop101, $pop340916; CHECK-NEXT:    i32.or $push104=, $pop99, $pop103917; CHECK-NEXT:    i8x16.extract_lane_u $push105=, $0, 6918; CHECK-NEXT:    i32.const $push339=, 1919; CHECK-NEXT:    i32.and $push106=, $pop105, $pop339920; CHECK-NEXT:    i32.const $push338=, 6921; CHECK-NEXT:    i32.shl $push108=, $pop106, $pop338922; CHECK-NEXT:    i32.or $push109=, $pop104, $pop108923; CHECK-NEXT:    i8x16.extract_lane_u $push110=, $0, 7924; CHECK-NEXT:    i32.const $push337=, 1925; CHECK-NEXT:    i32.and $push111=, $pop110, $pop337926; CHECK-NEXT:    i32.const $push336=, 7927; CHECK-NEXT:    i32.shl $push113=, $pop111, $pop336928; CHECK-NEXT:    i32.or $push114=, $pop109, $pop113929; CHECK-NEXT:    i8x16.extract_lane_u $push115=, $0, 8930; CHECK-NEXT:    i32.const $push335=, 1931; CHECK-NEXT:    i32.and $push116=, $pop115, $pop335932; CHECK-NEXT:    i32.const $push334=, 8933; CHECK-NEXT:    i32.shl $push118=, $pop116, $pop334934; CHECK-NEXT:    i32.or $push119=, $pop114, $pop118935; CHECK-NEXT:    i8x16.extract_lane_u $push120=, $0, 9936; CHECK-NEXT:    i32.const $push333=, 1937; CHECK-NEXT:    i32.and $push121=, $pop120, $pop333938; CHECK-NEXT:    i32.const $push332=, 9939; CHECK-NEXT:    i32.shl $push123=, $pop121, $pop332940; CHECK-NEXT:    i32.or $push124=, $pop119, $pop123941; CHECK-NEXT:    i8x16.extract_lane_u $push125=, $0, 10942; CHECK-NEXT:    i32.const $push331=, 1943; CHECK-NEXT:    i32.and $push126=, $pop125, $pop331944; CHECK-NEXT:    i32.const $push330=, 10945; CHECK-NEXT:    i32.shl $push128=, $pop126, $pop330946; CHECK-NEXT:    i32.or $push129=, $pop124, $pop128947; CHECK-NEXT:    i8x16.extract_lane_u $push130=, $0, 11948; CHECK-NEXT:    i32.const $push329=, 1949; CHECK-NEXT:    i32.and $push131=, $pop130, $pop329950; CHECK-NEXT:    i32.const $push328=, 11951; CHECK-NEXT:    i32.shl $push133=, $pop131, $pop328952; CHECK-NEXT:    i32.or $push134=, $pop129, $pop133953; CHECK-NEXT:    i8x16.extract_lane_u $push135=, $0, 12954; CHECK-NEXT:    i32.const $push327=, 1955; CHECK-NEXT:    i32.and $push136=, $pop135, $pop327956; CHECK-NEXT:    i32.const $push326=, 12957; CHECK-NEXT:    i32.shl $push138=, $pop136, $pop326958; CHECK-NEXT:    i32.or $push139=, $pop134, $pop138959; CHECK-NEXT:    i8x16.extract_lane_u $push140=, $0, 13960; CHECK-NEXT:    i32.const $push325=, 1961; CHECK-NEXT:    i32.and $push141=, $pop140, $pop325962; CHECK-NEXT:    i32.const $push324=, 13963; CHECK-NEXT:    i32.shl $push143=, $pop141, $pop324964; CHECK-NEXT:    i32.or $push144=, $pop139, $pop143965; CHECK-NEXT:    i8x16.extract_lane_u $push145=, $0, 14966; CHECK-NEXT:    i32.const $push323=, 1967; CHECK-NEXT:    i32.and $push146=, $pop145, $pop323968; CHECK-NEXT:    i32.const $push322=, 14969; CHECK-NEXT:    i32.shl $push148=, $pop146, $pop322970; CHECK-NEXT:    i32.or $push149=, $pop144, $pop148971; CHECK-NEXT:    i8x16.extract_lane_u $push150=, $0, 15972; CHECK-NEXT:    i32.const $push321=, 15973; CHECK-NEXT:    i32.shl $push152=, $pop150, $pop321974; CHECK-NEXT:    i32.or $push153=, $pop149, $pop152975; CHECK-NEXT:    i32.const $push320=, 65535976; CHECK-NEXT:    i32.and $push155=, $pop153, $pop320977; CHECK-NEXT:    i8x16.extract_lane_u $push75=, $1, 15978; CHECK-NEXT:    i32.const $push319=, 31979; CHECK-NEXT:    i32.shl $push77=, $pop75, $pop319980; CHECK-NEXT:    i8x16.extract_lane_u $push70=, $1, 14981; CHECK-NEXT:    i32.const $push318=, 1982; CHECK-NEXT:    i32.and $push71=, $pop70, $pop318983; CHECK-NEXT:    i32.const $push317=, 30984; CHECK-NEXT:    i32.shl $push73=, $pop71, $pop317985; CHECK-NEXT:    i8x16.extract_lane_u $push65=, $1, 13986; CHECK-NEXT:    i32.const $push316=, 1987; CHECK-NEXT:    i32.and $push66=, $pop65, $pop316988; CHECK-NEXT:    i32.const $push315=, 29989; CHECK-NEXT:    i32.shl $push68=, $pop66, $pop315990; CHECK-NEXT:    i8x16.extract_lane_u $push60=, $1, 12991; CHECK-NEXT:    i32.const $push314=, 1992; CHECK-NEXT:    i32.and $push61=, $pop60, $pop314993; CHECK-NEXT:    i32.const $push313=, 28994; CHECK-NEXT:    i32.shl $push63=, $pop61, $pop313995; CHECK-NEXT:    i8x16.extract_lane_u $push55=, $1, 11996; CHECK-NEXT:    i32.const $push312=, 1997; CHECK-NEXT:    i32.and $push56=, $pop55, $pop312998; CHECK-NEXT:    i32.const $push311=, 27999; CHECK-NEXT:    i32.shl $push58=, $pop56, $pop3111000; CHECK-NEXT:    i8x16.extract_lane_u $push50=, $1, 101001; CHECK-NEXT:    i32.const $push310=, 11002; CHECK-NEXT:    i32.and $push51=, $pop50, $pop3101003; CHECK-NEXT:    i32.const $push309=, 261004; CHECK-NEXT:    i32.shl $push53=, $pop51, $pop3091005; CHECK-NEXT:    i8x16.extract_lane_u $push45=, $1, 91006; CHECK-NEXT:    i32.const $push308=, 11007; CHECK-NEXT:    i32.and $push46=, $pop45, $pop3081008; CHECK-NEXT:    i32.const $push307=, 251009; CHECK-NEXT:    i32.shl $push48=, $pop46, $pop3071010; CHECK-NEXT:    i8x16.extract_lane_u $push40=, $1, 81011; CHECK-NEXT:    i32.const $push306=, 11012; CHECK-NEXT:    i32.and $push41=, $pop40, $pop3061013; CHECK-NEXT:    i32.const $push305=, 241014; CHECK-NEXT:    i32.shl $push43=, $pop41, $pop3051015; CHECK-NEXT:    i8x16.extract_lane_u $push35=, $1, 71016; CHECK-NEXT:    i32.const $push304=, 11017; CHECK-NEXT:    i32.and $push36=, $pop35, $pop3041018; CHECK-NEXT:    i32.const $push303=, 231019; CHECK-NEXT:    i32.shl $push38=, $pop36, $pop3031020; CHECK-NEXT:    i8x16.extract_lane_u $push30=, $1, 61021; CHECK-NEXT:    i32.const $push302=, 11022; CHECK-NEXT:    i32.and $push31=, $pop30, $pop3021023; CHECK-NEXT:    i32.const $push301=, 221024; CHECK-NEXT:    i32.shl $push33=, $pop31, $pop3011025; CHECK-NEXT:    i8x16.extract_lane_u $push25=, $1, 51026; CHECK-NEXT:    i32.const $push300=, 11027; CHECK-NEXT:    i32.and $push26=, $pop25, $pop3001028; CHECK-NEXT:    i32.const $push299=, 211029; CHECK-NEXT:    i32.shl $push28=, $pop26, $pop2991030; CHECK-NEXT:    i8x16.extract_lane_u $push20=, $1, 41031; CHECK-NEXT:    i32.const $push298=, 11032; CHECK-NEXT:    i32.and $push21=, $pop20, $pop2981033; CHECK-NEXT:    i32.const $push297=, 201034; CHECK-NEXT:    i32.shl $push23=, $pop21, $pop2971035; CHECK-NEXT:    i8x16.extract_lane_u $push15=, $1, 31036; CHECK-NEXT:    i32.const $push296=, 11037; CHECK-NEXT:    i32.and $push16=, $pop15, $pop2961038; CHECK-NEXT:    i32.const $push295=, 191039; CHECK-NEXT:    i32.shl $push18=, $pop16, $pop2951040; CHECK-NEXT:    i8x16.extract_lane_u $push10=, $1, 21041; CHECK-NEXT:    i32.const $push294=, 11042; CHECK-NEXT:    i32.and $push11=, $pop10, $pop2941043; CHECK-NEXT:    i32.const $push293=, 181044; CHECK-NEXT:    i32.shl $push13=, $pop11, $pop2931045; CHECK-NEXT:    i8x16.extract_lane_u $push5=, $1, 11046; CHECK-NEXT:    i32.const $push292=, 11047; CHECK-NEXT:    i32.and $push6=, $pop5, $pop2921048; CHECK-NEXT:    i32.const $push291=, 171049; CHECK-NEXT:    i32.shl $push8=, $pop6, $pop2911050; CHECK-NEXT:    i8x16.extract_lane_u $push0=, $1, 01051; CHECK-NEXT:    i32.const $push290=, 11052; CHECK-NEXT:    i32.and $push2=, $pop0, $pop2901053; CHECK-NEXT:    i32.const $push289=, 161054; CHECK-NEXT:    i32.shl $push4=, $pop2, $pop2891055; CHECK-NEXT:    i32.or $push9=, $pop8, $pop41056; CHECK-NEXT:    i32.or $push14=, $pop13, $pop91057; CHECK-NEXT:    i32.or $push19=, $pop18, $pop141058; CHECK-NEXT:    i32.or $push24=, $pop23, $pop191059; CHECK-NEXT:    i32.or $push29=, $pop28, $pop241060; CHECK-NEXT:    i32.or $push34=, $pop33, $pop291061; CHECK-NEXT:    i32.or $push39=, $pop38, $pop341062; CHECK-NEXT:    i32.or $push44=, $pop43, $pop391063; CHECK-NEXT:    i32.or $push49=, $pop48, $pop441064; CHECK-NEXT:    i32.or $push54=, $pop53, $pop491065; CHECK-NEXT:    i32.or $push59=, $pop58, $pop541066; CHECK-NEXT:    i32.or $push64=, $pop63, $pop591067; CHECK-NEXT:    i32.or $push69=, $pop68, $pop641068; CHECK-NEXT:    i32.or $push74=, $pop73, $pop691069; CHECK-NEXT:    i32.or $push78=, $pop77, $pop741070; CHECK-NEXT:    i32.or $push156=, $pop155, $pop781071; CHECK-NEXT:    i64.extend_i32_u $push157=, $pop1561072; CHECK-NEXT:    i64.and $push284=, $pop283, $pop1571073; CHECK-NEXT:    i64.const $push285=, 42949672951074; CHECK-NEXT:    i64.eq $push286=, $pop284, $pop2851075; CHECK-NEXT:    return $pop2861076  %bits = trunc <64 x i8> %x to <64 x i1>1077  %ret = call i1 @llvm.vector.reduce.and.v64i1(<64 x i1> %bits)1078  ret i1 %ret1079}1080 1081;; =====================1082;; Test reduce after cmp1083;; =====================1084 1085define i1 @test_cmp_v16i8(<16 x i8> %x) {1086; CHECK-LABEL: test_cmp_v16i8:1087; CHECK:         .functype test_cmp_v16i8 (v128) -> (i32)1088; CHECK-NEXT:  # %bb.0:1089; CHECK-NEXT:    i8x16.all_true $push0=, $01090; CHECK-NEXT:    i32.const $push1=, 11091; CHECK-NEXT:    i32.xor $push2=, $pop0, $pop11092; CHECK-NEXT:    return $pop21093  %zero = icmp eq <16 x i8> %x, zeroinitializer1094  %ret = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> %zero)1095  ret i1 %ret1096}1097