blob: a38b08265f9c26b66cad4e04e6d4c070255e2974 [file] [log] [blame]
# RUN: llc -mtriple=mipsel-unknown-linux-gnu -mattr=+micromips -mcpu=mips32r2 \
# RUN: -verify-machineinstrs -run-pass micromips-reduce-size \
# RUN: %s -o - | FileCheck %s
--- |
define void @f1(i32* %adr, i32 %val) { ret void }
define void @f2(i32* %adr, i32 %val) { ret void }
define void @f3(i32* %adr, i32 %val) { ret void }
define void @f4(i32* %adr, i32 %val) { ret void }
declare i32* @f()
; Function Attrs: nounwind
declare void @llvm.stackprotector(i8*, i8**)
...
---
# CHECK-LABEL: name: f1
# CHECK-NOT: SWP_MM
# CHECK-NOT: LWP_MM
name: f1
alignment: 2
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
liveins:
- { reg: '$a1', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 24
offsetAdjustment: 0
maxAlignment: 4
adjustsStack: true
hasCalls: true
stackProtector: ''
maxCallFrameSize: 16
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
savePoint: ''
restorePoint: ''
fixedStack:
stack:
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$ra', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
- { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$s0', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
constants:
body: |
bb.0:
liveins: $a1, $ra, $s0
$sp = ADDiu $sp, -24
CFI_INSTRUCTION def_cfa_offset 24
SW killed $ra, $sp, 20 :: (store 4 into %stack.0)
SW killed $s0, $sp, 16 :: (store 4 into %stack.1)
CFI_INSTRUCTION offset $ra_64, -4
CFI_INSTRUCTION offset $s0_64, -8
$s0 = MOVE16_MM $a1
JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0
$v0 = MOVE16_MM killed $s0
$s0 = LW $sp, 16 :: (load 4 from %stack.1)
$ra = LW $sp, 20 :: (load 4 from %stack.0)
$sp = ADDiu $sp, 24
PseudoReturn undef $ra, implicit killed $v0
...
---
# CHECK-LABEL: name: f2
# CHECK-NOT: SWP_MM
# CHECK-NOT: LWP_MM
name: f2
alignment: 2
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
liveins:
- { reg: '$a1', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 24
offsetAdjustment: 0
maxAlignment: 4
adjustsStack: true
hasCalls: true
stackProtector: ''
maxCallFrameSize: 16
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
savePoint: ''
restorePoint: ''
fixedStack:
stack:
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$ra', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
- { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$s0', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
constants:
body: |
bb.0:
liveins: $a1, $ra, $s0
$sp = ADDiu $sp, -24
CFI_INSTRUCTION def_cfa_offset 24
SW_MM killed $ra, $sp, 20 :: (store 4 into %stack.0)
SW_MM killed $s0, $sp, 16 :: (store 4 into %stack.1)
CFI_INSTRUCTION offset $ra_64, -4
CFI_INSTRUCTION offset $s0_64, -8
$s0 = MOVE16_MM $a1
JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0
$v0 = MOVE16_MM killed $s0
$s0 = LW_MM $sp, 16 :: (load 4 from %stack.1)
$ra = LW_MM $sp, 20 :: (load 4 from %stack.0)
$sp = ADDiu $sp, 24
PseudoReturn undef $ra, implicit killed $v0
...
---
# CHECK-LABEL: name: f3
# CHECK-NOT: SWP_MM
# CHECK-NOT: LWP_MM
name: f3
alignment: 2
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
liveins:
- { reg: '$a1', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 24
offsetAdjustment: 0
maxAlignment: 4
adjustsStack: true
hasCalls: true
stackProtector: ''
maxCallFrameSize: 16
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
savePoint: ''
restorePoint: ''
fixedStack:
stack:
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$ra', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
- { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$s0', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
constants:
body: |
bb.0:
liveins: $a1, $ra, $s0
$sp = ADDiu $sp, -24
CFI_INSTRUCTION def_cfa_offset 24
SW_MM killed $ra, $sp, 20 :: (store 4 into %stack.0)
SW killed $s0, $sp, 16 :: (store 4 into %stack.1)
CFI_INSTRUCTION offset $ra_64, -4
CFI_INSTRUCTION offset $s0_64, -8
$s0 = MOVE16_MM $a1
JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0
$v0 = MOVE16_MM killed $s0
$s0 = LW_MM $sp, 16 :: (load 4 from %stack.1)
$ra = LW $sp, 20 :: (load 4 from %stack.0)
$sp = ADDiu $sp, 24
PseudoReturn undef $ra, implicit killed $v0
...
---
# CHECK-LABEL: name: f4
# CHECK-NOT: SWP_MM
# CHECK-NOT: LWP_MM
name: f4
alignment: 2
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
liveins:
- { reg: '$a1', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 24
offsetAdjustment: 0
maxAlignment: 4
adjustsStack: true
hasCalls: true
stackProtector: ''
maxCallFrameSize: 16
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
savePoint: ''
restorePoint: ''
fixedStack:
stack:
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$ra', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
- { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
stack-id: 0, callee-saved-register: '$s0', callee-saved-restored: true,
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
constants:
body: |
bb.0:
liveins: $a1, $ra, $s0
$sp = ADDiu $sp, -24
CFI_INSTRUCTION def_cfa_offset 24
SW killed $ra, $sp, 20 :: (store 4 into %stack.0)
SW_MM killed $s0, $sp, 16 :: (store 4 into %stack.1)
CFI_INSTRUCTION offset $ra_64, -4
CFI_INSTRUCTION offset $s0_64, -8
$s0 = MOVE16_MM $a1
JAL @f, csr_o32, implicit-def dead $ra, implicit-def $sp, implicit-def dead $v0
$v0 = MOVE16_MM killed $s0
$s0 = LW $sp, 16 :: (load 4 from %stack.1)
$ra = LW_MM $sp, 20 :: (load 4 from %stack.0)
$sp = ADDiu $sp, 24
PseudoReturn undef $ra, implicit killed $v0
...