190 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=prologepilog %s -o - | FileCheck %s3 4--- |5 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"6 target triple = "thumbv7m-none-eabi"7 8 define i32 @testpos() {9 entry:10 %a = alloca i32, align 411 call void @other(ptr %a)12 %b = load i32, ptr %a, align 413 ret i32 %b14 }15 define i32 @testneg4() {16 entry:17 %a = alloca i32, align 418 call void @other(ptr %a)19 %b = load i32, ptr %a, align 420 ret i32 %b21 }22 define i32 @testneg8() {23 entry:24 %a = alloca i32, align 425 call void @other(ptr %a)26 %b = load i32, ptr %a, align 427 ret i32 %b28 }29 30 declare void @other(ptr)31 32...33---34name: testpos35tracksRegLiveness: true36frameInfo:37 isFrameAddressTaken: false38 isReturnAddressTaken: false39 hasStackMap: false40 hasPatchPoint: false41 stackSize: 042 offsetAdjustment: 043 maxAlignment: 444 adjustsStack: true45 hasCalls: true46 stackProtector: ''47 maxCallFrameSize: 048 cvBytesOfCalleeSavedRegisters: 049 hasOpaqueSPAdjustment: false50 hasVAStart: false51 hasMustTailInVarArgFunc: false52 hasTailCall: false53 localFrameSize: 454 savePoint: []55 restorePoint: []56stack:57 - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4,58 stack-id: default, callee-saved-register: '', callee-saved-restored: true,59 local-offset: -4, debug-info-variable: '', debug-info-expression: '',60 debug-info-location: '' }61body: |62 bb.0.entry:63 ; CHECK-LABEL: name: testpos64 ; CHECK: liveins: $r7, $lr65 ; CHECK-NEXT: {{ $}}66 ; CHECK-NEXT: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr67 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 868 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -469 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -870 ; CHECK-NEXT: $sp = frame-setup tSUBspi $sp, 2, 14 /* CC::al */, $noreg71 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 1672 ; CHECK-NEXT: renamable $r0 = t2ADDri $sp, 4, 14 /* CC::al */, $noreg, $noreg73 ; CHECK-NEXT: tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp74 ; CHECK-NEXT: renamable $r0 = t2LDRi12 $sp, 8, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)75 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 2, 14 /* CC::al */, $noreg76 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r7, def $pc, implicit $r077 ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp78 renamable $r0 = t2ADDri %stack.0.a, 0, 14 /* CC::al */, $noreg, $noreg79 tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp80 ADJCALLSTACKUP 0, -1, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp81 renamable $r0 = t2LDRi12 %stack.0.a, 4, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)82 tBX_RET 14 /* CC::al */, $noreg, implicit $r083 84...85---86name: testneg487tracksRegLiveness: true88frameInfo:89 isFrameAddressTaken: false90 isReturnAddressTaken: false91 hasStackMap: false92 hasPatchPoint: false93 stackSize: 094 offsetAdjustment: 095 maxAlignment: 496 adjustsStack: true97 hasCalls: true98 stackProtector: ''99 maxCallFrameSize: 0100 cvBytesOfCalleeSavedRegisters: 0101 hasOpaqueSPAdjustment: false102 hasVAStart: false103 hasMustTailInVarArgFunc: false104 hasTailCall: false105 localFrameSize: 4106 savePoint: []107 restorePoint: []108stack:109 - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4,110 stack-id: default, callee-saved-register: '', callee-saved-restored: true,111 local-offset: -4, debug-info-variable: '', debug-info-expression: '',112 debug-info-location: '' }113body: |114 bb.0.entry:115 ; CHECK-LABEL: name: testneg4116 ; CHECK: liveins: $r7, $lr117 ; CHECK-NEXT: {{ $}}118 ; CHECK-NEXT: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr119 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8120 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4121 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8122 ; CHECK-NEXT: $sp = frame-setup tSUBspi $sp, 2, 14 /* CC::al */, $noreg123 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16124 ; CHECK-NEXT: renamable $r0 = t2ADDri $sp, 4, 14 /* CC::al */, $noreg, $noreg125 ; CHECK-NEXT: tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp126 ; CHECK-NEXT: renamable $r0 = t2LDRi12 $sp, 0, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)127 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 2, 14 /* CC::al */, $noreg128 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r7, def $pc, implicit $r0129 ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp130 renamable $r0 = t2ADDri %stack.0.a, 0, 14 /* CC::al */, $noreg, $noreg131 tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp132 ADJCALLSTACKUP 0, -1, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp133 renamable $r0 = t2LDRi8 %stack.0.a, -4, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)134 tBX_RET 14 /* CC::al */, $noreg, implicit $r0135 136...137---138name: testneg8139tracksRegLiveness: true140frameInfo:141 isFrameAddressTaken: false142 isReturnAddressTaken: false143 hasStackMap: false144 hasPatchPoint: false145 stackSize: 0146 offsetAdjustment: 0147 maxAlignment: 4148 adjustsStack: true149 hasCalls: true150 stackProtector: ''151 maxCallFrameSize: 0152 cvBytesOfCalleeSavedRegisters: 0153 hasOpaqueSPAdjustment: false154 hasVAStart: false155 hasMustTailInVarArgFunc: false156 hasTailCall: false157 localFrameSize: 4158 savePoint: []159 restorePoint: []160stack:161 - { id: 0, name: a, type: default, offset: 0, size: 4, alignment: 4,162 stack-id: default, callee-saved-register: '', callee-saved-restored: true,163 local-offset: -4, debug-info-variable: '', debug-info-expression: '',164 debug-info-location: '' }165body: |166 bb.0.entry:167 ; CHECK-LABEL: name: testneg8168 ; CHECK: liveins: $r7, $lr169 ; CHECK-NEXT: {{ $}}170 ; CHECK-NEXT: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr171 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8172 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $lr, -4173 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $r7, -8174 ; CHECK-NEXT: $sp = frame-setup tSUBspi $sp, 2, 14 /* CC::al */, $noreg175 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16176 ; CHECK-NEXT: renamable $r0 = t2ADDri $sp, 4, 14 /* CC::al */, $noreg, $noreg177 ; CHECK-NEXT: tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp178 ; CHECK-NEXT: renamable $r0 = t2LDRi8 $sp, -4, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)179 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 2, 14 /* CC::al */, $noreg180 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r7, def $pc, implicit $r0181 ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp182 renamable $r0 = t2ADDri %stack.0.a, 0, 14 /* CC::al */, $noreg, $noreg183 tBL 14 /* CC::al */, $noreg, @other, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp184 ADJCALLSTACKUP 0, -1, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp185 renamable $r0 = t2LDRi8 %stack.0.a, -8, 14 /* CC::al */, $noreg :: (dereferenceable load (s32) from %ir.a)186 tBX_RET 14 /* CC::al */, $noreg, implicit $r0187 188...189 190