1 /* { dg-require-effective-target vect_int } */
8 #define SIGNEDNESS_1 unsigned
9 #define SIGNEDNESS_2 unsigned
10 #define SIGNEDNESS_3 unsigned
13 SIGNEDNESS_1
int __attribute__ ((noipa
))
14 f (SIGNEDNESS_1
int res
, SIGNEDNESS_3
char *restrict a
,
15 SIGNEDNESS_3
char *restrict b
)
17 for (__INTPTR_TYPE__ i
= 0; i
< N
; ++i
)
21 SIGNEDNESS_2
short mult
= av
* bv
;
27 #define BASE ((SIGNEDNESS_3 int) -1 < 0 ? -126 : 4)
35 SIGNEDNESS_3
char a
[N
], b
[N
];
36 int expected
= 0x12345;
37 for (int i
= 0; i
< N
; ++i
)
40 b
[i
] = BASE
+ OFFSET
+ i
* 4;
41 asm volatile ("" ::: "memory");
42 expected
+= (SIGNEDNESS_2
short) (a
[i
] * b
[i
]);
44 if (f (0x12345, a
, b
) != expected
)
48 /* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */
49 /* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { target vect_sdot_qi } } } */