Correct decoder for T1 conditional B encoding
authorRichard Barton <richard.barton@arm.com>
Wed, 6 Jun 2012 09:12:53 +0000 (09:12 +0000)
committerRichard Barton <richard.barton@arm.com>
Wed, 6 Jun 2012 09:12:53 +0000 (09:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158055 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/Disassembler/ARMDisassembler.cpp
test/MC/Disassembler/ARM/thumb1.txt

index fd602aa7396a3de672cd5a2de7ee85a2c68c7ae4..66ea1171ff9e979386c9d6a1595156c71466e526 100644 (file)
@@ -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;
 }
 
index 825b2be9150d632d95e962a904830d3b9185dcaf..5b7026231096c5d9a4f7c3f2d172f15db8d8dad5 100644 (file)
@@ -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)
 
 0xb1 0x43
 
+#------------------------------------------------------------------------------
+# B
+#------------------------------------------------------------------------------
+# CHECK: bls     #128                    @ encoding: [0x40,0xd9]
+# CHECK: beq     #-256                   @ encoding: [0x80,0xd0]
+
+0x40 0xd9
+0x80 0xd0
+
 #------------------------------------------------------------------------------
 # BKPT
 #------------------------------------------------------------------------------