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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [powerpc/] [pr41175.c] - Blame information for rev 801

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

Line No. Rev Author Line
1 691 jeremybenn
/* PR target/41175 */
2
/* { dg-do run } */
3
/* { dg-options "-Os" } */
4
 
5
#define X2(n) X1(n##0) X1(n##1)
6
#define X4(n) X2(n##0) X2(n##1)
7
#define X8(n) X4(n##0) X4(n##1)
8
 
9
#ifndef __SPE__
10
#define FLOAT_REG_CONSTRAINT "f"
11
#else
12
#define FLOAT_REG_CONSTRAINT "r"
13
#endif
14
 
15
volatile int ll;
16
 
17
__attribute__((noinline)) void
18
foo (void)
19
{
20
  asm volatile ("" : : : "memory");
21
}
22
 
23
__attribute__((noinline)) void
24
bar (char *p)
25
{
26
  asm volatile ("" : : "r" (p) : "memory");
27
}
28
 
29
__attribute__((noinline)) void
30
f1 (void)
31
{
32
  int mem;
33
#undef X1
34
#define X1(n) int gpr##n = 0;
35
  X8(a) X8(b) X8(c)
36
#undef X1
37
#define X1(n) "+r" (gpr##n),
38
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
39
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
40
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
41
  foo ();
42
#undef X1
43
#define X1(n) "r" (gpr##n),
44
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
45
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
46
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
47
}
48
 
49
__attribute__((noinline)) void
50
f2 (void)
51
{
52
  int mem;
53
#undef X1
54
#define X1(n) int gpr##n = 0;
55
  X8(a) X8(b) X8(c)
56
#undef X1
57
#define X1(n) "+r" (gpr##n),
58
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
59
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
60
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
61
  char *pp = __builtin_alloca (ll);
62
  bar (pp);
63
#undef X1
64
#define X1(n) "r" (gpr##n),
65
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
66
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
67
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
68
}
69
 
70
__attribute__((noinline)) void
71
f3 (void)
72
{
73
  int mem;
74
#undef X1
75
#define X1(n) int gpr##n = 0;
76
  X8(a) X8(b) X8(c)
77
#undef X1
78
#define X1(n) "+r" (gpr##n),
79
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
80
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
81
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
82
#undef X1
83
#define X1(n) "r" (gpr##n),
84
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
85
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
86
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
87
}
88
 
89
#ifndef __NO_FPRS__
90
__attribute__((noinline)) void
91
f4 (void)
92
{
93
  int mem;
94
#undef X1
95
#define X1(n) int gpr##n = 0;
96
  X8(a) X8(b) X8(c)
97
#undef X1
98
#define X1(n) double fpr##n = 0.0;
99
  X4(d)
100
#undef X1
101
#define X1(n) "+r" (gpr##n),
102
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
103
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
104
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
105
#undef X1
106
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
107
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
108
  foo ();
109
#undef X1
110
#define X1(n) "r" (gpr##n),
111
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
112
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
113
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
114
#undef X1
115
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
116
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
117
}
118
 
119
__attribute__((noinline)) void
120
f5 (void)
121
{
122
  int mem;
123
#undef X1
124
#define X1(n) int gpr##n = 0;
125
  X8(a) X8(b) X8(c)
126
#undef X1
127
#define X1(n) double fpr##n = 0.0;
128
  X4(d)
129
#undef X1
130
#define X1(n) "+r" (gpr##n),
131
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
132
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
133
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
134
#undef X1
135
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
136
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
137
  char *pp = __builtin_alloca (ll);
138
  bar (pp);
139
#undef X1
140
#define X1(n) "r" (gpr##n),
141
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
142
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
143
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
144
#undef X1
145
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
146
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
147
}
148
 
149
__attribute__((noinline)) void
150
f6 (void)
151
{
152
  int mem;
153
#undef X1
154
#define X1(n) int gpr##n = 0;
155
  X8(a) X8(b) X8(c)
156
#undef X1
157
#define X1(n) double fpr##n = 0.0;
158
  X4(d)
159
#undef X1
160
#define X1(n) "+r" (gpr##n),
161
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
162
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
163
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
164
#undef X1
165
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
166
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
167
#undef X1
168
#define X1(n) "r" (gpr##n),
169
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
170
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
171
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
172
#undef X1
173
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
174
  asm volatile ("" : : X4(d) "m" (mem) : "memory");
175
}
176
 
177
__attribute__((noinline)) void
178
f7 (void)
179
{
180
  int mem;
181
#undef X1
182
#define X1(n) int gpr##n = 0;
183
  X8(a) X8(b) X8(c)
184
#undef X1
185
#define X1(n) double fpr##n = 0.0;
186
  X2(d)
187
#undef X1
188
#define X1(n) "+r" (gpr##n),
189
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
190
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
191
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
192
#undef X1
193
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
194
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
195
  foo ();
196
#undef X1
197
#define X1(n) "r" (gpr##n),
198
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
199
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
200
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
201
#undef X1
202
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
203
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
204
}
205
 
206
__attribute__((noinline)) void
207
f8 (void)
208
{
209
  int mem;
210
#undef X1
211
#define X1(n) int gpr##n = 0;
212
  X8(a) X8(b) X8(c)
213
#undef X1
214
#define X1(n) double fpr##n = 0.0;
215
  X2(d)
216
#undef X1
217
#define X1(n) "+r" (gpr##n),
218
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
219
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
220
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
221
#undef X1
222
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
223
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
224
  char *pp = __builtin_alloca (ll);
225
  bar (pp);
226
#undef X1
227
#define X1(n) "r" (gpr##n),
228
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
229
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
230
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
231
#undef X1
232
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
233
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
234
}
235
 
