1 /* { dg-do compile { target { powerpc64le-*-* } } } */
2 /* { dg-options "-mdejagnu-cpu=power8 -O3" } */
3 /* { dg-final { scan-assembler-not "xxpermdi" } } */
4
5 /* This is a test for a specific convert-splat permute removal. */
6
7 void compute (float*, float*, float*, int, int);
8 double test (void);
9 double gorp;
10
main(void)11 int main (void)
12 {
13 float X[10000], Y[256], Z[2000];
14 int i;
15 for (i = 0; i < 2500; i++)
16 compute (X, Y, Z, 256, 2000);
17 gorp = test ();
18 }
19
compute(float * X,float * Y,float * Z,int m,int n)20 void compute(float *X, float *Y, float *Z, int m, int n)
21 {
22 int i, j;
23 float w, *x, *y;
24
25 for (i = 0; i < n; i++)
26 {
27 w = 0.0;
28 x = X++;
29 y = Y;
30 for (j = 0; j < m; j++)
31 w += (*x++) * (*y++);
32 Z[i] = w;
33 }
34 }
35