diff options
author | Tim Rowley <[email protected]> | 2017-07-07 13:58:09 -0500 |
---|---|---|
committer | Tim Rowley <[email protected]> | 2017-07-19 15:12:07 -0500 |
commit | 1cb5a6061ce4b7f0cf5a9e5938bc1a11fe24b9ca (patch) | |
tree | dacc5d03adf64e6054a8ebcfb18f7d310bb20822 /src/gallium/drivers/swr | |
parent | f42186b01dbc78357ace1bf47feb69696471b580 (diff) |
configure/swr: add KNL and SKX architecture targets
Not built by default. Currently only builds with icc.
v2:
* document knl,skx possibilities for swr_archs
* merge with changed loader lib selection code
Reviewed-by: Emil Velikov <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr')
-rw-r--r-- | src/gallium/drivers/swr/Makefile.am | 38 | ||||
-rw-r--r-- | src/gallium/drivers/swr/swr_loader.cpp | 20 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/Makefile.am b/src/gallium/drivers/swr/Makefile.am index f38ce7b1d97..64950214572 100644 --- a/src/gallium/drivers/swr/Makefile.am +++ b/src/gallium/drivers/swr/Makefile.am @@ -63,6 +63,14 @@ if HAVE_SWR_AVX2 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX2 endif +if HAVE_SWR_KNL +libmesaswr_la_CXXFLAGS += -DHAVE_SWR_KNL +endif + +if HAVE_SWR_SKX +libmesaswr_la_CXXFLAGS += -DHAVE_SWR_SKX +endif + COMMON_SOURCES = \ $(ARCHRAST_CXX_SOURCES) \ $(COMMON_CXX_SOURCES) \ @@ -263,6 +271,36 @@ libswrAVX2_la_LDFLAGS = \ $(COMMON_LDFLAGS) endif +if HAVE_SWR_KNL +lib_LTLIBRARIES += libswrKNL.la + +libswrKNL_la_CXXFLAGS = \ + $(SWR_KNL_CXXFLAGS) \ + -DKNOB_ARCH=KNOB_ARCH_AVX512 -DAVX512F_STRICT \ + $(COMMON_CXXFLAGS) + +libswrKNL_la_SOURCES = \ + $(COMMON_SOURCES) + +libswrKNL_la_LDFLAGS = \ + $(COMMON_LDFLAGS) +endif + +if HAVE_SWR_SKX +lib_LTLIBRARIES += libswrSKX.la + +libswrSKX_la_CXXFLAGS = \ + $(SWR_SKX_CXXFLAGS) \ + -DKNOB_ARCH=KNOB_ARCH_AVX512 \ + $(COMMON_CXXFLAGS) + +libswrSKX_la_SOURCES = \ + $(COMMON_SOURCES) + +libswrSKX_la_LDFLAGS = \ + $(COMMON_LDFLAGS) +endif + include $(top_srcdir)/install-gallium-links.mk # Generated gen_builder.hpp is not backwards compatible. So ship only one diff --git a/src/gallium/drivers/swr/swr_loader.cpp b/src/gallium/drivers/swr/swr_loader.cpp index 4aa850a6b8d..e205fe2d7ef 100644 --- a/src/gallium/drivers/swr/swr_loader.cpp +++ b/src/gallium/drivers/swr/swr_loader.cpp @@ -38,6 +38,26 @@ swr_create_screen(struct sw_winsys *winsys) util_cpu_detect(); + if (!strlen(filename) && + util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512er) { +#if HAVE_SWR_KNL + fprintf(stderr, "KNL "); + sprintf(filename, "%s%s%s", UTIL_DL_PREFIX, "swrKNL", UTIL_DL_EXT); +#else + fprintf(stderr, "KNL (not built) "); +#endif + } + + if (!strlen(filename) && + util_cpu_caps.has_avx512f && util_cpu_caps.has_avx512bw) { +#if HAVE_SWR_SKX + fprintf(stderr, "SKX "); + sprintf(filename, "%s%s%s", UTIL_DL_PREFIX, "swrSKX", UTIL_DL_EXT); +#else + fprintf(stderr, "SKX (not built) "); +#endif + } + if (!strlen(filename) && util_cpu_caps.has_avx2) { #if HAVE_SWR_AVX2 fprintf(stderr, "AVX2 "); |