
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.
243 lines
7.3 KiB
YAML
243 lines
7.3 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=mips-mti-linux-gnu %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion | FileCheck %s --check-prefix=MIPS
|
|
# RUN: llc -mtriple=mips-mti-linux-gnu %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion -relocation-model=pic | FileCheck %s --check-prefix=PIC
|
|
# Test the long branch expansion of various branches
|
|
|
|
--- |
|
|
|
|
define i32 @a(double %a, double %b) {
|
|
entry:
|
|
%cmp = fcmp une double %a, %b
|
|
br i1 %cmp, label %if.then, label %return
|
|
|
|
if.then:
|
|
call void asm sideeffect ".space 310680", "~{$1}"()
|
|
ret i32 0
|
|
|
|
return:
|
|
ret i32 1
|
|
}
|
|
|
|
define i32 @b(double %a, double %b) {
|
|
entry:
|
|
%cmp = fcmp une double %a, %b
|
|
br i1 %cmp, label %if.then, label %return
|
|
|
|
if.then:
|
|
call void asm sideeffect ".space 310680", "~{$1}"()
|
|
ret i32 0
|
|
|
|
return:
|
|
ret i32 1
|
|
}
|
|
|
|
...
|
|
---
|
|
name: a
|
|
alignment: 4
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
liveins:
|
|
- { reg: '$d6', virtual-reg: '' }
|
|
- { reg: '$d7', virtual-reg: '' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 0
|
|
offsetAdjustment: 0
|
|
maxAlignment: 1
|
|
adjustsStack: false
|
|
hasCalls: false
|
|
stackProtector: ''
|
|
maxCallFrameSize: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack:
|
|
stack:
|
|
constants:
|
|
body: |
|
|
; MIPS-LABEL: name: a
|
|
; MIPS: bb.0.entry:
|
|
; MIPS: successors: %bb.2(0x50000000), %bb.1(0x30000000)
|
|
; MIPS: FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; MIPS: BC1F $fcc0, %bb.2, implicit-def $at {
|
|
; MIPS: $zero = SLL $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.1.entry:
|
|
; MIPS: successors: %bb.3(0x80000000)
|
|
; MIPS: J %bb.3, implicit-def $at {
|
|
; MIPS: $zero = SLL $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.2.if.then:
|
|
; MIPS: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; MIPS: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; MIPS: $v0 = ADDiu $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.3.return:
|
|
; MIPS: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; MIPS: $v0 = ADDiu $zero, 1
|
|
; MIPS: }
|
|
; PIC-LABEL: name: a
|
|
; PIC: bb.0.entry:
|
|
; PIC: successors: %bb.3(0x50000000), %bb.1(0x30000000)
|
|
; PIC: FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; PIC: BC1F $fcc0, %bb.3, implicit-def $at {
|
|
; PIC: $zero = SLL $zero, 0
|
|
; PIC: }
|
|
; PIC: bb.1.entry:
|
|
; PIC: successors: %bb.2(0x80000000)
|
|
; PIC: $sp = ADDiu $sp, -8
|
|
; PIC: SW $ra, $sp, 0
|
|
; PIC: $at = LONG_BRANCH_LUi target-flags(mips-abs-hi) %bb.4, %bb.2
|
|
; PIC: BAL_BR %bb.2, implicit-def $ra {
|
|
; PIC: $at = LONG_BRANCH_ADDiu $at, target-flags(mips-abs-lo) %bb.4, %bb.2
|
|
; PIC: }
|
|
; PIC: bb.2.entry:
|
|
; PIC: successors: %bb.4(0x80000000)
|
|
; PIC: $at = ADDu $ra, $at
|
|
; PIC: $ra = LW $sp, 0
|
|
; PIC: JR $at {
|
|
; PIC: $sp = ADDiu $sp, 8
|
|
; PIC: }
|
|
; PIC: bb.3.if.then:
|
|
; PIC: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; PIC: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; PIC: $v0 = ADDiu $zero, 0
|
|
; PIC: }
|
|
; PIC: bb.4.return:
|
|
; PIC: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; PIC: $v0 = ADDiu $zero, 1
|
|
; PIC: }
|
|
bb.0.entry:
|
|
successors: %bb.1(0x50000000), %bb.2(0x30000000)
|
|
liveins: $d6, $d7
|
|
|
|
FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
BC1T killed $fcc0, %bb.2, implicit-def $at
|
|
|
|
bb.1.if.then:
|
|
INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
|
|
$v0 = ADDiu $zero, 0
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
bb.2.return:
|
|
$v0 = ADDiu $zero, 1
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
...
|
|
---
|
|
name: b
|
|
alignment: 4
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
liveins:
|
|
- { reg: '$d6', virtual-reg: '' }
|
|
- { reg: '$d7', virtual-reg: '' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 0
|
|
offsetAdjustment: 0
|
|
maxAlignment: 1
|
|
adjustsStack: false
|
|
hasCalls: false
|
|
stackProtector: ''
|
|
maxCallFrameSize: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
localFrameSize: 0
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack:
|
|
stack:
|
|
constants:
|
|
body: |
|
|
; MIPS-LABEL: name: b
|
|
; MIPS: bb.0.entry:
|
|
; MIPS: successors: %bb.2(0x50000000), %bb.1(0x30000000)
|
|
; MIPS: FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; MIPS: BC1T $fcc0, %bb.2, implicit-def $at {
|
|
; MIPS: $zero = SLL $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.1.entry:
|
|
; MIPS: successors: %bb.3(0x80000000)
|
|
; MIPS: J %bb.3, implicit-def $at {
|
|
; MIPS: $zero = SLL $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.2.if.then:
|
|
; MIPS: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; MIPS: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; MIPS: $v0 = ADDiu $zero, 0
|
|
; MIPS: }
|
|
; MIPS: bb.3.return:
|
|
; MIPS: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; MIPS: $v0 = ADDiu $zero, 1
|
|
; MIPS: }
|
|
; PIC-LABEL: name: b
|
|
; PIC: bb.0.entry:
|
|
; PIC: successors: %bb.3(0x50000000), %bb.1(0x30000000)
|
|
; PIC: FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; PIC: BC1T $fcc0, %bb.3, implicit-def $at {
|
|
; PIC: $zero = SLL $zero, 0
|
|
; PIC: }
|
|
; PIC: bb.1.entry:
|
|
; PIC: successors: %bb.2(0x80000000)
|
|
; PIC: $sp = ADDiu $sp, -8
|
|
; PIC: SW $ra, $sp, 0
|
|
; PIC: $at = LONG_BRANCH_LUi target-flags(mips-abs-hi) %bb.4, %bb.2
|
|
; PIC: BAL_BR %bb.2, implicit-def $ra {
|
|
; PIC: $at = LONG_BRANCH_ADDiu $at, target-flags(mips-abs-lo) %bb.4, %bb.2
|
|
; PIC: }
|
|
; PIC: bb.2.entry:
|
|
; PIC: successors: %bb.4(0x80000000)
|
|
; PIC: $at = ADDu $ra, $at
|
|
; PIC: $ra = LW $sp, 0
|
|
; PIC: JR $at {
|
|
; PIC: $sp = ADDiu $sp, 8
|
|
; PIC: }
|
|
; PIC: bb.3.if.then:
|
|
; PIC: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; PIC: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; PIC: $v0 = ADDiu $zero, 0
|
|
; PIC: }
|
|
; PIC: bb.4.return:
|
|
; PIC: PseudoReturn undef $ra, implicit killed $v0 {
|
|
; PIC: $v0 = ADDiu $zero, 1
|
|
; PIC: }
|
|
bb.0.entry:
|
|
successors: %bb.1(0x50000000), %bb.2(0x30000000)
|
|
liveins: $d6, $d7
|
|
|
|
FCMP_D32 killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
BC1F killed $fcc0, %bb.2, implicit-def $at
|
|
|
|
bb.1.if.then:
|
|
INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
|
|
$v0 = ADDiu $zero, 0
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
bb.2.return:
|
|
$v0 = ADDiu $zero, 1
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
...
|