]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
powerpc: Fix vsx_splat_v4si in 32 bit mode
authorDavid Edelsohn <dje.gcc@gmail.com>
Sat, 6 Nov 2021 00:33:45 +0000 (20:33 -0400)
committerDavid Edelsohn <dje.gcc@gmail.com>
Sat, 6 Nov 2021 15:48:46 +0000 (11:48 -0400)
Tamar's recent patch to teach CSE to perform vector extract exercises
VSX splat more frequently, which exposed a constraint error for the
vsx_splat patterns.  The pattern could be created for Power9, but
the "we constraint only provided alternatives in 64 bit mode. The
instructions are valid in 32 bit mode and SImode is allowed in VSX
registers.  This patch updates the constraints from "we" to "wa" to
allow the pattern and fix the failing testcases.

gcc/ChangeLog:

* config/rs6000/vsx.md (vsx_splat_v4si): Change constraints to "wa".
(vsx_splat_v4si_di): Change constraint to "wa".

gcc/config/rs6000/vsx.md

index 0bf04feb6c4ad52c07c2bddb6033a2bae3707d06..a97f7f2a680bf128f112a63fdf6a26a02879b240 100644 (file)
 
 ;; V4SI splat support
 (define_insn "vsx_splat_v4si"
-  [(set (match_operand:V4SI 0 "vsx_register_operand" "=we,we")
+  [(set (match_operand:V4SI 0 "vsx_register_operand" "=wa,wa")
        (vec_duplicate:V4SI
         (match_operand:SI 1 "splat_input_operand" "r,Z")))]
   "TARGET_P9_VECTOR"
 ;; allows us to use direct move to get the value in a vector register
 ;; so that we can use XXSPLTW
 (define_insn "vsx_splat_v4si_di"
-  [(set (match_operand:V4SI 0 "vsx_register_operand" "=wa,we")
+  [(set (match_operand:V4SI 0 "vsx_register_operand" "=wa,wa")
        (vec_duplicate:V4SI
         (truncate:SI
          (match_operand:DI 1 "gpc_reg_operand" "wa,r"))))]