brintos

brintos / llvm-project-archived public Read only

0
0
Text · 46.2 KiB · 5a443bb Raw
1242 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s3 4;;; Test store instructions5;;;6;;; Note:7;;;   We test store instructions using general stack, stack with dynamic8;;;   allocation, stack with dynamic allocation and alignment, and stack9;;;   with dynamic allocation, alignment, and spill.10;;;11;;; Fist test using a stack for leaf function.12;;;13;;;   |                                              | Higher address14;;;   |----------------------------------------------| <- old sp15;;;   | Local variables of fixed size                |16;;;   |----------------------------------------------| <- sp17;;;   |                                              | Lower address18;;;19;;; Access local variable using sp (%s11).  In addition, please remember20;;; that stack is aligned by 16 bytes.21;;;22;;; Second test using a general stack.23;;;24;;;   |                                              | Higher address25;;;   |----------------------------------------------|26;;;   | Parameter area for this function             |27;;;   |----------------------------------------------|28;;;   | Register save area (RSA) for this function   |29;;;   |----------------------------------------------|30;;;   | Return address for this function             |31;;;   |----------------------------------------------|32;;;   | Frame pointer for this function              |33;;;   |----------------------------------------------| <- fp(=old sp)34;;;   | Local variables of fixed size                |35;;;   |----------------------------------------------|36;;;   |.variable-sized.local.variables.(VLAs)........|37;;;   |..............................................|38;;;   |..............................................|39;;;   |----------------------------------------------| <- returned by alloca40;;;   | Parameter area for callee                    |41;;;   |----------------------------------------------|42;;;   | Register save area (RSA) for callee          |43;;;   |----------------------------------------------|44;;;   | Return address for callee                    |45;;;   |----------------------------------------------|46;;;   | Frame pointer for callee                     |47;;;   |----------------------------------------------| <- sp48;;;   |                                              | Lower address49;;;50;;; Access local variable using fp (%s9) since the size of VLA is not51;;; known.  At the beginning of the functions, allocates 240 + data52;;; bytes.  240 means RSA+RA+FP (=176) + Parameter (=64).53;;;54;;; Third test using a general stack.55;;;56;;;   |                                              | Higher address57;;;   |----------------------------------------------|58;;;   | Parameter area for this function             |59;;;   |----------------------------------------------|60;;;   | Register save area (RSA) for this function   |61;;;   |----------------------------------------------|62;;;   | Return address for this function             |63;;;   |----------------------------------------------|64;;;   | Frame pointer for this function              |65;;;   |----------------------------------------------| <- fp(=old sp)66;;;   |.empty.space.to.make.part.below.aligned.in....|67;;;   |.case.it.needs.more.than.the.standard.16-byte.| (size of this area is68;;;   |.alignment....................................|  unknown at compile time)69;;;   |----------------------------------------------|70;;;   | Local variables of fixed size including spill|71;;;   | slots                                        |72;;;   |----------------------------------------------| <- bp(not defined by ABI,73;;;   |.variable-sized.local.variables.(VLAs)........|       LLVM chooses SX17)74;;;   |..............................................| (size of this area is75;;;   |..............................................|  unknown at compile time)76;;;   |----------------------------------------------| <- stack top (returned by77;;;   | Parameter area for callee                    |               alloca)78;;;   |----------------------------------------------|79;;;   | Register save area (RSA) for callee          |80;;;   |----------------------------------------------|81;;;   | Return address for callee                    |82;;;   |----------------------------------------------|83;;;   | Frame pointer for callee                     |84;;;   |----------------------------------------------| <- sp85;;;   |                                              | Lower address86;;;87;;; Access local variable using bp (%s17) since the size of alignment88;;; and VLA are not known.  At the beginning of the functions, allocates89;;; pad(240 + data + align) bytes.  Then, access data through bp + pad(240)90;;; since this address doesn't change even if VLA is dynamically allocated.91;;;92;;; Fourth test using a general stack with some spills.93;;;94 95; Function Attrs: argmemonly nofree nounwind96define fastcc void @store__vm256_stk(<256 x i1> noundef %0) {97; CHECK-LABEL: store__vm256_stk:98; CHECK:       # %bb.0:99; CHECK-NEXT:    st %s9, (, %s11)100; CHECK-NEXT:    st %s10, 8(, %s11)101; CHECK-NEXT:    or %s9, 0, %s11102; CHECK-NEXT:    lea %s11, -224(, %s11)103; CHECK-NEXT:    and %s11, %s11, (59)1104; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB0_2105; CHECK-NEXT:  # %bb.1:106; CHECK-NEXT:    ld %s61, 24(, %s14)107; CHECK-NEXT:    or %s62, 0, %s0108; CHECK-NEXT:    lea %s63, 315109; CHECK-NEXT:    shm.l %s63, (%s61)110; CHECK-NEXT:    shm.l %s8, 8(%s61)111; CHECK-NEXT:    shm.l %s11, 16(%s61)112; CHECK-NEXT:    monc113; CHECK-NEXT:    or %s0, 0, %s62114; CHECK-NEXT:  .LBB0_2:115; CHECK-NEXT:    svm %s16, %vm1, 0116; CHECK-NEXT:    st %s16, 192(, %s11)117; CHECK-NEXT:    svm %s16, %vm1, 1118; CHECK-NEXT:    st %s16, 200(, %s11)119; CHECK-NEXT:    svm %s16, %vm1, 2120; CHECK-NEXT:    st %s16, 208(, %s11)121; CHECK-NEXT:    svm %s16, %vm1, 3122; CHECK-NEXT:    st %s16, 216(, %s11)123; CHECK-NEXT:    or %s11, 0, %s9124; CHECK-NEXT:    ld %s10, 8(, %s11)125; CHECK-NEXT:    ld %s9, (, %s11)126; CHECK-NEXT:    b.l.t (, %s10)127  %2 = alloca <256 x i1>, align 32128  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)129  store volatile <256 x i1> %0, ptr %2, align 32, !tbaa !3130  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2)131  ret void132}133 134; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn135declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)136 137; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn138declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)139 140; Function Attrs: argmemonly nofree nounwind141define fastcc void @store__vm256_stk_big_fit(<256 x i1> noundef %0, i64 noundef %1) {142; CHECK-LABEL: store__vm256_stk_big_fit:143; CHECK:       # %bb.0:144; CHECK-NEXT:    st %s9, (, %s11)145; CHECK-NEXT:    st %s10, 8(, %s11)146; CHECK-NEXT:    or %s9, 0, %s11147; CHECK-NEXT:    lea %s11, -2147483648(, %s11)148; CHECK-NEXT:    and %s11, %s11, (59)1149; CHECK-NEXT:    brge.l %s11, %s8, .LBB1_4150; CHECK-NEXT:  # %bb.3:151; CHECK-NEXT:    ld %s61, 24(, %s14)152; CHECK-NEXT:    or %s62, 0, %s0153; CHECK-NEXT:    lea %s63, 315154; CHECK-NEXT:    shm.l %s63, (%s61)155; CHECK-NEXT:    shm.l %s8, 8(%s61)156; CHECK-NEXT:    shm.l %s11, 16(%s61)157; CHECK-NEXT:    monc158; CHECK-NEXT:    or %s0, 0, %s62159; CHECK-NEXT:  .LBB1_4:160; CHECK-NEXT:    svm %s16, %vm1, 0161; CHECK-NEXT:    st %s16, 2147483616(, %s11)162; CHECK-NEXT:    svm %s16, %vm1, 1163; CHECK-NEXT:    st %s16, 2147483624(, %s11)164; CHECK-NEXT:    svm %s16, %vm1, 2165; CHECK-NEXT:    st %s16, 2147483632(, %s11)166; CHECK-NEXT:    svm %s16, %vm1, 3167; CHECK-NEXT:    st %s16, 2147483640(, %s11)168; CHECK-NEXT:    or %s1, 0, (0)1169; CHECK-NEXT:    lea %s2, 2147483424170; CHECK-NEXT:  .LBB1_1: # =>This Inner Loop Header: Depth=1171; CHECK-NEXT:    st %s0, 192(%s1, %s11)172; CHECK-NEXT:    lea %s1, 8(, %s1)173; CHECK-NEXT:    brne.l %s1, %s2, .LBB1_1174; CHECK-NEXT:  # %bb.2:175; CHECK-NEXT:    or %s11, 0, %s9176; CHECK-NEXT:    ld %s10, 8(, %s11)177; CHECK-NEXT:    ld %s9, (, %s11)178; CHECK-NEXT:    b.l.t (, %s10)179  %3 = alloca <256 x i1>, align 32180  %4 = alloca [268435428 x i64], align 8181  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)182  call void @llvm.lifetime.start.p0(i64 2147483424, ptr nonnull %4)183  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3184  br label %6185 1865:                                                ; preds = %6187  call void @llvm.lifetime.end.p0(i64 2147483424, ptr nonnull %4)188  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)189  ret void190 1916:                                                ; preds = %2, %6192  %7 = phi i64 [ 0, %2 ], [ %9, %6 ]193  %8 = getelementptr inbounds [268435428 x i64], ptr %4, i64 0, i64 %7194  store volatile i64 %1, ptr %8, align 8, !tbaa !6195  %9 = add nuw nsw i64 %7, 1196  %10 = icmp eq i64 %9, 268435428197  br i1 %10, label %5, label %6, !llvm.loop !8198}199 200; Function Attrs: argmemonly nofree nounwind201define fastcc void @store__vm256_stk_big(<256 x i1> noundef %0, i64 noundef %1) {202; CHECK-LABEL: store__vm256_stk_big:203; CHECK:       # %bb.0:204; CHECK-NEXT:    st %s9, (, %s11)205; CHECK-NEXT:    st %s10, 8(, %s11)206; CHECK-NEXT:    or %s9, 0, %s11207; CHECK-NEXT:    lea %s13, 2147483616208; CHECK-NEXT:    and %s13, %s13, (32)0209; CHECK-NEXT:    lea.sl %s11, -1(%s13, %s11)210; CHECK-NEXT:    and %s11, %s11, (59)1211; CHECK-NEXT:    brge.l %s11, %s8, .LBB2_4212; CHECK-NEXT:  # %bb.3:213; CHECK-NEXT:    ld %s61, 24(, %s14)214; CHECK-NEXT:    or %s62, 0, %s0215; CHECK-NEXT:    lea %s63, 315216; CHECK-NEXT:    shm.l %s63, (%s61)217; CHECK-NEXT:    shm.l %s8, 8(%s61)218; CHECK-NEXT:    shm.l %s11, 16(%s61)219; CHECK-NEXT:    monc220; CHECK-NEXT:    or %s0, 0, %s62221; CHECK-NEXT:  .LBB2_4:222; CHECK-NEXT:    lea %s13, -2147483648223; CHECK-NEXT:    and %s13, %s13, (32)0224; CHECK-NEXT:    lea.sl %s13, (%s11, %s13)225; CHECK-NEXT:    svm %s16, %vm1, 0226; CHECK-NEXT:    st %s16, (, %s13)227; CHECK-NEXT:    svm %s16, %vm1, 1228; CHECK-NEXT:    st %s16, 8(, %s13)229; CHECK-NEXT:    svm %s16, %vm1, 2230; CHECK-NEXT:    st %s16, 16(, %s13)231; CHECK-NEXT:    svm %s16, %vm1, 3232; CHECK-NEXT:    st %s16, 24(, %s13)233; CHECK-NEXT:    or %s1, 0, (0)1234; CHECK-NEXT:    lea %s2, 2147483432235; CHECK-NEXT:  .LBB2_1: # =>This Inner Loop Header: Depth=1236; CHECK-NEXT:    st %s0, 216(%s1, %s11)237; CHECK-NEXT:    lea %s1, 8(, %s1)238; CHECK-NEXT:    brne.l %s1, %s2, .LBB2_1239; CHECK-NEXT:  # %bb.2:240; CHECK-NEXT:    or %s11, 0, %s9241; CHECK-NEXT:    ld %s10, 8(, %s11)242; CHECK-NEXT:    ld %s9, (, %s11)243; CHECK-NEXT:    b.l.t (, %s10)244  %3 = alloca <256 x i1>, align 32245  %4 = alloca [268435429 x i64], align 8246  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)247  call void @llvm.lifetime.start.p0(i64 2147483432, ptr nonnull %4)248  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3249  br label %6250 2515:                                                ; preds = %6252  call void @llvm.lifetime.end.p0(i64 2147483432, ptr nonnull %4)253  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)254  ret void255 2566:                                                ; preds = %2, %6257  %7 = phi i64 [ 0, %2 ], [ %9, %6 ]258  %8 = getelementptr inbounds [268435429 x i64], ptr %4, i64 0, i64 %7259  store volatile i64 %1, ptr %8, align 8, !tbaa !6260  %9 = add nuw nsw i64 %7, 1261  %10 = icmp eq i64 %9, 268435429262  br i1 %10, label %5, label %6, !llvm.loop !8263}264 265; Function Attrs: argmemonly nofree nounwind266define fastcc void @store__vm256_stk_big2(<256 x i1> noundef %0, i64 noundef %1) {267; CHECK-LABEL: store__vm256_stk_big2:268; CHECK:       # %bb.0:269; CHECK-NEXT:    st %s9, (, %s11)270; CHECK-NEXT:    st %s10, 8(, %s11)271; CHECK-NEXT:    or %s9, 0, %s11272; CHECK-NEXT:    lea %s13, 2147483424273; CHECK-NEXT:    and %s13, %s13, (32)0274; CHECK-NEXT:    lea.sl %s11, -1(%s13, %s11)275; CHECK-NEXT:    and %s11, %s11, (59)1276; CHECK-NEXT:    brge.l %s11, %s8, .LBB3_4277; CHECK-NEXT:  # %bb.3:278; CHECK-NEXT:    ld %s61, 24(, %s14)279; CHECK-NEXT:    or %s62, 0, %s0280; CHECK-NEXT:    lea %s63, 315281; CHECK-NEXT:    shm.l %s63, (%s61)282; CHECK-NEXT:    shm.l %s8, 8(%s61)283; CHECK-NEXT:    shm.l %s11, 16(%s61)284; CHECK-NEXT:    monc285; CHECK-NEXT:    or %s0, 0, %s62286; CHECK-NEXT:  .LBB3_4:287; CHECK-NEXT:    lea %s13, -2147483456288; CHECK-NEXT:    and %s13, %s13, (32)0289; CHECK-NEXT:    lea.sl %s13, (%s11, %s13)290; CHECK-NEXT:    svm %s16, %vm1, 0291; CHECK-NEXT:    st %s16, (, %s13)292; CHECK-NEXT:    svm %s16, %vm1, 1293; CHECK-NEXT:    st %s16, 8(, %s13)294; CHECK-NEXT:    svm %s16, %vm1, 2295; CHECK-NEXT:    st %s16, 16(, %s13)296; CHECK-NEXT:    svm %s16, %vm1, 3297; CHECK-NEXT:    st %s16, 24(, %s13)298; CHECK-NEXT:    or %s1, 0, (0)1299; CHECK-NEXT:    lea %s2, -2147483648300; CHECK-NEXT:    and %s2, %s2, (32)0301; CHECK-NEXT:  .LBB3_1: # =>This Inner Loop Header: Depth=1302; CHECK-NEXT:    st %s0, 192(%s1, %s11)303; CHECK-NEXT:    lea %s1, 8(, %s1)304; CHECK-NEXT:    brne.l %s1, %s2, .LBB3_1305; CHECK-NEXT:  # %bb.2:306; CHECK-NEXT:    or %s11, 0, %s9307; CHECK-NEXT:    ld %s10, 8(, %s11)308; CHECK-NEXT:    ld %s9, (, %s11)309; CHECK-NEXT:    b.l.t (, %s10)310  %3 = alloca <256 x i1>, align 32311  %4 = alloca [268435456 x i64], align 8312  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)313  call void @llvm.lifetime.start.p0(i64 2147483648, ptr nonnull %4)314  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3315  br label %6316 3175:                                                ; preds = %6318  call void @llvm.lifetime.end.p0(i64 2147483648, ptr nonnull %4)319  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)320  ret void321 3226:                                                ; preds = %2, %6323  %7 = phi i64 [ 0, %2 ], [ %9, %6 ]324  %8 = getelementptr inbounds [268435456 x i64], ptr %4, i64 0, i64 %7325  store volatile i64 %1, ptr %8, align 8, !tbaa !6326  %9 = add nuw nsw i64 %7, 1327  %10 = icmp eq i64 %9, 268435456328  br i1 %10, label %5, label %6, !llvm.loop !10329}330 331; Function Attrs: argmemonly nofree nounwind332define fastcc void @store__vm256_stk_dyn(<256 x i1> noundef %0, i64 noundef %1) {333; CHECK-LABEL: store__vm256_stk_dyn:334; CHECK:       # %bb.0:335; CHECK-NEXT:    st %s9, (, %s11)336; CHECK-NEXT:    st %s10, 8(, %s11)337; CHECK-NEXT:    or %s9, 0, %s11338; CHECK-NEXT:    lea %s11, -272(, %s11)339; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB4_2340; CHECK-NEXT:  # %bb.1:341; CHECK-NEXT:    ld %s61, 24(, %s14)342; CHECK-NEXT:    or %s62, 0, %s0343; CHECK-NEXT:    lea %s63, 315344; CHECK-NEXT:    shm.l %s63, (%s61)345; CHECK-NEXT:    shm.l %s8, 8(%s61)346; CHECK-NEXT:    shm.l %s11, 16(%s61)347; CHECK-NEXT:    monc348; CHECK-NEXT:    or %s0, 0, %s62349; CHECK-NEXT:  .LBB4_2:350; CHECK-NEXT:    sll %s0, %s0, 5351; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo352; CHECK-NEXT:    and %s1, %s1, (32)0353; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)354; CHECK-NEXT:    bsic %s10, (, %s12)355; CHECK-NEXT:    lea %s0, 240(, %s11)356; CHECK-NEXT:    svm %s1, %vm1, 3357; CHECK-NEXT:    st %s1, 24(, %s0)358; CHECK-NEXT:    svm %s1, %vm1, 2359; CHECK-NEXT:    st %s1, 16(, %s0)360; CHECK-NEXT:    svm %s1, %vm1, 1361; CHECK-NEXT:    st %s1, 8(, %s0)362; CHECK-NEXT:    svm %s1, %vm1, 0363; CHECK-NEXT:    st %s1, (, %s0)364; CHECK-NEXT:    svm %s16, %vm1, 0365; CHECK-NEXT:    st %s16, -32(, %s9)366; CHECK-NEXT:    svm %s16, %vm1, 1367; CHECK-NEXT:    st %s16, -24(, %s9)368; CHECK-NEXT:    svm %s16, %vm1, 2369; CHECK-NEXT:    st %s16, -16(, %s9)370; CHECK-NEXT:    svm %s16, %vm1, 3371; CHECK-NEXT:    st %s16, -8(, %s9)372; CHECK-NEXT:    or %s11, 0, %s9373; CHECK-NEXT:    ld %s10, 8(, %s11)374; CHECK-NEXT:    ld %s9, (, %s11)375; CHECK-NEXT:    b.l.t (, %s10)376  %3 = alloca <256 x i1>, align 8377  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)378  %4 = alloca <256 x i1>, i64 %1, align 8379  store volatile <256 x i1> %0, ptr %4, align 32, !tbaa !3380  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3381  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)382  ret void383}384 385; Function Attrs: argmemonly nofree nounwind386define fastcc void @store__vm256_stk_dyn_align(<256 x i1> noundef %0, i64 noundef %1) {387; CHECK-LABEL: store__vm256_stk_dyn_align:388; CHECK:       # %bb.0:389; CHECK-NEXT:    st %s9, (, %s11)390; CHECK-NEXT:    st %s10, 8(, %s11)391; CHECK-NEXT:    st %s17, 40(, %s11)392; CHECK-NEXT:    or %s9, 0, %s11393; CHECK-NEXT:    lea %s11, -288(, %s11)394; CHECK-NEXT:    and %s11, %s11, (59)1395; CHECK-NEXT:    or %s17, 0, %s11396; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB5_2397; CHECK-NEXT:  # %bb.1:398; CHECK-NEXT:    ld %s61, 24(, %s14)399; CHECK-NEXT:    or %s62, 0, %s0400; CHECK-NEXT:    lea %s63, 315401; CHECK-NEXT:    shm.l %s63, (%s61)402; CHECK-NEXT:    shm.l %s8, 8(%s61)403; CHECK-NEXT:    shm.l %s11, 16(%s61)404; CHECK-NEXT:    monc405; CHECK-NEXT:    or %s0, 0, %s62406; CHECK-NEXT:  .LBB5_2:407; CHECK-NEXT:    sll %s0, %s0, 5408; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo409; CHECK-NEXT:    and %s1, %s1, (32)0410; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)411; CHECK-NEXT:    bsic %s10, (, %s12)412; CHECK-NEXT:    lea %s0, 240(, %s11)413; CHECK-NEXT:    svm %s1, %vm1, 3414; CHECK-NEXT:    st %s1, 24(, %s0)415; CHECK-NEXT:    svm %s1, %vm1, 2416; CHECK-NEXT:    st %s1, 16(, %s0)417; CHECK-NEXT:    svm %s1, %vm1, 1418; CHECK-NEXT:    st %s1, 8(, %s0)419; CHECK-NEXT:    svm %s1, %vm1, 0420; CHECK-NEXT:    st %s1, (, %s0)421; CHECK-NEXT:    svm %s16, %vm1, 0422; CHECK-NEXT:    st %s16, 256(, %s17)423; CHECK-NEXT:    svm %s16, %vm1, 1424; CHECK-NEXT:    st %s16, 264(, %s17)425; CHECK-NEXT:    svm %s16, %vm1, 2426; CHECK-NEXT:    st %s16, 272(, %s17)427; CHECK-NEXT:    svm %s16, %vm1, 3428; CHECK-NEXT:    st %s16, 280(, %s17)429; CHECK-NEXT:    or %s11, 0, %s9430; CHECK-NEXT:    ld %s17, 40(, %s11)431; CHECK-NEXT:    ld %s10, 8(, %s11)432; CHECK-NEXT:    ld %s9, (, %s11)433; CHECK-NEXT:    b.l.t (, %s10)434  %3 = alloca <256 x i1>, align 32435  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)436  %4 = alloca <256 x i1>, i64 %1, align 8437  store volatile <256 x i1> %0, ptr %4, align 32, !tbaa !3438  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3439  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)440  ret void441}442 443; Function Attrs: argmemonly nofree nounwind444define fastcc void @store__vm256_stk_dyn_align2(<256 x i1> noundef %0, i64 noundef %1) {445; CHECK-LABEL: store__vm256_stk_dyn_align2:446; CHECK:       # %bb.0:447; CHECK-NEXT:    st %s9, (, %s11)448; CHECK-NEXT:    st %s10, 8(, %s11)449; CHECK-NEXT:    st %s17, 40(, %s11)450; CHECK-NEXT:    or %s9, 0, %s11451; CHECK-NEXT:    lea %s11, -320(, %s11)452; CHECK-NEXT:    and %s11, %s11, (58)1453; CHECK-NEXT:    or %s17, 0, %s11454; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB6_2455; CHECK-NEXT:  # %bb.1:456; CHECK-NEXT:    ld %s61, 24(, %s14)457; CHECK-NEXT:    or %s62, 0, %s0458; CHECK-NEXT:    lea %s63, 315459; CHECK-NEXT:    shm.l %s63, (%s61)460; CHECK-NEXT:    shm.l %s8, 8(%s61)461; CHECK-NEXT:    shm.l %s11, 16(%s61)462; CHECK-NEXT:    monc463; CHECK-NEXT:    or %s0, 0, %s62464; CHECK-NEXT:  .LBB6_2:465; CHECK-NEXT:    sll %s0, %s0, 5466; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo467; CHECK-NEXT:    and %s1, %s1, (32)0468; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)469; CHECK-NEXT:    bsic %s10, (, %s12)470; CHECK-NEXT:    lea %s0, 240(, %s11)471; CHECK-NEXT:    svm %s1, %vm1, 3472; CHECK-NEXT:    st %s1, 24(, %s0)473; CHECK-NEXT:    svm %s1, %vm1, 2474; CHECK-NEXT:    st %s1, 16(, %s0)475; CHECK-NEXT:    svm %s1, %vm1, 1476; CHECK-NEXT:    st %s1, 8(, %s0)477; CHECK-NEXT:    svm %s1, %vm1, 0478; CHECK-NEXT:    st %s1, (, %s0)479; CHECK-NEXT:    svm %s16, %vm1, 0480; CHECK-NEXT:    st %s16, 288(, %s17)481; CHECK-NEXT:    svm %s16, %vm1, 1482; CHECK-NEXT:    st %s16, 296(, %s17)483; CHECK-NEXT:    svm %s16, %vm1, 2484; CHECK-NEXT:    st %s16, 304(, %s17)485; CHECK-NEXT:    svm %s16, %vm1, 3486; CHECK-NEXT:    st %s16, 312(, %s17)487; CHECK-NEXT:    svm %s16, %vm1, 0488; CHECK-NEXT:    st %s16, 256(, %s17)489; CHECK-NEXT:    svm %s16, %vm1, 1490; CHECK-NEXT:    st %s16, 264(, %s17)491; CHECK-NEXT:    svm %s16, %vm1, 2492; CHECK-NEXT:    st %s16, 272(, %s17)493; CHECK-NEXT:    svm %s16, %vm1, 3494; CHECK-NEXT:    st %s16, 280(, %s17)495; CHECK-NEXT:    or %s11, 0, %s9496; CHECK-NEXT:    ld %s17, 40(, %s11)497; CHECK-NEXT:    ld %s10, 8(, %s11)498; CHECK-NEXT:    ld %s9, (, %s11)499; CHECK-NEXT:    b.l.t (, %s10)500  %3 = alloca <256 x i1>, align 32501  %4 = alloca <256 x i1>, align 64502  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)503  %5 = alloca <256 x i1>, i64 %1, align 8504  store volatile <256 x i1> %0, ptr %5, align 32, !tbaa !3505  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3506  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4)507  store volatile <256 x i1> %0, ptr %4, align 64, !tbaa !3508  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4)509  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)510  ret void511}512 513; Function Attrs: nounwind514define fastcc void @store__vm256_stk_dyn_align_spill(<256 x i1> noundef %0, i64 noundef %1) {515; CHECK-LABEL: store__vm256_stk_dyn_align_spill:516; CHECK:       # %bb.0:517; CHECK-NEXT:    st %s9, (, %s11)518; CHECK-NEXT:    st %s10, 8(, %s11)519; CHECK-NEXT:    st %s17, 40(, %s11)520; CHECK-NEXT:    or %s9, 0, %s11521; CHECK-NEXT:    lea %s11, -320(, %s11)522; CHECK-NEXT:    and %s11, %s11, (59)1523; CHECK-NEXT:    or %s17, 0, %s11524; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB7_2525; CHECK-NEXT:  # %bb.1:526; CHECK-NEXT:    ld %s61, 24(, %s14)527; CHECK-NEXT:    or %s62, 0, %s0528; CHECK-NEXT:    lea %s63, 315529; CHECK-NEXT:    shm.l %s63, (%s61)530; CHECK-NEXT:    shm.l %s8, 8(%s61)531; CHECK-NEXT:    shm.l %s11, 16(%s61)532; CHECK-NEXT:    monc533; CHECK-NEXT:    or %s0, 0, %s62534; CHECK-NEXT:  .LBB7_2:535; CHECK-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill536; CHECK-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill537; CHECK-NEXT:    or %s18, 0, %s0538; CHECK-NEXT:    svm %s16, %vm1, 0539; CHECK-NEXT:    st %s16, 256(, %s17)540; CHECK-NEXT:    svm %s16, %vm1, 1541; CHECK-NEXT:    st %s16, 264(, %s17)542; CHECK-NEXT:    svm %s16, %vm1, 2543; CHECK-NEXT:    st %s16, 272(, %s17)544; CHECK-NEXT:    svm %s16, %vm1, 3545; CHECK-NEXT:    st %s16, 280(, %s17) # 32-byte Folded Spill546; CHECK-NEXT:    sll %s0, %s0, 5547; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo548; CHECK-NEXT:    and %s1, %s1, (32)0549; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)550; CHECK-NEXT:    bsic %s10, (, %s12)551; CHECK-NEXT:    lea %s19, 240(, %s11)552; CHECK-NEXT:    lea %s0, dummy@lo553; CHECK-NEXT:    and %s0, %s0, (32)0554; CHECK-NEXT:    lea.sl %s12, dummy@hi(, %s0)555; CHECK-NEXT:    bsic %s10, (, %s12)556; CHECK-NEXT:    lea %s0, pass@lo557; CHECK-NEXT:    and %s0, %s0, (32)0558; CHECK-NEXT:    lea.sl %s12, pass@hi(, %s0)559; CHECK-NEXT:    or %s0, 0, %s18560; CHECK-NEXT:    bsic %s10, (, %s12)561; CHECK-NEXT:    ld %s16, 256(, %s17)562; CHECK-NEXT:    lvm %vm1, 0, %s16563; CHECK-NEXT:    ld %s16, 264(, %s17)564; CHECK-NEXT:    lvm %vm1, 1, %s16565; CHECK-NEXT:    ld %s16, 272(, %s17)566; CHECK-NEXT:    lvm %vm1, 2, %s16567; CHECK-NEXT:    ld %s16, 280(, %s17) # 32-byte Folded Reload568; CHECK-NEXT:    lvm %vm1, 3, %s16569; CHECK-NEXT:    svm %s0, %vm1, 3570; CHECK-NEXT:    st %s0, 24(, %s19)571; CHECK-NEXT:    svm %s0, %vm1, 2572; CHECK-NEXT:    st %s0, 16(, %s19)573; CHECK-NEXT:    svm %s0, %vm1, 1574; CHECK-NEXT:    st %s0, 8(, %s19)575; CHECK-NEXT:    svm %s0, %vm1, 0576; CHECK-NEXT:    st %s0, (, %s19)577; CHECK-NEXT:    svm %s16, %vm1, 0578; CHECK-NEXT:    st %s16, 288(, %s17)579; CHECK-NEXT:    svm %s16, %vm1, 1580; CHECK-NEXT:    st %s16, 296(, %s17)581; CHECK-NEXT:    svm %s16, %vm1, 2582; CHECK-NEXT:    st %s16, 304(, %s17)583; CHECK-NEXT:    svm %s16, %vm1, 3584; CHECK-NEXT:    st %s16, 312(, %s17)585; CHECK-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload586; CHECK-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload587; CHECK-NEXT:    or %s11, 0, %s9588; CHECK-NEXT:    ld %s17, 40(, %s11)589; CHECK-NEXT:    ld %s10, 8(, %s11)590; CHECK-NEXT:    ld %s9, (, %s11)591; CHECK-NEXT:    b.l.t (, %s10)592  %3 = alloca <256 x i1>, align 32593  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)594  %4 = alloca <256 x i1>, i64 %1, align 8595  tail call fastcc void @dummy()596  tail call fastcc void @pass(i64 noundef %1)597  store volatile <256 x i1> %0, ptr %4, align 32, !tbaa !3598  store volatile <256 x i1> %0, ptr %3, align 32, !tbaa !3599  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)600  ret void601}602 603declare fastcc void @dummy()604 605declare fastcc void @pass(i64 noundef)606 607; Function Attrs: argmemonly nofree nounwind608define fastcc void @store__vm512_stk(<512 x i1> noundef %0) {609; CHECK-LABEL: store__vm512_stk:610; CHECK:       # %bb.0:611; CHECK-NEXT:    st %s9, (, %s11)612; CHECK-NEXT:    st %s10, 8(, %s11)613; CHECK-NEXT:    or %s9, 0, %s11614; CHECK-NEXT:    lea %s11, -256(, %s11)615; CHECK-NEXT:    and %s11, %s11, (58)1616; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB8_2617; CHECK-NEXT:  # %bb.1:618; CHECK-NEXT:    ld %s61, 24(, %s14)619; CHECK-NEXT:    or %s62, 0, %s0620; CHECK-NEXT:    lea %s63, 315621; CHECK-NEXT:    shm.l %s63, (%s61)622; CHECK-NEXT:    shm.l %s8, 8(%s61)623; CHECK-NEXT:    shm.l %s11, 16(%s61)624; CHECK-NEXT:    monc625; CHECK-NEXT:    or %s0, 0, %s62626; CHECK-NEXT:  .LBB8_2:627; CHECK-NEXT:    svm %s16, %vm3, 0628; CHECK-NEXT:    st %s16, 192(, %s11)629; CHECK-NEXT:    svm %s16, %vm3, 1630; CHECK-NEXT:    st %s16, 200(, %s11)631; CHECK-NEXT:    svm %s16, %vm3, 2632; CHECK-NEXT:    st %s16, 208(, %s11)633; CHECK-NEXT:    svm %s16, %vm3, 3634; CHECK-NEXT:    st %s16, 216(, %s11)635; CHECK-NEXT:    svm %s16, %vm2, 0636; CHECK-NEXT:    st %s16, 224(, %s11)637; CHECK-NEXT:    svm %s16, %vm2, 1638; CHECK-NEXT:    st %s16, 232(, %s11)639; CHECK-NEXT:    svm %s16, %vm2, 2640; CHECK-NEXT:    st %s16, 240(, %s11)641; CHECK-NEXT:    svm %s16, %vm2, 3642; CHECK-NEXT:    st %s16, 248(, %s11)643; CHECK-NEXT:    or %s11, 0, %s9644; CHECK-NEXT:    ld %s10, 8(, %s11)645; CHECK-NEXT:    ld %s9, (, %s11)646; CHECK-NEXT:    b.l.t (, %s10)647  %2 = alloca <512 x i1>, align 64648  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2)649  store volatile <512 x i1> %0, ptr %2, align 64, !tbaa !3650  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2)651  ret void652}653 654; Function Attrs: argmemonly nofree nounwind655define fastcc void @store__vm512_stk_bc(<512 x i1> noundef %0) {656; CHECK-LABEL: store__vm512_stk_bc:657; CHECK:       # %bb.0:658; CHECK-NEXT:    st %s9, (, %s11)659; CHECK-NEXT:    st %s10, 8(, %s11)660; CHECK-NEXT:    or %s9, 0, %s11661; CHECK-NEXT:    lea %s11, -320(, %s11)662; CHECK-NEXT:    and %s11, %s11, (58)1663; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB9_2664; CHECK-NEXT:  # %bb.1:665; CHECK-NEXT:    ld %s61, 24(, %s14)666; CHECK-NEXT:    or %s62, 0, %s0667; CHECK-NEXT:    lea %s63, 315668; CHECK-NEXT:    shm.l %s63, (%s61)669; CHECK-NEXT:    shm.l %s8, 8(%s61)670; CHECK-NEXT:    shm.l %s11, 16(%s61)671; CHECK-NEXT:    monc672; CHECK-NEXT:    or %s0, 0, %s62673; CHECK-NEXT:  .LBB9_2:674; CHECK-NEXT:    svm %s16, %vm3, 0675; CHECK-NEXT:    st %s16, 192(, %s11)676; CHECK-NEXT:    svm %s16, %vm3, 1677; CHECK-NEXT:    st %s16, 200(, %s11)678; CHECK-NEXT:    svm %s16, %vm3, 2679; CHECK-NEXT:    st %s16, 208(, %s11)680; CHECK-NEXT:    svm %s16, %vm3, 3681; CHECK-NEXT:    st %s16, 216(, %s11)682; CHECK-NEXT:    svm %s16, %vm2, 0683; CHECK-NEXT:    st %s16, 224(, %s11)684; CHECK-NEXT:    svm %s16, %vm2, 1685; CHECK-NEXT:    st %s16, 232(, %s11)686; CHECK-NEXT:    svm %s16, %vm2, 2687; CHECK-NEXT:    st %s16, 240(, %s11)688; CHECK-NEXT:    svm %s16, %vm2, 3689; CHECK-NEXT:    st %s16, 248(, %s11)690; CHECK-NEXT:    ld %s0, 192(, %s11)691; CHECK-NEXT:    ld %s1, 200(, %s11)692; CHECK-NEXT:    ld %s2, 208(, %s11)693; CHECK-NEXT:    ld %s3, 216(, %s11)694; CHECK-NEXT:    ld %s4, 248(, %s11)695; CHECK-NEXT:    ld %s5, 240(, %s11)696; CHECK-NEXT:    ld %s6, 232(, %s11)697; CHECK-NEXT:    ld %s7, 224(, %s11)698; CHECK-NEXT:    st %s4, 312(, %s11)699; CHECK-NEXT:    st %s5, 304(, %s11)700; CHECK-NEXT:    st %s6, 296(, %s11)701; CHECK-NEXT:    st %s7, 288(, %s11)702; CHECK-NEXT:    st %s3, 280(, %s11)703; CHECK-NEXT:    st %s2, 272(, %s11)704; CHECK-NEXT:    st %s1, 264(, %s11)705; CHECK-NEXT:    st %s0, 256(, %s11)706; CHECK-NEXT:    or %s11, 0, %s9707; CHECK-NEXT:    ld %s10, 8(, %s11)708; CHECK-NEXT:    ld %s9, (, %s11)709; CHECK-NEXT:    b.l.t (, %s10)710  %2 = alloca i512, align 64711  %3 = bitcast <512 x i1> %0 to i512712  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2)713  store volatile i512 %3, ptr %2, align 64, !tbaa !3714  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2)715  ret void716}717 718; Function Attrs: argmemonly nofree nounwind719define fastcc void @store__vm512_stk_big(<512 x i1> noundef %0, i64 noundef %1) {720; CHECK-LABEL: store__vm512_stk_big:721; CHECK:       # %bb.0:722; CHECK-NEXT:    st %s9, (, %s11)723; CHECK-NEXT:    st %s10, 8(, %s11)724; CHECK-NEXT:    or %s9, 0, %s11725; CHECK-NEXT:    lea %s13, 2147483392726; CHECK-NEXT:    and %s13, %s13, (32)0727; CHECK-NEXT:    lea.sl %s11, -1(%s13, %s11)728; CHECK-NEXT:    and %s11, %s11, (58)1729; CHECK-NEXT:    brge.l %s11, %s8, .LBB10_4730; CHECK-NEXT:  # %bb.3:731; CHECK-NEXT:    ld %s61, 24(, %s14)732; CHECK-NEXT:    or %s62, 0, %s0733; CHECK-NEXT:    lea %s63, 315734; CHECK-NEXT:    shm.l %s63, (%s61)735; CHECK-NEXT:    shm.l %s8, 8(%s61)736; CHECK-NEXT:    shm.l %s11, 16(%s61)737; CHECK-NEXT:    monc738; CHECK-NEXT:    or %s0, 0, %s62739; CHECK-NEXT:  .LBB10_4:740; CHECK-NEXT:    lea %s13, -2147483456741; CHECK-NEXT:    and %s13, %s13, (32)0742; CHECK-NEXT:    lea.sl %s13, (%s11, %s13)743; CHECK-NEXT:    svm %s16, %vm3, 0744; CHECK-NEXT:    st %s16, (, %s13)745; CHECK-NEXT:    svm %s16, %vm3, 1746; CHECK-NEXT:    st %s16, 8(, %s13)747; CHECK-NEXT:    svm %s16, %vm3, 2748; CHECK-NEXT:    st %s16, 16(, %s13)749; CHECK-NEXT:    svm %s16, %vm3, 3750; CHECK-NEXT:    st %s16, 24(, %s13)751; CHECK-NEXT:    svm %s16, %vm2, 0752; CHECK-NEXT:    st %s16, 32(, %s13)753; CHECK-NEXT:    svm %s16, %vm2, 1754; CHECK-NEXT:    st %s16, 40(, %s13)755; CHECK-NEXT:    svm %s16, %vm2, 2756; CHECK-NEXT:    st %s16, 48(, %s13)757; CHECK-NEXT:    svm %s16, %vm2, 3758; CHECK-NEXT:    st %s16, 56(, %s13)759; CHECK-NEXT:    or %s1, 0, (0)1760; CHECK-NEXT:    lea %s2, 2147483640761; CHECK-NEXT:  .LBB10_1: # =>This Inner Loop Header: Depth=1762; CHECK-NEXT:    st %s0, 200(%s1, %s11)763; CHECK-NEXT:    lea %s1, 8(, %s1)764; CHECK-NEXT:    brne.l %s1, %s2, .LBB10_1765; CHECK-NEXT:  # %bb.2:766; CHECK-NEXT:    or %s11, 0, %s9767; CHECK-NEXT:    ld %s10, 8(, %s11)768; CHECK-NEXT:    ld %s9, (, %s11)769; CHECK-NEXT:    b.l.t (, %s10)770  %3 = alloca <512 x i1>, align 64771  %4 = alloca [268435455 x i64], align 8772  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)773  call void @llvm.lifetime.start.p0(i64 2147483640, ptr nonnull %4)774  store volatile <512 x i1> %0, ptr %3, align 64, !tbaa !3775  br label %6776 7775:                                                ; preds = %6778  call void @llvm.lifetime.end.p0(i64 2147483640, ptr nonnull %4)779  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)780  ret void781 7826:                                                ; preds = %2, %6783  %7 = phi i64 [ 0, %2 ], [ %9, %6 ]784  %8 = getelementptr inbounds [268435455 x i64], ptr %4, i64 0, i64 %7785  store volatile i64 %1, ptr %8, align 8, !tbaa !6786  %9 = add nuw nsw i64 %7, 1787  %10 = icmp eq i64 %9, 268435455788  br i1 %10, label %5, label %6, !llvm.loop !11789}790 791; Function Attrs: argmemonly nofree nounwind792define fastcc void @store__vm512_stk_big2(<512 x i1> noundef %0, i64 noundef %1) {793; CHECK-LABEL: store__vm512_stk_big2:794; CHECK:       # %bb.0:795; CHECK-NEXT:    st %s9, (, %s11)796; CHECK-NEXT:    st %s10, 8(, %s11)797; CHECK-NEXT:    or %s9, 0, %s11798; CHECK-NEXT:    lea %s13, 2147483392799; CHECK-NEXT:    and %s13, %s13, (32)0800; CHECK-NEXT:    lea.sl %s11, -1(%s13, %s11)801; CHECK-NEXT:    and %s11, %s11, (58)1802; CHECK-NEXT:    brge.l %s11, %s8, .LBB11_4803; CHECK-NEXT:  # %bb.3:804; CHECK-NEXT:    ld %s61, 24(, %s14)805; CHECK-NEXT:    or %s62, 0, %s0806; CHECK-NEXT:    lea %s63, 315807; CHECK-NEXT:    shm.l %s63, (%s61)808; CHECK-NEXT:    shm.l %s8, 8(%s61)809; CHECK-NEXT:    shm.l %s11, 16(%s61)810; CHECK-NEXT:    monc811; CHECK-NEXT:    or %s0, 0, %s62812; CHECK-NEXT:  .LBB11_4:813; CHECK-NEXT:    lea %s13, -2147483456814; CHECK-NEXT:    and %s13, %s13, (32)0815; CHECK-NEXT:    lea.sl %s13, (%s11, %s13)816; CHECK-NEXT:    svm %s16, %vm3, 0817; CHECK-NEXT:    st %s16, (, %s13)818; CHECK-NEXT:    svm %s16, %vm3, 1819; CHECK-NEXT:    st %s16, 8(, %s13)820; CHECK-NEXT:    svm %s16, %vm3, 2821; CHECK-NEXT:    st %s16, 16(, %s13)822; CHECK-NEXT:    svm %s16, %vm3, 3823; CHECK-NEXT:    st %s16, 24(, %s13)824; CHECK-NEXT:    svm %s16, %vm2, 0825; CHECK-NEXT:    st %s16, 32(, %s13)826; CHECK-NEXT:    svm %s16, %vm2, 1827; CHECK-NEXT:    st %s16, 40(, %s13)828; CHECK-NEXT:    svm %s16, %vm2, 2829; CHECK-NEXT:    st %s16, 48(, %s13)830; CHECK-NEXT:    svm %s16, %vm2, 3831; CHECK-NEXT:    st %s16, 56(, %s13)832; CHECK-NEXT:    or %s1, 0, (0)1833; CHECK-NEXT:    lea %s2, -2147483648834; CHECK-NEXT:    and %s2, %s2, (32)0835; CHECK-NEXT:  .LBB11_1: # =>This Inner Loop Header: Depth=1836; CHECK-NEXT:    st %s0, 192(%s1, %s11)837; CHECK-NEXT:    lea %s1, 8(, %s1)838; CHECK-NEXT:    brne.l %s1, %s2, .LBB11_1839; CHECK-NEXT:  # %bb.2:840; CHECK-NEXT:    or %s11, 0, %s9841; CHECK-NEXT:    ld %s10, 8(, %s11)842; CHECK-NEXT:    ld %s9, (, %s11)843; CHECK-NEXT:    b.l.t (, %s10)844  %3 = alloca <512 x i1>, align 64845  %4 = alloca [268435456 x i64], align 8846  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)847  call void @llvm.lifetime.start.p0(i64 2147483648, ptr nonnull %4)848  store volatile <512 x i1> %0, ptr %3, align 64, !tbaa !3849  br label %6850 8515:                                                ; preds = %6852  call void @llvm.lifetime.end.p0(i64 2147483648, ptr nonnull %4)853  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)854  ret void855 8566:                                                ; preds = %2, %6857  %7 = phi i64 [ 0, %2 ], [ %9, %6 ]858  %8 = getelementptr inbounds [268435456 x i64], ptr %4, i64 0, i64 %7859  store volatile i64 %1, ptr %8, align 8, !tbaa !6860  %9 = add nuw nsw i64 %7, 1861  %10 = icmp eq i64 %9, 268435456862  br i1 %10, label %5, label %6, !llvm.loop !12863}864 865; Function Attrs: argmemonly nofree nounwind866define fastcc void @store__vm512_stk_dyn(<512 x i1> noundef %0, i64 noundef %1) {867; CHECK-LABEL: store__vm512_stk_dyn:868; CHECK:       # %bb.0:869; CHECK-NEXT:    st %s9, (, %s11)870; CHECK-NEXT:    st %s10, 8(, %s11)871; CHECK-NEXT:    st %s17, 40(, %s11)872; CHECK-NEXT:    or %s9, 0, %s11873; CHECK-NEXT:    lea %s11, -320(, %s11)874; CHECK-NEXT:    and %s11, %s11, (58)1875; CHECK-NEXT:    or %s17, 0, %s11876; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB12_2877; CHECK-NEXT:  # %bb.1:878; CHECK-NEXT:    ld %s61, 24(, %s14)879; CHECK-NEXT:    or %s62, 0, %s0880; CHECK-NEXT:    lea %s63, 315881; CHECK-NEXT:    shm.l %s63, (%s61)882; CHECK-NEXT:    shm.l %s8, 8(%s61)883; CHECK-NEXT:    shm.l %s11, 16(%s61)884; CHECK-NEXT:    monc885; CHECK-NEXT:    or %s0, 0, %s62886; CHECK-NEXT:  .LBB12_2:887; CHECK-NEXT:    sll %s0, %s0, 6888; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo889; CHECK-NEXT:    and %s1, %s1, (32)0890; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)891; CHECK-NEXT:    bsic %s10, (, %s12)892; CHECK-NEXT:    lea %s0, 240(, %s11)893; CHECK-NEXT:    svm %s1, %vm2, 3894; CHECK-NEXT:    st %s1, 56(, %s0)895; CHECK-NEXT:    svm %s1, %vm2, 2896; CHECK-NEXT:    st %s1, 48(, %s0)897; CHECK-NEXT:    svm %s1, %vm2, 1898; CHECK-NEXT:    st %s1, 40(, %s0)899; CHECK-NEXT:    svm %s1, %vm2, 0900; CHECK-NEXT:    st %s1, 32(, %s0)901; CHECK-NEXT:    svm %s1, %vm3, 3902; CHECK-NEXT:    st %s1, 24(, %s0)903; CHECK-NEXT:    svm %s1, %vm3, 2904; CHECK-NEXT:    st %s1, 16(, %s0)905; CHECK-NEXT:    svm %s1, %vm3, 1906; CHECK-NEXT:    st %s1, 8(, %s0)907; CHECK-NEXT:    svm %s1, %vm3, 0908; CHECK-NEXT:    st %s1, (, %s0)909; CHECK-NEXT:    svm %s16, %vm3, 0910; CHECK-NEXT:    st %s16, 256(, %s17)911; CHECK-NEXT:    svm %s16, %vm3, 1912; CHECK-NEXT:    st %s16, 264(, %s17)913; CHECK-NEXT:    svm %s16, %vm3, 2914; CHECK-NEXT:    st %s16, 272(, %s17)915; CHECK-NEXT:    svm %s16, %vm3, 3916; CHECK-NEXT:    st %s16, 280(, %s17)917; CHECK-NEXT:    svm %s16, %vm2, 0918; CHECK-NEXT:    st %s16, 288(, %s17)919; CHECK-NEXT:    svm %s16, %vm2, 1920; CHECK-NEXT:    st %s16, 296(, %s17)921; CHECK-NEXT:    svm %s16, %vm2, 2922; CHECK-NEXT:    st %s16, 304(, %s17)923; CHECK-NEXT:    svm %s16, %vm2, 3924; CHECK-NEXT:    st %s16, 312(, %s17)925; CHECK-NEXT:    or %s11, 0, %s9926; CHECK-NEXT:    ld %s17, 40(, %s11)927; CHECK-NEXT:    ld %s10, 8(, %s11)928; CHECK-NEXT:    ld %s9, (, %s11)929; CHECK-NEXT:    b.l.t (, %s10)930  %3 = alloca <512 x i1>, align 64931  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)932  %4 = alloca <512 x i1>, i64 %1, align 8933  store volatile <512 x i1> %0, ptr %4, align 64, !tbaa !3934  store volatile <512 x i1> %0, ptr %3, align 64, !tbaa !3935  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)936  ret void937}938 939; Function Attrs: argmemonly nofree nounwind940define fastcc void @store__vm512_stk_dyn_align(<512 x i1> noundef %0, i64 noundef %1) {941; CHECK-LABEL: store__vm512_stk_dyn_align:942; CHECK:       # %bb.0:943; CHECK-NEXT:    st %s9, (, %s11)944; CHECK-NEXT:    st %s10, 8(, %s11)945; CHECK-NEXT:    st %s17, 40(, %s11)946; CHECK-NEXT:    or %s9, 0, %s11947; CHECK-NEXT:    lea %s11, -320(, %s11)948; CHECK-NEXT:    and %s11, %s11, (59)1949; CHECK-NEXT:    or %s17, 0, %s11950; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB13_2951; CHECK-NEXT:  # %bb.1:952; CHECK-NEXT:    ld %s61, 24(, %s14)953; CHECK-NEXT:    or %s62, 0, %s0954; CHECK-NEXT:    lea %s63, 315955; CHECK-NEXT:    shm.l %s63, (%s61)956; CHECK-NEXT:    shm.l %s8, 8(%s61)957; CHECK-NEXT:    shm.l %s11, 16(%s61)958; CHECK-NEXT:    monc959; CHECK-NEXT:    or %s0, 0, %s62960; CHECK-NEXT:  .LBB13_2:961; CHECK-NEXT:    sll %s0, %s0, 6962; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo963; CHECK-NEXT:    and %s1, %s1, (32)0964; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)965; CHECK-NEXT:    bsic %s10, (, %s12)966; CHECK-NEXT:    lea %s0, 240(, %s11)967; CHECK-NEXT:    svm %s1, %vm2, 3968; CHECK-NEXT:    st %s1, 56(, %s0)969; CHECK-NEXT:    svm %s1, %vm2, 2970; CHECK-NEXT:    st %s1, 48(, %s0)971; CHECK-NEXT:    svm %s1, %vm2, 1972; CHECK-NEXT:    st %s1, 40(, %s0)973; CHECK-NEXT:    svm %s1, %vm2, 0974; CHECK-NEXT:    st %s1, 32(, %s0)975; CHECK-NEXT:    svm %s1, %vm3, 3976; CHECK-NEXT:    st %s1, 24(, %s0)977; CHECK-NEXT:    svm %s1, %vm3, 2978; CHECK-NEXT:    st %s1, 16(, %s0)979; CHECK-NEXT:    svm %s1, %vm3, 1980; CHECK-NEXT:    st %s1, 8(, %s0)981; CHECK-NEXT:    svm %s1, %vm3, 0982; CHECK-NEXT:    st %s1, (, %s0)983; CHECK-NEXT:    svm %s16, %vm3, 0984; CHECK-NEXT:    st %s16, 256(, %s17)985; CHECK-NEXT:    svm %s16, %vm3, 1986; CHECK-NEXT:    st %s16, 264(, %s17)987; CHECK-NEXT:    svm %s16, %vm3, 2988; CHECK-NEXT:    st %s16, 272(, %s17)989; CHECK-NEXT:    svm %s16, %vm3, 3990; CHECK-NEXT:    st %s16, 280(, %s17)991; CHECK-NEXT:    svm %s16, %vm2, 0992; CHECK-NEXT:    st %s16, 288(, %s17)993; CHECK-NEXT:    svm %s16, %vm2, 1994; CHECK-NEXT:    st %s16, 296(, %s17)995; CHECK-NEXT:    svm %s16, %vm2, 2996; CHECK-NEXT:    st %s16, 304(, %s17)997; CHECK-NEXT:    svm %s16, %vm2, 3998; CHECK-NEXT:    st %s16, 312(, %s17)999; CHECK-NEXT:    or %s11, 0, %s91000; CHECK-NEXT:    ld %s17, 40(, %s11)1001; CHECK-NEXT:    ld %s10, 8(, %s11)1002; CHECK-NEXT:    ld %s9, (, %s11)1003; CHECK-NEXT:    b.l.t (, %s10)1004  %3 = alloca <512 x i1>, align 321005  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)1006  %4 = alloca <512 x i1>, i64 %1, align 81007  store volatile <512 x i1> %0, ptr %4, align 64, !tbaa !31008  store volatile <512 x i1> %0, ptr %3, align 32, !tbaa !31009  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)1010  ret void1011}1012 1013; Function Attrs: argmemonly nofree nounwind1014define fastcc void @store__vm512_stk_dyn_align2(<512 x i1> noundef %0, i64 noundef %1) {1015; CHECK-LABEL: store__vm512_stk_dyn_align2:1016; CHECK:       # %bb.0:1017; CHECK-NEXT:    st %s9, (, %s11)1018; CHECK-NEXT:    st %s10, 8(, %s11)1019; CHECK-NEXT:    st %s17, 40(, %s11)1020; CHECK-NEXT:    or %s9, 0, %s111021; CHECK-NEXT:    lea %s11, -384(, %s11)1022; CHECK-NEXT:    and %s11, %s11, (58)11023; CHECK-NEXT:    or %s17, 0, %s111024; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB14_21025; CHECK-NEXT:  # %bb.1:1026; CHECK-NEXT:    ld %s61, 24(, %s14)1027; CHECK-NEXT:    or %s62, 0, %s01028; CHECK-NEXT:    lea %s63, 3151029; CHECK-NEXT:    shm.l %s63, (%s61)1030; CHECK-NEXT:    shm.l %s8, 8(%s61)1031; CHECK-NEXT:    shm.l %s11, 16(%s61)1032; CHECK-NEXT:    monc1033; CHECK-NEXT:    or %s0, 0, %s621034; CHECK-NEXT:  .LBB14_2:1035; CHECK-NEXT:    lea %s0, 15(, %s0)1036; CHECK-NEXT:    and %s0, -16, %s01037; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo1038; CHECK-NEXT:    and %s1, %s1, (32)01039; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)1040; CHECK-NEXT:    bsic %s10, (, %s12)1041; CHECK-NEXT:    lea %s0, 240(, %s11)1042; CHECK-NEXT:    svm %s1, %vm2, 31043; CHECK-NEXT:    st %s1, 56(, %s0)1044; CHECK-NEXT:    svm %s1, %vm2, 21045; CHECK-NEXT:    st %s1, 48(, %s0)1046; CHECK-NEXT:    svm %s1, %vm2, 11047; CHECK-NEXT:    st %s1, 40(, %s0)1048; CHECK-NEXT:    svm %s1, %vm2, 01049; CHECK-NEXT:    st %s1, 32(, %s0)1050; CHECK-NEXT:    svm %s1, %vm3, 31051; CHECK-NEXT:    st %s1, 24(, %s0)1052; CHECK-NEXT:    svm %s1, %vm3, 21053; CHECK-NEXT:    st %s1, 16(, %s0)1054; CHECK-NEXT:    svm %s1, %vm3, 11055; CHECK-NEXT:    st %s1, 8(, %s0)1056; CHECK-NEXT:    svm %s1, %vm3, 01057; CHECK-NEXT:    st %s1, (, %s0)1058; CHECK-NEXT:    svm %s16, %vm3, 01059; CHECK-NEXT:    st %s16, 320(, %s17)1060; CHECK-NEXT:    svm %s16, %vm3, 11061; CHECK-NEXT:    st %s16, 328(, %s17)1062; CHECK-NEXT:    svm %s16, %vm3, 21063; CHECK-NEXT:    st %s16, 336(, %s17)1064; CHECK-NEXT:    svm %s16, %vm3, 31065; CHECK-NEXT:    st %s16, 344(, %s17)1066; CHECK-NEXT:    svm %s16, %vm2, 01067; CHECK-NEXT:    st %s16, 352(, %s17)1068; CHECK-NEXT:    svm %s16, %vm2, 11069; CHECK-NEXT:    st %s16, 360(, %s17)1070; CHECK-NEXT:    svm %s16, %vm2, 21071; CHECK-NEXT:    st %s16, 368(, %s17)1072; CHECK-NEXT:    svm %s16, %vm2, 31073; CHECK-NEXT:    st %s16, 376(, %s17)1074; CHECK-NEXT:    svm %s16, %vm3, 01075; CHECK-NEXT:    st %s16, 256(, %s17)1076; CHECK-NEXT:    svm %s16, %vm3, 11077; CHECK-NEXT:    st %s16, 264(, %s17)1078; CHECK-NEXT:    svm %s16, %vm3, 21079; CHECK-NEXT:    st %s16, 272(, %s17)1080; CHECK-NEXT:    svm %s16, %vm3, 31081; CHECK-NEXT:    st %s16, 280(, %s17)1082; CHECK-NEXT:    svm %s16, %vm2, 01083; CHECK-NEXT:    st %s16, 288(, %s17)1084; CHECK-NEXT:    svm %s16, %vm2, 11085; CHECK-NEXT:    st %s16, 296(, %s17)1086; CHECK-NEXT:    svm %s16, %vm2, 21087; CHECK-NEXT:    st %s16, 304(, %s17)1088; CHECK-NEXT:    svm %s16, %vm2, 31089; CHECK-NEXT:    st %s16, 312(, %s17)1090; CHECK-NEXT:    or %s11, 0, %s91091; CHECK-NEXT:    ld %s17, 40(, %s11)1092; CHECK-NEXT:    ld %s10, 8(, %s11)1093; CHECK-NEXT:    ld %s9, (, %s11)1094; CHECK-NEXT:    b.l.t (, %s10)1095  %3 = alloca <512 x i1>, align 321096  %4 = alloca <512 x i1>, align 641097  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)1098  %5 = alloca i8, i64 %1, align 81099  store volatile <512 x i1> %0, ptr %5, align 64, !tbaa !31100  store volatile <512 x i1> %0, ptr %3, align 32, !tbaa !31101  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4)1102  store volatile <512 x i1> %0, ptr %4, align 64, !tbaa !31103  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4)1104  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)1105  ret void1106}1107 1108; Function Attrs: nounwind1109define fastcc void @store__vm512_stk_dyn_align_spill(<512 x i1> noundef %0, i64 noundef %1) {1110; CHECK-LABEL: store__vm512_stk_dyn_align_spill:1111; CHECK:       # %bb.0:1112; CHECK-NEXT:    st %s9, (, %s11)1113; CHECK-NEXT:    st %s10, 8(, %s11)1114; CHECK-NEXT:    st %s17, 40(, %s11)1115; CHECK-NEXT:    or %s9, 0, %s111116; CHECK-NEXT:    lea %s11, -384(, %s11)1117; CHECK-NEXT:    and %s11, %s11, (59)11118; CHECK-NEXT:    or %s17, 0, %s111119; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB15_21120; CHECK-NEXT:  # %bb.1:1121; CHECK-NEXT:    ld %s61, 24(, %s14)1122; CHECK-NEXT:    or %s62, 0, %s01123; CHECK-NEXT:    lea %s63, 3151124; CHECK-NEXT:    shm.l %s63, (%s61)1125; CHECK-NEXT:    shm.l %s8, 8(%s61)1126; CHECK-NEXT:    shm.l %s11, 16(%s61)1127; CHECK-NEXT:    monc1128; CHECK-NEXT:    or %s0, 0, %s621129; CHECK-NEXT:  .LBB15_2:1130; CHECK-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill1131; CHECK-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill1132; CHECK-NEXT:    or %s18, 0, %s01133; CHECK-NEXT:    svm %s16, %vm3, 01134; CHECK-NEXT:    st %s16, 256(, %s17)1135; CHECK-NEXT:    svm %s16, %vm3, 11136; CHECK-NEXT:    st %s16, 264(, %s17)1137; CHECK-NEXT:    svm %s16, %vm3, 21138; CHECK-NEXT:    st %s16, 272(, %s17)1139; CHECK-NEXT:    svm %s16, %vm3, 31140; CHECK-NEXT:    st %s16, 280(, %s17)1141; CHECK-NEXT:    svm %s16, %vm2, 01142; CHECK-NEXT:    st %s16, 288(, %s17)1143; CHECK-NEXT:    svm %s16, %vm2, 11144; CHECK-NEXT:    st %s16, 296(, %s17)1145; CHECK-NEXT:    svm %s16, %vm2, 21146; CHECK-NEXT:    st %s16, 304(, %s17)1147; CHECK-NEXT:    svm %s16, %vm2, 31148; CHECK-NEXT:    st %s16, 312(, %s17) # 64-byte Folded Spill1149; CHECK-NEXT:    sll %s0, %s0, 61150; CHECK-NEXT:    lea %s1, __ve_grow_stack@lo1151; CHECK-NEXT:    and %s1, %s1, (32)01152; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack@hi(, %s1)1153; CHECK-NEXT:    bsic %s10, (, %s12)1154; CHECK-NEXT:    lea %s19, 240(, %s11)1155; CHECK-NEXT:    lea %s0, dummy@lo1156; CHECK-NEXT:    and %s0, %s0, (32)01157; CHECK-NEXT:    lea.sl %s12, dummy@hi(, %s0)1158; CHECK-NEXT:    bsic %s10, (, %s12)1159; CHECK-NEXT:    lea %s0, pass@lo1160; CHECK-NEXT:    and %s0, %s0, (32)01161; CHECK-NEXT:    lea.sl %s12, pass@hi(, %s0)1162; CHECK-NEXT:    or %s0, 0, %s181163; CHECK-NEXT:    bsic %s10, (, %s12)1164; CHECK-NEXT:    # implicit-def: $vmp11165; CHECK-NEXT:    ld %s16, 256(, %s17)1166; CHECK-NEXT:    lvm %vm3, 0, %s161167; CHECK-NEXT:    ld %s16, 264(, %s17)1168; CHECK-NEXT:    lvm %vm3, 1, %s161169; CHECK-NEXT:    ld %s16, 272(, %s17)1170; CHECK-NEXT:    lvm %vm3, 2, %s161171; CHECK-NEXT:    ld %s16, 280(, %s17)1172; CHECK-NEXT:    lvm %vm3, 3, %s161173; CHECK-NEXT:    ld %s16, 288(, %s17)1174; CHECK-NEXT:    lvm %vm2, 0, %s161175; CHECK-NEXT:    ld %s16, 296(, %s17)1176; CHECK-NEXT:    lvm %vm2, 1, %s161177; CHECK-NEXT:    ld %s16, 304(, %s17)1178; CHECK-NEXT:    lvm %vm2, 2, %s161179; CHECK-NEXT:    ld %s16, 312(, %s17) # 64-byte Folded Reload1180; CHECK-NEXT:    lvm %vm2, 3, %s161181; CHECK-NEXT:    svm %s0, %vm2, 31182; CHECK-NEXT:    st %s0, 56(, %s19)1183; CHECK-NEXT:    svm %s0, %vm2, 21184; CHECK-NEXT:    st %s0, 48(, %s19)1185; CHECK-NEXT:    svm %s0, %vm2, 11186; CHECK-NEXT:    st %s0, 40(, %s19)1187; CHECK-NEXT:    svm %s0, %vm2, 01188; CHECK-NEXT:    st %s0, 32(, %s19)1189; CHECK-NEXT:    svm %s0, %vm3, 31190; CHECK-NEXT:    st %s0, 24(, %s19)1191; CHECK-NEXT:    svm %s0, %vm3, 21192; CHECK-NEXT:    st %s0, 16(, %s19)1193; CHECK-NEXT:    svm %s0, %vm3, 11194; CHECK-NEXT:    st %s0, 8(, %s19)1195; CHECK-NEXT:    svm %s0, %vm3, 01196; CHECK-NEXT:    st %s0, (, %s19)1197; CHECK-NEXT:    svm %s16, %vm3, 01198; CHECK-NEXT:    st %s16, 320(, %s17)1199; CHECK-NEXT:    svm %s16, %vm3, 11200; CHECK-NEXT:    st %s16, 328(, %s17)1201; CHECK-NEXT:    svm %s16, %vm3, 21202; CHECK-NEXT:    st %s16, 336(, %s17)1203; CHECK-NEXT:    svm %s16, %vm3, 31204; CHECK-NEXT:    st %s16, 344(, %s17)1205; CHECK-NEXT:    svm %s16, %vm2, 01206; CHECK-NEXT:    st %s16, 352(, %s17)1207; CHECK-NEXT:    svm %s16, %vm2, 11208; CHECK-NEXT:    st %s16, 360(, %s17)1209; CHECK-NEXT:    svm %s16, %vm2, 21210; CHECK-NEXT:    st %s16, 368(, %s17)1211; CHECK-NEXT:    svm %s16, %vm2, 31212; CHECK-NEXT:    st %s16, 376(, %s17)1213; CHECK-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload1214; CHECK-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload1215; CHECK-NEXT:    or %s11, 0, %s91216; CHECK-NEXT:    ld %s17, 40(, %s11)1217; CHECK-NEXT:    ld %s10, 8(, %s11)1218; CHECK-NEXT:    ld %s9, (, %s11)1219; CHECK-NEXT:    b.l.t (, %s10)1220  %3 = alloca <512 x i1>, align 321221  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3)1222  %4 = alloca <512 x i1>, i64 %1, align 81223  tail call fastcc void @dummy()1224  tail call fastcc void @pass(i64 noundef %1)1225  store volatile <512 x i1> %0, ptr %4, align 64, !tbaa !31226  store volatile <512 x i1> %0, ptr %3, align 32, !tbaa !31227  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3)1228  ret void1229}1230 1231!2 = !{!"clang version 15.0.0 (git@kaz7.github.com:sx-aurora-dev/llvm-project.git 6c510cbf7e17baa380bf8a181c3b43145fd50980)"}1232!3 = !{!4, !4, i64 0}1233!4 = !{!"omnipotent char", !5, i64 0}1234!5 = !{!"Simple C/C++ TBAA"}1235!6 = !{!7, !7, i64 0}1236!7 = !{!"long", !4, i64 0}1237!8 = distinct !{!8, !9}1238!9 = !{!"llvm.loop.mustprogress"}1239!10 = distinct !{!10, !9}1240!11 = distinct !{!11, !9}1241!12 = distinct !{!12, !9}1242