diff options
Diffstat (limited to 'arch/arm64/il.cpp')
| -rw-r--r-- | arch/arm64/il.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm64/il.cpp b/arch/arm64/il.cpp index 2d3cb8bc..22b45a95 100644 --- a/arch/arm64/il.cpp +++ b/arch/arm64/il.cpp @@ -2803,8 +2803,13 @@ bool GetLowLevelILForInstruction( operand2.implspec[3], operand2.implspec[4]); } - il.AddInstruction( - il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_MRS, {il.Const(4, reg)})); + if (IS_ZERO_REG(REG_O(operand1))) { + il.AddInstruction( + il.Intrinsic({}, ARM64_INTRIN_MRS, {il.Const(4, reg)})); + } else { + il.AddInstruction( + il.Intrinsic({RegisterOrFlag::Register(REG_O(operand1))}, ARM64_INTRIN_MRS, {il.Const(4, reg)})); + } break; } case ARM64_MSUB: |
