Blame SOURCES/0007-Adapt-to-4.07.patch

0c4d3e
From a89427d52a20633be40056fe008b7eeec5ded7dd Mon Sep 17 00:00:00 2001
0c4d3e
From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= <n.oje.bar@gmail.com>
0c4d3e
Date: Tue, 15 May 2018 07:17:06 +0000
0c4d3e
Subject: [PATCH 7/8] Adapt to 4.07
0c4d3e
0c4d3e
---
0c4d3e
 asmcomp/riscv/emit.mlp     | 28 +++++++++++++++++-----------
0c4d3e
 asmcomp/riscv/selection.ml |  2 +-
0c4d3e
 2 files changed, 18 insertions(+), 12 deletions(-)
0c4d3e
0c4d3e
diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
0c4d3e
index 51165d0f1..718dca080 100644
0c4d3e
--- a/asmcomp/riscv/emit.mlp
0c4d3e
+++ b/asmcomp/riscv/emit.mlp
0c4d3e
@@ -461,19 +461,25 @@ let emit_instr i =
0c4d3e
           `	{emit_string name}	{emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
0c4d3e
       | Iinttest_imm _ ->
0c4d3e
           fatal_error "Emit.emit_instr (Iinttest_imm _)"
0c4d3e
-      | Ifloattest(cmp, neg) ->
0c4d3e
-          let neg = match cmp with
0c4d3e
-            | Ceq -> `	feq.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
0c4d3e
-            | Cne -> `	feq.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; not neg
0c4d3e
-            | Clt -> `	flt.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
0c4d3e
-            | Cgt -> `	flt.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
0c4d3e
-            | Cle -> `	fle.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
0c4d3e
-            | Cge -> `	fle.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
0c4d3e
-          in
0c4d3e
-          if neg then
0c4d3e
+      | Ifloattest cmp ->
0c4d3e
+          begin match cmp with
0c4d3e
+          | CFeq | CFneq ->
0c4d3e
+	    `	feq.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
0c4d3e
+          | CFlt | CFnlt ->
0c4d3e
+	    `	flt.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
0c4d3e
+          | CFgt | CFngt ->
0c4d3e
+	    `	flt.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
0c4d3e
+          | CFle | CFnle ->
0c4d3e
+	    `	fle.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
0c4d3e
+          | CFge | CFnge ->
0c4d3e
+	    `	fle.d	{emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
0c4d3e
+	  end;
0c4d3e
+	  begin match cmp with
0c4d3e
+	  | CFneq | CFnlt | CFngt | CFnle | CFnge ->
0c4d3e
             `	beqz	{emit_reg reg_tmp1}, {emit_label lbl}\n`
0c4d3e
-          else
0c4d3e
+	  | CFeq | CFlt | CFgt | CFle | CFge ->
0c4d3e
             `	bnez	{emit_reg reg_tmp1}, {emit_label lbl}\n`
0c4d3e
+	  end
0c4d3e
       | Ioddtest ->
0c4d3e
           `	andi	{emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
0c4d3e
           `	bnez	{emit_reg reg_tmp1}, {emit_label lbl}\n`
0c4d3e
diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
0c4d3e
index 092ca88aa..1f0af6abc 100644
0c4d3e
--- a/asmcomp/riscv/selection.ml
0c4d3e
+++ b/asmcomp/riscv/selection.ml
0c4d3e
@@ -61,7 +61,7 @@ method! select_condition = function
0c4d3e
   | Cop(Ccmpa cmp, args, _) ->
0c4d3e
       (Iinttest(Iunsigned cmp), Ctuple args)
0c4d3e
   | Cop(Ccmpf cmp, args, _) ->
0c4d3e
-      (Ifloattest(cmp, false), Ctuple args)
0c4d3e
+      (Ifloattest cmp, Ctuple args)
0c4d3e
   | Cop(Cand, [arg; Cconst_int 1], _) ->
0c4d3e
       (Ioddtest, arg)
0c4d3e
   | arg ->
0c4d3e
-- 
0c4d3e
2.17.1
0c4d3e