summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Osborne <richard@xmos.com>2013-05-05 13:36:53 +0000
committerRichard Osborne <richard@xmos.com>2013-05-05 13:36:53 +0000
commit4498bd352f1f41e5af2378ed976ad4f9a2fb0a18 (patch)
treea01f3dc4d0a51544602fa4509889906d04e8fa39
parente41cdbd3aaad37a47c38f8c56de98cbc714f46a1 (diff)
downloadbcm5719-llvm-4498bd352f1f41e5af2378ed976ad4f9a2fb0a18.tar.gz
bcm5719-llvm-4498bd352f1f41e5af2378ed976ad4f9a2fb0a18.zip
[XCore] Add LDAPB instructions.
With the change the disassembler now supports the XCore ISA in its entirety. llvm-svn: 181155
-rw-r--r--llvm/lib/Target/XCore/XCoreInstrInfo.td16
-rw-r--r--llvm/test/MC/Disassembler/XCore/xcore.txt6
2 files changed, 19 insertions, 3 deletions
diff --git a/llvm/lib/Target/XCore/XCoreInstrInfo.td b/llvm/lib/Target/XCore/XCoreInstrInfo.td
index a4a339e9174..587166c1ce1 100644
--- a/llvm/lib/Target/XCore/XCoreInstrInfo.td
+++ b/llvm/lib/Target/XCore/XCoreInstrInfo.td
@@ -657,16 +657,26 @@ defm KRESTSP : FU6_LU6_np<0b0111101111, "krestsp">;
// U10
-let Defs = [R11], isReMaterializable = 1, neverHasSideEffects = 1 in
+let Defs = [R11], isReMaterializable = 1 in {
+let neverHasSideEffects = 1 in
def LDAPF_u10 : _FU10<0b110110, (outs), (ins pcrel_imm:$a), "ldap r11, $a", []>;
-let Defs = [R11], isReMaterializable = 1 in
def LDAPF_lu10 : _FLU10<0b110110, (outs), (ins pcrel_imm:$a), "ldap r11, $a",
[(set R11, (pcrelwrapper tglobaladdr:$a))]>;
-let Defs = [R11], isReMaterializable = 1, isCodeGenOnly = 1 in
+let neverHasSideEffects = 1 in
+def LDAPB_u10 : _FU10<0b110111, (outs), (ins pcrel_imm_neg:$a), "ldap r11, $a",
+ []>;
+
+let neverHasSideEffects = 1 in
+def LDAPB_lu10 : _FLU10<0b110111, (outs), (ins pcrel_imm_neg:$a),
+ "ldap r11, $a",
+ [(set R11, (pcrelwrapper tglobaladdr:$a))]>;
+
+let isCodeGenOnly = 1 in
def LDAPF_lu10_ba : _FLU10<0b110110, (outs), (ins pcrel_imm:$a), "ldap r11, $a",
[(set R11, (pcrelwrapper tblockaddress:$a))]>;
+}
let isCall=1,
// All calls clobber the link register and the non-callee-saved registers:
diff --git a/llvm/test/MC/Disassembler/XCore/xcore.txt b/llvm/test/MC/Disassembler/XCore/xcore.txt
index 311ca16767d..116433051a5 100644
--- a/llvm/test/MC/Disassembler/XCore/xcore.txt
+++ b/llvm/test/MC/Disassembler/XCore/xcore.txt
@@ -648,6 +648,12 @@
# CHECK: ldap r11, 53112
0x33 0xf0 0x78 0xdb
+# CHECK: ldap r11, -22
+0x16 0xdc
+
+# CHECK: ldap r11, -9999
+0x09 0xf0 0x0f 0xdf
+
# CHECK: bl 8
0x08 0xd0
OpenPOWER on IntegriCloud