Hi all,

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.

Bootstrapped and tested on aarch64-none-linux-gnu.

Ok for trunk?

Thanks,
Kyrill

2019-05-02  Kyrylo Tkachov  <kyrylo.tkac...@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.
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
index 76e947e36f5b874cdd070e060d8988fec4875959..64a26ff923e3573a316a41742ea6b43f44475740 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -503,7 +503,7 @@ (define_insn "aarch64_<sur>dot<vsi2qi>"
 		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.
@@ -555,7 +555,7 @@ (define_insn "aarch64_<sur>dot_lane<vsi2qi>"
     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>"
@@ -570,7 +570,7 @@ (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"

Reply via email to