diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-03-29 11:57:33 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-03-29 11:57:33 +0000 |
commit | 448cc3ff32cc60f4b9e78911404106797e109d90 (patch) | |
tree | 4dcea174d56a4984238d014c481c8d484d653007 /arm/Asmgenproof1.v | |
parent | bf138748416195df13f68c097c750e1d388ac0de (diff) | |
download | compcert-448cc3ff32cc60f4b9e78911404106797e109d90.tar.gz compcert-448cc3ff32cc60f4b9e78911404106797e109d90.zip |
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.v | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arm/Asmgenproof1.v b/arm/Asmgenproof1.v index 629a6151..29197e90 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. *) |