public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Michael Meissner <meissner@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc(refs/users/meissner/heads/work164-bugs)] Add power10 ori/oris and xori/xoris fusion support.
Date: Tue,  9 Apr 2024 04:31:20 +0000 (GMT)	[thread overview]
Message-ID: <20240409043120.8063E385829B@sourceware.org> (raw)

https://gcc.gnu.org/g:9b813c320ee59176e3279391ef7c47ef6ea8ba3a

commit 9b813c320ee59176e3279391ef7c47ef6ea8ba3a
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Apr 9 00:30:46 2024 -0400

    Add power10 ori/oris and xori/xoris fusion support.
    
    2024-04-09  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * config/rs6000/fusion.md: Regenerate.
            * config/rs6000/genfusion.md (gen_wide_immediate): Add wide immediate
            fusion patterns.
            * config/rs6000/rs6000.md (IORXOR_OP): New code attribute.
            (ior, xor splitter): Do not split ior/xor patterns that could be fused
            on power10.

Diff:
---
 gcc/config/rs6000/fusion.md    | 10 ++++++++++
 gcc/config/rs6000/genfusion.pl | 17 +++++++++++++++++
 gcc/config/rs6000/rs6000.md    |  5 ++++-
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/gcc/config/rs6000/fusion.md b/gcc/config/rs6000/fusion.md
index 4ed9ae1d69f..45819627df6 100644
--- a/gcc/config/rs6000/fusion.md
+++ b/gcc/config/rs6000/fusion.md
@@ -3055,3 +3055,13 @@
   [(set_attr "type" "fused_vector")
    (set_attr "cost" "6")
    (set_attr "length" "8")])
+
+;; ori_oris and xori_xoris fusion patterns generated by gen_wide_immediate
+(define_insn "*fuse_<IORXOR_OP>i_<IORXOR_OP>is"
+  [(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
+        (iorxor:DI
+          (match_operand:DI 1 "gpc_reg_operand" "r")
+          (match_operand:DI 2 "non_logical_cint_operand" "n")))]
+  "(TARGET_P10_FUSION)"
+  "<IORXOR_OP>i %0,%1,%w2\;<IORXOR_OP>is %0,%0,%v2"
+  [(set_attr "length" "8")])
diff --git a/gcc/config/rs6000/genfusion.pl b/gcc/config/rs6000/genfusion.pl
index 2271be14bfa..d059de8afc9 100755
--- a/gcc/config/rs6000/genfusion.pl
+++ b/gcc/config/rs6000/genfusion.pl
@@ -367,6 +367,23 @@ EOF
   }
 }
 
+sub gen_wide_immediate
+{
+    print <<"EOF";
+
+;; ori_oris and xori_xoris fusion patterns generated by gen_wide_immediate
+(define_insn "*fuse_<IORXOR_OP>i_<IORXOR_OP>is"
+  [(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
+        (iorxor:DI
+          (match_operand:DI 1 "gpc_reg_operand" "r")
+          (match_operand:DI 2 "non_logical_cint_operand" "n")))]
+  "(TARGET_P10_FUSION)"
+  "<IORXOR_OP>i %0,%1,%w2\\;<IORXOR_OP>is %0,%0,%v2"
+  [(set_attr "length" "8")])
+EOF
+}
+
 gen_ld_cmpi_p10();
 gen_logical_addsubf();
 gen_addadd;
+gen_wide_immediate();
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 1acd34ca0ee..f626b68ebb2 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -822,6 +822,9 @@
 				     (SF "TARGET_P8_VECTOR")
 				     (DI "TARGET_POWERPC64")])
 
+;; Convert iorxor iterator into or/xor instruction
+(define_code_attr IORXOR_OP [(ior "or") (xor "xor")])
+
 (include "darwin.md")
 \f
 ;; Start with fixed-point load and store insns.  Here we put only the more
@@ -3933,7 +3936,7 @@
   [(set (match_operand:GPR 0 "gpc_reg_operand")
 	(iorxor:GPR (match_operand:GPR 1 "gpc_reg_operand")
 		    (match_operand:GPR 2 "non_logical_cint_operand")))]
-  ""
+  "<MODE>mode != DImode || !TARGET_P10_FUSION"
   [(set (match_dup 3)
 	(iorxor:GPR (match_dup 1)
 		    (match_dup 4)))

             reply	other threads:[~2024-04-09  4:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-09  4:31 Michael Meissner [this message]
2024-04-09 21:41 Michael Meissner

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=20240409043120.8063E385829B@sourceware.org \
    --to=meissner@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).