130 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -frame-pointer=all -mtriple=m68k %s -verify-machineinstrs -o - \3; RUN: | FileCheck --check-prefix=FP %s4 5; RUN: llc -frame-pointer=none -mtriple=m68k %s -verify-machineinstrs -o - \6; RUN: | FileCheck --check-prefix=NO-FP %s7 8define i32 @fib(i32 %a, i32 %b) {9; FP-LABEL: fib:10; FP: .cfi_startproc11; FP-NEXT: ; %bb.0: ; %entry12; FP-NEXT: link.w %a6, #-3213; FP-NEXT: .cfi_def_cfa_offset -814; FP-NEXT: .cfi_offset %a6, -815; FP-NEXT: .cfi_def_cfa_register %a616; FP-NEXT: move.l (8,%a6), %d117; FP-NEXT: move.l %d1, (-32,%a6)18; FP-NEXT: move.l (12,%a6), %d019; FP-NEXT: add.l %d0, %d120; FP-NEXT: move.l %d0, (-28,%a6)21; FP-NEXT: add.l %d1, %d022; FP-NEXT: move.l %d1, (-24,%a6)23; FP-NEXT: add.l %d0, %d124; FP-NEXT: move.l %d0, (-20,%a6)25; FP-NEXT: move.l %d1, (-16,%a6)26; FP-NEXT: add.l %d1, %d027; FP-NEXT: move.l %d0, (-12,%a6)28; FP-NEXT: add.l %d0, %d129; FP-NEXT: move.l %d1, (-8,%a6)30; FP-NEXT: add.l %d1, %d031; FP-NEXT: move.l %d0, (-4,%a6)32; FP-NEXT: unlk %a633; FP-NEXT: rts34;35; NO-FP-LABEL: fib:36; NO-FP: .cfi_startproc37; NO-FP-NEXT: ; %bb.0: ; %entry38; NO-FP-NEXT: suba.l #32, %sp39; NO-FP-NEXT: .cfi_def_cfa_offset -3640; NO-FP-NEXT: move.l (36,%sp), %d141; NO-FP-NEXT: move.l %d1, (0,%sp)42; NO-FP-NEXT: move.l (40,%sp), %d043; NO-FP-NEXT: add.l %d0, %d144; NO-FP-NEXT: move.l %d0, (4,%sp)45; NO-FP-NEXT: add.l %d1, %d046; NO-FP-NEXT: move.l %d1, (8,%sp)47; NO-FP-NEXT: add.l %d0, %d148; NO-FP-NEXT: move.l %d0, (12,%sp)49; NO-FP-NEXT: move.l %d1, (16,%sp)50; NO-FP-NEXT: add.l %d1, %d051; NO-FP-NEXT: move.l %d0, (20,%sp)52; NO-FP-NEXT: add.l %d0, %d153; NO-FP-NEXT: move.l %d1, (24,%sp)54; NO-FP-NEXT: add.l %d1, %d055; NO-FP-NEXT: move.l %d0, (28,%sp)56; NO-FP-NEXT: adda.l #32, %sp57; NO-FP-NEXT: rts58entry:59 %arr = alloca [8 x i32], align 460 %s0 = getelementptr i32, ptr %arr, i32 061 %s1 = getelementptr i32, ptr %arr, i32 162 store i32 %a, ptr %s063 store i32 %b, ptr %s164 65 %ptr0 = getelementptr i32, ptr %arr, i32 066 %ptr1 = getelementptr i32, ptr %arr, i32 167 %ptr2 = getelementptr i32, ptr %arr, i32 268 %ptr3 = getelementptr i32, ptr %arr, i32 369 %ptr4 = getelementptr i32, ptr %arr, i32 470 %ptr5 = getelementptr i32, ptr %arr, i32 571 %ptr6 = getelementptr i32, ptr %arr, i32 672 %ptr7 = getelementptr i32, ptr %arr, i32 773 74 %res0 = load i32, ptr %ptr075 %res1 = load i32, ptr %ptr176 77 %res2 = add i32 %res0, %res178 store i32 %res2, ptr %ptr279 80 %res3 = add i32 %res1, %res281 store i32 %res3, ptr %ptr382 83 %res4 = add i32 %res2, %res384 store i32 %res4, ptr %ptr485 86 %res5 = add i32 %res3, %res487 store i32 %res5, ptr %ptr588 89 %res6 = add i32 %res4, %res590 store i32 %res6, ptr %ptr691 92 %res7 = add i32 %res5, %res693 store i32 %res7, ptr %ptr794 95 ret i32 %res796}97 98define i32 @test_gep() {99; FP-LABEL: test_gep:100; FP: .cfi_startproc101; FP-NEXT: ; %bb.0: ; %entry102; FP-NEXT: link.w %a6, #-256103; FP-NEXT: .cfi_def_cfa_offset -8104; FP-NEXT: .cfi_offset %a6, -8105; FP-NEXT: .cfi_def_cfa_register %a6106; FP-NEXT: move.l #21, (-4,%a6)107; FP-NEXT: move.l #12, (-256,%a6)108; FP-NEXT: moveq #0, %d0109; FP-NEXT: unlk %a6110; FP-NEXT: rts111;112; NO-FP-LABEL: test_gep:113; NO-FP: .cfi_startproc114; NO-FP-NEXT: ; %bb.0: ; %entry115; NO-FP-NEXT: suba.l #256, %sp116; NO-FP-NEXT: .cfi_def_cfa_offset -260117; NO-FP-NEXT: move.l #21, (252,%sp)118; NO-FP-NEXT: move.l #12, (0,%sp)119; NO-FP-NEXT: moveq #0, %d0120; NO-FP-NEXT: adda.l #256, %sp121; NO-FP-NEXT: rts122entry:123 %arr = alloca [8 x [8 x i32]]124 %ptr1 = getelementptr [8 x i32], ptr %arr, i64 0, i64 0125 store i32 12, ptr %ptr1126 %ptr2 = getelementptr [8 x i32], ptr %arr, i64 7, i64 7127 store i32 21, ptr %ptr2128 ret i32 0129}130