OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [vect/] [slp-2.c] - Blame information for rev 298

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 298 jeremybenn
/* { dg-require-effective-target vect_int } */
2
 
3
#include <stdarg.h>
4
#include <stdio.h>
5
#include "tree-vect.h"
6
 
7
#define N 128 
8
 
9
int
10
main1 (unsigned short a0, unsigned short a1, unsigned short a2,
11
       unsigned short a3, unsigned short a4, unsigned short a5,
12
       unsigned short a6, unsigned short a7, unsigned short a8,
13
       unsigned short a9, unsigned short a10, unsigned short a11,
14
       unsigned short a12, unsigned short a13, unsigned short a14,
15
       unsigned short a15)
16
{
17
  int i;
18
  unsigned short out[N*16];
19
 
20
  for (i = 0; i < N; i++)
21
    {
22
      out[i*4] = a8;
23
      out[i*4 + 1] = a1;
24
      out[i*4 + 2] = a2;
25
      out[i*4 + 3] = a3;
26
    }
27
 
28
  /* check results:  */
29
  for (i = 0; i < N; i++)
30
    {
31
      if (out[i*4] != a8
32
         || out[i*4 + 1] != a1
33
         || out[i*4 + 2] != a2
34
         || out[i*4 + 3] != a3)
35
        abort ();
36
    }
37
 
38
  for (i = 0; i < N; i++)
39
    {
40
      out[i*16] = a8;
41
      out[i*16 + 1] = a7;
42
      out[i*16 + 2] = a1;
43
      out[i*16 + 3] = a2;
44
      out[i*16 + 4] = a8;
45
      out[i*16 + 5] = a5;
46
      out[i*16 + 6] = a5;
47
      out[i*16 + 7] = a4;
48
      out[i*16 + 8] = a12;
49
      out[i*16 + 9] = a13;
50
      out[i*16 + 10] = a14;
51
      out[i*16 + 11] = a15;
52
      out[i*16 + 12] = a6;
53
      out[i*16 + 13] = a9;
54
      out[i*16 + 14] = a0;
55
      out[i*16 + 15] = a7;
56
    }
57
 
58
  /* check results:  */
59
  for (i = 0; i < N; i++)
60
    {
61
      if (out[i*16] != a8
62
          || out[i*16 + 1] != a7
63
          || out[i*16 + 2] != a1
64
          || out[i*16 + 3] != a2
65
          || out[i*16 + 4] != a8
66
          || out[i*16 + 5] != a5
67
          || out[i*16 + 6] != a5
68
          || out[i*16 + 7] != a4
69
          || out[i*16 + 8] != a12
70
          || out[i*16 + 9] != a13
71
          || out[i*16 + 10] != a14
72
          || out[i*16 + 11] != a15
73
          || out[i*16 + 12] != a6
74
          || out[i*16 + 13] != a9
75
          || out[i*16 + 14] != a0
76
          || out[i*16 + 15] != a7)
77
        abort ();
78
    }
79
 
80
  /* SLP with unrolling by 8.  */
81
  for (i = 0; i < N; i++)
82
    {
83
      out[i*3] = a8;
84
      out[i*3 + 1] = a1;
85
      out[i*3 + 2] = a2;
86
    }
87
 
88
  /* check results:  */
89
  for (i = 0; i < N; i++)
90
    {
91
      if (out[i*3] != a8
92
         || out[i*3 + 1] != a1
93
         || out[i*3 + 2] != a2)
94
        abort ();
95
    }
96
 
97
  /* SLP with unrolling by 8.  */
98
  for (i = 0; i < N; i++)
99
    {
100
      out[i*11] = a8;
101
      out[i*11 + 1] = a7;
102
      out[i*11 + 2] = a1;
103
      out[i*11 + 3] = a2;
104
      out[i*11 + 4] = a8;
105
      out[i*11 + 5] = a5;
106
      out[i*11 + 6] = a5;
107
      out[i*11 + 7] = a4;
108
      out[i*11 + 8] = a12;
109
      out[i*11 + 9] = a13;
110
      out[i*11 + 10] = a14;
111
    }
112
 
113
  /* check results:  */
114
  for (i = 0; i < N; i++)
115
    {
116
      if (out[i*11] != a8
117
          || out[i*11 + 1] != a7
118
          || out[i*11 + 2] != a1
119
          || out[i*11 + 3] != a2
120
          || out[i*11 + 4] != a8
121
          || out[i*11 + 5] != a5
122
          || out[i*11 + 6] != a5
123
          || out[i*11 + 7] != a4
124
          || out[i*11 + 8] != a12
125
          || out[i*11 + 9] != a13
126
          || out[i*11 + 10] != a14)
127
        abort ();
128
    }
129
 
130
 
131
  return 0;
132
}
133
 
134
int main (void)
135
{
136
  check_vect ();
137
 
138
  main1 (15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
139
 
140
  return 0;
141
}
142
 
143
/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  } } */
144
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } } */
145
/* { dg-final { cleanup-tree-dump "vect" } } */
146
 

powered by: WebSVN 2.1.0

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