In review of bbde6b, I had originally proposed that we support the legacy text format. As review evolved, it bacame clear this had been a bad idea (too much complexity), but in order to let that patch finally move forward, I approved the change with the variant. This change undoes the variant, and updates all the tests to just use the array form.
614 lines
24 KiB
YAML
614 lines
24 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=thumbv7 -run-pass=if-converter %s -o - | FileCheck %s --check-prefix=CHECK-V7
|
|
# RUN: llc -mtriple=thumbv8 -run-pass=if-converter %s -o - | FileCheck %s --check-prefix=CHECK-V8
|
|
--- |
|
|
define void @test_nosize() {
|
|
%c0 = icmp sgt i64 0, 0
|
|
br i1 %c0, label %b1, label %b6
|
|
|
|
b1: ; preds = %0
|
|
br i1 undef, label %b3, label %b2
|
|
|
|
b2: ; preds = %b1
|
|
%v0 = tail call i32 @extfunc()
|
|
br label %b5
|
|
|
|
b3: ; preds = %b1
|
|
%v1 = load i32, ptr undef, align 4
|
|
%v2 = and i32 %v1, 256
|
|
br label %b5
|
|
|
|
b5: ; preds = %b3, %b2
|
|
%v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
|
|
%c1 = icmp eq i32 %v3, 0
|
|
br i1 %c1, label %b8, label %b7
|
|
|
|
b6: ; preds = %0
|
|
%1 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b7: ; preds = %b5
|
|
%2 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b8: ; preds = %b5
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: optsize
|
|
define void @test_optsize() #0 {
|
|
%c0 = icmp sgt i64 0, 0
|
|
br i1 %c0, label %b1, label %b6
|
|
|
|
b1: ; preds = %0
|
|
br i1 undef, label %b3, label %b2
|
|
|
|
b2: ; preds = %b1
|
|
%v0 = tail call i32 @extfunc()
|
|
br label %b5
|
|
|
|
b3: ; preds = %b1
|
|
%v1 = load i32, ptr undef, align 4
|
|
%v2 = and i32 %v1, 256
|
|
br label %b5
|
|
|
|
b5: ; preds = %b3, %b2
|
|
%v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
|
|
%c1 = icmp eq i32 %v3, 0
|
|
br i1 %c1, label %b8, label %b7
|
|
|
|
b6: ; preds = %0
|
|
%1 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b7: ; preds = %b5
|
|
%2 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b8: ; preds = %b5
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: minsize
|
|
define void @test_minsize() #1 {
|
|
%c0 = icmp sgt i64 0, 0
|
|
br i1 %c0, label %b1, label %b6
|
|
|
|
b1: ; preds = %0
|
|
br i1 undef, label %b3, label %b2
|
|
|
|
b2: ; preds = %b1
|
|
%v0 = tail call i32 @extfunc()
|
|
br label %b5
|
|
|
|
b3: ; preds = %b1
|
|
%v1 = load i32, ptr undef, align 4
|
|
%v2 = and i32 %v1, 256
|
|
br label %b5
|
|
|
|
b5: ; preds = %b3, %b2
|
|
%v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
|
|
%c1 = icmp eq i32 %v3, 0
|
|
br i1 %c1, label %b8, label %b7
|
|
|
|
b6: ; preds = %0
|
|
%1 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b7: ; preds = %b5
|
|
%2 = tail call i32 @extfunc()
|
|
ret void
|
|
|
|
b8: ; preds = %b5
|
|
ret void
|
|
}
|
|
|
|
declare i32 @extfunc()
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @llvm.stackprotector(ptr, ptr) #2
|
|
|
|
attributes #0 = { optsize }
|
|
attributes #1 = { minsize }
|
|
attributes #2 = { nounwind }
|
|
|
|
...
|
|
---
|
|
name: test_nosize
|
|
alignment: 2
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
registers: []
|
|
liveins: []
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 8
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
maxCallFrameSize: 0
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack: []
|
|
stack:
|
|
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$lr', 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: default, callee-saved-register: '$r7', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
callSites: []
|
|
constants: []
|
|
machineFunctionInfo: {}
|
|
body: |
|
|
; CHECK-V7-LABEL: name: test_nosize
|
|
; CHECK-V7: bb.0 (%ir-block.0):
|
|
; CHECK-V7: successors: %bb.1(0x80000000)
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: tTAILJMPdND @extfunc, 1 /* CC::ne */, killed $cpsr, implicit $sp, implicit $sp
|
|
; CHECK-V7: bb.1.b1:
|
|
; CHECK-V7: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V7: liveins: $r7, $lr
|
|
; CHECK-V7: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V7: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.2.b2:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V7: bb.3.b3:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: bb.4.b5:
|
|
; CHECK-V7: successors: %bb.5(0x50000000)
|
|
; CHECK-V7: liveins: $r0
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V7: tBX_RET 0 /* CC::eq */, killed $cpsr
|
|
; CHECK-V7: bb.5.b7:
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
; CHECK-V8-LABEL: name: test_nosize
|
|
; CHECK-V8: bb.0 (%ir-block.0):
|
|
; CHECK-V8: successors: %bb.1(0x80000000)
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: tTAILJMPdND @extfunc, 1 /* CC::ne */, killed $cpsr, implicit $sp, implicit $sp
|
|
; CHECK-V8: bb.1.b1:
|
|
; CHECK-V8: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V8: liveins: $r7, $lr
|
|
; CHECK-V8: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V8: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.2.b2:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V8: bb.3.b3:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: bb.4.b5:
|
|
; CHECK-V8: successors: %bb.5(0x50000000)
|
|
; CHECK-V8: liveins: $r0
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V8: tBX_RET 0 /* CC::eq */, killed $cpsr
|
|
; CHECK-V8: bb.5.b7:
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
bb.0 (%ir-block.0):
|
|
successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
liveins: $lr, $r7
|
|
|
|
renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.1.b1:
|
|
successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
liveins: $r7, $lr
|
|
|
|
$sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
|
|
frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.3, 1, killed $cpsr
|
|
|
|
bb.2.b2:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
t2B %bb.4, 14, $noreg
|
|
|
|
bb.3.b3:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
|
|
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
|
|
|
|
bb.4.b5:
|
|
successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
liveins: $r0
|
|
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
$sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.5.b8:
|
|
liveins: $lr, $r7
|
|
|
|
tBX_RET 14, $noreg
|
|
|
|
bb.6.b7:
|
|
liveins: $lr, $r7
|
|
|
|
tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp
|
|
|
|
...
|
|
---
|
|
name: test_optsize
|
|
alignment: 2
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
registers: []
|
|
liveins: []
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 8
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
maxCallFrameSize: 0
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack: []
|
|
stack:
|
|
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$lr', 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: default, callee-saved-register: '$r7', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
callSites: []
|
|
constants: []
|
|
machineFunctionInfo: {}
|
|
body: |
|
|
; CHECK-V7-LABEL: name: test_optsize
|
|
; CHECK-V7: bb.0 (%ir-block.0):
|
|
; CHECK-V7: successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.1.b1:
|
|
; CHECK-V7: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V7: liveins: $r7, $lr
|
|
; CHECK-V7: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V7: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.2.b2:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V7: bb.3.b3:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: bb.4.b5:
|
|
; CHECK-V7: successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
; CHECK-V7: liveins: $r0
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V7: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.5.b8:
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: tBX_RET 14 /* CC::al */, $noreg
|
|
; CHECK-V7: bb.6.b7:
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
; CHECK-V8-LABEL: name: test_optsize
|
|
; CHECK-V8: bb.0 (%ir-block.0):
|
|
; CHECK-V8: successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.1.b1:
|
|
; CHECK-V8: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V8: liveins: $r7, $lr
|
|
; CHECK-V8: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V8: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.2.b2:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V8: bb.3.b3:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: bb.4.b5:
|
|
; CHECK-V8: successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
; CHECK-V8: liveins: $r0
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V8: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.5.b8:
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: tBX_RET 14 /* CC::al */, $noreg
|
|
; CHECK-V8: bb.6.b7:
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
bb.0 (%ir-block.0):
|
|
successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
liveins: $lr, $r7
|
|
|
|
renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.1.b1:
|
|
successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
liveins: $r7, $lr
|
|
|
|
$sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
|
|
frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.3, 1, killed $cpsr
|
|
|
|
bb.2.b2:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
t2B %bb.4, 14, $noreg
|
|
|
|
bb.3.b3:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
|
|
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
|
|
|
|
bb.4.b5:
|
|
successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
liveins: $r0
|
|
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
$sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.5.b8:
|
|
liveins: $lr, $r7
|
|
|
|
tBX_RET 14, $noreg
|
|
|
|
bb.6.b7:
|
|
liveins: $lr, $r7
|
|
|
|
tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp
|
|
|
|
...
|
|
---
|
|
name: test_minsize
|
|
alignment: 2
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
registers: []
|
|
liveins: []
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 8
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
maxCallFrameSize: 0
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack: []
|
|
stack:
|
|
- { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$lr', 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: default, callee-saved-register: '$r7', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
callSites: []
|
|
constants: []
|
|
machineFunctionInfo: {}
|
|
body: |
|
|
; CHECK-V7-LABEL: name: test_minsize
|
|
; CHECK-V7: bb.0 (%ir-block.0):
|
|
; CHECK-V7: successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.1.b1:
|
|
; CHECK-V7: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V7: liveins: $r7, $lr
|
|
; CHECK-V7: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V7: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V7: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.2.b2:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V7: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V7: bb.3.b3:
|
|
; CHECK-V7: successors: %bb.4(0x80000000)
|
|
; CHECK-V7: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V7: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V7: bb.4.b5:
|
|
; CHECK-V7: successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
; CHECK-V7: liveins: $r0
|
|
; CHECK-V7: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V7: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V7: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V7: bb.5.b8:
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: tBX_RET 14 /* CC::al */, $noreg
|
|
; CHECK-V7: bb.6.b7:
|
|
; CHECK-V7: liveins: $lr, $r7
|
|
; CHECK-V7: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
; CHECK-V8-LABEL: name: test_minsize
|
|
; CHECK-V8: bb.0 (%ir-block.0):
|
|
; CHECK-V8: successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.1.b1:
|
|
; CHECK-V8: successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
; CHECK-V8: liveins: $r7, $lr
|
|
; CHECK-V8: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
; CHECK-V8: frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
; CHECK-V8: renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.2.b2:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
; CHECK-V8: t2B %bb.4, 14 /* CC::al */, $noreg
|
|
; CHECK-V8: bb.3.b3:
|
|
; CHECK-V8: successors: %bb.4(0x80000000)
|
|
; CHECK-V8: renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
|
|
; CHECK-V8: renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
|
|
; CHECK-V8: bb.4.b5:
|
|
; CHECK-V8: successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
; CHECK-V8: liveins: $r0
|
|
; CHECK-V8: t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
|
|
; CHECK-V8: $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
|
|
; CHECK-V8: t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
|
|
; CHECK-V8: bb.5.b8:
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: tBX_RET 14 /* CC::al */, $noreg
|
|
; CHECK-V8: bb.6.b7:
|
|
; CHECK-V8: liveins: $lr, $r7
|
|
; CHECK-V8: tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
|
|
bb.0 (%ir-block.0):
|
|
successors: %bb.1(0x50000000), %bb.6(0x30000000)
|
|
liveins: $lr, $r7
|
|
|
|
renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.1.b1:
|
|
successors: %bb.3(0x40000000), %bb.2(0x40000000)
|
|
liveins: $r7, $lr
|
|
|
|
$sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
|
|
frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
t2Bcc %bb.3, 1, killed $cpsr
|
|
|
|
bb.2.b2:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
|
|
t2B %bb.4, 14, $noreg
|
|
|
|
bb.3.b3:
|
|
successors: %bb.4(0x80000000)
|
|
|
|
renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
|
|
renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
|
|
|
|
bb.4.b5:
|
|
successors: %bb.5(0x30000000), %bb.6(0x50000000)
|
|
liveins: $r0
|
|
|
|
t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
|
|
$sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
|
|
t2Bcc %bb.6, 1, killed $cpsr
|
|
|
|
bb.5.b8:
|
|
liveins: $lr, $r7
|
|
|
|
tBX_RET 14, $noreg
|
|
|
|
bb.6.b7:
|
|
liveins: $lr, $r7
|
|
|
|
tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp
|
|
|
|
...
|