summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/armv7/thumb2_disasm/il_thumb2.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/armv7/thumb2_disasm/il_thumb2.cpp b/arch/armv7/thumb2_disasm/il_thumb2.cpp
index 07f02294..3ca95813 100644
--- a/arch/armv7/thumb2_disasm/il_thumb2.cpp
+++ b/arch/armv7/thumb2_disasm/il_thumb2.cpp
@@ -1615,15 +1615,14 @@ bool GetLowLevelILForNEONInstruction(Architecture* arch, LowLevelILFunction& il,
if (instr->format->operands[2].type == OPERAND_FORMAT_REG_FP)
{
// r3:r2 <- d12
- // The set reg will constrain the 8 byte to 4 byte _probably_.
- il.AddInstruction(WriteILOperand(il, instr, 0, ReadILOperand(il, instr, 2)));
- il.AddInstruction(WriteILOperand(il, instr, 1, il.LogicalShiftRight(4, ReadILOperand(il, instr, 2), il.Const(1, 32))));
+ il.SetRegisterSplit(4, ReadILOperand(il, instr, 0), ReadILOperand(il, instr, 1),
+ ReadILOperand(il, instr, 3));
} else
{
// d9 <- r1:r0
- il.AddInstruction(WriteILOperand(il, instr, 0, il.Or(4,
- il.ShiftLeft(4, ReadILOperand(il, instr, 2), il.Const(1, 32)),
- ReadILOperand(il, instr, 1))));
+ il.AddInstruction(WriteILOperand(il, instr, 0,
+ il.RegisterSplit(8, ReadILOperand(il, instr, 1),
+ ReadILOperand(il, instr, 2))));
}
}
else