1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_v8_2a_dotprod_neon_ok } */
3 /* { dg-add-options arm_v8_2a_dotprod_neon } */
4 /* { dg-additional-options "-O3" } */
5
6 #pragma GCC target "+nosve"
7
8 #define N 1024
9
10 unsigned char pix1[N], pix2[N];
11
12 int foo (void)
13 {
14 int i_sum = 0;
15 int i;
16
17 for (i = 0; i < N; i++)
18 i_sum += __builtin_abs (pix1[i] - pix2[i]);
19
20 return i_sum;
21 }
22
23 /* { dg-final { scan-assembler-not {\tushll\t} } } */
24 /* { dg-final { scan-assembler-not {\tushll2\t} } } */
25 /* { dg-final { scan-assembler-not {\tusubl\t} } } */
26 /* { dg-final { scan-assembler-not {\tusubl2\t} } } */
27 /* { dg-final { scan-assembler-not {\tabs\t} } } */
28
29 /* { dg-final { scan-assembler {\tuabd\t} } } */
30 /* { dg-final { scan-assembler {\tudot\t} } } */