diff options
author | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-10-27 17:03:26 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-10-28 17:16:18 +0200 |
commit | d194e47a7d494944385ff61c194693f8a67787cb (patch) | |
tree | f7e81e1152df6ff9bae7d01391a6c00c8ad9cbc6 /powerpc/Asmgenproof1.v | |
parent | a420914d237c96d0c5cd3a9055a0338c0d6805d4 (diff) | |
download | compcert-kvx-d194e47a7d494944385ff61c194693f8a67787cb.tar.gz compcert-kvx-d194e47a7d494944385ff61c194693f8a67787cb.zip |
PPC64: revised generation of rldic* instructions
In Op.v, the definitions of is_rldl_mask and is_rldr_mask mask were
swapped:
- rldl is for [00001111] masks that clear on the left,
hence start with 1s and finish with 0s;
- rldr is for [11110000] masks that clear on the right,
hence start with 0s and finish with 1s.
In Asmgen.v, the case for masks of the form [00011111100] that can
generate a rldic instruction was incorrectly detected.
Diffstat (limited to 'powerpc/Asmgenproof1.v')
-rw-r--r-- | powerpc/Asmgenproof1.v | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/powerpc/Asmgenproof1.v b/powerpc/Asmgenproof1.v index 6ae520ef..761833cc 100644 --- a/powerpc/Asmgenproof1.v +++ b/powerpc/Asmgenproof1.v @@ -788,7 +788,7 @@ Lemma rolm64_correct: /\ forall r': preg, r' <> r1 -> r' <> GPR12 -> important_preg r' = true -> rs'#r' = rs#r'. Proof. intros. unfold rolm64. - destruct (is_rldl_mask mask || is_rldr_mask mask || is_rldl_mask (Int64.shru' mask amount)). + destruct orb. - econstructor; split. eapply exec_straight_one. simpl; reflexivity. reflexivity. intuition Simpl. - edestruct (andimm64_base_correct r1 r1 mask k) as (rs2 & A & B & C); auto. |