[gcc(refs/users/meissner/heads/work041)] Make load SF/DF splitter happen after reload.

Michael Meissner meissner@gcc.gnu.org
Sat Mar 13 16:25:34 GMT 2021


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

commit b07d332165ad66db9e83d91862b5c7b65355d6a5
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sat Mar 13 11:25:17 2021 -0500

    Make load SF/DF splitter happen after reload.
    
    gcc/
    2021-03-12  Michael Meissner  <meissner@linux.ibm.com>
    
            * config/rs6000/rs6000.md (SF/DF mode splitter): Do the split
            after reload.  Use vsx_register_operand instead of
            gpc_reg_operand.
            (xxspltidp<mode>): Use vsx_register_operand instead of
            gpc_reg_operand.

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

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index c6d2c87913d..3405f9fcda4 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -7531,7 +7531,7 @@
 
 ;; Load a SFmode/DFmode constant via the ISA 3.1 XXSPLTIDP instruction
 (define_split
-  [(set (match_operand:SFDF 0 "gpc_reg_operand")
+  [(set (match_operand:SFDF 0 "vsx_register_operand")
 	(match_operand:SFDF 1 "xxspltidp_operand"))]
   "TARGET_POWER10"
   [(set (match_dup 0)
@@ -7544,10 +7544,10 @@
 })
 
 (define_insn "*xxspltidp<mode>"
-  [(set (match_operand:SFDF 0 "gpc_reg_operand" "=wa")
+  [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa")
 	(unspec:SFDF [(match_operand 1 "const_int_operand" "n")]
 		     UNSPEC_XXSPLTIDP))]
-  "TARGET_POWER10"
+  "TARGET_POWER10 && reload_completed"
   "xxspltidp %x0,%1"
   [(set_attr "type" "vecsimple")
    (set_attr "prefixed" "yes")


More information about the Gcc-cvs mailing list