From c601bd69d5c7fcd3bf9946e8a8a1bd1f9ab6642b Mon Sep 17 00:00:00 2001 From: Richard Osborne Date: Sun, 5 May 2013 13:24:16 +0000 Subject: [PATCH] [XCore] Add BLRB instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181152 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/XCore/XCoreInstrInfo.td | 7 +++++++ test/MC/Disassembler/XCore/xcore.txt | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/Target/XCore/XCoreInstrInfo.td b/lib/Target/XCore/XCoreInstrInfo.td index 9bb61c80c4c..2be1ce2338c 100644 --- a/lib/Target/XCore/XCoreInstrInfo.td +++ b/lib/Target/XCore/XCoreInstrInfo.td @@ -169,6 +169,9 @@ def ldawb : PatFrag<(ops node:$addr, node:$offset), // Instruction operand types def calltarget : Operand; +def calltarget_neg : Operand { + let DecoderMethod = "DecodeNegImmOperand"; +} def brtarget : Operand; def brtarget_neg : Operand { 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, diff --git a/test/MC/Disassembler/XCore/xcore.txt b/test/MC/Disassembler/XCore/xcore.txt index d509aff7d38..311ca16767d 100644 --- a/test/MC/Disassembler/XCore/xcore.txt +++ b/test/MC/Disassembler/XCore/xcore.txt @@ -654,6 +654,12 @@ # 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