[RS6000] Disparage altivec_mov gpr alternatives
authorAlan Modra <amodra@gmail.com>
Thu, 14 Jul 2016 14:25:47 +0000 (23:55 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 14 Jul 2016 14:25:47 +0000 (23:55 +0930)
and fix constraint '*' placement.

* gcc/config/rs6000/altivec.md (altivec_mov<mode>): Disparage
gpr alternatives.  Correct '*' placement on Y,r alternative.
Add '*' on operand 1 of r,r alternative.

From-SVN: r238339

gcc/ChangeLog
gcc/config/rs6000/altivec.md

index e04e48af5236dabb08465e935ea29c4fee88702f..6c4204f57389b9cbbeccee6da21040b21b47fa22 100644 (file)
@@ -1,3 +1,9 @@
+2016-07-14  Alan Modra  <amodra@gmail.com>
+
+       * gcc/config/rs6000/altivec.md (altivec_mov<mode>): Disparage
+       gpr alternatives.  Correct '*' placement on Y,r alternative.
+       Add '*' on operand 1 of r,r alternative.
+
 2016-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * expmed.c (mult_variant, choose_mult_variant): Move declaration to...
index aa01ac9de8d94cf3dab28aaf8c47a1447d22dc01..9193f07e2f074b6300276c3d914a8c9ac819cc26 100644 (file)
 
 ;; Vector move instructions.
 (define_insn "*altivec_mov<mode>"
-  [(set (match_operand:VM2 0 "nonimmediate_operand" "=Z,v,v,*Y,*r,*r,v,v,*r")
-       (match_operand:VM2 1 "input_operand" "v,Z,v,r,Y,r,j,W,W"))]
+  [(set (match_operand:VM2 0 "nonimmediate_operand" "=Z,v,v,?Y,?*r,?*r,v,v,?*r")
+       (match_operand:VM2 1 "input_operand" "v,Z,v,*r,Y,*r,j,W,W"))]
   "VECTOR_MEM_ALTIVEC_P (<MODE>mode)
    && (register_operand (operands[0], <MODE>mode) 
        || register_operand (operands[1], <MODE>mode))"