diff options
author | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2019-04-14 10:47:14 +0200 |
---|---|---|
committer | Xavier Leroy <xavierleroy@users.noreply.github.com> | 2019-05-20 18:00:46 +0200 |
commit | 43e7b6702a76306f20687bc9aba93ae465d6e4be (patch) | |
tree | 48531b9f57986b01315d2b3f87f8ac43b72c4c42 /powerpc/Asmgenproof.v | |
parent | 72ab6ad1dcf13dd61d3bdb896660b0f399e9f8a5 (diff) | |
download | compcert-kvx-43e7b6702a76306f20687bc9aba93ae465d6e4be.tar.gz compcert-kvx-43e7b6702a76306f20687bc9aba93ae465d6e4be.zip |
Implement a `Osel` operation for PowerPC
This operation compiles down to an `isel` instruction (conditional move).
The semantics is given by `Val.select`.
Diffstat (limited to 'powerpc/Asmgenproof.v')
-rw-r--r-- | powerpc/Asmgenproof.v | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/powerpc/Asmgenproof.v b/powerpc/Asmgenproof.v index d0d82cb5..4d0b41ba 100644 --- a/powerpc/Asmgenproof.v +++ b/powerpc/Asmgenproof.v @@ -248,6 +248,15 @@ Proof. destruct (snd (crbit_for_cond c0)); TailNoLabel. Qed. +Remark transl_select_op_label: + forall cond args r1 r2 rd k c, + transl_select_op cond args r1 r2 rd k = OK c -> tail_nolabel k c. +Proof. + unfold transl_select_op; intros. destruct (ireg_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. @@ -275,6 +284,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. Qed. Remark transl_memory_access_label: |