git subrepo pull --force deps/lightrec
[pcsx_rearmed.git] / deps / lightning / check / cvt.tst
CommitLineData
4a71579b
PC
1.data 12
2ok:
3.c "ok\n"
4
5#if __WORDSIZE == 32
6# define w7f 0x7fffffff
7# define w80 0x80000000
8# define w81 0x80000001
9# define wff 0xffffffff
10# define LEXTII2(N, R0, R1)
11# define LEXTIC2(N, R0)
12#else
13# define w7f 0x7fffffffffffffff
14# define w80 0x8000000000000000
15# define w81 0x8000000000000001
16# define wff 0xffffffffffffffff
17# define i7f wff
18# define ui7f 0xffffffff
19# define i80 0
20# define ui80 0
21# define i81 1
22# define ui81 1
23# define iff wff
24# define uiff 0xffffffff
25# define LEXTII2(N, R0, R1) \
26 EXTII2(N, i, R0, R1) \
27 EXTII2(N, ui, R0, R1)
28# define LEXTIC2(N, R0) \
29 EXTIC2(N, i, R0) \
30 EXTIC2(N, ui, R0)
31#endif
32#define c7f wff
33#define uc7f 0xff
34#define s7f wff
35#define us7f 0xffff
36#define c80 0
37#define uc80 0
38#define s80 0
39#define us80 0
40#define c81 1
41#define uc81 1
42#define s81 1
43#define us81 1
44#define cff wff
45#define ucff 0xff
46#define sff wff
47#define usff 0xffff
48
49#define EXTII2(N, T, R0, R1) \
50 movi %R0 w##N \
51 extr_##T %R1 %R0 \
52 beqi T##_##R0##_##R1##_##N %R1 T##N \
53 calli @abort \
54T##_##R0##_##R1##_##N:
55#define EXTII1(N, R0, R1) \
56 EXTII2(N, c, R0, R1) \
57 EXTII2(N, uc, R0, R1) \
58 EXTII2(N, s, R0, R1) \
59 EXTII2(N, us, R0, R1) \
60 LEXTII2(N, R0, R1)
61#define EXTII0(R0, R1) \
62 EXTII1(7f, R0, R1) \
63 EXTII1(80, R0, R1) \
64 EXTII1(81, R0, R1) \
65 EXTII1(ff, R0, R1)
66
67#define EXTIC2(N, T, R0) \
68 movi %R0 w##N \
69 extr_##T %R0 %R0 \
70 beqi T##_##R0##_##N %R0 T##N \
71 calli @abort \
72T##_##R0##_##N:
73#define EXTIC1(N, R0) \
74 EXTIC2(N, c, R0) \
75 EXTIC2(N, uc, R0) \
76 EXTIC2(N, s, R0) \
77 EXTIC2(N, us, R0) \
78 LEXTIC2(N, R0)
79#define EXTIC0(R0) \
80 EXTIC1(7f, R0) \
81 EXTIC1(80, R0) \
82 EXTIC1(81, R0) \
83 EXTIC1(ff, R0)
84
85#define EXTII(V0, V1, V2, R0, R1, R2) \
86 EXTII0(V0, V1) \
87 EXTII0(V0, V2) \
88 EXTII0(V0, R0) \
89 EXTII0(V0, R1) \
90 EXTII0(V0, R2) \
91 EXTII0(V1, V0) \
92 EXTII0(V1, V2) \
93 EXTII0(V1, R0) \
94 EXTII0(V1, R1) \
95 EXTII0(V1, R2) \
96 EXTII0(V2, V0) \
97 EXTII0(V2, V1) \
98 EXTII0(V2, R0) \
99 EXTII0(V2, R1) \
100 EXTII0(V2, R2) \
101 EXTII0(R0, V0) \
102 EXTII0(R0, V1) \
103 EXTII0(R0, V2) \
104 EXTII0(R0, R1) \
105 EXTII0(R0, R2) \
106 EXTII0(R1, V0) \
107 EXTII0(R1, V1) \
108 EXTII0(R1, V2) \
109 EXTII0(R1, R0) \
110 EXTII0(R1, R2) \
111 EXTII0(R2, V0) \
112 EXTII0(R2, V1) \
113 EXTII0(R2, V2) \
114 EXTII0(R2, R0) \
115 EXTII0(R2, R1) \
116 EXTIC0(V0) \
117 EXTIC0(V1) \
118 EXTIC0(V2) \
119 EXTIC0(R0) \
120 EXTIC0(R1) \
121 EXTIC0(R2)
122
123#define EXIF1(N, V, R0, R1) \
124 movi %R0 V \
125 extr_f %R1 %R0 \
126 beqi_f wf##_##R0##_##R1##_##N %R1 V \
127wf##_##R0##_##R1##_##N:
128#define EXIF0(R0, R1) \
129 EXIF1(0, -1, R0, R1) \
130 EXIF1(1, 64, R0, R1)
131#define EXIF(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
132 EXIF0(V0, F0) \
133 EXIF0(V1, F1) \
134 EXIF0(V2, F2) \
135 EXIF0(R0, F3) \
136 EXIF0(R1, F4) \
137 EXIF0(R2, F5)
138#define EXID1(N, V, R0, R1) \
139 movi %R0 V \
140 extr_d %R1 %R0 \
141 beqi_d wd##_##R0##_##R1##_##N %R1 V \
142wd##_##R0##_##R1##_##N:
143#define EXID0(R0, R1) \
144 EXID1(0, -1, R0, R1) \
145 EXID1(1, 64, R0, R1)
146#define EXID(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
147 EXID0(V0, F0) \
148 EXID0(V1, F1) \
149 EXID0(V2, F2) \
150 EXID0(R0, F3) \
151 EXID0(R1, F4) \
152 EXID0(R2, F5)
153
154#define EXFI1(N, V, R0, R1) \
155 movi_f %R1 V \
156 truncr_f %R0 %R1 \
157 beqi fi##_##R0##_##R1##_##N %R0 V \
158 calli @abort \
159fi##_##R0##_##R1##_##N:
160#define EXFI0(R0, R1) \
161 EXFI1(0, 42, R0, R1) \
162 EXFI1(1, -128, R0, R1)
163#define EXFI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
164 EXFI0(V0, F5) \
165 EXFI0(V1, F4) \
166 EXFI0(V2, F3) \
167 EXFI0(R0, F2) \
168 EXFI0(R1, F1) \
169 EXFI0(R2, F0)
170#define EXDI1(N, V, R0, R1) \
171 movi_d %R1 V \
172 truncr_d %R0 %R1 \
173 beqi di##_##R0##_##R1##_##N %R0 V \
174 calli @abort \
175di##_##R0##_##R1##_##N:
176#define EXDI0(R0, R1) \
177 EXDI1(0, 42, R0, R1) \
178 EXDI1(1, -128, R0, R1)
179#define EXDI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
180 EXDI0(V0, F5) \
181 EXDI0(V1, F4) \
182 EXDI0(V2, F3) \
183 EXDI0(R0, F2) \
184 EXDI0(R1, F1) \
185 EXDI0(R2, F0)
186
187#define LEXFI1(N, V, R0, R1) \
188 movi_f %R1 V \
189 truncr_f_i %R0 %R1 \
190 andi %R0 %R0 0xffffffff \
191 beqi lfi##_##R0##_##R1##_##N %R0 $(V & 0xffffffff) \
192 calli @abort \
193lfi##_##R0##_##R1##_##N:
194#define LEXFI0(R0, R1) \
195 LEXFI1(0, 42, R0, R1) \
196 LEXFI1(1, -128, R0, R1)
197#define LEXFI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
198 LEXFI0(V0, F5) \
199 LEXFI0(V1, F4) \
200 LEXFI0(V2, F3) \
201 LEXFI0(R0, F2) \
202 LEXFI0(R1, F1) \
203 LEXFI0(R2, F0)
204#define LEXDI1(N, V, R0, R1) \
205 movi_d %R1 V \
206 truncr_d_i %R0 %R1 \
207 andi %R0 %R0 0xffffffff \
208 beqi ldi##_##R0##_##R1##_##N %R0 $(V & 0xffffffff) \
209 calli @abort \
210ldi##_##R0##_##R1##_##N:
211#define LEXDI0(R0, R1) \
212 LEXDI1(0, 42, R0, R1) \
213 LEXDI1(1, -128, R0, R1)
214#define LEXDI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \
215 LEXDI0(V0, F5) \
216 LEXDI0(V1, F4) \
217 LEXDI0(V2, F3) \
218 LEXDI0(R0, F2) \
219 LEXDI0(R1, F1) \
220 LEXDI0(R2, F0)
221
222#define EXTFD2(V, R0, R1) \
223 movi_f %R0 V \
224 extr_f_d %R1 %R0 \
225 beqi_d fd##_##R0##_##R1 %R1 V \
226 calli @abort \
227fd##_##R0##_##R1:
228#define EXTFD1(R0, R1) \
229 EXTFD2(1.25, R0, R1)
230#define EXTFDC2(V, R0) \
231 movi_f %R0 V \
232 extr_f_d %R0 %R0 \
233 beqi_d fdc##_##R0 %R0 V \
234 calli @abort \
235fdc##_##R0:
236#define EXTFDC1(R0) \
237 EXTFDC2(-0.75, R0)
238#define EXTFD(R0, R1, R2, R3, R4, R5) \
239 EXTFD1(R0, R1) \
240 EXTFD1(R0, R2) \
241 EXTFD1(R0, R3) \
242 EXTFD1(R0, R4) \
243 EXTFD1(R0, R5) \
244 EXTFDC1(R0) \
245 EXTFDC1(R1) \
246 EXTFDC1(R2) \
247 EXTFDC1(R3) \
248 EXTFDC1(R4) \
249 EXTFDC1(R5)
250
251#define EXTDF2(V, R0, R1) \
252 movi_d %R0 V \
253 extr_d_f %R1 %R0 \
254 beqi_f df##_##R0##_##R1 %R1 V \
255 calli @abort \
256df##_##R0##_##R1:
257#define EXTDF1(R0, R1) \
258 EXTDF2(1.25, R0, R1)
259#define EXTDFC2(V, R0) \
260 movi_d %R0 V \
261 extr_d_f %R0 %R0 \
262 beqi_f dfc##_##R0 %R0 V \
263 calli @abort \
264dfc##_##R0:
265#define EXTDFC1(R0) \
266 EXTDFC2(-0.75, R0)
267#define EXTDF(R0, R1, R2, R3, R4, R5) \
268 EXTDF1(R0, R1) \
269 EXTDF1(R0, R2) \
270 EXTDF1(R0, R3) \
271 EXTDF1(R0, R4) \
272 EXTDF1(R0, R5) \
273 EXTDFC1(R0) \
274 EXTDFC1(R1) \
275 EXTDFC1(R2) \
276 EXTDFC1(R3) \
277 EXTDFC1(R4) \
278 EXTDFC1(R5)
279
280.code
281 prolog
282
283 /* simple sequence for easier disassembly reading and encoding check */
284 movi %r0 w7f
285 extr_c %r1 %r0
286 beqi xc %r1 c7f
287 calli @abort
288xc:
289 movi %r0 w7f
290 extr_uc %r1 %r0
291 beqi xuc %r1 uc7f
292 calli @abort
293xuc:
294 movi %r0 w7f
295 extr_s %r1 %r0
296 beqi xs %r1 s7f
297 calli @abort
298xs:
299 movi %r0 w7f
300 extr_us %r1 %r0
301 beqi xus %r1 us7f
302 calli @abort
303xus:
304#if __WORDSIZE == 64
305 movi %r0 w7f
306 extr_i %r1 %r0
307 beqi xi %r1 i7f
308 calli @abort
309xi:
310 movi %r0 w7f
311 extr_ui %r1 %r0
312 beqi xui %r1 ui7f
313 calli @abort
314xui:
315#endif
316 movi %r0 -2
317 extr_f %f0 %r0
318 beqi_f xif %f0 -2
319 calli @abort
320xif:
321 movi %r0 32
322 extr_d %f0 %r0
323 beqi_d xid %f0 32
324 calli @abort
325xid:
326 movi_f %f0 -128
327 truncr_f %r0 %f0
328 beqi xfi %r0 -128
329 calli @abort
330xfi:
331 movi_d %f0 -128
332 truncr_d %r0 %f0
333 beqi xdi %r0 -128
334 calli @abort
335xdi:
336#if __WORDSIZE == 64
337 movi_f %f0 -128
338 truncr_f_i %r0 %f0
339 andi %r0 %r0 0xffffffff
340 beqi yfi %r0 $(-128 & 0xffffffff)
341 calli @abort
342yfi:
343 movi_d %f0 -128
344 truncr_d_i %r0 %f0
345 andi %r0 %r0 0xffffffff
346 beqi ydi %r0 $(-128 & 0xffffffff)
347 calli @abort
348ydi:
349#endif
350 movi_f %f0 0.5
351 extr_f_d %f1 %f0
352 beqi_d xfd %f1 0.5
353 calli @abort
354xfd:
355 movi_d %f0 0.5
356 extr_d_f %f1 %f0
357 beqi_f xdf %f1 0.5
358 calli @abort
359xdf:
360
361 EXTII(v0, v1, v2, r0, r1, r2)
362 EXIF(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
363 EXID(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
364 EXFI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
365#if __WORDSIZE == 64
366 LEXFI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
367 LEXDI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
368#endif
369 EXDI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5)
370 EXTFD(f0, f1, f2, f3, f4, f5)
371 EXTDF(f0, f1, f2, f3, f4, f5)
372
373 // just to know did not abort
374 prepare
375 pushargi ok
376 ellipsis
377 finishi @printf
378
379 ret
380 epilog