root / tests / tcg / xtensa / test_windowed.S @ c09015dd
History | View | Annotate | Download (5.4 kB)
1 | 7d890b40 | Max Filippov | .include "macros.inc" |
---|---|---|---|
2 | 7d890b40 | Max Filippov | |
3 | 7d890b40 | Max Filippov | test_suite windowed |
4 | 7d890b40 | Max Filippov | |
5 | 7d890b40 | Max Filippov | .altmacro |
6 | 7d890b40 | Max Filippov | |
7 | 7d890b40 | Max Filippov | .macro reset_window start |
8 | 7d890b40 | Max Filippov | movi a2, 0xff |
9 | 7d890b40 | Max Filippov | wsr a2, windowstart |
10 | 7d890b40 | Max Filippov | rsync |
11 | 7d890b40 | Max Filippov | movi a2, 0 |
12 | 7d890b40 | Max Filippov | wsr a2, windowbase |
13 | 7d890b40 | Max Filippov | rsync |
14 | 7d890b40 | Max Filippov | movi a2, \start |
15 | 7d890b40 | Max Filippov | wsr a2, windowstart |
16 | 7d890b40 | Max Filippov | rsync |
17 | 7d890b40 | Max Filippov | .endm |
18 | 7d890b40 | Max Filippov | |
19 | 7d890b40 | Max Filippov | .macro overflow_test shift, window, probe_ok, probe_ex |
20 | 7d890b40 | Max Filippov | set_vector window_overflow_4, 0 |
21 | 7d890b40 | Max Filippov | set_vector window_overflow_8, 0 |
22 | 7d890b40 | Max Filippov | set_vector window_overflow_12, 0 |
23 | 7d890b40 | Max Filippov | |
24 | 7d890b40 | Max Filippov | movi a2, 1 | (((1 << ((\window) / 4)) | 1) << ((\shift) / 4)) |
25 | 7d890b40 | Max Filippov | wsr a2, windowstart |
26 | 7d890b40 | Max Filippov | reset_ps |
27 | 7d890b40 | Max Filippov | |
28 | 7d890b40 | Max Filippov | mov a2, a\probe_ok |
29 | 7d890b40 | Max Filippov | set_vector window_overflow_\window, 10f |
30 | 7d890b40 | Max Filippov | 1: |
31 | 7d890b40 | Max Filippov | mov a2, a\probe_ex |
32 | 7d890b40 | Max Filippov | test_fail |
33 | 7d890b40 | Max Filippov | 10: |
34 | 7d890b40 | Max Filippov | rsr a2, epc1 |
35 | 7d890b40 | Max Filippov | movi a3, 1b |
36 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
37 | 7d890b40 | Max Filippov | movi a2, 2f |
38 | 7d890b40 | Max Filippov | wsr a2, epc1 |
39 | 7d890b40 | Max Filippov | |
40 | 7d890b40 | Max Filippov | rsr a2, windowbase |
41 | 7d890b40 | Max Filippov | movi a3, (\shift) / 4 |
42 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
43 | 7d890b40 | Max Filippov | rsr a2, ps |
44 | 7d890b40 | Max Filippov | movi a3, 0x4001f |
45 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
46 | 7d890b40 | Max Filippov | rfwo |
47 | 7d890b40 | Max Filippov | test_fail |
48 | 7d890b40 | Max Filippov | 2: |
49 | 7d890b40 | Max Filippov | rsr a2, windowbase |
50 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
51 | 7d890b40 | Max Filippov | rsr a2, windowstart |
52 | 7d890b40 | Max Filippov | movi a3, 1 | ((1 << ((\window) / 4)) << ((\shift) / 4)) |
53 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
54 | 7d890b40 | Max Filippov | rsr a2, ps |
55 | 7d890b40 | Max Filippov | movi a3, 0x4000f |
56 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
57 | 7d890b40 | Max Filippov | .endm |
58 | 7d890b40 | Max Filippov | |
59 | 7d890b40 | Max Filippov | .macro overflow_tests shift, window, probe |
60 | 7d890b40 | Max Filippov | .if \probe < 15 |
61 | 7d890b40 | Max Filippov | overflow_test \shift, \window, %((\shift) - 1), \probe |
62 | 7d890b40 | Max Filippov | overflow_tests \shift, \window, %((\probe) + 1) |
63 | 7d890b40 | Max Filippov | .endif |
64 | 7d890b40 | Max Filippov | .endm |
65 | 7d890b40 | Max Filippov | |
66 | 7d890b40 | Max Filippov | .macro all_overflow_tests |
67 | 7d890b40 | Max Filippov | .irp shift, 4, 8, 12 |
68 | 7d890b40 | Max Filippov | .irp window, 4, 8, 12 |
69 | 7d890b40 | Max Filippov | overflow_tests \shift, \window, \shift |
70 | 7d890b40 | Max Filippov | .endr |
71 | 7d890b40 | Max Filippov | .endr |
72 | 7d890b40 | Max Filippov | .endm |
73 | 7d890b40 | Max Filippov | |
74 | 7d890b40 | Max Filippov | test overflow |
75 | 7d890b40 | Max Filippov | all_overflow_tests |
76 | 7d890b40 | Max Filippov | test_end |
77 | 7d890b40 | Max Filippov | |
78 | 7d890b40 | Max Filippov | |
79 | 7d890b40 | Max Filippov | .macro underflow_test window |
80 | 7d890b40 | Max Filippov | set_vector window_underflow_4, 0 |
81 | 7d890b40 | Max Filippov | set_vector window_underflow_8, 0 |
82 | 7d890b40 | Max Filippov | set_vector window_underflow_12, 0 |
83 | 7d890b40 | Max Filippov | |
84 | 7d890b40 | Max Filippov | set_vector window_underflow_\window, 10f |
85 | 7d890b40 | Max Filippov | |
86 | 7d890b40 | Max Filippov | reset_window 1 |
87 | 7d890b40 | Max Filippov | reset_ps |
88 | 7d890b40 | Max Filippov | |
89 | 7d890b40 | Max Filippov | ssai 2 |
90 | 7d890b40 | Max Filippov | movi a2, 2f |
91 | 7d890b40 | Max Filippov | slli a2, a2, 2 |
92 | 7d890b40 | Max Filippov | movi a3, (\window) / 4 |
93 | 7d890b40 | Max Filippov | src a0, a3, a2 |
94 | 7d890b40 | Max Filippov | 1: |
95 | 7d890b40 | Max Filippov | retw |
96 | 7d890b40 | Max Filippov | test_fail |
97 | 7d890b40 | Max Filippov | 10: |
98 | 7d890b40 | Max Filippov | rsr a2, epc1 |
99 | 7d890b40 | Max Filippov | movi a3, 1b |
100 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
101 | 7d890b40 | Max Filippov | movi a2, 2f |
102 | 7d890b40 | Max Filippov | wsr a2, epc1 |
103 | 7d890b40 | Max Filippov | |
104 | 7d890b40 | Max Filippov | rsr a2, ps |
105 | 7d890b40 | Max Filippov | movi a3, 0x4001f |
106 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
107 | 7d890b40 | Max Filippov | rsr a2, windowbase |
108 | 7d890b40 | Max Filippov | assert eqi, a2, 8 - ((\window) / 4) |
109 | 7d890b40 | Max Filippov | rsr a2, windowstart |
110 | 7d890b40 | Max Filippov | assert eqi, a2, 1 |
111 | 7d890b40 | Max Filippov | rfwu |
112 | 7d890b40 | Max Filippov | 2: |
113 | 7d890b40 | Max Filippov | rsr a2, ps |
114 | 7d890b40 | Max Filippov | movi a3, 0x4000f |
115 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
116 | 7d890b40 | Max Filippov | rsr a2, windowbase |
117 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
118 | 7d890b40 | Max Filippov | rsr a2, windowstart |
119 | 7d890b40 | Max Filippov | assert bsi, a2, 0 |
120 | 7d890b40 | Max Filippov | assert bsi, a2, 8 - ((\window) / 4) |
121 | 7d890b40 | Max Filippov | .endm |
122 | 7d890b40 | Max Filippov | |
123 | 7d890b40 | Max Filippov | test underflow |
124 | 7d890b40 | Max Filippov | set_vector window_overflow_4, 0 |
125 | 7d890b40 | Max Filippov | set_vector window_overflow_8, 0 |
126 | 7d890b40 | Max Filippov | set_vector window_overflow_12, 0 |
127 | 7d890b40 | Max Filippov | |
128 | 7d890b40 | Max Filippov | underflow_test 4 |
129 | 7d890b40 | Max Filippov | underflow_test 8 |
130 | 7d890b40 | Max Filippov | underflow_test 12 |
131 | 7d890b40 | Max Filippov | test_end |
132 | 7d890b40 | Max Filippov | |
133 | 7d890b40 | Max Filippov | |
134 | 7d890b40 | Max Filippov | .macro retw_test window |
135 | 7d890b40 | Max Filippov | reset_window %(1 | (1 << (8 - (\window) / 4))) |
136 | 7d890b40 | Max Filippov | reset_ps |
137 | 7d890b40 | Max Filippov | |
138 | 7d890b40 | Max Filippov | ssai 2 |
139 | 7d890b40 | Max Filippov | movi a2, 1f |
140 | 7d890b40 | Max Filippov | slli a2, a2, 2 |
141 | 7d890b40 | Max Filippov | movi a3, (\window) / 4 |
142 | 7d890b40 | Max Filippov | src a0, a3, a2 |
143 | 7d890b40 | Max Filippov | retw |
144 | 7d890b40 | Max Filippov | test_fail |
145 | 7d890b40 | Max Filippov | 1: |
146 | 7d890b40 | Max Filippov | rsr a2, ps |
147 | 7d890b40 | Max Filippov | movi a3, 0x4000f |
148 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
149 | 7d890b40 | Max Filippov | rsr a2, windowbase |
150 | 7d890b40 | Max Filippov | assert eqi, a2, 8 - ((\window) / 4) |
151 | 7d890b40 | Max Filippov | rsr a2, windowstart |
152 | 7d890b40 | Max Filippov | assert bci, a2, 0 |
153 | 7d890b40 | Max Filippov | assert bsi, a2, 8 - ((\window) / 4) |
154 | 7d890b40 | Max Filippov | .endm |
155 | 7d890b40 | Max Filippov | |
156 | 7d890b40 | Max Filippov | test retw |
157 | 7d890b40 | Max Filippov | set_vector window_underflow_4, 0 |
158 | 7d890b40 | Max Filippov | set_vector window_underflow_8, 0 |
159 | 7d890b40 | Max Filippov | set_vector window_underflow_12, 0 |
160 | 7d890b40 | Max Filippov | |
161 | 7d890b40 | Max Filippov | retw_test 4 |
162 | 7d890b40 | Max Filippov | retw_test 8 |
163 | 7d890b40 | Max Filippov | retw_test 12 |
164 | 7d890b40 | Max Filippov | test_end |
165 | 7d890b40 | Max Filippov | |
166 | 7d890b40 | Max Filippov | test movsp |
167 | 7d890b40 | Max Filippov | set_vector kernel, 2f |
168 | 7d890b40 | Max Filippov | |
169 | 7d890b40 | Max Filippov | reset_window 1 |
170 | 7d890b40 | Max Filippov | reset_ps |
171 | 7d890b40 | Max Filippov | 1: |
172 | 7d890b40 | Max Filippov | movsp a2, a3 |
173 | 7d890b40 | Max Filippov | test_fail |
174 | 7d890b40 | Max Filippov | 2: |
175 | 7d890b40 | Max Filippov | rsr a2, exccause |
176 | 7d890b40 | Max Filippov | assert eqi, a2, 5 |
177 | 7d890b40 | Max Filippov | rsr a2, epc1 |
178 | 7d890b40 | Max Filippov | movi a3, 1b |
179 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
180 | 7d890b40 | Max Filippov | |
181 | 7d890b40 | Max Filippov | set_vector kernel, 0 |
182 | 7d890b40 | Max Filippov | |
183 | 7d890b40 | Max Filippov | reset_window 0x81 |
184 | 7d890b40 | Max Filippov | reset_ps |
185 | 7d890b40 | Max Filippov | |
186 | 7d890b40 | Max Filippov | movsp a2, a3 |
187 | 7d890b40 | Max Filippov | test_end |
188 | 7d890b40 | Max Filippov | |
189 | 7d890b40 | Max Filippov | test rotw |
190 | 7d890b40 | Max Filippov | reset_window 0x4b |
191 | 7d890b40 | Max Filippov | reset_ps |
192 | 7d890b40 | Max Filippov | |
193 | 7d890b40 | Max Filippov | movi a3, 0x10 |
194 | 7d890b40 | Max Filippov | |
195 | 7d890b40 | Max Filippov | rotw 1 |
196 | 7d890b40 | Max Filippov | rsr a2, windowbase |
197 | 7d890b40 | Max Filippov | assert eqi, a2, 1 |
198 | 7d890b40 | Max Filippov | movi a3, 0x11 |
199 | 7d890b40 | Max Filippov | movi a7, 0x12 |
200 | 7d890b40 | Max Filippov | |
201 | 7d890b40 | Max Filippov | rotw 2 |
202 | 7d890b40 | Max Filippov | rsr a2, windowbase |
203 | 7d890b40 | Max Filippov | assert eqi, a2, 3 |
204 | 7d890b40 | Max Filippov | movi a3, 0x13 |
205 | 7d890b40 | Max Filippov | movi a7, 0x14 |
206 | 7d890b40 | Max Filippov | movi a11, 0x15 |
207 | 7d890b40 | Max Filippov | |
208 | 7d890b40 | Max Filippov | rotw 3 |
209 | 7d890b40 | Max Filippov | rsr a2, windowbase |
210 | 7d890b40 | Max Filippov | assert eqi, a2, 6 |
211 | 7d890b40 | Max Filippov | movi a3, 0x16 |
212 | 7d890b40 | Max Filippov | movi a7, 0x17 |
213 | 7d890b40 | Max Filippov | |
214 | 7d890b40 | Max Filippov | movi a2, 0x44 |
215 | 7d890b40 | Max Filippov | wsr a2, windowstart |
216 | 7d890b40 | Max Filippov | rsync |
217 | 7d890b40 | Max Filippov | |
218 | 7d890b40 | Max Filippov | movi a2, 0x10 |
219 | 7d890b40 | Max Filippov | assert eq, a2, a11 |
220 | 7d890b40 | Max Filippov | movi a11, 0x18 |
221 | 7d890b40 | Max Filippov | movi a2, 0x11 |
222 | 7d890b40 | Max Filippov | assert eq, a2, a15 |
223 | 7d890b40 | Max Filippov | movi a15, 0x19 |
224 | 7d890b40 | Max Filippov | |
225 | 7d890b40 | Max Filippov | rotw 4 |
226 | 7d890b40 | Max Filippov | movi a2, 0x12 |
227 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
228 | 7d890b40 | Max Filippov | movi a2, 0x13 |
229 | 7d890b40 | Max Filippov | assert eq, a2, a7 |
230 | 7d890b40 | Max Filippov | movi a2, 0x14 |
231 | 7d890b40 | Max Filippov | assert eq, a2, a11 |
232 | 7d890b40 | Max Filippov | movi a2, 0x15 |
233 | 7d890b40 | Max Filippov | assert eq, a2, a15 |
234 | 7d890b40 | Max Filippov | |
235 | 7d890b40 | Max Filippov | movi a2, 0x5 |
236 | 7d890b40 | Max Filippov | wsr a2, windowstart |
237 | 7d890b40 | Max Filippov | rsync |
238 | 7d890b40 | Max Filippov | |
239 | 7d890b40 | Max Filippov | rotw -2 |
240 | 7d890b40 | Max Filippov | movi a2, 0x18 |
241 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
242 | 7d890b40 | Max Filippov | movi a2, 0x19 |
243 | 7d890b40 | Max Filippov | assert eq, a2, a7 |
244 | 7d890b40 | Max Filippov | test_end |
245 | 7d890b40 | Max Filippov | |
246 | 7d890b40 | Max Filippov | .macro callw_test window |
247 | 7d890b40 | Max Filippov | call\window 2f |
248 | 7d890b40 | Max Filippov | 1: |
249 | 7d890b40 | Max Filippov | test_fail |
250 | 7d890b40 | Max Filippov | .align 4 |
251 | 7d890b40 | Max Filippov | 2: |
252 | 7d890b40 | Max Filippov | rsr a2, windowbase |
253 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
254 | 7d890b40 | Max Filippov | rsr a2, ps |
255 | 7d890b40 | Max Filippov | movi a3, 0x4000f | ((\window) << 14) |
256 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
257 | 7d890b40 | Max Filippov | movi a2, 1b |
258 | 7d890b40 | Max Filippov | slli a2, a2, 2 |
259 | 7d890b40 | Max Filippov | ssai 2 |
260 | 7d890b40 | Max Filippov | movi a3, (\window) / 4 |
261 | 7d890b40 | Max Filippov | src a2, a3, a2 |
262 | 7d890b40 | Max Filippov | assert eq, a2, a\window |
263 | 7d890b40 | Max Filippov | .endm |
264 | 7d890b40 | Max Filippov | |
265 | 7d890b40 | Max Filippov | test callw |
266 | 7d890b40 | Max Filippov | reset_window 0x1 |
267 | 7d890b40 | Max Filippov | reset_ps |
268 | 7d890b40 | Max Filippov | |
269 | 7d890b40 | Max Filippov | callw_test 4 |
270 | 7d890b40 | Max Filippov | callw_test 8 |
271 | 7d890b40 | Max Filippov | callw_test 12 |
272 | 7d890b40 | Max Filippov | test_end |
273 | 7d890b40 | Max Filippov | |
274 | 7d890b40 | Max Filippov | |
275 | 7d890b40 | Max Filippov | .macro entry_test window |
276 | 7d890b40 | Max Filippov | reset_window 0x1 |
277 | 7d890b40 | Max Filippov | reset_ps |
278 | 7d890b40 | Max Filippov | movi a2, 0x4000f | ((\window) << 14) |
279 | 7d890b40 | Max Filippov | wsr a2, ps |
280 | 7d890b40 | Max Filippov | isync |
281 | 7d890b40 | Max Filippov | movi a3, 0x12345678 |
282 | 7d890b40 | Max Filippov | j 1f |
283 | 7d890b40 | Max Filippov | .align 4 |
284 | 7d890b40 | Max Filippov | 1: |
285 | 7d890b40 | Max Filippov | entry a3, 0x5678 |
286 | 7d890b40 | Max Filippov | movi a2, 0x12340000 |
287 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
288 | 7d890b40 | Max Filippov | rsr a2, windowbase |
289 | 7d890b40 | Max Filippov | assert eqi, a2, (\window) / 4 |
290 | 7d890b40 | Max Filippov | rsr a2, windowstart |
291 | 7d890b40 | Max Filippov | movi a3, 1 | (1 << ((\window) / 4)) |
292 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
293 | 7d890b40 | Max Filippov | rotw -(\window) / 4 |
294 | 7d890b40 | Max Filippov | .endm |
295 | 7d890b40 | Max Filippov | |
296 | 7d890b40 | Max Filippov | test entry |
297 | 7d890b40 | Max Filippov | entry_test 4 |
298 | 7d890b40 | Max Filippov | entry_test 8 |
299 | 7d890b40 | Max Filippov | entry_test 12 |
300 | 7d890b40 | Max Filippov | test_end |
301 | 7d890b40 | Max Filippov | |
302 | 7d890b40 | Max Filippov | test_suite_end |