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