]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Alignment instruction ZSTD_ALIGNED() in common/compiler.h
authorYann Collet <yann.collet.73@gmail.com>
Tue, 14 Jan 2025 23:54:10 +0000 (15:54 -0800)
committerYann Collet <cyan@fb.com>
Thu, 16 Jan 2025 01:11:27 +0000 (17:11 -0800)
lib/common/compiler.h
lib/compress/zstd_compress.c

index f636b7f25519f19387e34e6e303daea4f77f1b35..2a8002288aca6e30eb4261c9cff83ca8cf94c7eb 100644 (file)
 #endif
 
 /*-**************************************************************
-*  Alignment check
+*  Alignment
 *****************************************************************/
 
 /* @return 1 if @u is a 2^n value, 0 otherwise
@@ -315,6 +315,19 @@ MEM_STATIC int ZSTD_isPower2(size_t u) {
 # endif
 #endif /* ZSTD_ALIGNOF */
 
+#ifndef ZSTD_ALIGNED
+/* C90-compatible alignment macro (GCC/Clang). Adjust for other compilers if needed. */
+# if defined(__GNUC__)
+#  define ZSTD_ALIGNED(a) __attribute__((aligned(a)))
+# elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */
+#  define ZSTD_ALIGNED(a) alignas(a)
+# else
+   /* this compiler will require its own alignment instruction */
+#  define ZSTD_ALIGNED(...)
+# endif
+#endif /* ZSTD_ALIGNED */
+
+
 /*-**************************************************************
 *  Sanitizer
 *****************************************************************/
index 8e5f369bb1294c8278a1a07dd54b07431a7f7645..eba2d07dcf565bd3d414e2d8de10abde4ef4beef 100644 (file)
@@ -7386,22 +7386,12 @@ size_t ZSTD_convertBlockSequences(ZSTD_CCtx* cctx,
 
 #if defined(ZSTD_ARCH_X86_AVX2)
 
-/* C90-compatible alignment macro (GCC/Clang). Adjust for other compilers if needed. */
-#if defined(__GNUC__)
-#  define ALIGNED32 __attribute__((aligned(32)))
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */
-#  define ALIGNED32 alignas(32)
-#else
-   /* this compiler will require its own alignment instruction */
-#  define ALIGNED32
-#endif
-
 BlockSummary ZSTD_get1BlockSummary(const ZSTD_Sequence* seqs, size_t nbSeqs)
 {
     size_t i;
     __m256i const zeroVec = _mm256_setzero_si256();
     __m256i sumVec = zeroVec;  /* accumulates match+lit in 32-bit lanes */
-    ALIGNED32 U32 tmp[8];      /* temporary buffer for reduction */
+    ZSTD_ALIGNED(32) U32 tmp[8];      /* temporary buffer for reduction */
     size_t mSum = 0, lSum = 0;
     ZSTD_STATIC_ASSERT(sizeof(ZSTD_Sequence) == 16);