diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-06-04 22:58:34 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-06-04 22:58:34 +0200 |
commit | 68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0 (patch) | |
tree | aebe9f1dc7d8e0e0152c0c8f082b6395b91e93da /mppa_k1c/Asmblockgenproof1.v | |
parent | 6064bac57701ba0a12031d43acbe25cb0140730c (diff) | |
download | compcert-kvx-68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0.tar.gz compcert-kvx-68a6d0dd0ea5774529d823fb9a9ca981c1ecebb0.zip |
osel imm
Diffstat (limited to 'mppa_k1c/Asmblockgenproof1.v')
-rw-r--r-- | mppa_k1c/Asmblockgenproof1.v | 48 |
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 *) |