]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000: Add veqv support to *eqv<mode>3_internal1
authorKewen Lin <linkw@linux.ibm.com>
Thu, 21 Nov 2024 07:41:33 +0000 (07:41 +0000)
committerKewen Lin <linkw@gcc.gnu.org>
Thu, 21 Nov 2024 07:41:33 +0000 (07:41 +0000)
When making patch to replace TARGET_P8_VECTOR, I noticed
for *eqv<BOOL_128:mode>3_internal1 unlike the other logical
operations, we only exploited the vsx version.  I think it
is an oversight, this patch is to consider veqv as well.

gcc/ChangeLog:

* config/rs6000/rs6000.md (*eqv<BOOL_128:mode>3_internal1): Generate
insn veqv if TARGET_ALTIVEC and operands are altivec_register_operand.

gcc/config/rs6000/rs6000.md

index 2598059280bf1666cf397d650ca26d1d717d7531..ca91a24795b1d783b4870932cca6268bffa20c1e 100644 (file)
          (match_operand:BOOL_128 2 "vlogical_operand" "<BOOL_REGS_OP2>"))))]
   "TARGET_P8_VECTOR"
 {
-  if (vsx_register_operand (operands[0], <MODE>mode))
+  if (TARGET_VSX && vsx_register_operand (operands[0], <MODE>mode))
     return "xxleqv %x0,%x1,%x2";
 
+  if (TARGET_ALTIVEC && altivec_register_operand (operands[0], <MODE>mode))
+    return "veqv %0,%1,%2";
+
   return "#";
 }
   "TARGET_P8_VECTOR && reload_completed