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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [vect/] [slp-22.c] - Blame information for rev 689

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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