brintos

brintos / llvm-project-archived public Read only

0
0
Text · 49.7 KiB · 669d01d Raw
1868 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon < %s | FileCheck %s3 4declare i32 @llvm.hexagon.S2.tstbit.i(i32, i32 immarg) #05 6define i1 @f0(i32 %a0, i32 %a1) #1 {7; CHECK-LABEL: f0:8; CHECK:       // %bb.0: // %b09; CHECK-NEXT:    {10; CHECK-NEXT:     p0 = tstbit(r0,#3)11; CHECK-NEXT:    }12; CHECK-NEXT:    {13; CHECK-NEXT:     p1 = tstbit(r1,#3)14; CHECK-NEXT:    }15; CHECK-NEXT:    {16; CHECK-NEXT:     p0 = and(p0,p1)17; CHECK-NEXT:    }18; CHECK-NEXT:    {19; CHECK-NEXT:     r0 = p020; CHECK-NEXT:    }21; CHECK-NEXT:    {22; CHECK-NEXT:     jumpr r3123; CHECK-NEXT:    }24b0:25  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)26  %v1 = trunc i32 %v0 to i127  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)28  %v3 = trunc i32 %v2 to i129  %v4 = and i1 %v1, %v330  ret i1 %v431}32 33define i1 @f1(i32 %a0, i32 %a1) #1 {34; CHECK-LABEL: f1:35; CHECK:       // %bb.0: // %b036; CHECK-NEXT:    {37; CHECK-NEXT:     p0 = tstbit(r0,#3)38; CHECK-NEXT:    }39; CHECK-NEXT:    {40; CHECK-NEXT:     p1 = tstbit(r1,#3)41; CHECK-NEXT:    }42; CHECK-NEXT:    {43; CHECK-NEXT:     p0 = or(p0,p1)44; CHECK-NEXT:    }45; CHECK-NEXT:    {46; CHECK-NEXT:     r0 = p047; CHECK-NEXT:    }48; CHECK-NEXT:    {49; CHECK-NEXT:     jumpr r3150; CHECK-NEXT:    }51b0:52  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)53  %v1 = trunc i32 %v0 to i154  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)55  %v3 = trunc i32 %v2 to i156  %v4 = or i1 %v1, %v357  ret i1 %v458}59 60define i1 @f2(i32 %a0, i32 %a1) #1 {61; CHECK-LABEL: f2:62; CHECK:       // %bb.0: // %b063; CHECK-NEXT:    {64; CHECK-NEXT:     p0 = tstbit(r0,#3)65; CHECK-NEXT:    }66; CHECK-NEXT:    {67; CHECK-NEXT:     p1 = tstbit(r1,#3)68; CHECK-NEXT:    }69; CHECK-NEXT:    {70; CHECK-NEXT:     p0 = xor(p0,p1)71; CHECK-NEXT:    }72; CHECK-NEXT:    {73; CHECK-NEXT:     r0 = p074; CHECK-NEXT:    }75; CHECK-NEXT:    {76; CHECK-NEXT:     jumpr r3177; CHECK-NEXT:    }78b0:79  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)80  %v1 = trunc i32 %v0 to i181  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)82  %v3 = trunc i32 %v2 to i183  %v4 = xor i1 %v1, %v384  ret i1 %v485}86 87define i1 @f3(i32 %a0, i32 %a1) #1 {88; CHECK-LABEL: f3:89; CHECK:       // %bb.0: // %b090; CHECK-NEXT:    {91; CHECK-NEXT:     p0 = tstbit(r0,#3)92; CHECK-NEXT:    }93; CHECK-NEXT:    {94; CHECK-NEXT:     p1 = tstbit(r1,#3)95; CHECK-NEXT:    }96; CHECK-NEXT:    {97; CHECK-NEXT:     r0 = p098; CHECK-NEXT:    }99; CHECK-NEXT:    {100; CHECK-NEXT:     r1 = p1101; CHECK-NEXT:    }102; CHECK-NEXT:    {103; CHECK-NEXT:     p0 = tstbit(r0,#0)104; CHECK-NEXT:    }105; CHECK-NEXT:    {106; CHECK-NEXT:     p1 = tstbit(r1,#0)107; CHECK-NEXT:    }108; CHECK-NEXT:    {109; CHECK-NEXT:     p0 = and(p0,!p1)110; CHECK-NEXT:    }111; CHECK-NEXT:    {112; CHECK-NEXT:     r0 = mux(p0,#1,#0)113; CHECK-NEXT:    }114; CHECK-NEXT:    {115; CHECK-NEXT:     jumpr r31116; CHECK-NEXT:    }117b0:118  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)119  %v1 = trunc i32 %v0 to i1120  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)121  %v3 = trunc i32 %v2 to i1122  %v4 = xor i1 %v3, true123  %v5 = and i1 %v1, %v4124  ret i1 %v5125}126 127define i1 @f4(i32 %a0, i32 %a1) #1 {128; CHECK-LABEL: f4:129; CHECK:       // %bb.0: // %b0130; CHECK-NEXT:    {131; CHECK-NEXT:     p0 = tstbit(r0,#3)132; CHECK-NEXT:    }133; CHECK-NEXT:    {134; CHECK-NEXT:     p1 = tstbit(r1,#3)135; CHECK-NEXT:    }136; CHECK-NEXT:    {137; CHECK-NEXT:     r0 = p0138; CHECK-NEXT:    }139; CHECK-NEXT:    {140; CHECK-NEXT:     r1 = p1141; CHECK-NEXT:    }142; CHECK-NEXT:    {143; CHECK-NEXT:     p0 = tstbit(r0,#0)144; CHECK-NEXT:    }145; CHECK-NEXT:    {146; CHECK-NEXT:     p1 = tstbit(r1,#0)147; CHECK-NEXT:    }148; CHECK-NEXT:    {149; CHECK-NEXT:     p0 = or(p0,!p1)150; CHECK-NEXT:    }151; CHECK-NEXT:    {152; CHECK-NEXT:     r0 = mux(p0,#1,#0)153; CHECK-NEXT:    }154; CHECK-NEXT:    {155; CHECK-NEXT:     jumpr r31156; CHECK-NEXT:    }157b0:158  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)159  %v1 = trunc i32 %v0 to i1160  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)161  %v3 = trunc i32 %v2 to i1162  %v4 = xor i1 %v3, true163  %v5 = or i1 %v1, %v4164  ret i1 %v5165}166 167define i1 @f5(i32 %a0, i32 %a1, i32 %a2) #1 {168; CHECK-LABEL: f5:169; CHECK:       // %bb.0: // %b0170; CHECK-NEXT:    {171; CHECK-NEXT:     p0 = tstbit(r0,#3)172; CHECK-NEXT:    }173; CHECK-NEXT:    {174; CHECK-NEXT:     p1 = tstbit(r1,#3)175; CHECK-NEXT:    }176; CHECK-NEXT:    {177; CHECK-NEXT:     p2 = tstbit(r2,#3)178; CHECK-NEXT:    }179; CHECK-NEXT:    {180; CHECK-NEXT:     p0 = and(p2,and(p0,p1))181; CHECK-NEXT:    }182; CHECK-NEXT:    {183; CHECK-NEXT:     r0 = p0184; CHECK-NEXT:    }185; CHECK-NEXT:    {186; CHECK-NEXT:     jumpr r31187; CHECK-NEXT:    }188b0:189  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)190  %v1 = trunc i32 %v0 to i1191  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)192  %v3 = trunc i32 %v2 to i1193  %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)194  %v5 = trunc i32 %v4 to i1195  %v6 = and i1 %v1, %v3196  %v7 = and i1 %v5, %v6197  ret i1 %v7198}199 200define i1 @f6(i32 %a0, i32 %a1, i32 %a2) #1 {201; CHECK-LABEL: f6:202; CHECK:       // %bb.0: // %b0203; CHECK-NEXT:    {204; CHECK-NEXT:     p0 = tstbit(r0,#3)205; CHECK-NEXT:    }206; CHECK-NEXT:    {207; CHECK-NEXT:     p1 = tstbit(r1,#3)208; CHECK-NEXT:    }209; CHECK-NEXT:    {210; CHECK-NEXT:     p2 = tstbit(r2,#3)211; CHECK-NEXT:    }212; CHECK-NEXT:    {213; CHECK-NEXT:     p0 = and(p2,or(p0,p1))214; CHECK-NEXT:    }215; CHECK-NEXT:    {216; CHECK-NEXT:     r0 = p0217; CHECK-NEXT:    }218; CHECK-NEXT:    {219; CHECK-NEXT:     jumpr r31220; CHECK-NEXT:    }221b0:222  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)223  %v1 = trunc i32 %v0 to i1224  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)225  %v3 = trunc i32 %v2 to i1226  %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)227  %v5 = trunc i32 %v4 to i1228  %v6 = or i1 %v1, %v3229  %v7 = and i1 %v5, %v6230  ret i1 %v7231}232 233define i1 @f7(i32 %a0, i32 %a1, i32 %a2) #1 {234; CHECK-LABEL: f7:235; CHECK:       // %bb.0: // %b0236; CHECK-NEXT:    {237; CHECK-NEXT:     p0 = tstbit(r0,#3)238; CHECK-NEXT:    }239; CHECK-NEXT:    {240; CHECK-NEXT:     p1 = tstbit(r1,#3)241; CHECK-NEXT:    }242; CHECK-NEXT:    {243; CHECK-NEXT:     p2 = tstbit(r2,#3)244; CHECK-NEXT:    }245; CHECK-NEXT:    {246; CHECK-NEXT:     p0 = or(p2,and(p0,p1))247; CHECK-NEXT:    }248; CHECK-NEXT:    {249; CHECK-NEXT:     r0 = p0250; CHECK-NEXT:    }251; CHECK-NEXT:    {252; CHECK-NEXT:     jumpr r31253; CHECK-NEXT:    }254b0:255  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)256  %v1 = trunc i32 %v0 to i1257  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)258  %v3 = trunc i32 %v2 to i1259  %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)260  %v5 = trunc i32 %v4 to i1261  %v6 = and i1 %v1, %v3262  %v7 = or i1 %v5, %v6263  ret i1 %v7264}265 266define i1 @f8(i32 %a0, i32 %a1, i32 %a2) #1 {267; CHECK-LABEL: f8:268; CHECK:       // %bb.0: // %b0269; CHECK-NEXT:    {270; CHECK-NEXT:     p0 = tstbit(r0,#3)271; CHECK-NEXT:    }272; CHECK-NEXT:    {273; CHECK-NEXT:     p1 = tstbit(r1,#3)274; CHECK-NEXT:    }275; CHECK-NEXT:    {276; CHECK-NEXT:     p2 = tstbit(r2,#3)277; CHECK-NEXT:    }278; CHECK-NEXT:    {279; CHECK-NEXT:     p0 = or(p2,or(p0,p1))280; CHECK-NEXT:    }281; CHECK-NEXT:    {282; CHECK-NEXT:     r0 = p0283; CHECK-NEXT:    }284; CHECK-NEXT:    {285; CHECK-NEXT:     jumpr r31286; CHECK-NEXT:    }287b0:288  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)289  %v1 = trunc i32 %v0 to i1290  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)291  %v3 = trunc i32 %v2 to i1292  %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)293  %v5 = trunc i32 %v4 to i1294  %v6 = or i1 %v1, %v3295  %v7 = or i1 %v5, %v6296  ret i1 %v7297}298 299define i1 @f9(i32 %a0, i32 %a1, i32 %a2) #1 {300; CHECK-LABEL: f9:301; CHECK:       // %bb.0: // %b0302; CHECK-NEXT:    {303; CHECK-NEXT:     p0 = tstbit(r0,#3)304; CHECK-NEXT:    }305; CHECK-NEXT:    {306; CHECK-NEXT:     p1 = tstbit(r1,#3)307; CHECK-NEXT:    }308; CHECK-NEXT:    {309; CHECK-NEXT:     p2 = tstbit(r2,#3)310; CHECK-NEXT:    }311; CHECK-NEXT:    {312; CHECK-NEXT:     r0 = p0313; CHECK-NEXT:    }314; CHECK-NEXT:    {315; CHECK-NEXT:     r1 = p1316; CHECK-NEXT:    }317; CHECK-NEXT:    {318; CHECK-NEXT:     r2 = p2319; CHECK-NEXT:    }320; CHECK-NEXT:    {321; CHECK-NEXT:     p0 = tstbit(r0,#0)322; CHECK-NEXT:    }323; CHECK-NEXT:    {324; CHECK-NEXT:     p1 = tstbit(r1,#0)325; CHECK-NEXT:    }326; CHECK-NEXT:    {327; CHECK-NEXT:     p2 = tstbit(r2,#0)328; CHECK-NEXT:    }329; CHECK-NEXT:    {330; CHECK-NEXT:     p0 = and(p2,and(p0,!p1))331; CHECK-NEXT:    }332; CHECK-NEXT:    {333; CHECK-NEXT:     r0 = mux(p0,#1,#0)334; CHECK-NEXT:    }335; CHECK-NEXT:    {336; CHECK-NEXT:     jumpr r31337; CHECK-NEXT:    }338b0:339  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)340  %v1 = trunc i32 %v0 to i1341  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)342  %v3 = trunc i32 %v2 to i1343  %v4 = xor i1 %v3, true344  %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)345  %v6 = trunc i32 %v5 to i1346  %v7 = and i1 %v1, %v4347  %v8 = and i1 %v6, %v7348  ret i1 %v8349}350 351define i1 @f10(i32 %a0, i32 %a1, i32 %a2) #1 {352; CHECK-LABEL: f10:353; CHECK:       // %bb.0: // %b0354; CHECK-NEXT:    {355; CHECK-NEXT:     p0 = tstbit(r0,#3)356; CHECK-NEXT:    }357; CHECK-NEXT:    {358; CHECK-NEXT:     p1 = tstbit(r1,#3)359; CHECK-NEXT:    }360; CHECK-NEXT:    {361; CHECK-NEXT:     p2 = tstbit(r2,#3)362; CHECK-NEXT:    }363; CHECK-NEXT:    {364; CHECK-NEXT:     r0 = p0365; CHECK-NEXT:    }366; CHECK-NEXT:    {367; CHECK-NEXT:     r1 = p1368; CHECK-NEXT:    }369; CHECK-NEXT:    {370; CHECK-NEXT:     r2 = p2371; CHECK-NEXT:    }372; CHECK-NEXT:    {373; CHECK-NEXT:     p0 = tstbit(r0,#0)374; CHECK-NEXT:    }375; CHECK-NEXT:    {376; CHECK-NEXT:     p1 = tstbit(r1,#0)377; CHECK-NEXT:    }378; CHECK-NEXT:    {379; CHECK-NEXT:     p2 = tstbit(r2,#0)380; CHECK-NEXT:    }381; CHECK-NEXT:    {382; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))383; CHECK-NEXT:    }384; CHECK-NEXT:    {385; CHECK-NEXT:     r0 = mux(p0,#1,#0)386; CHECK-NEXT:    }387; CHECK-NEXT:    {388; CHECK-NEXT:     jumpr r31389; CHECK-NEXT:    }390b0:391  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)392  %v1 = trunc i32 %v0 to i1393  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)394  %v3 = trunc i32 %v2 to i1395  %v4 = xor i1 %v3, true396  %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)397  %v6 = trunc i32 %v5 to i1398  %v7 = or i1 %v1, %v4399  %v8 = and i1 %v6, %v7400  ret i1 %v8401}402 403define i1 @f11(i32 %a0, i32 %a1, i32 %a2) #1 {404; CHECK-LABEL: f11:405; CHECK:       // %bb.0: // %b0406; CHECK-NEXT:    {407; CHECK-NEXT:     p0 = tstbit(r0,#3)408; CHECK-NEXT:    }409; CHECK-NEXT:    {410; CHECK-NEXT:     p1 = tstbit(r1,#3)411; CHECK-NEXT:    }412; CHECK-NEXT:    {413; CHECK-NEXT:     p2 = tstbit(r2,#3)414; CHECK-NEXT:    }415; CHECK-NEXT:    {416; CHECK-NEXT:     r0 = p0417; CHECK-NEXT:    }418; CHECK-NEXT:    {419; CHECK-NEXT:     r1 = p1420; CHECK-NEXT:    }421; CHECK-NEXT:    {422; CHECK-NEXT:     r2 = p2423; CHECK-NEXT:    }424; CHECK-NEXT:    {425; CHECK-NEXT:     p0 = tstbit(r0,#0)426; CHECK-NEXT:    }427; CHECK-NEXT:    {428; CHECK-NEXT:     p1 = tstbit(r1,#0)429; CHECK-NEXT:    }430; CHECK-NEXT:    {431; CHECK-NEXT:     p2 = tstbit(r2,#0)432; CHECK-NEXT:    }433; CHECK-NEXT:    {434; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))435; CHECK-NEXT:    }436; CHECK-NEXT:    {437; CHECK-NEXT:     r0 = mux(p0,#1,#0)438; CHECK-NEXT:    }439; CHECK-NEXT:    {440; CHECK-NEXT:     jumpr r31441; CHECK-NEXT:    }442b0:443  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)444  %v1 = trunc i32 %v0 to i1445  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)446  %v3 = trunc i32 %v2 to i1447  %v4 = xor i1 %v3, true448  %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)449  %v6 = trunc i32 %v5 to i1450  %v7 = and i1 %v1, %v4451  %v8 = or i1 %v6, %v7452  ret i1 %v8453}454 455define i1 @f12(i32 %a0, i32 %a1, i32 %a2) #1 {456; CHECK-LABEL: f12:457; CHECK:       // %bb.0: // %b0458; CHECK-NEXT:    {459; CHECK-NEXT:     p0 = tstbit(r0,#3)460; CHECK-NEXT:    }461; CHECK-NEXT:    {462; CHECK-NEXT:     p1 = tstbit(r1,#3)463; CHECK-NEXT:    }464; CHECK-NEXT:    {465; CHECK-NEXT:     p2 = tstbit(r2,#3)466; CHECK-NEXT:    }467; CHECK-NEXT:    {468; CHECK-NEXT:     r0 = p0469; CHECK-NEXT:    }470; CHECK-NEXT:    {471; CHECK-NEXT:     r1 = p1472; CHECK-NEXT:    }473; CHECK-NEXT:    {474; CHECK-NEXT:     r2 = p2475; CHECK-NEXT:    }476; CHECK-NEXT:    {477; CHECK-NEXT:     p0 = tstbit(r0,#0)478; CHECK-NEXT:    }479; CHECK-NEXT:    {480; CHECK-NEXT:     p1 = tstbit(r1,#0)481; CHECK-NEXT:    }482; CHECK-NEXT:    {483; CHECK-NEXT:     p2 = tstbit(r2,#0)484; CHECK-NEXT:    }485; CHECK-NEXT:    {486; CHECK-NEXT:     p0 = or(p2,or(p0,!p1))487; CHECK-NEXT:    }488; CHECK-NEXT:    {489; CHECK-NEXT:     r0 = mux(p0,#1,#0)490; CHECK-NEXT:    }491; CHECK-NEXT:    {492; CHECK-NEXT:     jumpr r31493; CHECK-NEXT:    }494b0:495  %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)496  %v1 = trunc i32 %v0 to i1497  %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)498  %v3 = trunc i32 %v2 to i1499  %v4 = xor i1 %v3, true500  %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)501  %v6 = trunc i32 %v5 to i1502  %v7 = or i1 %v1, %v4503  %v8 = or i1 %v6, %v7504  ret i1 %v8505}506 507define <2 x i32> @f13(<2 x i32> %a0, <2 x i32> %a1) #1 {508; CHECK-LABEL: f13:509; CHECK:       // %bb.0: // %b0510; CHECK-NEXT:    {511; CHECK-NEXT:     r5:4 = combine(#1,#1)512; CHECK-NEXT:    }513; CHECK-NEXT:    {514; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)515; CHECK-NEXT:    }516; CHECK-NEXT:    {517; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)518; CHECK-NEXT:    }519; CHECK-NEXT:    {520; CHECK-NEXT:     p0 = and(p0,p1)521; CHECK-NEXT:    }522; CHECK-NEXT:    {523; CHECK-NEXT:     r1:0 = mask(p0)524; CHECK-NEXT:    }525; CHECK-NEXT:    {526; CHECK-NEXT:     jumpr r31527; CHECK-NEXT:    }528b0:529  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>530  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>531  %v2 = and <2 x i1> %v0, %v1532  %v3 = sext <2 x i1> %v2 to <2 x i32>533  ret <2 x i32> %v3534}535 536define <2 x i32> @f14(<2 x i32> %a0, <2 x i32> %a1) #1 {537; CHECK-LABEL: f14:538; CHECK:       // %bb.0: // %b0539; CHECK-NEXT:    {540; CHECK-NEXT:     r5:4 = combine(#1,#1)541; CHECK-NEXT:    }542; CHECK-NEXT:    {543; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)544; CHECK-NEXT:    }545; CHECK-NEXT:    {546; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)547; CHECK-NEXT:    }548; CHECK-NEXT:    {549; CHECK-NEXT:     p0 = or(p0,p1)550; CHECK-NEXT:    }551; CHECK-NEXT:    {552; CHECK-NEXT:     r1:0 = mask(p0)553; CHECK-NEXT:    }554; CHECK-NEXT:    {555; CHECK-NEXT:     jumpr r31556; CHECK-NEXT:    }557b0:558  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>559  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>560  %v2 = or <2 x i1> %v0, %v1561  %v3 = sext <2 x i1> %v2 to <2 x i32>562  ret <2 x i32> %v3563}564 565define <2 x i32> @f15(<2 x i32> %a0, <2 x i32> %a1) #1 {566; CHECK-LABEL: f15:567; CHECK:       // %bb.0: // %b0568; CHECK-NEXT:    {569; CHECK-NEXT:     r5:4 = combine(#1,#1)570; CHECK-NEXT:    }571; CHECK-NEXT:    {572; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)573; CHECK-NEXT:    }574; CHECK-NEXT:    {575; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)576; CHECK-NEXT:    }577; CHECK-NEXT:    {578; CHECK-NEXT:     p0 = xor(p0,p1)579; CHECK-NEXT:    }580; CHECK-NEXT:    {581; CHECK-NEXT:     r1:0 = mask(p0)582; CHECK-NEXT:    }583; CHECK-NEXT:    {584; CHECK-NEXT:     jumpr r31585; CHECK-NEXT:    }586b0:587  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>588  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>589  %v2 = xor <2 x i1> %v0, %v1590  %v3 = sext <2 x i1> %v2 to <2 x i32>591  ret <2 x i32> %v3592}593 594define <2 x i32> @f16(<2 x i32> %a0, <2 x i32> %a1) #1 {595; CHECK-LABEL: f16:596; CHECK:       // %bb.0: // %b0597; CHECK-NEXT:    {598; CHECK-NEXT:     r5:4 = combine(#1,#1)599; CHECK-NEXT:    }600; CHECK-NEXT:    {601; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)602; CHECK-NEXT:    }603; CHECK-NEXT:    {604; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)605; CHECK-NEXT:    }606; CHECK-NEXT:    {607; CHECK-NEXT:     p0 = and(p0,!p1)608; CHECK-NEXT:    }609; CHECK-NEXT:    {610; CHECK-NEXT:     r1:0 = mask(p0)611; CHECK-NEXT:    }612; CHECK-NEXT:    {613; CHECK-NEXT:     jumpr r31614; CHECK-NEXT:    }615b0:616  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>617  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>618  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>619  %v3 = and <2 x i1> %v0, %v2620  %v4 = sext <2 x i1> %v3 to <2 x i32>621  ret <2 x i32> %v4622}623 624define <2 x i32> @f17(<2 x i32> %a0, <2 x i32> %a1) #1 {625; CHECK-LABEL: f17:626; CHECK:       // %bb.0: // %b0627; CHECK-NEXT:    {628; CHECK-NEXT:     r5:4 = combine(#1,#1)629; CHECK-NEXT:    }630; CHECK-NEXT:    {631; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)632; CHECK-NEXT:    }633; CHECK-NEXT:    {634; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)635; CHECK-NEXT:    }636; CHECK-NEXT:    {637; CHECK-NEXT:     p0 = or(p0,!p1)638; CHECK-NEXT:    }639; CHECK-NEXT:    {640; CHECK-NEXT:     r1:0 = mask(p0)641; CHECK-NEXT:    }642; CHECK-NEXT:    {643; CHECK-NEXT:     jumpr r31644; CHECK-NEXT:    }645b0:646  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>647  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>648  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>649  %v3 = or <2 x i1> %v0, %v2650  %v4 = sext <2 x i1> %v3 to <2 x i32>651  ret <2 x i32> %v4652}653 654define <2 x i32> @f18(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {655; CHECK-LABEL: f18:656; CHECK:       // %bb.0: // %b0657; CHECK-NEXT:    {658; CHECK-NEXT:     r7:6 = combine(#1,#1)659; CHECK-NEXT:    }660; CHECK-NEXT:    {661; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)662; CHECK-NEXT:    }663; CHECK-NEXT:    {664; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)665; CHECK-NEXT:    }666; CHECK-NEXT:    {667; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)668; CHECK-NEXT:    }669; CHECK-NEXT:    {670; CHECK-NEXT:     p0 = and(p2,and(p0,p1))671; CHECK-NEXT:    }672; CHECK-NEXT:    {673; CHECK-NEXT:     r1:0 = mask(p0)674; CHECK-NEXT:    }675; CHECK-NEXT:    {676; CHECK-NEXT:     jumpr r31677; CHECK-NEXT:    }678b0:679  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>680  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>681  %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>682  %v3 = and <2 x i1> %v0, %v1683  %v4 = and <2 x i1> %v2, %v3684  %v5 = sext <2 x i1> %v4 to <2 x i32>685  ret <2 x i32> %v5686}687 688define <2 x i32> @f19(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {689; CHECK-LABEL: f19:690; CHECK:       // %bb.0: // %b0691; CHECK-NEXT:    {692; CHECK-NEXT:     r7:6 = combine(#1,#1)693; CHECK-NEXT:    }694; CHECK-NEXT:    {695; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)696; CHECK-NEXT:    }697; CHECK-NEXT:    {698; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)699; CHECK-NEXT:    }700; CHECK-NEXT:    {701; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)702; CHECK-NEXT:    }703; CHECK-NEXT:    {704; CHECK-NEXT:     p0 = and(p2,or(p0,p1))705; CHECK-NEXT:    }706; CHECK-NEXT:    {707; CHECK-NEXT:     r1:0 = mask(p0)708; CHECK-NEXT:    }709; CHECK-NEXT:    {710; CHECK-NEXT:     jumpr r31711; CHECK-NEXT:    }712b0:713  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>714  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>715  %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>716  %v3 = or <2 x i1> %v0, %v1717  %v4 = and <2 x i1> %v2, %v3718  %v5 = sext <2 x i1> %v4 to <2 x i32>719  ret <2 x i32> %v5720}721 722define <2 x i32> @f20(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {723; CHECK-LABEL: f20:724; CHECK:       // %bb.0: // %b0725; CHECK-NEXT:    {726; CHECK-NEXT:     r7:6 = combine(#1,#1)727; CHECK-NEXT:    }728; CHECK-NEXT:    {729; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)730; CHECK-NEXT:    }731; CHECK-NEXT:    {732; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)733; CHECK-NEXT:    }734; CHECK-NEXT:    {735; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)736; CHECK-NEXT:    }737; CHECK-NEXT:    {738; CHECK-NEXT:     p0 = or(p2,and(p0,p1))739; CHECK-NEXT:    }740; CHECK-NEXT:    {741; CHECK-NEXT:     r1:0 = mask(p0)742; CHECK-NEXT:    }743; CHECK-NEXT:    {744; CHECK-NEXT:     jumpr r31745; CHECK-NEXT:    }746b0:747  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>748  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>749  %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>750  %v3 = and <2 x i1> %v0, %v1751  %v4 = or <2 x i1> %v2, %v3752  %v5 = sext <2 x i1> %v4 to <2 x i32>753  ret <2 x i32> %v5754}755 756define <2 x i32> @f21(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {757; CHECK-LABEL: f21:758; CHECK:       // %bb.0: // %b0759; CHECK-NEXT:    {760; CHECK-NEXT:     r7:6 = combine(#1,#1)761; CHECK-NEXT:    }762; CHECK-NEXT:    {763; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)764; CHECK-NEXT:    }765; CHECK-NEXT:    {766; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)767; CHECK-NEXT:    }768; CHECK-NEXT:    {769; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)770; CHECK-NEXT:    }771; CHECK-NEXT:    {772; CHECK-NEXT:     p0 = or(p2,or(p0,p1))773; CHECK-NEXT:    }774; CHECK-NEXT:    {775; CHECK-NEXT:     r1:0 = mask(p0)776; CHECK-NEXT:    }777; CHECK-NEXT:    {778; CHECK-NEXT:     jumpr r31779; CHECK-NEXT:    }780b0:781  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>782  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>783  %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>784  %v3 = or <2 x i1> %v0, %v1785  %v4 = or <2 x i1> %v2, %v3786  %v5 = sext <2 x i1> %v4 to <2 x i32>787  ret <2 x i32> %v5788}789 790define <2 x i32> @f22(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {791; CHECK-LABEL: f22:792; CHECK:       // %bb.0: // %b0793; CHECK-NEXT:    {794; CHECK-NEXT:     r7:6 = combine(#1,#1)795; CHECK-NEXT:    }796; CHECK-NEXT:    {797; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)798; CHECK-NEXT:    }799; CHECK-NEXT:    {800; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)801; CHECK-NEXT:    }802; CHECK-NEXT:    {803; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)804; CHECK-NEXT:    }805; CHECK-NEXT:    {806; CHECK-NEXT:     p0 = and(p2,and(p0,!p1))807; CHECK-NEXT:    }808; CHECK-NEXT:    {809; CHECK-NEXT:     r1:0 = mask(p0)810; CHECK-NEXT:    }811; CHECK-NEXT:    {812; CHECK-NEXT:     jumpr r31813; CHECK-NEXT:    }814b0:815  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>816  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>817  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>818  %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>819  %v4 = and <2 x i1> %v0, %v2820  %v5 = and <2 x i1> %v3, %v4821  %v6 = sext <2 x i1> %v5 to <2 x i32>822  ret <2 x i32> %v6823}824 825define <2 x i32> @f23(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {826; CHECK-LABEL: f23:827; CHECK:       // %bb.0: // %b0828; CHECK-NEXT:    {829; CHECK-NEXT:     r7:6 = combine(#1,#1)830; CHECK-NEXT:    }831; CHECK-NEXT:    {832; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)833; CHECK-NEXT:    }834; CHECK-NEXT:    {835; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)836; CHECK-NEXT:    }837; CHECK-NEXT:    {838; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)839; CHECK-NEXT:    }840; CHECK-NEXT:    {841; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))842; CHECK-NEXT:    }843; CHECK-NEXT:    {844; CHECK-NEXT:     r1:0 = mask(p0)845; CHECK-NEXT:    }846; CHECK-NEXT:    {847; CHECK-NEXT:     jumpr r31848; CHECK-NEXT:    }849b0:850  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>851  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>852  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>853  %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>854  %v4 = or <2 x i1> %v0, %v2855  %v5 = and <2 x i1> %v3, %v4856  %v6 = sext <2 x i1> %v5 to <2 x i32>857  ret <2 x i32> %v6858}859 860define <2 x i32> @f24(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {861; CHECK-LABEL: f24:862; CHECK:       // %bb.0: // %b0863; CHECK-NEXT:    {864; CHECK-NEXT:     r7:6 = combine(#1,#1)865; CHECK-NEXT:    }866; CHECK-NEXT:    {867; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)868; CHECK-NEXT:    }869; CHECK-NEXT:    {870; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)871; CHECK-NEXT:    }872; CHECK-NEXT:    {873; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)874; CHECK-NEXT:    }875; CHECK-NEXT:    {876; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))877; CHECK-NEXT:    }878; CHECK-NEXT:    {879; CHECK-NEXT:     r1:0 = mask(p0)880; CHECK-NEXT:    }881; CHECK-NEXT:    {882; CHECK-NEXT:     jumpr r31883; CHECK-NEXT:    }884b0:885  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>886  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>887  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>888  %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>889  %v4 = and <2 x i1> %v0, %v2890  %v5 = or <2 x i1> %v3, %v4891  %v6 = sext <2 x i1> %v5 to <2 x i32>892  ret <2 x i32> %v6893}894 895define <2 x i32> @f25(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {896; CHECK-LABEL: f25:897; CHECK:       // %bb.0: // %b0898; CHECK-NEXT:    {899; CHECK-NEXT:     r7:6 = combine(#1,#1)900; CHECK-NEXT:    }901; CHECK-NEXT:    {902; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)903; CHECK-NEXT:    }904; CHECK-NEXT:    {905; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)906; CHECK-NEXT:    }907; CHECK-NEXT:    {908; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)909; CHECK-NEXT:    }910; CHECK-NEXT:    {911; CHECK-NEXT:     p0 = or(p2,or(p0,!p1))912; CHECK-NEXT:    }913; CHECK-NEXT:    {914; CHECK-NEXT:     r1:0 = mask(p0)915; CHECK-NEXT:    }916; CHECK-NEXT:    {917; CHECK-NEXT:     jumpr r31918; CHECK-NEXT:    }919b0:920  %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>921  %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>922  %v2 = xor <2 x i1> %v1, <i1 true, i1 true>923  %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>924  %v4 = or <2 x i1> %v0, %v2925  %v5 = or <2 x i1> %v3, %v4926  %v6 = sext <2 x i1> %v5 to <2 x i32>927  ret <2 x i32> %v6928}929 930define <4 x i16> @f26(<4 x i16> %a0, <4 x i16> %a1) #1 {931; CHECK-LABEL: f26:932; CHECK:       // %bb.0: // %b0933; CHECK-NEXT:    {934; CHECK-NEXT:     r4 = ##65537935; CHECK-NEXT:    }936; CHECK-NEXT:    {937; CHECK-NEXT:     r5 = ##65537938; CHECK-NEXT:    }939; CHECK-NEXT:    {940; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)941; CHECK-NEXT:    }942; CHECK-NEXT:    {943; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)944; CHECK-NEXT:    }945; CHECK-NEXT:    {946; CHECK-NEXT:     p0 = and(p0,p1)947; CHECK-NEXT:    }948; CHECK-NEXT:    {949; CHECK-NEXT:     r1:0 = mask(p0)950; CHECK-NEXT:    }951; CHECK-NEXT:    {952; CHECK-NEXT:     jumpr r31953; CHECK-NEXT:    }954b0:955  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>956  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>957  %v2 = and <4 x i1> %v0, %v1958  %v3 = sext <4 x i1> %v2 to <4 x i16>959  ret <4 x i16> %v3960}961 962define <4 x i16> @f27(<4 x i16> %a0, <4 x i16> %a1) #1 {963; CHECK-LABEL: f27:964; CHECK:       // %bb.0: // %b0965; CHECK-NEXT:    {966; CHECK-NEXT:     r4 = ##65537967; CHECK-NEXT:    }968; CHECK-NEXT:    {969; CHECK-NEXT:     r5 = ##65537970; CHECK-NEXT:    }971; CHECK-NEXT:    {972; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)973; CHECK-NEXT:    }974; CHECK-NEXT:    {975; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)976; CHECK-NEXT:    }977; CHECK-NEXT:    {978; CHECK-NEXT:     p0 = or(p0,p1)979; CHECK-NEXT:    }980; CHECK-NEXT:    {981; CHECK-NEXT:     r1:0 = mask(p0)982; CHECK-NEXT:    }983; CHECK-NEXT:    {984; CHECK-NEXT:     jumpr r31985; CHECK-NEXT:    }986b0:987  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>988  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>989  %v2 = or <4 x i1> %v0, %v1990  %v3 = sext <4 x i1> %v2 to <4 x i16>991  ret <4 x i16> %v3992}993 994define <4 x i16> @f28(<4 x i16> %a0, <4 x i16> %a1) #1 {995; CHECK-LABEL: f28:996; CHECK:       // %bb.0: // %b0997; CHECK-NEXT:    {998; CHECK-NEXT:     r4 = ##65537999; CHECK-NEXT:    }1000; CHECK-NEXT:    {1001; CHECK-NEXT:     r5 = ##655371002; CHECK-NEXT:    }1003; CHECK-NEXT:    {1004; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)1005; CHECK-NEXT:    }1006; CHECK-NEXT:    {1007; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)1008; CHECK-NEXT:    }1009; CHECK-NEXT:    {1010; CHECK-NEXT:     p0 = xor(p0,p1)1011; CHECK-NEXT:    }1012; CHECK-NEXT:    {1013; CHECK-NEXT:     r1:0 = mask(p0)1014; CHECK-NEXT:    }1015; CHECK-NEXT:    {1016; CHECK-NEXT:     jumpr r311017; CHECK-NEXT:    }1018b0:1019  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1020  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1021  %v2 = xor <4 x i1> %v0, %v11022  %v3 = sext <4 x i1> %v2 to <4 x i16>1023  ret <4 x i16> %v31024}1025 1026define <4 x i16> @f29(<4 x i16> %a0, <4 x i16> %a1) #1 {1027; CHECK-LABEL: f29:1028; CHECK:       // %bb.0: // %b01029; CHECK-NEXT:    {1030; CHECK-NEXT:     r4 = ##655371031; CHECK-NEXT:    }1032; CHECK-NEXT:    {1033; CHECK-NEXT:     r5 = ##655371034; CHECK-NEXT:    }1035; CHECK-NEXT:    {1036; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)1037; CHECK-NEXT:    }1038; CHECK-NEXT:    {1039; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)1040; CHECK-NEXT:    }1041; CHECK-NEXT:    {1042; CHECK-NEXT:     p0 = and(p0,!p1)1043; CHECK-NEXT:    }1044; CHECK-NEXT:    {1045; CHECK-NEXT:     r1:0 = mask(p0)1046; CHECK-NEXT:    }1047; CHECK-NEXT:    {1048; CHECK-NEXT:     jumpr r311049; CHECK-NEXT:    }1050b0:1051  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1052  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1053  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1054  %v3 = and <4 x i1> %v0, %v21055  %v4 = sext <4 x i1> %v3 to <4 x i16>1056  ret <4 x i16> %v41057}1058 1059define <4 x i16> @f30(<4 x i16> %a0, <4 x i16> %a1) #1 {1060; CHECK-LABEL: f30:1061; CHECK:       // %bb.0: // %b01062; CHECK-NEXT:    {1063; CHECK-NEXT:     r4 = ##655371064; CHECK-NEXT:    }1065; CHECK-NEXT:    {1066; CHECK-NEXT:     r5 = ##655371067; CHECK-NEXT:    }1068; CHECK-NEXT:    {1069; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)1070; CHECK-NEXT:    }1071; CHECK-NEXT:    {1072; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)1073; CHECK-NEXT:    }1074; CHECK-NEXT:    {1075; CHECK-NEXT:     p0 = or(p0,!p1)1076; CHECK-NEXT:    }1077; CHECK-NEXT:    {1078; CHECK-NEXT:     r1:0 = mask(p0)1079; CHECK-NEXT:    }1080; CHECK-NEXT:    {1081; CHECK-NEXT:     jumpr r311082; CHECK-NEXT:    }1083b0:1084  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1085  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1086  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1087  %v3 = or <4 x i1> %v0, %v21088  %v4 = sext <4 x i1> %v3 to <4 x i16>1089  ret <4 x i16> %v41090}1091 1092define <4 x i16> @f31(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1093; CHECK-LABEL: f31:1094; CHECK:       // %bb.0: // %b01095; CHECK-NEXT:    {1096; CHECK-NEXT:     r6 = ##655371097; CHECK-NEXT:    }1098; CHECK-NEXT:    {1099; CHECK-NEXT:     r7 = ##655371100; CHECK-NEXT:    }1101; CHECK-NEXT:    {1102; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1103; CHECK-NEXT:    }1104; CHECK-NEXT:    {1105; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1106; CHECK-NEXT:    }1107; CHECK-NEXT:    {1108; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1109; CHECK-NEXT:    }1110; CHECK-NEXT:    {1111; CHECK-NEXT:     p0 = and(p2,and(p0,p1))1112; CHECK-NEXT:    }1113; CHECK-NEXT:    {1114; CHECK-NEXT:     r1:0 = mask(p0)1115; CHECK-NEXT:    }1116; CHECK-NEXT:    {1117; CHECK-NEXT:     jumpr r311118; CHECK-NEXT:    }1119b0:1120  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1121  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1122  %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1123  %v3 = and <4 x i1> %v0, %v11124  %v4 = and <4 x i1> %v2, %v31125  %v5 = sext <4 x i1> %v4 to <4 x i16>1126  ret <4 x i16> %v51127}1128 1129define <4 x i16> @f32(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1130; CHECK-LABEL: f32:1131; CHECK:       // %bb.0: // %b01132; CHECK-NEXT:    {1133; CHECK-NEXT:     r6 = ##655371134; CHECK-NEXT:    }1135; CHECK-NEXT:    {1136; CHECK-NEXT:     r7 = ##655371137; CHECK-NEXT:    }1138; CHECK-NEXT:    {1139; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1140; CHECK-NEXT:    }1141; CHECK-NEXT:    {1142; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1143; CHECK-NEXT:    }1144; CHECK-NEXT:    {1145; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1146; CHECK-NEXT:    }1147; CHECK-NEXT:    {1148; CHECK-NEXT:     p0 = and(p2,or(p0,p1))1149; CHECK-NEXT:    }1150; CHECK-NEXT:    {1151; CHECK-NEXT:     r1:0 = mask(p0)1152; CHECK-NEXT:    }1153; CHECK-NEXT:    {1154; CHECK-NEXT:     jumpr r311155; CHECK-NEXT:    }1156b0:1157  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1158  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1159  %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1160  %v3 = or <4 x i1> %v0, %v11161  %v4 = and <4 x i1> %v2, %v31162  %v5 = sext <4 x i1> %v4 to <4 x i16>1163  ret <4 x i16> %v51164}1165 1166define <4 x i16> @f33(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1167; CHECK-LABEL: f33:1168; CHECK:       // %bb.0: // %b01169; CHECK-NEXT:    {1170; CHECK-NEXT:     r6 = ##655371171; CHECK-NEXT:    }1172; CHECK-NEXT:    {1173; CHECK-NEXT:     r7 = ##655371174; CHECK-NEXT:    }1175; CHECK-NEXT:    {1176; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1177; CHECK-NEXT:    }1178; CHECK-NEXT:    {1179; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1180; CHECK-NEXT:    }1181; CHECK-NEXT:    {1182; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1183; CHECK-NEXT:    }1184; CHECK-NEXT:    {1185; CHECK-NEXT:     p0 = or(p2,and(p0,p1))1186; CHECK-NEXT:    }1187; CHECK-NEXT:    {1188; CHECK-NEXT:     r1:0 = mask(p0)1189; CHECK-NEXT:    }1190; CHECK-NEXT:    {1191; CHECK-NEXT:     jumpr r311192; CHECK-NEXT:    }1193b0:1194  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1195  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1196  %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1197  %v3 = and <4 x i1> %v0, %v11198  %v4 = or <4 x i1> %v2, %v31199  %v5 = sext <4 x i1> %v4 to <4 x i16>1200  ret <4 x i16> %v51201}1202 1203define <4 x i16> @f34(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1204; CHECK-LABEL: f34:1205; CHECK:       // %bb.0: // %b01206; CHECK-NEXT:    {1207; CHECK-NEXT:     r6 = ##655371208; CHECK-NEXT:    }1209; CHECK-NEXT:    {1210; CHECK-NEXT:     r7 = ##655371211; CHECK-NEXT:    }1212; CHECK-NEXT:    {1213; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1214; CHECK-NEXT:    }1215; CHECK-NEXT:    {1216; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1217; CHECK-NEXT:    }1218; CHECK-NEXT:    {1219; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1220; CHECK-NEXT:    }1221; CHECK-NEXT:    {1222; CHECK-NEXT:     p0 = or(p2,or(p0,p1))1223; CHECK-NEXT:    }1224; CHECK-NEXT:    {1225; CHECK-NEXT:     r1:0 = mask(p0)1226; CHECK-NEXT:    }1227; CHECK-NEXT:    {1228; CHECK-NEXT:     jumpr r311229; CHECK-NEXT:    }1230b0:1231  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1232  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1233  %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1234  %v3 = or <4 x i1> %v0, %v11235  %v4 = or <4 x i1> %v2, %v31236  %v5 = sext <4 x i1> %v4 to <4 x i16>1237  ret <4 x i16> %v51238}1239 1240define <4 x i16> @f35(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1241; CHECK-LABEL: f35:1242; CHECK:       // %bb.0: // %b01243; CHECK-NEXT:    {1244; CHECK-NEXT:     r6 = ##655371245; CHECK-NEXT:    }1246; CHECK-NEXT:    {1247; CHECK-NEXT:     r7 = ##655371248; CHECK-NEXT:    }1249; CHECK-NEXT:    {1250; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1251; CHECK-NEXT:    }1252; CHECK-NEXT:    {1253; CHECK-NEXT:     p1 = vcmph.eq(r5:4,r7:6)1254; CHECK-NEXT:    }1255; CHECK-NEXT:    {1256; CHECK-NEXT:     p2 = vcmph.eq(r3:2,r7:6)1257; CHECK-NEXT:    }1258; CHECK-NEXT:    {1259; CHECK-NEXT:     p0 = and(p0,p1)1260; CHECK-NEXT:    }1261; CHECK-NEXT:    {1262; CHECK-NEXT:     p0 = and(p0,!p2)1263; CHECK-NEXT:    }1264; CHECK-NEXT:    {1265; CHECK-NEXT:     r1:0 = mask(p0)1266; CHECK-NEXT:    }1267; CHECK-NEXT:    {1268; CHECK-NEXT:     jumpr r311269; CHECK-NEXT:    }1270b0:1271  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1272  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1273  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1274  %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1275  %v4 = and <4 x i1> %v0, %v21276  %v5 = and <4 x i1> %v3, %v41277  %v6 = sext <4 x i1> %v5 to <4 x i16>1278  ret <4 x i16> %v61279}1280 1281define <4 x i16> @f36(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1282; CHECK-LABEL: f36:1283; CHECK:       // %bb.0: // %b01284; CHECK-NEXT:    {1285; CHECK-NEXT:     r6 = ##655371286; CHECK-NEXT:    }1287; CHECK-NEXT:    {1288; CHECK-NEXT:     r7 = ##655371289; CHECK-NEXT:    }1290; CHECK-NEXT:    {1291; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1292; CHECK-NEXT:    }1293; CHECK-NEXT:    {1294; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1295; CHECK-NEXT:    }1296; CHECK-NEXT:    {1297; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1298; CHECK-NEXT:    }1299; CHECK-NEXT:    {1300; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))1301; CHECK-NEXT:    }1302; CHECK-NEXT:    {1303; CHECK-NEXT:     r1:0 = mask(p0)1304; CHECK-NEXT:    }1305; CHECK-NEXT:    {1306; CHECK-NEXT:     jumpr r311307; CHECK-NEXT:    }1308b0:1309  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1310  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1311  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1312  %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1313  %v4 = or <4 x i1> %v0, %v21314  %v5 = and <4 x i1> %v3, %v41315  %v6 = sext <4 x i1> %v5 to <4 x i16>1316  ret <4 x i16> %v61317}1318 1319define <4 x i16> @f37(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1320; CHECK-LABEL: f37:1321; CHECK:       // %bb.0: // %b01322; CHECK-NEXT:    {1323; CHECK-NEXT:     r6 = ##655371324; CHECK-NEXT:    }1325; CHECK-NEXT:    {1326; CHECK-NEXT:     r7 = ##655371327; CHECK-NEXT:    }1328; CHECK-NEXT:    {1329; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1330; CHECK-NEXT:    }1331; CHECK-NEXT:    {1332; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)1333; CHECK-NEXT:    }1334; CHECK-NEXT:    {1335; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)1336; CHECK-NEXT:    }1337; CHECK-NEXT:    {1338; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))1339; CHECK-NEXT:    }1340; CHECK-NEXT:    {1341; CHECK-NEXT:     r1:0 = mask(p0)1342; CHECK-NEXT:    }1343; CHECK-NEXT:    {1344; CHECK-NEXT:     jumpr r311345; CHECK-NEXT:    }1346b0:1347  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1348  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1349  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1350  %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1351  %v4 = and <4 x i1> %v0, %v21352  %v5 = or <4 x i1> %v3, %v41353  %v6 = sext <4 x i1> %v5 to <4 x i16>1354  ret <4 x i16> %v61355}1356 1357define <4 x i16> @f38(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {1358; CHECK-LABEL: f38:1359; CHECK:       // %bb.0: // %b01360; CHECK-NEXT:    {1361; CHECK-NEXT:     r6 = ##655371362; CHECK-NEXT:    }1363; CHECK-NEXT:    {1364; CHECK-NEXT:     r7 = ##655371365; CHECK-NEXT:    }1366; CHECK-NEXT:    {1367; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)1368; CHECK-NEXT:    }1369; CHECK-NEXT:    {1370; CHECK-NEXT:     p1 = vcmph.eq(r5:4,r7:6)1371; CHECK-NEXT:    }1372; CHECK-NEXT:    {1373; CHECK-NEXT:     p2 = vcmph.eq(r3:2,r7:6)1374; CHECK-NEXT:    }1375; CHECK-NEXT:    {1376; CHECK-NEXT:     p0 = or(p0,p1)1377; CHECK-NEXT:    }1378; CHECK-NEXT:    {1379; CHECK-NEXT:     p0 = or(p0,!p2)1380; CHECK-NEXT:    }1381; CHECK-NEXT:    {1382; CHECK-NEXT:     r1:0 = mask(p0)1383; CHECK-NEXT:    }1384; CHECK-NEXT:    {1385; CHECK-NEXT:     jumpr r311386; CHECK-NEXT:    }1387b0:1388  %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>1389  %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>1390  %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>1391  %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>1392  %v4 = or <4 x i1> %v0, %v21393  %v5 = or <4 x i1> %v3, %v41394  %v6 = sext <4 x i1> %v5 to <4 x i16>1395  ret <4 x i16> %v61396}1397 1398define <8 x i8> @f39(<8 x i8> %a0, <8 x i8> %a1) #1 {1399; CHECK-LABEL: f39:1400; CHECK:       // %bb.0: // %b01401; CHECK-NEXT:    {1402; CHECK-NEXT:     r4 = #11403; CHECK-NEXT:    }1404; CHECK-NEXT:    {1405; CHECK-NEXT:     r5:4 = vsplatb(r4)1406; CHECK-NEXT:    }1407; CHECK-NEXT:    {1408; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)1409; CHECK-NEXT:    }1410; CHECK-NEXT:    {1411; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)1412; CHECK-NEXT:    }1413; CHECK-NEXT:    {1414; CHECK-NEXT:     p0 = and(p0,p1)1415; CHECK-NEXT:    }1416; CHECK-NEXT:    {1417; CHECK-NEXT:     r1:0 = mask(p0)1418; CHECK-NEXT:    }1419; CHECK-NEXT:    {1420; CHECK-NEXT:     jumpr r311421; CHECK-NEXT:    }1422b0:1423  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1424  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1425  %v2 = and <8 x i1> %v0, %v11426  %v3 = sext <8 x i1> %v2 to <8 x i8>1427  ret <8 x i8> %v31428}1429 1430define <8 x i8> @f40(<8 x i8> %a0, <8 x i8> %a1) #1 {1431; CHECK-LABEL: f40:1432; CHECK:       // %bb.0: // %b01433; CHECK-NEXT:    {1434; CHECK-NEXT:     r4 = #11435; CHECK-NEXT:    }1436; CHECK-NEXT:    {1437; CHECK-NEXT:     r5:4 = vsplatb(r4)1438; CHECK-NEXT:    }1439; CHECK-NEXT:    {1440; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)1441; CHECK-NEXT:    }1442; CHECK-NEXT:    {1443; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)1444; CHECK-NEXT:    }1445; CHECK-NEXT:    {1446; CHECK-NEXT:     p0 = or(p0,p1)1447; CHECK-NEXT:    }1448; CHECK-NEXT:    {1449; CHECK-NEXT:     r1:0 = mask(p0)1450; CHECK-NEXT:    }1451; CHECK-NEXT:    {1452; CHECK-NEXT:     jumpr r311453; CHECK-NEXT:    }1454b0:1455  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1456  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1457  %v2 = or <8 x i1> %v0, %v11458  %v3 = sext <8 x i1> %v2 to <8 x i8>1459  ret <8 x i8> %v31460}1461 1462define <8 x i8> @f41(<8 x i8> %a0, <8 x i8> %a1) #1 {1463; CHECK-LABEL: f41:1464; CHECK:       // %bb.0: // %b01465; CHECK-NEXT:    {1466; CHECK-NEXT:     r4 = #11467; CHECK-NEXT:    }1468; CHECK-NEXT:    {1469; CHECK-NEXT:     r5:4 = vsplatb(r4)1470; CHECK-NEXT:    }1471; CHECK-NEXT:    {1472; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)1473; CHECK-NEXT:    }1474; CHECK-NEXT:    {1475; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)1476; CHECK-NEXT:    }1477; CHECK-NEXT:    {1478; CHECK-NEXT:     p0 = xor(p0,p1)1479; CHECK-NEXT:    }1480; CHECK-NEXT:    {1481; CHECK-NEXT:     r1:0 = mask(p0)1482; CHECK-NEXT:    }1483; CHECK-NEXT:    {1484; CHECK-NEXT:     jumpr r311485; CHECK-NEXT:    }1486b0:1487  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1488  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1489  %v2 = xor <8 x i1> %v0, %v11490  %v3 = sext <8 x i1> %v2 to <8 x i8>1491  ret <8 x i8> %v31492}1493 1494define <8 x i8> @f42(<8 x i8> %a0, <8 x i8> %a1) #1 {1495; CHECK-LABEL: f42:1496; CHECK:       // %bb.0: // %b01497; CHECK-NEXT:    {1498; CHECK-NEXT:     r4 = #11499; CHECK-NEXT:    }1500; CHECK-NEXT:    {1501; CHECK-NEXT:     r5:4 = vsplatb(r4)1502; CHECK-NEXT:    }1503; CHECK-NEXT:    {1504; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)1505; CHECK-NEXT:    }1506; CHECK-NEXT:    {1507; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)1508; CHECK-NEXT:    }1509; CHECK-NEXT:    {1510; CHECK-NEXT:     p0 = and(p0,!p1)1511; CHECK-NEXT:    }1512; CHECK-NEXT:    {1513; CHECK-NEXT:     r1:0 = mask(p0)1514; CHECK-NEXT:    }1515; CHECK-NEXT:    {1516; CHECK-NEXT:     jumpr r311517; CHECK-NEXT:    }1518b0:1519  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1520  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1521  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1522  %v3 = and <8 x i1> %v0, %v21523  %v4 = sext <8 x i1> %v3 to <8 x i8>1524  ret <8 x i8> %v41525}1526 1527define <8 x i8> @f43(<8 x i8> %a0, <8 x i8> %a1) #1 {1528; CHECK-LABEL: f43:1529; CHECK:       // %bb.0: // %b01530; CHECK-NEXT:    {1531; CHECK-NEXT:     r4 = #11532; CHECK-NEXT:    }1533; CHECK-NEXT:    {1534; CHECK-NEXT:     r5:4 = vsplatb(r4)1535; CHECK-NEXT:    }1536; CHECK-NEXT:    {1537; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)1538; CHECK-NEXT:    }1539; CHECK-NEXT:    {1540; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)1541; CHECK-NEXT:    }1542; CHECK-NEXT:    {1543; CHECK-NEXT:     p0 = or(p0,!p1)1544; CHECK-NEXT:    }1545; CHECK-NEXT:    {1546; CHECK-NEXT:     r1:0 = mask(p0)1547; CHECK-NEXT:    }1548; CHECK-NEXT:    {1549; CHECK-NEXT:     jumpr r311550; CHECK-NEXT:    }1551b0:1552  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1553  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1554  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1555  %v3 = or <8 x i1> %v0, %v21556  %v4 = sext <8 x i1> %v3 to <8 x i8>1557  ret <8 x i8> %v41558}1559 1560define <8 x i8> @f44(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1561; CHECK-LABEL: f44:1562; CHECK:       // %bb.0: // %b01563; CHECK-NEXT:    {1564; CHECK-NEXT:     r6 = #11565; CHECK-NEXT:    }1566; CHECK-NEXT:    {1567; CHECK-NEXT:     r7:6 = vsplatb(r6)1568; CHECK-NEXT:    }1569; CHECK-NEXT:    {1570; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1571; CHECK-NEXT:    }1572; CHECK-NEXT:    {1573; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1574; CHECK-NEXT:    }1575; CHECK-NEXT:    {1576; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1577; CHECK-NEXT:    }1578; CHECK-NEXT:    {1579; CHECK-NEXT:     p0 = and(p2,and(p0,p1))1580; CHECK-NEXT:    }1581; CHECK-NEXT:    {1582; CHECK-NEXT:     r1:0 = mask(p0)1583; CHECK-NEXT:    }1584; CHECK-NEXT:    {1585; CHECK-NEXT:     jumpr r311586; CHECK-NEXT:    }1587b0:1588  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1589  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1590  %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1591  %v3 = and <8 x i1> %v0, %v11592  %v4 = and <8 x i1> %v2, %v31593  %v5 = sext <8 x i1> %v4 to <8 x i8>1594  ret <8 x i8> %v51595}1596 1597define <8 x i8> @f45(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1598; CHECK-LABEL: f45:1599; CHECK:       // %bb.0: // %b01600; CHECK-NEXT:    {1601; CHECK-NEXT:     r6 = #11602; CHECK-NEXT:    }1603; CHECK-NEXT:    {1604; CHECK-NEXT:     r7:6 = vsplatb(r6)1605; CHECK-NEXT:    }1606; CHECK-NEXT:    {1607; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1608; CHECK-NEXT:    }1609; CHECK-NEXT:    {1610; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1611; CHECK-NEXT:    }1612; CHECK-NEXT:    {1613; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1614; CHECK-NEXT:    }1615; CHECK-NEXT:    {1616; CHECK-NEXT:     p0 = and(p2,or(p0,p1))1617; CHECK-NEXT:    }1618; CHECK-NEXT:    {1619; CHECK-NEXT:     r1:0 = mask(p0)1620; CHECK-NEXT:    }1621; CHECK-NEXT:    {1622; CHECK-NEXT:     jumpr r311623; CHECK-NEXT:    }1624b0:1625  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1626  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1627  %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1628  %v3 = or <8 x i1> %v0, %v11629  %v4 = and <8 x i1> %v2, %v31630  %v5 = sext <8 x i1> %v4 to <8 x i8>1631  ret <8 x i8> %v51632}1633 1634define <8 x i8> @f46(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1635; CHECK-LABEL: f46:1636; CHECK:       // %bb.0: // %b01637; CHECK-NEXT:    {1638; CHECK-NEXT:     r6 = #11639; CHECK-NEXT:    }1640; CHECK-NEXT:    {1641; CHECK-NEXT:     r7:6 = vsplatb(r6)1642; CHECK-NEXT:    }1643; CHECK-NEXT:    {1644; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1645; CHECK-NEXT:    }1646; CHECK-NEXT:    {1647; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1648; CHECK-NEXT:    }1649; CHECK-NEXT:    {1650; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1651; CHECK-NEXT:    }1652; CHECK-NEXT:    {1653; CHECK-NEXT:     p0 = or(p2,and(p0,p1))1654; CHECK-NEXT:    }1655; CHECK-NEXT:    {1656; CHECK-NEXT:     r1:0 = mask(p0)1657; CHECK-NEXT:    }1658; CHECK-NEXT:    {1659; CHECK-NEXT:     jumpr r311660; CHECK-NEXT:    }1661b0:1662  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1663  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1664  %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1665  %v3 = and <8 x i1> %v0, %v11666  %v4 = or <8 x i1> %v2, %v31667  %v5 = sext <8 x i1> %v4 to <8 x i8>1668  ret <8 x i8> %v51669}1670 1671define <8 x i8> @f47(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1672; CHECK-LABEL: f47:1673; CHECK:       // %bb.0: // %b01674; CHECK-NEXT:    {1675; CHECK-NEXT:     r6 = #11676; CHECK-NEXT:    }1677; CHECK-NEXT:    {1678; CHECK-NEXT:     r7:6 = vsplatb(r6)1679; CHECK-NEXT:    }1680; CHECK-NEXT:    {1681; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1682; CHECK-NEXT:    }1683; CHECK-NEXT:    {1684; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1685; CHECK-NEXT:    }1686; CHECK-NEXT:    {1687; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1688; CHECK-NEXT:    }1689; CHECK-NEXT:    {1690; CHECK-NEXT:     p0 = or(p2,or(p0,p1))1691; CHECK-NEXT:    }1692; CHECK-NEXT:    {1693; CHECK-NEXT:     r1:0 = mask(p0)1694; CHECK-NEXT:    }1695; CHECK-NEXT:    {1696; CHECK-NEXT:     jumpr r311697; CHECK-NEXT:    }1698b0:1699  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1700  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1701  %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1702  %v3 = or <8 x i1> %v0, %v11703  %v4 = or <8 x i1> %v2, %v31704  %v5 = sext <8 x i1> %v4 to <8 x i8>1705  ret <8 x i8> %v51706}1707 1708define <8 x i8> @f48(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1709; CHECK-LABEL: f48:1710; CHECK:       // %bb.0: // %b01711; CHECK-NEXT:    {1712; CHECK-NEXT:     r6 = #11713; CHECK-NEXT:    }1714; CHECK-NEXT:    {1715; CHECK-NEXT:     r7:6 = vsplatb(r6)1716; CHECK-NEXT:    }1717; CHECK-NEXT:    {1718; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1719; CHECK-NEXT:    }1720; CHECK-NEXT:    {1721; CHECK-NEXT:     p1 = vcmpb.eq(r5:4,r7:6)1722; CHECK-NEXT:    }1723; CHECK-NEXT:    {1724; CHECK-NEXT:     p2 = vcmpb.eq(r3:2,r7:6)1725; CHECK-NEXT:    }1726; CHECK-NEXT:    {1727; CHECK-NEXT:     p0 = and(p0,p1)1728; CHECK-NEXT:    }1729; CHECK-NEXT:    {1730; CHECK-NEXT:     p0 = and(p0,!p2)1731; CHECK-NEXT:    }1732; CHECK-NEXT:    {1733; CHECK-NEXT:     r1:0 = mask(p0)1734; CHECK-NEXT:    }1735; CHECK-NEXT:    {1736; CHECK-NEXT:     jumpr r311737; CHECK-NEXT:    }1738b0:1739  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1740  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1741  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1742  %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1743  %v4 = and <8 x i1> %v0, %v21744  %v5 = and <8 x i1> %v3, %v41745  %v6 = sext <8 x i1> %v5 to <8 x i8>1746  ret <8 x i8> %v61747}1748 1749define <8 x i8> @f49(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1750; CHECK-LABEL: f49:1751; CHECK:       // %bb.0: // %b01752; CHECK-NEXT:    {1753; CHECK-NEXT:     r6 = #11754; CHECK-NEXT:    }1755; CHECK-NEXT:    {1756; CHECK-NEXT:     r7:6 = vsplatb(r6)1757; CHECK-NEXT:    }1758; CHECK-NEXT:    {1759; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1760; CHECK-NEXT:    }1761; CHECK-NEXT:    {1762; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1763; CHECK-NEXT:    }1764; CHECK-NEXT:    {1765; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1766; CHECK-NEXT:    }1767; CHECK-NEXT:    {1768; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))1769; CHECK-NEXT:    }1770; CHECK-NEXT:    {1771; CHECK-NEXT:     r1:0 = mask(p0)1772; CHECK-NEXT:    }1773; CHECK-NEXT:    {1774; CHECK-NEXT:     jumpr r311775; CHECK-NEXT:    }1776b0:1777  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1778  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1779  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1780  %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1781  %v4 = or <8 x i1> %v0, %v21782  %v5 = and <8 x i1> %v3, %v41783  %v6 = sext <8 x i1> %v5 to <8 x i8>1784  ret <8 x i8> %v61785}1786 1787define <8 x i8> @f50(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1788; CHECK-LABEL: f50:1789; CHECK:       // %bb.0: // %b01790; CHECK-NEXT:    {1791; CHECK-NEXT:     r6 = #11792; CHECK-NEXT:    }1793; CHECK-NEXT:    {1794; CHECK-NEXT:     r7:6 = vsplatb(r6)1795; CHECK-NEXT:    }1796; CHECK-NEXT:    {1797; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1798; CHECK-NEXT:    }1799; CHECK-NEXT:    {1800; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)1801; CHECK-NEXT:    }1802; CHECK-NEXT:    {1803; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)1804; CHECK-NEXT:    }1805; CHECK-NEXT:    {1806; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))1807; CHECK-NEXT:    }1808; CHECK-NEXT:    {1809; CHECK-NEXT:     r1:0 = mask(p0)1810; CHECK-NEXT:    }1811; CHECK-NEXT:    {1812; CHECK-NEXT:     jumpr r311813; CHECK-NEXT:    }1814b0:1815  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1816  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1817  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1818  %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1819  %v4 = and <8 x i1> %v0, %v21820  %v5 = or <8 x i1> %v3, %v41821  %v6 = sext <8 x i1> %v5 to <8 x i8>1822  ret <8 x i8> %v61823}1824 1825define <8 x i8> @f51(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {1826; CHECK-LABEL: f51:1827; CHECK:       // %bb.0: // %b01828; CHECK-NEXT:    {1829; CHECK-NEXT:     r6 = #11830; CHECK-NEXT:    }1831; CHECK-NEXT:    {1832; CHECK-NEXT:     r7:6 = vsplatb(r6)1833; CHECK-NEXT:    }1834; CHECK-NEXT:    {1835; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)1836; CHECK-NEXT:    }1837; CHECK-NEXT:    {1838; CHECK-NEXT:     p1 = vcmpb.eq(r5:4,r7:6)1839; CHECK-NEXT:    }1840; CHECK-NEXT:    {1841; CHECK-NEXT:     p2 = vcmpb.eq(r3:2,r7:6)1842; CHECK-NEXT:    }1843; CHECK-NEXT:    {1844; CHECK-NEXT:     p0 = or(p0,p1)1845; CHECK-NEXT:    }1846; CHECK-NEXT:    {1847; CHECK-NEXT:     p0 = or(p0,!p2)1848; CHECK-NEXT:    }1849; CHECK-NEXT:    {1850; CHECK-NEXT:     r1:0 = mask(p0)1851; CHECK-NEXT:    }1852; CHECK-NEXT:    {1853; CHECK-NEXT:     jumpr r311854; CHECK-NEXT:    }1855b0:1856  %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1857  %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1858  %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>1859  %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>1860  %v4 = or <8 x i1> %v0, %v21861  %v5 = or <8 x i1> %v3, %v41862  %v6 = sext <8 x i1> %v5 to <8 x i8>1863  ret <8 x i8> %v61864}1865 1866attributes #0 = { nounwind readnone }1867attributes #1 = { nounwind "target-features"="-small-data,-packets" }1868