aboutsummaryrefslogtreecommitdiffstats
path: root/riscV/SelectOpproof.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2021-02-02 16:34:28 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2021-02-02 16:34:28 +0100
commit11018c3d46845722daf73883ce3959afdd6ac92f (patch)
tree58676fd81274ee77d3adff8a858591ea180ae000 /riscV/SelectOpproof.v
parent225e51bcf9bfe4029e0d9ca5617ad288326e68c9 (diff)
downloadcompcert-kvx-11018c3d46845722daf73883ce3959afdd6ac92f.tar.gz
compcert-kvx-11018c3d46845722daf73883ce3959afdd6ac92f.zip
Cmov Tsingle
Diffstat (limited to 'riscV/SelectOpproof.v')
-rw-r--r--riscV/SelectOpproof.v59
1 files changed, 26 insertions, 33 deletions
diff --git a/riscV/SelectOpproof.v b/riscV/SelectOpproof.v
index c313fbaf..1fe4e662 100644
--- a/riscV/SelectOpproof.v
+++ b/riscV/SelectOpproof.v
@@ -943,50 +943,43 @@ Proof.
destruct Archi.ptr64 eqn:PTR64.
2: discriminate.
destruct ty; cbn in *; try discriminate.
- - inv H. TrivialExists.
- + cbn. constructor.
- { econstructor.
- { constructor.
- { econstructor. eassumption. cbn. rewrite H3. reflexivity. }
- constructor. econstructor. constructor. eassumption.
- constructor. cbn. reflexivity.
- constructor. econstructor. constructor. eassumption. constructor.
- cbn. reflexivity. constructor.
- }
- constructor.
- }
- constructor.
+ - (* Tint *)
+ inv H. TrivialExists.
+ + cbn. repeat econstructor; eassumption.
+ cbn. f_equal. rewrite ExtValues.normalize_select01.
- destruct b.
+ rewrite H3. destruct b.
* rewrite ExtValues.select01_long_true. apply normalize_low_long; assumption.
* rewrite ExtValues.select01_long_false. apply normalize_low_long; assumption.
- - inv H. TrivialExists.
- + cbn. constructor.
- { econstructor.
- { constructor.
- { econstructor. eassumption. cbn. rewrite H3. reflexivity. }
- constructor. econstructor. constructor. eassumption.
- constructor. cbn. reflexivity.
- constructor. econstructor. constructor. eassumption. constructor.
- cbn. reflexivity. constructor.
- }
- constructor.
- }
- constructor.
+
+ - (* Tfloat *)
+ inv H. TrivialExists.
+ + cbn. repeat econstructor; eassumption.
+ cbn. f_equal. rewrite ExtValues.normalize_select01.
- destruct b.
+ rewrite H3. destruct b.
* rewrite ExtValues.select01_long_true.
apply ExtValues.float_bits_normalize.
* rewrite ExtValues.select01_long_false.
apply ExtValues.float_bits_normalize.
- - inv H. TrivialExists.
- + cbn. constructor.
- { econstructor. eassumption. cbn. rewrite H3. cbn. reflexivity. }
- constructor. eassumption. constructor. eassumption. constructor.
+
+ - (* Tlong *)
+ inv H. TrivialExists.
+ + cbn. repeat econstructor; eassumption.
+ cbn. f_equal. rewrite ExtValues.normalize_select01.
- destruct b.
+ rewrite H3. destruct b.
* rewrite ExtValues.select01_long_true. reflexivity.
* rewrite ExtValues.select01_long_false. reflexivity.
+
+ - (* Tsingle *)
+ inv H. TrivialExists.
+ + cbn. repeat econstructor; eassumption.
+ + cbn. f_equal. rewrite ExtValues.normalize_select01.
+ rewrite H3. destruct b.
+ * rewrite ExtValues.select01_long_true.
+ rewrite normalize_low_long by assumption.
+ apply ExtValues.single_bits_normalize.
+ * rewrite ExtValues.select01_long_false.
+ rewrite normalize_low_long by assumption.
+ apply ExtValues.single_bits_normalize.
Qed.
Theorem eval_addressing: