253 lines · plain
1# RUN: llc -mtriple=mipsel-unknown-linux-gnu -mattr=+micromips -mcpu=mips32r2 \2# RUN: -verify-machineinstrs -run-pass micromips-reduce-size \3# RUN: %s -o - | FileCheck %s4 5--- |6 define void @f1(ptr %adr, i32 %val) { ret void }7 define void @f2(ptr %adr, i32 %val) { ret void }8 define void @f3(ptr %adr, i32 %val) { ret void }9 define void @f4(ptr %adr, i32 %val) { ret void }10 11 declare ptr @f()12 13 ; Function Attrs: nounwind14 declare void @llvm.stackprotector(ptr, ptr)15...16---17# CHECK-LABEL: name: f118# CHECK-NOT: SWP_MM19# CHECK-NOT: LWP_MM20name: f121alignment: 422exposesReturnsTwice: false23legalized: false24regBankSelected: false25selected: false26tracksRegLiveness: true27registers:28liveins:29 - { reg: '$a1', virtual-reg: '' }30frameInfo:31 isFrameAddressTaken: false32 isReturnAddressTaken: false33 hasStackMap: false34 hasPatchPoint: false35 stackSize: 2436 offsetAdjustment: 037 maxAlignment: 438 adjustsStack: true39 hasCalls: true40 stackProtector: ''41 maxCallFrameSize: 1642 hasOpaqueSPAdjustment: false43 hasVAStart: false44 hasMustTailInVarArgFunc: false45 savePoint: []46 restorePoint: []47fixedStack:48stack:49 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,50 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,51 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }52 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,53 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,54 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }55constants:56body: |57 bb.0:58 liveins: $a1, $ra, $s059 60 $sp = ADDiu $sp, -2461 CFI_INSTRUCTION def_cfa_offset 2462 SW killed $ra, $sp, 20 :: (store (s32) into %stack.0)63 SW killed $s0, $sp, 16 :: (store (s32) into %stack.1)64 CFI_INSTRUCTION offset $ra_64, -465 CFI_INSTRUCTION offset $s0_64, -866 $s0 = MOVE16_MM $a167 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v068 $v0 = MOVE16_MM killed $s069 $s0 = LW $sp, 16 :: (load (s32) from %stack.1)70 $ra = LW $sp, 20 :: (load (s32) from %stack.0)71 $sp = ADDiu $sp, 2472 PseudoReturn undef $ra, implicit killed $v073 74...75---76# CHECK-LABEL: name: f277# CHECK-NOT: SWP_MM78# CHECK-NOT: LWP_MM79name: f280alignment: 481exposesReturnsTwice: false82legalized: false83regBankSelected: false84selected: false85tracksRegLiveness: true86registers:87liveins:88 - { reg: '$a1', virtual-reg: '' }89frameInfo:90 isFrameAddressTaken: false91 isReturnAddressTaken: false92 hasStackMap: false93 hasPatchPoint: false94 stackSize: 2495 offsetAdjustment: 096 maxAlignment: 497 adjustsStack: true98 hasCalls: true99 stackProtector: ''100 maxCallFrameSize: 16101 hasOpaqueSPAdjustment: false102 hasVAStart: false103 hasMustTailInVarArgFunc: false104 savePoint: []105 restorePoint: []106fixedStack:107stack:108 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,109 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,110 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }111 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,112 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,113 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }114constants:115body: |116 bb.0:117 liveins: $a1, $ra, $s0118 119 $sp = ADDiu $sp, -24120 CFI_INSTRUCTION def_cfa_offset 24121 SW_MM killed $ra, $sp, 20 :: (store (s32) into %stack.0)122 SW_MM killed $s0, $sp, 16 :: (store (s32) into %stack.1)123 CFI_INSTRUCTION offset $ra_64, -4124 CFI_INSTRUCTION offset $s0_64, -8125 $s0 = MOVE16_MM $a1126 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0127 $v0 = MOVE16_MM killed $s0128 $s0 = LW_MM $sp, 16 :: (load (s32) from %stack.1)129 $ra = LW_MM $sp, 20 :: (load (s32) from %stack.0)130 $sp = ADDiu $sp, 24131 PseudoReturn undef $ra, implicit killed $v0132 133...134---135# CHECK-LABEL: name: f3136# CHECK-NOT: SWP_MM137# CHECK-NOT: LWP_MM138name: f3139alignment: 4140exposesReturnsTwice: false141legalized: false142regBankSelected: false143selected: false144tracksRegLiveness: true145registers:146liveins:147 - { reg: '$a1', virtual-reg: '' }148frameInfo:149 isFrameAddressTaken: false150 isReturnAddressTaken: false151 hasStackMap: false152 hasPatchPoint: false153 stackSize: 24154 offsetAdjustment: 0155 maxAlignment: 4156 adjustsStack: true157 hasCalls: true158 stackProtector: ''159 maxCallFrameSize: 16160 hasOpaqueSPAdjustment: false161 hasVAStart: false162 hasMustTailInVarArgFunc: false163 savePoint: []164 restorePoint: []165fixedStack:166stack:167 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,168 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,169 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }170 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,171 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,172 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }173constants:174body: |175 bb.0:176 liveins: $a1, $ra, $s0177 178 $sp = ADDiu $sp, -24179 CFI_INSTRUCTION def_cfa_offset 24180 SW_MM killed $ra, $sp, 20 :: (store (s32) into %stack.0)181 SW killed $s0, $sp, 16 :: (store (s32) into %stack.1)182 CFI_INSTRUCTION offset $ra_64, -4183 CFI_INSTRUCTION offset $s0_64, -8184 $s0 = MOVE16_MM $a1185 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0186 $v0 = MOVE16_MM killed $s0187 $s0 = LW_MM $sp, 16 :: (load (s32) from %stack.1)188 $ra = LW $sp, 20 :: (load (s32) from %stack.0)189 $sp = ADDiu $sp, 24190 PseudoReturn undef $ra, implicit killed $v0191 192...193---194# CHECK-LABEL: name: f4195# CHECK-NOT: SWP_MM196# CHECK-NOT: LWP_MM197name: f4198alignment: 4199exposesReturnsTwice: false200legalized: false201regBankSelected: false202selected: false203tracksRegLiveness: true204registers:205liveins:206 - { reg: '$a1', virtual-reg: '' }207frameInfo:208 isFrameAddressTaken: false209 isReturnAddressTaken: false210 hasStackMap: false211 hasPatchPoint: false212 stackSize: 24213 offsetAdjustment: 0214 maxAlignment: 4215 adjustsStack: true216 hasCalls: true217 stackProtector: ''218 maxCallFrameSize: 16219 hasOpaqueSPAdjustment: false220 hasVAStart: false221 hasMustTailInVarArgFunc: false222 savePoint: []223 restorePoint: []224fixedStack:225stack:226 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,227 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,228 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }229 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,230 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,231 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }232constants:233body: |234 bb.0:235 liveins: $a1, $ra, $s0236 237 $sp = ADDiu $sp, -24238 CFI_INSTRUCTION def_cfa_offset 24239 SW killed $ra, $sp, 20 :: (store (s32) into %stack.0)240 SW_MM killed $s0, $sp, 16 :: (store (s32) into %stack.1)241 CFI_INSTRUCTION offset $ra_64, -4242 CFI_INSTRUCTION offset $s0_64, -8243 $s0 = MOVE16_MM $a1244 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0245 $v0 = MOVE16_MM killed $s0246 $s0 = LW $sp, 16 :: (load (s32) from %stack.1)247 $ra = LW_MM $sp, 20 :: (load (s32) from %stack.0)248 $sp = ADDiu $sp, 24249 PseudoReturn undef $ra, implicit killed $v0250 251...252 253