powerpc: Fix vsx_splat_v4si_di breakage on Power8.
authorDavid Edelsohn <dje.gcc@gmail.com>
Mon, 8 Nov 2021 16:46:47 +0000 (11:46 -0500)
committerDavid Edelsohn <dje.gcc@gmail.com>
Mon, 8 Nov 2021 16:46:47 +0000 (11:46 -0500)
The vsx_splat_v4si_di pattern uses a Power8 and a Power9 instruction.
The final condition of TARGET_DIRECT_MODE_64BIT implicitly requires Power8.
The "we" constraint requires Power9, but also requires 64 bit. Because
the DImode pattern already requires 64 bit mode, this isn't horrible,
but it would be best to remove all uses of "we" constraint.  The
mtvsrws instruction itself does not require 64 bit mode.

This patch reverts the previous change to fix the breakage.

gcc/ChangeLog:

* config/rs6000/vsx.md (vsx_splat_v4si_di): Revert "wa"
constraint to "we".

gcc/config/rs6000/vsx.md

index a97f7f2..83d6c7b 100644 (file)
 ;; 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,wa")
+  [(set (match_operand:V4SI 0 "vsx_register_operand" "=wa,we")
        (vec_duplicate:V4SI
         (truncate:SI
          (match_operand:DI 1 "gpc_reg_operand" "wa,r"))))]