daily update
[external/binutils.git] / sim / testsuite / sim / h8300 / ldm.s
1 # Hitachi H8 testcase 'ldm', 'stm'
2 # mach(): all
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         .data
13         .align 4
14 _stack: .long   0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0
15         .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
16         .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
17         .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
18 _stack_top:
19
20         start
21
22 .if (sim_cpu == h8300s || sim_cpu == h8sx)      ; Earlier versions, no exr
23 stm_2reg:
24         set_grs_a5a5
25         mov     #_stack_top, er7
26         mov     #2, er2
27         mov     #3, er3
28         
29         set_ccr_zero
30         stm     er2-er3, @-sp
31         test_cc_clear
32         
33         test_gr_a5a5 0          ; Make sure other general regs not disturbed
34         test_gr_a5a5 1
35         test_h_gr32  2  er2
36         test_h_gr32  3  er3
37         test_gr_a5a5 4
38         test_gr_a5a5 5
39         test_gr_a5a5 6
40         test_h_gr32  _stack_top-8, er7
41
42         mov     @_stack_top-4, er0
43         cmp     #2, er0
44         bne     fail1
45
46         mov     @_stack_top-8, er0
47         cmp     #3, er0
48         bne     fail1
49
50         mov     @_stack_top-12, er0
51         cmp     #0, er0
52         bne     fail1
53
54 stm_3reg:
55         set_grs_a5a5
56         mov     #_stack_top, er7
57         mov     #4, er4
58         mov     #5, er5
59         mov     #6, er6
60         
61         set_ccr_zero
62         stm     er4-er6, @-sp
63         test_cc_clear
64         
65         test_gr_a5a5 0          ; Make sure other general regs not disturbed
66         test_gr_a5a5 1
67         test_gr_a5a5 2
68         test_gr_a5a5 3
69         test_h_gr32  4  er4
70         test_h_gr32  5  er5
71         test_h_gr32  6  er6
72         test_h_gr32  _stack_top-12, er7
73
74         mov     @_stack_top-4, er0
75         cmp     #4, er0
76         bne     fail1
77
78         mov     @_stack_top-8, er0
79         cmp     #5, er0
80         bne     fail1
81
82         mov     @_stack_top-12, er0
83         cmp     #6, er0
84         bne     fail1
85
86         mov     @_stack_top-16, er0
87         cmp     #0, er0
88         bne     fail1
89
90 stm_4reg:
91         set_grs_a5a5
92         mov     #_stack_top, er7
93         mov     #1, er0
94         mov     #2, er1
95         mov     #3, er2
96         mov     #4, er3
97         
98         set_ccr_zero
99         stm     er0-er3, @-sp
100         test_cc_clear
101         
102         test_h_gr32  1  er0
103         test_h_gr32  2  er1
104         test_h_gr32  3  er2
105         test_h_gr32  4  er3
106         test_gr_a5a5 4          ; Make sure other general regs not disturbed
107         test_gr_a5a5 5
108         test_gr_a5a5 6
109         test_h_gr32  _stack_top-16, er7
110
111         mov     @_stack_top-4, er0
112         cmp     #1, er0
113         bne     fail1
114
115         mov     @_stack_top-8, er0
116         cmp     #2, er0
117         bne     fail1
118
119         mov     @_stack_top-12, er0
120         cmp     #3, er0
121         bne     fail1
122
123         mov     @_stack_top-16, er0
124         cmp     #4, er0
125         bne     fail1
126
127         mov     @_stack_top-20, er0
128         cmp     #0, er0
129         bne     fail1
130
131 ldm_2reg:
132         set_grs_a5a5
133         mov     #_stack, er7
134         
135         set_ccr_zero
136         ldm     @sp+, er2-er3
137         test_cc_clear
138         
139         test_gr_a5a5 0          ; Make sure other general regs not disturbed
140         test_gr_a5a5 1
141         test_h_gr32  1  er2
142         test_h_gr32  0  er3
143         test_gr_a5a5 4
144         test_gr_a5a5 5
145         test_gr_a5a5 6
146         test_h_gr32  _stack+8, er7
147
148 ldm_3reg:
149         set_grs_a5a5
150         mov     #_stack+4, er7
151         
152         set_ccr_zero
153         ldm     @sp+, er4-er6
154         test_cc_clear
155         
156         test_gr_a5a5 0          ; Make sure other general regs not disturbed
157         test_gr_a5a5 1
158         test_gr_a5a5 2
159         test_gr_a5a5 3
160         test_h_gr32  3  er4
161         test_h_gr32  2  er5
162         test_h_gr32  1  er6
163         test_h_gr32  _stack+16, er7
164
165 ldm_4reg:
166         set_grs_a5a5
167         mov     #_stack+4, er7
168         
169         set_ccr_zero
170         ldm     @sp+, er0-er3
171         test_cc_clear
172         
173         test_h_gr32  4  er0
174         test_h_gr32  3  er1
175         test_h_gr32  2  er2
176         test_h_gr32  1  er3
177         test_gr_a5a5 4          ; Make sure other general regs not disturbed
178         test_gr_a5a5 5
179         test_gr_a5a5 6
180         test_h_gr32  _stack+20, er7
181 .endif
182
183 pushpop:
184         set_grs_a5a5
185 .if (sim_cpu == h8300)
186         mov     #_stack_top, r7
187         mov     #12, r1
188         mov     #34, r2
189         mov     #56, r3
190         push    r1
191         push    r2
192         push    r3
193         pop     r4
194         pop     r5
195         pop     r6
196
197         test_gr_a5a5 0          ; Make sure other general _reg_ not disturbed
198         test_h_gr16  12 r1
199         test_h_gr16  34 r2
200         test_h_gr16  56 r3
201         test_h_gr16  56 r4
202         test_h_gr16  34 r5
203         test_h_gr16  12 r6
204         mov     #_stack_top, r0
205         cmp.w   r0, r7
206         bne     fail1
207 .else
208         mov     #_stack_top, er7
209         mov     #12, er1
210         mov     #34, er2
211         mov     #56, er3
212         push    er1
213         push    er2
214         push    er3
215         pop     er4
216         pop     er5
217         pop     er6
218
219         test_gr_a5a5 0          ; Make sure other general _reg_ not disturbed
220         test_h_gr32  12 er1
221         test_h_gr32  34 er2
222         test_h_gr32  56 er3
223         test_h_gr32  56 er4
224         test_h_gr32  34 er5
225         test_h_gr32  12 er6
226         test_h_gr32  _stack_top, er7
227 .endif
228                 
229         pass
230
231         exit 0
232
233 fail1:  fail