summaryrefslogtreecommitdiff
path: root/arm/Asmgenproof1.v
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-03-29 11:57:33 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-03-29 11:57:33 +0000
commit448cc3ff32cc60f4b9e78911404106797e109d90 (patch)
tree4dcea174d56a4984238d014c481c8d484d653007 /arm/Asmgenproof1.v
parentbf138748416195df13f68c097c750e1d388ac0de (diff)
Support for fcmpzd instruction (float compare with +0.0)
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1858 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'arm/Asmgenproof1.v')
-rw-r--r--arm/Asmgenproof1.v15
1 files changed, 15 insertions, 0 deletions
diff --git a/arm/Asmgenproof1.v b/arm/Asmgenproof1.v
index 629a615..29197e9 100644
--- a/arm/Asmgenproof1.v
+++ b/arm/Asmgenproof1.v
@@ -1082,6 +1082,21 @@ Proof.
split. rewrite <- Val.negate_cmpf_ne in B. rewrite <- Val.negate_cmpf_eq in A.
destruct c; apply MATCH; simpl; rewrite Val.notbool_negb_3; auto.
auto.
+ (* Ccompfzero *)
+ generalize (compare_float_spec rs (rs (freg_of m0)) (Vfloat Float.zero)).
+ intros [A [B [C [D [E [F [G [H [I [J K]]]]]]]]]].
+ econstructor.
+ split. apply exec_straight_one. simpl. eauto. auto.
+ split. case c; apply MATCH; assumption.
+ auto.
+ (* Cnotcompf *)
+ generalize (compare_float_spec rs (rs (freg_of m0)) (Vfloat Float.zero)).
+ intros [A [B [C [D [E [F [G [H [I [J K]]]]]]]]]].
+ econstructor.
+ split. apply exec_straight_one. simpl. eauto. auto.
+ split. rewrite <- Val.negate_cmpf_ne in B. rewrite <- Val.negate_cmpf_eq in A.
+ destruct c; apply MATCH; simpl; rewrite Val.notbool_negb_3; auto.
+ auto.
Qed.
(** Translation of arithmetic operations. *)