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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [testsuite/] [gas/] [ia64/] [dv-waw-err.s] - Blame information for rev 205

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
//
2
// Detect WAW violations.  Cases taken from DV tables.
3
//
4
.text
5
        .explicit
6
// AR[BSP]
7
        mov     ar.bsp = r0
8
        mov     ar.bsp = r1
9
        ;;
10
// AR[BSPSTORE]
11
        mov     ar.bspstore = r2
12
        mov     ar.bspstore = r3
13
        ;;
14
 
15
// AR[CCV]
16
        mov     ar.ccv = r4
17
        mov     ar.ccv = r4
18
        ;;
19
 
20
// AR[EC]
21
        br.wtop.sptk    L
22
        mov     ar.ec = r0
23
        ;;
24
 
25
// AR[FPSR].sf0.controls
26
        mov             ar.fpsr = r0
27
        fsetc.s0        0x7f, 0x0f
28
        ;;
29
 
30
// AR[FPSR].sf1.controls
31
        mov             ar.fpsr = r0
32
        fsetc.s1        0x7f, 0x0f
33
        ;;
34
 
35
// AR[FPSR].sf2.controls
36
        mov             ar.fpsr = r0
37
        fsetc.s2        0x7f, 0x0f
38
        ;;
39
 
40
// AR[FPSR].sf3.controls
41
        mov             ar.fpsr = r0
42
        fsetc.s3        0x7f, 0x0f
43
        ;;
44
 
45
// AR[FPSR].sf0.flags
46
        fcmp.eq.s0      p1, p2 = f3, f4
47
        fcmp.eq.s0      p3, p4 = f3, f4 // no DV here
48
        ;;
49
        fcmp.eq.s0      p1, p2 = f3, f4
50
        fclrf.s0
51
        ;;
52
 
53
// AR[FPSR].sf1.flags
54
        fcmp.eq.s1      p1, p2 = f3, f4
55
        fcmp.eq.s1      p3, p4 = f3, f4 // no DV here
56
        ;;
57
        fcmp.eq.s1      p1, p2 = f3, f4
58
        fclrf.s1
59
        ;;
60
 
61
// AR[FPSR].sf2.flags
62
        fcmp.eq.s2      p1, p2 = f3, f4
63
        fcmp.eq.s2      p3, p4 = f3, f4 // no DV here
64
        ;;
65
        fcmp.eq.s2      p1, p2 = f3, f4
66
        fclrf.s2
67
        ;;
68
 
69
// AR[FPSR].sf3.flags
70
        fcmp.eq.s3      p1, p2 = f3, f4
71
        fcmp.eq.s3      p3, p4 = f3, f4 // no DV here
72
        ;;
73
        fcmp.eq.s3      p1, p2 = f3, f4
74
        fclrf.s3
75
        ;;
76
 
77
// AR[FPSR].traps/rv plus all controls/flags
78
        mov     ar.fpsr = r0
79
        mov     ar.fpsr = r0
80
        ;;
81
 
82
// AR[ITC]
83
        mov     ar.itc = r1
84
        mov     ar.itc = r1
85
        ;;
86
 
87
// AR[RUC]
88
        mov     ar.ruc = r1
89
        mov     ar.ruc = r1
90
        ;;
91
 
92
// AR[K]
93
        mov     ar.k2 = r3
94
        mov     ar.k2 = r3
95
        ;;
96
 
97
// AR[LC]
98
        br.cloop.sptk   L
99
        mov     ar.lc = r0
100
        ;;
101
 
102
// AR[PFS]
103
        mov     ar.pfs = r0
104
        br.call.sptk    b0 = L
105
        ;;
106
 
107
// AR[RNAT] (see also AR[BSPSTORE])
108
        mov     ar.rnat = r8
109
        mov     ar.rnat = r8
110
        ;;
111
 
112
// AR[RSC]
113
        mov     ar.rsc = r10
114
        mov     ar.rsc = r10
115
        ;;      
116
 
117
// AR[UNAT]
118
        mov     ar.unat = r12
119
        st8.spill       [r0] = r1
120
        ;;
121
 
122
// AR%
123
        mov     ar48 = r0
124
        mov     ar48 = r0
125
        ;;
126
 
127
// BR%
128
        mov     b1 = r0
129
        mov     b1 = r1
130
        ;;
131
 
132
// CFM (and others)
133
        br.wtop.sptk    L
134
        br.wtop.sptk    L
135
        ;;
136
 
137
// CR[CMCV]
138
        mov     cr.cmcv = r1
139
        mov     cr.cmcv = r2
140
        ;;
141
 
142
// CR[DCR]
143
        mov     cr.dcr = r3
