[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