[AArch64] Use neon_dot_q type for 128-bit [US]DOT instructions where appropriate
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Thu, 7 Feb 2019 09:31:33 +0000 (09:31 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Thu, 7 Feb 2019 09:31:33 +0000 (09:31 +0000)
For the Dot Product instructions we have the scheduling types neon_dot and neon_dot_q for the 128-bit versions.
It seems that we're only using the former though, not assigning the neon_dot_q type anywhere.

This patch fixes that by adding the <q> mode attribute suffix to the type, similar to how we do it for other
types in aarch64-simd.md.

* config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>):
Use neon_dot<q> for type.
(aarch64_<sur>dot_lane<vsi2qi>): Likewise.
(aarch64_<sur>dot_laneq<vsi2qi>): Likewise.

From-SVN: r268610

gcc/ChangeLog
gcc/config/aarch64/aarch64-simd.md

index 3b8a343f1d590a84eacca8760004a3c1fe496e9e..6d2067ad98d1d948448dd83ece1f77ed809f0127 100644 (file)
@@ -1,3 +1,10 @@
+2019-02-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>):
+       Use neon_dot<q> for type.
+       (aarch64_<sur>dot_lane<vsi2qi>): Likewise.
+       (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
+
 2019-02-06  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/89225
index 805d7a895fad4c7370260fd77ef9864805206b07..cae9a8f13bb1b19d1e8ce25948c449791256f5a2 100644 (file)
                DOTPROD)))]
   "TARGET_DOTPROD"
   "<sur>dot\\t%0.<Vtype>, %2.<Vdottype>, %3.<Vdottype>"
-  [(set_attr "type" "neon_dot")]
+  [(set_attr "type" "neon_dot<q>")]
 )
 
 ;; These expands map to the Dot Product optab the vectorizer checks for.
     operands[4] = aarch64_endian_lane_rtx (V8QImode, INTVAL (operands[4]));
     return "<sur>dot\\t%0.<Vtype>, %2.<Vdottype>, %3.4b[%4]";
   }
-  [(set_attr "type" "neon_dot")]
+  [(set_attr "type" "neon_dot<q>")]
 )
 
 (define_insn "aarch64_<sur>dot_laneq<vsi2qi>"
     operands[4] = aarch64_endian_lane_rtx (V16QImode, INTVAL (operands[4]));
     return "<sur>dot\\t%0.<Vtype>, %2.<Vdottype>, %3.4b[%4]";
   }
-  [(set_attr "type" "neon_dot")]
+  [(set_attr "type" "neon_dot<q>")]
 )
 
 (define_expand "copysign<mode>3"