I have rebased this patch to the latest trunk and addressed comments. Also, there was a test in changelog, but not in the patch itself - this has been added.
Is it ok for trunk and backport to GCC-8 after few days?
gcc/
* common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET,
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 CPUID.
* config/i386/i386-builtin.def (PTWRITE): Add PTWRITE.
* config/i386/i386-c.c (ix86_target_macros_internal):
Support __PTWRITE__.
* config/i386/i386.c (ix86_target_string): Add -mptwrite.
(ix86_valid_target_attribute_inner_p): Support ptwrite.
(ix86_init_mmx_sse_builtins): Add edges detection for ptwrites
generated by vartrace.
* config/i386/i386.h (TARGET_PTWRITE): Add.
(TARGET_PTWRITE_P): Add.
* config/i386/i386.md: Add ptwrite.
* config/i386/i386.opt: Add -mptwrite.
* config/i386/immintrin.h (target):
(_ptwrite64): Add.
(_ptwrite32): Add.
* doc/extend.texi: Document ptwrite builtins.
* doc/invoke.texi: Document -mptwrite.
gcc/testsuite/
* gcc.target/i386/ptwrite-1.c: New test.
Sebastian
> -----Original Message-----
> From: [email protected] [mailto:gcc-patches-
> [email protected]] On Behalf Of Andi Kleen
> Sent: Monday, February 12, 2018 3:53 AM
> To: [email protected]
> Cc: Metzger, Markus T <[email protected]>; [email protected];
> Andi Kleen <[email protected]>
> Subject: [PATCH 1/3] Add PTWRITE builtins for x86
>
> From: Andi Kleen <[email protected]>
>
> Add builtins/intrinsics for PTWRITE. PTWRITE is a new instruction on Intel
> Cherry
> Trail that allows to write values into the Processor Trace log.
>
> This is fairly straight forward, except I had to add isa2 support for variable
> number of operands.
>
> gcc/:
>
> 2018-02-10 Andi Kleen <[email protected]>
>
> * common/config/i386/i386-common.c
> (OPTION_MASK_ISA_PTWRITE_SET):
> (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 CPUID.
> * config/i386/i386-builtin.def (PTWRITE): Add PTWRITE.
> * config/i386/i386-c.c (ix86_target_macros_internal):
> Support __PTWRITE__.
> * config/i386/i386.c (ix86_target_string): Add -mptwrite.
> (ix86_valid_target_attribute_inner_p): Support ptwrite.
> (BDESC_VERIFYS): Verify SPECIAL_ARGS2.
> (ix86_init_mmx_sse_builtins): Handle special args2.
> * config/i386/i386.h (TARGET_PTWRITE): Add.
> (TARGET_PTWRITE_P): Add.
> * config/i386/i386.md: Add ptwrite.
> * config/i386/i386.opt: Add -mptwrite.
> * config/i386/immintrin.h (target):
> (_ptwrite_u64): Add.
> (_ptwrite_u32): Add.
> * doc/extend.texi: Document ptwrite builtins.
> * doc/invoke.texi: Document -mptwrite.
>
> gcc/testsuite/:
>
> 2018-02-10 Andi Kleen <[email protected]>
>
> * gcc.target/i386/ptwrite1.c: New test.
> * gcc.target/i386/ptwrite2.c: New test.
0001-PTWRITE-intrinsics.patch
Description: 0001-PTWRITE-intrinsics.patch
