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 neon.md. Bootstrapped and tested on arm-none-linux-gnueabihf. Committing to trunk. Thanks, Kyrill 2019-07-02 Kyrylo Tkachov <kyrylo.tkac...@arm.com> * config/arm/neon.md (neon_<sup>dot<vsi2qi>): Use neon_dot<q> for type. (neon_<sup>dot_lane<vsi2qi>): Likewise.
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index f9d7ba35b137fed383f84eecbe81dd942943d216..4a2c7b99881e96fbff30a53d370ff0df1416c124 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -3542,7 +3542,7 @@ (define_insn "neon_<sup>dot<vsi2qi>" DOTPROD)))] "TARGET_DOTPROD" "v<sup>dot.<opsuffix>\\t%<V_reg>0, %<V_reg>2, %<V_reg>3" - [(set_attr "type" "neon_dot")] + [(set_attr "type" "neon_dot<q>")] ) ;; These instructions map to the __builtins for the Dot Product @@ -3561,7 +3561,7 @@ (define_insn "neon_<sup>dot_lane<vsi2qi>" = GEN_INT (NEON_ENDIAN_LANE_N (V8QImode, INTVAL (operands[4]))); return "v<sup>dot.<opsuffix>\\t%<V_reg>0, %<V_reg>2, %P3[%c4]"; } - [(set_attr "type" "neon_dot")] + [(set_attr "type" "neon_dot<q>")] ) ;; These expands map to the Dot Product optab the vectorizer checks for.