brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.1 KiB · 3a3b1ba Raw
542 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=ve | FileCheck %s3; RUN: llc < %s -mtriple=ve -relocation-model=pic \4; RUN:     | FileCheck %s --check-prefix=PIC5 6;;; Check stack frame allocation of a function which calls other functions7;;; under following conditions and combinations of them:8;;;   - access variable or not9;;;   - no stack object, a stack object using BP, or a stack object not using BP10;;;   - isPositionIndependent or not11 12@data = external global i8, align 113 14; Function Attrs: nounwind15define ptr @test_frame0(ptr %0, ptr %1) {16; CHECK-LABEL: test_frame0:17; CHECK:       # %bb.0:18; CHECK-NEXT:    st %s9, (, %s11)19; CHECK-NEXT:    st %s10, 8(, %s11)20; CHECK-NEXT:    or %s9, 0, %s1121; CHECK-NEXT:    lea %s11, -240(, %s11)22; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB0_223; CHECK-NEXT:  # %bb.1:24; CHECK-NEXT:    ld %s61, 24(, %s14)25; CHECK-NEXT:    or %s62, 0, %s026; CHECK-NEXT:    lea %s63, 31527; CHECK-NEXT:    shm.l %s63, (%s61)28; CHECK-NEXT:    shm.l %s8, 8(%s61)29; CHECK-NEXT:    shm.l %s11, 16(%s61)30; CHECK-NEXT:    monc31; CHECK-NEXT:    or %s0, 0, %s6232; CHECK-NEXT:  .LBB0_2:33; CHECK-NEXT:    lea %s2, fun@lo34; CHECK-NEXT:    and %s2, %s2, (32)035; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s2)36; CHECK-NEXT:    bsic %s10, (, %s12)37; CHECK-NEXT:    or %s11, 0, %s938; CHECK-NEXT:    ld %s10, 8(, %s11)39; CHECK-NEXT:    ld %s9, (, %s11)40; CHECK-NEXT:    b.l.t (, %s10)41;42; PIC-LABEL: test_frame0:43; PIC:       # %bb.0:44; PIC-NEXT:    st %s9, (, %s11)45; PIC-NEXT:    st %s10, 8(, %s11)46; PIC-NEXT:    st %s15, 24(, %s11)47; PIC-NEXT:    st %s16, 32(, %s11)48; PIC-NEXT:    or %s9, 0, %s1149; PIC-NEXT:    lea %s11, -240(, %s11)50; PIC-NEXT:    brge.l.t %s11, %s8, .LBB0_251; PIC-NEXT:  # %bb.1:52; PIC-NEXT:    ld %s61, 24(, %s14)53; PIC-NEXT:    or %s62, 0, %s054; PIC-NEXT:    lea %s63, 31555; PIC-NEXT:    shm.l %s63, (%s61)56; PIC-NEXT:    shm.l %s8, 8(%s61)57; PIC-NEXT:    shm.l %s11, 16(%s61)58; PIC-NEXT:    monc59; PIC-NEXT:    or %s0, 0, %s6260; PIC-NEXT:  .LBB0_2:61; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)62; PIC-NEXT:    and %s15, %s15, (32)063; PIC-NEXT:    sic %s1664; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)65; PIC-NEXT:    lea %s12, fun@plt_lo(-24)66; PIC-NEXT:    and %s12, %s12, (32)067; PIC-NEXT:    sic %s1668; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)69; PIC-NEXT:    bsic %s10, (, %s12)70; PIC-NEXT:    or %s11, 0, %s971; PIC-NEXT:    ld %s16, 32(, %s11)72; PIC-NEXT:    ld %s15, 24(, %s11)73; PIC-NEXT:    ld %s10, 8(, %s11)74; PIC-NEXT:    ld %s9, (, %s11)75; PIC-NEXT:    b.l.t (, %s10)76  %3 = tail call ptr @fun(ptr %0, ptr %1)77  ret ptr %378}79 80declare ptr @fun(ptr, ptr)81 82; Function Attrs: nounwind83define ptr @test_frame32(ptr %0) {84; CHECK-LABEL: test_frame32:85; CHECK:       # %bb.0:86; CHECK-NEXT:    st %s9, (, %s11)87; CHECK-NEXT:    st %s10, 8(, %s11)88; CHECK-NEXT:    or %s9, 0, %s1189; CHECK-NEXT:    lea %s11, -272(, %s11)90; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB1_291; CHECK-NEXT:  # %bb.1:92; CHECK-NEXT:    ld %s61, 24(, %s14)93; CHECK-NEXT:    or %s62, 0, %s094; CHECK-NEXT:    lea %s63, 31595; CHECK-NEXT:    shm.l %s63, (%s61)96; CHECK-NEXT:    shm.l %s8, 8(%s61)97; CHECK-NEXT:    shm.l %s11, 16(%s61)98; CHECK-NEXT:    monc99; CHECK-NEXT:    or %s0, 0, %s62100; CHECK-NEXT:  .LBB1_2:101; CHECK-NEXT:    or %s1, 0, %s0102; CHECK-NEXT:    lea %s0, fun@lo103; CHECK-NEXT:    and %s0, %s0, (32)0104; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s0)105; CHECK-NEXT:    lea %s0, 240(, %s11)106; CHECK-NEXT:    bsic %s10, (, %s12)107; CHECK-NEXT:    or %s11, 0, %s9108; CHECK-NEXT:    ld %s10, 8(, %s11)109; CHECK-NEXT:    ld %s9, (, %s11)110; CHECK-NEXT:    b.l.t (, %s10)111;112; PIC-LABEL: test_frame32:113; PIC:       # %bb.0:114; PIC-NEXT:    st %s9, (, %s11)115; PIC-NEXT:    st %s10, 8(, %s11)116; PIC-NEXT:    st %s15, 24(, %s11)117; PIC-NEXT:    st %s16, 32(, %s11)118; PIC-NEXT:    or %s9, 0, %s11119; PIC-NEXT:    lea %s11, -272(, %s11)120; PIC-NEXT:    brge.l.t %s11, %s8, .LBB1_2121; PIC-NEXT:  # %bb.1:122; PIC-NEXT:    ld %s61, 24(, %s14)123; PIC-NEXT:    or %s62, 0, %s0124; PIC-NEXT:    lea %s63, 315125; PIC-NEXT:    shm.l %s63, (%s61)126; PIC-NEXT:    shm.l %s8, 8(%s61)127; PIC-NEXT:    shm.l %s11, 16(%s61)128; PIC-NEXT:    monc129; PIC-NEXT:    or %s0, 0, %s62130; PIC-NEXT:  .LBB1_2:131; PIC-NEXT:    or %s1, 0, %s0132; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)133; PIC-NEXT:    and %s15, %s15, (32)0134; PIC-NEXT:    sic %s16135; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)136; PIC-NEXT:    lea %s12, fun@plt_lo(-24)137; PIC-NEXT:    and %s12, %s12, (32)0138; PIC-NEXT:    sic %s16139; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)140; PIC-NEXT:    lea %s0, 240(, %s11)141; PIC-NEXT:    bsic %s10, (, %s12)142; PIC-NEXT:    or %s11, 0, %s9143; PIC-NEXT:    ld %s16, 32(, %s11)144; PIC-NEXT:    ld %s15, 24(, %s11)145; PIC-NEXT:    ld %s10, 8(, %s11)146; PIC-NEXT:    ld %s9, (, %s11)147; PIC-NEXT:    b.l.t (, %s10)148  %2 = alloca [32 x i8], align 1149  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)150  %3 = call ptr @fun(ptr nonnull %2, ptr %0)151  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2)152  ret ptr %3153}154 155; Function Attrs: argmemonly nofree nosync nounwind willreturn156declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)157 158; Function Attrs: argmemonly nofree nosync nounwind willreturn159declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)160 161; Function Attrs: nounwind162define ptr @test_align32(i32 signext %0, ptr nocapture readnone %1) {163; CHECK-LABEL: test_align32:164; CHECK:       # %bb.0:165; CHECK-NEXT:    st %s9, (, %s11)166; CHECK-NEXT:    st %s10, 8(, %s11)167; CHECK-NEXT:    st %s17, 40(, %s11)168; CHECK-NEXT:    or %s9, 0, %s11169; CHECK-NEXT:    lea %s11, -288(, %s11)170; CHECK-NEXT:    and %s11, %s11, (59)1171; CHECK-NEXT:    or %s17, 0, %s11172; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB2_2173; CHECK-NEXT:  # %bb.1:174; CHECK-NEXT:    ld %s61, 24(, %s14)175; CHECK-NEXT:    or %s62, 0, %s0176; CHECK-NEXT:    lea %s63, 315177; CHECK-NEXT:    shm.l %s63, (%s61)178; CHECK-NEXT:    shm.l %s8, 8(%s61)179; CHECK-NEXT:    shm.l %s11, 16(%s61)180; CHECK-NEXT:    monc181; CHECK-NEXT:    or %s0, 0, %s62182; CHECK-NEXT:  .LBB2_2:183; CHECK-NEXT:    lea %s0, 15(, %s0)184; CHECK-NEXT:    and %s0, -16, %s0185; CHECK-NEXT:    lea %s1, __ve_grow_stack_align@lo186; CHECK-NEXT:    and %s1, %s1, (32)0187; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack_align@hi(, %s1)188; CHECK-NEXT:    or %s1, -32, (0)1189; CHECK-NEXT:    bsic %s10, (, %s12)190; CHECK-NEXT:    lea %s0, 240(, %s11)191; CHECK-NEXT:    lea %s0, 31(, %s0)192; CHECK-NEXT:    and %s1, -32, %s0193; CHECK-NEXT:    lea %s0, fun@lo194; CHECK-NEXT:    and %s0, %s0, (32)0195; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s0)196; CHECK-NEXT:    lea %s0, 256(, %s17)197; CHECK-NEXT:    bsic %s10, (, %s12)198; CHECK-NEXT:    or %s11, 0, %s9199; CHECK-NEXT:    ld %s17, 40(, %s11)200; CHECK-NEXT:    ld %s10, 8(, %s11)201; CHECK-NEXT:    ld %s9, (, %s11)202; CHECK-NEXT:    b.l.t (, %s10)203;204; PIC-LABEL: test_align32:205; PIC:       # %bb.0:206; PIC-NEXT:    st %s9, (, %s11)207; PIC-NEXT:    st %s10, 8(, %s11)208; PIC-NEXT:    st %s15, 24(, %s11)209; PIC-NEXT:    st %s16, 32(, %s11)210; PIC-NEXT:    st %s17, 40(, %s11)211; PIC-NEXT:    or %s9, 0, %s11212; PIC-NEXT:    lea %s11, -288(, %s11)213; PIC-NEXT:    and %s11, %s11, (59)1214; PIC-NEXT:    or %s17, 0, %s11215; PIC-NEXT:    brge.l.t %s11, %s8, .LBB2_2216; PIC-NEXT:  # %bb.1:217; PIC-NEXT:    ld %s61, 24(, %s14)218; PIC-NEXT:    or %s62, 0, %s0219; PIC-NEXT:    lea %s63, 315220; PIC-NEXT:    shm.l %s63, (%s61)221; PIC-NEXT:    shm.l %s8, 8(%s61)222; PIC-NEXT:    shm.l %s11, 16(%s61)223; PIC-NEXT:    monc224; PIC-NEXT:    or %s0, 0, %s62225; PIC-NEXT:  .LBB2_2:226; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)227; PIC-NEXT:    and %s15, %s15, (32)0228; PIC-NEXT:    sic %s16229; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)230; PIC-NEXT:    lea %s0, 15(, %s0)231; PIC-NEXT:    and %s0, -16, %s0232; PIC-NEXT:    lea %s12, __ve_grow_stack_align@plt_lo(-24)233; PIC-NEXT:    and %s12, %s12, (32)0234; PIC-NEXT:    sic %s16235; PIC-NEXT:    lea.sl %s12, __ve_grow_stack_align@plt_hi(%s16, %s12)236; PIC-NEXT:    or %s1, -32, (0)1237; PIC-NEXT:    bsic %s10, (, %s12)238; PIC-NEXT:    lea %s0, 240(, %s11)239; PIC-NEXT:    lea %s0, 31(, %s0)240; PIC-NEXT:    and %s1, -32, %s0241; PIC-NEXT:    lea %s12, fun@plt_lo(-24)242; PIC-NEXT:    and %s12, %s12, (32)0243; PIC-NEXT:    sic %s16244; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)245; PIC-NEXT:    lea %s0, 256(, %s17)246; PIC-NEXT:    bsic %s10, (, %s12)247; PIC-NEXT:    or %s11, 0, %s9248; PIC-NEXT:    ld %s17, 40(, %s11)249; PIC-NEXT:    ld %s16, 32(, %s11)250; PIC-NEXT:    ld %s15, 24(, %s11)251; PIC-NEXT:    ld %s10, 8(, %s11)252; PIC-NEXT:    ld %s9, (, %s11)253; PIC-NEXT:    b.l.t (, %s10)254  %3 = alloca [32 x i8], align 32255  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)256  %4 = sext i32 %0 to i64257  %5 = alloca i8, i64 %4, align 32258  %6 = call ptr @fun(ptr nonnull %3, ptr nonnull %5)259  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)260  ret ptr %6261}262 263; Function Attrs: nounwind264define ptr @test_frame0_var(ptr %0, ptr %1) {265; CHECK-LABEL: test_frame0_var:266; CHECK:       # %bb.0:267; CHECK-NEXT:    st %s9, (, %s11)268; CHECK-NEXT:    st %s10, 8(, %s11)269; CHECK-NEXT:    or %s9, 0, %s11270; CHECK-NEXT:    lea %s11, -240(, %s11)271; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB3_2272; CHECK-NEXT:  # %bb.1:273; CHECK-NEXT:    ld %s61, 24(, %s14)274; CHECK-NEXT:    or %s62, 0, %s0275; CHECK-NEXT:    lea %s63, 315276; CHECK-NEXT:    shm.l %s63, (%s61)277; CHECK-NEXT:    shm.l %s8, 8(%s61)278; CHECK-NEXT:    shm.l %s11, 16(%s61)279; CHECK-NEXT:    monc280; CHECK-NEXT:    or %s0, 0, %s62281; CHECK-NEXT:  .LBB3_2:282; CHECK-NEXT:    lea %s2, data@lo283; CHECK-NEXT:    and %s2, %s2, (32)0284; CHECK-NEXT:    lea.sl %s2, data@hi(, %s2)285; CHECK-NEXT:    ld1b.zx %s2, (, %s2)286; CHECK-NEXT:    st1b %s2, (, %s0)287; CHECK-NEXT:    lea %s2, fun@lo288; CHECK-NEXT:    and %s2, %s2, (32)0289; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s2)290; CHECK-NEXT:    bsic %s10, (, %s12)291; CHECK-NEXT:    or %s11, 0, %s9292; CHECK-NEXT:    ld %s10, 8(, %s11)293; CHECK-NEXT:    ld %s9, (, %s11)294; CHECK-NEXT:    b.l.t (, %s10)295;296; PIC-LABEL: test_frame0_var:297; PIC:       # %bb.0:298; PIC-NEXT:    st %s9, (, %s11)299; PIC-NEXT:    st %s10, 8(, %s11)300; PIC-NEXT:    st %s15, 24(, %s11)301; PIC-NEXT:    st %s16, 32(, %s11)302; PIC-NEXT:    or %s9, 0, %s11303; PIC-NEXT:    lea %s11, -240(, %s11)304; PIC-NEXT:    brge.l.t %s11, %s8, .LBB3_2305; PIC-NEXT:  # %bb.1:306; PIC-NEXT:    ld %s61, 24(, %s14)307; PIC-NEXT:    or %s62, 0, %s0308; PIC-NEXT:    lea %s63, 315309; PIC-NEXT:    shm.l %s63, (%s61)310; PIC-NEXT:    shm.l %s8, 8(%s61)311; PIC-NEXT:    shm.l %s11, 16(%s61)312; PIC-NEXT:    monc313; PIC-NEXT:    or %s0, 0, %s62314; PIC-NEXT:  .LBB3_2:315; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)316; PIC-NEXT:    and %s15, %s15, (32)0317; PIC-NEXT:    sic %s16318; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)319; PIC-NEXT:    lea %s2, data@got_lo320; PIC-NEXT:    and %s2, %s2, (32)0321; PIC-NEXT:    lea.sl %s2, data@got_hi(, %s2)322; PIC-NEXT:    ld %s2, (%s2, %s15)323; PIC-NEXT:    ld1b.zx %s2, (, %s2)324; PIC-NEXT:    st1b %s2, (, %s0)325; PIC-NEXT:    lea %s12, fun@plt_lo(-24)326; PIC-NEXT:    and %s12, %s12, (32)0327; PIC-NEXT:    sic %s16328; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)329; PIC-NEXT:    bsic %s10, (, %s12)330; PIC-NEXT:    or %s11, 0, %s9331; PIC-NEXT:    ld %s16, 32(, %s11)332; PIC-NEXT:    ld %s15, 24(, %s11)333; PIC-NEXT:    ld %s10, 8(, %s11)334; PIC-NEXT:    ld %s9, (, %s11)335; PIC-NEXT:    b.l.t (, %s10)336  %3 = load i8, ptr @data, align 1337  store i8 %3, ptr %0, align 1338  %4 = tail call ptr @fun(ptr nonnull %0, ptr %1)339  ret ptr %4340}341 342; Function Attrs: nounwind343define ptr @test_frame32_var(ptr %0) {344; CHECK-LABEL: test_frame32_var:345; CHECK:       # %bb.0:346; CHECK-NEXT:    st %s9, (, %s11)347; CHECK-NEXT:    st %s10, 8(, %s11)348; CHECK-NEXT:    or %s9, 0, %s11349; CHECK-NEXT:    lea %s11, -272(, %s11)350; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB4_2351; CHECK-NEXT:  # %bb.1:352; CHECK-NEXT:    ld %s61, 24(, %s14)353; CHECK-NEXT:    or %s62, 0, %s0354; CHECK-NEXT:    lea %s63, 315355; CHECK-NEXT:    shm.l %s63, (%s61)356; CHECK-NEXT:    shm.l %s8, 8(%s61)357; CHECK-NEXT:    shm.l %s11, 16(%s61)358; CHECK-NEXT:    monc359; CHECK-NEXT:    or %s0, 0, %s62360; CHECK-NEXT:  .LBB4_2:361; CHECK-NEXT:    lea %s1, data@lo362; CHECK-NEXT:    and %s1, %s1, (32)0363; CHECK-NEXT:    lea.sl %s1, data@hi(, %s1)364; CHECK-NEXT:    ld1b.zx %s2, (, %s1)365; CHECK-NEXT:    or %s1, 0, %s0366; CHECK-NEXT:    st1b %s2, 240(, %s11)367; CHECK-NEXT:    lea %s0, fun@lo368; CHECK-NEXT:    and %s0, %s0, (32)0369; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s0)370; CHECK-NEXT:    lea %s0, 240(, %s11)371; CHECK-NEXT:    bsic %s10, (, %s12)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;377; PIC-LABEL: test_frame32_var:378; PIC:       # %bb.0:379; PIC-NEXT:    st %s9, (, %s11)380; PIC-NEXT:    st %s10, 8(, %s11)381; PIC-NEXT:    st %s15, 24(, %s11)382; PIC-NEXT:    st %s16, 32(, %s11)383; PIC-NEXT:    or %s9, 0, %s11384; PIC-NEXT:    lea %s11, -272(, %s11)385; PIC-NEXT:    brge.l.t %s11, %s8, .LBB4_2386; PIC-NEXT:  # %bb.1:387; PIC-NEXT:    ld %s61, 24(, %s14)388; PIC-NEXT:    or %s62, 0, %s0389; PIC-NEXT:    lea %s63, 315390; PIC-NEXT:    shm.l %s63, (%s61)391; PIC-NEXT:    shm.l %s8, 8(%s61)392; PIC-NEXT:    shm.l %s11, 16(%s61)393; PIC-NEXT:    monc394; PIC-NEXT:    or %s0, 0, %s62395; PIC-NEXT:  .LBB4_2:396; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)397; PIC-NEXT:    and %s15, %s15, (32)0398; PIC-NEXT:    sic %s16399; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)400; PIC-NEXT:    lea %s1, data@got_lo401; PIC-NEXT:    and %s1, %s1, (32)0402; PIC-NEXT:    lea.sl %s1, data@got_hi(, %s1)403; PIC-NEXT:    ld %s1, (%s1, %s15)404; PIC-NEXT:    ld1b.zx %s2, (, %s1)405; PIC-NEXT:    or %s1, 0, %s0406; PIC-NEXT:    st1b %s2, 240(, %s11)407; PIC-NEXT:    lea %s12, fun@plt_lo(-24)408; PIC-NEXT:    and %s12, %s12, (32)0409; PIC-NEXT:    sic %s16410; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)411; PIC-NEXT:    lea %s0, 240(, %s11)412; PIC-NEXT:    bsic %s10, (, %s12)413; PIC-NEXT:    or %s11, 0, %s9414; PIC-NEXT:    ld %s16, 32(, %s11)415; PIC-NEXT:    ld %s15, 24(, %s11)416; PIC-NEXT:    ld %s10, 8(, %s11)417; PIC-NEXT:    ld %s9, (, %s11)418; PIC-NEXT:    b.l.t (, %s10)419  %2 = alloca [32 x i8], align 1420  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)421  %3 = load i8, ptr @data, align 1422  store i8 %3, ptr %2, align 1423  %4 = call ptr @fun(ptr nonnull %2, ptr %0)424  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2)425  ret ptr %4426}427 428; Function Attrs: nounwind429define ptr @test_align32_var(i32 signext %0, ptr nocapture readnone %1) {430; CHECK-LABEL: test_align32_var:431; CHECK:       # %bb.0:432; CHECK-NEXT:    st %s9, (, %s11)433; CHECK-NEXT:    st %s10, 8(, %s11)434; CHECK-NEXT:    st %s17, 40(, %s11)435; CHECK-NEXT:    or %s9, 0, %s11436; CHECK-NEXT:    lea %s11, -288(, %s11)437; CHECK-NEXT:    and %s11, %s11, (59)1438; CHECK-NEXT:    or %s17, 0, %s11439; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB5_2440; CHECK-NEXT:  # %bb.1:441; CHECK-NEXT:    ld %s61, 24(, %s14)442; CHECK-NEXT:    or %s62, 0, %s0443; CHECK-NEXT:    lea %s63, 315444; CHECK-NEXT:    shm.l %s63, (%s61)445; CHECK-NEXT:    shm.l %s8, 8(%s61)446; CHECK-NEXT:    shm.l %s11, 16(%s61)447; CHECK-NEXT:    monc448; CHECK-NEXT:    or %s0, 0, %s62449; CHECK-NEXT:  .LBB5_2:450; CHECK-NEXT:    lea %s0, 15(, %s0)451; CHECK-NEXT:    and %s0, -16, %s0452; CHECK-NEXT:    lea %s1, __ve_grow_stack_align@lo453; CHECK-NEXT:    and %s1, %s1, (32)0454; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack_align@hi(, %s1)455; CHECK-NEXT:    or %s1, -32, (0)1456; CHECK-NEXT:    bsic %s10, (, %s12)457; CHECK-NEXT:    lea %s0, 240(, %s11)458; CHECK-NEXT:    lea %s1, data@lo459; CHECK-NEXT:    and %s1, %s1, (32)0460; CHECK-NEXT:    lea.sl %s1, data@hi(, %s1)461; CHECK-NEXT:    ld1b.zx %s2, (, %s1)462; CHECK-NEXT:    lea %s0, 31(, %s0)463; CHECK-NEXT:    and %s1, -32, %s0464; CHECK-NEXT:    st1b %s2, (, %s1)465; CHECK-NEXT:    lea %s0, fun@lo466; CHECK-NEXT:    and %s0, %s0, (32)0467; CHECK-NEXT:    lea.sl %s12, fun@hi(, %s0)468; CHECK-NEXT:    lea %s0, 256(, %s17)469; CHECK-NEXT:    bsic %s10, (, %s12)470; CHECK-NEXT:    or %s11, 0, %s9471; CHECK-NEXT:    ld %s17, 40(, %s11)472; CHECK-NEXT:    ld %s10, 8(, %s11)473; CHECK-NEXT:    ld %s9, (, %s11)474; CHECK-NEXT:    b.l.t (, %s10)475;476; PIC-LABEL: test_align32_var:477; PIC:       # %bb.0:478; PIC-NEXT:    st %s9, (, %s11)479; PIC-NEXT:    st %s10, 8(, %s11)480; PIC-NEXT:    st %s15, 24(, %s11)481; PIC-NEXT:    st %s16, 32(, %s11)482; PIC-NEXT:    st %s17, 40(, %s11)483; PIC-NEXT:    or %s9, 0, %s11484; PIC-NEXT:    lea %s11, -288(, %s11)485; PIC-NEXT:    and %s11, %s11, (59)1486; PIC-NEXT:    or %s17, 0, %s11487; PIC-NEXT:    brge.l.t %s11, %s8, .LBB5_2488; PIC-NEXT:  # %bb.1:489; PIC-NEXT:    ld %s61, 24(, %s14)490; PIC-NEXT:    or %s62, 0, %s0491; PIC-NEXT:    lea %s63, 315492; PIC-NEXT:    shm.l %s63, (%s61)493; PIC-NEXT:    shm.l %s8, 8(%s61)494; PIC-NEXT:    shm.l %s11, 16(%s61)495; PIC-NEXT:    monc496; PIC-NEXT:    or %s0, 0, %s62497; PIC-NEXT:  .LBB5_2:498; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)499; PIC-NEXT:    and %s15, %s15, (32)0500; PIC-NEXT:    sic %s16501; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)502; PIC-NEXT:    lea %s0, 15(, %s0)503; PIC-NEXT:    and %s0, -16, %s0504; PIC-NEXT:    lea %s12, __ve_grow_stack_align@plt_lo(-24)505; PIC-NEXT:    and %s12, %s12, (32)0506; PIC-NEXT:    sic %s16507; PIC-NEXT:    lea.sl %s12, __ve_grow_stack_align@plt_hi(%s16, %s12)508; PIC-NEXT:    or %s1, -32, (0)1509; PIC-NEXT:    bsic %s10, (, %s12)510; PIC-NEXT:    lea %s0, data@got_lo511; PIC-NEXT:    and %s0, %s0, (32)0512; PIC-NEXT:    lea.sl %s0, data@got_hi(, %s0)513; PIC-NEXT:    ld %s0, (%s0, %s15)514; PIC-NEXT:    lea %s1, 240(, %s11)515; PIC-NEXT:    ld1b.zx %s0, (, %s0)516; PIC-NEXT:    lea %s1, 31(, %s1)517; PIC-NEXT:    and %s1, -32, %s1518; PIC-NEXT:    st1b %s0, (, %s1)519; PIC-NEXT:    lea %s12, fun@plt_lo(-24)520; PIC-NEXT:    and %s12, %s12, (32)0521; PIC-NEXT:    sic %s16522; PIC-NEXT:    lea.sl %s12, fun@plt_hi(%s16, %s12)523; PIC-NEXT:    lea %s0, 256(, %s17)524; PIC-NEXT:    bsic %s10, (, %s12)525; PIC-NEXT:    or %s11, 0, %s9526; PIC-NEXT:    ld %s17, 40(, %s11)527; PIC-NEXT:    ld %s16, 32(, %s11)528; PIC-NEXT:    ld %s15, 24(, %s11)529; PIC-NEXT:    ld %s10, 8(, %s11)530; PIC-NEXT:    ld %s9, (, %s11)531; PIC-NEXT:    b.l.t (, %s10)532  %3 = alloca [32 x i8], align 32533  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)534  %4 = sext i32 %0 to i64535  %5 = alloca i8, i64 %4, align 32536  %6 = load i8, ptr @data, align 1537  store i8 %6, ptr %5, align 32538  %7 = call ptr @fun(ptr nonnull %3, ptr nonnull %5)539  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)540  ret ptr %7541}542