144
        mov     cr.dcr = r3
145
        ;;
146
 
147
// CR[EOI] (and InService)
148
        mov     cr.eoi = r0
149
        mov     cr.eoi = r0
150
        ;;
151
        srlz.d
152
 
153
// CR[GPTA]
154
        mov     cr.gpta = r6
155
        mov     cr.gpta = r7
156
        ;;
157
 
158
// CR[IFA]
159
        mov     cr.ifa = r9
160
        mov     cr.ifa = r10
161
        ;;
162
 
163
// CR[IFS]
164
        mov     cr.ifs = r11
165
        cover
166
        ;;
167
 
168
// CR[IHA]
169
        mov     cr.iha = r13
170
        mov     cr.iha = r14
171
        ;;
172
 
173
// CR[IIB%]
174
        mov     cr.iib0 = r15
175
        mov     cr.iib0 = r16
176
        ;;
177
 
178
        mov     cr.iib1 = r15
179
        mov     cr.iib1 = r16
180
        ;;
181
 
182
// CR[IIM]
183
        mov     cr.iim = r15
184
        mov     cr.iim = r16
185
        ;;
186
 
187
// CR[IIP]
188
        mov     cr.iip = r17
189
        mov     cr.iip = r17
190
        ;;
191
 
192
// CR[IIPA]
193
        mov     cr.iipa = r19
194
        mov     cr.iipa = r20
195
        ;;
196
 
197
// CR[IPSR]
198
        mov     cr.ipsr = r21
199
        mov     cr.ipsr = r22
200
        ;;
201
 
202
// CR[IRR%] (and others)
203
        mov     r2 = cr.ivr
204
        mov     r3 = cr.ivr
205
        ;;
206
 
207
// CR[ISR]
208
        mov     cr.isr = r24
209
        mov     cr.isr = r25
210
        ;;      
211
 
212
// CR[ITIR]
213
        mov     cr.itir = r26
214
        mov     cr.itir = r27
215
        ;;      
216
 
217
// CR[ITM]
218
        mov     cr.itm = r28
219
        mov     cr.itm = r29
220
        ;;      
221
 
222
// CR[ITV]
223
        mov     cr.itv = r0
224
        mov     cr.itv = r1
225
        ;;      
226
 
227
// CR[IVA]
228
        mov     cr.iva = r0
229
        mov     cr.iva = r1
230
        ;;      
231
 
232
// CR[IVR] (no explicit writers)
233
 
234
// CR[LID]
235
        mov     cr.lid = r0
236
        mov     cr.lid = r1
237
        ;;
238
 
239
// CR[LRR%]
240
        mov     cr.lrr0 = r0
241
        mov     cr.lrr1 = r0 // no DV here
242
        ;;
243
        mov     cr.lrr0 = r0
244
        mov     cr.lrr0 = r0
245
        ;;
246
 
247
// CR[PMV]
248
        mov     cr.pmv = r0
249
        mov     cr.pmv = r1
250
        ;;
251
 
252
// CR[PTA]
253
        mov     cr.pta = r0
254
        mov     cr.pta = r1
255
        ;;
256
 
257
// CR[TPR]
258
        mov     cr.tpr = r0
259
        mov     cr.tpr = r1
260
        ;;
261
 
262
// DBR#
263
        mov     dbr[r1] = r1
264
        mov     dbr[r1] = r2
265
        ;;
266
        srlz.d
267
 
268
// DTC
269
        ptc.e   r0
270
        ptc.e   r1      // no DVs here
271
        ;;
272
        ptc.e   r0      // (and others)
273
        itc.i   r0
274
        ;;
275
        srlz.d
276
 
277
// DTC_LIMIT
278
        ptc.g   r0, r1          // NOTE: GAS automatically emits stops after
279
        ptc.ga  r2, r3          //  ptc.g/ptc.ga, so this conflict is no
280
        ;;                      //  longer possible in GAS-generated assembly
281
        srlz.d
282
 
283
// DTR
284
        itr.d   dtr[r0] = r1    // (and others)
285
        ptr.d   r2, r3
286
        ;;
287
        srlz.d
288
 
289
// FR%
290
        mov             f3 = f2
291
        ldfs.c.clr      f3 = [r1]
292
        ;;
293
 
294
// GR%
295
        mov             r2 = r0
296
        ld8.c.clr       r2 = [r1]
297
        ;;
298
 
299
// IBR#
300
        mov     ibr[r0] = r2
301
        mov     ibr[r1] = r2
302
        ;;
303
 
304
// InService
305
        mov     cr.eoi = r0
306
        mov     r1 = cr.ivr
307
        ;;
308
        srlz.d
309
 
