]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
[huf] Fix compilation when DYNAMIC_BMI2=0 && BMI2 is supported 2791/head
authorNick Terrell <terrelln@fb.com>
Tue, 21 Sep 2021 23:36:33 +0000 (16:36 -0700)
committerNick Terrell <terrelln@fb.com>
Tue, 21 Sep 2021 23:49:13 +0000 (16:49 -0700)
* Fix compilation issues pointed out in PR #2790.
* Add test cases to GitHub actions that test all combinations of
  `DYNAMIC_BMI2` BMI2 support.

.github/workflows/dev-short-tests.yml
lib/decompress/huf_decompress.c

index 5d7e54b51a1ad65f8a140c6f9d7fab1565f5ee00..056f5cbf14abb836dc6cfece17cec854eb8c84d9 100644 (file)
@@ -200,6 +200,18 @@ jobs:
         make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
         make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
 
+  dynamic-bmi2:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - name: dynamic bmi2 tests
+      run: |
+        make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
+        make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1"
+        make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2"
+        make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0"
+        make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2"
+
   test-variants:
     runs-on: ubuntu-latest
     steps:
index 1dfa4b8015ae9511b008fe23cad2337673b7da66..2efca7dd534ae1cd5f82359183ca22dd96518a88 100644 (file)
 #endif
 #define HUF_ASM_DECL HUF_EXTERN_C
 
+#if DYNAMIC_BMI2 || (HUF_ENABLE_ASM_X86_64_BMI2 && defined(__BMI2__))
+# define HUF_NEED_BMI2_FUNCTION 1
+#else
+# define HUF_NEED_BMI2_FUNCTION 0
+#endif
+
+#if !(HUF_ENABLE_ASM_X86_64_BMI2 && defined(__BMI2__))
+# define HUF_NEED_DEFAULT_FUNCTION 1
+#else
+# define HUF_NEED_DEFAULT_FUNCTION 0
+#endif
+
 /* **************************************************************
 *  Error Management
 ****************************************************************/
@@ -653,7 +665,7 @@ HUF_decompress4X1_usingDTable_internal_body(
     }
 }
 
-#if DYNAMIC_BMI2
+#if HUF_NEED_BMI2_FUNCTION
 static TARGET_ATTRIBUTE("bmi2")
 size_t HUF_decompress4X1_usingDTable_internal_bmi2(void* dst, size_t dstSize, void const* cSrc,
                     size_t cSrcSize, HUF_DTable const* DTable) {
@@ -661,11 +673,13 @@ size_t HUF_decompress4X1_usingDTable_internal_bmi2(void* dst, size_t dstSize, vo
 }
 #endif
 
+#if HUF_NEED_DEFAULT_FUNCTION
 static
 size_t HUF_decompress4X1_usingDTable_internal_default(void* dst, size_t dstSize, void const* cSrc,
                     size_t cSrcSize, HUF_DTable const* DTable) {
     return HUF_decompress4X1_usingDTable_internal_body(dst, dstSize, cSrc, cSrcSize, DTable);
 }
+#endif
 
 #if HUF_ENABLE_ASM_X86_64_BMI2
 
@@ -1365,7 +1379,7 @@ HUF_decompress4X2_usingDTable_internal_body(
     }
 }
 
-#if DYNAMIC_BMI2
+#if HUF_NEED_BMI2_FUNCTION
 static TARGET_ATTRIBUTE("bmi2")
 size_t HUF_decompress4X2_usingDTable_internal_bmi2(void* dst, size_t dstSize, void const* cSrc,
                     size_t cSrcSize, HUF_DTable const* DTable) {
@@ -1373,11 +1387,13 @@ size_t HUF_decompress4X2_usingDTable_internal_bmi2(void* dst, size_t dstSize, vo
 }
 #endif
 
+#if HUF_NEED_DEFAULT_FUNCTION
 static
 size_t HUF_decompress4X2_usingDTable_internal_default(void* dst, size_t dstSize, void const* cSrc,
                     size_t cSrcSize, HUF_DTable const* DTable) {
     return HUF_decompress4X2_usingDTable_internal_body(dst, dstSize, cSrc, cSrcSize, DTable);
 }
+#endif
 
 #if HUF_ENABLE_ASM_X86_64_BMI2