aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2021-03-08 12:08:37 +0100
committerMartin Liska <mliska@suse.cz>2021-03-08 15:14:28 +0100
commite95554dac8284a75c13f4650ef40eea76227282e (patch)
tree96587f36931c6b185f08b4a24f61da41f8a5a48c
parent3cb8aab390ccf31e4581863b080db30c6735e51e (diff)
downloadgcc-e95554dac8284a75c13f4650ef40eea76227282e.zip
gcc-e95554dac8284a75c13f4650ef40eea76227282e.tar.gz
gcc-e95554dac8284a75c13f4650ef40eea76227282e.tar.bz2
i386: Enable UINTR and HRESET for -march that supports it
gcc/ChangeLog: PR target/99463 * config/i386/i386-options.c (ix86_option_override_internal): Enable UINTR and HRESET for -march that supports it. gcc/testsuite/ChangeLog: PR target/99463 * gcc.target/i386/pr99463-2.c: New test. * gcc.target/i386/pr99463.c: New test.
-rw-r--r--gcc/config/i386/i386-options.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr99463-2.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr99463.c5
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index cdeabbf..410fa0c 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2354,6 +2354,13 @@ ix86_option_override_internal (bool main_args_p,
if (((processor_alias_table[i].flags & PTA_PKU) != 0)
&& !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PKU))
opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PKU;
+ if (((processor_alias_table[i].flags & PTA_UINTR) != 0)
+ && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_UINTR))
+ opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_UINTR;
+ if (((processor_alias_table[i].flags & PTA_HRESET) != 0)
+ && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_HRESET))
+ opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_HRESET;
+
/* Don't enable x87 instructions if only general registers are
allowed by target("general-regs-only") function attribute or
diff --git a/gcc/testsuite/gcc.target/i386/pr99463-2.c b/gcc/testsuite/gcc.target/i386/pr99463-2.c
new file mode 100644
index 0000000..017ca95
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr99463-2.c
@@ -0,0 +1,5 @@
+/* PR target/99463 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=sapphirerapids" } */
+
+#include "uintr-1.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr99463.c b/gcc/testsuite/gcc.target/i386/pr99463.c
new file mode 100644
index 0000000..0b29092
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr99463.c
@@ -0,0 +1,5 @@
+/* PR target/99463 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=alderlake" } */
+
+#include "hreset-1.c"