xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/h8300/mova.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
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
14foo:	.long	0x01010101
15	.long	0x10101010
16	.long	0x11111111
17
18	start
19
20movabl16_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
36movabl16_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
52movabl32_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
68movabl32_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
84movawl16_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
100movawl16_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
116movawl32_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
132movawl32_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
148movall16_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
164movall16_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
180movall32_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
196movall32_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
212t02_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
253t02b:
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
280t02c:
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
300t02d:
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
326t02e:
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
374t02f:
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
393t02g:
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
419t02h:
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
437t02i:
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
465t02j:
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
484t02k:
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
510t02l:
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
529t02o:
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
557t02p:
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
576t02q:
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
602t02r:
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
648t02s:
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
692t02t:
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
738t02u:
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
782t02v:
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
839