aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/Asmblockgenproof1.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-06-04 22:58:34 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-06-04 22:58:34 +0200
commit68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0 (patch)
treeaebe9f1dc7d8e0e0152c0c8f082b6395b91e93da /mppa_k1c/Asmblockgenproof1.v
parent6064bac57701ba0a12031d43acbe25cb0140730c (diff)
downloadcompcert-kvx-68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0.tar.gz
compcert-kvx-68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0.zip
osel imm
Diffstat (limited to 'mppa_k1c/Asmblockgenproof1.v')
-rw-r--r--mppa_k1c/Asmblockgenproof1.v48
1 files changed, 48 insertions, 0 deletions
diff --git a/mppa_k1c/Asmblockgenproof1.v b/mppa_k1c/Asmblockgenproof1.v
index 8939cc30..bc549b4a 100644
--- a/mppa_k1c/Asmblockgenproof1.v
+++ b/mppa_k1c/Asmblockgenproof1.v
@@ -1799,6 +1799,54 @@ Opaque Int.eq.
try destruct (_ || _);
trivial;
try apply Val.lessdef_normalize.
+
+- (* Oselimm *)
+ unfold conditional_move_imm32 in *.
+ destruct c0; simpl in *.
+
+ all:
+ destruct c; simpl in *; inv EQ0;
+ econstructor; split; try (apply exec_straight_one; constructor);
+ split; try (simpl; intros; rewrite Pregmap.gso; trivial; assumption);
+ unfold Val.select; simpl;
+ unfold cmove, cmoveu;
+ rewrite Pregmap.gss;
+ destruct (rs x0); simpl; trivial;
+ try rewrite int_ltu_to_neq;
+ try rewrite int64_ltu_to_neq;
+ try change (Int64.eq Int64.zero Int64.zero) with true;
+ try destruct Archi.ptr64;
+ repeat rewrite if_neg;
+ simpl;
+ trivial;
+ try destruct (_ || _);
+ trivial;
+ try apply Val.lessdef_normalize.
+
+
+- (* Osellimm *)
+ unfold conditional_move_imm64 in *.
+ destruct c0; simpl in *.
+
+ all:
+ destruct c; simpl in *; inv EQ0;
+ econstructor; split; try (apply exec_straight_one; constructor);
+ split; try (simpl; intros; rewrite Pregmap.gso; trivial; assumption);
+ unfold Val.select; simpl;
+ unfold cmove, cmoveu;
+ rewrite Pregmap.gss;
+ destruct (rs x0); simpl; trivial;
+ try rewrite int_ltu_to_neq;
+ try rewrite int64_ltu_to_neq;
+ try change (Int64.eq Int64.zero Int64.zero) with true;
+ try destruct Archi.ptr64;
+ repeat rewrite if_neg;
+ simpl;
+ trivial;
+ try destruct (_ || _);
+ trivial;
+ try apply Val.lessdef_normalize.
+
Qed.
(** Memory accesses *)