]> git.ipfire.org Git - thirdparty/gcc.git/commit
Add PTWRITE builtins for x86
authorAndi Kleen <ak@linux.intel.com>
Fri, 9 Nov 2018 05:42:43 +0000 (05:42 +0000)
committerAndi Kleen <ak@gcc.gnu.org>
Fri, 9 Nov 2018 05:42:43 +0000 (05:42 +0000)
commit41f8d1fc011e0da012bd00624fd2668da83d9f31
tree3fd8fdccf8a32f02c33d8dd6b3207f79681a4769
parent3f3284629ba481294562f8370bf45e205e1d1eec
Add PTWRITE builtins for x86

Add builtins/intrinsics for PTWRITE. PTWRITE is a new instruction on Intel Gemini Lake/
Goldmont Plus that allows to write values into the Processor Trace log. This allows
very light weight instrumentation of programs.

The intrinsics are compatible to icc. Automatically enabled for Goldmont Plus.

gcc/:

2018-11-08  Andi Kleen  <ak@linux.intel.com>

* common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New.
(OPTION_MASK_ISA_PTWRITE_UNSET): New.
(ix86_handle_option): Handle OPT_mptwrite.
* config/i386/cpuid.h (bit_PTWRITE): Add.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite.
* config/i386/i386-builtin.def (BDESC): Add ptwrite32/64.
* config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__.
* config/i386/i386.c (ix86_target_string): Handle ptwrite.
(ix86_option_override_internal): Handle PTA_PTWRITE.
(ix86_valid_target_attribute_inner_p): Define ptwrite.
(def_builtin2): Force UINT64 to be 64bit only.
* config/i386/i386.h (TARGET_PTWRITE): Add.
(TARGET_PTWRITE_P): Add.
(PTA_PTWRITE): Add.
* config/i386/i386.md: Define ptwrite.
* config/i386/i386.opt: Add -mptwrite.
* config/i386/immintrin.h (_ptwrite64): Add.
(_ptwrite32): Add
* doc/extend.texi: Document __builtin_ia32_ptwrite*.
* doc/invoke.texi: Document -mptwrite.

gcc/testsuite/:

2018-11-08  Andi Kleen  <ak@linux.intel.com>

* gcc.target/i386/ptwrite1.c: New test.
* gcc.target/i386/ptwrite2.c: New test.

From-SVN: r265947
16 files changed:
gcc/ChangeLog
gcc/common/config/i386/i386-common.c
gcc/config/i386/cpuid.h
gcc/config/i386/driver-i386.c
gcc/config/i386/i386-builtin.def
gcc/config/i386/i386-c.c
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md
gcc/config/i386/i386.opt
gcc/config/i386/immintrin.h
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/ptwrite1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/ptwrite2.c [new file with mode: 0644]