diff options
author | Bernhard Schommer <bschommer@users.noreply.github.com> | 2019-05-28 10:33:34 +0200 |
---|---|---|
committer | Xavier Leroy <xavierleroy@users.noreply.github.com> | 2019-05-28 10:33:34 +0200 |
commit | e10555313645cf3c35f244f42afa5a03fba2bac1 (patch) | |
tree | 7b1e42b23ac78f5866681f12402d7c7aeceaecd3 /powerpc/Asmgenproof.v | |
parent | c36514ac4b05f78dd2e02fab3f8886cab8234925 (diff) | |
download | compcert-kvx-e10555313645cf3c35f244f42afa5a03fba2bac1.tar.gz compcert-kvx-e10555313645cf3c35f244f42afa5a03fba2bac1.zip |
Provide a float select operation for PowerPC. (#173)
The FP select for PowerPC stores both addresses in two
subsequent stack slots and loads them using an offset created
from the result of the comparison.
Diffstat (limited to 'powerpc/Asmgenproof.v')
-rw-r--r-- | powerpc/Asmgenproof.v | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/powerpc/Asmgenproof.v b/powerpc/Asmgenproof.v index 4d0b41ba..d653633c 100644 --- a/powerpc/Asmgenproof.v +++ b/powerpc/Asmgenproof.v @@ -257,6 +257,15 @@ Proof. eapply tail_nolabel_trans. eapply transl_cond_label; eauto. TailNoLabel. Qed. +Remark transl_fselect_op_label: + forall cond args r1 r2 rd k c, + transl_fselect_op cond args r1 r2 rd k = OK c -> tail_nolabel k c. +Proof. + unfold transl_fselect_op; intros. destruct (freg_eq r1 r2). + TailNoLabel. + eapply tail_nolabel_trans. eapply transl_cond_label; eauto. TailNoLabel. +Qed. + Remark transl_op_label: forall op args r k c, transl_op op args r k = OK c -> tail_nolabel k c. @@ -284,7 +293,7 @@ Opaque Int.eq. destruct Int64.eq. TailNoLabel. destruct ireg_eq; [apply tail_nolabel_cons; unfold nolabel;auto|]; eapply tail_nolabel_trans; TailNoLabel. - eapply transl_cond_op_label; eauto. -- eapply transl_select_op_label; eauto. +- destruct (preg_of r); monadInv H. eapply transl_select_op_label; eauto. eapply transl_fselect_op_label; eauto. Qed. Remark transl_memory_access_label: |