summaryrefslogtreecommitdiff
path: root/util/compress/libdeflate/lib/x86/decompress_impl.h
blob: de6d2363143f265ffe272607ca56c0b82cae565a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef LIB_X86_DECOMPRESS_IMPL_H
#define LIB_X86_DECOMPRESS_IMPL_H

#include "cpu_features.h"

/* Include the BMI2-optimized version? */
#undef DISPATCH_BMI2
#if !defined(__BMI2__) && X86_CPU_FEATURES_ENABLED && \
	COMPILER_SUPPORTS_BMI2_TARGET
#  define FUNCNAME	deflate_decompress_bmi2
#  define ATTRIBUTES	__attribute__((target("bmi2")))
#  define DISPATCH	1
#  define DISPATCH_BMI2	1
#  include "../decompress_template.h"
#endif

#ifdef DISPATCH
static inline decompress_func_t
arch_select_decompress_func(void)
{
	u32 features = get_cpu_features();

#ifdef DISPATCH_BMI2
	if (features & X86_CPU_FEATURE_BMI2)
		return deflate_decompress_bmi2;
#endif
	return NULL;
}
#endif /* DISPATCH */

#endif /* LIB_X86_DECOMPRESS_IMPL_H */