[gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.

Michael Meissner meissner@gcc.gnu.org
Thu Mar 18 18:35:24 GMT 2021


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


More information about the Gcc-cvs mailing list