236
__attribute__((noinline)) void
237
f9 (void)
238
{
239
  int mem;
240
#undef X1
241
#define X1(n) int gpr##n = 0;
242
  X8(a) X8(b) X8(c)
243
#undef X1
244
#define X1(n) double fpr##n = 0.0;
245
  X2(d)
246
#undef X1
247
#define X1(n) "+r" (gpr##n),
248
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
249
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
250
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
251
#undef X1
252
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
253
  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
254
#undef X1
255
#define X1(n) "r" (gpr##n),
256
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
257
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
258
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
259
#undef X1
260
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
261
  asm volatile ("" : : X2(d) "m" (mem) : "memory");
262
}
263
 
264
__attribute__((noinline)) void
265
f10 (void)
266
{
267
  int mem;
268
#undef X1
269
#define X1(n) int gpr##n = 0;
270
  X8(a) X8(b) X4(c)
271
#undef X1
272
#define X1(n) double fpr##n = 0.0;
273
  X1(d)
274
#undef X1
275
#define X1(n) "+r" (gpr##n),
276
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
277
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
278
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
279
#undef X1
280
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
281
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
282
  foo ();
283
#undef X1
284
#define X1(n) "r" (gpr##n),
285
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
286
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
287
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
288
#undef X1
289
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
290
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
291
}
292
 
293
__attribute__((noinline)) void
294
f11 (void)
295
{
296
  int mem;
297
#undef X1
298
#define X1(n) int gpr##n = 0;
299
  X8(a) X8(b) X4(c)
300
#undef X1
301
#define X1(n) double fpr##n = 0.0;
302
  X1(d)
303
#undef X1
304
#define X1(n) "+r" (gpr##n),
305
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
306
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
307
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
308
#undef X1
309
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
310
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
311
  char *pp = __builtin_alloca (ll);
312
  bar (pp);
313
#undef X1
314
#define X1(n) "r" (gpr##n),
315
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
316
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
317
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
318
#undef X1
319
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
320
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
321
}
322
 
323
__attribute__((noinline)) void
324
f12 (void)
325
{
326
  int mem;
327
#undef X1
328
#define X1(n) int gpr##n = 0;
329
  X8(a) X8(b) X4(c)
330
#undef X1
331
#define X1(n) double fpr##n = 0.0;
332
  X1(d)
333
#undef X1
334
#define X1(n) "+r" (gpr##n),
335
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
336
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
337
  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
338
#undef X1
339
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
340
  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
341
#undef X1
342
#define X1(n) "r" (gpr##n),
343
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
344
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
345
  asm volatile ("" : : X4(c) "m" (mem) : "memory");
346
#undef X1
347
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
348
  asm volatile ("" : : X1(d) "m" (mem) : "memory");
349
}
350
 
351
__attribute__((noinline)) void
352
f13 (void)
353
{
354
  int mem;
355
#undef X1
356
#define X1(n) int gpr##n = 0;
357
  X8(a) X8(b) X2(c)
358
#undef X1
359
#define X1(n) double fpr##n = 0.0;
360
  X8(d)
361
#undef X1
362
#define X1(n) "+r" (gpr##n),
363
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
364
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
365
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
366
#undef X1
367
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
368
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
369
  foo ();
370
#undef X1
371
#define X1(n) "r" (gpr##n),
372
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
373
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
374
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
375
#undef X1
376
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
377
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
378
}
379
 
380
__attribute__((noinline)) void
381
f14 (void)
382
{
383
  int mem;
384
#undef X1
385
#define X1(n) int gpr##n = 0;
386
  X8(a) X8(b) X2(c)
387
#undef X1
388
#define X1(n) double fpr##n = 0.0;
389
  X8(d)
390
#undef X1
391
#define X1(n) "+r" (gpr##n),
392
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
393
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
394
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
395
#undef X1
396
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
397
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
398
  char *pp = __builtin_alloca (ll);
399
  bar (pp);
400
#undef X1
401
#define X1(n) "r" (gpr##n),
402
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
403
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
404
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
405
#undef X1
406
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
407
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
408
}
409
 
410
__attribute__((noinline)) void
411
f15 (void)
412
{
413
  int mem;
414
#undef X1
415
#define X1(n) int gpr##n = 0;
416
  X8(a) X8(b) X2(c)
417
#undef X1
418
#define X1(n) double fpr##n = 0.0;
419
  X8(d)
420
#undef X1
421
#define X1(n) "+r" (gpr##n),
422
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
423
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
424
  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
425
#undef X1
426
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
427
  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
428
#undef X1
429
#define X1(n) "r" (gpr##n),
430
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
431
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
432
  asm volatile ("" : : X2(c) "m" (mem) : "memory");
433
#undef X1
434
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
435
  asm volatile ("" : : X8(d) "m" (mem) : "memory");
436
}
437
#endif
438
 
439
int
440
main ()
441
{
442
  ll = 60;
443
  f1 ();
444
  f2 ();
445
  f3 ();
446
#ifndef __NO_FPRS__
447
  f4 ();
448
  f5 ();
449
  f6 ();
450
  f7 ();
451
  f8 ();
452
  f9 ();
453
  f10 ();
454
  f11 ();
455
  f12 ();
456
  f13 ();
457
  f14 ();
458
  f15 ();
459
#endif
460
  return 0;
461
}

powered by: WebSVN 2.1.0

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