2 // Detect RAW violations. Cases taken from DV tables.
3 // This test is by no means complete but tries to hit the things that are
4 // likely to be missed.
20 cmpxchg8.acq r5 = [r6],r7,ar.ccv
28 // AR[FPSR].sf0.controls
30 fpcmp.eq.s0 f2 = f3, f4
33 // AR[FPSR].sf1.controls
35 fpcmp.eq.s1 f2 = f3, f4
38 // AR[FPSR].sf2.controls
40 fpcmp.eq.s2 f2 = f3, f4
43 // AR[FPSR].sf3.controls
45 fpcmp.eq.s3 f2 = f3, f4
49 fpcmp.eq.s0 f2 = f3, f4
54 fpcmp.eq.s1 f2 = f3, f4
59 fpcmp.eq.s2 f2 = f3, f4
64 fpcmp.eq.s3 f2 = f3, f4
70 fcmp.eq.s3 p1, p2 = f5, f6
116 fadd f0 = f1, f32 // read from rotating register region
197 // CR[IVR] (all writes are implicit in other resource usage)
227 mov r1 = cr.ivr // data
231 mov psr.l = r3 // other
254 // DTC_LIMIT/ITC_LIMIT
255 ptc.g r0, r1 // NOTE: GAS automatically emits stops after
256 ptc.ga r2, r3 // ptc.g/ptc.ga, so this conflict is no
257 ;; // longer possible in GAS-generated assembly
272 mov f3 = f2 // no DV here
279 ld8.c.clr r0 = [r1] // no DV here
297 mov r3 = cr.ivr // several DVs
310 // ITC_LIMIT (see DTC_LIMIT)
345 cmp.eq p1, p2 = r0, r1 // pr-writer/pr-reader-nobr-nomovpr
348 mov pr = r5, 0xffff // mov-to-pr-allreg/pr-reader-nobr-nomovpr
351 fcmp.eq p5, p6 = f2, f3 // pr-writer-fp/pr-reader-br
354 cmp.eq p7, p8 = r11, r12
355 (p7) br.cond.sptk b1 // no DV here
360 (p63) add r0 = r1, r2
362 fcmp.eq p62, p63 = f2, f3
363 (p63) add r3 = r4, r5
365 cmp.eq p62, p63 = r6, r7 // no DV here
366 (p63) br.cond.sptk b0
381 mov r0 = r15 // no DV here, since gr < 16
383 bsw.1 // GAS automatically emits a stop after bsw.n
384 mov r1 = r16 // so this conflict is avoided
407 mov ar.bsp = r8 // no DV here
410 mov r9 = ar.bsp // no DV here
413 mov cr.ifa = r10 // any mov-to/from-cr is a DV
416 mov r11 = cr.eoi // any mov-to/from-cr is a DV
419 // PSR.da (rfi is the only writer)
420 // PSR.db (also ac,be,dt,pk)
426 // PSR.dd (rfi is the only writer)
450 // PSR.ed (rfi is the only writer)
456 // PSR.ia (no DV semantics)
467 mov r1 = cr.irr0 // no DV here
471 // PSR.id (rfi is the only writer)
472 // PSR.is (br.ia and rfi are the only writers)
473 // PSR.it (rfi is the only writer)
479 // PSR.mc (rfi is the only writer)
503 // PSR.ri (no DV semantics)
515 mov r1 = ar.ec // no DV here
529 // PSR.ss (rfi is the only writer)
543 ld8 r2 = [r0] // data
546 mov r6 = rr[r7] // impliedf
552 // GR%, additional cases
555 addl r3 = 12345, r2 // impliedf, IA64_OPND_R3_2
559 mov r8 = r32 // impliedf