On Wednesday, 2017-11-15 17:10:59 -0800, Dylan Baker wrote: > 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']
Nit: newline here Patches 1, 3 & 4 are: Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com> > + # 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