summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM64/Disassembler
diff options
context:
space:
mode:
authorBradley Smith <bradley.smith@arm.com>2014-05-19 15:58:15 +0000
committerBradley Smith <bradley.smith@arm.com>2014-05-19 15:58:15 +0000
commitc3b931d0050a44e4ef14a9cc3f5fd0684307cb60 (patch)
tree90235e8d9e839fd480300ae09f2cff66fc8bf430 /llvm/lib/Target/ARM64/Disassembler
parent5c29582d533a361ba4ed4232f8790563a50dafbe (diff)
downloadbcm5719-llvm-c3b931d0050a44e4ef14a9cc3f5fd0684307cb60.tar.gz
bcm5719-llvm-c3b931d0050a44e4ef14a9cc3f5fd0684307cb60.zip
[ARM64] Split tbz/tbnz into W/X register variant
llvm-svn: 209134
Diffstat (limited to 'llvm/lib/Target/ARM64/Disassembler')
-rw-r--r--llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp b/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp
index d14e3a86f8f..92eabcf2b4e 100644
--- a/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp
+++ b/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp
@@ -1512,7 +1512,10 @@ static DecodeStatus DecodeTestAndBranch(llvm::MCInst &Inst, uint32_t insn,
if (dst & (1 << (14 - 1)))
dst |= ~((1LL << 14) - 1);
- DecodeGPR64RegisterClass(Inst, Rt, Addr, Decoder);
+ if (fieldFromInstruction(insn, 31, 1) == 0)
+ DecodeGPR32RegisterClass(Inst, Rt, Addr, Decoder);
+ else
+ DecodeGPR64RegisterClass(Inst, Rt, Addr, Decoder);
Inst.addOperand(MCOperand::CreateImm(bit));
if (!Dis->tryAddingSymbolicOperand(Inst, dst << 2, Addr, true, 0, 4))
Inst.addOperand(MCOperand::CreateImm(dst));
OpenPOWER on IntegriCloud