summaryrefslogtreecommitdiff
path: root/arch/arm64/il.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/il.cpp')
-rw-r--r--arch/arm64/il.cpp9
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: