Viewing file: mmx-reduce-op-1.c (1.39 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ /* { dg-final { scan-tree-dump-times "\.REDUC_PLUS" 1 "optimized" } } */ /* { dg-final { scan-tree-dump-times "\.REDUC_MIN" 2 "optimized" } } */ /* { dg-final { scan-tree-dump-times "\.REDUC_MAX" 2 "optimized" } } */
#define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) > (b) ? (b) : (a))
short __attribute__((noipa, optimize("Ofast"),target("sse2"))) reduce_add (short* __restrict pa) { short sum = 0; for (int i = 0; i != 4; i++) sum += pa[i]; return sum; }
short __attribute__((noipa, optimize("Ofast"),target("sse2"))) reduce_smax (short* __restrict pa) { short sum = pa[0]; for (int i = 0; i != 4; i++) sum = MAX(sum, pa[i]); return sum; }
short __attribute__((noipa, optimize("Ofast"),target("sse2"))) reduce_smin (short* __restrict pa) { short sum = pa[0]; for (int i = 0; i != 4; i++) sum = MIN(sum, pa[i]); return sum; }
unsigned short __attribute__((noipa, optimize("Ofast"),target("sse4.1"))) reduce_umax (unsigned short* __restrict pa) { unsigned short sum = pa[0]; for (int i = 0; i != 4; i++) sum = MAX(sum, pa[i]); return sum; }
unsigned short __attribute__((noipa, optimize("Ofast"),target("sse4.1"))) reduce_umin (unsigned short* __restrict pa) { unsigned short sum = pa[0]; for (int i = 0; i != 4; i++) sum = MIN(sum, pa[i]); return sum; }
|