]> git.ipfire.org Git - thirdparty/gcc.git/commit
Add PTWRITE builtins for x86
authorak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Nov 2018 05:42:43 +0000 (05:42 +0000)
committerak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Nov 2018 05:42:43 +0000 (05:42 +0000)
commit742da49920eea42cd1f5c4f4203205b54e522820
tree3fd8fdccf8a32f02c33d8dd6b3207f79681a4769
parentada02d0a97b548c721b55a42c4bd1289f6ce2e4f
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265947 138bc75d-0d04-0410-961f-82ee72b054a4
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]