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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
For unsigned long:
void f(unsigned long *a)
{
  unsigned long t0 = a[0];
  unsigned long t1 = a[1];
  a[1] = t0;
  a[0] = t1;
}
void f0(unsigned long *a)
{
  __uint128_t t0 = ((__uint128_t *)a)[0];
  __uint128_t t1 = t0>>sizeof(unsigned long)*8;
  __uint128_t  t2 = t0<<sizeof(unsigned long)*8;
  ((__uint128_t*)a)[0] = t1 | t2;
}

--- CUT ---
Note I will file f0 not producing rolq soon.

Reply via email to