aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c
blob: 202bff8de8dc930c47bb0844340f1ba3b33d1990 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* { dg-do compile } */
/* { dg-options "-mdejagnu-cpu=power8 -mvsx -O3" } */
/* { dg-require-effective-target powerpc_vsx } */
/* { dg-final { scan-assembler-not "xxpermdi" } } */

/* This is a test for a specific convert-splat permute removal.  */

void compute (float*, float*, float*, int, int);
double test (void);
double gorp;

int main (void)
{
  float X[10000], Y[256], Z[2000];
  int i;
  for (i = 0; i < 2500; i++)
    compute (X, Y, Z, 256, 2000);
  gorp = test ();
}

void compute(float *X, float *Y, float *Z, int m, int n)
{
  int i, j;
  float w, *x, *y;

  for (i = 0; i < n; i++)
    {
      w = 0.0;
      x = X++;
      y = Y;
      for (j = 0; j < m; j++)
	w += (*x++) * (*y++);
      Z[i] = w;
    }
}