aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/SelectOp.vp
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-20 10:07:56 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-20 10:07:56 +0100
commit5ddc6e1de69aeeb1b03f4e495c8b75c2feec590d (patch)
treed1942582584ab6c6e232f61a316bfb3c9958b26e /mppa_k1c/SelectOp.vp
parent50ea35fceb52c5f66ccbc4f709df3a3471b12647 (diff)
parent69ee85006f81571a7a5cf5d13a38078f07be07c4 (diff)
downloadcompcert-kvx-5ddc6e1de69aeeb1b03f4e495c8b75c2feec590d.tar.gz
compcert-kvx-5ddc6e1de69aeeb1b03f4e495c8b75c2feec590d.zip
Merge branch 'mppa_postpass' into mppa-mul
Diffstat (limited to 'mppa_k1c/SelectOp.vp')
-rw-r--r--mppa_k1c/SelectOp.vp10
1 files changed, 9 insertions, 1 deletions
diff --git a/mppa_k1c/SelectOp.vp b/mppa_k1c/SelectOp.vp
index 3994fef9..163f0c22 100644
--- a/mppa_k1c/SelectOp.vp
+++ b/mppa_k1c/SelectOp.vp
@@ -128,6 +128,14 @@ Nondetfunction add (e1: expr) (e2: expr) :=
addimm n1 (Eop Oadd (t1:::t2:::Enil))
| t1, Eop (Oaddimm n2) (t2:::Enil) =>
addimm n2 (Eop Oadd (t1:::t2:::Enil))
+ | t1, (Eop Omul (t2:::t3:::Enil)) =>
+ Eop Omadd (t1:::t2:::t3:::Enil)
+ | (Eop Omul (t2:::t3:::Enil)), t1 =>
+ Eop Omadd (t1:::t2:::t3:::Enil)
+ | t1, (Eop (Omulimm n) (t2:::Enil)) =>
+ Eop (Omaddimm n) (t1:::t2:::Enil)
+ | (Eop (Omulimm n) (t2:::Enil)), t1 =>
+ Eop (Omaddimm n) (t1:::t2:::Enil)
| _, _ => Eop Oadd (e1:::e2:::Enil)
end.
@@ -211,7 +219,7 @@ Definition mulimm_base (n1: int) (e2: expr) :=
| i :: j :: nil =>
Elet e2 (add (shlimm (Eletvar 0) i) (shlimm (Eletvar 0) j))
| _ =>
- Eop Omul (Eop (Ointconst n1) Enil ::: e2 ::: Enil)
+ Eop (Omulimm n1) (e2 ::: Enil)
end.
Nondetfunction mulimm (n1: int) (e2: expr) :=