brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.1 KiB · 3435cec Raw
768 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=aarch64 -mattr=+sve2 %s -o - | FileCheck %s3 4define <vscale x 16 x i1> @whilewr_8(ptr %a, ptr %b) {5; CHECK-LABEL: whilewr_8:6; CHECK:       // %bb.0: // %entry7; CHECK-NEXT:    whilewr p0.b, x0, x18; CHECK-NEXT:    ret9entry:10  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.war.mask.nxv16i1(ptr %a, ptr %b, i64 1)11  ret <vscale x 16 x i1> %012}13 14define <vscale x 8 x i1> @whilewr_16(ptr %a, ptr %b) {15; CHECK-LABEL: whilewr_16:16; CHECK:       // %bb.0: // %entry17; CHECK-NEXT:    whilewr p0.h, x0, x118; CHECK-NEXT:    ret19entry:20  %0 = call <vscale x 8 x i1> @llvm.loop.dependence.war.mask.nxv8i1(ptr %a, ptr %b, i64 2)21  ret <vscale x 8 x i1> %022}23 24define <vscale x 4 x i1> @whilewr_32(ptr %a, ptr %b) {25; CHECK-LABEL: whilewr_32:26; CHECK:       // %bb.0: // %entry27; CHECK-NEXT:    whilewr p0.s, x0, x128; CHECK-NEXT:    ret29entry:30  %0 = call <vscale x 4 x i1> @llvm.loop.dependence.war.mask.nxv4i1(ptr %a, ptr %b, i64 4)31  ret <vscale x 4 x i1> %032}33 34define <vscale x 2 x i1> @whilewr_64(ptr %a, ptr %b) {35; CHECK-LABEL: whilewr_64:36; CHECK:       // %bb.0: // %entry37; CHECK-NEXT:    whilewr p0.d, x0, x138; CHECK-NEXT:    ret39entry:40  %0 = call <vscale x 2 x i1> @llvm.loop.dependence.war.mask.nxv2i1(ptr %a, ptr %b, i64 8)41  ret <vscale x 2 x i1> %042}43 44define <vscale x 16 x i1> @whilerw_8(ptr %a, ptr %b) {45; CHECK-LABEL: whilerw_8:46; CHECK:       // %bb.0: // %entry47; CHECK-NEXT:    whilerw p0.b, x0, x148; CHECK-NEXT:    ret49entry:50  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.raw.mask.nxv16i1(ptr %a, ptr %b, i64 1)51  ret <vscale x 16 x i1> %052}53 54define <vscale x 8 x i1> @whilerw_16(ptr %a, ptr %b) {55; CHECK-LABEL: whilerw_16:56; CHECK:       // %bb.0: // %entry57; CHECK-NEXT:    whilerw p0.h, x0, x158; CHECK-NEXT:    ret59entry:60  %0 = call <vscale x 8 x i1> @llvm.loop.dependence.raw.mask.nxv8i1(ptr %a, ptr %b, i64 2)61  ret <vscale x 8 x i1> %062}63 64define <vscale x 4 x i1> @whilerw_32(ptr %a, ptr %b) {65; CHECK-LABEL: whilerw_32:66; CHECK:       // %bb.0: // %entry67; CHECK-NEXT:    whilerw p0.s, x0, x168; CHECK-NEXT:    ret69entry:70  %0 = call <vscale x 4 x i1> @llvm.loop.dependence.raw.mask.nxv4i1(ptr %a, ptr %b, i64 4)71  ret <vscale x 4 x i1> %072}73 74define <vscale x 2 x i1> @whilerw_64(ptr %a, ptr %b) {75; CHECK-LABEL: whilerw_64:76; CHECK:       // %bb.0: // %entry77; CHECK-NEXT:    whilerw p0.d, x0, x178; CHECK-NEXT:    ret79entry:80  %0 = call <vscale x 2 x i1> @llvm.loop.dependence.raw.mask.nxv2i1(ptr %a, ptr %b, i64 8)81  ret <vscale x 2 x i1> %082}83 84define <vscale x 32 x i1> @whilewr_8_split(ptr %a, ptr %b) {85; CHECK-LABEL: whilewr_8_split:86; CHECK:       // %bb.0: // %entry87; CHECK-NEXT:    whilewr p0.b, x0, x188; CHECK-NEXT:    incb x089; CHECK-NEXT:    whilewr p1.b, x0, x190; CHECK-NEXT:    ret91entry:92  %0 = call <vscale x 32 x i1> @llvm.loop.dependence.war.mask.nxv32i1(ptr %a, ptr %b, i64 1)93  ret <vscale x 32 x i1> %094}95 96define <vscale x 64 x i1> @whilewr_8_split2(ptr %a, ptr %b) {97; CHECK-LABEL: whilewr_8_split2:98; CHECK:       // %bb.0: // %entry99; CHECK-NEXT:    mov x8, x0100; CHECK-NEXT:    whilewr p0.b, x0, x1101; CHECK-NEXT:    addvl x9, x0, #3102; CHECK-NEXT:    incb x0, all, mul #2103; CHECK-NEXT:    incb x8104; CHECK-NEXT:    whilewr p3.b, x9, x1105; CHECK-NEXT:    whilewr p2.b, x0, x1106; CHECK-NEXT:    whilewr p1.b, x8, x1107; CHECK-NEXT:    ret108entry:109  %0 = call <vscale x 64 x i1> @llvm.loop.dependence.war.mask.nxv64i1(ptr %a, ptr %b, i64 1)110  ret <vscale x 64 x i1> %0111}112 113define <vscale x 16 x i1> @whilewr_16_expand(ptr %a, ptr %b) {114; CHECK-LABEL: whilewr_16_expand:115; CHECK:       // %bb.0: // %entry116; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill117; CHECK-NEXT:    addvl sp, sp, #-1118; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill119; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill120; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill121; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill122; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG123; CHECK-NEXT:    .cfi_offset w29, -16124; CHECK-NEXT:    index z0.d, #0, #1125; CHECK-NEXT:    sub x8, x1, x0126; CHECK-NEXT:    ptrue p0.d127; CHECK-NEXT:    add x8, x8, x8, lsr #63128; CHECK-NEXT:    asr x8, x8, #1129; CHECK-NEXT:    mov z1.d, z0.d130; CHECK-NEXT:    mov z4.d, z0.d131; CHECK-NEXT:    mov z5.d, z0.d132; CHECK-NEXT:    mov z2.d, x8133; CHECK-NEXT:    incd z1.d134; CHECK-NEXT:    incd z4.d, all, mul #2135; CHECK-NEXT:    incd z5.d, all, mul #4136; CHECK-NEXT:    cmphi p2.d, p0/z, z2.d, z0.d137; CHECK-NEXT:    mov z3.d, z1.d138; CHECK-NEXT:    cmphi p1.d, p0/z, z2.d, z1.d139; CHECK-NEXT:    incd z1.d, all, mul #4140; CHECK-NEXT:    cmphi p3.d, p0/z, z2.d, z4.d141; CHECK-NEXT:    incd z4.d, all, mul #4142; CHECK-NEXT:    cmphi p4.d, p0/z, z2.d, z5.d143; CHECK-NEXT:    incd z3.d, all, mul #2144; CHECK-NEXT:    cmphi p5.d, p0/z, z2.d, z1.d145; CHECK-NEXT:    cmphi p7.d, p0/z, z2.d, z4.d146; CHECK-NEXT:    uzp1 p1.s, p2.s, p1.s147; CHECK-NEXT:    mov z0.d, z3.d148; CHECK-NEXT:    cmphi p6.d, p0/z, z2.d, z3.d149; CHECK-NEXT:    uzp1 p2.s, p4.s, p5.s150; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload151; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload152; CHECK-NEXT:    incd z0.d, all, mul #4153; CHECK-NEXT:    uzp1 p3.s, p3.s, p6.s154; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload155; CHECK-NEXT:    cmphi p0.d, p0/z, z2.d, z0.d156; CHECK-NEXT:    uzp1 p1.h, p1.h, p3.h157; CHECK-NEXT:    cmp x8, #1158; CHECK-NEXT:    cset w8, lt159; CHECK-NEXT:    sbfx x8, x8, #0, #1160; CHECK-NEXT:    uzp1 p0.s, p7.s, p0.s161; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload162; CHECK-NEXT:    uzp1 p0.h, p2.h, p0.h163; CHECK-NEXT:    uzp1 p0.b, p1.b, p0.b164; CHECK-NEXT:    whilelo p1.b, xzr, x8165; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b166; CHECK-NEXT:    addvl sp, sp, #1167; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload168; CHECK-NEXT:    ret169entry:170  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.war.mask.nxv16i1(ptr %a, ptr %b, i64 2)171  ret <vscale x 16 x i1> %0172}173 174define <vscale x 32 x i1> @whilewr_16_expand2(ptr %a, ptr %b) {175; CHECK-LABEL: whilewr_16_expand2:176; CHECK:       // %bb.0: // %entry177; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill178; CHECK-NEXT:    addvl sp, sp, #-1179; CHECK-NEXT:    str p9, [sp, #2, mul vl] // 2-byte Spill180; CHECK-NEXT:    str p8, [sp, #3, mul vl] // 2-byte Spill181; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill182; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill183; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill184; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill185; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG186; CHECK-NEXT:    .cfi_offset w29, -16187; CHECK-NEXT:    index z0.d, #0, #1188; CHECK-NEXT:    sub x8, x1, x0189; CHECK-NEXT:    incb x0, all, mul #2190; CHECK-NEXT:    add x8, x8, x8, lsr #63191; CHECK-NEXT:    ptrue p0.d192; CHECK-NEXT:    asr x8, x8, #1193; CHECK-NEXT:    sub x9, x1, x0194; CHECK-NEXT:    mov z1.d, z0.d195; CHECK-NEXT:    mov z2.d, z0.d196; CHECK-NEXT:    mov z3.d, z0.d197; CHECK-NEXT:    mov z5.d, x8198; CHECK-NEXT:    add x9, x9, x9, lsr #63199; CHECK-NEXT:    incd z1.d200; CHECK-NEXT:    incd z2.d, all, mul #2201; CHECK-NEXT:    incd z3.d, all, mul #4202; CHECK-NEXT:    cmphi p2.d, p0/z, z5.d, z0.d203; CHECK-NEXT:    asr x9, x9, #1204; CHECK-NEXT:    mov z4.d, z1.d205; CHECK-NEXT:    mov z6.d, z1.d206; CHECK-NEXT:    mov z7.d, z2.d207; CHECK-NEXT:    cmphi p1.d, p0/z, z5.d, z1.d208; CHECK-NEXT:    cmphi p3.d, p0/z, z5.d, z3.d209; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z2.d210; CHECK-NEXT:    incd z4.d, all, mul #2211; CHECK-NEXT:    incd z6.d, all, mul #4212; CHECK-NEXT:    incd z7.d, all, mul #4213; CHECK-NEXT:    uzp1 p1.s, p2.s, p1.s214; CHECK-NEXT:    mov z24.d, z4.d215; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z6.d216; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z4.d217; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z7.d218; CHECK-NEXT:    incd z24.d, all, mul #4219; CHECK-NEXT:    uzp1 p2.s, p3.s, p4.s220; CHECK-NEXT:    uzp1 p3.s, p5.s, p6.s221; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z24.d222; CHECK-NEXT:    mov z5.d, x9223; CHECK-NEXT:    cmp x8, #1224; CHECK-NEXT:    uzp1 p1.h, p1.h, p3.h225; CHECK-NEXT:    cset w8, lt226; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z24.d227; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z7.d228; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z6.d229; CHECK-NEXT:    uzp1 p7.s, p7.s, p8.s230; CHECK-NEXT:    cmphi p9.d, p0/z, z5.d, z3.d231; CHECK-NEXT:    cmphi p3.d, p0/z, z5.d, z4.d232; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z2.d233; CHECK-NEXT:    sbfx x8, x8, #0, #1234; CHECK-NEXT:    uzp1 p2.h, p2.h, p7.h235; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z1.d236; CHECK-NEXT:    cmphi p0.d, p0/z, z5.d, z0.d237; CHECK-NEXT:    uzp1 p4.s, p5.s, p4.s238; CHECK-NEXT:    uzp1 p5.s, p9.s, p6.s239; CHECK-NEXT:    ldr p9, [sp, #2, mul vl] // 2-byte Reload240; CHECK-NEXT:    whilelo p6.b, xzr, x8241; CHECK-NEXT:    uzp1 p3.s, p8.s, p3.s242; CHECK-NEXT:    cmp x9, #1243; CHECK-NEXT:    ldr p8, [sp, #3, mul vl] // 2-byte Reload244; CHECK-NEXT:    uzp1 p0.s, p0.s, p7.s245; CHECK-NEXT:    cset w8, lt246; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload247; CHECK-NEXT:    uzp1 p4.h, p5.h, p4.h248; CHECK-NEXT:    sbfx x8, x8, #0, #1249; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload250; CHECK-NEXT:    uzp1 p0.h, p0.h, p3.h251; CHECK-NEXT:    uzp1 p1.b, p1.b, p2.b252; CHECK-NEXT:    uzp1 p2.b, p0.b, p4.b253; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload254; CHECK-NEXT:    whilelo p3.b, xzr, x8255; CHECK-NEXT:    sel p0.b, p1, p1.b, p6.b256; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload257; CHECK-NEXT:    sel p1.b, p2, p2.b, p3.b258; CHECK-NEXT:    addvl sp, sp, #1259; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload260; CHECK-NEXT:    ret261entry:262  %0 = call <vscale x 32 x i1> @llvm.loop.dependence.war.mask.nxv32i1(ptr %a, ptr %b, i64 2)263  ret <vscale x 32 x i1> %0264}265 266define <vscale x 8 x i1> @whilewr_32_expand(ptr %a, ptr %b) {267; CHECK-LABEL: whilewr_32_expand:268; CHECK:       // %bb.0: // %entry269; CHECK-NEXT:    index z0.d, #0, #1270; CHECK-NEXT:    subs x8, x1, x0271; CHECK-NEXT:    ptrue p0.d272; CHECK-NEXT:    add x9, x8, #3273; CHECK-NEXT:    csel x8, x9, x8, mi274; CHECK-NEXT:    asr x8, x8, #2275; CHECK-NEXT:    mov z1.d, z0.d276; CHECK-NEXT:    mov z2.d, z0.d277; CHECK-NEXT:    mov z3.d, x8278; CHECK-NEXT:    incd z1.d279; CHECK-NEXT:    incd z2.d, all, mul #2280; CHECK-NEXT:    cmphi p1.d, p0/z, z3.d, z0.d281; CHECK-NEXT:    mov z4.d, z1.d282; CHECK-NEXT:    cmphi p2.d, p0/z, z3.d, z1.d283; CHECK-NEXT:    cmphi p3.d, p0/z, z3.d, z2.d284; CHECK-NEXT:    incd z4.d, all, mul #2285; CHECK-NEXT:    uzp1 p1.s, p1.s, p2.s286; CHECK-NEXT:    cmphi p0.d, p0/z, z3.d, z4.d287; CHECK-NEXT:    cmp x8, #1288; CHECK-NEXT:    cset w8, lt289; CHECK-NEXT:    sbfx x8, x8, #0, #1290; CHECK-NEXT:    uzp1 p0.s, p3.s, p0.s291; CHECK-NEXT:    uzp1 p0.h, p1.h, p0.h292; CHECK-NEXT:    whilelo p1.h, xzr, x8293; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b294; CHECK-NEXT:    ret295entry:296  %0 = call <vscale x 8 x i1> @llvm.loop.dependence.war.mask.nxv8i1(ptr %a, ptr %b, i64 4)297  ret <vscale x 8 x i1> %0298}299 300define <vscale x 16 x i1> @whilewr_32_expand2(ptr %a, ptr %b) {301; CHECK-LABEL: whilewr_32_expand2:302; CHECK:       // %bb.0: // %entry303; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill304; CHECK-NEXT:    addvl sp, sp, #-1305; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill306; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill307; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill308; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill309; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG310; CHECK-NEXT:    .cfi_offset w29, -16311; CHECK-NEXT:    index z0.d, #0, #1312; CHECK-NEXT:    subs x8, x1, x0313; CHECK-NEXT:    ptrue p0.d314; CHECK-NEXT:    add x9, x8, #3315; CHECK-NEXT:    csel x8, x9, x8, mi316; CHECK-NEXT:    asr x8, x8, #2317; CHECK-NEXT:    mov z1.d, z0.d318; CHECK-NEXT:    mov z4.d, z0.d319; CHECK-NEXT:    mov z5.d, z0.d320; CHECK-NEXT:    mov z2.d, x8321; CHECK-NEXT:    incd z1.d322; CHECK-NEXT:    incd z4.d, all, mul #2323; CHECK-NEXT:    incd z5.d, all, mul #4324; CHECK-NEXT:    cmphi p2.d, p0/z, z2.d, z0.d325; CHECK-NEXT:    mov z3.d, z1.d326; CHECK-NEXT:    cmphi p1.d, p0/z, z2.d, z1.d327; CHECK-NEXT:    incd z1.d, all, mul #4328; CHECK-NEXT:    cmphi p3.d, p0/z, z2.d, z4.d329; CHECK-NEXT:    incd z4.d, all, mul #4330; CHECK-NEXT:    cmphi p4.d, p0/z, z2.d, z5.d331; CHECK-NEXT:    incd z3.d, all, mul #2332; CHECK-NEXT:    cmphi p5.d, p0/z, z2.d, z1.d333; CHECK-NEXT:    cmphi p7.d, p0/z, z2.d, z4.d334; CHECK-NEXT:    uzp1 p1.s, p2.s, p1.s335; CHECK-NEXT:    mov z0.d, z3.d336; CHECK-NEXT:    cmphi p6.d, p0/z, z2.d, z3.d337; CHECK-NEXT:    uzp1 p2.s, p4.s, p5.s338; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload339; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload340; CHECK-NEXT:    incd z0.d, all, mul #4341; CHECK-NEXT:    uzp1 p3.s, p3.s, p6.s342; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload343; CHECK-NEXT:    cmphi p0.d, p0/z, z2.d, z0.d344; CHECK-NEXT:    uzp1 p1.h, p1.h, p3.h345; CHECK-NEXT:    cmp x8, #1346; CHECK-NEXT:    cset w8, lt347; CHECK-NEXT:    sbfx x8, x8, #0, #1348; CHECK-NEXT:    uzp1 p0.s, p7.s, p0.s349; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload350; CHECK-NEXT:    uzp1 p0.h, p2.h, p0.h351; CHECK-NEXT:    uzp1 p0.b, p1.b, p0.b352; CHECK-NEXT:    whilelo p1.b, xzr, x8353; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b354; CHECK-NEXT:    addvl sp, sp, #1355; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload356; CHECK-NEXT:    ret357entry:358  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.war.mask.nxv16i1(ptr %a, ptr %b, i64 4)359  ret <vscale x 16 x i1> %0360}361 362define <vscale x 32 x i1> @whilewr_32_expand3(ptr %a, ptr %b) {363; CHECK-LABEL: whilewr_32_expand3:364; CHECK:       // %bb.0: // %entry365; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill366; CHECK-NEXT:    addvl sp, sp, #-1367; CHECK-NEXT:    str p10, [sp, #1, mul vl] // 2-byte Spill368; CHECK-NEXT:    str p9, [sp, #2, mul vl] // 2-byte Spill369; CHECK-NEXT:    str p8, [sp, #3, mul vl] // 2-byte Spill370; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill371; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill372; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill373; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill374; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG375; CHECK-NEXT:    .cfi_offset w29, -16376; CHECK-NEXT:    index z0.d, #0, #1377; CHECK-NEXT:    subs x8, x1, x0378; CHECK-NEXT:    ptrue p0.d379; CHECK-NEXT:    add x9, x8, #3380; CHECK-NEXT:    incb x0, all, mul #4381; CHECK-NEXT:    csel x8, x9, x8, mi382; CHECK-NEXT:    asr x8, x8, #2383; CHECK-NEXT:    mov z1.d, z0.d384; CHECK-NEXT:    mov z2.d, z0.d385; CHECK-NEXT:    mov z4.d, z0.d386; CHECK-NEXT:    mov z5.d, x8387; CHECK-NEXT:    incd z1.d388; CHECK-NEXT:    incd z2.d, all, mul #2389; CHECK-NEXT:    incd z4.d, all, mul #4390; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z0.d391; CHECK-NEXT:    mov z3.d, z1.d392; CHECK-NEXT:    mov z6.d, z2.d393; CHECK-NEXT:    mov z7.d, z1.d394; CHECK-NEXT:    cmphi p2.d, p0/z, z5.d, z4.d395; CHECK-NEXT:    cmphi p3.d, p0/z, z5.d, z2.d396; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z1.d397; CHECK-NEXT:    incd z3.d, all, mul #2398; CHECK-NEXT:    incd z6.d, all, mul #4399; CHECK-NEXT:    incd z7.d, all, mul #4400; CHECK-NEXT:    uzp1 p4.s, p5.s, p4.s401; CHECK-NEXT:    mov z24.d, z3.d402; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z6.d403; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z7.d404; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z3.d405; CHECK-NEXT:    incd z24.d, all, mul #4406; CHECK-NEXT:    uzp1 p2.s, p2.s, p7.s407; CHECK-NEXT:    uzp1 p3.s, p3.s, p8.s408; CHECK-NEXT:    cmphi p9.d, p0/z, z5.d, z24.d409; CHECK-NEXT:    cmp x8, #1410; CHECK-NEXT:    uzp1 p3.h, p4.h, p3.h411; CHECK-NEXT:    cset w8, lt412; CHECK-NEXT:    sbfx x8, x8, #0, #1413; CHECK-NEXT:    uzp1 p6.s, p6.s, p9.s414; CHECK-NEXT:    whilelo p1.b, xzr, x8415; CHECK-NEXT:    subs x8, x1, x0416; CHECK-NEXT:    uzp1 p2.h, p2.h, p6.h417; CHECK-NEXT:    add x9, x8, #3418; CHECK-NEXT:    csel x8, x9, x8, mi419; CHECK-NEXT:    uzp1 p2.b, p3.b, p2.b420; CHECK-NEXT:    asr x8, x8, #2421; CHECK-NEXT:    mov z5.d, x8422; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z24.d423; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z6.d424; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z7.d425; CHECK-NEXT:    cmphi p9.d, p0/z, z5.d, z4.d426; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z3.d427; CHECK-NEXT:    cmphi p10.d, p0/z, z5.d, z2.d428; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z1.d429; CHECK-NEXT:    cmphi p0.d, p0/z, z5.d, z0.d430; CHECK-NEXT:    cmp x8, #1431; CHECK-NEXT:    uzp1 p5.s, p7.s, p5.s432; CHECK-NEXT:    cset w8, lt433; CHECK-NEXT:    uzp1 p7.s, p9.s, p8.s434; CHECK-NEXT:    sbfx x8, x8, #0, #1435; CHECK-NEXT:    ldr p9, [sp, #2, mul vl] // 2-byte Reload436; CHECK-NEXT:    uzp1 p4.s, p10.s, p4.s437; CHECK-NEXT:    ldr p10, [sp, #1, mul vl] // 2-byte Reload438; CHECK-NEXT:    uzp1 p0.s, p0.s, p6.s439; CHECK-NEXT:    ldr p8, [sp, #3, mul vl] // 2-byte Reload440; CHECK-NEXT:    uzp1 p5.h, p7.h, p5.h441; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload442; CHECK-NEXT:    uzp1 p0.h, p0.h, p4.h443; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload444; CHECK-NEXT:    whilelo p4.b, xzr, x8445; CHECK-NEXT:    uzp1 p3.b, p0.b, p5.b446; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload447; CHECK-NEXT:    sel p0.b, p2, p2.b, p1.b448; CHECK-NEXT:    sel p1.b, p3, p3.b, p4.b449; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload450; CHECK-NEXT:    addvl sp, sp, #1451; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload452; CHECK-NEXT:    ret453entry:454  %0 = call <vscale x 32 x i1> @llvm.loop.dependence.war.mask.nxv32i1(ptr %a, ptr %b, i64 4)455  ret <vscale x 32 x i1> %0456}457 458define <vscale x 4 x i1> @whilewr_64_expand(ptr %a, ptr %b) {459; CHECK-LABEL: whilewr_64_expand:460; CHECK:       // %bb.0: // %entry461; CHECK-NEXT:    index z0.d, #0, #1462; CHECK-NEXT:    subs x8, x1, x0463; CHECK-NEXT:    ptrue p0.d464; CHECK-NEXT:    add x9, x8, #7465; CHECK-NEXT:    csel x8, x9, x8, mi466; CHECK-NEXT:    asr x8, x8, #3467; CHECK-NEXT:    mov z1.d, z0.d468; CHECK-NEXT:    mov z2.d, x8469; CHECK-NEXT:    incd z1.d470; CHECK-NEXT:    cmphi p1.d, p0/z, z2.d, z0.d471; CHECK-NEXT:    cmphi p0.d, p0/z, z2.d, z1.d472; CHECK-NEXT:    cmp x8, #1473; CHECK-NEXT:    cset w8, lt474; CHECK-NEXT:    sbfx x8, x8, #0, #1475; CHECK-NEXT:    uzp1 p0.s, p1.s, p0.s476; CHECK-NEXT:    whilelo p1.s, xzr, x8477; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b478; CHECK-NEXT:    ret479entry:480  %0 = call <vscale x 4 x i1> @llvm.loop.dependence.war.mask.nxv4i1(ptr %a, ptr %b, i64 8)481  ret <vscale x 4 x i1> %0482}483 484define <vscale x 8 x i1> @whilewr_64_expand2(ptr %a, ptr %b) {485; CHECK-LABEL: whilewr_64_expand2:486; CHECK:       // %bb.0: // %entry487; CHECK-NEXT:    index z0.d, #0, #1488; CHECK-NEXT:    subs x8, x1, x0489; CHECK-NEXT:    ptrue p0.d490; CHECK-NEXT:    add x9, x8, #7491; CHECK-NEXT:    csel x8, x9, x8, mi492; CHECK-NEXT:    asr x8, x8, #3493; CHECK-NEXT:    mov z1.d, z0.d494; CHECK-NEXT:    mov z2.d, z0.d495; CHECK-NEXT:    mov z3.d, x8496; CHECK-NEXT:    incd z1.d497; CHECK-NEXT:    incd z2.d, all, mul #2498; CHECK-NEXT:    cmphi p1.d, p0/z, z3.d, z0.d499; CHECK-NEXT:    mov z4.d, z1.d500; CHECK-NEXT:    cmphi p2.d, p0/z, z3.d, z1.d501; CHECK-NEXT:    cmphi p3.d, p0/z, z3.d, z2.d502; CHECK-NEXT:    incd z4.d, all, mul #2503; CHECK-NEXT:    uzp1 p1.s, p1.s, p2.s504; CHECK-NEXT:    cmphi p0.d, p0/z, z3.d, z4.d505; CHECK-NEXT:    cmp x8, #1506; CHECK-NEXT:    cset w8, lt507; CHECK-NEXT:    sbfx x8, x8, #0, #1508; CHECK-NEXT:    uzp1 p0.s, p3.s, p0.s509; CHECK-NEXT:    uzp1 p0.h, p1.h, p0.h510; CHECK-NEXT:    whilelo p1.h, xzr, x8511; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b512; CHECK-NEXT:    ret513entry:514  %0 = call <vscale x 8 x i1> @llvm.loop.dependence.war.mask.nxv8i1(ptr %a, ptr %b, i64 8)515  ret <vscale x 8 x i1> %0516}517 518define <vscale x 16 x i1> @whilewr_64_expand3(ptr %a, ptr %b) {519; CHECK-LABEL: whilewr_64_expand3:520; CHECK:       // %bb.0: // %entry521; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill522; CHECK-NEXT:    addvl sp, sp, #-1523; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill524; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill525; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill526; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill527; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG528; CHECK-NEXT:    .cfi_offset w29, -16529; CHECK-NEXT:    index z0.d, #0, #1530; CHECK-NEXT:    subs x8, x1, x0531; CHECK-NEXT:    ptrue p0.d532; CHECK-NEXT:    add x9, x8, #7533; CHECK-NEXT:    csel x8, x9, x8, mi534; CHECK-NEXT:    asr x8, x8, #3535; CHECK-NEXT:    mov z1.d, z0.d536; CHECK-NEXT:    mov z4.d, z0.d537; CHECK-NEXT:    mov z5.d, z0.d538; CHECK-NEXT:    mov z2.d, x8539; CHECK-NEXT:    incd z1.d540; CHECK-NEXT:    incd z4.d, all, mul #2541; CHECK-NEXT:    incd z5.d, all, mul #4542; CHECK-NEXT:    cmphi p2.d, p0/z, z2.d, z0.d543; CHECK-NEXT:    mov z3.d, z1.d544; CHECK-NEXT:    cmphi p1.d, p0/z, z2.d, z1.d545; CHECK-NEXT:    incd z1.d, all, mul #4546; CHECK-NEXT:    cmphi p3.d, p0/z, z2.d, z4.d547; CHECK-NEXT:    incd z4.d, all, mul #4548; CHECK-NEXT:    cmphi p4.d, p0/z, z2.d, z5.d549; CHECK-NEXT:    incd z3.d, all, mul #2550; CHECK-NEXT:    cmphi p5.d, p0/z, z2.d, z1.d551; CHECK-NEXT:    cmphi p7.d, p0/z, z2.d, z4.d552; CHECK-NEXT:    uzp1 p1.s, p2.s, p1.s553; CHECK-NEXT:    mov z0.d, z3.d554; CHECK-NEXT:    cmphi p6.d, p0/z, z2.d, z3.d555; CHECK-NEXT:    uzp1 p2.s, p4.s, p5.s556; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload557; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload558; CHECK-NEXT:    incd z0.d, all, mul #4559; CHECK-NEXT:    uzp1 p3.s, p3.s, p6.s560; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload561; CHECK-NEXT:    cmphi p0.d, p0/z, z2.d, z0.d562; CHECK-NEXT:    uzp1 p1.h, p1.h, p3.h563; CHECK-NEXT:    cmp x8, #1564; CHECK-NEXT:    cset w8, lt565; CHECK-NEXT:    sbfx x8, x8, #0, #1566; CHECK-NEXT:    uzp1 p0.s, p7.s, p0.s567; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload568; CHECK-NEXT:    uzp1 p0.h, p2.h, p0.h569; CHECK-NEXT:    uzp1 p0.b, p1.b, p0.b570; CHECK-NEXT:    whilelo p1.b, xzr, x8571; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b572; CHECK-NEXT:    addvl sp, sp, #1573; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload574; CHECK-NEXT:    ret575entry:576  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.war.mask.nxv16i1(ptr %a, ptr %b, i64 8)577  ret <vscale x 16 x i1> %0578}579 580define <vscale x 32 x i1> @whilewr_64_expand4(ptr %a, ptr %b) {581; CHECK-LABEL: whilewr_64_expand4:582; CHECK:       // %bb.0: // %entry583; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill584; CHECK-NEXT:    addvl sp, sp, #-1585; CHECK-NEXT:    str p10, [sp, #1, mul vl] // 2-byte Spill586; CHECK-NEXT:    str p9, [sp, #2, mul vl] // 2-byte Spill587; CHECK-NEXT:    str p8, [sp, #3, mul vl] // 2-byte Spill588; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill589; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill590; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill591; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill592; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG593; CHECK-NEXT:    .cfi_offset w29, -16594; CHECK-NEXT:    index z0.d, #0, #1595; CHECK-NEXT:    subs x8, x1, x0596; CHECK-NEXT:    ptrue p0.d597; CHECK-NEXT:    add x9, x8, #7598; CHECK-NEXT:    csel x8, x9, x8, mi599; CHECK-NEXT:    addvl x9, x0, #8600; CHECK-NEXT:    asr x8, x8, #3601; CHECK-NEXT:    mov z1.d, z0.d602; CHECK-NEXT:    mov z2.d, z0.d603; CHECK-NEXT:    mov z4.d, z0.d604; CHECK-NEXT:    mov z5.d, x8605; CHECK-NEXT:    incd z1.d606; CHECK-NEXT:    incd z2.d, all, mul #2607; CHECK-NEXT:    incd z4.d, all, mul #4608; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z0.d609; CHECK-NEXT:    mov z3.d, z1.d610; CHECK-NEXT:    mov z6.d, z2.d611; CHECK-NEXT:    mov z7.d, z1.d612; CHECK-NEXT:    cmphi p2.d, p0/z, z5.d, z4.d613; CHECK-NEXT:    cmphi p3.d, p0/z, z5.d, z2.d614; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z1.d615; CHECK-NEXT:    incd z3.d, all, mul #2616; CHECK-NEXT:    incd z6.d, all, mul #4617; CHECK-NEXT:    incd z7.d, all, mul #4618; CHECK-NEXT:    uzp1 p4.s, p5.s, p4.s619; CHECK-NEXT:    mov z24.d, z3.d620; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z6.d621; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z7.d622; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z3.d623; CHECK-NEXT:    incd z24.d, all, mul #4624; CHECK-NEXT:    uzp1 p2.s, p2.s, p7.s625; CHECK-NEXT:    uzp1 p3.s, p3.s, p8.s626; CHECK-NEXT:    cmphi p9.d, p0/z, z5.d, z24.d627; CHECK-NEXT:    cmp x8, #1628; CHECK-NEXT:    uzp1 p3.h, p4.h, p3.h629; CHECK-NEXT:    cset w8, lt630; CHECK-NEXT:    sbfx x8, x8, #0, #1631; CHECK-NEXT:    uzp1 p6.s, p6.s, p9.s632; CHECK-NEXT:    whilelo p1.b, xzr, x8633; CHECK-NEXT:    subs x8, x1, x9634; CHECK-NEXT:    uzp1 p2.h, p2.h, p6.h635; CHECK-NEXT:    add x9, x8, #7636; CHECK-NEXT:    csel x8, x9, x8, mi637; CHECK-NEXT:    uzp1 p2.b, p3.b, p2.b638; CHECK-NEXT:    asr x8, x8, #3639; CHECK-NEXT:    mov z5.d, x8640; CHECK-NEXT:    cmphi p5.d, p0/z, z5.d, z24.d641; CHECK-NEXT:    cmphi p7.d, p0/z, z5.d, z6.d642; CHECK-NEXT:    cmphi p8.d, p0/z, z5.d, z7.d643; CHECK-NEXT:    cmphi p9.d, p0/z, z5.d, z4.d644; CHECK-NEXT:    cmphi p4.d, p0/z, z5.d, z3.d645; CHECK-NEXT:    cmphi p10.d, p0/z, z5.d, z2.d646; CHECK-NEXT:    cmphi p6.d, p0/z, z5.d, z1.d647; CHECK-NEXT:    cmphi p0.d, p0/z, z5.d, z0.d648; CHECK-NEXT:    cmp x8, #1649; CHECK-NEXT:    uzp1 p5.s, p7.s, p5.s650; CHECK-NEXT:    cset w8, lt651; CHECK-NEXT:    uzp1 p7.s, p9.s, p8.s652; CHECK-NEXT:    sbfx x8, x8, #0, #1653; CHECK-NEXT:    ldr p9, [sp, #2, mul vl] // 2-byte Reload654; CHECK-NEXT:    uzp1 p4.s, p10.s, p4.s655; CHECK-NEXT:    ldr p10, [sp, #1, mul vl] // 2-byte Reload656; CHECK-NEXT:    uzp1 p0.s, p0.s, p6.s657; CHECK-NEXT:    ldr p8, [sp, #3, mul vl] // 2-byte Reload658; CHECK-NEXT:    uzp1 p5.h, p7.h, p5.h659; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload660; CHECK-NEXT:    uzp1 p0.h, p0.h, p4.h661; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload662; CHECK-NEXT:    whilelo p4.b, xzr, x8663; CHECK-NEXT:    uzp1 p3.b, p0.b, p5.b664; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload665; CHECK-NEXT:    sel p0.b, p2, p2.b, p1.b666; CHECK-NEXT:    sel p1.b, p3, p3.b, p4.b667; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload668; CHECK-NEXT:    addvl sp, sp, #1669; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload670; CHECK-NEXT:    ret671entry:672  %0 = call <vscale x 32 x i1> @llvm.loop.dependence.war.mask.nxv32i1(ptr %a, ptr %b, i64 8)673  ret <vscale x 32 x i1> %0674}675 676define <vscale x 9 x i1> @whilewr_8_widen(ptr %a, ptr %b) {677; CHECK-LABEL: whilewr_8_widen:678; CHECK:       // %bb.0: // %entry679; CHECK-NEXT:    whilewr p0.b, x0, x1680; CHECK-NEXT:    ret681entry:682  %0 = call <vscale x 9 x i1> @llvm.loop.dependence.war.mask.nxv9i1(ptr %a, ptr %b, i64 1)683  ret <vscale x 9 x i1> %0684}685 686define <vscale x 7 x i1> @whilewr_16_widen(ptr %a, ptr %b) {687; CHECK-LABEL: whilewr_16_widen:688; CHECK:       // %bb.0: // %entry689; CHECK-NEXT:    whilewr p0.h, x0, x1690; CHECK-NEXT:    ret691entry:692  %0 = call <vscale x 7 x i1> @llvm.loop.dependence.war.mask.nxv7i1(ptr %a, ptr %b, i64 2)693  ret <vscale x 7 x i1> %0694}695 696define <vscale x 3 x i1> @whilewr_32_widen(ptr %a, ptr %b) {697; CHECK-LABEL: whilewr_32_widen:698; CHECK:       // %bb.0: // %entry699; CHECK-NEXT:    whilewr p0.s, x0, x1700; CHECK-NEXT:    ret701entry:702  %0 = call <vscale x 3 x i1> @llvm.loop.dependence.war.mask.nxv3i1(ptr %a, ptr %b, i64 4)703  ret <vscale x 3 x i1> %0704}705 706define <vscale x 16 x i1> @whilewr_badimm(ptr %a, ptr %b) {707; CHECK-LABEL: whilewr_badimm:708; CHECK:       // %bb.0: // %entry709; CHECK-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill710; CHECK-NEXT:    addvl sp, sp, #-1711; CHECK-NEXT:    str p7, [sp, #4, mul vl] // 2-byte Spill712; CHECK-NEXT:    str p6, [sp, #5, mul vl] // 2-byte Spill713; CHECK-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill714; CHECK-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill715; CHECK-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG716; CHECK-NEXT:    .cfi_offset w29, -16717; CHECK-NEXT:    index z0.d, #0, #1718; CHECK-NEXT:    mov x8, #6148914691236517205 // =0x5555555555555555719; CHECK-NEXT:    sub x9, x1, x0720; CHECK-NEXT:    movk x8, #21846721; CHECK-NEXT:    ptrue p0.d722; CHECK-NEXT:    smulh x8, x9, x8723; CHECK-NEXT:    mov z1.d, z0.d724; CHECK-NEXT:    mov z4.d, z0.d725; CHECK-NEXT:    mov z5.d, z0.d726; CHECK-NEXT:    incd z1.d727; CHECK-NEXT:    add x8, x8, x8, lsr #63728; CHECK-NEXT:    incd z4.d, all, mul #2729; CHECK-NEXT:    incd z5.d, all, mul #4730; CHECK-NEXT:    mov z2.d, x8731; CHECK-NEXT:    mov z3.d, z1.d732; CHECK-NEXT:    cmphi p2.d, p0/z, z2.d, z0.d733; CHECK-NEXT:    cmphi p1.d, p0/z, z2.d, z1.d734; CHECK-NEXT:    incd z1.d, all, mul #4735; CHECK-NEXT:    incd z3.d, all, mul #2736; CHECK-NEXT:    cmphi p3.d, p0/z, z2.d, z4.d737; CHECK-NEXT:    incd z4.d, all, mul #4738; CHECK-NEXT:    cmphi p4.d, p0/z, z2.d, z5.d739; CHECK-NEXT:    cmphi p5.d, p0/z, z2.d, z1.d740; CHECK-NEXT:    mov z0.d, z3.d741; CHECK-NEXT:    cmphi p6.d, p0/z, z2.d, z3.d742; CHECK-NEXT:    cmphi p7.d, p0/z, z2.d, z4.d743; CHECK-NEXT:    uzp1 p1.s, p2.s, p1.s744; CHECK-NEXT:    incd z0.d, all, mul #4745; CHECK-NEXT:    uzp1 p2.s, p4.s, p5.s746; CHECK-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload747; CHECK-NEXT:    uzp1 p3.s, p3.s, p6.s748; CHECK-NEXT:    ldr p6, [sp, #5, mul vl] // 2-byte Reload749; CHECK-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload750; CHECK-NEXT:    cmphi p0.d, p0/z, z2.d, z0.d751; CHECK-NEXT:    uzp1 p1.h, p1.h, p3.h752; CHECK-NEXT:    cmp x8, #1753; CHECK-NEXT:    cset w8, lt754; CHECK-NEXT:    sbfx x8, x8, #0, #1755; CHECK-NEXT:    uzp1 p0.s, p7.s, p0.s756; CHECK-NEXT:    ldr p7, [sp, #4, mul vl] // 2-byte Reload757; CHECK-NEXT:    uzp1 p0.h, p2.h, p0.h758; CHECK-NEXT:    uzp1 p0.b, p1.b, p0.b759; CHECK-NEXT:    whilelo p1.b, xzr, x8760; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b761; CHECK-NEXT:    addvl sp, sp, #1762; CHECK-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload763; CHECK-NEXT:    ret764entry:765  %0 = call <vscale x 16 x i1> @llvm.loop.dependence.war.mask.nxv16i1(ptr %a, ptr %b, i64 3)766  ret <vscale x 16 x i1> %0767}768