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 <[email protected]>
* 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.