Re: [Patch] x86: Enable GCC support for Intel Hreset extension
> > 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
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
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