aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2018-03-19 11:42:30 +0100
committerCyril SIX <cyril.six@kalray.eu>2018-04-04 16:30:08 +0200
commit1c1dd8c9cfcc98f183f6844b6c2f4ae60edd165d (patch)
treefa2c37098369a22ec7e6150ea7e4ed5fd4e529d3 /mppa_k1c
parent734ef70ef9edcd69d822d573628d5f0ca282ddcb (diff)
downloadcompcert-kvx-1c1dd8c9cfcc98f183f6844b6c2f4ae60edd165d.tar.gz
compcert-kvx-1c1dd8c9cfcc98f183f6844b6c2f4ae60edd165d.zip
MPPA - Activated Paddw and Paddiw + ops
Diffstat (limited to 'mppa_k1c')
-rw-r--r--mppa_k1c/Asm.v16
-rw-r--r--mppa_k1c/Asmgen.v8
-rw-r--r--mppa_k1c/Asmgenproof.v7
-rw-r--r--mppa_k1c/TargetPrinter.ml12
4 files changed, 22 insertions, 21 deletions
diff --git a/mppa_k1c/Asm.v b/mppa_k1c/Asm.v
index 4693975b..42b5f85f 100644
--- a/mppa_k1c/Asm.v
+++ b/mppa_k1c/Asm.v
@@ -144,8 +144,8 @@ Inductive instruction : Type :=
| Pmv (rd: ireg) (rs: ireg) (**r integer move *)
(** 32-bit integer register-immediate instructions *)
-(*| Paddiw (rd: ireg) (rs: ireg) (imm: int) (**r add immediate *)
- | Psltiw (rd: ireg) (rs: ireg) (imm: int) (**r set-less-than immediate *)
+ | Paddiw (rd: ireg) (rs: ireg) (imm: int) (**r add immediate *)
+(*| Psltiw (rd: ireg) (rs: ireg) (imm: int) (**r set-less-than immediate *)
| Psltiuw (rd: ireg) (rs: ireg) (imm: int) (**r set-less-than unsigned immediate *)
| Pandiw (rd: ireg) (rs: ireg) (imm: int) (**r and immediate *)
| Poriw (rd: ireg) (rs: ireg) (imm: int) (**r or immediate *)
@@ -155,8 +155,8 @@ Inductive instruction : Type :=
| Psraiw (rd: ireg) (rs: ireg) (imm: int) (**r shift-right-arith immediate *)
| Pluiw (rd: ireg) (imm: int) (**r load upper-immediate *)
(** 32-bit integer register-register instructions *)
- | Paddw (rd: ireg) (rs1 rs2: ireg) (**r integer addition *)
- | Psubw (rd: ireg) (rs1 rs2: ireg) (**r integer subtraction *)
+*)| Paddw (rd: ireg) (rs1 rs2: ireg) (**r integer addition *)
+(*| Psubw (rd: ireg) (rs1 rs2: ireg) (**r integer subtraction *)
| Pmulw (rd: ireg) (rs1 rs2: ireg) (**r integer multiply low *)
| Pmulhw (rd: ireg) (rs1 rs2: ireg) (**r integer multiply high signed *)
@@ -629,9 +629,9 @@ Definition exec_instr (f: function) (i: instruction) (rs: regset) (m: mem) : out
Next (nextinstr (rs#d <- (rs#s))) m
(** 32-bit integer register-immediate instructions *)
-(*| Paddiw d s i =>
+ | Paddiw d s i =>
Next (nextinstr (rs#d <- (Val.add rs##s (Vint i)))) m
- | Psltiw d s i =>
+(*| Psltiw d s i =>
Next (nextinstr (rs#d <- (Val.cmp Clt rs##s (Vint i)))) m
| Psltiuw d s i =>
Next (nextinstr (rs#d <- (Val.cmpu (Mem.valid_pointer m) Clt rs##s (Vint i)))) m
@@ -651,9 +651,9 @@ Definition exec_instr (f: function) (i: instruction) (rs: regset) (m: mem) : out
Next (nextinstr (rs#d <- (Vint (Int.shl i (Int.repr 12))))) m
(** 32-bit integer register-register instructions *)
- | Paddw d s1 s2 =>
+*)| Paddw d s1 s2 =>
Next (nextinstr (rs#d <- (Val.add rs##s1 rs##s2))) m
- | Psubw d s1 s2 =>
+(*| Psubw d s1 s2 =>
Next (nextinstr (rs#d <- (Val.sub rs##s1 rs##s2))) m
| Pmulw d s1 s2 =>
Next (nextinstr (rs#d <- (Val.mul rs##s1 rs##s2))) m
diff --git a/mppa_k1c/Asmgen.v b/mppa_k1c/Asmgen.v
index 82779bf4..96246bc2 100644
--- a/mppa_k1c/Asmgen.v
+++ b/mppa_k1c/Asmgen.v
@@ -73,16 +73,16 @@ Definition loadimm32 (r: ireg) (n: int) (k: code) :=
match make_immed32 n with
| Imm32_single imm => Pmake r imm :: k
end.
-(*
+
Definition opimm32 (op: ireg -> ireg -> ireg -> instruction)
(opimm: ireg -> ireg -> int -> instruction)
(rd rs: ireg) (n: int) (k: code) :=
match make_immed32 n with
| Imm32_single imm => opimm rd rs imm :: k
- | Imm32_pair hi lo => load_hilo32 GPR31 hi lo (op rd rs GPR31 :: k)
end.
Definition addimm32 := opimm32 Paddw Paddiw.
+(*
Definition andimm32 := opimm32 Pandw Pandiw.
Definition orimm32 := opimm32 Porw Poriw.
Definition xorimm32 := opimm32 Pxorw Pxoriw.
@@ -414,13 +414,13 @@ Definition transl_op
| Ocast16signed, a1 :: nil =>
do rd <- ireg_of res; do rs <- ireg_of a1;
OK (Pslliw rd rs (Int.repr 16) :: Psraiw rd rd (Int.repr 16) :: k)
- | Oadd, a1 :: a2 :: nil =>
+*)| Oadd, a1 :: a2 :: nil =>
do rd <- ireg_of res; do rs1 <- ireg_of a1; do rs2 <- ireg_of a2;
OK (Paddw rd rs1 rs2 :: k)
| Oaddimm n, a1 :: nil =>
do rd <- ireg_of res; do rs <- ireg_of a1;
OK (addimm32 rd rs n k)
- | Oneg, a1 :: nil =>
+(*| Oneg, a1 :: nil =>
do rd <- ireg_of res; do rs <- ireg_of a1;
OK (Psubw rd GPR0 rs :: k)
| Osub, a1 :: a2 :: nil =>
diff --git a/mppa_k1c/Asmgenproof.v b/mppa_k1c/Asmgenproof.v
index 45531e00..414527ad 100644
--- a/mppa_k1c/Asmgenproof.v
+++ b/mppa_k1c/Asmgenproof.v
@@ -122,7 +122,7 @@ Proof.
(*unfold load_hilo32. destruct (Int.eq lo Int.zero); TailNoLabel.*)
Qed.
Hint Resolve loadimm32_label: labels.
-(*
+
Remark opimm32_label:
forall op opimm r1 r2 n k,
(forall r1 r2 r3, nolabel (op r1 r2 r3)) ->
@@ -130,10 +130,10 @@ Remark opimm32_label:
tail_nolabel k (opimm32 op opimm r1 r2 n k).
Proof.
intros; unfold opimm32. destruct (make_immed32 n); TailNoLabel.
- unfold load_hilo32. destruct (Int.eq lo Int.zero); TailNoLabel.
+(*unfold load_hilo32. destruct (Int.eq lo Int.zero); TailNoLabel.*)
Qed.
Hint Resolve opimm32_label: labels.
-*)
+
Remark loadimm64_label:
forall r n k, tail_nolabel k (loadimm64 r n k).
Proof.
@@ -277,6 +277,7 @@ Remark transl_op_label:
Proof.
Opaque Int.eq.
unfold transl_op; intros; destruct op; TailNoLabel.
+- apply opimm32_label; intros; exact I.
- apply opimm64_label; intros; exact I.
Qed.
diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml
index e51ad51f..71d2f22d 100644
--- a/mppa_k1c/TargetPrinter.ml
+++ b/mppa_k1c/TargetPrinter.ml
@@ -168,9 +168,9 @@ module Target : TARGET =
fprintf oc " addd %a = %a, 0\n;;\n" ireg rd ireg rs
(* 32-bit integer register-immediate instructions *)
- (*| Paddiw (rd, rs, imm) ->
- fprintf oc " addi%t %a, %a, %a\n" w ireg rd ireg rs coqint imm
- | Psltiw (rd, rs, imm) ->
+ | Paddiw (rd, rs, imm) ->
+ fprintf oc " addd %a = %a, %a\n;;\n" ireg rd ireg rs coqint64 imm
+ (*| Psltiw (rd, rs, imm) ->
fprintf oc " slti %a, %a, %a\n" ireg rd ireg rs coqint imm
| Psltiuw (rd, rs, imm) ->
fprintf oc " sltiu %a, %a, %a\n" ireg rd ireg rs coqint imm
@@ -190,9 +190,9 @@ module Target : TARGET =
fprintf oc " lui %a, %a\n" ireg rd coqint imm
(* 32-bit integer register-register instructions *)
- | Paddw(rd, rs1, rs2) ->
- fprintf oc " add%t %a, %a, %a\n" w ireg rd ireg rs1 ireg rs2
- | Psubw(rd, rs1, rs2) ->
+ *)| Paddw(rd, rs1, rs2) ->
+ fprintf oc " addd %a = %a, %a\n;;\n" ireg rd ireg rs1 ireg rs2
+ (*| Psubw(rd, rs1, rs2) ->
fprintf oc " sub%t %a, %a, %a\n" w ireg rd ireg rs1 ireg rs2
| Pmulw(rd, rs1, rs2) ->