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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [vect/] [vect-double-reduc-6-big-array.c] - Blame information for rev 749

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 689 jeremybenn
/* { dg-require-effective-target vect_int_mult } */
2
 
3
#include <stdarg.h>
4
#include "tree-vect.h"
5
 
6
#define K 16
7
 
8
int in[2*K][K] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
9
int out[K];
10
int check_result[K];
11
 
12
volatile int y = 0;
13
 
14
__attribute__ ((noinline)) void
15
foo ()
16
{
17
  int sum;
18
  int i, j, k;
19
 
20
  for (k = 0; k < K; k++)
21
    {
22
      sum = 1;
23
      for (j = 0; j < K; j++)
24
        for (i = 0; i < K; i++)
25
        {
26
          sum *= in[i+k][j];
27
          /* Avoid vectorization.  */
28
          if (y)
29
            abort ();
30
        }
31
      check_result[k] = sum;
32
    }
33
 
34
  for (k = 0; k < K; k++)
35
    {
36
      sum = 1;
37
      for (j = 0; j < K; j++)
38
        for (i = 0; i < K; i++)
39
          sum *= in[i+k][j];
40
      out[k] = sum;
41
    }
42
}
43
 
44
int main ()
45
{
46
  int i, j, k;
47
 
48
  check_vect ();
49
 
50
  for (i = 0; i < 2*K; i++)
51
    for (j = 0; j < K; j++)
52
      in[i][j] = (i+2)/3;
53
 
54
  foo ();
55
 
56
  for (k = 0; k < K; k++)
57
    if (out[k] != check_result[k])
58
      abort ();
59
 
60
  return 0;
61
}
62
 
63
/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
64
/* { dg-final { cleanup-tree-dump "vect" } } */
65
 

powered by: WebSVN 2.1.0

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