aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/Asmblockgen.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-05 06:03:21 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-05 06:03:21 +0200
commit53b6eb437c7988b44e881c7b7a9df2e735ded0ea (patch)
treeffe451f96a6942088356246e8530fd0d9160cb7e /mppa_k1c/Asmblockgen.v
parentb27d386185527d1ee9d0bb77ebe3bacffc2bf05a (diff)
downloadcompcert-kvx-53b6eb437c7988b44e881c7b7a9df2e735ded0ea.tar.gz
compcert-kvx-53b6eb437c7988b44e881c7b7a9df2e735ded0ea.zip
select cmpu
Diffstat (limited to 'mppa_k1c/Asmblockgen.v')
-rw-r--r--mppa_k1c/Asmblockgen.v14
1 files changed, 14 insertions, 0 deletions
diff --git a/mppa_k1c/Asmblockgen.v b/mppa_k1c/Asmblockgen.v
index d770eebc..ce47cf52 100644
--- a/mppa_k1c/Asmblockgen.v
+++ b/mppa_k1c/Asmblockgen.v
@@ -367,6 +367,17 @@ Definition transl_cond_op
Error(msg "Asmblockgen.transl_cond_op")
end.
+(* CoMPare Unsigned Words to Zero *)
+Definition btest_for_cmpuwz (c: comparison) :=
+ match c with
+ | Cne => OK BTwnez
+ | Ceq => OK BTweqz
+ | Clt => Error (msg "btest_for_compuwz: Clt")
+ | Cge => Error (msg "btest_for_compuwz: Cge")
+ | Cle => Error (msg "btest_for_compuwz: Cle")
+ | Cgt => Error (msg "btest_for_compuwz: Cgt")
+ end.
+
(** Translation of the arithmetic operation [r <- op(args)].
The corresponding instructions are prepended to [k]. *)
@@ -737,6 +748,9 @@ Definition transl_op
(match cond with
| Ccomp0 cmp =>
OK (Pcmove (btest_for_cmpswz cmp) r0 rS r1 ::i k)
+ | Ccompu0 cmp =>
+ do bt <- btest_for_cmpuwz cmp;
+ OK (Pcmoveu bt r0 rS r1 ::i k)
| Ccompl0 cmp =>
OK (Pcmove (btest_for_cmpsdz cmp) r0 rS r1 ::i k)
| _ => Error (msg "Asmblockgen Oselect")