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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2021-11-09
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Arseny Solokha from comment #0)
> Is the corresponding check really sufficient for PowerISA before 3.0?

Hmm:
#ifdef USE_DARN
    unsigned int
    __attribute__((target("cpu=power9")))
    __ppc_darn(void*)
    {
      const uint64_t failed = -1;
      unsigned int retries = 10;
      uint64_t val = __builtin_darn();
      while (val == failed) [[__unlikely__]]
        {
          if (--retries == 0)
            std::__throw_runtime_error(__N("random_device: darn failed"));
          val = __builtin_darn();
        }
      return (uint32_t)val;
    }
#endif

BU_P9_MISC_0 (DARN_32,          "darn_32",              MISC, darn_32)
BU_P9_64BIT_MISC_0 (DARN_RAW,   "darn_raw",             MISC, darn_raw)
BU_P9_64BIT_MISC_0 (DARN,       "darn",                 MISC, darn)

Confirmed.  __builtin_darn is only enabled for 64bit while __builtin_darn_32 is
enabled for both.

Reply via email to