On 05/09/2022 14:20, Richard Henderson wrote:
Well, there would of course be no separate call, but
I didn't understand what you meant here with 'no separate call'...
do_float_check_status would:
int status = get_float_exception_flags(&env->fp_status);
set_float_exception_flags(0, &env->fp_status);
straight away. No extra call overhead, and the steady-state of softfp
exception flags
outside of an in-progress fp operation is 0.
Right, makes sense. And what about when an invalid operation occurs,
with the corresponding exception enabled bit set?
float_invalid_op_* would stop the execution and do_float_check_status
would not be called, right? So it would require to call
set_float_exception_flags there too, correct?
If that's all that's necessary, I might be able to take a look at it and
come with a possible patch.
Anything that can raise a softfp exception and doesn't do something with
it, either
immediately within the same helper, or just afterward with
helper_float_check_status, is
buggy. With those fixed, helper_reset_fpstatus may be removed entirely.
Oh, that makes sense. It's easier to implement the idea using this
assumption.
--
Víctor Cora Colombo
Instituto de Pesquisas ELDORADO
Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html>