]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/testsuite/sim/h8300/extl.s
This commit was manufactured by cvs2svn to create branch
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / h8300 / extl.s
CommitLineData
32ebdc4c
MS
1# Hitachi H8 testcase 'exts.l, extu.l'
2# mach(): h8300h h8300s h8sx
3# as(h8300): --defsym sim_cpu=0
4# as(h8300h): --defsym sim_cpu=1
5# as(h8300s): --defsym sim_cpu=2
6# as(h8sx): --defsym sim_cpu=3
7# ld(h8300h): -m h8300helf
8# ld(h8300s): -m h8300self
9# ld(h8sx): -m h8300sxelf
10
11 .include "testutils.inc"
12
13 start
14
15 .data
16 .align 4
17pos: .long 0xffff0001
18neg: .long 0x00008000
19
20pos2: .long 0xffffff01
21neg2: .long 0x00000080
22
23 .text
24
25exts_l_reg32_p:
26 set_grs_a5a5
27 set_ccr_zero
28 ;; exts.l ern32
29 mov.w #1, r0
30 exts.l er0
31
32 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
33 test_cc_clear
34
35 test_h_gr32 0x00000001 er0 ; result of sign extend
36 test_gr_a5a5 1 ; Make sure other general regs not disturbed
37 test_gr_a5a5 2
38 test_gr_a5a5 3
39 test_gr_a5a5 4
40 test_gr_a5a5 5
41 test_gr_a5a5 6
42 test_gr_a5a5 7
43
44exts_l_reg32_n:
45 set_grs_a5a5
46 set_ccr_zero
47 ;; exts.l ern32
48 mov.w #0xffff, r0
49 exts.l er0
50
51 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
52 test_neg_set
53 test_zero_clear
54 test_ovf_clear
55 test_carry_clear
56
57 test_h_gr32 0xffffffff er0 ; result of sign extend
58 test_gr_a5a5 1 ; Make sure other general regs not disturbed
59 test_gr_a5a5 2
60 test_gr_a5a5 3
61 test_gr_a5a5 4
62 test_gr_a5a5 5
63 test_gr_a5a5 6
64 test_gr_a5a5 7
65
66extu_l_reg32_n:
67 set_grs_a5a5
68 set_ccr_zero
69 ;; extu.l ern32
70 mov.w #0xffff, r0
71 extu.l er0
72
73 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
74 test_cc_clear
75
76 test_h_gr32 0x0000ffff er0 ; result of zero extend
77 test_gr_a5a5 1 ; Make sure other general regs not disturbed
78 test_gr_a5a5 2
79 test_gr_a5a5 3
80 test_gr_a5a5 4
81 test_gr_a5a5 5
82 test_gr_a5a5 6
83 test_gr_a5a5 7
84
85.if (sim_cpu == h8sx)
86exts_l_ind_p:
87 set_grs_a5a5
88 set_ccr_zero
89 ;; exts.l @ern32
90 mov.l #pos, er1
91 exts.l @er1
92
93 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
94 test_cc_clear
95
96 test_h_gr32 pos er1 ; er1 still contains target address
97 test_gr_a5a5 0 ; Make sure other general regs not disturbed
98 test_gr_a5a5 2
99 test_gr_a5a5 3
100 test_gr_a5a5 4
101 test_gr_a5a5 5
102 test_gr_a5a5 6
103 test_gr_a5a5 7
104 cmp.l #0x00000001, @pos
105 beq .Lslindp
106 fail
107.Lslindp:
108 mov.l #0xffff0001, @pos ; Restore initial value
109
110exts_l_ind_n:
111 set_grs_a5a5
112 set_ccr_zero
113 ;; exts.l @ern32
114 mov.l #neg, er1
115 exts.l @er1
116
117 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
118 test_neg_set
119 test_zero_clear
120 test_ovf_clear
121 test_carry_clear
122
123 test_h_gr32 neg er1 ; er1 still contains target address
124 test_gr_a5a5 0 ; Make sure other general regs not disturbed
125 test_gr_a5a5 2
126 test_gr_a5a5 3
127 test_gr_a5a5 4
128 test_gr_a5a5 5
129 test_gr_a5a5 6
130 test_gr_a5a5 7
131 cmp.l #0xffff8000, @neg
132 beq .Lslindn
133 fail
134.Lslindn:
135;;; Note: leave the value as 0xffff8000, so that extu has work to do.
136
137extu_l_ind_n:
138 set_grs_a5a5
139 set_ccr_zero
140 ;; extu.l @ern32
141 mov.l #neg, er1
142 extu.l @er1
143
144 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
145 test_cc_clear
146
147 test_h_gr32 neg er1 ; er1 still contains target address
148 test_gr_a5a5 0 ; Make sure other general regs not disturbed
149 test_gr_a5a5 2
150 test_gr_a5a5 3
151 test_gr_a5a5 4
152 test_gr_a5a5 5
153 test_gr_a5a5 6
154 test_gr_a5a5 7
155 cmp.l #0x00008000, @neg
156 beq .Lulindn
157 fail
158.Lulindn:
159;;; Note: leave the value as 0x00008000, so that extu has work to do.
160
161exts_l_postinc_p:
162 set_grs_a5a5
163 set_ccr_zero
164 ;; exts.l @ern32+
165 mov.l #pos, er1
166 exts.l @er1+
167
168 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
169 test_cc_clear
170
171 test_h_gr32 pos+4 er1 ; er1 still contains target address
172 test_gr_a5a5 0 ; Make sure other general regs not disturbed
173 test_gr_a5a5 2
174 test_gr_a5a5 3
175 test_gr_a5a5 4
176 test_gr_a5a5 5
177 test_gr_a5a5 6
178 test_gr_a5a5 7
179 cmp.l #0x00000001, @pos
180 beq .Lslpostincp
181 fail
182.Lslpostincp:
183 mov.l #0xffff0001, @pos ; Restore initial value
184
185exts_l_postinc_n:
186 set_grs_a5a5
187 set_ccr_zero
188 ;; exts.l @ern32+
189 mov.l #neg, er1
190 exts.l @er1+
191
192 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
193 test_neg_set
194 test_zero_clear
195 test_ovf_clear
196 test_carry_clear
197
198 test_h_gr32 neg+4 er1 ; er1 still contains target address
199 test_gr_a5a5 0 ; Make sure other general regs not disturbed
200 test_gr_a5a5 2
201 test_gr_a5a5 3
202 test_gr_a5a5 4
203 test_gr_a5a5 5
204 test_gr_a5a5 6
205 test_gr_a5a5 7
206 cmp.l #0xffff8000, @neg
207 beq .Lslpostincn
208 fail
209.Lslpostincn:
210;;; Note: leave the value as 0xffff8000, so that extu has work to do.
211
212extu_l_postinc_n:
213 set_grs_a5a5
214 set_ccr_zero
215 ;; extu.l @ern32+
216 mov.l #neg, er1
217 extu.l @er1+
218
219 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
220 test_cc_clear
221
222 test_h_gr32 neg+4 er1 ; er1 still contains target address
223 test_gr_a5a5 0 ; Make sure other general regs not disturbed
224 test_gr_a5a5 2
225 test_gr_a5a5 3
226 test_gr_a5a5 4
227 test_gr_a5a5 5
228 test_gr_a5a5 6
229 test_gr_a5a5 7
230 cmp.l #0x00008000, @neg
231 beq .Lulpostincn
232 fail
233.Lulpostincn:
234;;; Note: leave the value as 0x00008000, so that extu has work to do.
235
236exts_l_postdec_p:
237 set_grs_a5a5
238 set_ccr_zero
239 ;; exts.l @ern32-
240 mov.l #pos, er1
241 exts.l @er1-
242
243 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
244 test_cc_clear
245
246 test_h_gr32 pos-4 er1 ; er1 still contains target address
247 test_gr_a5a5 0 ; Make sure other general regs not disturbed
248 test_gr_a5a5 2
249 test_gr_a5a5 3
250 test_gr_a5a5 4
251 test_gr_a5a5 5
252 test_gr_a5a5 6
253 test_gr_a5a5 7
254 cmp.l #0x00000001, @pos
255 beq .Lslpostdecp
256 fail
257.Lslpostdecp:
258 mov.l #0xffff0001, @pos ; Restore initial value
259
260exts_l_postdec_n:
261 set_grs_a5a5
262 set_ccr_zero
263 ;; exts.l @ern32-
264 mov.l #neg, er1
265 exts.l @er1-
266
267 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
268 test_neg_set
269 test_zero_clear
270 test_ovf_clear
271 test_carry_clear
272
273 test_h_gr32 neg-4 er1 ; er1 still contains target address
274 test_gr_a5a5 0 ; Make sure other general regs not disturbed
275 test_gr_a5a5 2
276 test_gr_a5a5 3
277 test_gr_a5a5 4
278 test_gr_a5a5 5
279 test_gr_a5a5 6
280 test_gr_a5a5 7
281 cmp.l #0xffff8000, @neg
282 beq .Lslpostdecn
283 fail
284.Lslpostdecn:
285;;; Note: leave the value as 0xffff8000, so that extu has work to do.
286
287extu_l_postdec_n:
288 set_grs_a5a5
289 set_ccr_zero
290 ;; extu.l @ern32-
291 mov.l #neg, er1
292 extu.l @er1-
293
294 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
295 test_cc_clear
296
297 test_h_gr32 neg-4 er1 ; er1 still contains target address
298 test_gr_a5a5 0 ; Make sure other general regs not disturbed
299 test_gr_a5a5 2
300 test_gr_a5a5 3
301 test_gr_a5a5 4
302 test_gr_a5a5 5
303 test_gr_a5a5 6
304 test_gr_a5a5 7
305 cmp.l #0x00008000, @neg
306 beq .Lulpostdecn
307 fail
308.Lulpostdecn:
309;;; Note: leave the value as 0x00008000, so that extu has work to do.
310
311exts_l_preinc_p:
312 set_grs_a5a5
313 set_ccr_zero
314 ;; exts.l @+ern32
315 mov.l #pos-4, er1
316 exts.l @+er1
317
318 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
319 test_cc_clear
320
321 test_h_gr32 pos er1 ; er1 still contains target address
322 test_gr_a5a5 0 ; Make sure other general regs not disturbed
323 test_gr_a5a5 2
324 test_gr_a5a5 3
325 test_gr_a5a5 4
326 test_gr_a5a5 5
327 test_gr_a5a5 6
328 test_gr_a5a5 7
329 cmp.l #0x00000001, @pos
330 beq .Lslpreincp
331 fail
332.Lslpreincp:
333 mov.l #0xffff0001, @pos ; Restore initial value
334
335exts_l_preinc_n:
336 set_grs_a5a5
337 set_ccr_zero
338 ;; exts.l @+ern32
339 mov.l #neg-4, er1
340 exts.l @+er1
341
342 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
343 test_neg_set
344 test_zero_clear
345 test_ovf_clear
346 test_carry_clear
347
348 test_h_gr32 neg er1 ; er1 still contains target address
349 test_gr_a5a5 0 ; Make sure other general regs not disturbed
350 test_gr_a5a5 2
351 test_gr_a5a5 3
352 test_gr_a5a5 4
353 test_gr_a5a5 5
354 test_gr_a5a5 6
355 test_gr_a5a5 7
356 cmp.l #0xffff8000, @neg
357 beq .Lslpreincn
358 fail
359.Lslpreincn:
360;;; Note: leave the value as 0xffff8000, so that extu has work to do.
361
362extu_l_preinc_n:
363 set_grs_a5a5
364 set_ccr_zero
365 ;; extu.l @+ern32
366 mov.l #neg-4, er1
367 extu.l @+er1
368
369 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
370 test_cc_clear
371
372 test_h_gr32 neg er1 ; er1 still contains target address
373 test_gr_a5a5 0 ; Make sure other general regs not disturbed
374 test_gr_a5a5 2
375 test_gr_a5a5 3
376 test_gr_a5a5 4
377 test_gr_a5a5 5
378 test_gr_a5a5 6
379 test_gr_a5a5 7
380 cmp.l #0x00008000, @neg
381 beq .Lulpreincn
382 fail
383.Lulpreincn:
384;;; Note: leave the value as 0x00008000, so that extu has work to do.
385
386exts_l_predec_p:
387 set_grs_a5a5
388 set_ccr_zero
389 ;; exts.l @-ern32
390 mov.l #pos+4, er1
391 exts.l @-er1
392
393 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
394 test_cc_clear
395
396 test_h_gr32 pos er1 ; er1 still contains target address
397 test_gr_a5a5 0 ; Make sure other general regs not disturbed
398 test_gr_a5a5 2
399 test_gr_a5a5 3
400 test_gr_a5a5 4
401 test_gr_a5a5 5
402 test_gr_a5a5 6
403 test_gr_a5a5 7
404 cmp.l #0x00000001, @pos
405 beq .Lslpredecp
406 fail
407.Lslpredecp:
408 mov.l #0xffff0001, @pos ; Restore initial value
409
410exts_l_predec_n:
411 set_grs_a5a5
412 set_ccr_zero
413 ;; exts.l @-ern32
414 mov.l #neg+4, er1
415 exts.l @-er1
416
417 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
418 test_neg_set
419 test_zero_clear
420 test_ovf_clear
421 test_carry_clear
422
423 test_h_gr32 neg er1 ; er1 still contains target address
424 test_gr_a5a5 0 ; Make sure other general regs not disturbed
425 test_gr_a5a5 2
426 test_gr_a5a5 3
427 test_gr_a5a5 4
428 test_gr_a5a5 5
429 test_gr_a5a5 6
430 test_gr_a5a5 7
431 cmp.l #0xffff8000, @neg
432 beq .Lslpredecn
433 fail
434.Lslpredecn:
435;;; Note: leave the value as 0xffff8000, so that extu has work to do.
436
437extu_l_predec_n:
438 set_grs_a5a5
439 set_ccr_zero
440 ;; extu.l @-ern32
441 mov.l #neg+4, er1
442 extu.l @-er1
443
444 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
445 test_cc_clear
446
447 test_h_gr32 neg er1 ; er1 still contains target address
448 test_gr_a5a5 0 ; Make sure other general regs not disturbed
449 test_gr_a5a5 2
450 test_gr_a5a5 3
451 test_gr_a5a5 4
452 test_gr_a5a5 5
453 test_gr_a5a5 6
454 test_gr_a5a5 7
455 cmp.l #0x00008000, @neg
456 beq .Lulpredecn
457 fail
458.Lulpredecn:
459;;; Note: leave the value as 0x00008000, so that extu has work to do.
460
461extu_l_disp2_n:
462 set_grs_a5a5
463 set_ccr_zero
464 ;; extu.l @(dd:2, ern32)
465 mov.l #neg-8, er1
466 extu.l @(8:2, er1)
467
468 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
469 test_cc_clear
470
471 test_h_gr32 neg-8 er1 ; er1 still contains target address
472 test_gr_a5a5 0 ; Make sure other general regs not disturbed
473 test_gr_a5a5 2
474 test_gr_a5a5 3
475 test_gr_a5a5 4
476 test_gr_a5a5 5
477 test_gr_a5a5 6
478 test_gr_a5a5 7
479 cmp.l #0x00008000, @neg
480 beq .Luldisp2n
481 fail
482.Luldisp2n:
483;;; Note: leave the value as 0x00008000, so that extu has work to do.
484
485extu_l_disp16_n:
486 set_grs_a5a5
487 set_ccr_zero
488 ;; extu.l @(dd:16, ern32)
489 mov.l #neg-44, er1
490 extu.l @(44:16, er1)
491
492 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
493 test_cc_clear
494
495 test_h_gr32 neg-44 er1 ; er1 still contains target address
496 test_gr_a5a5 0 ; Make sure other general regs not disturbed
497 test_gr_a5a5 2
498 test_gr_a5a5 3
499 test_gr_a5a5 4
500 test_gr_a5a5 5
501 test_gr_a5a5 6
502 test_gr_a5a5 7
503 cmp.l #0x00008000, @neg
504 beq .Luldisp16n
505 fail
506.Luldisp16n:
507;;; Note: leave the value as 0x00008000, so that extu has work to do.
508
509extu_l_disp32_n:
510 set_grs_a5a5
511 set_ccr_zero
512 ;; extu.l @(dd:32, ern32)
513 mov.l #neg+444, er1
514 extu.l @(-444:32, er1)
515
516 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
517 test_cc_clear
518
519 test_h_gr32 neg+444 er1 ; er1 still contains target address
520 test_gr_a5a5 0 ; Make sure other general regs not disturbed
521 test_gr_a5a5 2
522 test_gr_a5a5 3
523 test_gr_a5a5 4
524 test_gr_a5a5 5
525 test_gr_a5a5 6
526 test_gr_a5a5 7
527 cmp.l #0x00008000, @neg
528 beq .Luldisp32n
529 fail
530.Luldisp32n:
531;;; Note: leave the value as 0x00008000, so that extu has work to do.
532
533extu_l_abs16_n:
534 set_grs_a5a5
535 set_ccr_zero
536 ;; extu.l @aa:16
537 extu.l @neg:16
538
539 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
540 test_cc_clear
541
542 test_gr_a5a5 0 ; Make sure other general regs not disturbed
543 test_gr_a5a5 1
544 test_gr_a5a5 2
545 test_gr_a5a5 3
546 test_gr_a5a5 4
547 test_gr_a5a5 5
548 test_gr_a5a5 6
549 test_gr_a5a5 7
550 cmp.l #0x00008000, @neg
551 beq .Lulabs16n
552 fail
553.Lulabs16n:
554;;; Note: leave the value as 0x00008000, so that extu has work to do.
555
556extu_l_abs32_n:
557 set_grs_a5a5
558 set_ccr_zero
559 ;; extu.l @aa:32
560 extu.l @neg:32
561
562 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
563 test_cc_clear
564
565 test_gr_a5a5 0 ; Make sure other general regs not disturbed
566 test_gr_a5a5 1
567 test_gr_a5a5 2
568 test_gr_a5a5 3
569 test_gr_a5a5 4
570 test_gr_a5a5 5
571 test_gr_a5a5 6
572 test_gr_a5a5 7
573 cmp.l #0x00008000, @neg
574 beq .Lulabs32n
575 fail
576.Lulabs32n:
577;;; Note: leave the value as 0x00008000, so that extu has work to do.
578
579
580
581 #
582 # exts #2, nn
583 #
584
585exts_l_reg32_2_p:
586 set_grs_a5a5
587 set_ccr_zero
588 ;; exts.l #2, ern32
589 mov.b #1, r0l
590 exts.l #2, er0
591
592 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
593 test_cc_clear
594
595 test_h_gr32 0x00000001 er0 ; result of sign extend
596 test_gr_a5a5 1 ; Make sure other general regs not disturbed
597 test_gr_a5a5 2
598 test_gr_a5a5 3
599 test_gr_a5a5 4
600 test_gr_a5a5 5
601 test_gr_a5a5 6
602 test_gr_a5a5 7
603
604exts_l_reg32_2_n:
605 set_grs_a5a5
606 set_ccr_zero
607 ;; exts.l #2, ern32
608 mov.b #0xff, r0l
609 exts.l #2, er0
610
611 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
612 test_neg_set
613 test_ovf_clear
614 test_zero_clear
615 test_carry_clear
616
617 test_h_gr32 0xffffffff er0 ; result of sign extend
618 test_gr_a5a5 1 ; Make sure other general regs not disturbed
619 test_gr_a5a5 2
620 test_gr_a5a5 3
621 test_gr_a5a5 4
622 test_gr_a5a5 5
623 test_gr_a5a5 6
624 test_gr_a5a5 7
625
626extu_l_reg32_2_n:
627 set_grs_a5a5
628 set_ccr_zero
629 ;; extu.l #2, ern32
630 mov.b #0xff, r0l
631 extu.l #2, er0
632
633 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
634 test_cc_clear
635
636 test_h_gr32 0x000000ff er0 ; result of zero extend
637 test_gr_a5a5 1 ; Make sure other general regs not disturbed
638 test_gr_a5a5 2
639 test_gr_a5a5 3
640 test_gr_a5a5 4
641 test_gr_a5a5 5
642 test_gr_a5a5 6
643 test_gr_a5a5 7
644
645exts_l_ind_2_p:
646 set_grs_a5a5
647 set_ccr_zero
648 ;; exts.l #2, @ern32
649 mov.l #pos2, er1
650 exts.l #2, @er1
651
652 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
653 test_cc_clear
654
655 test_h_gr32 pos2 er1 ; result of sign extend
656 test_gr_a5a5 0 ; Make sure other general regs not disturbed
657 test_gr_a5a5 2
658 test_gr_a5a5 3
659 test_gr_a5a5 4
660 test_gr_a5a5 5
661 test_gr_a5a5 6
662 test_gr_a5a5 7
663 cmp.l #0x00000001, @pos2
664 beq .Lslindp2
665 fail
666.Lslindp2:
667 mov.l #0xffffff01, @pos2 ; Restore initial value
668
669exts_l_ind_2_n:
670 set_grs_a5a5
671 set_ccr_zero
672 ;; exts.l #2, @ern32
673 mov.l #neg2, er1
674 exts.l #2, @er1
675
676 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
677 test_neg_set
678 test_ovf_clear
679 test_zero_clear
680 test_carry_clear
681
682 test_h_gr32 neg2 er1 ; result of sign extend
683 test_gr_a5a5 0 ; Make sure other general regs not disturbed
684 test_gr_a5a5 2
685 test_gr_a5a5 3
686 test_gr_a5a5 4
687 test_gr_a5a5 5
688 test_gr_a5a5 6
689 test_gr_a5a5 7
690 cmp.l #0xffffff80, @neg2
691 beq .Lslindn2
692 fail
693.Lslindn2:
694;;; Note: leave the value as 0xffffff80, so that extu has work to do.
695
696extu_l_ind_2_n:
697 set_grs_a5a5
698 set_ccr_zero
699 ;; extu.l #2, @ern32
700 mov.l #neg2, er1
701 extu.l #2, @er1
702
703 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
704 test_cc_clear
705
706 test_h_gr32 neg2 er1 ; result of zero extend
707 test_gr_a5a5 0 ; Make sure other general regs not disturbed
708 test_gr_a5a5 2
709 test_gr_a5a5 3
710 test_gr_a5a5 4
711 test_gr_a5a5 5
712 test_gr_a5a5 6
713 test_gr_a5a5 7
714 cmp.l #0x00000080, @neg2
715 beq .Lulindn2
716 fail
717.Lulindn2:
718;;; Note: leave the value as 0x00000080, like it started out.
719
720exts_l_postinc_2_p:
721 set_grs_a5a5
722 set_ccr_zero
723 ;; exts.l #2, @ern32+
724 mov.l #pos2, er1
725 exts.l #2, @er1+
726
727 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
728 test_cc_clear
729
730 test_h_gr32 pos2+4 er1 ; result of sign extend
731 test_gr_a5a5 0 ; Make sure other general regs not disturbed
732 test_gr_a5a5 2
733 test_gr_a5a5 3
734 test_gr_a5a5 4
735 test_gr_a5a5 5
736 test_gr_a5a5 6
737 test_gr_a5a5 7
738 cmp.l #0x00000001, @pos2
739 beq .Lslpostincp2
740 fail
741.Lslpostincp2:
742 mov.l #0xffffff01, @pos2 ; Restore initial value
743
744exts_l_postinc_2_n:
745 set_grs_a5a5
746 set_ccr_zero
747 ;; exts.l #2, @ern32+
748 mov.l #neg2, er1
749 exts.l #2, @er1+
750
751 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
752 test_neg_set
753 test_ovf_clear
754 test_zero_clear
755 test_carry_clear
756
757 test_h_gr32 neg2+4 er1 ; result of sign extend
758 test_gr_a5a5 0 ; Make sure other general regs not disturbed
759 test_gr_a5a5 2
760 test_gr_a5a5 3
761 test_gr_a5a5 4
762 test_gr_a5a5 5
763 test_gr_a5a5 6
764 test_gr_a5a5 7
765 cmp.l #0xffffff80, @neg2
766 beq .Lslpostincn2
767 fail
768.Lslpostincn2:
769;;; Note: leave the value as 0xffffff80, so that extu has work to do.
770
771extu_l_postinc_2_n:
772 set_grs_a5a5
773 set_ccr_zero
774 ;; extu.l #2, @ern32+
775 mov.l #neg2, er1
776 extu.l #2, @er1+
777
778 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
779 test_cc_clear
780
781 test_h_gr32 neg2+4 er1 ; result of zero extend
782 test_gr_a5a5 0 ; Make sure other general regs not disturbed
783 test_gr_a5a5 2
784 test_gr_a5a5 3
785 test_gr_a5a5 4
786 test_gr_a5a5 5
787 test_gr_a5a5 6
788 test_gr_a5a5 7
789 cmp.l #0x00000080, @neg2
790 beq .Lulpostincn2
791 fail
792.Lulpostincn2:
793;;; Note: leave the value as 0x00000080, like it started out.
794
795exts_l_postdec_2_p:
796 set_grs_a5a5
797 set_ccr_zero
798 ;; exts.l #2, @ern32-
799 mov.l #pos2, er1
800 exts.l #2, @er1-
801
802 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
803 test_cc_clear
804
805 test_h_gr32 pos2-4 er1 ; result of sign extend
806 test_gr_a5a5 0 ; Make sure other general regs not disturbed
807 test_gr_a5a5 2
808 test_gr_a5a5 3
809 test_gr_a5a5 4
810 test_gr_a5a5 5
811 test_gr_a5a5 6
812 test_gr_a5a5 7
813 cmp.l #0x00000001, @pos2
814 beq .Lslpostdecp2
815 fail
816.Lslpostdecp2:
817 mov.l #0xffffff01, @pos2 ; Restore initial value
818
819exts_l_postdec_2_n:
820 set_grs_a5a5
821 set_ccr_zero
822 ;; exts.l #2, @ern32-
823 mov.l #neg2, er1
824 exts.l #2, @er1-
825
826 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
827 test_neg_set
828 test_ovf_clear
829 test_zero_clear
830 test_carry_clear
831
832 test_h_gr32 neg2-4 er1 ; result of sign extend
833 test_gr_a5a5 0 ; Make sure other general regs not disturbed
834 test_gr_a5a5 2
835 test_gr_a5a5 3
836 test_gr_a5a5 4
837 test_gr_a5a5 5
838 test_gr_a5a5 6
839 test_gr_a5a5 7
840 cmp.l #0xffffff80, @neg2
841 beq .Lslpostdecn2
842 fail
843.Lslpostdecn2:
844;;; Note: leave the value as 0xffffff80, so that extu has work to do.
845
846extu_l_postdec_2_n:
847 set_grs_a5a5
848 set_ccr_zero
849 ;; extu.l #2, @ern32-
850 mov.l #neg2, er1
851 extu.l #2, @er1-
852
853 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
854 test_cc_clear
855
856 test_h_gr32 neg2-4 er1 ; result of zero extend
857 test_gr_a5a5 0 ; Make sure other general regs not disturbed
858 test_gr_a5a5 2
859 test_gr_a5a5 3
860 test_gr_a5a5 4
861 test_gr_a5a5 5
862 test_gr_a5a5 6
863 test_gr_a5a5 7
864 cmp.l #0x00000080, @neg2
865 beq .Lulpostdecn2
866 fail
867.Lulpostdecn2:
868;;; Note: leave the value as 0x00000080, like it started out.
869
870exts_l_preinc_2_p:
871 set_grs_a5a5
872 set_ccr_zero
873 ;; exts.l #2, @+ern32
874 mov.l #pos2-4, er1
875 exts.l #2, @+er1
876
877 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
878 test_cc_clear
879
880 test_h_gr32 pos2 er1 ; result of sign extend
881 test_gr_a5a5 0 ; Make sure other general regs not disturbed
882 test_gr_a5a5 2
883 test_gr_a5a5 3
884 test_gr_a5a5 4
885 test_gr_a5a5 5
886 test_gr_a5a5 6
887 test_gr_a5a5 7
888 cmp.l #0x00000001, @pos2
889 beq .Lslpreincp2
890 fail
891.Lslpreincp2:
892 mov.l #0xffffff01, @pos2 ; Restore initial value
893
894exts_l_preinc_2_n:
895 set_grs_a5a5
896 set_ccr_zero
897 ;; exts.l #2, @+ern32
898 mov.l #neg2-4, er1
899 exts.l #2, @+er1
900
901 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
902 test_neg_set
903 test_ovf_clear
904 test_zero_clear
905 test_carry_clear
906
907 test_h_gr32 neg2 er1 ; result of sign extend
908 test_gr_a5a5 0 ; Make sure other general regs not disturbed
909 test_gr_a5a5 2
910 test_gr_a5a5 3
911 test_gr_a5a5 4
912 test_gr_a5a5 5
913 test_gr_a5a5 6
914 test_gr_a5a5 7
915 cmp.l #0xffffff80, @neg2
916 beq .Lslpreincn2
917 fail
918.Lslpreincn2:
919;;; Note: leave the value as 0xffffff80, so that extu has work to do.
920
921extu_l_preinc_2_n:
922 set_grs_a5a5
923 set_ccr_zero
924 ;; extu.l #2, @+ern32
925 mov.l #neg2-4, er1
926 extu.l #2, @+er1
927
928 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
929 test_cc_clear
930
931 test_h_gr32 neg2 er1 ; result of zero extend
932 test_gr_a5a5 0 ; Make sure other general regs not disturbed
933 test_gr_a5a5 2
934 test_gr_a5a5 3
935 test_gr_a5a5 4
936 test_gr_a5a5 5
937 test_gr_a5a5 6
938 test_gr_a5a5 7
939 cmp.l #0x00000080, @neg2
940 beq .Lulpreincn2
941 fail
942.Lulpreincn2:
943;;; Note: leave the value as 0x00000080, like it started out.
944
945exts_l_predec_2_p:
946 set_grs_a5a5
947 set_ccr_zero
948 ;; exts.l #2, @-ern32
949 mov.l #pos2+4, er1
950 exts.l #2, @-er1
951
952 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
953 test_cc_clear
954
955 test_h_gr32 pos2 er1 ; result of sign extend
956 test_gr_a5a5 0 ; Make sure other general regs not disturbed
957 test_gr_a5a5 2
958 test_gr_a5a5 3
959 test_gr_a5a5 4
960 test_gr_a5a5 5
961 test_gr_a5a5 6
962 test_gr_a5a5 7
963 cmp.l #0x00000001, @pos2
964 beq .Lslpredecp2
965 fail
966.Lslpredecp2:
967 mov.l #0xffffff01, @pos2 ; Restore initial value
968
969exts_l_predec_2_n:
970 set_grs_a5a5
971 set_ccr_zero
972 ;; exts.l #2, @-ern32
973 mov.l #neg2+4, er1
974 exts.l #2, @-er1
975
976 ;; Test ccr H=0 N=1 Z=0 V=0 C=0
977 test_neg_set
978 test_ovf_clear
979 test_zero_clear
980 test_carry_clear
981
982 test_h_gr32 neg2 er1 ; result of sign extend
983 test_gr_a5a5 0 ; Make sure other general regs not disturbed
984 test_gr_a5a5 2
985 test_gr_a5a5 3
986 test_gr_a5a5 4
987 test_gr_a5a5 5
988 test_gr_a5a5 6
989 test_gr_a5a5 7
990 cmp.l #0xffffff80, @neg2
991 beq .Lslpredecn2
992 fail
993.Lslpredecn2:
994;;; Note: leave the value as 0xffffff80, so that extu has work to do.
995
996extu_l_predec_2_n:
997 set_grs_a5a5
998 set_ccr_zero
999 ;; extu.l #2, @-ern32
1000 mov.l #neg2+4, er1
1001 extu.l #2, @-er1
1002
1003 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1004 test_cc_clear
1005
1006 test_h_gr32 neg2 er1 ; result of zero extend
1007 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1008 test_gr_a5a5 2
1009 test_gr_a5a5 3
1010 test_gr_a5a5 4
1011 test_gr_a5a5 5
1012 test_gr_a5a5 6
1013 test_gr_a5a5 7
1014 cmp.l #0x00000080, @neg2
1015 beq .Lulpredecn2
1016 fail
1017.Lulpredecn2:
1018;;; Note: leave the value as 0x00000080, like it started out.
1019
1020extu_l_disp2_2_n:
1021 set_grs_a5a5
1022 set_ccr_zero
1023 ;; extu.l #2, @(dd:2, ern32)
1024 mov.l #neg2-8, er1
1025 extu.l #2, @(8:2, er1)
1026
1027 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1028 test_cc_clear
1029
1030 test_h_gr32 neg2-8 er1 ; result of zero extend
1031 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1032 test_gr_a5a5 2
1033 test_gr_a5a5 3
1034 test_gr_a5a5 4
1035 test_gr_a5a5 5
1036 test_gr_a5a5 6
1037 test_gr_a5a5 7
1038 cmp.l #0x00000080, @neg2
1039 beq .Luldisp2n2
1040 fail
1041.Luldisp2n2:
1042;;; Note: leave the value as 0x00000080, like it started out.
1043
1044extu_l_disp16_2_n:
1045 set_grs_a5a5
1046 set_ccr_zero
1047 ;; extu.l #2, @(dd:16, ern32)
1048 mov.l #neg2-44, er1
1049 extu.l #2, @(44:16, er1)
1050
1051 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1052 test_cc_clear
1053
1054 test_h_gr32 neg2-44 er1 ; result of zero extend
1055 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1056 test_gr_a5a5 2
1057 test_gr_a5a5 3
1058 test_gr_a5a5 4
1059 test_gr_a5a5 5
1060 test_gr_a5a5 6
1061 test_gr_a5a5 7
1062 cmp.l #0x00000080, @neg2
1063 beq .Luldisp16n2
1064 fail
1065.Luldisp16n2:
1066;;; Note: leave the value as 0x00000080, like it started out.
1067
1068extu_l_disp32_2_n:
1069 set_grs_a5a5
1070 set_ccr_zero
1071 ;; extu.l #2, @(dd:32, ern32)
1072 mov.l #neg2+444, er1
1073 extu.l #2, @(-444:32, er1)
1074
1075 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1076 test_cc_clear
1077
1078 test_h_gr32 neg2+444 er1 ; result of zero extend
1079 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1080 test_gr_a5a5 2
1081 test_gr_a5a5 3
1082 test_gr_a5a5 4
1083 test_gr_a5a5 5
1084 test_gr_a5a5 6
1085 test_gr_a5a5 7
1086 cmp.l #0x00000080, @neg2
1087 beq .Luldisp32n2
1088 fail
1089.Luldisp32n2:
1090;;; Note: leave the value as 0x00000080, like it started out.
1091
1092extu_l_abs16_2_n:
1093 set_grs_a5a5
1094 set_ccr_zero
1095 ;; extu.l #2, @aa:16
1096 extu.l #2, @neg2:16
1097
1098 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1099 test_cc_clear
1100
1101 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1102 test_gr_a5a5 1
1103 test_gr_a5a5 2
1104 test_gr_a5a5 3
1105 test_gr_a5a5 4
1106 test_gr_a5a5 5
1107 test_gr_a5a5 6
1108 test_gr_a5a5 7
1109 cmp.l #0x00000080, @neg2
1110 beq .Lulabs16n2
1111 fail
1112.Lulabs16n2:
1113;;; Note: leave the value as 0x00000080, like it started out.
1114
1115extu_l_abs32_2_n:
1116 set_grs_a5a5
1117 set_ccr_zero
1118 ;; extu.l #2, @aa:32
1119 extu.l #2, @neg2:32
1120
1121 ;; Test ccr H=0 N=0 Z=0 V=0 C=0
1122 test_cc_clear
1123
1124 test_gr_a5a5 0 ; Make sure other general regs not disturbed
1125 test_gr_a5a5 1
1126 test_gr_a5a5 2
1127 test_gr_a5a5 3
1128 test_gr_a5a5 4
1129 test_gr_a5a5 5
1130 test_gr_a5a5 6
1131 test_gr_a5a5 7
1132 cmp.l #0x00000080, @neg2
1133 beq .Lulabs32n2
1134 fail
1135.Lulabs32n2:
1136;;; Note: leave the value as 0x00000080, like it started out.
1137
1138.endif
1139
1140 pass
1141
1142 exit 0
1143
1144
1145
1146