diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2016-10-02 18:44:32 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2016-10-02 18:44:32 +0200 |
commit | 61bd4cf7b75a51912cb885dd3b1d2ef2f7dae1e9 (patch) | |
tree | 87ced580a7803689125f3fc12d2a5ec657adf959 /ia32/SelectLong.vp | |
parent | f21a6b181dded86ef0e5c7ab94f74e5b960fd510 (diff) | |
download | compcert-61bd4cf7b75a51912cb885dd3b1d2ef2f7dae1e9.tar.gz compcert-61bd4cf7b75a51912cb885dd3b1d2ef2f7dae1e9.zip |
Finish the proofs of SelectLong for IA32
Diffstat (limited to 'ia32/SelectLong.vp')
-rw-r--r-- | ia32/SelectLong.vp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/ia32/SelectLong.vp b/ia32/SelectLong.vp index 32fd9aca..77fc4071 100644 --- a/ia32/SelectLong.vp +++ b/ia32/SelectLong.vp @@ -103,7 +103,7 @@ Nondetfunction orl (e1: expr) (e2: expr) := else Eop Oorl (e1:::e2:::Enil) | Eop (Oshrluimm n2) (t2:::Enil), Eop (Oshllimm n1) (t1:::Enil) => if Int.eq (Int.add n1 n2) Int64.iwordsize' && same_expr_pure t1 t2 - then Eop (Ororimm n2) (t1:::Enil) + then Eop (Ororlimm n2) (t1:::Enil) else Eop Oorl (e1:::e2:::Enil) | _, _ => Eop Oorl (e1:::e2:::Enil) @@ -259,12 +259,11 @@ Nondetfunction subl (e1: expr) (e2: expr) := end. Definition mullimm_base (n1: int64) (e2: expr) := - match Int64.one_bits n1 with + match Int64.one_bits' n1 with | i :: nil => - shllimm e2 (Int.repr (Int64.unsigned i)) + shllimm e2 i | i :: j :: nil => - Elet e2 (addl (shllimm (Eletvar 0) (Int.repr (Int64.unsigned i))) - (shllimm (Eletvar 0) (Int.repr (Int64.unsigned j)))) + Elet e2 (addl (shllimm (Eletvar 0) i) (shllimm (Eletvar 0) j)) | _ => Eop (Omullimm n1) (e2:::Enil) end. @@ -293,7 +292,7 @@ Definition shrxlimm (e: expr) (n: int) := Definition divlu_base (e1: expr) (e2: expr) := if Archi.splitlong then SplitLong.divlu_base e1 e2 else Eop Odivlu (e1:::e2:::Enil). Definition modlu_base (e1: expr) (e2: expr) := - if Archi.splitlong then SplitLong.modlu_base e1 e2 else Eop Omodu (e1:::e2:::Enil). + if Archi.splitlong then SplitLong.modlu_base e1 e2 else Eop Omodlu (e1:::e2:::Enil). Definition divls_base (e1: expr) (e2: expr) := if Archi.splitlong then SplitLong.divls_base e1 e2 else Eop Odivl (e1:::e2:::Enil). Definition modls_base (e1: expr) (e2: expr) := |