| /* { dg-do compile } */ |
| /* { dg-options "-mavx512f -mavx512vnni -mavx512vl -O2" } */ |
| |
| /* { dg-final { scan-assembler "vpdpwssd\t" } } */ |
| /* { dg-final { scan-assembler "vpdpbusd\t" } } */ |
| /* { dg-final { scan-assembler-not "vpmaddwd\t" } } */ |
| |
| int __attribute__((noinline, noclone, optimize("tree-vectorize"))) |
| sdot_prod_hi (short * restrict a, short * restrict b, |
| int c, int n) |
| { |
| int i; |
| for (i = 0; i < n; i++) |
| { |
| c += ((int) a[i] * (int) b[i]); |
| } |
| return c; |
| } |
| |
| int __attribute__((noinline, noclone, optimize("tree-vectorize"))) |
| usdot_prod_qi (unsigned char * restrict a, char *restrict b, |
| int c, int n) |
| { |
| int i; |
| for (i = 0; i < n; i++) |
| { |
| c += ((int) a[i] * (int) b[i]); |
| } |
| return c; |
| } |