Re: [Patch] x86: Enable GCC support for Intel Hreset extension

2020-10-14 Thread Hongyu Wang via Gcc-patches
>
> The patch doesn't include all testsuite changes.
>

Yes, I update -mhreset in x86gprintrin-{1,2,3,4,5}.c

We will check-in the attached patch. Thanks.

Uros Bizjak  于2020年10月14日周三 下午2:26写道:
>
> On Tue, Oct 13, 2020 at 10:49 AM Hongyu Wang 
wrote:
> >
> > Hi:
> >
> > This patch is about to support Intel Hreset instruction.
> >
> > Hreset provides a hint to the processor to selectively reset the
prediction history of the current logical processor.
> >
> > For more details, please refer to
https://software.intel.com/content/dam/develop/external/us/en/documents/architecture-instruction-set-extensions-programming-reference.pdf
> >
> > Bootstrap ok, regression test on i386/x86 backend is ok.
> >
> > OK for master?
> >
> > gcc/
> >
> > * common/config/i386/cpuinfo.h (get_available_features):
> > Detect HRESET.
> > * common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
> > OPTION_MASK_ISA2_HRESET_UNSET): New macros.
> > (ix86_handle_option): Handle -mhreset.
> > * common/config/i386/i386-cpuinfo.h (enum processor_features):
> > Add FEATURE_HRESET.
> > * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
> > for hreset.
> > * config.gcc: Add hresetintrin.h
> > * config/i386/hresetintrin.h: New header file.
> > * config/i386/x86gprintrin.h: Include hresetintrin.h.
> > * config/i386/cpuid.h (bit_HRESET): New.
> > * config/i386/i386-builtin.def: Add new builtin.
> > * config/i386/i386-expand.c (ix86_expand_builtin):
> > Handle new builtin.
> > * config/i386/i386-c.c (ix86_target_macros_internal): Define
> > __HRESET__.
> > * config/i386/i386-options.c (isa2_opts): Add -mhreset.
> > (ix86_valid_target_attribute_inner_p): Handle hreset.
> > * config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
> > PTA_HRESET): New.
> > (PTA_ALDERLAKE): Add PTA_HRESET.
> > * config/i386/i386.opt: Add option -mhreset.
> > * config/i386/i386.md (UNSPECV_HRESET): New unspec.
> > (hreset): New define_insn.
> > * doc/invoke.texi: Document -mhreset.
> > * doc/extend.texi: Document hreset.
> >
> > gcc/testsuite/
> >
> > * gcc.target/i386/hreset-1.c: New test.
> > * gcc.target/i386/funcspec-56.inc: Add new target attribute.
> > * gcc.target/i386/sse-12.c: Update -mhreset.
> > * gcc.target/i386/sse-13.c: Likewise.
> > * gcc.target/i386/sse-14.c: Likewise.
> > * gcc.target/i386/sse-22.c: Likewise.
> > * gcc.target/i386/sse-23.c: Likewise.
> > * g++.dg/other/i386-2.C: Likewise.
> > * g++.dg/other/i386-3.C: Likewise.
>
> The patch doesn't include all testsuite changes.
>
> Otherwise OK.
>
> Thanks,
> Uros.



-- 
Regards,

Hongyu, Wang
From 765e5e15a7e07d742653b13af1fc6d39b9f376c4 Mon Sep 17 00:00:00 2001
From: Hongyu Wang 
Date: Tue, 7 Apr 2020 18:39:53 +
Subject: [PATCH] Enable Intel HRESET Instruction

gcc/

	* common/config/i386/cpuinfo.h (get_available_features):
	Detect HRESET.
	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
	OPTION_MASK_ISA2_HRESET_UNSET): New macros.
	(ix86_handle_option): Handle -mhreset.
	* common/config/i386/i386-cpuinfo.h (enum processor_features):
	Add FEATURE_HRESET.
	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
	for hreset.
	* config.gcc: Add hresetintrin.h
	* config/i386/hresetintrin.h: New header file.
	* config/i386/x86gprintrin.h: Include hresetintrin.h.
	* config/i386/cpuid.h (bit_HRESET): New.
	* config/i386/i386-builtin.def: Add new builtin.
	* config/i386/i386-expand.c (ix86_expand_builtin):
	Handle new builtin.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define
	__HRESET__.
	* config/i386/i386-options.c (isa2_opts): Add -mhreset.
	(ix86_valid_target_attribute_inner_p): Handle hreset.
	* config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
	PTA_HRESET): New.
	(PTA_ALDERLAKE): Add PTA_HRESET.
	* config/i386/i386.opt: Add option -mhreset.
	* config/i386/i386.md (UNSPECV_HRESET): New unspec.
	(hreset): New define_insn.
	* doc/invoke.texi: Document -mhreset.
	* doc/extend.texi: Document hreset.

