aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Barton <richard.barton@arm.com>2012-06-06 09:12:53 +0000
committerRichard Barton <richard.barton@arm.com>2012-06-06 09:12:53 +0000
commitc8f2fcc9a381f1e024656568f2face2f600e0328 (patch)
tree41784d9c6372fab45bbe01ad9888e789ca0f9724
parent12e959c8da8f37a2dbb9e21ea9fe52e97395eb6f (diff)
downloadexternal_llvm-c8f2fcc9a381f1e024656568f2face2f600e0328.zip
external_llvm-c8f2fcc9a381f1e024656568f2face2f600e0328.tar.gz
external_llvm-c8f2fcc9a381f1e024656568f2face2f600e0328.tar.bz2
Correct decoder for T1 conditional B encoding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158055 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassembler.cpp4
-rw-r--r--test/MC/Disassembler/ARM/thumb1.txt11
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index fd602aa..66ea117 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -3463,9 +3463,9 @@ static DecodeStatus DecodeT2SOImm(MCInst &Inst, unsigned Val,
static DecodeStatus
DecodeThumbBCCTargetOperand(MCInst &Inst, unsigned Val,
uint64_t Address, const void *Decoder){
- if (!tryAddingSymbolicOperand(Address, Address + SignExtend32<8>(Val<<1) + 4,
+ if (!tryAddingSymbolicOperand(Address, Address + SignExtend32<9>(Val<<1) + 4,
true, 2, Inst, Decoder))
- Inst.addOperand(MCOperand::CreateImm(SignExtend32<8>(Val << 1)));
+ Inst.addOperand(MCOperand::CreateImm(SignExtend32<9>(Val << 1)));
return MCDisassembler::Success;
}
diff --git a/test/MC/Disassembler/ARM/thumb1.txt b/test/MC/Disassembler/ARM/thumb1.txt
index 825b2be..5b70262 100644
--- a/test/MC/Disassembler/ARM/thumb1.txt
+++ b/test/MC/Disassembler/ARM/thumb1.txt
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -triple=thumbv6-apple-darwin -disassemble < %s | FileCheck %s
+# RUN: llvm-mc -triple=thumbv6-apple-darwin -disassemble -show-encoding < %s | FileCheck %s
#------------------------------------------------------------------------------
# ADC (register)
@@ -83,6 +83,15 @@
0xb1 0x43
#------------------------------------------------------------------------------
+# B
+#------------------------------------------------------------------------------
+# CHECK: bls #128 @ encoding: [0x40,0xd9]
+# CHECK: beq #-256 @ encoding: [0x80,0xd0]
+
+0x40 0xd9
+0x80 0xd0
+
+#------------------------------------------------------------------------------
# BKPT
#------------------------------------------------------------------------------
# CHECK: bkpt #0