680 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon < %s | FileCheck %s3 4declare <32 x i32> @llvm.hexagon.V6.vL32b.pred.ai.128B(i1, ptr, i32)5declare <32 x i32> @llvm.hexagon.V6.vL32b.npred.ai.128B(i1, ptr, i32)6declare <32 x i32> @llvm.hexagon.V6.vL32b.nt.pred.ai.128B(i1, ptr, i32)7declare <32 x i32> @llvm.hexagon.V6.vL32b.nt.npred.ai.128B(i1, ptr, i32)8 9declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.pi.128B(i1, ptr, i32)10declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.pi.128B(i1, ptr, i32)11declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.pi.128B(i1, ptr, i32)12declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.pi.128B(i1, ptr, i32)13 14declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.ppu.128B(i1, ptr, i32)15declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.ppu.128B(i1, ptr, i32)16declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.ppu.128B(i1, ptr, i32)17declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.ppu.128B(i1, ptr, i32)18 19declare void @llvm.hexagon.V6.vS32b.pred.ai.128B(i1, ptr, i32, <32 x i32>)20declare void @llvm.hexagon.V6.vS32b.npred.ai.128B(i1, ptr, i32, <32 x i32>)21declare void @llvm.hexagon.V6.vS32Ub.pred.ai.128B(i1, ptr, i32, <32 x i32>)22declare void @llvm.hexagon.V6.vS32Ub.npred.ai.128B(i1, ptr, i32, <32 x i32>)23declare void @llvm.hexagon.V6.vS32b.nt.pred.ai.128B(i1, ptr, i32, <32 x i32>)24declare void @llvm.hexagon.V6.vS32b.nt.npred.ai.128B(i1, ptr, i32, <32 x i32>)25 26declare ptr @llvm.hexagon.V6.vS32b.pred.pi.128B(i1, ptr, i32, <32 x i32>)27declare ptr @llvm.hexagon.V6.vS32b.npred.pi.128B(i1, ptr, i32, <32 x i32>)28declare ptr @llvm.hexagon.V6.vS32Ub.pred.pi.128B(i1, ptr, i32, <32 x i32>)29declare ptr @llvm.hexagon.V6.vS32Ub.npred.pi.128B(i1, ptr, i32, <32 x i32>)30declare ptr @llvm.hexagon.V6.vS32b.nt.pred.pi.128B(i1, ptr, i32, <32 x i32>)31declare ptr @llvm.hexagon.V6.vS32b.nt.npred.pi.128B(i1, ptr, i32, <32 x i32>)32 33declare ptr @llvm.hexagon.V6.vS32b.pred.ppu.128B(i1, ptr, i32, <32 x i32>)34declare ptr @llvm.hexagon.V6.vS32b.npred.ppu.128B(i1, ptr, i32, <32 x i32>)35declare ptr @llvm.hexagon.V6.vS32Ub.pred.ppu.128B(i1, ptr, i32, <32 x i32>)36declare ptr @llvm.hexagon.V6.vS32Ub.npred.ppu.128B(i1, ptr, i32, <32 x i32>)37declare ptr @llvm.hexagon.V6.vS32b.nt.pred.ppu.128B(i1, ptr, i32, <32 x i32>)38declare ptr @llvm.hexagon.V6.vS32b.nt.npred.ppu.128B(i1, ptr, i32, <32 x i32>)39 40 41define <32 x i32> @f0(i32 %a0, ptr %a1) #0 {42; CHECK-LABEL: f0:43; CHECK: // %bb.0: // %b044; CHECK-NEXT: {45; CHECK-NEXT: p0 = cmp.eq(r0,#0)46; CHECK-NEXT: }47; CHECK-NEXT: {48; CHECK-NEXT: if (p0) v0 = vmem(r1+#3)49; CHECK-NEXT: }50; CHECK-NEXT: {51; CHECK-NEXT: jumpr r3152; CHECK-NEXT: }53b0:54 %v0 = icmp eq i32 %a0, 055 %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.pred.ai.128B(i1 %v0, ptr %a1, i32 384)56 ret <32 x i32> %v157}58 59define <32 x i32> @f1(i32 %a0, ptr %a1) #0 {60; CHECK-LABEL: f1:61; CHECK: // %bb.0: // %b062; CHECK-NEXT: {63; CHECK-NEXT: p0 = cmp.eq(r0,#0)64; CHECK-NEXT: }65; CHECK-NEXT: {66; CHECK-NEXT: if (!p0) v0 = vmem(r1+#3)67; CHECK-NEXT: }68; CHECK-NEXT: {69; CHECK-NEXT: jumpr r3170; CHECK-NEXT: }71b0:72 %v0 = icmp eq i32 %a0, 073 %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.npred.ai.128B(i1 %v0, ptr %a1, i32 384)74 ret <32 x i32> %v175}76 77define <32 x i32> @f2(i32 %a0, ptr %a1) #0 {78; CHECK-LABEL: f2:79; CHECK: // %bb.0: // %b080; CHECK-NEXT: {81; CHECK-NEXT: p0 = cmp.eq(r0,#0)82; CHECK-NEXT: }83; CHECK-NEXT: {84; CHECK-NEXT: if (p0) v0 = vmem(r1+#3):nt85; CHECK-NEXT: }86; CHECK-NEXT: {87; CHECK-NEXT: jumpr r3188; CHECK-NEXT: }89b0:90 %v0 = icmp eq i32 %a0, 091 %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.nt.pred.ai.128B(i1 %v0, ptr %a1, i32 384)92 ret <32 x i32> %v193}94 95define <32 x i32> @f3(i32 %a0, ptr %a1) #0 {96; CHECK-LABEL: f3:97; CHECK: // %bb.0: // %b098; CHECK-NEXT: {99; CHECK-NEXT: p0 = cmp.eq(r0,#0)100; CHECK-NEXT: }101; CHECK-NEXT: {102; CHECK-NEXT: if (!p0) v0 = vmem(r1+#3):nt103; CHECK-NEXT: }104; CHECK-NEXT: {105; CHECK-NEXT: jumpr r31106; CHECK-NEXT: }107b0:108 %v0 = icmp eq i32 %a0, 0109 %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.nt.npred.ai.128B(i1 %v0, ptr %a1, i32 384)110 ret <32 x i32> %v1111}112 113define ptr @f4(i32 %a0, ptr %a1) #0 {114; CHECK-LABEL: f4:115; CHECK: // %bb.0: // %b0116; CHECK-NEXT: {117; CHECK-NEXT: p0 = cmp.eq(r0,#0)118; CHECK-NEXT: }119; CHECK-NEXT: {120; CHECK-NEXT: r0 = r1121; CHECK-NEXT: }122; CHECK-NEXT: {123; CHECK-NEXT: if (p0) v0 = vmem(r0++#3)124; CHECK-NEXT: }125; CHECK-NEXT: {126; CHECK-NEXT: jumpr r31127; CHECK-NEXT: }128b0:129 %v0 = icmp eq i32 %a0, 0130 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.pi.128B(i1 %v0, ptr %a1, i32 384)131 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1132 ret ptr %v2133}134 135define ptr @f5(i32 %a0, ptr %a1) #0 {136; CHECK-LABEL: f5:137; CHECK: // %bb.0: // %b0138; CHECK-NEXT: {139; CHECK-NEXT: p0 = cmp.eq(r0,#0)140; CHECK-NEXT: }141; CHECK-NEXT: {142; CHECK-NEXT: r0 = r1143; CHECK-NEXT: }144; CHECK-NEXT: {145; CHECK-NEXT: if (!p0) v0 = vmem(r0++#3)146; CHECK-NEXT: }147; CHECK-NEXT: {148; CHECK-NEXT: jumpr r31149; CHECK-NEXT: }150b0:151 %v0 = icmp eq i32 %a0, 0152 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.pi.128B(i1 %v0, ptr %a1, i32 384)153 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1154 ret ptr %v2155}156 157define ptr @f6(i32 %a0, ptr %a1) #0 {158; CHECK-LABEL: f6:159; CHECK: // %bb.0: // %b0160; CHECK-NEXT: {161; CHECK-NEXT: p0 = cmp.eq(r0,#0)162; CHECK-NEXT: }163; CHECK-NEXT: {164; CHECK-NEXT: r0 = r1165; CHECK-NEXT: }166; CHECK-NEXT: {167; CHECK-NEXT: if (p0) v0 = vmem(r0++#3):nt168; CHECK-NEXT: }169; CHECK-NEXT: {170; CHECK-NEXT: jumpr r31171; CHECK-NEXT: }172b0:173 %v0 = icmp eq i32 %a0, 0174 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.pi.128B(i1 %v0, ptr %a1, i32 384)175 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1176 ret ptr %v2177}178 179define ptr @f7(i32 %a0, ptr %a1) #0 {180; CHECK-LABEL: f7:181; CHECK: // %bb.0: // %b0182; CHECK-NEXT: {183; CHECK-NEXT: p0 = cmp.eq(r0,#0)184; CHECK-NEXT: }185; CHECK-NEXT: {186; CHECK-NEXT: r0 = r1187; CHECK-NEXT: }188; CHECK-NEXT: {189; CHECK-NEXT: if (!p0) v0 = vmem(r0++#3):nt190; CHECK-NEXT: }191; CHECK-NEXT: {192; CHECK-NEXT: jumpr r31193; CHECK-NEXT: }194b0:195 %v0 = icmp eq i32 %a0, 0196 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.pi.128B(i1 %v0, ptr %a1, i32 384)197 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1198 ret ptr %v2199}200 201define ptr @f8(i32 %a0, ptr %a1, i32 %a2) #0 {202; CHECK-LABEL: f8:203; CHECK: // %bb.0: // %b0204; CHECK-NEXT: {205; CHECK-NEXT: p0 = cmp.eq(r0,#0)206; CHECK-NEXT: }207; CHECK-NEXT: {208; CHECK-NEXT: r0 = r1209; CHECK-NEXT: }210; CHECK-NEXT: {211; CHECK-NEXT: m0 = r2212; CHECK-NEXT: }213; CHECK-NEXT: {214; CHECK-NEXT: if (p0) v0 = vmem(r0++m0)215; CHECK-NEXT: }216; CHECK-NEXT: {217; CHECK-NEXT: jumpr r31218; CHECK-NEXT: }219b0:220 %v0 = icmp eq i32 %a0, 0221 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)222 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1223 ret ptr %v2224}225 226define ptr @f9(i32 %a0, ptr %a1, i32 %a2) #0 {227; CHECK-LABEL: f9:228; CHECK: // %bb.0: // %b0229; CHECK-NEXT: {230; CHECK-NEXT: p0 = cmp.eq(r0,#0)231; CHECK-NEXT: }232; CHECK-NEXT: {233; CHECK-NEXT: r0 = r1234; CHECK-NEXT: }235; CHECK-NEXT: {236; CHECK-NEXT: m0 = r2237; CHECK-NEXT: }238; CHECK-NEXT: {239; CHECK-NEXT: if (!p0) v0 = vmem(r0++m0)240; CHECK-NEXT: }241; CHECK-NEXT: {242; CHECK-NEXT: jumpr r31243; CHECK-NEXT: }244b0:245 %v0 = icmp eq i32 %a0, 0246 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)247 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1248 ret ptr %v2249}250 251define ptr @f10(i32 %a0, ptr %a1, i32 %a2) #0 {252; CHECK-LABEL: f10:253; CHECK: // %bb.0: // %b0254; CHECK-NEXT: {255; CHECK-NEXT: p0 = cmp.eq(r0,#0)256; CHECK-NEXT: }257; CHECK-NEXT: {258; CHECK-NEXT: r0 = r1259; CHECK-NEXT: }260; CHECK-NEXT: {261; CHECK-NEXT: m0 = r2262; CHECK-NEXT: }263; CHECK-NEXT: {264; CHECK-NEXT: if (p0) v0 = vmem(r0++m0):nt265; CHECK-NEXT: }266; CHECK-NEXT: {267; CHECK-NEXT: jumpr r31268; CHECK-NEXT: }269b0:270 %v0 = icmp eq i32 %a0, 0271 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)272 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1273 ret ptr %v2274}275 276define ptr @f11(i32 %a0, ptr %a1, i32 %a2) #0 {277; CHECK-LABEL: f11:278; CHECK: // %bb.0: // %b0279; CHECK-NEXT: {280; CHECK-NEXT: p0 = cmp.eq(r0,#0)281; CHECK-NEXT: }282; CHECK-NEXT: {283; CHECK-NEXT: r0 = r1284; CHECK-NEXT: }285; CHECK-NEXT: {286; CHECK-NEXT: m0 = r2287; CHECK-NEXT: }288; CHECK-NEXT: {289; CHECK-NEXT: if (!p0) v0 = vmem(r0++m0):nt290; CHECK-NEXT: }291; CHECK-NEXT: {292; CHECK-NEXT: jumpr r31293; CHECK-NEXT: }294b0:295 %v0 = icmp eq i32 %a0, 0296 %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)297 %v2 = extractvalue { <32 x i32>, ptr } %v1, 1298 ret ptr %v2299}300 301define void @f12(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {302; CHECK-LABEL: f12:303; CHECK: // %bb.0: // %b0304; CHECK-NEXT: {305; CHECK-NEXT: p0 = cmp.eq(r0,#0)306; CHECK-NEXT: }307; CHECK-NEXT: {308; CHECK-NEXT: if (p0) vmem(r1+#-3) = v0309; CHECK-NEXT: }310; CHECK-NEXT: {311; CHECK-NEXT: jumpr r31312; CHECK-NEXT: }313b0:314 %v0 = icmp eq i32 %a0, 0315 call void @llvm.hexagon.V6.vS32b.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)316 ret void317}318 319define void @f13(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {320; CHECK-LABEL: f13:321; CHECK: // %bb.0: // %b0322; CHECK-NEXT: {323; CHECK-NEXT: p0 = cmp.eq(r0,#0)324; CHECK-NEXT: }325; CHECK-NEXT: {326; CHECK-NEXT: if (!p0) vmem(r1+#-3) = v0327; CHECK-NEXT: }328; CHECK-NEXT: {329; CHECK-NEXT: jumpr r31330; CHECK-NEXT: }331b0:332 %v0 = icmp eq i32 %a0, 0333 call void @llvm.hexagon.V6.vS32b.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)334 ret void335}336 337define void @f14(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {338; CHECK-LABEL: f14:339; CHECK: // %bb.0: // %b0340; CHECK-NEXT: {341; CHECK-NEXT: p0 = cmp.eq(r0,#0)342; CHECK-NEXT: }343; CHECK-NEXT: {344; CHECK-NEXT: if (p0) vmemu(r1+#-3) = v0345; CHECK-NEXT: }346; CHECK-NEXT: {347; CHECK-NEXT: jumpr r31348; CHECK-NEXT: }349b0:350 %v0 = icmp eq i32 %a0, 0351 call void @llvm.hexagon.V6.vS32Ub.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)352 ret void353}354 355define void @f15(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {356; CHECK-LABEL: f15:357; CHECK: // %bb.0: // %b0358; CHECK-NEXT: {359; CHECK-NEXT: p0 = cmp.eq(r0,#0)360; CHECK-NEXT: }361; CHECK-NEXT: {362; CHECK-NEXT: if (!p0) vmemu(r1+#-3) = v0363; CHECK-NEXT: }364; CHECK-NEXT: {365; CHECK-NEXT: jumpr r31366; CHECK-NEXT: }367b0:368 %v0 = icmp eq i32 %a0, 0369 call void @llvm.hexagon.V6.vS32Ub.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)370 ret void371}372 373define void @f16(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {374; CHECK-LABEL: f16:375; CHECK: // %bb.0: // %b0376; CHECK-NEXT: {377; CHECK-NEXT: p0 = cmp.eq(r0,#0)378; CHECK-NEXT: }379; CHECK-NEXT: {380; CHECK-NEXT: if (p0) vmem(r1+#-3):nt = v0381; CHECK-NEXT: }382; CHECK-NEXT: {383; CHECK-NEXT: jumpr r31384; CHECK-NEXT: }385b0:386 %v0 = icmp eq i32 %a0, 0387 call void @llvm.hexagon.V6.vS32b.nt.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)388 ret void389}390 391define void @f17(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {392; CHECK-LABEL: f17:393; CHECK: // %bb.0: // %b0394; CHECK-NEXT: {395; CHECK-NEXT: p0 = cmp.eq(r0,#0)396; CHECK-NEXT: }397; CHECK-NEXT: {398; CHECK-NEXT: if (!p0) vmem(r1+#-3):nt = v0399; CHECK-NEXT: }400; CHECK-NEXT: {401; CHECK-NEXT: jumpr r31402; CHECK-NEXT: }403b0:404 %v0 = icmp eq i32 %a0, 0405 call void @llvm.hexagon.V6.vS32b.nt.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)406 ret void407}408 409define ptr @f18(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {410; CHECK-LABEL: f18:411; CHECK: // %bb.0: // %b0412; CHECK-NEXT: {413; CHECK-NEXT: p0 = cmp.eq(r0,#0)414; CHECK-NEXT: }415; CHECK-NEXT: {416; CHECK-NEXT: r0 = r1417; CHECK-NEXT: }418; CHECK-NEXT: {419; CHECK-NEXT: if (p0) vmem(r0++#-3) = v0420; CHECK-NEXT: }421; CHECK-NEXT: {422; CHECK-NEXT: jumpr r31423; CHECK-NEXT: }424b0:425 %v0 = icmp eq i32 %a0, 0426 %v1 = call ptr @llvm.hexagon.V6.vS32b.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)427 ret ptr %v1428}429 430define ptr @f19(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {431; CHECK-LABEL: f19:432; CHECK: // %bb.0: // %b0433; CHECK-NEXT: {434; CHECK-NEXT: p0 = cmp.eq(r0,#0)435; CHECK-NEXT: }436; CHECK-NEXT: {437; CHECK-NEXT: r0 = r1438; CHECK-NEXT: }439; CHECK-NEXT: {440; CHECK-NEXT: if (!p0) vmem(r0++#-3) = v0441; CHECK-NEXT: }442; CHECK-NEXT: {443; CHECK-NEXT: jumpr r31444; CHECK-NEXT: }445b0:446 %v0 = icmp eq i32 %a0, 0447 %v1 = call ptr @llvm.hexagon.V6.vS32b.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)448 ret ptr %v1449}450 451define ptr @f20(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {452; CHECK-LABEL: f20:453; CHECK: // %bb.0: // %b0454; CHECK-NEXT: {455; CHECK-NEXT: p0 = cmp.eq(r0,#0)456; CHECK-NEXT: }457; CHECK-NEXT: {458; CHECK-NEXT: r0 = r1459; CHECK-NEXT: }460; CHECK-NEXT: {461; CHECK-NEXT: if (p0) vmemu(r0++#-3) = v0462; CHECK-NEXT: }463; CHECK-NEXT: {464; CHECK-NEXT: jumpr r31465; CHECK-NEXT: }466b0:467 %v0 = icmp eq i32 %a0, 0468 %v1 = call ptr @llvm.hexagon.V6.vS32Ub.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)469 ret ptr %v1470}471 472define ptr @f21(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {473; CHECK-LABEL: f21:474; CHECK: // %bb.0: // %b0475; CHECK-NEXT: {476; CHECK-NEXT: p0 = cmp.eq(r0,#0)477; CHECK-NEXT: }478; CHECK-NEXT: {479; CHECK-NEXT: r0 = r1480; CHECK-NEXT: }481; CHECK-NEXT: {482; CHECK-NEXT: if (!p0) vmemu(r0++#-3) = v0483; CHECK-NEXT: }484; CHECK-NEXT: {485; CHECK-NEXT: jumpr r31486; CHECK-NEXT: }487b0:488 %v0 = icmp eq i32 %a0, 0489 %v1 = call ptr @llvm.hexagon.V6.vS32Ub.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)490 ret ptr %v1491}492 493define ptr @f22(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {494; CHECK-LABEL: f22:495; CHECK: // %bb.0: // %b0496; CHECK-NEXT: {497; CHECK-NEXT: p0 = cmp.eq(r0,#0)498; CHECK-NEXT: }499; CHECK-NEXT: {500; CHECK-NEXT: r0 = r1501; CHECK-NEXT: }502; CHECK-NEXT: {503; CHECK-NEXT: if (p0) vmem(r0++#-3):nt = v0504; CHECK-NEXT: }505; CHECK-NEXT: {506; CHECK-NEXT: jumpr r31507; CHECK-NEXT: }508b0:509 %v0 = icmp eq i32 %a0, 0510 %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)511 ret ptr %v1512}513 514define ptr @f23(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {515; CHECK-LABEL: f23:516; CHECK: // %bb.0: // %b0517; CHECK-NEXT: {518; CHECK-NEXT: p0 = cmp.eq(r0,#0)519; CHECK-NEXT: }520; CHECK-NEXT: {521; CHECK-NEXT: r0 = r1522; CHECK-NEXT: }523; CHECK-NEXT: {524; CHECK-NEXT: if (!p0) vmem(r0++#-3):nt = v0525; CHECK-NEXT: }526; CHECK-NEXT: {527; CHECK-NEXT: jumpr r31528; CHECK-NEXT: }529b0:530 %v0 = icmp eq i32 %a0, 0531 %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)532 ret ptr %v1533}534 535define ptr @f24(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {536; CHECK-LABEL: f24:537; CHECK: // %bb.0: // %b0538; CHECK-NEXT: {539; CHECK-NEXT: p0 = cmp.eq(r0,#0)540; CHECK-NEXT: }541; CHECK-NEXT: {542; CHECK-NEXT: r0 = r1543; CHECK-NEXT: }544; CHECK-NEXT: {545; CHECK-NEXT: m0 = r2546; CHECK-NEXT: }547; CHECK-NEXT: {548; CHECK-NEXT: if (p0) vmem(r0++m0) = v0549; CHECK-NEXT: }550; CHECK-NEXT: {551; CHECK-NEXT: jumpr r31552; CHECK-NEXT: }553b0:554 %v0 = icmp eq i32 %a0, 0555 %v1 = call ptr @llvm.hexagon.V6.vS32b.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)556 ret ptr %v1557}558 559define ptr @f25(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {560; CHECK-LABEL: f25:561; CHECK: // %bb.0: // %b0562; CHECK-NEXT: {563; CHECK-NEXT: p0 = cmp.eq(r0,#0)564; CHECK-NEXT: }565; CHECK-NEXT: {566; CHECK-NEXT: r0 = r1567; CHECK-NEXT: }568; CHECK-NEXT: {569; CHECK-NEXT: m0 = r2570; CHECK-NEXT: }571; CHECK-NEXT: {572; CHECK-NEXT: if (!p0) vmem(r0++m0) = v0573; CHECK-NEXT: }574; CHECK-NEXT: {575; CHECK-NEXT: jumpr r31576; CHECK-NEXT: }577b0:578 %v0 = icmp eq i32 %a0, 0579 %v1 = call ptr @llvm.hexagon.V6.vS32b.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)580 ret ptr %v1581}582 583define ptr @f26(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {584; CHECK-LABEL: f26:585; CHECK: // %bb.0: // %b0586; CHECK-NEXT: {587; CHECK-NEXT: p0 = cmp.eq(r0,#0)588; CHECK-NEXT: }589; CHECK-NEXT: {590; CHECK-NEXT: r0 = r1591; CHECK-NEXT: }592; CHECK-NEXT: {593; CHECK-NEXT: m0 = r2594; CHECK-NEXT: }595; CHECK-NEXT: {596; CHECK-NEXT: if (p0) vmemu(r0++m0) = v0597; CHECK-NEXT: }598; CHECK-NEXT: {599; CHECK-NEXT: jumpr r31600; CHECK-NEXT: }601b0:602 %v0 = icmp eq i32 %a0, 0603 %v1 = call ptr @llvm.hexagon.V6.vS32Ub.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)604 ret ptr %v1605}606 607define ptr @f27(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {608; CHECK-LABEL: f27:609; CHECK: // %bb.0: // %b0610; CHECK-NEXT: {611; CHECK-NEXT: p0 = cmp.eq(r0,#0)612; CHECK-NEXT: }613; CHECK-NEXT: {614; CHECK-NEXT: r0 = r1615; CHECK-NEXT: }616; CHECK-NEXT: {617; CHECK-NEXT: m0 = r2618; CHECK-NEXT: }619; CHECK-NEXT: {620; CHECK-NEXT: if (!p0) vmemu(r0++m0) = v0621; CHECK-NEXT: }622; CHECK-NEXT: {623; CHECK-NEXT: jumpr r31624; CHECK-NEXT: }625b0:626 %v0 = icmp eq i32 %a0, 0627 %v1 = call ptr @llvm.hexagon.V6.vS32Ub.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)628 ret ptr %v1629}630 631define ptr @f28(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {632; CHECK-LABEL: f28:633; CHECK: // %bb.0: // %b0634; CHECK-NEXT: {635; CHECK-NEXT: p0 = cmp.eq(r0,#0)636; CHECK-NEXT: }637; CHECK-NEXT: {638; CHECK-NEXT: r0 = r1639; CHECK-NEXT: }640; CHECK-NEXT: {641; CHECK-NEXT: m0 = r2642; CHECK-NEXT: }643; CHECK-NEXT: {644; CHECK-NEXT: if (p0) vmem(r0++m0):nt = v0645; CHECK-NEXT: }646; CHECK-NEXT: {647; CHECK-NEXT: jumpr r31648; CHECK-NEXT: }649b0:650 %v0 = icmp eq i32 %a0, 0651 %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)652 ret ptr %v1653}654 655define ptr @f29(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {656; CHECK-LABEL: f29:657; CHECK: // %bb.0: // %b0658; CHECK-NEXT: {659; CHECK-NEXT: p0 = cmp.eq(r0,#0)660; CHECK-NEXT: }661; CHECK-NEXT: {662; CHECK-NEXT: r0 = r1663; CHECK-NEXT: }664; CHECK-NEXT: {665; CHECK-NEXT: m0 = r2666; CHECK-NEXT: }667; CHECK-NEXT: {668; CHECK-NEXT: if (!p0) vmem(r0++m0):nt = v0669; CHECK-NEXT: }670; CHECK-NEXT: {671; CHECK-NEXT: jumpr r31672; CHECK-NEXT: }673b0:674 %v0 = icmp eq i32 %a0, 0675 %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)676 ret ptr %v1677}678 679attributes #0 = { nounwind "target-cpu"="hexagonv66" "target-features"="+hvxv66,+hvx-length128b,-packets" }680