174522126SIan Douglas Scott; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 274522126SIan Douglas Scott; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s 374522126SIan Douglas Scott 4*3006dddfSJanis Heimsdefine { i32, i32, i32, i32 } @test0() { 5*3006dddfSJanis Heims; CHECK-LABEL: test0: 674522126SIan Douglas Scott; CHECK: .cfi_startproc 774522126SIan Douglas Scott; CHECK-NEXT: ; %bb.0: ; %start 874522126SIan Douglas Scott; CHECK-NEXT: move.l (4,%sp), %a0 974522126SIan Douglas Scott; CHECK-NEXT: move.l #23, (12,%a0) 1074522126SIan Douglas Scott; CHECK-NEXT: move.l #19, (8,%a0) 1174522126SIan Douglas Scott; CHECK-NEXT: move.l #17, (4,%a0) 1274522126SIan Douglas Scott; CHECK-NEXT: move.l #13, (%a0) 1374522126SIan Douglas Scott; CHECK-NEXT: move.l %a0, %d0 1474522126SIan Douglas Scott; CHECK-NEXT: move.l (%sp), %a1 1574522126SIan Douglas Scott; CHECK-NEXT: adda.l #4, %sp 1674522126SIan Douglas Scott; CHECK-NEXT: move.l %a1, (%sp) 1774522126SIan Douglas Scott; CHECK-NEXT: rts 1874522126SIan Douglas Scottstart: 1974522126SIan Douglas Scott ret { i32, i32, i32, i32 } { i32 13, i32 17, i32 19, i32 23 } 2074522126SIan Douglas Scott} 21*3006dddfSJanis Heims 22*3006dddfSJanis Heimsdefine void @call_test0() { 23*3006dddfSJanis Heims; CHECK-LABEL: call_test0: 24*3006dddfSJanis Heims; CHECK: .cfi_startproc 25*3006dddfSJanis Heims; CHECK-NEXT: ; %bb.0: ; %start 26*3006dddfSJanis Heims; CHECK-NEXT: suba.l #20, %sp 27*3006dddfSJanis Heims; CHECK-NEXT: .cfi_def_cfa_offset -24 28*3006dddfSJanis Heims; CHECK-NEXT: lea (4,%sp), %a0 29*3006dddfSJanis Heims; CHECK-NEXT: move.l %a0, (%sp) 30*3006dddfSJanis Heims; CHECK-NEXT: jsr test0 31*3006dddfSJanis Heims; CHECK-NEXT: adda.l #16, %sp 32*3006dddfSJanis Heims; CHECK-NEXT: rts 33*3006dddfSJanis Heimsstart: 34*3006dddfSJanis Heims %val = call { i32, i32, i32, i32 } @test0() 35*3006dddfSJanis Heims ret void 36*3006dddfSJanis Heims} 37*3006dddfSJanis Heims 38*3006dddfSJanis Heimsdefine void @test1(ptr sret({ i32, i32, i32, i32 }) %ret_val) { 39*3006dddfSJanis Heims; CHECK-LABEL: test1: 40*3006dddfSJanis Heims; CHECK: .cfi_startproc 41*3006dddfSJanis Heims; CHECK-NEXT: ; %bb.0: ; %start 42*3006dddfSJanis Heims; CHECK-NEXT: move.l (4,%sp), %d0 43*3006dddfSJanis Heims; CHECK-NEXT: move.l (%sp), %a1 44*3006dddfSJanis Heims; CHECK-NEXT: adda.l #4, %sp 45*3006dddfSJanis Heims; CHECK-NEXT: move.l %a1, (%sp) 46*3006dddfSJanis Heims; CHECK-NEXT: rts 47*3006dddfSJanis Heimsstart: 48*3006dddfSJanis Heims ret void 49*3006dddfSJanis Heims} 50*3006dddfSJanis Heims 51*3006dddfSJanis Heimsdefine void @call_test1() { 52*3006dddfSJanis Heims; CHECK-LABEL: call_test1: 53*3006dddfSJanis Heims; CHECK: .cfi_startproc 54*3006dddfSJanis Heims; CHECK-NEXT: ; %bb.0: ; %start 55*3006dddfSJanis Heims; CHECK-NEXT: suba.l #20, %sp 56*3006dddfSJanis Heims; CHECK-NEXT: .cfi_def_cfa_offset -24 57*3006dddfSJanis Heims; CHECK-NEXT: lea (4,%sp), %a0 58*3006dddfSJanis Heims; CHECK-NEXT: move.l %a0, (%sp) 59*3006dddfSJanis Heims; CHECK-NEXT: jsr test1 60*3006dddfSJanis Heims; CHECK-NEXT: adda.l #16, %sp 61*3006dddfSJanis Heims; CHECK-NEXT: rts 62*3006dddfSJanis Heimsstart: 63*3006dddfSJanis Heims %ret_val = alloca { i32, i32, i32, i32 } 64*3006dddfSJanis Heims call void @test1(ptr %ret_val) 65*3006dddfSJanis Heims ret void 66*3006dddfSJanis Heims} 67*3006dddfSJanis Heims 68*3006dddfSJanis Heimsdefine i32 @test2() { 69*3006dddfSJanis Heims; CHECK-LABEL: test2: 70*3006dddfSJanis Heims; CHECK: .cfi_startproc 71*3006dddfSJanis Heims; CHECK-NEXT: ; %bb.0: ; %start 72*3006dddfSJanis Heims; CHECK-NEXT: moveq #13, %d0 73*3006dddfSJanis Heims; CHECK-NEXT: rts 74*3006dddfSJanis Heimsstart: 75*3006dddfSJanis Heims ret i32 13 76*3006dddfSJanis Heims} 77*3006dddfSJanis Heims 78*3006dddfSJanis Heimsdefine void @call_test2() { 79*3006dddfSJanis Heims; CHECK-LABEL: call_test2: 80*3006dddfSJanis Heims; CHECK: .cfi_startproc 81*3006dddfSJanis Heims; CHECK-NEXT: ; %bb.0: ; %start 82*3006dddfSJanis Heims; CHECK-NEXT: suba.l #4, %sp 83*3006dddfSJanis Heims; CHECK-NEXT: .cfi_def_cfa_offset -8 84*3006dddfSJanis Heims; CHECK-NEXT: jsr test2 85*3006dddfSJanis Heims; CHECK-NEXT: adda.l #4, %sp 86*3006dddfSJanis Heims; CHECK-NEXT: rts 87*3006dddfSJanis Heimsstart: 88*3006dddfSJanis Heims %0 = call i32 @test2() 89*3006dddfSJanis Heims ret void 90*3006dddfSJanis Heims} 91