diff options
author | Lingling Kong <lingling.kong@intel.com> | 2024-07-24 14:52:47 +0800 |
---|---|---|
committer | Lingling Kong <lingling.kong@intel.com> | 2024-07-24 14:53:03 +0800 |
commit | 9d312ba54428d70f0703c8774a6fe6a4755930e7 (patch) | |
tree | 880b838afb03b0f2b9c544a02457c11099cb0d52 | |
parent | 905973410957891fec8a3e42eeefa4618780e0ce (diff) | |
download | gcc-9d312ba54428d70f0703c8774a6fe6a4755930e7.zip gcc-9d312ba54428d70f0703c8774a6fe6a4755930e7.tar.gz gcc-9d312ba54428d70f0703c8774a6fe6a4755930e7.tar.bz2 |
x86: Don't enable APX_F in 32-bit mode
gcc/ChangeLog:
PR target/115978
* config/i386/driver-i386.cc (host_detect_local_cpu): Enable
APX_F only for 64-bit codegen.
* config/i386/i386-options.cc (DEF_PTA): Skip PTA_APX_F if
not in 64-bit mode.
gcc/testsuite/ChangeLog:
PR target/115978
* gcc.target/i386/pr115978-1.c: New test.
* gcc.target/i386/pr115978-2.c: Ditto.
-rw-r--r-- | gcc/config/i386/driver-i386.cc | 3 | ||||
-rw-r--r-- | gcc/config/i386/i386-options.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr115978-1.c | 22 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr115978-2.c | 6 |
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc index 11470ea..445f564 100644 --- a/gcc/config/i386/driver-i386.cc +++ b/gcc/config/i386/driver-i386.cc @@ -900,7 +900,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) if (has_feature (isa_names_table[i].feature)) { if (codegen_x86_64 - || isa_names_table[i].feature != FEATURE_UINTR) + || (isa_names_table[i].feature != FEATURE_UINTR + && isa_names_table[i].feature != FEATURE_APX_F)) options = concat (options, " ", isa_names_table[i].option, NULL); } diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index 059ef3a..1c8f783 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -2351,7 +2351,8 @@ ix86_option_override_internal (bool main_args_p, #define DEF_PTA(NAME) \ if (((processor_alias_table[i].flags & PTA_ ## NAME) != 0) \ && PTA_ ## NAME != PTA_64BIT \ - && (TARGET_64BIT || PTA_ ## NAME != PTA_UINTR) \ + && (TARGET_64BIT || (PTA_ ## NAME != PTA_UINTR \ + && PTA_ ## NAME != PTA_APX_F))\ && !TARGET_EXPLICIT_ ## NAME ## _P (opts)) \ SET_TARGET_ ## NAME (opts); #include "i386-isa.def" diff --git a/gcc/testsuite/gcc.target/i386/pr115978-1.c b/gcc/testsuite/gcc.target/i386/pr115978-1.c new file mode 100644 index 0000000..18a1c5f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr115978-1.c @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -march=native" } */ + +int +main () +{ + if (__builtin_cpu_supports ("apxf")) + { +#ifdef __x86_64__ +# ifndef __APX_F__ + __builtin_abort (); +# endif +#else +# ifdef __APX_F__ + __builtin_abort (); +# endif +#endif + return 0; + } + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/pr115978-2.c b/gcc/testsuite/gcc.target/i386/pr115978-2.c new file mode 100644 index 0000000..900d6eb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr115978-2.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=native -mno-apxf" } */ + +#ifdef __APX_F__ +# error APX_F should be disabled +#endif |