1 /* { dg-do compile } */
2 /* { dg-require-effective-target vect_dotprod_hisi } */
3 /* Ensure that, given the same input datatype, both the two-way and four-way
4 dot products are autovectorized, with the correct operation then selected
5 based on the distinct output types. */
8 uint32_t udot4(int n
, uint8_t* data
) {
10 for (int i
=0; i
<n
; i
+=1) {
11 sum
+= data
[i
] * data
[i
];
16 int32_t sdot4(int n
, int8_t* data
) {
18 for (int i
=0; i
<n
; i
+=1) {
19 sum
+= data
[i
] * data
[i
];
24 uint32_t udot2(int n
, uint16_t* data
) {
26 for (int i
=0; i
<n
; i
+=1) {
27 sum
+= data
[i
] * data
[i
];
32 int32_t sdot2(int n
, int16_t* data
) {
34 for (int i
=0; i
<n
; i
+=1) {
35 sum
+= data
[i
] * data
[i
];
40 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
41 /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 4 "vect" } } */