Viewing file: abd_1.c (1.26 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-O3" } */
#pragma GCC target "+nosve"
#define MAX(x, y) ((x) > (y) ? (x) : (y)) #define MIN(x, y) ((x) < (y) ? (x) : (y)) #define N 1024
#define FUNC(T) \ void \ sabd_##T (signed T * restrict a, signed T * restrict b, \ signed T * restrict out) \ { \ for (int i = 0; i < N; i++) \ out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ } \ \ void \ uabd_##T (unsigned T * restrict a, unsigned T * restrict b, \ unsigned T * restrict out) \ { \ for (int i = 0; i < N; i++) \ out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ }
FUNC(char) FUNC(short) FUNC(int)
/* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ /* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ /* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */ /* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */ /* { dg-final { scan-assembler-times "sabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */ /* { dg-final { scan-assembler-times "uabd\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
|