public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Hongyu Wang <hongyuw@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r14-2084] i386: Sync tune_string with arch_string for target attribute arch=*
Date: Mon, 26 Jun 2023 06:52:53 +0000 (GMT)	[thread overview]
Message-ID: <20230626065253.ED8CF3858D20@sourceware.org> (raw)

https://gcc.gnu.org/g:2916278d14e9ac28c361c396a67256acbebda6e8

commit r14-2084-g2916278d14e9ac28c361c396a67256acbebda6e8
Author: Hongyu Wang <hongyu.wang@intel.com>
Date:   Sun Jun 25 09:50:21 2023 +0800

    i386: Sync tune_string with arch_string for target attribute arch=*
    
    For function with target attribute arch=*, current logic will set its
    tune to -mtune from command line so all target_clones will get same
    tuning flags which would affect the performance for each clone. Override
    tune with arch if tune was not explicitly specified to get proper tuning
    flags for target_clones.
    
    gcc/ChangeLog:
    
            * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
            Override tune_string with arch_string if tune_string is not
            explicitly specified.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.target/i386/mvc17.c: New test.

Diff:
---
 gcc/config/i386/i386-options.cc       |  6 +++++-
 gcc/testsuite/gcc.target/i386/mvc17.c | 11 +++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
index 2cb0bddcd35..7f593cebe76 100644
--- a/gcc/config/i386/i386-options.cc
+++ b/gcc/config/i386/i386-options.cc
@@ -1400,7 +1400,11 @@ ix86_valid_target_attribute_tree (tree fndecl, tree args,
       if (option_strings[IX86_FUNCTION_SPECIFIC_TUNE])
 	opts->x_ix86_tune_string
 	  = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]);
-      else if (orig_tune_defaulted)
+      /* If we have explicit arch string and no tune string specified, set
+	 tune_string to NULL and later it will be overriden by arch_string
+	 so target clones can get proper optimization.  */
+      else if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]
+	       || orig_tune_defaulted)
 	opts->x_ix86_tune_string = NULL;
 
       /* If fpmath= is not set, and we now have sse2 on 32-bit, use it.  */
diff --git a/gcc/testsuite/gcc.target/i386/mvc17.c b/gcc/testsuite/gcc.target/i386/mvc17.c
new file mode 100644
index 00000000000..2c7cc2fdace
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mvc17.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler-times "rep mov" 1 } } */
+
+__attribute__((target_clones("default","arch=icelake-server")))
+void
+foo (char *a, char *b, int size)
+{
+  __builtin_memcpy (a, b, size & 0x7F);
+}

                 reply	other threads:[~2023-06-26  6:52 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230626065253.ED8CF3858D20@sourceware.org \
    --to=hongyuw@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).