gcc/testsuite/

	* gcc.target/i386/hreset-1.c: New test.
	* gcc.target/i386/funcspec-56.inc: Add new target attribute.
	* gcc.target/i386/x86gprintrin-1.c: Add -mhreset.
	* gcc.target/i386/x86gprintrin-2.c: Ditto.
	* gcc.target/i386/x86gprintrin-3.c: Ditto.
	* gcc.target/i386/x86gprintrin-4.c: Add mhreset.
	* gcc.target/i386/x86gprintrin-5.c: Ditto.
---
 gcc/common/config/i386/cpuinfo.h  |  3 ++
 gcc/common/config/i386/i386-common.c  | 15 ++
 gcc/common/config/i386/i386-cpuinfo.h |  1 +
 gcc/common/config/i386/i386-isas.h|  1 +
 gcc/config.gcc|  4 +-
 gcc/config/i386/cpuid.h   |  1 +
 gcc/config/i386/hresetintrin.h| 48 +++
 gcc/config/i386/i386-builtin.def  |  3 ++
 gcc/config/i386/i386-c.c  |  3 +-
 gcc/config/i386/i386-expand.c |  8 

Re: [Patch] x86: Enable GCC support for Intel Hreset extension

2020-10-14 Thread Uros Bizjak via Gcc-patches
On Tue, Oct 13, 2020 at 10:49 AM Hongyu Wang  wrote:
>
> Hi:
>
> This patch is about to support Intel Hreset instruction.
>
> Hreset provides a hint to the processor to selectively reset the prediction 
> history of the current logical processor.
>
> For more details, please refer to 
> https://software.intel.com/content/dam/develop/external/us/en/documents/architecture-instruction-set-extensions-programming-reference.pdf
>
> Bootstrap ok, regression test on i386/x86 backend is ok.
>
> OK for master?
>
> gcc/
>
> * common/config/i386/cpuinfo.h (get_available_features):
> Detect HRESET.
> * common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
> OPTION_MASK_ISA2_HRESET_UNSET): New macros.
> (ix86_handle_option): Handle -mhreset.
> * common/config/i386/i386-cpuinfo.h (enum processor_features):
> Add FEATURE_HRESET.
> * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
> for hreset.
> * config.gcc: Add hresetintrin.h
> * config/i386/hresetintrin.h: New header file.
> * config/i386/x86gprintrin.h: Include hresetintrin.h.
> * config/i386/cpuid.h (bit_HRESET): New.
> * config/i386/i386-builtin.def: Add new builtin.
> * config/i386/i386-expand.c (ix86_expand_builtin):
> Handle new builtin.
> * config/i386/i386-c.c (ix86_target_macros_internal): Define
> __HRESET__.
> * config/i386/i386-options.c (isa2_opts): Add -mhreset.
> (ix86_valid_target_attribute_inner_p): Handle hreset.
> * config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
> PTA_HRESET): New.
> (PTA_ALDERLAKE): Add PTA_HRESET.
> * config/i386/i386.opt: Add option -mhreset.
> * config/i386/i386.md (UNSPECV_HRESET): New unspec.
> (hreset): New define_insn.
> * doc/invoke.texi: Document -mhreset.
> * doc/extend.texi: Document hreset.
>
> gcc/testsuite/
>
> * gcc.target/i386/hreset-1.c: New test.
> * gcc.target/i386/funcspec-56.inc: Add new target attribute.
> * gcc.target/i386/sse-12.c: Update -mhreset.
> * gcc.target/i386/sse-13.c: Likewise.
> * gcc.target/i386/sse-14.c: Likewise.
> * gcc.target/i386/sse-22.c: Likewise.
> * gcc.target/i386/sse-23.c: Likewise.
> * g++.dg/other/i386-2.C: Likewise.
> * g++.dg/other/i386-3.C: Likewise.

The patch doesn't include all testsuite changes.

Otherwise OK.

Thanks,
Uros.


[Patch] x86: Enable GCC support for Intel Hreset extension

2020-10-13 Thread Hongyu Wang via Gcc-patches
Hi:

This patch is about to support Intel Hreset instruction.

Hreset provides a hint to the processor to selectively reset the prediction
history of the current logical processor.

For more details, please refer to
https://software.intel.com/content/dam/develop/external/us/en/documents/architecture-instruction-set-extensions-programming-reference.pdf

Bootstrap ok, regression test on i386/x86 backend is ok.

OK for master?

gcc/

