aboutsummaryrefslogtreecommitdiffstats
path: root/riscV/NeedOp.v
diff options
context:
space:
mode:
Diffstat (limited to 'riscV/NeedOp.v')
-rw-r--r--riscV/NeedOp.v11
1 files changed, 11 insertions, 0 deletions
diff --git a/riscV/NeedOp.v b/riscV/NeedOp.v
index 136c157f..9e1ad004 100644
--- a/riscV/NeedOp.v
+++ b/riscV/NeedOp.v
@@ -91,6 +91,7 @@ Definition needs_of_operation (op: operation) (nv: nval): list nval :=
| Obits_of_float => op1 (default nv)
| Osingle_of_bits => op1 (default nv)
| Ofloat_of_bits => op1 (default nv)
+ | Oselectl => All :: nv :: nv :: nil
end.
Definition operation_is_redundant (op: operation) (nv: nval): bool :=
@@ -158,6 +159,16 @@ Proof.
- apply shlimm_sound; auto.
- apply shrimm_sound; auto.
- apply shruimm_sound; auto.
+- (* selectl *)
+ unfold ExtValues.select01_long.
+ destruct v0; auto with na.
+ assert (Val.lessdef (Vint i) v4) as LESSDEF by auto with na.
+ inv LESSDEF.
+ destruct (Int.eq i Int.one).
+ { apply normalize_sound; auto. }
+ destruct (Int.eq i Int.zero).
+ { apply normalize_sound; auto. }
+ cbn. auto with na.
Qed.
Lemma operation_is_redundant_sound: