https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100093

--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> ---
Created attachment 50611
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50611&action=edit
tested patch waiting for GCC12.


[i386] MASK_AVX256_SPLIT_UNALIGNED_STORE/LOAD should be cleared in
opts->x_target_flags when X86_TUNE_AVX256_UNALIGNED_LOAD/STORE_OPTIMAL
is enabled by target attribute.

gcc/ChangeLog:

        PR target/10093
        * config/i386/i386-options.c (ix86_option_override_internal):
        Clear MASK_AVX256_SPLIT_UNALIGNED_LOAD/STORE in x_target_flags
        when X86_TUNE_AVX256_UNALIGNED_LOAD/STORE_OPTIMAL is enabled
        by target attribute.

gcc/testsuite/ChangeLog:

        PR target/10093
        * gcc.target/i386/pr10093.c: New test.

2 files changed, 19 insertions(+)
gcc/config/i386/i386-options.c          |  7 +++++++
gcc/testsuite/gcc.target/i386/pr10093.c | 12 ++++++++++++

modified   gcc/config/i386/i386-options.c
@@ -2853,9 +2853,16 @@ ix86_option_override_internal (bool main_args_p,
   if (!ix86_tune_features[X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL]
       && !(opts_set->x_target_flags & MASK_AVX256_SPLIT_UNALIGNED_LOAD))
     opts->x_target_flags |= MASK_AVX256_SPLIT_UNALIGNED_LOAD;
+  else if (!main_args_p
+          && ix86_tune_features[X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL])
+    opts->x_target_flags &= ~MASK_AVX256_SPLIT_UNALIGNED_LOAD;
+
   if (!ix86_tune_features[X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL]
       && !(opts_set->x_target_flags & MASK_AVX256_SPLIT_UNALIGNED_STORE))
     opts->x_target_flags |= MASK_AVX256_SPLIT_UNALIGNED_STORE;
+  else if (!main_args_p
+          && ix86_tune_features[X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL])
+    opts->x_target_flags &= ~MASK_AVX256_SPLIT_UNALIGNED_STORE;

   /* Enable 128-bit AVX instruction generation

Reply via email to