summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2015-08-19 13:55:14 +0000
committerJoerg Sonnenberger <joerg@bec.de>2015-08-19 13:55:14 +0000
commit7d180c59bbd649a503e2a55128fe6e003a39d998 (patch)
tree7dab31bf8171fa9525596551ebaa306c174206a0 /llvm
parent78856474fbd3025f3ff4727c575f8794d2aa1515 (diff)
downloadbcm5719-llvm-7d180c59bbd649a503e2a55128fe6e003a39d998.tar.gz
bcm5719-llvm-7d180c59bbd649a503e2a55128fe6e003a39d998.zip
Map %fprs to %asr6 in the Sparc assembler parser.
llvm-svn: 245437
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp7
-rw-r--r--llvm/test/MC/Sparc/sparc-special-registers.s6
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index 02e9671697a..c96f49e2240 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -879,6 +879,13 @@ bool SparcAsmParser::matchRegisterName(const AsmToken &Tok,
return true;
}
+ // %fprs is an alias of %asr6.
+ if (name.equals("fprs")) {
+ RegNo = ASRRegs[6];
+ RegKind = SparcOperand::rk_Special;
+ return true;
+ }
+
if (name.equals("icc")) {
RegNo = Sparc::ICC;
RegKind = SparcOperand::rk_Special;
diff --git a/llvm/test/MC/Sparc/sparc-special-registers.s b/llvm/test/MC/Sparc/sparc-special-registers.s
index 2cb57d720c4..e78ddcc3505 100644
--- a/llvm/test/MC/Sparc/sparc-special-registers.s
+++ b/llvm/test/MC/Sparc/sparc-special-registers.s
@@ -33,3 +33,9 @@
! CHECK: wr %i0, 5, %tbr ! encoding: [0x81,0x9e,0x20,0x05]
wr %i0, 5, %tbr
+
+ ! CHECK: rd %asr6, %i0 ! encoding: [0xb1,0x41,0x80,0x00]
+ rd %fprs, %i0
+
+ ! CHECK: wr %i0, 7, %asr6 ! encoding: [0x8d,0x86,0x20,0x07]
+ wr %i0, 7, %fprs
OpenPOWER on IntegriCloud