This patch checks for an and then enables sse4.1 optimizations if the host machine will be x86/x86_64.
Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> --- meson.build | 27 ++++++++++++++++++++++++++- src/mesa/meson.build | 14 +++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 1c4200705f3..0d201c711a0 100644 --- a/meson.build +++ b/meson.build @@ -502,7 +502,32 @@ foreach a : ['-Wno-override-init', '-Wno-initializer-overrides'] endif endforeach -# TODO: SSE41 (which is only required for core mesa) +with_sse41 = false +if host_machine.cpu_family().startswith('x86') + sse41_args = ['-msse4.1'] + # GCC on x86 (not 64) with -msse* assumes a 16 byte aligned stack, but that's + # not guaranteed + if host_machine.cpu_family() == 'x86' + sse41_args += '-mstackrealign' + endif + + _code = ''' + #include <smmintrin.h> + int param; + int main () { + __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c; + c = _mm_max_epu32(a, b); + return _mm_cvtsi128_si32(c); + } + ''' + + if cc.compiles(_code, args : sse41_args, name : 'SSE4.1') + pre_args += '-DHAVE_SSE41' + with_sse41 = true + endif +else + sse41_args = [] +endif # Check for GCC style atomics if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }', diff --git a/src/mesa/meson.build b/src/mesa/meson.build index b839fd02981..05a3a9ac55d 100644 --- a/src/mesa/meson.build +++ b/src/mesa/meson.build @@ -592,9 +592,6 @@ files_libmesa_gallium = files( 'state_tracker/st_vdpau.h', ) -# TODO: sse41 -libmesa_sse41 = [] - matypes_h = [] if with_asm_arch == 'x86' or with_asm_arch == 'x86_64' gen_matypes = executable( @@ -692,6 +689,17 @@ files_libmesa_common += [ sha1_h, ] +if with_sse41 + libmesa_sse41 = static_library( + 'mesa_sse41', + files('main/streaming-load-memcpy.c', 'main/sse_minmax.c'), + c_args : [c_vis_args, c_msvc_compat_args, sse41_args], + include_directories : inc_common, + ) +else + libmesa_sse41 = [] +endif + libmesa_classic = static_library( 'mesa_classic', [files_libmesa_common, files_libmesa_classic], -- 2.15.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev