From: | Nathan Bossart <nathandbossart(at)gmail(dot)com> |
---|---|
To: | "Devulapalli, Raghuveer" <raghuveer(dot)devulapalli(at)intel(dot)com> |
Cc: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Use __attribute__((target(sse4.2))) for SSE42 CRC32C |
Date: | 2024-11-07 21:00:51 |
Message-ID: | Zy0qg7cnI3uMr-qn@nathan |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
+ __attribute__((target("sse4.2")))
These need to be surrounded with
#if defined(__has_attribute) && __has_attribute (target)
so that we still attempt the check on compilers that don't support it
(e.g., MSVC).
# Check for Intel SSE 4.2 intrinsics to do CRC calculations.
#
-# First check if the _mm_crc32_u8 and _mm_crc32_u64 intrinsics can be used
-# with the default compiler flags. If not, check if adding the -msse4.2
-# flag helps. CFLAGS_CRC is set to -msse4.2 if that's required.
+# Check if the _mm_crc32_u8 and _mm_crc32_u64 intrinsics can be used
+# with the __attribute__((target("sse4.2"))).
PGAC_SSE42_CRC32_INTRINSICS([])
-if test x"$pgac_sse42_crc32_intrinsics" != x"yes"; then
- PGAC_SSE42_CRC32_INTRINSICS([-msse4.2])
-fi
IIUC this means we will never set USE_SSE42_CRC32C_WITH_RUNTIME_CHECK. To
maintain the existing behavior, I think we need to still perform two
configure tests (one with __attribute__((target(...))) and another
without), and then we can choose whether to set USE_SSE42_CRC32C or
USE_SSE42_CRC32C_WITH_RUNTIME_CHECK based on the results.
+ 'pg_crc32c_sse42_choose.c',
+ 'pg_crc32c_sse42.c',
Can we combine these?
--
nathan
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2024-11-07 21:07:46 | Re: magical eref alias names |
Previous Message | Devulapalli, Raghuveer | 2024-11-07 20:50:48 | RE: Proposal for Updating CRC32C with AVX-512 Algorithm. |