testsuite: Revert to the original version of pr100056.c
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr117874.c
blob27e5f8ca369243a1604d17cc008581f5f680520b
1 /* { dg-do compile } */
2 /* { dg-require-effective-target vect_double } */
4 typedef struct {
5 double real;
6 double imag;
7 } complex;
9 typedef struct { complex e[3][3]; } su3_matrix;
11 void mult_su3_an(su3_matrix *a, su3_matrix *b, su3_matrix *c)
13 int j;
14 double a0r,a0i,a1r,a1i,a2r,a2i;
15 double b0r,b0i,b1r,b1i,b2r,b2i;
16 for(j=0;j<3;j++)
18 a0r=a->e[0][0].real; a0i=a->e[0][0].imag;
19 b0r=b->e[0][j].real; b0i=b->e[0][j].imag;
20 a1r=a->e[1][0].real; a1i=a->e[1][0].imag;
21 b1r=b->e[1][j].real; b1i=b->e[1][j].imag;
22 a2r=a->e[2][0].real; a2i=a->e[2][0].imag;
23 b2r=b->e[2][j].real; b2i=b->e[2][j].imag;
25 c->e[0][j].real = a0r*b0r + a0i*b0i + a1r*b1r + a1i*b1i + a2r*b2r + a2i*b2i;
26 c->e[0][j].imag = a0r*b0i - a0i*b0r + a1r*b1i - a1i*b1r + a2r*b2i - a2i*b2r;
28 a0r=a->e[0][1].real; a0i=a->e[0][1].imag;
29 b0r=b->e[0][j].real; b0i=b->e[0][j].imag;
30 a1r=a->e[1][1].real; a1i=a->e[1][1].imag;
31 b1r=b->e[1][j].real; b1i=b->e[1][j].imag;
32 a2r=a->e[2][1].real; a2i=a->e[2][1].imag;
33 b2r=b->e[2][j].real; b2i=b->e[2][j].imag;
35 c->e[1][j].real = a0r*b0r + a0i*b0i + a1r*b1r + a1i*b1i + a2r*b2r + a2i*b2i;
36 c->e[1][j].imag = a0r*b0i - a0i*b0r + a1r*b1i - a1i*b1r + a2r*b2i - a2i*b2r;
38 a0r=a->e[0][2].real; a0i=a->e[0][2].imag;
39 b0r=b->e[0][j].real; b0i=b->e[0][j].imag;
40 a1r=a->e[1][2].real; a1i=a->e[1][2].imag;
41 b1r=b->e[1][j].real; b1i=b->e[1][j].imag;
42 a2r=a->e[2][2].real; a2i=a->e[2][2].imag;
43 b2r=b->e[2][j].real; b2i=b->e[2][j].imag;
45 c->e[2][j].real = a0r*b0r + a0i*b0i + a1r*b1r + a1i*b1i + a2r*b2r + a2i*b2i;
46 c->e[2][j].imag = a0r*b0i - a0i*b0r + a1r*b1i - a1i*b1r + a2r*b2i - a2i*b2r;
50 /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_hw_misalign } } } */