290 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---18# CHECK-LABEL: name: f119# CHECK: SWP_MM20# CHECK: LWP_MM21name: f122alignment: 423exposesReturnsTwice: false24legalized: false25regBankSelected: false26selected: false27tracksRegLiveness: true28registers:29liveins:30 - { reg: '$a0', virtual-reg: '' }31 - { reg: '$a1', virtual-reg: '' }32frameInfo:33 isFrameAddressTaken: false34 isReturnAddressTaken: false35 hasStackMap: false36 hasPatchPoint: false37 stackSize: 3238 offsetAdjustment: 039 maxAlignment: 440 adjustsStack: true41 hasCalls: true42 stackProtector: ''43 maxCallFrameSize: 1644 hasOpaqueSPAdjustment: false45 hasVAStart: false46 hasMustTailInVarArgFunc: false47 savePoint: []48 restorePoint: []49fixedStack:50stack:51 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,52 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,53 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }54 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,55 stack-id: default, callee-saved-register: '$s1', callee-saved-restored: true,56 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }57 - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,58 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,59 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }60constants:61body: |62 bb.0:63 liveins: $a0, $a1, $ra, $s1, $s064 65 $sp = ADDiu $sp, -3266 CFI_INSTRUCTION def_cfa_offset 3267 SW killed $ra, $sp, 28 :: (store (s32) into %stack.0)68 SW killed $s1, $sp, 24 :: (store (s32) into %stack.1)69 SW killed $s0, $sp, 20 :: (store (s32) into %stack.2)70 CFI_INSTRUCTION offset $ra_64, -471 CFI_INSTRUCTION offset $s1_64, -872 CFI_INSTRUCTION offset $s0_64, -1273 $s1 = MOVE16_MM $a174 $s0 = MOVE16_MM $a075 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v076 SW16_MM killed renamable $s1, killed renamable $s0, 0 :: (store (s32) into %ir.adr)77 $v0 = LI16_MM 078 $s0 = LW $sp, 20 :: (load (s32) from %stack.2)79 $s1 = LW $sp, 24 :: (load (s32) from %stack.1)80 $ra = LW $sp, 28 :: (load (s32) from %stack.0)81 $sp = ADDiu $sp, 3282 PseudoReturn undef $ra, implicit killed $v083 84...85---86# CHECK-LABEL: name: f287# CHECK: SWP_MM88# CHECK: LWP_MM89name: f290alignment: 491exposesReturnsTwice: false92legalized: false93regBankSelected: false94selected: false95tracksRegLiveness: true96registers:97liveins:98 - { reg: '$a0', virtual-reg: '' }99 - { reg: '$a1', virtual-reg: '' }100frameInfo:101 isFrameAddressTaken: false102 isReturnAddressTaken: false103 hasStackMap: false104 hasPatchPoint: false105 stackSize: 32106 offsetAdjustment: 0107 maxAlignment: 4108 adjustsStack: true109 hasCalls: true110 stackProtector: ''111 maxCallFrameSize: 16112 hasOpaqueSPAdjustment: false113 hasVAStart: false114 hasMustTailInVarArgFunc: false115 savePoint: []116 restorePoint: []117fixedStack:118stack:119 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,120 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,121 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }122 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,123 stack-id: default, callee-saved-register: '$s1', callee-saved-restored: true,124 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }125 - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,126 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,127 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }128constants:129body: |130 bb.0:131 liveins: $a0, $a1, $ra, $s1, $s0132 133 $sp = ADDiu $sp, -32134 CFI_INSTRUCTION def_cfa_offset 32135 SW killed $ra, $sp, 28 :: (store (s32) into %stack.0)136 SW_MM killed $s1, $sp, 24 :: (store (s32) into %stack.1)137 SW_MM killed $s0, $sp, 20 :: (store (s32) into %stack.2)138 CFI_INSTRUCTION offset $ra_64, -4139 CFI_INSTRUCTION offset $s1_64, -8140 CFI_INSTRUCTION offset $s0_64, -12141 $s1 = MOVE16_MM $a1142 $s0 = MOVE16_MM $a0143 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0144 SW16_MM killed renamable $s1, killed renamable $s0, 0 :: (store (s32) into %ir.adr)145 $v0 = LI16_MM 0146 $s0 = LW_MM $sp, 20 :: (load (s32) from %stack.2)147 $s1 = LW_MM $sp, 24 :: (load (s32) from %stack.1)148 $ra = LW $sp, 28 :: (load (s32) from %stack.0)149 $sp = ADDiu $sp, 32150 PseudoReturn undef $ra, implicit killed $v0151 152...153---154# CHECK-LABEL: name: f3155# CHECK: SWP_MM156# CHECK: LWP_MM157name: f3158alignment: 4159exposesReturnsTwice: false160legalized: false161regBankSelected: false162selected: false163tracksRegLiveness: true164registers:165liveins:166 - { reg: '$a0', virtual-reg: '' }167 - { reg: '$a1', virtual-reg: '' }168frameInfo:169 isFrameAddressTaken: false170 isReturnAddressTaken: false171 hasStackMap: false172 hasPatchPoint: false173 stackSize: 32174 offsetAdjustment: 0175 maxAlignment: 4176 adjustsStack: true177 hasCalls: true178 stackProtector: ''179 maxCallFrameSize: 16180 hasOpaqueSPAdjustment: false181 hasVAStart: false182 hasMustTailInVarArgFunc: false183 savePoint: []184 restorePoint: []185fixedStack:186stack:187 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,188 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,189 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }190 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,191 stack-id: default, callee-saved-register: '$s1', callee-saved-restored: true,192 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }193 - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,194 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,195 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }196constants:197body: |198 bb.0:199 liveins: $a0, $a1, $ra, $s1, $s0200 201 $sp = ADDiu $sp, -32202 CFI_INSTRUCTION def_cfa_offset 32203 SW killed $ra, $sp, 28 :: (store (s32) into %stack.0)204 SW_MM killed $s1, $sp, 24 :: (store (s32) into %stack.1)205 SW killed $s0, $sp, 20 :: (store (s32) into %stack.2)206 CFI_INSTRUCTION offset $ra_64, -4207 CFI_INSTRUCTION offset $s1_64, -8208 CFI_INSTRUCTION offset $s0_64, -12209 $s1 = MOVE16_MM $a1210 $s0 = MOVE16_MM $a0211 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0212 SW16_MM killed renamable $s1, killed renamable $s0, 0 :: (store (s32) into %ir.adr)213 $v0 = LI16_MM 0214 $s0 = LW_MM $sp, 20 :: (load (s32) from %stack.2)215 $s1 = LW $sp, 24 :: (load (s32) from %stack.1)216 $ra = LW $sp, 28 :: (load (s32) from %stack.0)217 $sp = ADDiu $sp, 32218 PseudoReturn undef $ra, implicit killed $v0219 220...221---222# CHECK-LABEL: name: f4223# CHECK: SWP_MM224# CHECK: LWP_MM225name: f4226alignment: 4227exposesReturnsTwice: false228legalized: false229regBankSelected: false230selected: false231tracksRegLiveness: true232registers:233liveins:234 - { reg: '$a0', virtual-reg: '' }235 - { reg: '$a1', virtual-reg: '' }236frameInfo:237 isFrameAddressTaken: false238 isReturnAddressTaken: false239 hasStackMap: false240 hasPatchPoint: false241 stackSize: 32242 offsetAdjustment: 0243 maxAlignment: 4244 adjustsStack: true245 hasCalls: true246 stackProtector: ''247 maxCallFrameSize: 16248 hasOpaqueSPAdjustment: false249 hasVAStart: false250 hasMustTailInVarArgFunc: false251 savePoint: []252 restorePoint: []253fixedStack:254stack:255 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,256 stack-id: default, callee-saved-register: '$ra', callee-saved-restored: true,257 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }258 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,259 stack-id: default, callee-saved-register: '$s1', callee-saved-restored: true,260 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }261 - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,262 stack-id: default, callee-saved-register: '$s0', callee-saved-restored: true,263 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }264constants:265body: |266 bb.0:267 liveins: $a0, $a1, $ra, $s1, $s0268 269 $sp = ADDiu $sp, -32270 CFI_INSTRUCTION def_cfa_offset 32271 SW killed $ra, $sp, 28 :: (store (s32) into %stack.0)272 SW killed $s1, $sp, 24 :: (store (s32) into %stack.1)273 SW_MM killed $s0, $sp, 20 :: (store (s32) into %stack.2)274 CFI_INSTRUCTION offset $ra_64, -4275 CFI_INSTRUCTION offset $s1_64, -8276 CFI_INSTRUCTION offset $s0_64, -12277 $s1 = MOVE16_MM $a1278 $s0 = MOVE16_MM $a0279 JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0280 SW16_MM killed renamable $s1, killed renamable $s0, 0 :: (store (s32) into %ir.adr)281 $v0 = LI16_MM 0282 $s0 = LW $sp, 20 :: (load (s32) from %stack.2)283 $s1 = LW_MM $sp, 24 :: (load (s32) from %stack.1)284 $ra = LW $sp, 28 :: (load (s32) from %stack.0)285 $sp = ADDiu $sp, 32286 PseudoReturn undef $ra, implicit killed $v0287 288...289 290