mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
[mips] The register names depend on the ABI being N32/N64 rather than the arch being mips64
Summary: Added test cases for O32 and N32 on MIPS64. Reviewers: matheusalmeida Reviewed By: matheusalmeida Differential Revision: http://llvm-reviews.chandlerc.com/D3175 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204796 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2b84dba718
commit
968ea7b82c
@ -222,6 +222,7 @@ class MipsAsmParser : public MCTargetAsmParser {
|
||||
return (STI.getFeatureBits() & Mips::FeatureFP64Bit) != 0;
|
||||
}
|
||||
|
||||
bool isN32() const { return STI.getFeatureBits() & Mips::FeatureN32; }
|
||||
bool isN64() const { return STI.getFeatureBits() & Mips::FeatureN64; }
|
||||
|
||||
bool isMicroMips() const {
|
||||
@ -1035,21 +1036,23 @@ int MipsAsmParser::matchCPURegisterName(StringRef Name) {
|
||||
.Case("t9", 25)
|
||||
.Default(-1);
|
||||
|
||||
// Although SGI documentation just cuts out t0-t3 for n32/n64,
|
||||
// GNU pushes the values of t0-t3 to override the o32/o64 values for t4-t7
|
||||
// We are supporting both cases, so for t0-t3 we'll just push them to t4-t7.
|
||||
if (isMips64() && 8 <= CC && CC <= 11)
|
||||
CC += 4;
|
||||
if (isN32() || isN64()) {
|
||||
// Although SGI documentation just cuts out t0-t3 for n32/n64,
|
||||
// GNU pushes the values of t0-t3 to override the o32/o64 values for t4-t7
|
||||
// We are supporting both cases, so for t0-t3 we'll just push them to t4-t7.
|
||||
if (8 <= CC && CC <= 11)
|
||||
CC += 4;
|
||||
|
||||
if (CC == -1 && isMips64())
|
||||
CC = StringSwitch<unsigned>(Name)
|
||||
.Case("a4", 8)
|
||||
.Case("a5", 9)
|
||||
.Case("a6", 10)
|
||||
.Case("a7", 11)
|
||||
.Case("kt0", 26)
|
||||
.Case("kt1", 27)
|
||||
.Default(-1);
|
||||
if (CC == -1)
|
||||
CC = StringSwitch<unsigned>(Name)
|
||||
.Case("a4", 8)
|
||||
.Case("a5", 9)
|
||||
.Case("a6", 10)
|
||||
.Case("a7", 11)
|
||||
.Case("kt0", 26)
|
||||
.Case("kt1", 27)
|
||||
.Default(-1);
|
||||
}
|
||||
|
||||
warnIfAssemblerTemporary(CC);
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
# Second byte of addiu with $zero at rt contains the number of the source
|
||||
# register.
|
||||
|
||||
.set noat
|
||||
addiu $zero, $zero, 0 # CHECK: encoding: [0x24,0x00,0x00,0x00]
|
||||
addiu $at, $zero, 0 # CHECK: encoding: [0x24,0x01,0x00,0x00]
|
||||
addiu $v0, $zero, 0 # CHECK: encoding: [0x24,0x02,0x00,0x00]
|
@ -1,9 +1,12 @@
|
||||
# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding | FileCheck %s
|
||||
# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding \
|
||||
# RUN: -mattr=-n64,+n32 | FileCheck %s
|
||||
|
||||
# Check that the register names are mapped to their correct numbers for n64
|
||||
# Check that the register names are mapped to their correct numbers for n32/n64
|
||||
# Second byte of addiu with $zero at rt contains the number of the source
|
||||
# register.
|
||||
|
||||
.set noat
|
||||
daddiu $zero, $zero, 0 # CHECK: encoding: [0x64,0x00,0x00,0x00]
|
||||
daddiu $at, $zero, 0 # CHECK: encoding: [0x64,0x01,0x00,0x00]
|
||||
daddiu $v0, $zero, 0 # CHECK: encoding: [0x64,0x02,0x00,0x00]
|
41
test/MC/Mips/mips64-register-names-o32.s
Normal file
41
test/MC/Mips/mips64-register-names-o32.s
Normal file
@ -0,0 +1,41 @@
|
||||
# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding \
|
||||
# RUN: -mattr=-n64,+o32 | FileCheck %s
|
||||
|
||||
# Check that the register names are mapped to their correct numbers for o32
|
||||
# Second byte of daddiu with $zero at rt contains the number of the source
|
||||
# register.
|
||||
|
||||
.set noat
|
||||
daddiu $zero, $zero, 0 # CHECK: encoding: [0x64,0x00,0x00,0x00]
|
||||
daddiu $at, $zero, 0 # CHECK: encoding: [0x64,0x01,0x00,0x00]
|
||||
daddiu $v0, $zero, 0 # CHECK: encoding: [0x64,0x02,0x00,0x00]
|
||||
daddiu $v1, $zero, 0 # CHECK: encoding: [0x64,0x03,0x00,0x00]
|
||||
daddiu $a0, $zero, 0 # CHECK: encoding: [0x64,0x04,0x00,0x00]
|
||||
daddiu $a1, $zero, 0 # CHECK: encoding: [0x64,0x05,0x00,0x00]
|
||||
daddiu $a2, $zero, 0 # CHECK: encoding: [0x64,0x06,0x00,0x00]
|
||||
daddiu $a3, $zero, 0 # CHECK: encoding: [0x64,0x07,0x00,0x00]
|
||||
daddiu $t0, $zero, 0 # CHECK: encoding: [0x64,0x08,0x00,0x00]
|
||||
daddiu $t1, $zero, 0 # CHECK: encoding: [0x64,0x09,0x00,0x00]
|
||||
daddiu $t2, $zero, 0 # CHECK: encoding: [0x64,0x0a,0x00,0x00]
|
||||
daddiu $t3, $zero, 0 # CHECK: encoding: [0x64,0x0b,0x00,0x00]
|
||||
daddiu $t4, $zero, 0 # CHECK: encoding: [0x64,0x0c,0x00,0x00]
|
||||
daddiu $t5, $zero, 0 # CHECK: encoding: [0x64,0x0d,0x00,0x00]
|
||||
daddiu $t6, $zero, 0 # CHECK: encoding: [0x64,0x0e,0x00,0x00]
|
||||
daddiu $t7, $zero, 0 # CHECK: encoding: [0x64,0x0f,0x00,0x00]
|
||||
daddiu $s0, $zero, 0 # CHECK: encoding: [0x64,0x10,0x00,0x00]
|
||||
daddiu $s1, $zero, 0 # CHECK: encoding: [0x64,0x11,0x00,0x00]
|
||||
daddiu $s2, $zero, 0 # CHECK: encoding: [0x64,0x12,0x00,0x00]
|
||||
daddiu $s3, $zero, 0 # CHECK: encoding: [0x64,0x13,0x00,0x00]
|
||||
daddiu $s4, $zero, 0 # CHECK: encoding: [0x64,0x14,0x00,0x00]
|
||||
daddiu $s5, $zero, 0 # CHECK: encoding: [0x64,0x15,0x00,0x00]
|
||||
daddiu $s6, $zero, 0 # CHECK: encoding: [0x64,0x16,0x00,0x00]
|
||||
daddiu $s7, $zero, 0 # CHECK: encoding: [0x64,0x17,0x00,0x00]
|
||||
daddiu $t8, $zero, 0 # CHECK: encoding: [0x64,0x18,0x00,0x00]
|
||||
daddiu $t9, $zero, 0 # CHECK: encoding: [0x64,0x19,0x00,0x00]
|
||||
daddiu $k0, $zero, 0 # CHECK: encoding: [0x64,0x1a,0x00,0x00]
|
||||
daddiu $k1, $zero, 0 # CHECK: encoding: [0x64,0x1b,0x00,0x00]
|
||||
daddiu $gp, $zero, 0 # CHECK: encoding: [0x64,0x1c,0x00,0x00]
|
||||
daddiu $sp, $zero, 0 # CHECK: encoding: [0x64,0x1d,0x00,0x00]
|
||||
daddiu $fp, $zero, 0 # CHECK: encoding: [0x64,0x1e,0x00,0x00]
|
||||
daddiu $s8, $zero, 0 # CHECK: encoding: [0x64,0x1e,0x00,0x00]
|
||||
daddiu $ra, $zero, 0 # CHECK: encoding: [0x64,0x1f,0x00,0x00]
|
Loading…
x
Reference in New Issue
Block a user