[Bug target/105429] Unnecessary moves generated with _mm_crc32_u64

2022-04-29 Thread kspalaiologos at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105429 --- Comment #2 from Palaiologos --- I have observed the same behaviour with and without `mov eax, eax`. CRC32 is a 32-bit checksum, so I'd presume that the high bits aren't considered by the instruction. To support my claim, Vol. 2A 3-257 of

[Bug target/105429] Unnecessary moves generated with _mm_crc32_u64

2022-04-29 Thread ubizjak at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105429 --- Comment #1 from Uroš Bizjak --- The intrinsic is defined as: unsinged __int64 _mm_crc32_u64( unsinged __int64 crc, unsigned __int64 data ) and the unnecessary move is in fact zero-extend: movl%eax, %eax # 16[c=1 l=2]

[Bug target/105429] Unnecessary moves generated with _mm_crc32_u64

2022-04-28 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105429 Andrew Pinski changed: What|Removed |Added Severity|normal |enhancement