[PATCH] [X86_64]: Add support for MONITORX and MWAITX ISA
Kumar, Venkataramanan
Venkataramanan.Kumar@amd.com
Thu Jun 11 09:55:00 GMT 2015
Hi Maintainers,
This patch adds support for new MONITORX and MWAITX instructions and also enables them via builtins.
The ISA is enabled by new -mmwaitx option and is available for AMD bdver4 target (-march=bdver4).
MONITORX and MWAITX implements same functionality as old MONITOR and MWAIT.
In addition MWAITX can enable a timer and is accepted as third argument (in %ebx).
Testing status.
* Bootstrapped and retested.
(Snip)
## /bin/sh ./gcc-fsf-trunk/contrib/compare_tests /tmp/gxx-sum1.9548 /tmp/gxx-sum2.9548
New tests that PASS:
gcc.target/i386/monitorx.c (test for excess errors)
(Snip)
* On bdver4 machine ISA gets detected via -march=native.
* Also tested with assembler patch available at
https://sourceware.org/ml/binutils/2015-06/msg00106.html
gcc/ChangeLog
2015-06-11 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_MWAITX_SET): New.
(ix86_handle_option): Handle mwaitx.
* config.gcc (i[34567]86-*-*): Add mwaitxintrin.h,
(x86_64-*-*): Likewise.
* config/i386/mwaitxintrin.h: New header.
* config/i386/cpuid.h (bit_MWAITX): Define.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect
MWAITX support.
* config/i386/i386.opt (mwaitx): New.
* config/i386/i386-builtin-types.def
(VOID_FTYPE_UNSIGNED_ UNSIGNED_UNSIGNED): New function type.
* config/i386/i386-c.c: Define __MWAITX__ if needed.
* config/i386/i386.c (ix86_target_string): Define -mmwaitx option.
(PTA_MWAITX): New.
(ix86_option_override_internal): Handle new option.
(processor_alias_table): Added PTA_MWAITX.
(ix86_valid_target_attribute_inner_p): Add OPT_mmwaitx.
(ix86_builtins): Add IX86_BUILTIN_MWAITX, IX86_BUILTIN_MONITORX.
(ix86_expand_builtin): Handle IX86_BUILTIN_MWAITX and
IX86_BUILTIN_MONITORX built-ins.
* config/i386/i386.h (TARGET_MWAITX): New.
* config/i386/i386.md (unspecv): Add UNSPEC_ MWAITX and UNSPEC_ MONITORX.
(mwaitx): New pattern.
(monitorx_<mode>): New pattern.
* config/i386/x86intrin.h: Include mwaitxintrin.h.
* doc/extend.texi: Document monitorx and mwaitx builtins.
* doc/invoke.texi: Document -mmwaitx option.
gcc/testsuite/ChangeLog:
2015-06-11 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
* gcc.target/i386/monitorx.c: New.
* gcc.target/i386/sse-12.c: Add -mmwaitx.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.
Ok for trunk ?
Regards,
Venkat.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mwaitx.patch.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150611/071ef3da/attachment.txt>
More information about the Gcc-patches
mailing list