brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.7 KiB · f9308a1 Raw
379 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 does not calls other7;;; functions 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: norecurse nounwind readnone15define ptr @test_frame0(ptr nocapture readnone %0, ptr readnone returned %1) {16; CHECK-LABEL: test_frame0:17; CHECK:       # %bb.0:18; CHECK-NEXT:    or %s0, 0, %s119; CHECK-NEXT:    b.l.t (, %s10)20;21; PIC-LABEL: test_frame0:22; PIC:       # %bb.0:23; PIC-NEXT:    or %s0, 0, %s124; PIC-NEXT:    b.l.t (, %s10)25  ret ptr %126}27 28; Function Attrs: nofree nounwind29define nonnull ptr @test_frame32(ptr nocapture readonly %0) {30; CHECK-LABEL: test_frame32:31; CHECK:       # %bb.0:32; CHECK-NEXT:    adds.l %s11, -32, %s1133; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB1_234; CHECK-NEXT:  # %bb.1:35; CHECK-NEXT:    ld %s61, 24(, %s14)36; CHECK-NEXT:    or %s62, 0, %s037; CHECK-NEXT:    lea %s63, 31538; CHECK-NEXT:    shm.l %s63, (%s61)39; CHECK-NEXT:    shm.l %s8, 8(%s61)40; CHECK-NEXT:    shm.l %s11, 16(%s61)41; CHECK-NEXT:    monc42; CHECK-NEXT:    or %s0, 0, %s6243; CHECK-NEXT:  .LBB1_2:44; CHECK-NEXT:    ld1b.zx %s1, (, %s0)45; CHECK-NEXT:    lea %s0, (, %s11)46; CHECK-NEXT:    st1b %s1, (, %s11)47; CHECK-NEXT:    adds.l %s11, 32, %s1148; CHECK-NEXT:    b.l.t (, %s10)49;50; PIC-LABEL: test_frame32:51; PIC:       # %bb.0:52; PIC-NEXT:    adds.l %s11, -32, %s1153; PIC-NEXT:    brge.l.t %s11, %s8, .LBB1_254; PIC-NEXT:  # %bb.1:55; PIC-NEXT:    ld %s61, 24(, %s14)56; PIC-NEXT:    or %s62, 0, %s057; PIC-NEXT:    lea %s63, 31558; PIC-NEXT:    shm.l %s63, (%s61)59; PIC-NEXT:    shm.l %s8, 8(%s61)60; PIC-NEXT:    shm.l %s11, 16(%s61)61; PIC-NEXT:    monc62; PIC-NEXT:    or %s0, 0, %s6263; PIC-NEXT:  .LBB1_2:64; PIC-NEXT:    ld1b.zx %s1, (, %s0)65; PIC-NEXT:    lea %s0, (, %s11)66; PIC-NEXT:    st1b %s1, (, %s11)67; PIC-NEXT:    adds.l %s11, 32, %s1168; PIC-NEXT:    b.l.t (, %s10)69  %2 = alloca [32 x i8], align 170  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)71  %3 = load i8, ptr %0, align 172  store volatile i8 %3, ptr %2, align 173  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2)74  ret ptr %275}76 77; Function Attrs: argmemonly nofree nosync nounwind willreturn78declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)79 80; Function Attrs: argmemonly nofree nosync nounwind willreturn81declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)82 83; Function Attrs: nofree nounwind84define noalias nonnull ptr @test_align32(i32 signext %0, ptr nocapture readonly %1) {85; CHECK-LABEL: test_align32:86; CHECK:       # %bb.0:87; CHECK-NEXT:    st %s9, (, %s11)88; CHECK-NEXT:    st %s10, 8(, %s11)89; CHECK-NEXT:    st %s17, 40(, %s11)90; CHECK-NEXT:    or %s9, 0, %s1191; CHECK-NEXT:    lea %s11, -288(, %s11)92; CHECK-NEXT:    and %s11, %s11, (59)193; CHECK-NEXT:    or %s17, 0, %s1194; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB2_295; CHECK-NEXT:  # %bb.1:96; CHECK-NEXT:    ld %s61, 24(, %s14)97; CHECK-NEXT:    or %s62, 0, %s098; CHECK-NEXT:    lea %s63, 31599; CHECK-NEXT:    shm.l %s63, (%s61)100; CHECK-NEXT:    shm.l %s8, 8(%s61)101; CHECK-NEXT:    shm.l %s11, 16(%s61)102; CHECK-NEXT:    monc103; CHECK-NEXT:    or %s0, 0, %s62104; CHECK-NEXT:  .LBB2_2:105; CHECK-NEXT:    or %s2, 0, %s1106; CHECK-NEXT:    lea %s0, 15(, %s0)107; CHECK-NEXT:    and %s0, -16, %s0108; CHECK-NEXT:    lea %s1, __ve_grow_stack_align@lo109; CHECK-NEXT:    and %s1, %s1, (32)0110; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack_align@hi(, %s1)111; CHECK-NEXT:    or %s1, -32, (0)1112; CHECK-NEXT:    bsic %s10, (, %s12)113; CHECK-NEXT:    lea %s0, 240(, %s11)114; CHECK-NEXT:    ld1b.zx %s1, (, %s2)115; CHECK-NEXT:    lea %s0, 31(, %s0)116; CHECK-NEXT:    and %s2, -32, %s0117; CHECK-NEXT:    lea %s0, 256(, %s17)118; CHECK-NEXT:    st1b %s1, (, %s2)119; CHECK-NEXT:    or %s11, 0, %s9120; CHECK-NEXT:    ld %s17, 40(, %s11)121; CHECK-NEXT:    ld %s10, 8(, %s11)122; CHECK-NEXT:    ld %s9, (, %s11)123; CHECK-NEXT:    b.l.t (, %s10)124;125; PIC-LABEL: test_align32:126; PIC:       # %bb.0:127; PIC-NEXT:    st %s9, (, %s11)128; PIC-NEXT:    st %s10, 8(, %s11)129; PIC-NEXT:    st %s15, 24(, %s11)130; PIC-NEXT:    st %s16, 32(, %s11)131; PIC-NEXT:    st %s17, 40(, %s11)132; PIC-NEXT:    or %s9, 0, %s11133; PIC-NEXT:    lea %s11, -288(, %s11)134; PIC-NEXT:    and %s11, %s11, (59)1135; PIC-NEXT:    or %s17, 0, %s11136; PIC-NEXT:    brge.l.t %s11, %s8, .LBB2_2137; PIC-NEXT:  # %bb.1:138; PIC-NEXT:    ld %s61, 24(, %s14)139; PIC-NEXT:    or %s62, 0, %s0140; PIC-NEXT:    lea %s63, 315141; PIC-NEXT:    shm.l %s63, (%s61)142; PIC-NEXT:    shm.l %s8, 8(%s61)143; PIC-NEXT:    shm.l %s11, 16(%s61)144; PIC-NEXT:    monc145; PIC-NEXT:    or %s0, 0, %s62146; PIC-NEXT:  .LBB2_2:147; PIC-NEXT:    or %s2, 0, %s1148; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)149; PIC-NEXT:    and %s15, %s15, (32)0150; PIC-NEXT:    sic %s16151; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)152; PIC-NEXT:    lea %s0, 15(, %s0)153; PIC-NEXT:    and %s0, -16, %s0154; PIC-NEXT:    lea %s12, __ve_grow_stack_align@plt_lo(-24)155; PIC-NEXT:    and %s12, %s12, (32)0156; PIC-NEXT:    sic %s16157; PIC-NEXT:    lea.sl %s12, __ve_grow_stack_align@plt_hi(%s16, %s12)158; PIC-NEXT:    or %s1, -32, (0)1159; PIC-NEXT:    bsic %s10, (, %s12)160; PIC-NEXT:    lea %s0, 240(, %s11)161; PIC-NEXT:    ld1b.zx %s1, (, %s2)162; PIC-NEXT:    lea %s0, 31(, %s0)163; PIC-NEXT:    and %s2, -32, %s0164; PIC-NEXT:    lea %s0, 256(, %s17)165; PIC-NEXT:    st1b %s1, (, %s2)166; PIC-NEXT:    or %s11, 0, %s9167; PIC-NEXT:    ld %s17, 40(, %s11)168; PIC-NEXT:    ld %s16, 32(, %s11)169; PIC-NEXT:    ld %s15, 24(, %s11)170; PIC-NEXT:    ld %s10, 8(, %s11)171; PIC-NEXT:    ld %s9, (, %s11)172; PIC-NEXT:    b.l.t (, %s10)173  %3 = alloca [32 x i8], align 32174  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)175  %4 = sext i32 %0 to i64176  %5 = alloca i8, i64 %4, align 32177  %6 = load i8, ptr %1, align 1178  store volatile i8 %6, ptr %5, align 32179  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)180  ret ptr %3181}182 183; Function Attrs: nofree norecurse nounwind184define ptr @test_frame0_var(ptr returned %0, ptr nocapture readnone %1) {185; CHECK-LABEL: test_frame0_var:186; CHECK:       # %bb.0:187; CHECK-NEXT:    lea %s1, data@lo188; CHECK-NEXT:    and %s1, %s1, (32)0189; CHECK-NEXT:    lea.sl %s1, data@hi(, %s1)190; CHECK-NEXT:    ld1b.zx %s1, (, %s1)191; CHECK-NEXT:    st1b %s1, (, %s0)192; CHECK-NEXT:    b.l.t (, %s10)193;194; PIC-LABEL: test_frame0_var:195; PIC:       # %bb.0:196; PIC-NEXT:    st %s15, 24(, %s11)197; PIC-NEXT:    st %s16, 32(, %s11)198; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)199; PIC-NEXT:    and %s15, %s15, (32)0200; PIC-NEXT:    sic %s16201; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)202; PIC-NEXT:    lea %s1, data@got_lo203; PIC-NEXT:    and %s1, %s1, (32)0204; PIC-NEXT:    lea.sl %s1, data@got_hi(, %s1)205; PIC-NEXT:    ld %s1, (%s1, %s15)206; PIC-NEXT:    ld1b.zx %s1, (, %s1)207; PIC-NEXT:    st1b %s1, (, %s0)208; PIC-NEXT:    ld %s16, 32(, %s11)209; PIC-NEXT:    ld %s15, 24(, %s11)210; PIC-NEXT:    b.l.t (, %s10)211  %3 = load i8, ptr @data, align 1212  store i8 %3, ptr %0, align 1213  ret ptr %0214}215 216; Function Attrs: nofree nounwind217define nonnull ptr @test_frame32_var(ptr nocapture readnone %0) {218; CHECK-LABEL: test_frame32_var:219; CHECK:       # %bb.0:220; CHECK-NEXT:    adds.l %s11, -32, %s11221; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB4_2222; CHECK-NEXT:  # %bb.1:223; CHECK-NEXT:    ld %s61, 24(, %s14)224; CHECK-NEXT:    or %s62, 0, %s0225; CHECK-NEXT:    lea %s63, 315226; CHECK-NEXT:    shm.l %s63, (%s61)227; CHECK-NEXT:    shm.l %s8, 8(%s61)228; CHECK-NEXT:    shm.l %s11, 16(%s61)229; CHECK-NEXT:    monc230; CHECK-NEXT:    or %s0, 0, %s62231; CHECK-NEXT:  .LBB4_2:232; CHECK-NEXT:    lea %s0, data@lo233; CHECK-NEXT:    and %s0, %s0, (32)0234; CHECK-NEXT:    lea.sl %s0, data@hi(, %s0)235; CHECK-NEXT:    ld1b.zx %s1, (, %s0)236; CHECK-NEXT:    lea %s0, (, %s11)237; CHECK-NEXT:    st1b %s1, (, %s11)238; CHECK-NEXT:    adds.l %s11, 32, %s11239; CHECK-NEXT:    b.l.t (, %s10)240;241; PIC-LABEL: test_frame32_var:242; PIC:       # %bb.0:243; PIC-NEXT:    st %s15, 24(, %s11)244; PIC-NEXT:    st %s16, 32(, %s11)245; PIC-NEXT:    adds.l %s11, -32, %s11246; PIC-NEXT:    brge.l.t %s11, %s8, .LBB4_2247; PIC-NEXT:  # %bb.1:248; PIC-NEXT:    ld %s61, 24(, %s14)249; PIC-NEXT:    or %s62, 0, %s0250; PIC-NEXT:    lea %s63, 315251; PIC-NEXT:    shm.l %s63, (%s61)252; PIC-NEXT:    shm.l %s8, 8(%s61)253; PIC-NEXT:    shm.l %s11, 16(%s61)254; PIC-NEXT:    monc255; PIC-NEXT:    or %s0, 0, %s62256; PIC-NEXT:  .LBB4_2:257; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)258; PIC-NEXT:    and %s15, %s15, (32)0259; PIC-NEXT:    sic %s16260; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)261; PIC-NEXT:    lea %s0, data@got_lo262; PIC-NEXT:    and %s0, %s0, (32)0263; PIC-NEXT:    lea.sl %s0, data@got_hi(, %s0)264; PIC-NEXT:    ld %s0, (%s0, %s15)265; PIC-NEXT:    ld1b.zx %s1, (, %s0)266; PIC-NEXT:    lea %s0, (, %s11)267; PIC-NEXT:    st1b %s1, (, %s11)268; PIC-NEXT:    adds.l %s11, 32, %s11269; PIC-NEXT:    ld %s16, 32(, %s11)270; PIC-NEXT:    ld %s15, 24(, %s11)271; PIC-NEXT:    b.l.t (, %s10)272  %2 = alloca [32 x i8], align 1273  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)274  %3 = load i8, ptr @data, align 1275  store volatile i8 %3, ptr %2, align 1276  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2)277  ret ptr %2278}279 280; Function Attrs: nofree nounwind281define noalias nonnull ptr @test_align32_var(i32 signext %0, ptr nocapture readonly %1) {282; CHECK-LABEL: test_align32_var:283; CHECK:       # %bb.0:284; CHECK-NEXT:    st %s9, (, %s11)285; CHECK-NEXT:    st %s10, 8(, %s11)286; CHECK-NEXT:    st %s17, 40(, %s11)287; CHECK-NEXT:    or %s9, 0, %s11288; CHECK-NEXT:    lea %s11, -288(, %s11)289; CHECK-NEXT:    and %s11, %s11, (59)1290; CHECK-NEXT:    or %s17, 0, %s11291; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB5_2292; CHECK-NEXT:  # %bb.1:293; CHECK-NEXT:    ld %s61, 24(, %s14)294; CHECK-NEXT:    or %s62, 0, %s0295; CHECK-NEXT:    lea %s63, 315296; CHECK-NEXT:    shm.l %s63, (%s61)297; CHECK-NEXT:    shm.l %s8, 8(%s61)298; CHECK-NEXT:    shm.l %s11, 16(%s61)299; CHECK-NEXT:    monc300; CHECK-NEXT:    or %s0, 0, %s62301; CHECK-NEXT:  .LBB5_2:302; CHECK-NEXT:    or %s2, 0, %s1303; CHECK-NEXT:    lea %s0, 15(, %s0)304; CHECK-NEXT:    and %s0, -16, %s0305; CHECK-NEXT:    lea %s1, __ve_grow_stack_align@lo306; CHECK-NEXT:    and %s1, %s1, (32)0307; CHECK-NEXT:    lea.sl %s12, __ve_grow_stack_align@hi(, %s1)308; CHECK-NEXT:    or %s1, -32, (0)1309; CHECK-NEXT:    bsic %s10, (, %s12)310; CHECK-NEXT:    lea %s0, 240(, %s11)311; CHECK-NEXT:    ld1b.zx %s1, (, %s2)312; CHECK-NEXT:    lea %s0, 31(, %s0)313; CHECK-NEXT:    and %s2, -32, %s0314; CHECK-NEXT:    lea %s0, 256(, %s17)315; CHECK-NEXT:    st1b %s1, (, %s2)316; CHECK-NEXT:    or %s11, 0, %s9317; CHECK-NEXT:    ld %s17, 40(, %s11)318; CHECK-NEXT:    ld %s10, 8(, %s11)319; CHECK-NEXT:    ld %s9, (, %s11)320; CHECK-NEXT:    b.l.t (, %s10)321;322; PIC-LABEL: test_align32_var:323; PIC:       # %bb.0:324; PIC-NEXT:    st %s9, (, %s11)325; PIC-NEXT:    st %s10, 8(, %s11)326; PIC-NEXT:    st %s15, 24(, %s11)327; PIC-NEXT:    st %s16, 32(, %s11)328; PIC-NEXT:    st %s17, 40(, %s11)329; PIC-NEXT:    or %s9, 0, %s11330; PIC-NEXT:    lea %s11, -288(, %s11)331; PIC-NEXT:    and %s11, %s11, (59)1332; PIC-NEXT:    or %s17, 0, %s11333; PIC-NEXT:    brge.l.t %s11, %s8, .LBB5_2334; PIC-NEXT:  # %bb.1:335; PIC-NEXT:    ld %s61, 24(, %s14)336; PIC-NEXT:    or %s62, 0, %s0337; PIC-NEXT:    lea %s63, 315338; PIC-NEXT:    shm.l %s63, (%s61)339; PIC-NEXT:    shm.l %s8, 8(%s61)340; PIC-NEXT:    shm.l %s11, 16(%s61)341; PIC-NEXT:    monc342; PIC-NEXT:    or %s0, 0, %s62343; PIC-NEXT:  .LBB5_2:344; PIC-NEXT:    or %s2, 0, %s1345; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)346; PIC-NEXT:    and %s15, %s15, (32)0347; PIC-NEXT:    sic %s16348; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)349; PIC-NEXT:    lea %s0, 15(, %s0)350; PIC-NEXT:    and %s0, -16, %s0351; PIC-NEXT:    lea %s12, __ve_grow_stack_align@plt_lo(-24)352; PIC-NEXT:    and %s12, %s12, (32)0353; PIC-NEXT:    sic %s16354; PIC-NEXT:    lea.sl %s12, __ve_grow_stack_align@plt_hi(%s16, %s12)355; PIC-NEXT:    or %s1, -32, (0)1356; PIC-NEXT:    bsic %s10, (, %s12)357; PIC-NEXT:    lea %s0, 240(, %s11)358; PIC-NEXT:    ld1b.zx %s1, (, %s2)359; PIC-NEXT:    lea %s0, 31(, %s0)360; PIC-NEXT:    and %s2, -32, %s0361; PIC-NEXT:    lea %s0, 256(, %s17)362; PIC-NEXT:    st1b %s1, (, %s2)363; PIC-NEXT:    or %s11, 0, %s9364; PIC-NEXT:    ld %s17, 40(, %s11)365; PIC-NEXT:    ld %s16, 32(, %s11)366; PIC-NEXT:    ld %s15, 24(, %s11)367; PIC-NEXT:    ld %s10, 8(, %s11)368; PIC-NEXT:    ld %s9, (, %s11)369; PIC-NEXT:    b.l.t (, %s10)370  %3 = alloca [32 x i8], align 32371  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3)372  %4 = sext i32 %0 to i64373  %5 = alloca i8, i64 %4, align 32374  %6 = load i8, ptr %1, align 1375  store volatile i8 %6, ptr %5, align 32376  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3)377  ret ptr %3378}379