public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.
@ 2021-03-18 18:35 Michael Meissner
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-03-18 18:35 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:a288d945cb495490e3cce800980d1df95159c486

commit a288d945cb495490e3cce800980d1df95159c486
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Mar 18 14:35:02 2021 -0400

    Add VEC_DUPLICATE insn/split.
    
    gcc/
    2021-03-18  Michael Meissner  <meissner@linux.ibm.com>
    
            * config/rs6000/altivec.md (xxspltidp_v2df): Delete special
            handling of 0.0.  Add comment about the denormal.

Diff:
---
 gcc/config/rs6000/altivec.md | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index e93bb9c787f..cd5b0e037ad 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -859,12 +859,6 @@
   rtx op1 = operands[1];
   const struct real_value *rv = CONST_DOUBLE_REAL_VALUE (op1);
 
-  if (op1 == CONST0_RTX (SFmode))
-    {
-      emit_move_insn (op0, CONST0_RTX (V2DFmode));
-      DONE;
-    }
-
   /* If the value is not denormal, convert to vec_duplicate.  */
   if (xxspltidp_operand (op1, SFmode))
     {
@@ -874,7 +868,9 @@
       DONE;
     }
 
-  /* If the value is denormal, create an insn with the int value.  */
+  /* If the value is denormal, create an insn with the int value.  There is a
+     warning for this condition when the built-in was expanded in
+     rs6000_expand_unop_builtin.  */
   long value;
   REAL_VALUE_TO_TARGET_SINGLE (*rv, value);
   emit_insn (gen_xxspltidp_v2df_denormal (op0, GEN_INT (value)));


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.
@ 2021-03-18 10:30 Michael Meissner
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-03-18 10:30 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:5e63f888776e3fc3fb2a7c8aa8a95f7c6a2aaf51

commit 5e63f888776e3fc3fb2a7c8aa8a95f7c6a2aaf51
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Mar 18 06:30:28 2021 -0400

    Add VEC_DUPLICATE insn/split.
    
    gcc/
    2021-03-17  Michael Meissner  <meissner@linux.ibm.com>
    
            * config/rs6000/rs6000.md (xxspltidpv2df_dup): New insn and
            split.

Diff:
---
 gcc/config/rs6000/rs6000.md | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index bcfcf4c308c..9106c9ae2ee 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -7564,6 +7564,21 @@
   operands[2] = GEN_INT (value);
 })
 
+(define_insn_and_split "*xxspltidpv2df_dup"
+  [(set (match_operand:V2DF 0 "vsx_register_operand" "=wa")
+	(vec_duplicate:V2DF (match_operand:DF 1 "xxspltidp_operand" "eF")))]
+  "TARGET_POWER10"
+  "#"
+  "&& 1"
+  [(set (match_dup 0)
+	(unspec:V2DF [(match_dup 2)] UNSPEC_XXSPLTIDP))]
+{
+  long value;
+  const struct real_value *rv = CONST_DOUBLE_REAL_VALUE (operands[1]);
+  REAL_VALUE_TO_TARGET_SINGLE (*rv, value);
+  operands[2] = GEN_INT (value);
+})
+
 (define_insn "*xxspltidp<mode>"
   [(set (match_operand:SF_DF_V2DF 0 "vsx_register_operand" "=wa")
 	(unspec:SF_DF_V2DF [(match_operand 1 "const_int_operand" "n")]


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-03-18 18:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-18 18:35 [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split Michael Meissner
  -- strict thread matches above, loose matches on Subject: below --
2021-03-18 10:30 Michael Meissner

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).