diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-24 22:20:13 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-24 22:20:13 +0200 |
commit | 59089e5d11428dd224b3239bc7f5db602df9b177 (patch) | |
tree | d317db6712c80bc4dc45d3ef20bfa1cfb7b57213 /mppa_k1c | |
parent | aa3ac1afb0b05a2d80f697c2179b59f8c73c83fb (diff) | |
download | compcert-kvx-59089e5d11428dd224b3239bc7f5db602df9b177.tar.gz compcert-kvx-59089e5d11428dd224b3239bc7f5db602df9b177.zip |
begin bitfields
Diffstat (limited to 'mppa_k1c')
-rw-r--r-- | mppa_k1c/Asm.v | 3 | ||||
-rw-r--r-- | mppa_k1c/Asmblockdeps.v | 1 | ||||
-rw-r--r-- | mppa_k1c/Asmvliw.v | 5 | ||||
-rw-r--r-- | mppa_k1c/PostpassSchedulingOracle.ml | 1 | ||||
-rw-r--r-- | mppa_k1c/TargetPrinter.ml | 2 |
5 files changed, 11 insertions, 1 deletions
diff --git a/mppa_k1c/Asm.v b/mppa_k1c/Asm.v index f679335c..2c3eef1f 100644 --- a/mppa_k1c/Asm.v +++ b/mppa_k1c/Asm.v @@ -129,6 +129,8 @@ Inductive instruction : Type := | Pcvtl2w (rd rs: ireg) (**r Convert Long to Word *)
| Psxwd (rd rs: ireg) (**r Sign Extend Word to Double Word *)
| Pzxwd (rd rs: ireg) (**r Zero Extend Word to Double Word *)
+
+ | Pextfz (rd : ireg) (rs : ireg) (stop : int) (start : int) (**r extract bitfields unsigned *)
| Pfabsd (rd rs: ireg) (**r float absolute double *)
| Pfabsw (rd rs: ireg) (**r float absolute word *)
| Pfnegd (rd rs: ireg) (**r float negate double *)
@@ -280,6 +282,7 @@ Definition basic_to_instruction (b: basic) := | PArithRR Asmvliw.Pcvtl2w rd rs => Pcvtl2w rd rs
| PArithRR Asmvliw.Psxwd rd rs => Psxwd rd rs
| PArithRR Asmvliw.Pzxwd rd rs => Pzxwd rd rs
+ | PArithRR (Asmvliw.Pextfz stop start) rd rs => Pextfz rd rs stop start
| PArithRR Asmvliw.Pfabsd rd rs => Pfabsd rd rs
| PArithRR Asmvliw.Pfabsw rd rs => Pfabsw rd rs
| PArithRR Asmvliw.Pfnegd rd rs => Pfnegd rd rs
diff --git a/mppa_k1c/Asmblockdeps.v b/mppa_k1c/Asmblockdeps.v index 4559dd62..b9db7760 100644 --- a/mppa_k1c/Asmblockdeps.v +++ b/mppa_k1c/Asmblockdeps.v @@ -1213,6 +1213,7 @@ Definition string_of_name_rr (n: arith_name_rr): pstring := | Pcvtl2w => "Pcvtl2w" | Psxwd => "Psxwd" | Pzxwd => "Pzxwd" + | Pextfz _ _ => "Pextfz" | Pfabsd => "Pfabsd" | Pfabsw => "Pfabsw" | Pfnegd => "Pfnegd" diff --git a/mppa_k1c/Asmvliw.v b/mppa_k1c/Asmvliw.v index 7177d5fe..a347b6fc 100644 --- a/mppa_k1c/Asmvliw.v +++ b/mppa_k1c/Asmvliw.v @@ -306,7 +306,9 @@ Inductive arith_name_rr : Type := | Pcvtl2w (**r Convert Long to Word *) | Psxwd (**r Sign Extend Word to Double Word *) | Pzxwd (**r Zero Extend Word to Double Word *) - +(* | Pextfs (stop : int) (start : int) (**r extract bit field, signed *) *) + | Pextfz (stop : int) (start : int) (**r extract bit field, unsigned *) + | Pfabsd (**r float absolute double *) | Pfabsw (**r float absolute word *) | Pfnegd (**r float negate double *) @@ -878,6 +880,7 @@ Definition arith_eval_rr n v := | Pcvtl2w => Val.loword v | Psxwd => Val.longofint v | Pzxwd => Val.longofintu v + | Pextfz stop start => Val.extfz stop start v | Pfnegd => Val.negf v | Pfnegw => Val.negfs v | Pfabsd => Val.absf v diff --git a/mppa_k1c/PostpassSchedulingOracle.ml b/mppa_k1c/PostpassSchedulingOracle.ml index 9a26425a..8f6484d6 100644 --- a/mppa_k1c/PostpassSchedulingOracle.ml +++ b/mppa_k1c/PostpassSchedulingOracle.ml @@ -34,6 +34,7 @@ let arith_rr_str = function | Pnegl -> "Pnegl" | Psxwd -> "Psxwd" | Pzxwd -> "Pzxwd" + | Pextfz(_,_) -> "Pextfz" | Pfabsw -> "Pfabsw" | Pfabsd -> "Pfabsd" | Pfnegw -> "Pfnegw" diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml index 5aedd557..dc207dc8 100644 --- a/mppa_k1c/TargetPrinter.ml +++ b/mppa_k1c/TargetPrinter.ml @@ -377,6 +377,8 @@ module Target (*: TARGET*) = fprintf oc " sxwd %a = %a\n" ireg rd ireg rs | Pzxwd(rd, rs) -> fprintf oc " zxwd %a = %a\n" ireg rd ireg rs + | Pextfz(rd, rs, stop, start) -> + fprintf oc " extfz %a = %a, %ld, %ld\n" ireg rd ireg rs (camlint_of_coqint stop) (camlint_of_coqint start) | Pfabsd(rd, rs) -> fprintf oc " fabsd %a = %a\n" ireg rd ireg rs | Pfabsw(rd, rs) -> |