|
|
1.1 root 1: .include "macros.inc"
2:
3: .purgem test
4: .macro test name
5: movi a2, 1f
6: movi a3, 99f
7: 0:
8: ipf a2, 0
9: ipf a2, 4
10: ipf a2, 8
11: ipf a2, 12
12: addi a2, a2, 16
13: blt a2, a3, 0b
14: j 1f
15: .align 4
16: 1:
17: .endm
18:
19: test_suite pipeline
20:
21: test register_no_stall
22: rsr a3, ccount
23: add a5, a6, a6
24: add a6, a5, a5
25: rsr a4, ccount
26: sub a3, a4, a3
27: assert eqi, a3, 3
28: test_end
29:
30: test register_stall
31: l32i a5, a1, 0 /* data cache preload */
32: nop
33: rsr a3, ccount
34: l32i a5, a1, 0
35: add a6, a5, a5 /* M-to-E interlock */
36: rsr a4, ccount
37: sub a3, a4, a3
38: assert eqi, a3, 4
39: test_end
40:
41: test j0_stall
42: rsr a3, ccount
43: j 1f /* E + 2-cycle penalty */
44: 1:
45: rsr a4, ccount /* E */
46: sub a3, a4, a3
47: assert eqi, a3, 4
48: test_end
49:
50: test j1_stall
51: rsr a3, ccount
52: j 1f
53: nop
54: 1:
55: rsr a4, ccount
56: sub a3, a4, a3
57: assert eqi, a3, 4
58: test_end
59:
60: test j5_stall
61: rsr a3, ccount
62: j 1f
63: nop
64: nop
65: nop
66: nop
67: nop
68: 1:
69: rsr a4, ccount
70: sub a3, a4, a3
71: assert eqi, a3, 4
72: test_end
73:
74: test b_no_stall
75: movi a5, 1
76: rsr a3, ccount
77: beqi a5, 2, 1f
78: rsr a4, ccount
79: sub a3, a4, a3
80: assert eqi, a3, 2
81: 1:
82: test_end
83:
84: test b1_stall
85: movi a5, 1
86: rsr a3, ccount
87: beqi a5, 1, 1f
88: nop
89: 1:
90: rsr a4, ccount
91: sub a3, a4, a3
92: assert eqi, a3, 4
93: test_end
94:
95: test b5_stall
96: movi a5, 1
97: rsr a3, ccount
98: beqi a5, 1, 1f
99: nop
100: nop
101: nop
102: nop
103: nop
104: 1:
105: rsr a4, ccount
106: sub a3, a4, a3
107: assert eqi, a3, 4
108: test_end
109:
110: /* PS *SYNC */
111:
112: test ps_dsync
113: rsr a5, ps
114: isync
115: rsr a3, ccount
116: wsr a5, ps
117: dsync
118: rsr a4, ccount
119: sub a3, a4, a3
120: assert eqi, a3, 5
121: test_end
122:
123: test ps_esync
124: rsr a5, ps
125: isync
126: rsr a3, ccount
127: wsr a5, ps
128: esync
129: rsr a4, ccount
130: sub a3, a4, a3
131: assert eqi, a3, 5
132: test_end
133:
134: test ps_rsync
135: rsr a5, ps
136: isync
137: rsr a3, ccount
138: wsr a5, ps
139: rsync
140: rsr a4, ccount
141: sub a3, a4, a3
142: assert eqi, a3, 5
143: test_end
144:
145: test ps_isync
146: rsr a5, ps
147: isync
148: rsr a3, ccount
149: wsr a5, ps
150: isync
151: rsr a4, ccount
152: sub a3, a4, a3
153: movi a4, 9
154: assert eq, a3, a4
155: test_end
156:
157: test_suite_end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.