310
// ITC
311
        ptc.e   r0
312
        itc.i   r1
313
        ;;
314
        srlz.i
315
        ;;
316
 
317
// ITR
318
        itr.i   itr[r0] = r1
319
        ptr.i   r2, r3
320
        ;;
321
        srlz.i
322
        ;;
323
 
324
// PKR#
325
        .reg.val r1, 0x1
326
        .reg.val r2, ~0x1
327
        mov     pkr[r1] = r1
328
        mov     pkr[r2] = r1    // no DV here
329
        ;;
330
        mov     pkr[r1] = r1
331
        mov     pkr[r1] = r1
332
        ;;
333
 
334
// PMC#
335
        mov     pmc[r3] = r1
336
        mov     pmc[r4] = r1
337
        ;;
338
 
339
// PMD#
340
        mov     pmd[r3] = r1
341
        mov     pmd[r4] = r1
342
        ;;
343
 
344
// PR%, 1 - 15
345
        cmp.eq  p1, p0 = r0, r1
346
        cmp.eq  p1, p0 = r2, r3
347
        ;;
348
        fcmp.eq p1, p2 = f2, f3
349
        fcmp.eq p1, p3 = f2, f3
350
        ;;
351
        cmp.eq.and p1, p2 = r0, r1
352
        cmp.eq.or  p1, p3 = r2, r3
353
        ;;
354
        cmp.eq.or  p1, p3 = r2, r3
355
        cmp.eq.and p1, p2 = r0, r1
356
        ;;
357
        cmp.eq.and p1, p2 = r0, r1
358
        cmp.eq.and p1, p3 = r2, r3 // no DV here
359
        ;;
360
        cmp.eq.or p1, p2 = r0, r1
361
        cmp.eq.or p1, p3 = r2, r3 // no DV here
362
        ;;
363
 
364
// PR63
365
        br.wtop.sptk    L
366
        br.wtop.sptk    L
367
        ;;
368
        cmp.eq  p63, p0 = r0, r1
369
        cmp.eq  p63, p0 = r2, r3
370
        ;;
371
        fcmp.eq p63, p2 = f2, f3
372
        fcmp.eq p63, p3 = f2, f3
373
        ;;
374
        cmp.eq.and p63, p2 = r0, r1
375
        cmp.eq.or  p63, p3 = r2, r3
376
        ;;
377
        cmp.eq.or  p63, p3 = r2, r3
378
        cmp.eq.and p63, p2 = r0, r1
379
        ;;
380
        cmp.eq.and p63, p2 = r0, r1
381
        cmp.eq.and p63, p3 = r2, r3 // no DV here
382
        ;;
383
        cmp.eq.or p63, p2 = r0, r1
384
        cmp.eq.or p63, p3 = r2, r3 // no DV here
385
        ;;
386
 
387
// PSR.ac
388
        rum     (1<<3)
389
        rum     (1<<3)
390
        ;;
391
 
392
// PSR.be
393
        rum     (1<<1)
394
        rum     (1<<1)
395
        ;;
396
 
397
// PSR.bn
398
        bsw.0                    // GAS automatically emits a stop after bsw.n
399
        bsw.0                    // so this conflict is avoided
400
        ;;
401
 
402
// PSR.cpl
403
        epc
404
        br.ret.sptk     b0
405
        ;;
406
 
407
// PSR.da (rfi is the only writer)
408
// PSR.db (and others)
409
        mov     psr.l = r0
410
        mov     psr.l = r1
411
        ;;
412
        srlz.d
413
 
414
// PSR.dd (rfi is the only writer)
415
 
416
// PSR.dfh
417
        ssm     (1<<19)
418
        ssm     (1<<19)
419
        ;;
420
        srlz.d
421
 
422
// PSR.dfl
423
        ssm     (1<<18)
424
        ssm     (1<<18)
425
        ;;
426
        srlz.d
427
 
428
// PSR.di
429
        rsm     (1<<22)
430
        rsm     (1<<22)
431
        ;;
432
 
433
// PSR.dt
434
        rsm     (1<<17)
435
        rsm     (1<<17)
436
        ;;
437
 
438
// PSR.ed (rfi is the only writer)
439
// PSR.i
440
        ssm     (1<<14)
441
        ssm     (1<<14)
442
        ;;
443
 
444
// PSR.ia (no DV semantics)
445
// PSR.ic
446
        ssm     (1<<13)
447
        ssm     (1<<13)
448
        ;;
449
 
450
// PSR.id (rfi is the only writer)
451
// PSR.is (br.ia and rfi are the only writers)
452
// PSR.it (rfi is the only writer)
453
// PSR.lp (see PSR.db)
454
 
