Some applications make heavy use of the crc32 operation (e.g., as part
of a hash function), so having a FastISel path avoids fallbacks to
SelectionDAG and improves compile times, in our case by ~1.5%.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/test/CodeGen/X86/crc32-intrinsics-fast-isel-x86_64.ll | ||
---|---|---|
10 | Please can you add a crc32-intrinsics-fast-isel-x86.ll file and put theses 32-bit tests there (with 32-bit and 64-bit targets test coverage). |
Add i686 tests. -fast-isel-abort=3 doesn't work, so I instead check that the call wasn't missed.
llvm/test/CodeGen/X86/crc32-intrinsics-fast-isel-x86_64.ll | ||
---|---|---|
10 | Add test_mm_crc64_u8 back with the i64 arg + trunc trick |
llvm/test/CodeGen/X86/crc32-intrinsics-fast-isel-x86_64.ll | ||
---|---|---|
10 | Done, but not sure whether this is the best place to test this, llvm.x86.sse42.crc32.64.8 is just an auto-upgrade to x86_sse42_crc32_32_8. |
llvm/test/CodeGen/X86/crc32-intrinsics-fast-isel-x86_64.ll | ||
---|---|---|
22 | undo this name change |
Change test name.
I personally don't like "crc64", because the instruction is named crc32, not crc64 (which is a CRC variant that uses a different polynomial than the x86 instruction).
Please can you add a crc32-intrinsics-fast-isel-x86.ll file and put theses 32-bit tests there (with 32-bit and 64-bit targets test coverage).