Fix bug where bitwise-AND was being used and it should have been bitwise-OR.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@126904 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index a9eaa85..9602a78 100644
--- a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -6325,7 +6325,7 @@
// t == UInt(Rt); imm32 = ZeroExtend(imm4H:imm4L, 32); add = (U == ’1’);
t = Bits32 (opcode, 15, 12);
- imm32 = (imm4H << 4) & imm4L;
+ imm32 = (imm4H << 4) | imm4L;
add = BitIsSet (opcode, 23);
// if t == 15 then UNPREDICTABLE;
@@ -6645,7 +6645,7 @@
uint32_t imm4H = Bits32 (opcode, 11, 8);
uint32_t imm4L = Bits32 (opcode, 3, 0);
- imm32 = (imm4H << 4) & imm4L;
+ imm32 = (imm4H << 4) | imm4L;
// index = (P == ’1’); add = (U == ’1’); wback = (P == ’0’) || (W == ’1’);
index = BitIsSet (opcode, 24);
@@ -6757,7 +6757,7 @@
t = Bits32 (opcode, 15, 12);
uint32_t imm4H = Bits32 (opcode, 11, 8);
uint32_t imm4L = Bits32 (opcode, 3, 0);
- imm32 = (imm4H << 4) & imm4L;
+ imm32 = (imm4H << 4) | imm4L;
add = BitIsSet (opcode, 23);
// if t == 15 then UNPREDICTABLE;
@@ -7051,7 +7051,7 @@
n = Bits32 (opcode, 19, 16);
uint32_t imm4H = Bits32 (opcode, 11,8);
uint32_t imm4L = Bits32 (opcode, 3, 0);
- imm32 = (imm4H << 4) & imm4L;
+ imm32 = (imm4H << 4) | imm4L;
// index = (P == ’1’); add = (U == ’1’); wback = (P == ’0’) || (W == ’1’);
index = BitIsSet (opcode, 24);
@@ -7177,7 +7177,7 @@
t = Bits32 (opcode, 15, 12);
uint32_t imm4H = Bits32 (opcode, 11, 8);
uint32_t imm4L = Bits32 (opcode, 3, 0);
- imm32 = (imm4H << 4) & imm4L;
+ imm32 = (imm4H << 4) | imm4L;
add = BitIsSet (opcode, 23);
// if t == 15 then UNPREDICTABLE;