Hi,

This patch adds support for WAITPKG instructions.

Is it ok for trunk and after few day for backport to GCC-8?

2018-05-08  Sebastian Peryt  <sebastian.pe...@intel.com>

gcc/

        * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
        OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
        (ix86_handle_option): Handle -mwaitpkg.
        * config.gcc: New header.
        * config/i386/cpuid.h (bit_WAITPKG): New bit.
        * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
        * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
        function type.
        * config/i386/i386-c.c (ix86_target_macros_internal): Handle
        OPTION_MASK_ISA_WAITPKG
        * config/i386/i386.c (ix86_target_string): Added -mwaitpkg.
        (ix86_option_override_internal): Added PTA_WAITPKG.
        (ix86_valid_target_attribute_inner_p): Added -mwaitpkg.
        (enum ix86_builtins): Added IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
        IX86_BUILTIN_TPAUSE.
        (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
        __builtin_ia32_umwait and __builtin_ia32_tpause.
        (ix86_expand_builtin):Expand  IX86_BUILTIN_UMONITOR,
        IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
        * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
        * config/i386/i386.opt: Added -mwaitpkg.
        * config/i386/sse.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
        UNSPECV_TPAUSE): New.
        (umwait, umonitor_<mode>, tpause): New.
        * config/i386/waitpkgintrin.h: New file.
        * config/i386/x86intrin.h: New header.
        * doc/invoke.texi: Added -mwaitpkg.

2018-05-08  Sebastian Peryt  <sebastian.pe...@intel.com>

gcc/testsuite/

        * gcc.target/i386/tpause-1.c: New test.
        * gcc.target/i386/umonitor-1.c: New test.

Thanks,
Sebastian


Attachment: 0001-WAITPKG.patch
Description: 0001-WAITPKG.patch

Reply via email to