* common/config/i386/cpuinfo.h (get_available_features):
Detect HRESET.
* common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
OPTION_MASK_ISA2_HRESET_UNSET): New macros.
(ix86_handle_option): Handle -mhreset.
* common/config/i386/i386-cpuinfo.h (enum processor_features):
Add FEATURE_HRESET.
* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
for hreset.
* config.gcc: Add hresetintrin.h
* config/i386/hresetintrin.h: New header file.
* config/i386/x86gprintrin.h: Include hresetintrin.h.
* config/i386/cpuid.h (bit_HRESET): New.
* config/i386/i386-builtin.def: Add new builtin.
* config/i386/i386-expand.c (ix86_expand_builtin):
Handle new builtin.
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__HRESET__.
* config/i386/i386-options.c (isa2_opts): Add -mhreset.
(ix86_valid_target_attribute_inner_p): Handle hreset.
* config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
PTA_HRESET): New.
(PTA_ALDERLAKE): Add PTA_HRESET.
* config/i386/i386.opt: Add option -mhreset.
* config/i386/i386.md (UNSPECV_HRESET): New unspec.
(hreset): New define_insn.
* doc/invoke.texi: Document -mhreset.
* doc/extend.texi: Document hreset.

gcc/testsuite/

* gcc.target/i386/hreset-1.c: New test.
* gcc.target/i386/funcspec-56.inc: Add new target attribute.
* gcc.target/i386/sse-12.c: Update -mhreset.
* gcc.target/i386/sse-13.c: Likewise.
* gcc.target/i386/sse-14.c: Likewise.
* gcc.target/i386/sse-22.c: Likewise.
* gcc.target/i386/sse-23.c: Likewise.
* g++.dg/other/i386-2.C: Likewise.
* g++.dg/other/i386-3.C: Likewise.

-- 
Regards,

Hongyu, Wang
From 9dbb6bfb28431cd52149e12cc5f359be7fb46c64 Mon Sep 17 00:00:00 2001
From: Hongyu Wang 
Date: Tue, 7 Apr 2020 18:39:53 +
Subject: [PATCH] Enable Intel HRESET Instruction

gcc/

	* common/config/i386/cpuinfo.h (get_available_features):
	Detect HRESET.
	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
	OPTION_MASK_ISA2_HRESET_UNSET): New macros.
	(ix86_handle_option): Handle -mhreset.
	* common/config/i386/i386-cpuinfo.h (enum processor_features):
	Add FEATURE_HRESET.
	* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
	for hreset.
	* config.gcc: Add hresetintrin.h
	* config/i386/hresetintrin.h: New header file.
	* config/i386/x86gprintrin.h: Include hresetintrin.h.
	* config/i386/cpuid.h (bit_HRESET): New.
	* config/i386/i386-builtin.def: Add new builtin.
	* config/i386/i386-expand.c (ix86_expand_builtin):
	Handle new builtin.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define
	__HRESET__.
	* config/i386/i386-options.c (isa2_opts): Add -mhreset.
	(ix86_valid_target_attribute_inner_p): Handle hreset.
	* config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
	PTA_HRESET): New.
	(PTA_ALDERLAKE): Add PTA_HRESET.
	* config/i386/i386.opt: Add option -mhreset.
	* config/i386/i386.md (UNSPECV_HRESET): New unspec.
	(hreset): New define_insn.
	* doc/invoke.texi: Document -mhreset.
	* doc/extend.texi: Document hreset.

gcc/testsuite/

	* gcc.target/i386/hreset-1.c: New test.
	* gcc.target/i386/funcspec-56.inc: Add new target attribute.
	* gcc.target/i386/sse-12.c: Update -mhreset.
	* gcc.target/i386/sse-13.c: Likewise.
	* gcc.target/i386/sse-14.c: Likewise.
	* gcc.target/i386/sse-22.c: Likewise.
	* gcc.target/i386/sse-23.c: Likewise.
	* g++.dg/other/i386-2.C: Likewise.
	* g++.dg/other/i386-3.C: Likewise.
---
 gcc/common/config/i386/cpuinfo.h  |  3 ++
 gcc/common/config/i386/i386-common.c  | 15 ++
 gcc/common/config/i386/i386-cpuinfo.h |  1 +
 gcc/common/config/i386/i386-isas.h|  1 +
 gcc/config.gcc|  4 +-
 gcc/config/i386/cpuid.h   |  1 +
 gcc/config/i386/hresetintrin.h| 53 +++
 gcc/config/i386/i386-builtin.def  |  3 ++
 gcc/config/i386/i386-c.c  |  3 +-
 gcc/config/i386/i386-expand.c |  8 +++
 gcc/config/i386/i386-options.c|  4 +-
 gcc/config/i386/i386.h|  5 +-
 gcc/config/i386/i386.md   | 11 
 gcc/config/i386/i386.opt  |  4 ++
 gcc/config/i386/x86gprintrin.h|  2 +
 gcc/doc/extend.texi   |  5 ++
 gcc/doc/invoke.texi   |  9 ++--
 gcc/testsuite/gcc.target/i386/funcspec-56.inc |  2 +
 gcc/testsuite/gcc.target/i386/hreset-1.c  | 11 
 19 files