2003-05-14 Michael Snyder <msnyder@redhat.com>
[external/binutils.git] / sim / testsuite / sim / h8300 / extl.s
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
17 pos:    .long   0xffff0001
18 neg:    .long   0x00008000
19
20 pos2:   .long   0xffffff01
21 neg2:   .long   0x00000080
22
23         .text
24
25 exts_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
44 exts_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
66 extu_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)
86 exts_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
110 exts_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         
137 extu_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
161 exts_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
185 exts_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         
212 extu_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
236 exts_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
260 exts_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         
287 extu_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
311 exts_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
335 exts_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         
362 extu_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
386 exts_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
410 exts_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         
437 extu_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
461 extu_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
485 extu_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
509 extu_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
533 extu_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
556 extu_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
585 exts_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
604 exts_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
626 extu_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
645 exts_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
669 exts_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
696 extu_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
720 exts_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
744 exts_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
771 extu_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
795 exts_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
819 exts_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
846 extu_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
870 exts_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
894 exts_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
921 extu_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
945 exts_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
969 exts_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
996 extu_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
1020 extu_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
1044 extu_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
1068 extu_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
1092 extu_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
1115 extu_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