rs6000: VSa->wa for some more cases
authorSegher Boessenkool <segher@kernel.crashing.org>
Tue, 4 Jun 2019 23:33:18 +0000 (01:33 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Tue, 4 Jun 2019 23:33:18 +0000 (01:33 +0200)
* config/rs6000/vsx.md (vsx_<VS_spdp_insn>): Use wa instead of <VSa>.
(vsx_extract_<mode>_var): Ditto.

From-SVN: r271934

gcc/ChangeLog
gcc/config/rs6000/vsx.md

index 213132f83f9c7059e594270506b57848859b1d4c..55463f0416c360b558aa875c0eb923169cc60225 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/vsx.md (vsx_<VS_spdp_insn>): Use wa instead of <VSa>.
+       (vsx_extract_<mode>_var): Ditto.
+
 2019-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * config/rs6000/vsx.md: Replace all <VSa> that are used with VSX_TI
index 625582373f3abf58f143201677020085a919f623..519f1a01ce200bfb40fdfa4a83927b8db585c756 100644 (file)
 ;; scalar single precision instructions internally use the double format.
 ;; Prefer the altivec registers, since we likely will need to do a vperm
 (define_insn "vsx_<VS_spdp_insn>"
-  [(set (match_operand:<VS_spdp_res> 0 "vsx_register_operand" "=<VSr4>,?<VSa>")
-       (unspec:<VS_spdp_res> [(match_operand:VSX_SPDP 1 "vsx_register_operand" "<VSr5>,<VSa>")]
+  [(set (match_operand:<VS_spdp_res> 0 "vsx_register_operand" "=<VSr4>,?wa")
+       (unspec:<VS_spdp_res> [(match_operand:VSX_SPDP 1 "vsx_register_operand" "<VSr5>,wa")]
                              UNSPEC_VSX_CVSPDP))]
   "VECTOR_UNIT_VSX_P (<MODE>mode)"
   "<VS_spdp_insn> %x0,%x1"
 
 ;; Variable V2DI/V2DF extract
 (define_insn_and_split "vsx_extract_<mode>_var"
-  [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v,<VSa>,r")
+  [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v,wa,r")
        (unspec:<VS_scalar> [(match_operand:VSX_D 1 "input_operand" "v,m,m")
                             (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
                            UNSPEC_VSX_EXTRACT))