aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/SelectOp.vp
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-18 13:01:54 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-18 13:01:54 +0100
commit6275ab1693a3cc13966dac53069d4cf9981e6200 (patch)
treec1c163be5b7aeb26dd7067d59fad7969833129fa /mppa_k1c/SelectOp.vp
parent19e9d0ca5d4ba59db9c1bc40842ac08b5ca4ac41 (diff)
downloadcompcert-kvx-6275ab1693a3cc13966dac53069d4cf9981e6200.tar.gz
compcert-kvx-6275ab1693a3cc13966dac53069d4cf9981e6200.zip
some more andn / orn
Diffstat (limited to 'mppa_k1c/SelectOp.vp')
-rw-r--r--mppa_k1c/SelectOp.vp4
1 files changed, 4 insertions, 0 deletions
diff --git a/mppa_k1c/SelectOp.vp b/mppa_k1c/SelectOp.vp
index 18234286..7ec694e2 100644
--- a/mppa_k1c/SelectOp.vp
+++ b/mppa_k1c/SelectOp.vp
@@ -216,6 +216,7 @@ Nondetfunction andimm (n1: int) (e2: expr) :=
else match e2 with
| Eop (Ointconst n2) Enil => Eop (Ointconst (Int.and n1 n2)) Enil
| Eop (Oandimm n2) (t2:::Enil) => Eop (Oandimm (Int.and n1 n2)) (t2:::Enil)
+ | Eop Onot (t2:::Enil) => Eop (Oandnimm n1) (t2:::Enil)
| _ => Eop (Oandimm n1) (e2:::Enil)
end.
@@ -224,6 +225,7 @@ Nondetfunction and (e1: expr) (e2: expr) :=
| Eop (Ointconst n1) Enil, t2 => andimm n1 t2
| t1, Eop (Ointconst n2) Enil => andimm n2 t1
| (Eop Onot (t1:::Enil)), t2 => Eop Oandn (t1:::t2:::Enil)
+ | t1, (Eop Onot (t2:::Enil)) => Eop Oandn (t2:::t1:::Enil)
| _, _ => Eop Oand (e1:::e2:::Enil)
end.
@@ -233,6 +235,7 @@ Nondetfunction orimm (n1: int) (e2: expr) :=
else match e2 with
| Eop (Ointconst n2) Enil => Eop (Ointconst (Int.or n1 n2)) Enil
| Eop (Oorimm n2) (t2:::Enil) => Eop (Oorimm (Int.or n1 n2)) (t2:::Enil)
+ | Eop Onot (t2:::Enil) => Eop (Oornimm n1) (t2:::Enil)
| _ => Eop (Oorimm n1) (e2:::Enil)
end.
@@ -255,6 +258,7 @@ Nondetfunction or (e1: expr) (e2: expr) :=
then Eop (Ororimm n2) (t1:::Enil)
else Eop Oor (e1:::e2:::Enil)
| (Eop Onot (t1:::Enil)), t2 => Eop Oorn (t1:::t2:::Enil)
+ | t1, (Eop Onot (t2:::Enil)) => Eop Oorn (t2:::t1:::Enil)
| _, _ => Eop Oor (e1:::e2:::Enil)
end.