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