meson: Enable SSE4.1 for MSVC

Modern MSVC always supports compiling with the SSE4.1 intrinsics with
no additional command line options, but doesn't have any options for
auto-vectorizing into SSE4.1.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16840>
This commit is contained in:
Jesse Natalie 2022-06-03 07:38:40 -07:00 committed by Marge Bot
parent ad0d39efed
commit 2d04206673

View file

@ -1260,34 +1260,36 @@ if host_machine.system() == 'windows'
endif endif
endif endif
if host_machine.cpu_family().startswith('x86') and cc.get_argument_syntax() != 'msvc' sse41_args = []
with_sse41 = false
if host_machine.cpu_family().startswith('x86')
pre_args += '-DUSE_SSE41' pre_args += '-DUSE_SSE41'
with_sse41 = true with_sse41 = true
sse41_args = ['-msse4.1']
if host_machine.cpu_family() == 'x86' if cc.get_id() != 'msvc'
if get_option('sse2') sse41_args = ['-msse4.1']
# These settings make generated GCC code match MSVC and follow
# GCC advice on https://gcc.gnu.org/wiki/FloatingPointMath#x86note if host_machine.cpu_family() == 'x86'
# if get_option('sse2')
# NOTE: We need to ensure stack is realigned given that we # These settings make generated GCC code match MSVC and follow
# produce shared objects, and have no control over the stack # GCC advice on https://gcc.gnu.org/wiki/FloatingPointMath#x86note
# alignment policy of the application. Therefore we need #
# -mstackrealign or -mincoming-stack-boundary=2. # NOTE: We need to ensure stack is realigned given that we
# # produce shared objects, and have no control over the stack
# XXX: We could have SSE without -mstackrealign if we always used # alignment policy of the application. Therefore we need
# __attribute__((force_align_arg_pointer)), but that's not # -mstackrealign or -mincoming-stack-boundary=2.
# always the case. #
c_args += ['-msse2', '-mfpmath=sse', '-mstackrealign'] # XXX: We could have SSE without -mstackrealign if we always used
else # __attribute__((force_align_arg_pointer)), but that's not
# GCC on x86 (not x86_64) with -msse* assumes a 16 byte aligned stack, but # always the case.
# that's not guaranteed c_args += ['-msse2', '-mfpmath=sse', '-mstackrealign']
sse41_args += '-mstackrealign' else
# GCC on x86 (not x86_64) with -msse* assumes a 16 byte aligned stack, but
# that's not guaranteed
sse41_args += '-mstackrealign'
endif
endif endif
endif endif
else
with_sse41 = false
sse41_args = []
endif endif
# Check for GCC style atomics # Check for GCC style atomics