/* { dg-do compile } */ | |
/* { dg-options "-O -ftree-vectorize -mavx512f" } */ | |
extern void abort (void); | |
typedef struct { | |
unsigned int a; | |
unsigned int b; | |
} ii; | |
void foo (unsigned short *arr, ii *iarr) | |
{ | |
ii *iptr = iarr; | |
unsigned short res[128]; | |
ii ires[128]; | |
int i; | |
for (i = 0; i < 128; i++) | |
{ | |
ires[i].a = iptr->b - iptr->a; | |
ires[i].b = iptr->b + iptr->a; | |
iptr++; | |
} | |
for (i = 0; i < 128; i++) | |
{ | |
if (res[i] != arr[i] | |
|| ires[i].a != iarr[i].b - iarr[i].a | |
|| ires[i].b != iarr[i].b + iarr[i].a) | |
abort (); | |
} | |
} |