The 32bit opcode variant needs an explicit l suffix for clang.
The test is still failing due the the flags mask/printf.
With clang, in gdb jusrt before the crc32 opcode rthe flags are
eflags 0x200296 [ PF AF SF IF ID ]
but with gcc
eflags 0x200202 [ IF ID ]
AF and SF need to be masked. It seems to work without masking PF,
not sure why, need to look at that a bit more.
__asm__ __volatile__(
"movl %0, %%eax" "\n\t"
"movl 4(%%eax), %%ecx" "\n\t"
- "crc32 0(%%eax), %%ecx" "\n\t"
+ "crc32l 0(%%eax), %%ecx" "\n\t"
"movl %%ecx, 8(%%eax)" "\n\t"
"pushf" "\n\t"
"popl %%edx" "\n\t"