OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [ldist-1.c] - Diff between revs 298 and 338

Only display areas with differences | Details | Blame | View Log

Rev 298 Rev 338
/* { dg-do compile } */
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-all" } */
/* { dg-options "-O2 -ftree-loop-distribution -fdump-tree-ldist-all" } */
 
 
void foo (int * __restrict__ ia,
void foo (int * __restrict__ ia,
          int * __restrict__ ib,
          int * __restrict__ ib,
          int * __restrict__ oxa,
          int * __restrict__ oxa,
          int * __restrict__ oxb,
          int * __restrict__ oxb,
          int * __restrict__ oya,
          int * __restrict__ oya,
          int * __restrict__ oyb)
          int * __restrict__ oyb)
{
{
  int i;
  int i;
  long int mya[52];
  long int mya[52];
  long int myb[52];
  long int myb[52];
 
 
  for (i=0; i < 52; i++)
  for (i=0; i < 52; i++)
    {
    {
      mya[i] = ia[i] * oxa[i] + ib[i] * oxb[i];
      mya[i] = ia[i] * oxa[i] + ib[i] * oxb[i];
      myb[i] = -ia[i] * oxb[i] + ib[i] * oxa[i];
      myb[i] = -ia[i] * oxb[i] + ib[i] * oxa[i];
      oya[i] = mya[i] >> 10;
      oya[i] = mya[i] >> 10;
      oyb[i] = myb[i] >> 10;
      oyb[i] = myb[i] >> 10;
    }
    }
 
 
  /* This loop was distributed, but it is not anymore due to the cost
  /* This loop was distributed, but it is not anymore due to the cost
     model changes: the result of a distribution would look like this:
     model changes: the result of a distribution would look like this:
 
 
     |  for (i=0; i < 52; i++)
     |  for (i=0; i < 52; i++)
     |    oya[i] = ia[i] * oxa[i] + ib[i] * oxb[i] >> 10;
     |    oya[i] = ia[i] * oxa[i] + ib[i] * oxb[i] >> 10;
     |
     |
     |  for (i=0; i < 52; i++)
     |  for (i=0; i < 52; i++)
     |    oyb[i] = -ia[i] * oxb[i] + ib[i] * oxa[i] >> 10;
     |    oyb[i] = -ia[i] * oxb[i] + ib[i] * oxa[i] >> 10;
 
 
     and in this the array IA is read in both tasks.  For maximizing
     and in this the array IA is read in both tasks.  For maximizing
     the cache reuse, ldist does not distributes this loop anymore.
     the cache reuse, ldist does not distributes this loop anymore.
  */
  */
}
}
 
 
/* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
/* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
/* { dg-final { cleanup-tree-dump "ldist" } } */
/* { dg-final { cleanup-tree-dump "ldist" } } */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.