aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2018-09-06 17:12:34 +0200
committerCyril SIX <cyril.six@kalray.eu>2018-09-06 17:12:34 +0200
commit3bedf90be891b20846aba183de479c5f25b630b1 (patch)
treec25fc2bf24aab085788ce84bc8b732f59f90bb5e
parent36be538c1c3e5cbbbd45d9b2a8b8bb9712a21dd0 (diff)
downloadcompcert-kvx-3bedf90be891b20846aba183de479c5f25b630b1.tar.gz
compcert-kvx-3bedf90be891b20846aba183de479c5f25b630b1.zip
Rebase avec le commit qui fixe les tests + librairies
-rw-r--r--mppa_k1c/Asm.v6
-rw-r--r--mppa_k1c/Asmexpand.ml12
-rw-r--r--mppa_k1c/TargetPrinter.ml4
3 files changed, 15 insertions, 7 deletions
diff --git a/mppa_k1c/Asm.v b/mppa_k1c/Asm.v
index 14824b85..c142185c 100644
--- a/mppa_k1c/Asm.v
+++ b/mppa_k1c/Asm.v
@@ -49,6 +49,10 @@ Inductive instruction : Type :=
-> builtin_res preg -> instruction (**r built-in function (pseudo) *)
| Pnop (**r instruction that does nothing *)
+ (** builtins *)
+ | Pclzll (rd rs: ireg)
+ | Pstsud (rd rs1 rs2: ireg)
+
(** Control flow instructions *)
| Pget (rd: ireg) (rs: preg) (**r get system register *)
| Pset (rd: preg) (rs: ireg) (**r set system register *)
@@ -489,4 +493,4 @@ Proof.
- intros. exists s1'. inv H0. split; auto. congruence.
Qed.
-End PRESERVATION. \ No newline at end of file
+End PRESERVATION.
diff --git a/mppa_k1c/Asmexpand.ml b/mppa_k1c/Asmexpand.ml
index 81c3cf48..bb3baf31 100644
--- a/mppa_k1c/Asmexpand.ml
+++ b/mppa_k1c/Asmexpand.ml
@@ -419,12 +419,12 @@ let expand_builtin_inline name args res = let open Asmblock in
| "__builtin_membar", [], _ ->
()
(* Vararg stuff *)
- | "__builtin_va_start", [BA(IR a)], _ ->
+ | "__builtin_va_start", [BA(BaR (IR a))], _ ->
expand_builtin_va_start a
- | "__builtin_clzll", [BA(IR a)], BR(IR res) ->
- emit (PExpand (Pclzll(res, a)))
- | "__builtin_k1_stsud", [BA(IR a1); BA(IR a2)], BR(IR res) ->
- emit (PExpand (Pstsud(res, a1, a2)))
+ | "__builtin_clzll", [BA(BaR (IR a))], BR(BaR (IR res)) ->
+ emit (Pclzll(res, a))
+ | "__builtin_k1_stsud", [BA(BaR (IR a1)); BA(BaR (IR a2))], BR(BaR (IR res)) ->
+ emit (Pstsud(res, a1, a2))
(* Byte swaps *)
(*| "__builtin_bswap16", [BA(IR a1)], BR(IR res) ->
expand_bswap16 res a1
@@ -511,7 +511,7 @@ let expand_instruction instr =
| Pj_s(symb, sg) ->
fixup_call sg; emit instr
-*)| PExpand Pbuiltin (ef,args,res) ->
+*)| Pbuiltin (ef,args,res) ->
begin match ef with
| EF_builtin (name,sg) ->
expand_builtin_inline (camlstring_of_coqstring name) args res
diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml
index 819e11ae..ec579bf9 100644
--- a/mppa_k1c/TargetPrinter.ml
+++ b/mppa_k1c/TargetPrinter.ml
@@ -229,6 +229,10 @@ module Target : TARGET =
end
| Pnop -> fprintf oc " nop\n;;\n"
+ | Pclzll (rd, rs) -> fprintf oc " clzd %a = %a\n;;\n" ireg rd ireg rs
+ | Pstsud (rd, rs1, rs2) -> fprintf oc " stsud %a = %a, %a\n;;\n" ireg rd ireg rs1 ireg rs2
+
+
(* Control flow instructions *)
| Pget (rd, rs) ->
fprintf oc " get %a = %a\n;;\n" ireg rd preg rs