aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2018-04-04 11:40:16 +0200
committerCyril SIX <cyril.six@kalray.eu>2018-04-04 16:30:10 +0200
commit36076263491312d634bd0d39f8de718f32462da2 (patch)
tree3cfd58bba2cccd1bd52aae00d411c3f9ee2aa1cf /mppa_k1c
parent69813ed0107cd76caa322db5e1df1b7b969b7012 (diff)
downloadcompcert-kvx-36076263491312d634bd0d39f8de718f32462da2.tar.gz
compcert-kvx-36076263491312d634bd0d39f8de718f32462da2.zip
MPPA - Added signed immediate comparison
Diffstat (limited to 'mppa_k1c')
-rw-r--r--mppa_k1c/Asmgen.v6
-rw-r--r--mppa_k1c/Asmgenproof.v3
-rw-r--r--mppa_k1c/Asmgenproof1.v12
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).