diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2018-09-06 17:12:34 +0200 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2018-09-06 17:12:34 +0200 |
commit | 3bedf90be891b20846aba183de479c5f25b630b1 (patch) | |
tree | c25fc2bf24aab085788ce84bc8b732f59f90bb5e | |
parent | 36be538c1c3e5cbbbd45d9b2a8b8bb9712a21dd0 (diff) | |
download | compcert-kvx-3bedf90be891b20846aba183de479c5f25b630b1.tar.gz compcert-kvx-3bedf90be891b20846aba183de479c5f25b630b1.zip |
Rebase avec le commit qui fixe les tests + librairies
-rw-r--r-- | mppa_k1c/Asm.v | 6 | ||||
-rw-r--r-- | mppa_k1c/Asmexpand.ml | 12 | ||||
-rw-r--r-- | mppa_k1c/TargetPrinter.ml | 4 |
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 |