diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-04-20 18:27:36 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-04-20 18:27:36 +0200 |
commit | c0449b50b6d461dbc431ee881ba3a35604961a42 (patch) | |
tree | 961d5419bbe90260e42970df44257f4b019e3a67 /powerpc | |
parent | 0c9cc34f2306b3ea073684806118f1ab36cfc993 (diff) | |
parent | eead578fde08a1555086ed75714bca3ca1f9b1dc (diff) | |
download | compcert-kvx-c0449b50b6d461dbc431ee881ba3a35604961a42.tar.gz compcert-kvx-c0449b50b6d461dbc431ee881ba3a35604961a42.zip |
Merge remote-tracking branch 'origin/mppa-licm' into mppa-features
Diffstat (limited to 'powerpc')
-rw-r--r-- | powerpc/Archi.v | 2 | ||||
-rw-r--r-- | powerpc/Op.v | 12 |
2 files changed, 11 insertions, 3 deletions
diff --git a/powerpc/Archi.v b/powerpc/Archi.v index 10f38391..8f96dafc 100644 --- a/powerpc/Archi.v +++ b/powerpc/Archi.v @@ -71,3 +71,5 @@ Global Opaque ptr64 big_endian splitlong default_nan_32 choose_nan_32 fma_order fma_invalid_mul_is_nan float_of_single_preserves_sNaN. + +Definition has_notrap_loads := false. diff --git a/powerpc/Op.v b/powerpc/Op.v index b73cb14b..a0ee5bb8 100644 --- a/powerpc/Op.v +++ b/powerpc/Op.v @@ -592,14 +592,20 @@ Definition is_trapping_op (op : operation) := | _ => false end. +Definition args_of_operation op := + if eq_operation op Omove + then 1%nat + else List.length (fst (type_of_operation op)). + + Lemma is_trapping_op_sound: forall op vl sp m, - op <> Omove -> is_trapping_op op = false -> - (List.length vl) = (List.length (fst (type_of_operation op))) -> + (List.length vl) = args_of_operation op -> eval_operation genv sp op vl m <> None. Proof. - destruct op; intros; simpl in *; try congruence. + unfold args_of_operation. + destruct op; destruct eq_operation; intros; simpl in *; try congruence. all: try (destruct vl as [ | vh1 vl1]; try discriminate). all: try (destruct vl1 as [ | vh2 vl2]; try discriminate). all: try (destruct vl2 as [ | vh3 vl3]; try discriminate). |