mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-01 10:57:21 +00:00
Support tblockaddr for static compilation in Mips16.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191986 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ec2ac89856
commit
5404ed811d
@ -1788,7 +1788,8 @@ def: Mips16Pat<(add CPU16Regs:$hi, (MipsLo tglobaladdr:$lo)),
|
|||||||
(AddiuRxRxImmX16 CPU16Regs:$hi, tglobaladdr:$lo)>;
|
(AddiuRxRxImmX16 CPU16Regs:$hi, tglobaladdr:$lo)>;
|
||||||
|
|
||||||
// hi/lo relocs
|
// hi/lo relocs
|
||||||
|
def : Mips16Pat<(MipsHi tblockaddress:$in),
|
||||||
|
(SllX16 (LiRxImmX16 tblockaddress:$in), 16)>;
|
||||||
def : Mips16Pat<(MipsHi tglobaladdr:$in),
|
def : Mips16Pat<(MipsHi tglobaladdr:$in),
|
||||||
(SllX16 (LiRxImmX16 tglobaladdr:$in), 16)>;
|
(SllX16 (LiRxImmX16 tglobaladdr:$in), 16)>;
|
||||||
def : Mips16Pat<(MipsHi tjumptable:$in),
|
def : Mips16Pat<(MipsHi tjumptable:$in),
|
||||||
@ -1796,6 +1797,8 @@ def : Mips16Pat<(MipsHi tjumptable:$in),
|
|||||||
def : Mips16Pat<(MipsHi tglobaltlsaddr:$in),
|
def : Mips16Pat<(MipsHi tglobaltlsaddr:$in),
|
||||||
(SllX16 (LiRxImmX16 tglobaltlsaddr:$in), 16)>;
|
(SllX16 (LiRxImmX16 tglobaltlsaddr:$in), 16)>;
|
||||||
|
|
||||||
|
def : Mips16Pat<(MipsLo tblockaddress:$in), (LiRxImmX16 tblockaddress:$in)>;
|
||||||
|
|
||||||
// wrapper_pic
|
// wrapper_pic
|
||||||
class Wrapper16Pat<SDNode node, Instruction ADDiuOp, RegisterClass RC>:
|
class Wrapper16Pat<SDNode node, Instruction ADDiuOp, RegisterClass RC>:
|
||||||
Mips16Pat<(MipsWrapper RC:$gp, node:$in),
|
Mips16Pat<(MipsWrapper RC:$gp, node:$in),
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||||
|
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -mattr=+mips16 -soft-float -mips16-hard-float -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-MIPS16-1
|
||||||
|
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -mattr=+mips16 -soft-float -mips16-hard-float -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-MIPS16-2
|
||||||
|
|
||||||
@reg = common global i8* null, align 4
|
@reg = common global i8* null, align 4
|
||||||
|
|
||||||
@ -36,6 +38,14 @@ entry:
|
|||||||
; STATIC-N64: daddiu ${{[0-9]+}}, $[[R2]], %got_ofst($tmp[[T2]])
|
; STATIC-N64: daddiu ${{[0-9]+}}, $[[R2]], %got_ofst($tmp[[T2]])
|
||||||
; STATIC-N64: ld $[[R3:[0-9]+]], %got_page($tmp[[T3:[0-9]+]])
|
; STATIC-N64: ld $[[R3:[0-9]+]], %got_page($tmp[[T3:[0-9]+]])
|
||||||
; STATIC-N64: daddiu ${{[0-9]+}}, $[[R3]], %got_ofst($tmp[[T3]])
|
; STATIC-N64: daddiu ${{[0-9]+}}, $[[R3]], %got_ofst($tmp[[T3]])
|
||||||
|
; STATIC-MIPS16-1: .ent f
|
||||||
|
; STATIC-MIPS16-2: .ent f
|
||||||
|
; STATIC-MIPS16-1: li $[[R1_16:[0-9]+]], %hi($tmp[[TI_16:[0-9]+]])
|
||||||
|
; STATIC-MIPS16-1: sll ${{[0-9]+}}, $[[R1_16]], 16
|
||||||
|
; STATIC-MIPS16-2: li ${{[0-9]+}}, %lo($tmp{{[0-9]+}})
|
||||||
|
; STATIC-MIPS16-1 jal dummy
|
||||||
|
; STATIC-MIPS16-2 jal dummy
|
||||||
|
|
||||||
define void @f() nounwind {
|
define void @f() nounwind {
|
||||||
entry:
|
entry:
|
||||||
%call = tail call i8* @dummy(i8* blockaddress(@f, %baz))
|
%call = tail call i8* @dummy(i8* blockaddress(@f, %baz))
|
||||||
|
Loading…
Reference in New Issue
Block a user