From: | Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Optimize pg_comp_crc32c_sse42 routine slightly, and also use it |
Date: | 2015-04-14 21:00:36 |
Message-ID: | E1Yi7wi-0007O0-4I@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
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.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/936546dcbc24ad1f2b3d33e73aa5c5fde4d2be84
Modified Files
--------------
config/c-compiler.m4 | 10 +++++++---
configure | 12 ++++++------
src/port/pg_crc32c_sse42.c | 41 ++++++++++++++++++++++++++++-------------
3 files changed, 41 insertions(+), 22 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2015-04-15 00:32:12 | pgsql: Move pg_upgrade from contrib/ to src/bin/ |
Previous Message | Heikki Linnakangas | 2015-04-14 19:01:17 | pgsql: Oops, fix misspelled #endif |