455
// PSR.mc (rfi is the only writer)
456
// PSR.mfh
457
        mov     f32 = f33
458
        mov     r10 = psr
459
        ;;
460
        ssm     (1<<5)
461
        ssm     (1<<5)
462
        ;;
463
        ssm     (1<<5)
464
        mov     psr.um = r10
465
        ;;
466
        rum     (1<<5)
467
        rum     (1<<5)
468
        ;;
469
        mov     f32 = f33
470
        mov     f34 = f35       // no DV here
471
        ;;
472
 
473
// PSR.mfl
474
        mov     f2 = f3
475
        mov     r10 = psr
476
        ;;
477
        ssm     (1<<4)
478
        ssm     (1<<4)
479
        ;;
480
        ssm     (1<<4)
481
        mov     psr.um = r10
482
        ;;
483
        rum     (1<<4)
484
        rum     (1<<4)
485
        ;;
486
        mov     f2 = f3
487
        mov     f4 = f5 // no DV here
488
        ;;
489
 
490
// PSR.pk
491
        rsm     (1<<15)
492
        rsm     (1<<15)
493
        ;;
494
 
495
// PSR.pp
496
        rsm     (1<<21)
497
        rsm     (1<<21)
498
        ;;
499
 
500
// PSR.ri (no DV semantics)
501
// PSR.rt (see PSR.db)
502
 
503
// PSR.si
504
        rsm     (1<<23)
505
        ssm     (1<<23)
506
        ;;
507
 
508
// PSR.sp
509
        ssm     (1<<20)
510
        rsm     (1<<20)
511
        ;;
512
        srlz.d
513
 
514
// PSR.ss (rfi is the only writer)
515
// PSR.tb (see PSR.db)
516
 
517
// PSR.up
518
        rsm     (1<<2)
519
        rsm     (1<<2)
520
        ;;
521
        rum     (1<<2)
522
        mov     psr.um = r0
523
        ;;
524
 
525
// RR#
526
        mov     rr[r2] = r1
527
        mov     rr[r2] = r3
528
        ;;
529
 
530
// PR, additional cases (or.andcm and and.orcm interaction)
531
        cmp.eq.or.andcm p6, p7 = 1, r32
532
        cmp.eq.or.andcm p6, p7 = 5, r36 // no DV here
533
        ;;
534
        cmp.eq.and.orcm p6, p7 = 1, r32
535
        cmp.eq.and.orcm p6, p7 = 5, r36 // no DV here
536
        ;;
537
        cmp.eq.or.andcm p63, p7 = 1, r32
538
        cmp.eq.or.andcm p63, p7 = 5, r36 // no DV here
539
        ;;
540
        cmp.eq.or.andcm p6, p63 = 1, r32
541
        cmp.eq.or.andcm p6, p63 = 5, r36 // no DV here
542
        ;;
543
        cmp.eq.and.orcm p63, p7 = 1, r32
544
        cmp.eq.and.orcm p63, p7 = 5, r36 // no DV here
545
        ;;
546
        cmp.eq.and.orcm p6, p63 = 1, r32
547
        cmp.eq.and.orcm p6, p63 = 5, r36 // no DV here
548
        ;;
549
        cmp.eq.or.andcm p6, p7 = 1, r32
550
        cmp.eq.and.orcm p6, p7 = 5, r36
551
        ;;
552
        cmp.eq.or.andcm p63, p7 = 1, r32
553
        cmp.eq.and.orcm p63, p7 = 5, r36
554
        ;;
555
        cmp.eq.or.andcm p6, p63 = 1, r32
556
        cmp.eq.and.orcm p6, p63 = 5, r36
557
        ;;
558
 
559
// PR%, 16 - 62
560
        cmp.eq  p21, p0 = r0, r1
561
        cmp.eq  p21, p0 = r2, r3
562
        ;;
563
        fcmp.eq p21, p22 = f2, f3
564
        fcmp.eq p21, p23 = f2, f3
565
        ;;
566
        cmp.eq.and p21, p22 = r0, r1
567
        cmp.eq.or  p21, p23 = r2, r3
568
        ;;
569
        cmp.eq.or  p21, p23 = r2, r3
570
        cmp.eq.and p21, p22 = r0, r1
571
        ;;
572
        cmp.eq.and p21, p22 = r0, r1
573
        cmp.eq.and p21, p23 = r2, r3 // no DV here
574
        ;;
575
        cmp.eq.or p21, p22 = r0, r1
576
        cmp.eq.or p21, p23 = r2, r3 // no DV here
577
        ;;
578
 
579
// RSE
580
 
581
L:

powered by: WebSVN 2.1.0

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