aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/SelectOp.vp
diff options
context:
space:
mode:
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 7ec694e2..e4d65ced 100644
--- a/mppa_k1c/SelectOp.vp
+++ b/mppa_k1c/SelectOp.vp
@@ -86,6 +86,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.
@@ -169,7 +177,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) :=