/* { dg-require-effective-target vect_int } */ | |
#include <stdarg.h> | |
#include "tree-vect.h" | |
#define A 3 | |
#define N 16 | |
short src[N], dst[N]; | |
void foo (int a) | |
{ | |
dst[0] += a*src[0]; | |
dst[1] += a*src[1]; | |
dst[2] += a*src[2]; | |
dst[3] += a*src[3]; | |
dst[4] += a*src[4]; | |
dst[5] += a*src[5]; | |
dst[6] += a*src[6]; | |
dst[7] += a*src[7]; | |
} | |
int main (void) | |
{ | |
int i; | |
check_vect (); | |
for (i = 0; i < N; i++) | |
{ | |
dst[i] = 0; | |
src[i] = i; | |
} | |
foo (A); | |
for (i = 0; i < 8; i++) | |
{ | |
if (dst[i] != A * i) | |
abort (); | |
} | |
return 0; | |
} | |
/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */ | |