[XCore] Add BLRB instructions.
authorRichard Osborne <richard@xmos.com>
Sun, 5 May 2013 13:24:16 +0000 (13:24 +0000)
committerRichard Osborne <richard@xmos.com>
Sun, 5 May 2013 13:24:16 +0000 (13:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181152 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/XCore/XCoreInstrInfo.td
test/MC/Disassembler/XCore/xcore.txt

index 9bb61c80c4c07e2301d5aa591d3a566cd12b7f29..2be1ce2338cfa0c3c9b564b9715426151a75e406 100644 (file)
@@ -169,6 +169,9 @@ def ldawb : PatFrag<(ops node:$addr, node:$offset),
 
 // Instruction operand types
 def calltarget  : Operand<i32>;
+def calltarget_neg  : Operand<i32> {
+  let DecoderMethod = "DecodeNegImmOperand";
+}
 def brtarget : Operand<OtherVT>;
 def brtarget_neg : Operand<OtherVT> {
   let DecoderMethod = "DecodeNegImmOperand";
@@ -677,6 +680,10 @@ def BLRF_u10 : _FU10<0b110100, (outs), (ins calltarget:$a), "bl $a",
 
 def BLRF_lu10 : _FLU10<0b110100, (outs), (ins calltarget:$a), "bl $a",
                        [(XCoreBranchLink immU20:$a)]>;
+
+def BLRB_u10 : _FU10<0b110101, (outs), (ins calltarget_neg:$a), "bl $a", []>;
+
+def BLRB_lu10 : _FLU10<0b110101, (outs), (ins calltarget_neg:$a), "bl $a", []>;
 }
 
 let Defs = [R11], mayLoad = 1, isReMaterializable = 1,
index d509aff7d386a34fc540d7a48d39dc6f02fc7293..311ca16767de5965762b272f2cff6dce5c390a45 100644 (file)
 # CHECK: bl 38631
 0x25 0xf0 0xe7 0xd2
 
+# CHECK: bl -222
+0xde 0xd4
+
+# CHECK: bl -55132
+0x35 0xf0 0x5c 0xd7
+
 # CHECK: bla cp[500]
 0xf4 0xe1