[Bug tree-optimization/93721] swapping adjacent scalars could be more efficient
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 13 01:38:00 GMT 2020
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.
More information about the Gcc-bugs
mailing list