aboutsummaryrefslogtreecommitdiffstats
path: root/riscV/Asmexpand.ml
diff options
context:
space:
mode:
Diffstat (limited to 'riscV/Asmexpand.ml')
-rw-r--r--riscV/Asmexpand.ml14
1 files changed, 8 insertions, 6 deletions
diff --git a/riscV/Asmexpand.ml b/riscV/Asmexpand.ml
index 1f6597d1..14407bba 100644
--- a/riscV/Asmexpand.ml
+++ b/riscV/Asmexpand.ml
@@ -589,10 +589,13 @@ let expand_instruction instr =
if not Archi.ptr64
then failwith "Pselectl not available on RV32, only on RV64"
else
- if not (ireg0_eq rt rf)
- then
- if (ireg0_eq (X rd) rt)
- then
+ if ireg0_eq rt rf then
+ begin
+ if not (ireg0_eq (X rd) rt) then
+ emit (Paddil(rd, rt, Int64.zero))
+ end
+ else
+ if (ireg0_eq (X rd) rt) then
begin
emit (Psubl(X31, X0, rb));
emit (Pandl(X31, X X31, rt));
@@ -601,8 +604,7 @@ let expand_instruction instr =
emit (Porl(rd, X rd, X X31))
end
else
- if (ireg0_eq (X rd) rf)
- then
+ if (ireg0_eq (X rd) rf) then
begin
emit (Paddil(X31, rb, Int64.mone));
emit (Pandl(X31, X X31, rf));