mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
9edce7f809
Summary: The INLINEASM MIR instructions use immediate operands to encode the values of some operands. The MachineInstr pretty printer function already handles those operands and prints human readable annotations instead of the immediates. This patch adds similar annotations to the output of the MIRPrinter, however uses the new MIROperandComment feature. Reviewers: SjoerdMeijer, arsenm, efriedma Reviewed By: arsenm Subscribers: qcolombet, sdardis, jvesely, wdng, nhaehnle, hiraditya, jrtc27, atanasyan, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78088
216 lines
6.3 KiB
YAML
216 lines
6.3 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %s -o - -start-before mips-delay-slot-filler -stop-after mips-branch-expansion | FileCheck %s --check-prefix=MM
|
|
# RUN: llc -mtriple=mips-mti-linux-gnu -mattr=+micromips %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 ueq 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: |
|
|
; MM-LABEL: name: a
|
|
; MM: bb.0.entry:
|
|
; MM: successors: %bb.2(0x50000000), %bb.1(0x30000000)
|
|
; MM: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; MM: BC1F_MM $fcc0, %bb.2, implicit-def $at {
|
|
; MM: NOP
|
|
; MM: }
|
|
; MM: bb.1.entry:
|
|
; MM: successors: %bb.3(0x80000000)
|
|
; MM: J %bb.3, implicit-def $at {
|
|
; MM: NOP
|
|
; MM: }
|
|
; MM: bb.2.if.then:
|
|
; MM: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; MM: $v0 = LI16_MM 0
|
|
; MM: JRC16_MM undef $ra, implicit killed $v0
|
|
; MM: bb.3.return:
|
|
; MM: $v0 = LI16_MM 1
|
|
; MM: JRC16_MM undef $ra, implicit killed $v0
|
|
; PIC-LABEL: name: a
|
|
; PIC: bb.0.entry:
|
|
; PIC: successors: %bb.3(0x50000000), %bb.1(0x30000000)
|
|
; PIC: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
; PIC: BC1F_MM $fcc0, %bb.3, implicit-def $at {
|
|
; PIC: NOP
|
|
; 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_MM %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: $v0 = LI16_MM 0
|
|
; PIC: JRC16_MM undef $ra, implicit killed $v0
|
|
; PIC: bb.4.return:
|
|
; PIC: $v0 = LI16_MM 1
|
|
; PIC: JRC16_MM undef $ra, implicit killed $v0
|
|
bb.0.entry:
|
|
successors: %bb.1(0x50000000), %bb.2(0x30000000)
|
|
liveins: $d6, $d7
|
|
|
|
FCMP_D32_MM killed renamable $d6, killed renamable $d7, 2, implicit-def $fcc0
|
|
BC1T_MM killed $fcc0, %bb.2, implicit-def dead $at
|
|
|
|
bb.1.if.then:
|
|
INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
|
|
$v0 = LI16_MM 0
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
bb.2.return:
|
|
$v0 = LI16_MM 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: |
|
|
; MM-LABEL: name: b
|
|
; MM: bb.0.entry:
|
|
; MM: successors: %bb.2(0x30000000), %bb.1(0x50000000)
|
|
; MM: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
|
|
; MM: BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
|
|
; MM: NOP
|
|
; MM: }
|
|
; MM: bb.1.return:
|
|
; MM: $v0 = LI16_MM 1
|
|
; MM: JRC16_MM undef $ra, implicit killed $v0
|
|
; MM: bb.2.if.then:
|
|
; MM: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; MM: $v0 = LI16_MM 0
|
|
; MM: JRC16_MM undef $ra, implicit killed $v0
|
|
; PIC-LABEL: name: b
|
|
; PIC: bb.0.entry:
|
|
; PIC: successors: %bb.2(0x30000000), %bb.1(0x50000000)
|
|
; PIC: FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
|
|
; PIC: BC1F_MM killed $fcc0, %bb.1, implicit-def dead $at {
|
|
; PIC: NOP
|
|
; PIC: }
|
|
; PIC: bb.1.return:
|
|
; PIC: $v0 = LI16_MM 1
|
|
; PIC: JRC16_MM undef $ra, implicit killed $v0
|
|
; PIC: bb.2.if.then:
|
|
; PIC: INLINEASM &".space 310680", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $at
|
|
; PIC: $v0 = LI16_MM 0
|
|
; PIC: JRC16_MM undef $ra, implicit killed $v0
|
|
bb.0.entry:
|
|
successors: %bb.1(0x30000000), %bb.2(0x50000000)
|
|
liveins: $d6, $d7
|
|
|
|
FCMP_D32_MM killed renamable $d6, killed renamable $d7, 19, implicit-def $fcc0
|
|
BC1F_MM killed $fcc0, %bb.2, implicit-def dead $at
|
|
|
|
bb.2.return:
|
|
$v0 = LI16_MM 1
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
bb.1.if.then:
|
|
INLINEASM &".space 310680", 1, 12, implicit-def dead early-clobber $at
|
|
$v0 = LI16_MM 0
|
|
PseudoReturn undef $ra, implicit killed $v0
|
|
|
|
...
|