]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config.gcc
x86: Add -mmwait for -mgeneral-regs-only
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 15 Apr 2021 18:19:32 +0000 (11:19 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 21 Apr 2021 13:00:19 +0000 (06:00 -0700)
commitd8c6cc2ca35489bc41bb58ec96c1195928826922
tree4bc1374ea2b01a8c821f6b761856dc0c75964c43
parent88202c883c07da1c03dbb1ad440f1b70189c4399
x86: Add -mmwait for -mgeneral-regs-only

Add -mmwait so that the MWAIT and MONITOR intrinsics can be used with
-mgeneral-regs-only and make -msse3 to imply -mmwait.

gcc/

* config.gcc: Install mwaitintrin.h for i[34567]86-*-* and
x86_64-*-* targets.
* common/config/i386/i386-common.c (OPTION_MASK_ISA2_MWAIT_SET):
New.
(OPTION_MASK_ISA2_MWAIT_UNSET): Likewise.
(ix86_handle_option): Handle -mmwait.
* config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins):
Replace OPTION_MASK_ISA_SSE3 with OPTION_MASK_ISA2_MWAIT on
__builtin_ia32_monitor and __builtin_ia32_mwait.
* config/i386/i386-options.c (isa2_opts): Add -mmwait.
(ix86_valid_target_attribute_inner_p): Likewise.
(ix86_option_override_internal): Enable mwait/monitor
instructions for -msse3.
* config/i386/i386.h (TARGET_MWAIT): New.
(TARGET_MWAIT_P): Likewise.
* config/i386/i386.opt: Add -mmwait.
* config/i386/mwaitintrin.h: New file.
* config/i386/pmmintrin.h: Include <mwaitintrin.h>.
* config/i386/sse.md (sse3_mwait): Replace TARGET_SSE3 with
TARGET_MWAIT.
(@sse3_monitor_<mode>): Likewise.
* config/i386/x86gprintrin.h: Include <mwaitintrin.h>.
* doc/extend.texi: Document mwait target attribute.
* doc/invoke.texi: Document -mmwait.

gcc/testsuite/

* gcc.target/i386/monitor-2.c: New test.
13 files changed:
gcc/common/config/i386/i386-common.c
gcc/config.gcc
gcc/config/i386/i386-builtins.c
gcc/config/i386/i386-options.c
gcc/config/i386/i386.h
gcc/config/i386/i386.opt
gcc/config/i386/mwaitintrin.h [new file with mode: 0644]
gcc/config/i386/pmmintrin.h
gcc/config/i386/sse.md
gcc/config/i386/x86gprintrin.h
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/testsuite/gcc.target/i386/monitor-2.c [new file with mode: 0644]