|
| From: | BALATON Zoltan |
| Subject: | Re: [RFC PATCH] softfloat: use QEMU_FLATTEN to avoid mistaken isra inlining |
| Date: | Fri, 26 May 2023 01:19:10 +0200 (CEST) |
On Thu, 25 May 2023, Paolo Bonzini wrote:
On 5/23/23 16:33, Richard Henderson wrote:The tests are poorly ordered, testing many unlikely things before the most likely thing (normal). A better ordering would beif (likely(tp##_is_normal(arg))) { } else if (tp##_is_zero(arg)) { } else if (tp##_is_zero_or_denormal(arg)) { } else if (tp##_is_infinity(arg)) { } else { // nan case }Might also benefit from a is_finite (true if zero or normal or denormal) predicate, to doif (tp##_is_finite(arg)) {
There seems to be only is_infinity but I'm not sure if is_finite would be the same as !is_infinity so could not try this. But it seems having any branches kills performance so adding more branches may not help (also because infinite values may be less frequent so not sure why this would be better).
Regards, BALATON Zoltan
if (!tp##_is_zero_or_denormal(arg)) { // normal } else if (tp##_is_zero(arg)) { } else { // denormal } } else if (tp##_is_infinity(arg)) { } else { // nan }since is_normal is a bit more complex and inefficient than the others. The compiler should easily reuse the result of masking away the sign bit.Paolo
| [Prev in Thread] | Current Thread | [Next in Thread] |