aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/Disassembler
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2010-04-16 22:40:20 +0000
committerJohnny Chen <johnny.chen@apple.com>2010-04-16 22:40:20 +0000
commit6b5e2261f03cd10090e15e29f0cb527298da111f (patch)
treeeb962421f64c1ce29fa786545f5d665f5039a755 /lib/Target/ARM/Disassembler
parenta475cffeb463990d6e0c7eca6460da78428c233c (diff)
downloadexternal_llvm-6b5e2261f03cd10090e15e29f0cb527298da111f.zip
external_llvm-6b5e2261f03cd10090e15e29f0cb527298da111f.tar.gz
external_llvm-6b5e2261f03cd10090e15e29f0cb527298da111f.tar.bz2
Fixed a bug in DisassembleN1RegModImmFrm() where a break stmt was missing for a
case. Also, the 0xFF hex literal involved in the shift for ESize64 should be suffixed "ul" to preserve the shift result. Implemented printHex*ImmOperand() by copying from ARMAsmPrinter.cpp and added a test case for DisassembleN1RegModImmFrm()/printHex64ImmOperand(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101557 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/Disassembler')
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index 50ed8b5..5eda8e1 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -2104,7 +2104,7 @@ static uint64_t decodeN1VImm(uint32_t insn, ElemSize esize) {
case ESize64: {
for (unsigned i = 0; i < 8; ++i)
if ((Imm8 >> i) & 1)
- Imm64 |= 0xFF << 8*i;
+ Imm64 |= 0xFFul << 8*i;
break;
}
default:
@@ -2450,6 +2450,7 @@ static bool DisassembleN1RegModImmFrm(MCInst &MI, unsigned Opcode,
case ARM::VMOVv1i64:
case ARM::VMOVv2i64:
esize = ESize64;
+ break;
default:
assert(0 && "Unreachable code!");
return false;