[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