1; @OC@ test
2; Generic unary operations supporting all sizes and their various
3; addressing modes.
4
5; Some fairly big pseudorandom numbers we don't want to compute
6; as differences in actual data or code.
7
8 .set const_int_32, 0x1b94452b
9 .set const_int_m32, -3513208907
10 .set two701867, 2701867
11
12; Other constants that are not differences
13 .set forty2, 42
14 .set mforty2, -42
15
16 .set three2767, 32767
17 .set six5535, 65535
18
19 .text
20 .syntax no_register_prefix
21notstart:
22 .dword 0
23
24start:
25
26;;;;;;;;;;;;;;;;;
27;
28; r
29 @OC@.b r3
30 @OC@.w r5
31 @OC@.d r10
32
33 @OC@ r7
34 @OC@ r6
35
36;;;;;;;;;;;;;;;;;
37;
38; [r]
39 @OC@.b [r0]
40 @OC@.w [r5]
41 @OC@.d [r10]
42
43 @OC@ [r0]
44 @OC@ [r3]
45
46;;;;;;;;;;;;;;;;;
47;
48; [r+]
49 @OC@.b [r0+]
50 @OC@.w [r5+]
51 @OC@.d [r10+]
52
53 @OC@ [r4+]
54 @OC@ [r1+]
55
56;;;;;;;;;;;;;;;;;
57;
58; [r+X]
59
60; [r+r.b]
61
62 @OC@.b [r2+r0.b]
63 @OC@.w [r2+r5.b]
64 @OC@.d [r2+r10.b]
65
66 @OC@ [r11+r13.b]
67 @OC@ [r2+r10.b]
68
69; [r+[r].b]
70 @OC@.b [r2+[r0].b]
71 @OC@.w [r2+[r5].b]
72 @OC@.d [r2+[r10].b]
73
74 @OC@ [r12+[r5].b]
75 @OC@ [r13+[r10].b]
76
77; [r+[r+].b]
78 @OC@.b [r2+[r0+].b]
79 @OC@.w [r2+[r5+].b]
80 @OC@.d [r2+[r10+].b]
81
82 @OC@ [r2+[r13+].b]
83 @OC@ [r12+[r0+].b]
84
85; [r+r.w]
86
87 @OC@.b [r2+r0.w]
88 @OC@.w [r2+r5.w]
89 @OC@.d [r2+r10.w]
90
91 @OC@ [r5+r11.w]
92 @OC@ [r1+r1.w]
93
94; [r+[r].w]
95 @OC@.b [r2+[r0].w]
96 @OC@.w [r2+[r5].w]
97 @OC@.d [r2+[r10].w]
98
99 @OC@ [r0+[r0].w]
100 @OC@ [r2+[r7].w]
101
102; [r+[r+].w]
103 @OC@.b [r2+[r0+].w]
104 @OC@.w [r2+[r5+].w]
105 @OC@.d [r2+[r10+].w]
106
107 @OC@ [r2+[r3+].w]
108 @OC@ [r7+[r8+].w]
109
110; [r+r.d]
111
112 @OC@.b [r2+r0.d]
113 @OC@.w [r2+r5.d]
114 @OC@.d [r2+r10.d]
115
116 @OC@ [r2+r5.d]
117 @OC@ [r3+r10.d]
118
119; [r+[r].d]
120 @OC@.b [r2+[r0].d]
121 @OC@.w [r2+[r5].d]
122 @OC@.d [r2+[r10].d]
123
124 @OC@ [r5+[r2].d]
125 @OC@ [r12+[r10].d]
126
127; [r+[r+].d]
128 @OC@.b [r2+[r0+].d]
129 @OC@.w [r2+[r5+].d]
130 @OC@.d [r2+[r10+].d]
131
132 @OC@ [r1+[r5+].d]
133 @OC@ [r2+[r10+].d]
134
135; [r+const]
136
137; Note that I forgot 16-bit offsets and 32-bit offsets here and later.
138; Maybe add them later if it feels necessary.
139
140 @OC@.b [r2+0]
141 @OC@.b [r2+1]
142 @OC@.b [r2+127]
143 @OC@.b [r2+128]
144 @OC@.b [r2+-1]
145 @OC@.b [r2+-127]
146 @OC@.b [r2+-128]
147 @OC@.b [r2+255]
148
149 @OC@.b [r2+42]
150 @OC@.b [r2+-42]
151 @OC@.b [r2-42]
152 @OC@.b [r2+forty2]
153 @OC@.b [r2+mforty2]
154 @OC@.b [r2+-forty2]
155 @OC@.b [r2+-mforty2]
156 @OC@.b [r2-forty2]
157 @OC@.b [r2-mforty2]
158 @OC@.b [r2+externalsym]
159
160; Note that I missed 32-bit offsets (except -32769) here and later.
161; Maybe add them later if it feels necessary.
162
163 @OC@.w [r2+0]
164 @OC@.w [r2+1]
165 @OC@.w [r2+127]
166 @OC@.w [r2+128]
167 @OC@.w [r2+-1]
168 @OC@.w [r2-1]
169 @OC@.w [r2+-127]
170 @OC@.w [r2+-128]
171 @OC@.w [r2+-129]
172 @OC@.w [r2-127]
173 @OC@.w [r2-128]
174 @OC@.w [r2-129]
175 @OC@.w [r2+255]
176 @OC@.w [r2+-255]
177 @OC@.w [r2-255]
178 @OC@.w [r2+256]
179 @OC@.w [r2-256]
180 @OC@.w [r2+-8856]
181 @OC@.w [r2-8856]
182 @OC@.w [r2+8856]
183
184 @OC@.w [r2+42]
185 @OC@.w [r2+-42]
186 @OC@.w [r2-42]
187 @OC@.w [r2+forty2]
188 @OC@.w [r2+mforty2]
189 @OC@.w [r2+-forty2]
190 @OC@.w [r2-forty2]
191 @OC@.w [r2+-mforty2]
192
193 @OC@.w [r2+three2767]
194 @OC@.w [r2+three2767+1]
195 @OC@.w [r2+three2767+2]
196 @OC@.w [r2+-three2767]
197 @OC@.w [r2+-(three2767+1)]
198 @OC@.w [r2+-(three2767+2)]
199 @OC@.w [r2-three2767]
200 @OC@.w [r2-(three2767+1)]
201 @OC@.w [r2-(three2767+2)]
202 @OC@.w [r2+six5535]
203 @OC@.w [r2+externalsym]
204
205 @OC@.d [r2+0]
206 @OC@.d [r2+1]
207 @OC@.d [r2+127]
208 @OC@.d [r2+128]
209 @OC@.d [r2+-1]
210 @OC@.d [r2-1]
211 @OC@.d [r2+-127]
212 @OC@.d [r2+-128]
213 @OC@.d [r2-127]
214 @OC@.d [r2-128]
215 @OC@.d [r2+255]
216 @OC@.d [r2+-255]
217 @OC@.d [r2-255]
218 @OC@.d [r2+256]
219 @OC@.d [r2-256]
220 @OC@.d [r2-8856]
221 @OC@.d [r2+-256]
222 @OC@.d [r2+-8856]
223 @OC@.d [r2+8856]
224
225 @OC@.d [r2+2781868]
226 @OC@.d [r2+-2701867]
227
228 @OC@.d [r2+0x9ec0ceac]
229 @OC@.d [r2+-0x7ec0cead]
230 @OC@.d [r2-0x7ec0cead]
231 @OC@.d [r2+const_int_m32]
232 @OC@.d [r2+const_int_32]
233
234 @OC@.d [r2+42]
235 @OC@.d [r2-42]
236 @OC@.d [r2+-42]
237 @OC@.d [r2+forty2]
238 @OC@.d [r2+mforty2]
239 @OC@.d [r2-forty2]
240 @OC@.d [r2-mforty2]
241 @OC@.d [r2+-forty2]
242 @OC@.d [r2+-mforty2]
243
244 @OC@.d [r2+three2767]
245 @OC@.d [r2+three2767+1]
246 @OC@.d [r2+three2767+2]
247 @OC@.d [r2+-three2767]
248 @OC@.d [r2+-(three2767+1)]
249 @OC@.d [r2+-(three2767+2)]
250 @OC@.d [r2-three2767]
251 @OC@.d [r2-(three2767+1)]
252 @OC@.d [r2-(three2767+2)]
253 @OC@.d [r2+six5535]
254 @OC@.d [r2+six5535+1]
255 @OC@.d [r2+two701867]
256 @OC@.d [r2+-two701867]
257 @OC@.d [r2-two701867]
258
259 @OC@.d [r2+externalsym]
260
261 @OC@ [r2+0]
262 @OC@ [r2+1]
263 @OC@ [r2+127]
264 @OC@ [r2+128]
265 @OC@ [r2+-1]
266 @OC@ [r2-1]
267 @OC@ [r2+-127]
268 @OC@ [r2+-128]
269 @OC@ [r2-127]
270 @OC@ [r2-128]
271 @OC@ [r2+255]
272 @OC@ [r2+-255]
273 @OC@ [r2-255]
274 @OC@ [r2+256]
275 @OC@ [r2-256]
276 @OC@ [r2-8856]
277 @OC@ [r2+-256]
278 @OC@ [r2+-8856]
279 @OC@ [r2+8856]
280
281 @OC@ [r2+2781868]
282 @OC@ [r2+-2701867]
283
284 @OC@ [r2+0x9ec0ceac]
285 @OC@ [r2+-0x7ec0cead]
286 @OC@ [r2-0x7ec0cead]
287 @OC@ [r2+const_int_m32]
288 @OC@ [r2+const_int_32]
289
290 @OC@ [r2+42]
291 @OC@ [r2-42]
292 @OC@ [r2+-42]
293 @OC@ [r2+forty2]
294 @OC@ [r2+mforty2]
295 @OC@ [r2-forty2]
296 @OC@ [r2-mforty2]
297 @OC@ [r2+-forty2]
298 @OC@ [r2+-mforty2]
299
300 @OC@ [r2+three2767]
301 @OC@ [r2+three2767+1]
302 @OC@ [r2+three2767+2]
303 @OC@ [r2+-three2767]
304 @OC@ [r2+-(three2767+1)]
305 @OC@ [r2+-(three2767+2)]
306 @OC@ [r2-three2767]
307 @OC@ [r2-(three2767+1)]
308 @OC@ [r2-(three2767+2)]
309 @OC@ [r2+six5535]
310 @OC@ [r2+six5535+1]
311 @OC@ [r2+two701867]
312 @OC@ [r2+-two701867]
313 @OC@ [r2-two701867]
314
315 @OC@ [r2+externalsym]
316
317 @OC@ [r2+0]
318 @OC@ [r2+1]
319 @OC@ [r2+127]
320 @OC@ [r2+128]
321 @OC@ [r2+-1]
322 @OC@ [r2-1]
323 @OC@ [r2+-127]
324 @OC@ [r2+-128]
325 @OC@ [r2-127]
326 @OC@ [r2-128]
327 @OC@ [r2+255]
328 @OC@ [r2+-255]
329 @OC@ [r2-255]
330 @OC@ [r2+256]
331 @OC@ [r2-256]
332 @OC@ [r2-8856]
333 @OC@ [r2+-256]
334 @OC@ [r2+-8856]
335 @OC@ [r2+8856]
336
337 @OC@ [r2+2781868]
338 @OC@ [r2+-2701867]
339
340 @OC@ [r2+0x9ec0ceac]
341 @OC@ [r2+-0x7ec0cead]
342 @OC@ [r2-0x7ec0cead]
343 @OC@ [r2+const_int_m32]
344 @OC@ [r2+const_int_32]
345
346 @OC@ [r2+42]
347 @OC@ [r2-42]
348 @OC@ [r2+-42]
349 @OC@ [r2+forty2]
350 @OC@ [r2+mforty2]
351 @OC@ [r2-forty2]
352 @OC@ [r2-mforty2]
353 @OC@ [r2+-forty2]
354 @OC@ [r2+-mforty2]
355
356 @OC@ [r2+three2767]
357 @OC@ [r2+three2767+1]
358 @OC@ [r2+three2767+2]
359 @OC@ [r2+-three2767]
360 @OC@ [r2+-(three2767+1)]
361 @OC@ [r2+-(three2767+2)]
362 @OC@ [r2-three2767]
363 @OC@ [r2-(three2767+1)]
364 @OC@ [r2-(three2767+2)]
365 @OC@ [r2+six5535]
366 @OC@ [r2+six5535+1]
367 @OC@ [r2+two701867]
368 @OC@ [r2+-two701867]
369 @OC@ [r2-two701867]
370
371 @OC@ [r2+externalsym]
372
373;;;;;;;;;;;;;;;;;
374;
375; [r=r+X],r
376
377; [r=r+r.b],r
378
379 @OC@.b [r12=r2+r0.b]
380 @OC@.w [r12=r2+r5.b]
381 @OC@.d [r12=r2+r10.b]
382
383 @OC@ [r1=r2+r3.b]
384 @OC@ [r12=r2+r10.b]
385
386; [r=r+[r].b],r
387 @OC@.b [r12=r2+[r0].b]
388 @OC@.w [r12=r2+[r5].b]
389 @OC@.d [r12=r2+[r10].b]
390
391 @OC@ [r0=r2+[r5].b]
392 @OC@ [r3=r2+[r10].b]
393
394; [r=r+[r+].b],r
395 @OC@.b [r12=r2+[r0+].b]
396 @OC@.w [r12=r2+[r5+].b]
397 @OC@.d [r12=r2+[r10+].b]
398
399 @OC@.w [r12=r2+[r5+].b]
400
401 @OC@.d [r12=r2+[r10+].b]
402
403 @OC@ [r5=r2+[r4+].b]
404 @OC@ [r2=r4+[r7+].b]
405
406; [r=r+r.w],r
407
408 @OC@.b [r12=r2+r0.w]
409 @OC@.w [r12=r2+r5.w]
410 @OC@.d [r12=r2+r10.w]
411
412 @OC@ [r12=r12+r5.w]
413 @OC@ [r1=r3+r10.w]
414
415; [r=r+[r].w],r
416 @OC@.b [r12=r2+[r0].w]
417 @OC@.w [r12=r2+[r5].w]
418 @OC@.d [r12=r2+[r10].w]
419
420 @OC@ [r12=r2+[r5].w]
421 @OC@ [r12=r7+[r10].w]
422
423; [r=r+[r+].w],r
424 @OC@.b [r12=r2+[r0+].w]
425 @OC@.w [r12=r2+[r5+].w]
426 @OC@.d [r12=r2+[r10+].w]
427
428 @OC@.w [r12=r2+[r5+].w]
429
430 @OC@.d [r12=r2+[r10+].w]
431
432 @OC@ [r12=r6+[r7+].w]
433 @OC@ [r12=r3+[r1+].w]
434
435; [r=r+r.d],r
436
437 @OC@.b [r12=r2+r0.d]
438 @OC@.w [r12=r2+r5.d]
439 @OC@.d [r12=r2+r10.d]
440
441 @OC@ [r4=r2+r5.d]
442 @OC@ [r12=r2+r10.d]
443
444; [r=r+[r].d],r
445 @OC@.b [r12=r2+[r0].d]
446 @OC@.w [r12=r2+[r5].d]
447 @OC@.d [r12=r2+[r10].d]
448
449 @OC@ [r12=r3+[r5].d]
450 @OC@ [r12=r4+[r10].d]
451
452; [r=r+[r+].d],r
453 @OC@.b [r12=r2+[r0+].d]
454 @OC@.w [r12=r2+[r5+].d]
455 @OC@.d [r12=r2+[r10+].d]
456
457 @OC@.w [r12=r2+[r5+].d]
458
459 @OC@.d [r12=r2+[r10+].d]
460
461 @OC@ [r12=r8+[r5+].d]
462 @OC@ [r12=r9+[r10+].d]
463
464; [r=r+const],r
465 @OC@.b [r12=r2+0]
466 @OC@.b [r12=r2+1]
467 @OC@.b [r12=r2+127]
468 @OC@.b [r12=r2+128]
469 @OC@.b [r12=r2+-1]
470 @OC@.b [r12=r2+-127]
471 @OC@.b [r12=r2+-128]
472 @OC@.b [r12=r2+255]
473
474 @OC@.b [r12=r2+42]
475 @OC@.b [r12=r2+-42]
476 @OC@.b [r12=r2-42]
477 @OC@.b [r12=r2+forty2]
478 @OC@.b [r12=r2+mforty2]
479 @OC@.b [r12=r2+-forty2]
480 @OC@.b [r12=r2+-mforty2]
481 @OC@.b [r12=r2-forty2]
482 @OC@.b [r12=r2-mforty2]
483 @OC@.b [r12=r2+externalsym]
484
485 @OC@.w [r12=r2+0]
486 @OC@.w [r12=r2+1]
487 @OC@.w [r12=r2+127]
488 @OC@.w [r12=r2+128]
489 @OC@.w [r12=r2+-1]
490 @OC@.w [r12=r2-1]
491 @OC@.w [r12=r2+-127]
492 @OC@.w [r12=r2+-128]
493 @OC@.w [r12=r2+-129]
494 @OC@.w [r12=r2-127]
495 @OC@.w [r12=r2-128]
496 @OC@.w [r12=r2-129]
497 @OC@.w [r12=r2+255]
498 @OC@.w [r12=r2+-255]
499 @OC@.w [r12=r2-255]
500 @OC@.w [r12=r2+256]
501 @OC@.w [r12=r2-256]
502 @OC@.w [r12=r2+-8856]
503 @OC@.w [r12=r2-8856]
504 @OC@.w [r12=r2+8856]
505
506 @OC@.w [r12=r2+42]
507 @OC@.w [r12=r2+-42]
508 @OC@.w [r12=r2-42]
509 @OC@.w [r12=r2+forty2]
510 @OC@.w [r12=r2+mforty2]
511 @OC@.w [r12=r2+-forty2]
512 @OC@.w [r12=r2-forty2]
513 @OC@.w [r12=r2+-mforty2]
514
515 @OC@.w [r12=r2+three2767]
516 @OC@.w [r12=r2+three2767+1]
517 @OC@.w [r12=r2+three2767+2]
518 @OC@.w [r12=r2+-three2767]
519 @OC@.w [r12=r2+-(three2767+1)]
520 @OC@.w [r12=r2+-(three2767+2)]
521 @OC@.w [r12=r2-three2767]
522 @OC@.w [r12=r2-(three2767+1)]
523 @OC@.w [r12=r2-(three2767+2)]
524 @OC@.w [r12=r2+six5535]
525 @OC@.w [r12=r2+externalsym]
526
527 @OC@.d [r12=r2+0]
528 @OC@.d [r12=r2+1]
529 @OC@.d [r12=r2+127]
530 @OC@.d [r12=r2+128]
531 @OC@.d [r12=r2+-1]
532 @OC@.d [r12=r2-1]
533 @OC@.d [r12=r2+-127]
534 @OC@.d [r12=r2+-128]
535 @OC@.d [r12=r2-127]
536 @OC@.d [r12=r2-128]
537 @OC@.d [r12=r2+255]
538 @OC@.d [r12=r2+-255]
539 @OC@.d [r12=r2-255]
540 @OC@.d [r12=r2+256]
541 @OC@.d [r12=r2-256]
542 @OC@.d [r12=r2-8856]
543 @OC@.d [r12=r2+-256]
544 @OC@.d [r12=r2+-8856]
545 @OC@.d [r12=r2+8856]
546
547 @OC@.d [r12=r2+2781868]
548 @OC@.d [r12=r2+-2701867]
549
550 @OC@.d [r12=r2+0x9ec0ceac]
551 @OC@.d [r12=r2+-0x7ec0cead]
552 @OC@.d [r12=r2-0x7ec0cead]
553 @OC@.d [r12=r2+const_int_m32]
554 @OC@.d [r12=r2+const_int_32]
555
556 @OC@.d [r12=r2+42]
557 @OC@.d [r12=r2-42]
558 @OC@.d [r12=r2+-42]
559 @OC@.d [r12=r2+forty2]
560 @OC@.d [r12=r2+mforty2]
561 @OC@.d [r12=r2-forty2]
562 @OC@.d [r12=r2-mforty2]
563 @OC@.d [r12=r2+-forty2]
564 @OC@.d [r12=r2+-mforty2]
565
566 @OC@.d [r12=r2+three2767]
567 @OC@.d [r12=r2+three2767+1]
568 @OC@.d [r12=r2+three2767+2]
569 @OC@.d [r12=r2+-three2767]
570 @OC@.d [r12=r2+-(three2767+1)]
571 @OC@.d [r12=r2+-(three2767+2)]
572 @OC@.d [r12=r2-three2767]
573 @OC@.d [r12=r2-(three2767+1)]
574 @OC@.d [r12=r2-(three2767+2)]
575 @OC@.d [r12=r2+six5535]
576 @OC@.d [r12=r2+six5535+1]
577 @OC@.d [r12=r2+two701867]
578 @OC@.d [r12=r2+-two701867]
579 @OC@.d [r12=r2-two701867]
580
581 @OC@.d [r12=r2+externalsym]
582
583 @OC@ [r12=r2+0]
584 @OC@ [r12=r2+1]
585 @OC@ [r12=r2+127]
586 @OC@ [r12=r2+128]
587 @OC@ [r12=r2+-1]
588 @OC@ [r12=r2-1]
589 @OC@ [r12=r2+-127]
590 @OC@ [r12=r2+-128]
591 @OC@ [r12=r2-127]
592 @OC@ [r12=r2-128]
593 @OC@ [r12=r2+255]
594 @OC@ [r12=r2+-255]
595 @OC@ [r12=r2-255]
596 @OC@ [r12=r2+256]
597 @OC@ [r12=r2-256]
598 @OC@ [r12=r2-8856]
599 @OC@ [r12=r2+-256]
600 @OC@ [r12=r2+-8856]
601 @OC@ [r12=r2+8856]
602
603 @OC@ [r12=r2+2781868]
604 @OC@ [r12=r2+-2701867]
605
606 @OC@ [r12=r2+0x9ec0ceac]
607 @OC@ [r12=r2+-0x7ec0cead]
608 @OC@ [r12=r2-0x7ec0cead]
609 @OC@ [r12=r2+const_int_m32]
610 @OC@ [r12=r2+const_int_32]
611
612 @OC@ [r12=r2+42]
613 @OC@ [r12=r2-42]
614 @OC@ [r12=r2+-42]
615 @OC@ [r12=r2+forty2]
616 @OC@ [r12=r2+mforty2]
617 @OC@ [r12=r2-forty2]
618 @OC@ [r12=r2-mforty2]
619 @OC@ [r12=r2+-forty2]
620 @OC@ [r12=r2+-mforty2]
621
622 @OC@ [r12=r2+three2767]
623 @OC@ [r12=r2+three2767+1]
624 @OC@ [r12=r2+three2767+2]
625 @OC@ [r12=r2+-three2767]
626 @OC@ [r12=r2+-(three2767+1)]
627 @OC@ [r12=r2+-(three2767+2)]
628 @OC@ [r12=r2-three2767]
629 @OC@ [r12=r2-(three2767+1)]
630 @OC@ [r12=r2-(three2767+2)]
631 @OC@ [r12=r2+six5535]
632 @OC@ [r12=r2+six5535+1]
633 @OC@ [r12=r2+two701867]
634 @OC@ [r12=r2+-two701867]
635 @OC@ [r12=r2-two701867]
636
637 @OC@ [r12=r2+externalsym]
638
639;;;;;;;;;;;;;;;;;;;
640;
641; [[r(+)]],r
642
643 @OC@.b [[r3]]
644 @OC@.w [[r2]]
645 @OC@.d [[r3]]
646
647 @OC@ [[r2]]
648 @OC@ [[r3]]
649
650 @OC@.b [[r9+]]
651 @OC@.w [[r3+]]
652 @OC@.d [[r1+]]
653
654 @OC@ [[r3+]]
655 @OC@ [[r1+]]
656
657 @OC@.b [externalsym]
658 @OC@.w [externalsym]
659 @OC@.d [externalsym]
660
661 @OC@ [externalsym]
662
663 @OC@.b [notstart]
664 @OC@.w [notstart]
665 @OC@.d [notstart]
666
667 @OC@ [notstart]
668
669end:
670