Optimize pg_comp_crc32c_sse42 routine slightly, and also use it on x86.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: 936546dcbc24ad1f2b3d33e73aa5c5fde4d2be84
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2015-04-14T20:58:16Z
Releases: 9.5.0
Optimize pg_comp_crc32c_sse42 routine slightly, and also use it on x86.

Eliminate the separate 'len' variable from the loops, and also use the 4
byte instruction. This shaves off a few more cycles. Even though this
routine that uses the special SSE 4.2 instructions is much faster than a
generic routine, it's still a hot spot, so let's make it as fast as
possible.

Change the configure test to not test _mm_crc32_u64. That variant is only
available in the 64-bit x86-64 architecture, not in 32-bit x86. Modify
pg_comp_crc32c_sse42 so that it only uses _mm_crc32_u64 on x86-64. With
these changes, the SSE accelerated CRC-32C implementation can also be used
on 32-bit x86 systems.

This also fixes the 32-bit MSVC build.

Files

PathChange+/−
config/c-compiler.m4 modified +7 −3
configure modified +6 −6
src/port/pg_crc32c_sse42.c modified +28 −13