https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93722
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- But, x86 doesn't have 128bit rotate. For: void f0 (unsigned int *a) { unsigned long t0 = ((unsigned long *)a)[0]; unsigned long t1 = t0 >> sizeof(unsigned int)*8; unsigned long t2 = t0 << sizeof(unsigned int)*8; ((unsigned long *)a)[0] = t1 | t2; } gcc generates: rolq $32, (%rdi) ret