163 | 163 |
$(all_llvm_fuzz_tests): % : %.o $(lib_name)
|
164 | 164 |
$(CXX) $(CXXFLAGS) $^ $(LDLIBS) $(FUZZLINK) -o $@
|
165 | 165 |
|
|
166 |
|
166 | 167 |
# Check for modern as
|
167 | |
tmpfile := $(shell mktemp)
|
168 | |
have_as_w_avx512 ?= $(shell printf "vinserti32x8 zmm0, ymm1, 1;" > ${tmpfile} && $(AS) $(ASFLAGS) ${tmpfile} -o /dev/null 2> /dev/null && echo y; rm ${tmpfile})
|
169 | |
D_HAVE_AS_KNOWS_AVX512_$(have_as_w_avx512) := -DHAVE_AS_KNOWS_AVX512
|
170 | |
CFLAGS += $(D_HAVE_AS_KNOWS_AVX512_y)
|
171 | |
ASFLAGS += $(D_HAVE_AS_KNOWS_AVX512_y)
|
|
168 |
test-as = $(shell hash printf && printf $(3) > $(2) && $(AS) $(ASFLAGS) ${tmpf} -o /dev/null 2> /dev/null && echo $(1) || echo $(4))
|
|
169 |
as_4 := "pblendvb xmm2, xmm1;"
|
|
170 |
as_6 := "vinserti32x8 zmm0, ymm1, 1;"
|
|
171 |
as_10 := "vpcompressb zmm0 {k1}, zmm1;"
|
|
172 |
|
|
173 |
tmpf := $(shell mktemp)
|
|
174 |
as_feature_level := $(call test-as, 4, $(tmpf), $(as_4), $(as_feature_level))
|
|
175 |
as_feature_level := $(call test-as, 6, $(tmpf), $(as_6), $(as_feature_level))
|
|
176 |
as_feature_level := $(call test-as, 10, $(tmpf), $(as_10), $(as_feature_level))
|
|
177 |
tmpf := $(shell rm ${tmpf})
|
|
178 |
|
|
179 |
ifneq ($(findstring $(as_feature_level),6 10),)
|
|
180 |
D_HAVE_AS_KNOWS_AVX512_y := -DHAVE_AS_KNOWS_AVX512
|
|
181 |
endif
|
|
182 |
|
|
183 |
CFLAGS += -DAS_FEATURE_LEVEL=$(as_feature_level) $(D_HAVE_AS_KNOWS_AVX512_y)
|
|
184 |
ASFLAGS += -DAS_FEATURE_LEVEL=$(as_feature_level) $(D_HAVE_AS_KNOWS_AVX512_y)
|
|
185 |
|
172 | 186 |
|
173 | 187 |
# Check for pthreads
|
174 | 188 |
have_threads ?= $(shell printf "\#include <pthread.h>\nint main(void){return 0;}\n" | $(CC) -x c - -o /dev/null -lpthread && echo y )
|