1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/CodeGen/Mips/longbranch/branch-limits-fp-micromips.mir
Konstantin Schwarz 9edce7f809 [MIR] Add comments to INLINEASM immediate flag MachineOperands
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
2020-04-16 13:46:14 +02:00

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
...