Files
llvm/test/CodeGen/Mips/mirparser/target-flags-pic.mir
Simon Dardis 4dacf84570 [mips] Add missing tests from rL315451
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315454 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 11:45:06 +00:00

99 lines
3.1 KiB
YAML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RUN: llc -march=mips64 -target-abi n64 -start-before=expand-isel-pseudos \
# RUN: -stop-after=expand-isel-pseudos -relocation-model=pic \
# RUN: -o /dev/null %s
# A simple test to show that we can parse the target specific flags: gpoff-hi,
# gpoff-lo, got-call, got-disp.
--- |
@v = global i32 0, align 4
@j = external global i32, align 4
define i32 @_Z2k1i(i32 signext %asd) {
entry:
%call = tail call i32 @_Z1gi(i32 signext %asd)
%add = add nsw i32 %call, %asd
%0 = load i32, i32* @v, align 4
%add1 = add nsw i32 %add, %0
%1 = load i32, i32* @j, align 4
%add2 = add nsw i32 %add1, %1
ret i32 %add2
}
declare i32 @_Z1gi(i32 signext)
...
---
name: _Z2k1i
alignment: 3
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: gpr64, preferred-register: '' }
- { id: 1, class: gpr64, preferred-register: '' }
- { id: 2, class: gpr64, preferred-register: '' }
- { id: 3, class: gpr32, preferred-register: '' }
- { id: 4, class: gpr32, preferred-register: '' }
- { id: 5, class: gpr32, preferred-register: '' }
- { id: 6, class: gpr64, preferred-register: '' }
- { id: 7, class: gpr32, preferred-register: '' }
- { id: 8, class: gpr32, preferred-register: '' }
- { id: 9, class: gpr64, preferred-register: '' }
- { id: 10, class: gpr32, preferred-register: '' }
- { id: 11, class: gpr32, preferred-register: '' }
- { id: 12, class: gpr64, preferred-register: '' }
- { id: 13, class: gpr64, preferred-register: '' }
liveins:
- { reg: '%a0_64', virtual-reg: '%0' }
- { reg: '%t9_64', virtual-reg: '' }
frameInfo:
isFrameAddressTaken: false
isReturnAddressTaken: false
hasStackMap: false
hasPatchPoint: false
stackSize: 0
offsetAdjustment: 0
maxAlignment: 1
adjustsStack: false
hasCalls: true
stackProtector: ''
maxCallFrameSize: 4294967295
hasOpaqueSPAdjustment: false
hasVAStart: false
hasMustTailInVarArgFunc: false
savePoint: ''
restorePoint: ''
fixedStack:
stack:
constants:
body: |
bb.0.entry:
liveins: %a0_64, %t9_64
%12 = LUi64 target-flags(mips-gpoff-hi) @_Z2k1i
%13 = DADDu %12, %t9_64
%1 = DADDiu %13, target-flags(mips-gpoff-lo) @_Z2k1i
%0 = COPY %a0_64
ADJCALLSTACKDOWN 0, 0, implicit-def dead %sp, implicit %sp
%2 = LD %1, target-flags(mips-got-call) @_Z1gi :: (load 8 from call-entry @_Z1gi)
%a0_64 = COPY %0
%gp_64 = COPY %1
JALR64Pseudo killed %2, csr_n64, implicit-def dead %ra, implicit %a0_64, implicit %gp_64, implicit-def %sp, implicit-def %v0
ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp
%3 = COPY %v0
%4 = COPY %0.sub_32
%5 = ADDu %3, killed %4
%6 = LD %1, target-flags(mips-got-disp) @v :: (load 8 from got)
%7 = LW killed %6, 0 :: (dereferenceable load 4 from @v)
%8 = ADDu killed %5, killed %7
%9 = LD %1, target-flags(mips-got-disp) @j :: (load 8 from got)
%10 = LW killed %9, 0 :: (dereferenceable load 4 from @j)
%11 = ADDu killed %8, killed %10
%v0 = COPY %11
RetRA implicit %v0
...