https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126827

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2026-08-12
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
here is a list not implementing but is implemented in nonnegative:

Indepdent of arguments:
    CASE_CFN_ACOS:
    CASE_CFN_ACOS_FN:
    CASE_CFN_ACOSH:
    CASE_CFN_ACOSH_FN:
    CASE_CFN_ACOSPI:
    CASE_CFN_ACOSPI_FN:

    CASE_CFN_COSH:
    CASE_CFN_COSH_FN:
    CASE_CFN_ERFC:
    CASE_CFN_ERFC_FN:

    CASE_CFN_EXP:
    CASE_CFN_EXP_FN:
    CASE_CFN_EXP10:
    CASE_CFN_EXP2:
    CASE_CFN_EXP2_FN:

    CASE_CFN_FABS:
    CASE_CFN_FABS_FN:
    CASE_CFN_FDIM:
    CASE_CFN_FDIM_FN:
    CASE_CFN_HYPOT:
    CASE_CFN_HYPOT_FN:
    CASE_CFN_POW10:

Depends on arg0 being non-negative:
    CASE_CFN_ASINH:
    CASE_CFN_ASINH_FN:
    CASE_CFN_ASINPI:
    CASE_CFN_ASINPI_FN:
    CASE_CFN_ATAN:
    CASE_CFN_ATAN_FN:
    CASE_CFN_ATANH:
    CASE_CFN_ATANH_FN:
    CASE_CFN_ATANPI:
    CASE_CFN_ATANPI_FN:
    CASE_CFN_CBRT:
    CASE_CFN_CBRT_FN:
    CASE_CFN_CEIL:
    CASE_CFN_CEIL_FN:
    CASE_CFN_ERF:
    CASE_CFN_ERF_FN:
    CASE_CFN_EXPM1:
    CASE_CFN_EXPM1_FN:
    CASE_CFN_FLOOR:
    CASE_CFN_FLOOR_FN:
    CASE_CFN_FMOD:
    CASE_CFN_FMOD_FN:
    CASE_CFN_FREXP:
    CASE_CFN_FREXP_FN:
    CASE_CFN_ICEIL:
    CASE_CFN_IFLOOR:
    CASE_CFN_IRINT:
    CASE_CFN_IROUND:
    CASE_CFN_LCEIL:
    CASE_CFN_LDEXP:
    CASE_CFN_LFLOOR:
    CASE_CFN_LLCEIL:
    CASE_CFN_LLFLOOR:
    CASE_CFN_LLRINT:
    CASE_CFN_LLRINT_FN:
    CASE_CFN_LLROUND:
    CASE_CFN_LLROUND_FN:
    CASE_CFN_LRINT:
    CASE_CFN_LRINT_FN:
    CASE_CFN_LROUND:
    CASE_CFN_LROUND_FN:
    CASE_CFN_MODF:
    CASE_CFN_MODF_FN:
    CASE_CFN_NEARBYINT:
    CASE_CFN_NEARBYINT_FN:
    CASE_CFN_RINT:
    CASE_CFN_RINT_FN:
    CASE_CFN_ROUND:
    CASE_CFN_ROUND_FN:
    CASE_CFN_ROUNDEVEN:
    CASE_CFN_ROUNDEVEN_FN:
    CASE_CFN_SCALB:
    CASE_CFN_SCALBLN:
    CASE_CFN_SCALBLN_FN:
    CASE_CFN_SCALBN:
    CASE_CFN_SCALBN_FN:

    CASE_CFN_SIGNIFICAND:
    CASE_CFN_SINH:
    CASE_CFN_SINH_FN:
    CASE_CFN_TANH:
    CASE_CFN_TANH_FN:
    CASE_CFN_TRUNC:
    CASE_CFN_TRUNC_FN:

Slightly more complex based on arg0/arg1:
    CASE_CFN_FMAX:
    CASE_CFN_FMAX_FN:


Depends on both being non-negative:
    CASE_CFN_FMIN:
    CASE_CFN_FMIN_FN:


arg0 is non-negative then non-negative otherwise if arg1 is even (integer):
    CASE_CFN_POWI:

Same but fp being even instead of integer:
    CASE_CFN_POW:
    CASE_CFN_POW_FN:



powi testcase:
```
double f(double a, int b)
{
  b &= ~1;
  a = __builtin_powi(a, b);
  if (a < 0)
    __builtin_trap();
  return a;
}
```

Reply via email to