mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-01-22 05:33:55 +08:00
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:
parent
ad0d39efed
commit
2d04206673
48
meson.build
48
meson.build
@ -1260,34 +1260,36 @@ if host_machine.system() == 'windows'
|
||||
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'
|
||||
with_sse41 = true
|
||||
sse41_args = ['-msse4.1']
|
||||
|
||||
if host_machine.cpu_family() == 'x86'
|
||||
if get_option('sse2')
|
||||
# These settings make generated GCC code match MSVC and follow
|
||||
# GCC advice on https://gcc.gnu.org/wiki/FloatingPointMath#x86note
|
||||
#
|
||||
# NOTE: We need to ensure stack is realigned given that we
|
||||
# produce shared objects, and have no control over the stack
|
||||
# alignment policy of the application. Therefore we need
|
||||
# -mstackrealign or -mincoming-stack-boundary=2.
|
||||
#
|
||||
# XXX: We could have SSE without -mstackrealign if we always used
|
||||
# __attribute__((force_align_arg_pointer)), but that's not
|
||||
# always the case.
|
||||
c_args += ['-msse2', '-mfpmath=sse', '-mstackrealign']
|
||||
else
|
||||
# GCC on x86 (not x86_64) with -msse* assumes a 16 byte aligned stack, but
|
||||
# that's not guaranteed
|
||||
sse41_args += '-mstackrealign'
|
||||
if cc.get_id() != 'msvc'
|
||||
sse41_args = ['-msse4.1']
|
||||
|
||||
if host_machine.cpu_family() == 'x86'
|
||||
if get_option('sse2')
|
||||
# These settings make generated GCC code match MSVC and follow
|
||||
# GCC advice on https://gcc.gnu.org/wiki/FloatingPointMath#x86note
|
||||
#
|
||||
# NOTE: We need to ensure stack is realigned given that we
|
||||
# produce shared objects, and have no control over the stack
|
||||
# alignment policy of the application. Therefore we need
|
||||
# -mstackrealign or -mincoming-stack-boundary=2.
|
||||
#
|
||||
# XXX: We could have SSE without -mstackrealign if we always used
|
||||
# __attribute__((force_align_arg_pointer)), but that's not
|
||||
# always the case.
|
||||
c_args += ['-msse2', '-mfpmath=sse', '-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
|
||||
else
|
||||
with_sse41 = false
|
||||
sse41_args = []
|
||||
endif
|
||||
|
||||
# Check for GCC style atomics
|
||||
|
Loading…
Reference in New Issue
Block a user