[libclc] [libclc] Reduce bithacking for INF/NAN values (PR #129738)
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Mon May 5 06:56:48 PDT 2025
================
@@ -46,9 +46,7 @@ _CLC_DEF _CLC_OVERLOAD __CLC_GENTYPE __clc_hypot(__CLC_GENTYPE x,
__CLC_GENTYPE retval = __clc_sqrt(__clc_mad(fx, fx, fy * fy)) * fx_exp;
retval = (ux > PINFBITPATT_SP32 || uy == 0) ? __CLC_AS_GENTYPE(ux) : retval;
- retval = (ux == PINFBITPATT_SP32 || uy == PINFBITPATT_SP32)
- ? __CLC_AS_GENTYPE((__CLC_UINTN)PINFBITPATT_SP32)
- : retval;
+ retval = __clc_isinf(x) || __clc_isinf(y) ? __CLC_GENTYPE_INF : retval;
----------------
arsenm wrote:
```
float hypot(float x, float y) {
float a = __builtin_fabsf(x);
float b = __builtin_fabsf(y);
float t = __builtin_fmaxf(a, b);
int e = __clc_frexp_exp(t) ;
a = __builtin_ldexpf(a, -e);
b = __builtin_ldexpf(b, -e);
float ret = __builtin_ldexpf(__clc_sqrt(__clc_mad(a, a, b*b)), e);
ret = __builtin_isinf(t) ? PINF_F32 : ret;
return ret;
}
```
https://github.com/llvm/llvm-project/pull/129738
More information about the cfe-commits
mailing list