diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2018-04-04 11:40:16 +0200 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2018-04-04 16:30:10 +0200 |
commit | 36076263491312d634bd0d39f8de718f32462da2 (patch) | |
tree | 3cfd58bba2cccd1bd52aae00d411c3f9ee2aa1cf /mppa_k1c | |
parent | 69813ed0107cd76caa322db5e1df1b7b969b7012 (diff) | |
download | compcert-kvx-36076263491312d634bd0d39f8de718f32462da2.tar.gz compcert-kvx-36076263491312d634bd0d39f8de718f32462da2.zip |
MPPA - Added signed immediate comparison
Diffstat (limited to 'mppa_k1c')
-rw-r--r-- | mppa_k1c/Asmgen.v | 6 | ||||
-rw-r--r-- | mppa_k1c/Asmgenproof.v | 3 | ||||
-rw-r--r-- | mppa_k1c/Asmgenproof1.v | 12 |
3 files changed, 18 insertions, 3 deletions
diff --git a/mppa_k1c/Asmgen.v b/mppa_k1c/Asmgen.v index 4b249f91..bd65bab9 100644 --- a/mppa_k1c/Asmgen.v +++ b/mppa_k1c/Asmgen.v @@ -140,10 +140,10 @@ Definition transl_cbranch | Ccompu c, a1 :: a2 :: nil => do r1 <- ireg_of a1; do r2 <- ireg_of a2; OK (transl_cond_int32u c rd r1 r2 k) - | Ccompimm c n, a1 :: nil => +*)| Ccompimm c n, a1 :: nil => do r1 <- ireg_of a1; - OK (transl_condimm_int32s c rd r1 n k) - | Ccompl c, a1 :: a2 :: nil => + OK (loadimm32 RTMP n (transl_comp c Signed r1 RTMP lbl k)) +(*| Ccompl c, a1 :: a2 :: nil => do r1 <- ireg_of a1; do r2 <- ireg_of a2; OK (transl_cond_int64s c rd r1 r2 k) | Ccomplu c, a1 :: a2 :: nil => diff --git a/mppa_k1c/Asmgenproof.v b/mppa_k1c/Asmgenproof.v index dd495cd4..cc5383a0 100644 --- a/mppa_k1c/Asmgenproof.v +++ b/mppa_k1c/Asmgenproof.v @@ -180,6 +180,9 @@ Remark transl_cbranch_label: transl_cbranch cond args lbl k = OK c -> tail_nolabel k c. Proof. intros. unfold transl_cbranch in H. (* unfold transl_cond_op in H. *) destruct cond; TailNoLabel. +(* Ccompimm *) + - unfold loadimm32. destruct (make_immed32 n); TailNoLabel. unfold transl_comp; TailNoLabel. +(* Ccompuimm *) - unfold loadimm32. destruct (make_immed32 n); TailNoLabel. unfold transl_comp; TailNoLabel. Qed. diff --git a/mppa_k1c/Asmgenproof1.v b/mppa_k1c/Asmgenproof1.v index e16dbbaf..1d5a26c9 100644 --- a/mppa_k1c/Asmgenproof1.v +++ b/mppa_k1c/Asmgenproof1.v @@ -408,6 +408,18 @@ Proof. { apply eval_condition_lessdef with (map ms args) m; auto. eapply preg_vals; eauto. } clear EVAL MEXT AG. destruct cond; simpl in TRANSL; ArgsInv. +(* Ccompimm *) +- exploit (loadimm32_correct GPR31 n); eauto. intros (rs' & A & B & C). + exploit (transl_comp_correct c0 x GPR31 lbl); eauto. intros (rs'2 & A' & B' & C'). + exists rs'2, (Pcb BTwnez GPR31 lbl). + split. + + constructor. apply exec_straight_trans + with (c2 := (transl_comp c0 Signed x GPR31 lbl k)) (rs2 := rs') (m2 := m'). + eexact A. eexact A'. + + split; auto. + * apply C'; auto. unfold getw. rewrite B, C; eauto with asmgen. + * intros. rewrite B'; eauto with asmgen. +(* Ccompuimm *) - exploit (loadimm32_correct GPR31 n); eauto. intros (rs' & A & B & C). exploit (transl_compu_correct c0 x GPR31 lbl); eauto. intros (rs'2 & A' & B' & C'). exists rs'2, (Pcb BTwnez GPR31 lbl). |