OSDN Git Service

Commit testcase for PR25990.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / gomp / pr25990.c
1 /* { dg-do compile } */
2 /* { dg-options "-fopenmp -O2 -std=c99" } */
3
4 #include <stdio.h>
5 #include <omp.h>
6 #include <math.h>
7 #include <string.h>
8 #include <stdlib.h>
9 #include <complex.h>
10
11 int main(int argc , char * argv[]) {
12
13
14   int AA, BB, CC;
15   AA = 99;
16   BB = 99;
17   CC = (int)atoi(argv[3]);
18
19   int m,n,s;
20   int DD,EE,num_s;
21
22
23   float _Complex * restrict A;
24   A = malloc((AA) * (BB) * (CC) * sizeof(float _Complex));
25   int A_slice_stride;
26   A_slice_stride = (AA) * (BB) ;
27
28
29   float * restrict f;
30   f = malloc(CC * sizeof(float));
31
32
33
34   FILE *fp;
35
36   fp = fopen(argv[1],"rb");
37   fread(A,sizeof(float _Complex),AA * BB * CC,fp);
38   fclose(fp);
39
40   fp = fopen(argv[2],"rb");
41   fread(f,sizeof(float),CC,fp);
42   fclose(fp);
43
44
45   DD = (int)atoi(argv[4]);
46   EE = (int)atoi(argv[5]);
47
48   num_s = (EE - DD) + 1;
49
50
51
52   float * restrict INPUT;
53   INPUT = malloc(4 * 4 * sizeof(float));
54
55
56
57   int m_max = 99;
58   int n_max = 00;
59   float h = 0.1;
60   float FF = 10;
61
62   if ((__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (argv[6]) && strlen (argv[6]) < ((size_t) (5))) || (__builtin_constant_p ("plane") && strlen ("plane") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (argv[6]) && __builtin_constant_p ("plane") && (__s1_len = strlen (argv[6]), __s2_len = strlen ("plane"), (!((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("plane") + 1) - (size_t)(const void *)("plane") == 1) || __s2_len >= 4)) ? __builtin_strcmp (argv[6], "plane") : (__builtin_constant_p (argv[6]) && ((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) && (__s1_len = strlen (argv[6]), __s1_len < 4) ? (__builtin_constant_p ("plane") && ((size_t)(const void *)(("plane") + 1) - (size_t)(const void *)("plane") == 1) ? __builtin_strcmp (argv[6], "plane") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("plane"); register int __result = (((__const unsigned char *) (__const char *) (argv[6]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (argv[6]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (argv[6]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (argv[6]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("plane") && ((size_t)(const void *)(("plane") + 1) - (size_t)(const void *)("plane") == 1) && (__s2_len = strlen ("plane"), __s2_len < 4) ? (__builtin_constant_p (argv[6]) && ((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) ? __builtin_strcmp (argv[6], "plane") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (argv[6]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("plane"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("plane"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("plane"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("plane"))[3]); } } __result; }))) : __builtin_strcmp (argv[6], "plane")))); }) : strncmp (argv[6], "plane", 5)))==0) {
63       m_max = INPUT[ ( ((1)-1) + ( ((1)-1)*4 ))];
64       n_max = INPUT[ ( ((2)-1) + ( ((1)-1)*4 ))];
65       h = INPUT[ ( ((3)-1) + ( ((1)-1)*4 ))];
66       FF = INPUT[ ( ((4)-1) + ( ((1)-1)*4 ))];
67   }
68
69   if ((__extension__ (__builtin_constant_p (6) && ((__builtin_constant_p (argv[6]) && strlen (argv[6]) < ((size_t) (6))) || (__builtin_constant_p ("sphere") && strlen ("sphere") < ((size_t) (6)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (argv[6]) && __builtin_constant_p ("sphere") && (__s1_len = strlen (argv[6]), __s2_len = strlen ("sphere"), (!((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("sphere") + 1) - (size_t)(const void *)("sphere") == 1) || __s2_len >= 4)) ? __builtin_strcmp (argv[6], "sphere") : (__builtin_constant_p (argv[6]) && ((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) && (__s1_len = strlen (argv[6]), __s1_len < 4) ? (__builtin_constant_p ("sphere") && ((size_t)(const void *)(("sphere") + 1) - (size_t)(const void *)("sphere") == 1) ? __builtin_strcmp (argv[6], "sphere") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("sphere"); register int __result = (((__const unsigned char *) (__const char *) (argv[6]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (argv[6]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (argv[6]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (argv[6]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("sphere") && ((size_t)(const void *)(("sphere") + 1) - (size_t)(const void *)("sphere") == 1) && (__s2_len = strlen ("sphere"), __s2_len < 4) ? (__builtin_constant_p (argv[6]) && ((size_t)(const void *)((argv[6]) + 1) - (size_t)(const void *)(argv[6]) == 1) ? __builtin_strcmp (argv[6], "sphere") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (argv[6]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("sphere"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("sphere"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("sphere"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("sphere"))[3]); } } __result; }))) : __builtin_strcmp (argv[6], "sphere")))); }) : strncmp (argv[6], "sphere", 6)))==0) {
70       m_max = 181;
71       n_max = 361;
72       h = INPUT[ ( ((3)-1) + ( ((1)-1)*4 ))];
73       FF = INPUT[ ( ((4)-1) + ( ((1)-1)*4 ))];
74   }
75
76
77
78
79
80   float * restrict X;
81   X = malloc(m_max * n_max * sizeof(float));
82
83
84   float * restrict Y;
85   Y = malloc(m_max * n_max * sizeof(float));
86
87
88   float * restrict Z;
89   Z = malloc(m_max * n_max * sizeof(float));
90
91
92
93
94
95
96   float _Complex * restrict P;
97   P = malloc(m_max * n_max * sizeof(float _Complex));
98
99
100   float _Complex * restrict Ps;
101   Ps = malloc((m_max) * (n_max) * (num_s) * sizeof(float _Complex));
102   int Ps_slice_stride;
103   Ps_slice_stride = (m_max) * (n_max) ;
104
105
106   float GG;
107   float HH;
108
109
110
111
112   for ( n = 1 ; n <= 99 ; n++ ) {
113     for ( m = 1 ; m <= 99 ; m++ ) {
114
115
116
117
118
119       X[ ( ((m)-1) + ( ((n)-1)*m_max ))] = FF ;
120       Y[ ( ((m)-1) + ( ((n)-1)*m_max ))] = FF ;
121       Z[ ( ((m)-1) + ( ((n)-1)*m_max ))] = FF ;
122     }
123   }
124   int KK = atoi(argv[8]);
125   int LL = 3 * KK;
126
127
128   float * restrict MM;
129   MM = malloc(4 * LL * sizeof(float));
130   for ( n = 1 ; n <= n_max ; n++) {
131     for ( m = 1 ; m <= m_max ; m++) {
132       for ( s = 1 ; s <= num_s ; s++) {
133  Ps[ ( ((m)-1) + (((n)-1)*(m_max)) + (((s)-1)*(Ps_slice_stride)) ) ] = 0.0 + 0.0 * (__extension__ 1.0iF);
134       }
135     }
136   }
137
138
139   int liter ;
140
141 #pragma omp parallel for private(m,liter,s)
142   for ( n = 1 ; n <= n_max ; n++) {
143     for ( m = 1 ; m <= m_max ; m++) {
144       for ( liter = 1 ; liter <= KK ; liter++ ) {
145  for ( s = 1 ; s <= num_s ; s++) {
146
147
148    int LM_column;
149    float NN[4];
150    float OO[4];
151    float PP[4];
152    float QQ[4];
153    float k;
154    int s_index;
155    float RR;
156
157    s_index = s + (DD -1);
158    RR = f[ ( (s_index)-1) ];
159    k = 99.0;
160
161    NN[1 -1] = X[ ( ((m)-1) + ( ((n)-1)*m_max ))];
162    NN[2 -1] = Y[ ( ((m)-1) + ( ((n)-1)*m_max ))];
163    NN[3 -1] = Z[ ( ((m)-1) + ( ((n)-1)*m_max ))];
164    NN[4 -1] = 1.0;
165
166    LM_column = ((liter -1) * 3) + 1;
167    OO[1 -1] = MM[ ( ((1)-1) + ( ((LM_column)-1)*4 ))];
168    OO[2 -1] = MM[ ( ((2)-1) + ( ((LM_column)-1)*4 ))];
169    OO[3 -1] = MM[ ( ((3)-1) + ( ((LM_column)-1)*4 ))];
170    OO[4 -1] = MM[ ( ((4)-1) + ( ((LM_column)-1)*4 ))];
171
172    LM_column = ((liter -1) * 3) + 2;
173    PP[1 -1] = MM[ ( ((1)-1) + ( ((LM_column)-1)*4 ))];
174    PP[2 -1] = MM[ ( ((2)-1) + ( ((LM_column)-1)*4 ))];
175    PP[3 -1] = MM[ ( ((3)-1) + ( ((LM_column)-1)*4 ))];
176    PP[4 -1] = MM[ ( ((4)-1) + ( ((LM_column)-1)*4 ))];
177
178    LM_column = ((liter -1) * 3) + 3;
179    QQ[1 -1] = MM[ ( ((1)-1) + ( ((LM_column)-1)*4 ))];
180    QQ[2 -1] = MM[ ( ((2)-1) + ( ((LM_column)-1)*4 ))];
181    QQ[3 -1] = MM[ ( ((3)-1) + ( ((LM_column)-1)*4 ))];
182    QQ[4 -1] = MM[ ( ((4)-1) + ( ((LM_column)-1)*4 ))];
183
184  }
185       }
186     }
187   }
188
189
190 #pragma omp parallel for private(m)
191   for ( n = 1 ; n <= n_max ; n++) {
192     for ( m = 1 ; m <= m_max ; m++) {
193
194
195
196       int s;
197       float SSS;
198       float f1,f2,p1,p2,TT,h,FFF;
199       SSS = 0.0;
200       for ( s = 2 ; s <= num_s ; s++) {
201  f1 = f[ ( ((s-1) + (DD - 1))-1) ];
202  f2 = f[ ( ((s) + (DD - 1))-1) ];
203  p1 = cabsf(Ps[ ( ((m)-1) + (((n)-1)*(m_max)) + ((((s-1))-1)*(Ps_slice_stride)) ) ]) ;
204  p2 = cabsf(Ps[ ( ((m)-1) + (((n)-1)*(m_max)) + (((s)-1)*(Ps_slice_stride)) ) ]) ;
205
206  h = f2 - f1;
207
208  FFF = (f1 + f2) / 2.0;
209
210
211  TT = (1.0 / sqrtf(2.0)) * (((h * p1) + (0.5 * h * (p2 - p1))) * (1.0 / FFF));
212
213  SSS += TT;
214
215       }
216
217       P[ ( ((m)-1) + ( ((n)-1)*m_max ))] = SSS + ((__extension__ 1.0iF) * 0.0);
218     }
219   }
220
221
222
223
224
225   fp = fopen(argv[10],"wb");
226   fwrite(X,sizeof(float),m_max * n_max,fp);
227   fclose(fp);
228
229   fp = fopen(argv[11],"wb");
230   fwrite(Y,sizeof(float),m_max * n_max,fp);
231   fclose(fp);
232
233   fp = fopen(argv[12],"wb");
234   fwrite(Z,sizeof(float),m_max * n_max,fp);
235   fclose(fp);
236
237   fp = fopen(argv[13],"wb");
238   fwrite(P,sizeof(float _Complex),m_max * n_max,fp);
239   fclose(fp);
240
241
242
243   return(0);
244 }