Proof with eauto 10 using val_erasure_cmpu with regs_erasure val_erasure.
intros.
unfold compare_floats.
destruct v1,v2; inv Hval_erasure; inv Hval_erasure2; simpl;
eauto 6 with regs_erasure val_erasure;
try destruct v1'; try destruct v2';
eauto 6 with regs_erasure val_erasure;
unfold Val.of_bool;
repeat rewrite if_negb;
repeat match goal with
| [|- context[match ?Expr with | _ => _ end]] =>
destruct Expr eqn:?
end...
Qed.

Lemma compare_floats32_erasure:
forall v1 v2 v1' v2' rs rs'
(Hval_erasure: val_erasure v1 v1')
(Hval_erasure2: val_erasure v2 v2')
(Hrs: regs_erasure rs rs'),
regs_erasure (compare_floats32 v1 v2 rs)
(compare_floats32 v1' v2' rs').