include/
[external/binutils.git] / sim / testsuite / sim / h8300 / mova.s
1 # Hitachi H8 testcase 'mova'
2 # mach(): 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         .data
14 foo:    .long   0x01010101
15         .long   0x10101010
16         .long   0x11111111
17
18         start
19
20 movabl16_reg8:
21         set_grs_a5a5
22         set_ccr_zero
23
24         mova/b.l        @(1:16, r2l.b), er3
25
26         test_cc_clear
27         test_gr_a5a5    0       ; Make sure other regs not affected
28         test_gr_a5a5    1
29         test_gr_a5a5    2
30         test_h_gr32     0xa6 er3
31         test_gr_a5a5    4
32         test_gr_a5a5    5
33         test_gr_a5a5    6
34         test_gr_a5a5    7
35
36 movabl16_reg16:
37         set_grs_a5a5
38         set_ccr_zero
39
40         mova/b.l        @(1:16, r2.w), er3
41
42         test_cc_clear
43         test_gr_a5a5    0       ; Make sure other regs not affected
44         test_gr_a5a5    1
45         test_gr_a5a5    2
46         test_h_gr32     0xa5a6 er3
47         test_gr_a5a5    4
48         test_gr_a5a5    5
49         test_gr_a5a5    6
50         test_gr_a5a5    7
51
52 movabl32_reg8:
53         set_grs_a5a5
54         set_ccr_zero
55
56         mova/b.l        @(1:32, r2l.b), er3
57
58         test_cc_clear
59         test_gr_a5a5    0       ; Make sure other regs not affected
60         test_gr_a5a5    1
61         test_gr_a5a5    2
62         test_h_gr32     0xa6 er3
63         test_gr_a5a5    4
64         test_gr_a5a5    5
65         test_gr_a5a5    6
66         test_gr_a5a5    7
67
68 movabl32_reg16:
69         set_grs_a5a5
70         set_ccr_zero
71
72         mova/b.l        @(1:32, r2.w), er3
73
74         test_cc_clear
75         test_gr_a5a5    0       ; Make sure other regs not affected
76         test_gr_a5a5    1
77         test_gr_a5a5    2
78         test_h_gr32     0xa5a6 er3
79         test_gr_a5a5    4
80         test_gr_a5a5    5
81         test_gr_a5a5    6
82         test_gr_a5a5    7
83
84 movawl16_reg8:
85         set_grs_a5a5
86         set_ccr_zero
87
88         mova/w.l        @(1:16, r2l.b), er3
89
90         test_cc_clear
91         test_gr_a5a5    0       ; Make sure other regs not affected
92         test_gr_a5a5    1
93         test_gr_a5a5    2
94         test_h_gr32     0x14b er3
95         test_gr_a5a5    4
96         test_gr_a5a5    5
97         test_gr_a5a5    6
98         test_gr_a5a5    7
99
100 movawl16_reg16:
101         set_grs_a5a5
102         set_ccr_zero
103
104         mova/w.l        @(1:16, r2.w), er3
105
106         test_cc_clear
107         test_gr_a5a5    0       ; Make sure other regs not affected
108         test_gr_a5a5    1
109         test_gr_a5a5    2
110         test_h_gr32     0x14b4b er3
111         test_gr_a5a5    4
112         test_gr_a5a5    5
113         test_gr_a5a5    6
114         test_gr_a5a5    7
115
116 movawl32_reg8:
117         set_grs_a5a5
118         set_ccr_zero
119
120         mova/w.l        @(1:32, r2l.b), er3
121
122         test_cc_clear
123         test_gr_a5a5    0       ; Make sure other regs not affected
124         test_gr_a5a5    1
125         test_gr_a5a5    2
126         test_h_gr32     0x14b er3
127         test_gr_a5a5    4
128         test_gr_a5a5    5
129         test_gr_a5a5    6
130         test_gr_a5a5    7
131
132 movawl32_reg16:
133         set_grs_a5a5
134         set_ccr_zero
135
136         mova/w.l        @(1:32, r2.w), er3
137
138         test_cc_clear
139         test_gr_a5a5    0       ; Make sure other regs not affected
140         test_gr_a5a5    1
141         test_gr_a5a5    2
142         test_h_gr32     0x14b4b er3
143         test_gr_a5a5    4
144         test_gr_a5a5    5
145         test_gr_a5a5    6
146         test_gr_a5a5    7
147
148 movall16_reg8:
149         set_grs_a5a5
150         set_ccr_zero
151
152         mova/l.l        @(1:16, r2l.b), er3
153
154         test_cc_clear
155         test_gr_a5a5    0       ; Make sure other regs not affected
156         test_gr_a5a5    1
157         test_gr_a5a5    2
158         test_h_gr32     0x295 er3
159         test_gr_a5a5    4
160         test_gr_a5a5    5
161         test_gr_a5a5    6
162         test_gr_a5a5    7
163
164 movall16_reg16:
165         set_grs_a5a5
166         set_ccr_zero
167
168         mova/l.l        @(1:16, r2.w), er3
169
170         test_cc_clear
171         test_gr_a5a5    0       ; Make sure other regs not affected
172         test_gr_a5a5    1
173         test_gr_a5a5    2
174         test_h_gr32     0x29695 er3
175         test_gr_a5a5    4
176         test_gr_a5a5    5
177         test_gr_a5a5    6
178         test_gr_a5a5    7
179
180 movall32_reg8:
181         set_grs_a5a5
182         set_ccr_zero
183
184         mova/l.l        @(1:32, r2l.b), er3
185
186         test_cc_clear
187         test_gr_a5a5    0       ; Make sure other regs not affected
188         test_gr_a5a5    1
189         test_gr_a5a5    2
190         test_h_gr32     0x295 er3
191         test_gr_a5a5    4
192         test_gr_a5a5    5
193         test_gr_a5a5    6
194         test_gr_a5a5    7
195
196 movall32_reg16:
197         set_grs_a5a5
198         set_ccr_zero
199
200         mova/l.l        @(1:32, r2.w), er3
201
202         test_cc_clear
203         test_gr_a5a5    0       ; Make sure other regs not affected
204         test_gr_a5a5    1
205         test_gr_a5a5    2
206         test_h_gr32     0x29695 er3
207         test_gr_a5a5    4
208         test_gr_a5a5    5
209         test_gr_a5a5    6
210         test_gr_a5a5    7
211
212 t02_mova:
213         set_grs_a5a5
214         set_ccr_zero
215
216         mov.l   #0x01010101, er1
217         mova/b.c @(0x1234:16,r1l.b),er1 ; 7A891234
218         test_h_gr32     0x1235, er1 ; 1s
219         mov.l   #0x01010101, er1
220         mova/b.c @(0x1234:16,r1.w),er1 ; 7A991234
221         test_h_gr32     0x1335, er1 ; 2s
222         mov.l   #0x01010101, er1
223         mova/w.c @(0x1234:16,r1l.b),er1 ; 7AA91234
224         test_h_gr32     0x1236, er1 ; 3s
225         mov.l   #0x01010101, er1
226         mova/w.c @(0x1234:16,r1.w),er1 ; 7AB91234
227         test_h_gr32     0x1436, er1 ; 4s
228         mov.l   #0x01010101, er1
229         mova/l.c @(0x1234:16,r1l.b),er1 ; 7AC91234
230         test_h_gr32     0x1238, er1 ; 5s
231         mov.l   #0x01010101, er1
232         mova/l.c @(0x1234:16,r1.w),er1 ; 7AD91234
233         test_h_gr32     0x1638, er1 ; 6s
234         mov.l   #0x01010101, er1
235         mova/b.c @(0x12345678:32,r1l.b),er1 ; 7A8112345678
236         test_h_gr32     0x12345679, er1 ; 7s
237         mov.l   #0x01010101, er1
238         mova/b.c @(0x12345678:32,r1.w),er1 ; 7A9112345678
239         test_h_gr32     0x12345779, er1 ; 8s
240         mov.l   #0x01010101, er1
241         mova/w.c @(0x12345678:32,r1l.b),er1 ; 7AA112345678
242         test_h_gr32     0x1234567a, er1 ; 9s
243         mov.l   #0x01010101, er1
244         mova/w.c @(0x12345678:32,r1.w),er1 ; 7AB112345678
245         test_h_gr32     0x1234587a, er1 ; 10s
246         mov.l   #0x01010101, er1
247         mova/l.c @(0x12345678:32,r1l.b),er1 ; 7AC112345678
248         test_h_gr32     0x1234567c, er1 ; 11s
249         mov.l   #0x01010101, er1
250         mova/l.c @(0x12345678:32,r1.w),er1 ; 7AD112345678
251         test_h_gr32     0x12345a7c, er1 ; 12s
252
253 t02b:   
254         mov.l   #0x01010101, er3
255         mova/b.l @(0x1234:16,r3l.b),er1 ; 78B87A891234
256         test_h_gr32     0x1235, er1 ; 1
257         mova/b.l @(0x1234:16,r3.w),er1 ; 78397A991234
258         test_h_gr32     0x1335, er1 ; 2
259         mova/w.l @(0x1234:16,r3l.b),er1 ; 78B87AA91234
260         test_h_gr32     0x1236, er1 ; 3
261         mova/w.l @(0x1234:16,r3.w),er1 ; 78397AB91234
262         test_h_gr32     0x1436, er1 ; 4
263         mova/l.l @(0x1234:16,r3l.b),er1 ; 78B87AC91234
264         test_h_gr32     0x1238, er1 ; 5
265         mova/l.l @(0x1234:16,r3.w),er1 ; 78397AD91234
266         test_h_gr32     0x1638, er1 ; 6
267         mova/b.l @(0x12345678:32,r3l.b),er1 ; 78B87A8112345678
268         test_h_gr32     0x12345679, er1 ; 7
269         mova/b.l @(0x12345678:32,r3.w),er1 ; 78397A9112345678
270         test_h_gr32     0x12345779, er1 ; 8
271         mova/w.l @(0x12345678:32,r3l.b),er1 ; 78B87AA112345678
272         test_h_gr32     0x1234567a, er1 ; 9
273         mova/w.l @(0x12345678:32,r3.w),er1 ; 78397AB112345678
274         test_h_gr32     0x1234587a, er1 ; 10
275         mova/l.l @(0x12345678:32,r3l.b),er1 ; 78B87AC112345678
276         test_h_gr32     0x1234567c, er1 ; 11
277         mova/l.l @(0x12345678:32,r3.w),er1 ; 78397AD112345678
278         test_h_gr32     0x12345a7c, er1 ; 12
279         test_h_gr32     0x01010101, er3
280 t02c:   
281         mov.l   #foo, er2
282         mova/b.l @(0x1234:16,@er2.b),er1              ;017F02811234
283         test_h_gr32     0x1235, er1 ; 13
284         test_h_gr32     foo, er2
285         mova/b.l @(0x1234:16,@(0x1:2,er2).b),er1       ;017F12811234
286         test_h_gr32     0x1235, er1 ; 18
287         test_h_gr32     foo, er2
288         mova/b.l @(0x1234:16,@er2+.b),er1             ;017F82811234
289         test_h_gr32     0x1235, er1 ; 14
290         test_h_gr32     foo+1, er2 
291         mova/b.l @(0x1234:16,@-er2.b),er1             ;017FB2811234
292         test_h_gr32     0x1235, er1 ; 17
293         test_h_gr32     foo, er2
294         mova/b.l @(0x1234:16,@+er2.b),er1             ;017F92811234
295         test_h_gr32     0x1235, er1 ; 16
296         test_h_gr32     foo+1, er2
297         mova/b.l @(0x1234:16,@er2-.b),er1             ;017FA2811234
298         test_h_gr32     0x1235, er1 ; 15
299         test_h_gr32     foo, er2
300 t02d:
301         mov.l   #4, er2
302         mova/b.l @(0x1234:16, @(foo:16, er2).b), er1
303         test_h_gr32     0x1244, er1 ; 19
304         mova/b.l @(0x1234:16, @(foo:16, r2L.b).b), er1
305         test_h_gr32     0x1244, er1 ; 21
306         mova/b.l @(0x1234:16, @(foo:16, r2.w).b), er1
307         test_h_gr32     0x1244, er1 ; 22
308         mova/b.l @(0x1234:16, @(foo:16, er2.l).b), er1
309         test_h_gr32     0x1244, er1 ; 23
310
311         mov.l   #4, er2
312         mova/b.l @(0x1234:16, @(foo:32, er2).b), er1
313         test_h_gr32     0x1244, er1 ; 20
314         mova/b.l @(0x1234:16, @(foo:32, r2L.b).b), er1
315         test_h_gr32     0x1244, er1 ; 24
316         mova/b.l @(0x1234:16, @(foo:32, r2.w).b), er1
317         test_h_gr32     0x1244, er1 ; 25
318         mova/b.l @(0x1234:16, @(foo:32, er2.l).b), er1
319         test_h_gr32     0x1244, er1 ; 26
320
321         mova/b.l @(0x1234:16,@foo:16.b),er1
322         test_h_gr32     0x1235, er1 ; 27
323         mova/b.l @(0x1234:16,@foo:32.b),er1
324         test_h_gr32     0x1235, er1 ; 28
325
326 t02e:
327         mov.l   #foo, er2
328         mova/b.l @(0x1234:16,@er2.w),er1              ;015F02911234
329         test_h_gr32     0x1335, er1 ; 29
330         test_h_gr32     foo, er2
331         mova/b.l @(0x1234:16,@(0x2:2,er2).w),er1    ;015F12911234
332         test_h_gr32     0x1335, er1 ; 34
333         test_h_gr32     foo, er2
334         mova/b.l @(0x1234:16,@er2+.w),er1             ;015F82911234
335         test_h_gr32     0x1335, er1 ; 30
336         test_h_gr32     foo+2, er2
337         mova/b.l @(0x1234:16,@-er2.w),er1             ;015FB2911234
338         test_h_gr32     0x1335, er1 ; 33
339         test_h_gr32     foo, er2
340         mova/b.l @(0x1234:16,@+er2.w),er1             ;015F92911234
341         test_h_gr32     0x1335, er1 ; 32
342         test_h_gr32     foo+2, er2
343         mova/b.l @(0x1234:16,@er2-.w),er1             ;015FA2911234
344         test_h_gr32     0x1335, er1 ; 31
345         test_h_gr32     foo, er2
346
347         mov.l   #4, er2
348         mova/b.l @(0x1234:16, @(foo:16, er2).w), er1
349         test_h_gr32     0x2244, er1 ; 35
350         shar.l  er2
351         mova/b.l @(0x1234:16, @(foo:16, r2L.b).w), er1
352         test_h_gr32     0x2244, er1 ; 37
353         mova/b.l @(0x1234:16, @(foo:16, r2.w).w), er1
354         test_h_gr32     0x2244, er1 ; 38
355         mova/b.l @(0x1234:16, @(foo:16, er2.l).w), er1
356         test_h_gr32     0x2244, er1 ; 39
357
358         mov.l   #4, er2
359         mova/b.l @(0x1234:16, @(foo:32, er2).w), er1
360         test_h_gr32     0x2244, er1 ; 36
361         shar.l  er2
362         mova/b.l @(0x1234:16, @(foo:32, r2L.b).w), er1
363         test_h_gr32     0x2244, er1 ; 40
364         mova/b.l @(0x1234:16, @(foo:32, r2.w).w), er1
365         test_h_gr32     0x2244, er1 ; 41
366         mova/b.l @(0x1234:16, @(foo:32, er2.l).w), er1
367         test_h_gr32     0x2244, er1 ; 42
368
369         mova/b.l @(0x1234:16,@foo:16.w),er1        ;015F40919ABC1234
370         test_h_gr32     0x1335, er1 ; 43
371         mova/b.l @(0x1234:16,@foo:32.w),er1        ;015F48919ABCDEF01234
372         test_h_gr32     0x1335, er1 ; 44
373
374 t02f:
375         mov.l   #foo, er2
376         mova/w.l @(0x1234:16,@er2.b),er1           ;017F02A11234
377         test_h_gr32     0x1236, er1 ; 45
378         mova/w.l @(0x1234:16,@(0x1:2,er2).b),er1    ;017F12A11234
379         test_h_gr32     0x1236, er1 ; 50
380         mova/w.l @(0x1234:16,@er2+.b),er1          ;017F82A11234
381         test_h_gr32     0x1236, er1 ; 46
382         test_h_gr32     foo+1, er2
383         mova/w.l @(0x1234:16,@-er2.b),er1          ;017FB2A11234
384         test_h_gr32     0x1236, er1 ; 49
385         test_h_gr32     foo, er2
386         mova/w.l @(0x1234:16,@+er2.b),er1          ;017F92A11234
387         test_h_gr32     0x1236, er1 ; 48
388         test_h_gr32     foo+1, er2
389         mova/w.l @(0x1234:16,@er2-.b),er1          ;017FA2A11234
390         test_h_gr32     0x1236, er1 ; 47
391         test_h_gr32     foo, er2
392
393 t02g:
394         mov.l   #4, er2
395         mova/w.l @(0x1234:16, @(foo:16, er2).b), er1
396         test_h_gr32     0x1254, er1 ; 51
397         mova/w.l @(0x1234:16, @(foo:16, r2L.b).b), er1
398         test_h_gr32     0x1254, er1 ; 53
399         mova/w.l @(0x1234:16, @(foo:16, r2.w).b), er1
400         test_h_gr32     0x1254, er1 ; 54
401         mova/w.l @(0x1234:16, @(foo:16, er2.l).b), er1
402         test_h_gr32     0x1254, er1 ; 55
403
404         mov.l   #4, er2
405         mova/w.l @(0x1234:16, @(foo:32, er2).b), er1
406         test_h_gr32     0x1254, er1 ; 52
407         mova/w.l @(0x1234:16, @(foo:32, r2L.b).b), er1
408         test_h_gr32     0x1254, er1 ; 56
409         mova/w.l @(0x1234:16, @(foo:32, r2.w).b), er1
410         test_h_gr32     0x1254, er1 ; 57
411         mova/w.l @(0x1234:16, @(foo:32, er2.l).b), er1
412         test_h_gr32     0x1254, er1 ; 58
413
414         mova/w.l @(0x1234:16,@foo:16.b),er1        ;017F40A19ABC1234
415         test_h_gr32     0x1236, er1 ; 59 (can't test -- points into the woods)
416         mova/w.l @(0x1234:16,@foo:32.b),er1        ;017F48A19ABCDEF01234
417         test_h_gr32     0x1236, er1 ; 60 (can't test -- points into the woods)
418
419 t02h:
420         mov.l   #foo, er2
421         mova/w.l @(0x1234:16,@er2.w),er1           ;015F02B11234
422         test_h_gr32     0x1436, er1 ; 61
423         mova/w.l @(0x1234:16,@(0x2:2,er2).w),er1 ;015F12B11234
424         test_h_gr32     0x1436, er1 ; 66, 0x1234 + (@(4+foo).w << 1
425         mova/w.l @(0x1234:16,@er2+.w),er1          ;015F82B11234
426         test_h_gr32     0x1436, er1 ; 62
427         test_h_gr32     foo+2, er2
428         mova/w.l @(0x1234:16,@-er2.w),er1          ;015FB2B11234
429         test_h_gr32     0x1436, er1 ; 63
430         test_h_gr32     foo, er2 
431         mova/w.l @(0x1234:16,@+er2.w),er1          ;015F92B11234
432         test_h_gr32     0x1436, er1 ; 64
433         test_h_gr32     foo+2, er2
434         mova/w.l @(0x1234:16,@er2-.w),er1          ;015FA2B11234
435         test_h_gr32     0x1436, er1 ; 65
436         test_h_gr32     foo, er2 
437 t02i:
438         mov.l   #4, er2
439         mova/w.l @(0x1234:16, @(foo:16, er2).w), er1
440         test_h_gr32     0x3254, er1 ; 67
441         shar.l  er2
442         mova/w.l @(0x1234:16, @(foo:16, r2L.b).w), er1
443         test_h_gr32     0x3254, er1 ; 69
444         mova/w.l @(0x1234:16, @(foo:16, r2.w).w), er1
445         test_h_gr32     0x3254, er1 ; 70
446         mova/w.l @(0x1234:16, @(foo:16, er2.l).w), er1
447         test_h_gr32     0x3254, er1 ; 71
448
449         mov.l   #4, er2
450         mova/w.l @(0x1234:16, @(foo:32, er2).w), er1
451         test_h_gr32     0x3254, er1 ; 68
452         shar.l  er2
453         mova/w.l @(0x1234:16, @(foo:32, r2L.b).w), er1
454         test_h_gr32     0x3254, er1 ; 72
455         mova/w.l @(0x1234:16, @(foo:32, r2.w).w), er1
456         test_h_gr32     0x3254, er1 ; 73
457         mova/w.l @(0x1234:16, @(foo:32, er2.l).w), er1
458         test_h_gr32     0x3254, er1 ; 74
459
460         mova/w.l @(0x1234:16,@foo:16.w),er1        ;015F40B19ABC1234
461         test_h_gr32     0x1436, er1 ; 75 (can't test -- points into the woods)
462         mova/w.l @(0x1234:16,@foo:32.w),er1        ;015F48B19ABCDEF01234
463         test_h_gr32     0x1436, er1 ; 76 (can't test -- points into the woods)
464
465 t02j:
466         mov.l   #foo, er2
467         mova/l.l @(0x1234:16,@er2.b),er1           ;017F02C11234
468         test_h_gr32     0x1238, er1 ; 77
469         mova/l.l @(0x1234:16,@(0x1:2,er2).b),er1    ;017F12C11234
470         test_h_gr32     0x1238, er1 ; 82
471         mova/l.l @(0x1234:16,@er2+.b),er1          ;017F82C11234
472         test_h_gr32     0x1238, er1 ; 78
473         test_h_gr32     foo+1, er2
474         mova/l.l @(0x1234:16,@-er2.b),er1          ;017FB2C11234
475         test_h_gr32     0x1238, er1 ; 79
476         test_h_gr32     foo, er2
477         mova/l.l @(0x1234:16,@+er2.b),er1          ;017F92C11234
478         test_h_gr32     0x1238, er1 ; 80
479         test_h_gr32     foo+1, er2
480         mova/l.l @(0x1234:16,@er2-.b),er1          ;017FA2C11234
481         test_h_gr32     0x1238, er1 ; 81
482         test_h_gr32     foo, er2
483
484 t02k:
485         mov.l   #4, er2
486         mova/l.l @(0x1234:16, @(foo:16, er2).b), er1
487         test_h_gr32     0x1274, er1 ; 83
488         mova/l.l @(0x1234:16, @(foo:16, r2L.b).b), er1
489         test_h_gr32     0x1274, er1 ; 85
490         mova/l.l @(0x1234:16, @(foo:16, r2.w).b), er1
491         test_h_gr32     0x1274, er1 ; 86
492         mova/l.l @(0x1234:16, @(foo:16, er2.l).b), er1
493         test_h_gr32     0x1274, er1 ; 87
494
495         mov.l   #4, er2
496         mova/l.l @(0x1234:16, @(foo:32, er2).b), er1
497         test_h_gr32     0x1274, er1 ; 84
498         mova/l.l @(0x1234:16, @(foo:32, r2L.b).b), er1
499         test_h_gr32     0x1274, er1 ; 88
500         mova/l.l @(0x1234:16, @(foo:32, r2.w).b), er1
501         test_h_gr32     0x1274, er1 ; 89
502         mova/l.l @(0x1234:16, @(foo:32, er2.l).b), er1
503         test_h_gr32     0x1274, er1 ; 90
504
505         mova/l.l @(0x1234:16,@foo:16.b),er1        ;017F40C19ABC1234
506         test_h_gr32     0x1238, er1 ; 91 (can't test -- points into the woods)
507         mova/l.l @(0x1234:16,@foo:32.b),er1        ;017F48C19ABCDEF01234
508         test_h_gr32     0x1238, er1 ; 92 (can't test -- points into the woods)
509
510 t02l:
511         mov.l   #foo, er2
512         mova/l.l @(0x1234:16,@er2.w),er1           ;015F02D11234
513         test_h_gr32     0x1638, er1 ; 93
514         mova/l.l @(0x1234:16,@(0x2:2,er2).w),er1   ;015F12D11234
515         test_h_gr32     0x1638, er1 ; 98 
516         mova/l.l @(0x1234:16,@er2+.w),er1          ;015F82D11234
517         test_h_gr32     0x1638, er1 ; 94
518         test_h_gr32     foo+2, er2
519         mova/l.l @(0x1234:16,@-er2.w),er1          ;015FB2D11234
520         test_h_gr32     0x1638, er1 ; 97
521         test_h_gr32     foo, er2
522         mova/l.l @(0x1234:16,@+er2.w),er1          ;015F92D11234
523         test_h_gr32     0x1638, er1 ; 96
524         test_h_gr32     foo+2, er2
525         mova/l.l @(0x1234:16,@er2-.w),er1          ;015FA2D11234
526         test_h_gr32     0x1638, er1 ; 95
527         test_h_gr32     foo, er2
528
529 t02o:
530         mov.l   #4, er2
531         mova/l.l @(0x1234:16, @(foo:16, er2).w), er1
532         test_h_gr32     0x5274, er1 ; 99
533         shar.l  er2
534         mova/l.l @(0x1234:16, @(foo:16, r2L.b).w), er1
535         test_h_gr32     0x5274, er1 ; 101
536         mova/l.l @(0x1234:16, @(foo:16, r2.w).w), er1
537         test_h_gr32     0x5274, er1 ; 102
538         mova/l.l @(0x1234:16, @(foo:16, er2.l).w), er1
539         test_h_gr32     0x5274, er1 ; 103
540
541         mov.l   #4, er2
542         mova/l.l @(0x1234:16, @(foo:32, er2).w), er1
543         test_h_gr32     0x5274, er1 ; 100
544         shar.l  er2
545         mova/l.l @(0x1234:16, @(foo:32, r2L.b).w), er1
546         test_h_gr32     0x5274, er1 ; 104
547         mova/l.l @(0x1234:16, @(foo:32, r2.w).w), er1
548         test_h_gr32     0x5274, er1 ; 105
549         mova/l.l @(0x1234:16, @(foo:32, er2.l).w), er1
550         test_h_gr32     0x5274, er1 ; 106
551
552         mova/l.l @(0x1234:16,@foo:16.w),er1        ;015F40D19ABC1234
553         test_h_gr32     0x1638, er1 ; 107 (can't test -- points into the woods)
554         mova/l.l @(0x1234:16,@foo:32.w),er1        ;015F48D19ABCDEF01234
555         test_h_gr32     0x1638, er1 ; 108 (can't test -- points into the woods)
556
557 t02p:
558         mov.l   #foo, er2
559         mova/b.l @(0x12345678:32,@er2.b),er1              ;017F028912345678
560         test_h_gr32     0x12345679, er1 ; 109
561         mova/b.l @(0x12345678:32,@(0x1:2,er2).b),er1      ;017F128912345678
562         test_h_gr32     0x12345679, er1 ; 114
563         mova/b.l @(0x12345678:32,@er2+.b),er1             ;017F828912345678
564         test_h_gr32     0x12345679, er1 ; 110
565         test_h_gr32     foo+1, er2
566         mova/b.l @(0x12345678:32,@-er2.b),er1             ;017FB28912345678
567         test_h_gr32     0x12345679, er1 ; 113
568         test_h_gr32     foo, er2
569         mova/b.l @(0x12345678:32,@+er2.b),er1             ;017F928912345678
570         test_h_gr32     0x12345679, er1 ; 112
571         test_h_gr32     foo+1, er2
572         mova/b.l @(0x12345678:32,@er2-.b),er1             ;017FA28912345678
573         test_h_gr32     0x12345679, er1 ; 111
574         test_h_gr32     foo, er2
575
576 t02q:
577         mov.l   #4, er2
578         mova/b.l @(0x12345678:32, @(foo:16, er2).b), er1
579         test_h_gr32     0x12345688, er1 ; 115
580         mova/b.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
581         test_h_gr32     0x12345688, er1 ; 117
582         mova/b.l @(0x12345678:32, @(foo:16, r2.w).b), er1
583         test_h_gr32     0x12345688, er1 ; 118
584         mova/b.l @(0x12345678:32, @(foo:16, er2.l).b), er1
585         test_h_gr32     0x12345688, er1 ; 119
586
587         mov.l   #4, er2
588         mova/b.l @(0x12345678:32, @(foo:32, er2).b), er1
589         test_h_gr32     0x12345688, er1 ; 116
590         mova/b.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
591         test_h_gr32     0x12345688, er1 ; 120
592         mova/b.l @(0x12345678:32, @(foo:32, r2.w).b), er1
593         test_h_gr32     0x12345688, er1 ; 121
594         mova/b.l @(0x12345678:32, @(foo:32, er2.l).b), er1
595         test_h_gr32     0x12345688, er1 ; 122
596
597         mova/b.l @(0x12345678:32,@foo:16.b),er1
598         test_h_gr32     0x12345679, er1 ; 123
599         mova/b.l @(0x12345678:32,@foo:32.b),er1
600         test_h_gr32     0x12345679, er1 ; 124
601
602 t02r:
603         mov.l   #foo, er2
604         mova/b.l @(0x12345678:32,@er2.w),er1              ;015F029912345678
605         test_h_gr32     0x12345779, er1 ; 125
606         mova/b.l @(0x12345678:32,@(0x2:2,er2).w),er1      ;015F129912345678
607         test_h_gr32     0x12345779, er1 ; 130
608         mova/b.l @(0x12345678:32,@er2+.w),er1             ;015F829912345678
609         test_h_gr32     0x12345779, er1 ; 126
610         test_h_gr32     foo+2, er2
611         mova/b.l @(0x12345678:32,@-er2.w),er1             ;015FB29912345678
612         test_h_gr32     0x12345779, er1 ; 129
613         test_h_gr32     foo, er2
614         mova/b.l @(0x12345678:32,@+er2.w),er1             ;015F929912345678
615         test_h_gr32     0x12345779, er1 ; 128
616         test_h_gr32     foo+2, er2
617         mova/b.l @(0x12345678:32,@er2-.w),er1             ;015FA29912345678
618         test_h_gr32     0x12345779, er1 ; 127
619         test_h_gr32     foo, er2
620
621         mov.l   #4, er2
622         mova/b.l @(0x12345678:32, @(foo:16, er2).w), er1
623         test_h_gr32     0x12346688, er1 ; 131
624         shar.l  er2
625         mova/b.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
626         test_h_gr32     0x12346688, er1 ; 133
627         mova/b.l @(0x12345678:32, @(foo:16, r2.w).w), er1
628         test_h_gr32     0x12346688, er1 ; 134
629         mova/b.l @(0x12345678:32, @(foo:16, er2.l).w), er1
630         test_h_gr32     0x12346688, er1 ; 135
631
632         mov.l   #4, er2
633         mova/b.l @(0x12345678:32, @(foo:32, er2).w), er1
634         test_h_gr32     0x12346688, er1 ; 132
635         shar.l  er2
636         mova/b.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
637         test_h_gr32     0x12346688, er1 ; 136
638         mova/b.l @(0x12345678:32, @(foo:32, r2.w).w), er1
639         test_h_gr32     0x12346688, er1 ; 137
640         mova/b.l @(0x12345678:32, @(foo:32, er2.l).w), er1
641         test_h_gr32     0x12346688, er1 ; 138
642
643         mova/b.l @(0x12345678:32,@foo:16.w),er1
644         test_h_gr32     0x12345779, er1 ; 139
645         mova/b.l @(0x12345678:32,@foo:32.w),er1
646         test_h_gr32     0x12345779, er1 ; 140
647
648 t02s:
649         mov.l   #foo, er2
650         mova/w.l @(0x12345678:32,@er2.b),er1           ;017F02A912345678
651         test_h_gr32     0x1234567a, er1 ; 141
652         mova/w.l @(0x12345678:32,@(0x1:2,er2).b),er1   ;017F12A912345678
653         test_h_gr32     0x1234567a, er1 ; 146
654         mova/w.l @(0x12345678:32,@er2+.b),er1          ;017F82A912345678
655         test_h_gr32     0x1234567a, er1 ; 142
656         test_h_gr32     foo+1, er2
657         mova/w.l @(0x12345678:32,@-er2.b),er1          ;017FB2A912345678
658         test_h_gr32     0x1234567a, er1 ; 145
659         test_h_gr32     foo, er2
660         mova/w.l @(0x12345678:32,@+er2.b),er1          ;017F92A912345678
661         test_h_gr32     0x1234567a, er1 ; 144
662         test_h_gr32     foo+1, er2
663         mova/w.l @(0x12345678:32,@er2-.b),er1          ;017FA2A912345678
664         test_h_gr32     0x1234567a, er1 ; 143
665         test_h_gr32     foo, er2
666
667         mov.l   #4, er2
668         mova/w.l @(0x12345678:32, @(foo:16, er2).b), er1
669         test_h_gr32     0x12345698, er1 ; 147
670         mova/w.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
671         test_h_gr32     0x12345698, er1 ; 149
672         mova/w.l @(0x12345678:32, @(foo:16, r2.w).b), er1
673         test_h_gr32     0x12345698, er1 ; 150
674         mova/w.l @(0x12345678:32, @(foo:16, er2.l).b), er1
675         test_h_gr32     0x12345698, er1 ; 151
676
677         mov.l   #4, er2
678         mova/w.l @(0x12345678:32, @(foo:32, er2).b), er1
679         test_h_gr32     0x12345698, er1 ; 148
680         mova/w.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
681         test_h_gr32     0x12345698, er1 ; 152
682         mova/w.l @(0x12345678:32, @(foo:32, r2.w).b), er1
683         test_h_gr32     0x12345698, er1 ; 153
684         mova/w.l @(0x12345678:32, @(foo:32, er2.l).b), er1
685         test_h_gr32     0x12345698, er1 ; 154
686
687         mova/w.l @(0x12345678:32,@foo:16.b),er1
688         test_h_gr32     0x1234567a, er1 ; 155
689         mova/w.l @(0x12345678:32,@foo:32.b),er1
690         test_h_gr32     0x1234567a, er1 ; 156
691
692 t02t:
693         mov.l   #foo, er2
694         mova/w.l @(0x12345678:32,@er2.w),er1           ;015F02B912345678
695         test_h_gr32     0x1234587a, er1 ; 157
696         mova/w.l @(0x12345678:32,@(0x2:2,er2).w),er1   ;015F12B912345678
697         test_h_gr32     0x1234587a, er1 ; 162
698         mova/w.l @(0x12345678:32,@er2+.w),er1          ;015F82B912345678
699         test_h_gr32     0x1234587a, er1 ; 158
700         test_h_gr32     foo+2, er2
701         mova/w.l @(0x12345678:32,@-er2.w),er1          ;015FB2B912345678
702         test_h_gr32     0x1234587a, er1 ; 161
703         test_h_gr32     foo, er2
704         mova/w.l @(0x12345678:32,@+er2.w),er1          ;015F92B912345678
705         test_h_gr32     0x1234587a, er1 ; 160
706         test_h_gr32     foo+2, er2
707         mova/w.l @(0x12345678:32,@er2-.w),er1          ;015FA2B912345678
708         test_h_gr32     0x1234587a, er1 ; 159
709         test_h_gr32     foo, er2
710
711         mov.l   #4, er2
712         mova/w.l @(0x12345678:32, @(foo:16, er2).w), er1
713         test_h_gr32     0x12347698, er1 ; 163
714         shar.l  er2
715         mova/w.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
716         test_h_gr32     0x12347698, er1 ; 165
717         mova/w.l @(0x12345678:32, @(foo:16, r2.w).w), er1
718         test_h_gr32     0x12347698, er1 ; 166
719         mova/w.l @(0x12345678:32, @(foo:16, er2.l).w), er1
720         test_h_gr32     0x12347698, er1 ; 167
721
722         mov.l   #4, er2
723         mova/w.l @(0x12345678:32, @(foo:32, er2).w), er1
724         test_h_gr32     0x12347698, er1 ; 164
725         shar.l  er2
726         mova/w.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
727         test_h_gr32     0x12347698, er1 ; 168
728         mova/w.l @(0x12345678:32, @(foo:32, r2.w).w), er1
729         test_h_gr32     0x12347698, er1 ; 169
730         mova/w.l @(0x12345678:32, @(foo:32, er2.l).w), er1
731         test_h_gr32     0x12347698, er1 ; 170
732
733         mova/w.l @(0x12345678:32,@foo:16.w),er1
734         test_h_gr32     0x1234587a, er1 ; 171
735         mova/w.l @(0x12345678:32,@foo:32.w),er1
736         test_h_gr32     0x1234587a, er1 ; 172
737
738 t02u:
739         mov.l   #foo, er2
740         mova/l.l @(0x12345678:32,@er2.b),er1           ;017F02C912345678
741         test_h_gr32     0x1234567c, er1 ; 173
742         mova/l.l @(0x12345678:32,@(0x1:2,er2).b),er1   ;017F12C912345678
743         test_h_gr32     0x1234567c, er1 ; 178
744         mova/l.l @(0x12345678:32,@er2+.b),er1          ;017F82C912345678
745         test_h_gr32     0x1234567c, er1 ; 174
746         test_h_gr32     foo+1, er2
747         mova/l.l @(0x12345678:32,@-er2.b),er1          ;017FB2C912345678
748         test_h_gr32     0x1234567c, er1 ; 177
749         test_h_gr32     foo, er2
750         mova/l.l @(0x12345678:32,@+er2.b),er1          ;017F92C912345678
751         test_h_gr32     0x1234567c, er1 ; 176
752         test_h_gr32     foo+1, er2
753         mova/l.l @(0x12345678:32,@er2-.b),er1          ;017FA2C912345678
754         test_h_gr32     0x1234567c, er1 ; 175
755         test_h_gr32     foo, er2
756
757         mov.l   #4, er2
758         mova/l.l @(0x12345678:32, @(foo:16, er2).b), er1
759         test_h_gr32     0x123456b8, er1 ; 179
760         mova/l.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
761         test_h_gr32     0x123456b8, er1 ; 181
762         mova/l.l @(0x12345678:32, @(foo:16, r2.w).b), er1
763         test_h_gr32     0x123456b8, er1 ; 182
764         mova/l.l @(0x12345678:32, @(foo:16, er2.l).b), er1
765         test_h_gr32     0x123456b8, er1 ; 183
766
767         mov.l   #4, er2
768         mova/l.l @(0x12345678:32, @(foo:32, er2).b), er1
769         test_h_gr32     0x123456b8, er1 ; 180
770         mova/l.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
771         test_h_gr32     0x123456b8, er1 ; 184
772         mova/l.l @(0x12345678:32, @(foo:32, r2.w).b), er1
773         test_h_gr32     0x123456b8, er1 ; 185
774         mova/l.l @(0x12345678:32, @(foo:32, er2.l).b), er1
775         test_h_gr32     0x123456b8, er1 ; 186
776
777         mova/l.l @(0x12345678:32,@foo:16.b),er1
778         test_h_gr32     0x1234567c, er1 ; 187
779         mova/l.l @(0x12345678:32,@foo:32.b),er1
780         test_h_gr32     0x1234567c, er1 ; 188
781
782 t02v:
783         mov.l   #foo, er2
784         mova/l.l @(0x12345678:32,@er2.w),er1           ;015F02D912345678
785         test_h_gr32     0x12345a7c, er1 ; 189
786         mova/l.l @(0x12345678:32,@(0x2:2,er2).w),er1   ;015F12D912345678
787         test_h_gr32     0x12345a7c, er1 ; 194
788         mova/l.l @(0x12345678:32,@er2+.w),er1          ;015F82D912345678
789         test_h_gr32     0x12345a7c, er1 ; 190
790         test_h_gr32     foo+2, er2
791         mova/l.l @(0x12345678:32,@-er2.w),er1          ;015FB2D912345678
792         test_h_gr32     0x12345a7c, er1 ; 193
793         test_h_gr32     foo, er2
794         mova/l.l @(0x12345678:32,@+er2.w),er1          ;015F92D912345678
795         test_h_gr32     0x12345a7c, er1 ; 192
796         test_h_gr32     foo+2, er2
797         mova/l.l @(0x12345678:32,@er2-.w),er1          ;015FA2D912345678
798         test_h_gr32     0x12345a7c, er1 ; 191
799         test_h_gr32     foo, er2
800
801         mov.l   #4, er2
802         mova/l.l @(0x12345678:32, @(foo:16, er2).w), er1
803         test_h_gr32     0x123496b8, er1 ; 195
804         shar.l  er2
805         mova/l.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
806         test_h_gr32     0x123496b8, er1 ; 197
807         mova/l.l @(0x12345678:32, @(foo:16, r2.w).w), er1
808         test_h_gr32     0x123496b8, er1 ; 198
809         mova/l.l @(0x12345678:32, @(foo:16, er2.l).w), er1
810         test_h_gr32     0x123496b8, er1 ; 199
811
812         mov.l   #4, er2
813         mova/l.l @(0x12345678:32, @(foo:32, er2).w), er1
814         test_h_gr32     0x123496b8, er1 ; 195
815         shar.l  er2
816         mova/l.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
817         test_h_gr32     0x123496b8, er1 ; 197
818         mova/l.l @(0x12345678:32, @(foo:32, r2.w).w), er1
819         test_h_gr32     0x123496b8, er1 ; 198
820         mova/l.l @(0x12345678:32, @(foo:32, er2.l).w), er1
821         test_h_gr32     0x123496b8, er1 ; 199
822
823         mova/l.l @(0x12345678:32,@foo:16.w),er1
824         test_h_gr32     0x12345a7c, er1 ; 203
825         mova/l.l @(0x12345678:32,@foo:32.w),er1
826         test_h_gr32     0x12345a7c, er1 ; 204
827
828         test_gr_a5a5    0
829         test_h_gr32     2, er2
830         test_h_gr32     0x01010101, er3
831         test_gr_a5a5    4
832         test_gr_a5a5    5
833         test_gr_a5a5    6
834         test_gr_a5a5    7
835
836         pass
837
838         exit 0