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"