summaryrefslogtreecommitdiff
path: root/util/compress/libdeflate/lib/x86/crc32_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'util/compress/libdeflate/lib/x86/crc32_impl.h')
-rw-r--r--util/compress/libdeflate/lib/x86/crc32_impl.h92
1 files changed, 0 insertions, 92 deletions
diff --git a/util/compress/libdeflate/lib/x86/crc32_impl.h b/util/compress/libdeflate/lib/x86/crc32_impl.h
deleted file mode 100644
index 14a686792..000000000
--- a/util/compress/libdeflate/lib/x86/crc32_impl.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * x86/crc32_impl.h - x86 implementations of CRC-32 checksum algorithm
- *
- * Copyright 2016 Eric Biggers
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef LIB_X86_CRC32_IMPL_H
-#define LIB_X86_CRC32_IMPL_H
-
-#include "cpu_features.h"
-
-/*
- * Include the PCLMUL/AVX implementation? Although our PCLMUL-optimized CRC-32
- * function doesn't use any AVX intrinsics specifically, it can benefit a lot
- * from being compiled for an AVX target: on Skylake, ~16700 MB/s vs. ~10100
- * MB/s. I expect this is related to the PCLMULQDQ instructions being assembled
- * in the newer three-operand form rather than the older two-operand form.
- *
- * Note: this is only needed if __AVX__ is *not* defined, since otherwise the
- * "regular" PCLMUL implementation would already be AVX enabled.
- */
-#undef DISPATCH_PCLMUL_AVX
-#if !defined(DEFAULT_IMPL) && !defined(__AVX__) && \
- X86_CPU_FEATURES_ENABLED && COMPILER_SUPPORTS_AVX_TARGET && \
- (defined(__PCLMUL__) || COMPILER_SUPPORTS_PCLMUL_TARGET_INTRINSICS)
-# define FUNCNAME crc32_pclmul_avx
-# define FUNCNAME_ALIGNED crc32_pclmul_avx_aligned
-# define ATTRIBUTES __attribute__((target("pclmul,avx")))
-# define DISPATCH 1
-# define DISPATCH_PCLMUL_AVX 1
-# include "crc32_pclmul_template.h"
-#endif
-
-/* PCLMUL implementation */
-#undef DISPATCH_PCLMUL
-#if !defined(DEFAULT_IMPL) && \
- (defined(__PCLMUL__) || (X86_CPU_FEATURES_ENABLED && \
- COMPILER_SUPPORTS_PCLMUL_TARGET_INTRINSICS))
-# define FUNCNAME crc32_pclmul
-# define FUNCNAME_ALIGNED crc32_pclmul_aligned
-# ifdef __PCLMUL__
-# define ATTRIBUTES
-# define DEFAULT_IMPL crc32_pclmul
-# else
-# define ATTRIBUTES __attribute__((target("pclmul")))
-# define DISPATCH 1
-# define DISPATCH_PCLMUL 1
-# endif
-# include "crc32_pclmul_template.h"
-#endif
-
-#ifdef DISPATCH
-static inline crc32_func_t
-arch_select_crc32_func(void)
-{
- u32 features = get_cpu_features();
-
-#ifdef DISPATCH_PCLMUL_AVX
- if ((features & X86_CPU_FEATURE_PCLMUL) &&
- (features & X86_CPU_FEATURE_AVX))
- return crc32_pclmul_avx;
-#endif
-#ifdef DISPATCH_PCLMUL
- if (features & X86_CPU_FEATURE_PCLMUL)
- return crc32_pclmul;
-#endif
- return NULL;
-}
-#endif /* DISPATCH */
-
-#endif /* LIB_X86_CRC32_IMPL_H */