1# Hitachi H8 testcase 'rotxr'
2# mach(): 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
16byte_dest:	.byte	0xa5
17	.align 2
18word_dest:	.word	0xa5a5
19	.align 4
20long_dest:	.long	0xa5a5a5a5
21
22	.text
23
24rotxr_b_reg8_1:
25	set_grs_a5a5		; Fill all general regs with a fixed pattern
26	set_ccr_zero
27
28	rotxr.b	r0l		; shift right arithmetic by one
29;;;	.word	0x1308
30
31	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
32	test_zero_clear
33	test_ovf_clear
34	test_neg_clear
35
36	test_h_gr16 0xa552 r0	; 1010 0101 -> 0101 0010
37.if (sim_cpu)
38	test_h_gr32 0xa5a5a552 er0
39.endif
40	test_gr_a5a5 1		; Make sure other general regs not disturbed
41	test_gr_a5a5 2
42	test_gr_a5a5 3
43	test_gr_a5a5 4
44	test_gr_a5a5 5
45	test_gr_a5a5 6
46	test_gr_a5a5 7
47
48.if (sim_cpu == h8sx)
49rotxr_b_ind_1:
50	set_grs_a5a5		; Fill all general regs with a fixed pattern
51	set_ccr_zero
52
53	mov	#byte_dest, er0
54	rotxr.b	@er0	; shift right arithmetic by one, indirect
55;;;	.word	0x7d00
56;;;	.word	0x1300
57
58	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
59	test_zero_clear
60	test_ovf_clear
61	test_neg_clear
62
63	test_h_gr32  byte_dest er0
64	test_gr_a5a5 1		; Make sure other general regs not disturbed
65	test_gr_a5a5 2
66	test_gr_a5a5 3
67	test_gr_a5a5 4
68	test_gr_a5a5 5
69	test_gr_a5a5 6
70	test_gr_a5a5 7
71	; 1010 0101 -> 0101 0010
72	cmp.b	#0x52, @byte_dest
73	beq	.Lbind1
74	fail
75.Lbind1:
76	mov	#0xa5a5a5a5, @byte_dest
77
78rotxr_b_postinc_1:
79	set_grs_a5a5		; Fill all general regs with a fixed pattern
80	set_ccr_zero
81
82	mov	#byte_dest, er0
83	rotxr.b	@er0+	; shift right arithmetic by one, postinc
84;;;	.word	0x0174
85;;;	.word	0x6c08
86;;;	.word	0x1300
87
88	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
89	test_zero_clear
90	test_ovf_clear
91	test_neg_clear
92
93	test_h_gr32  byte_dest+1 er0
94	test_gr_a5a5 1		; Make sure other general regs not disturbed
95	test_gr_a5a5 2
96	test_gr_a5a5 3
97	test_gr_a5a5 4
98	test_gr_a5a5 5
99	test_gr_a5a5 6
100	test_gr_a5a5 7
101	; 1010 0101 -> 0101 0010
102	cmp.b	#0x52, @byte_dest
103	beq	.Lbpostinc1
104	fail
105.Lbpostinc1:
106	mov	#0xa5a5a5a5, @byte_dest
107
108rotxr_b_postdec_1:
109	set_grs_a5a5		; Fill all general regs with a fixed pattern
110	set_ccr_zero
111
112	mov	#byte_dest, er0
113	rotxr.b	@er0-	; shift right arithmetic by one, postdec
114;;;	.word	0x0176
115;;;	.word	0x6c08
116;;;	.word	0x1300
117
118	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
119	test_zero_clear
120	test_ovf_clear
121	test_neg_clear
122
123	test_h_gr32  byte_dest-1 er0
124	test_gr_a5a5 1		; 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	; 1010 0101 -> 0101 0010
132	cmp.b	#0x52, @byte_dest
133	beq	.Lbpostdec1
134	fail
135.Lbpostdec1:
136	mov	#0xa5a5a5a5, @byte_dest
137
138rotxr_b_preinc_1:
139	set_grs_a5a5		; Fill all general regs with a fixed pattern
140	set_ccr_zero
141
142	mov	#byte_dest-1, er0
143	rotxr.b	@+er0	; shift right arithmetic by one, preinc
144;;;	.word	0x0175
145;;;	.word	0x6c08
146;;;	.word	0x1300
147
148	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
149	test_zero_clear
150	test_ovf_clear
151	test_neg_clear
152
153	test_h_gr32  byte_dest er0
154	test_gr_a5a5 1		; Make sure other general regs not disturbed
155	test_gr_a5a5 2
156	test_gr_a5a5 3
157	test_gr_a5a5 4
158	test_gr_a5a5 5
159	test_gr_a5a5 6
160	test_gr_a5a5 7
161	; 1010 0101 -> 0101 0010
162	cmp.b	#0x52, @byte_dest
163	beq	.Lbpreinc1
164	fail
165.Lbpreinc1:
166	mov	#0xa5a5a5a5, @byte_dest
167
168rotxr_b_predec_1:
169	set_grs_a5a5		; Fill all general regs with a fixed pattern
170	set_ccr_zero
171
172	mov	#byte_dest+1, er0
173	rotxr.b	@-er0	; shift right arithmetic by one, predec
174;;;	.word	0x0177
175;;;	.word	0x6c08
176;;;	.word	0x1300
177
178	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
179	test_zero_clear
180	test_ovf_clear
181	test_neg_clear
182
183	test_h_gr32  byte_dest er0
184	test_gr_a5a5 1		; Make sure other general regs not disturbed
185	test_gr_a5a5 2
186	test_gr_a5a5 3
187	test_gr_a5a5 4
188	test_gr_a5a5 5
189	test_gr_a5a5 6
190	test_gr_a5a5 7
191	; 1010 0101 -> 0101 0010
192	cmp.b	#0x52, @byte_dest
193	beq	.Lbpredec1
194	fail
195.Lbpredec1:
196	mov	#0xa5a5a5a5, @byte_dest
197
198rotxr_b_disp2_1:
199	set_grs_a5a5		; Fill all general regs with a fixed pattern
200	set_ccr_zero
201
202	mov	#byte_dest-2, er0
203	rotxr.b	@(2:2, er0)	; shift right arithmetic by one, disp2
204;;;	.word	0x0176
205;;;	.word	0x6808
206;;;	.word	0x1300
207
208	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
209	test_zero_clear
210	test_ovf_clear
211	test_neg_clear
212
213	test_h_gr32  byte_dest-2 er0
214	test_gr_a5a5 1		; Make sure other general regs not disturbed
215	test_gr_a5a5 2
216	test_gr_a5a5 3
217	test_gr_a5a5 4
218	test_gr_a5a5 5
219	test_gr_a5a5 6
220	test_gr_a5a5 7
221	; 1010 0101 -> 0101 0010
222	cmp.b	#0x52, @byte_dest
223	beq	.Lbdisp21
224	fail
225.Lbdisp21:
226	mov	#0xa5a5a5a5, @byte_dest
227
228rotxr_b_disp16_1:
229	set_grs_a5a5		; Fill all general regs with a fixed pattern
230	set_ccr_zero
231
232	mov	#byte_dest-44, er0
233	rotxr.b	@(44:16, er0)	; shift right arithmetic by one, disp16
234;;;	.word	0x0174
235;;;	.word	0x6e08
236;;;	.word	44
237;;;	.word	0x1300
238
239	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
240	test_zero_clear
241	test_ovf_clear
242	test_neg_clear
243
244	test_h_gr32  byte_dest-44 er0
245	test_gr_a5a5 1		; Make sure other general regs not disturbed
246	test_gr_a5a5 2
247	test_gr_a5a5 3
248	test_gr_a5a5 4
249	test_gr_a5a5 5
250	test_gr_a5a5 6
251	test_gr_a5a5 7
252	; 1010 0101 -> 0101 0010
253	cmp.b	#0x52, @byte_dest
254	beq	.Lbdisp161
255	fail
256.Lbdisp161:
257	mov	#0xa5a5a5a5, @byte_dest
258
259rotxr_b_disp32_1:
260	set_grs_a5a5		; Fill all general regs with a fixed pattern
261	set_ccr_zero
262
263	mov	#byte_dest-666, er0
264	rotxr.b	@(666:32, er0)	; shift right arithmetic by one, disp32
265;;;	.word	0x7884
266;;;	.word	0x6a28
267;;; 	.long	666
268;;;	.word	0x1300
269
270	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
271	test_zero_clear
272	test_ovf_clear
273	test_neg_clear
274
275	test_h_gr32  byte_dest-666 er0
276	test_gr_a5a5 1		; Make sure other general regs not disturbed
277	test_gr_a5a5 2
278	test_gr_a5a5 3
279	test_gr_a5a5 4
280	test_gr_a5a5 5
281	test_gr_a5a5 6
282	test_gr_a5a5 7
283	; 1010 0101 -> 0101 0010
284	cmp.b	#0x52, @byte_dest
285	beq	.Lbdisp321
286	fail
287.Lbdisp321:
288	mov	#0xa5a5a5a5, @byte_dest
289
290rotxr_b_abs16_1:
291	set_grs_a5a5		; Fill all general regs with a fixed pattern
292	set_ccr_zero
293
294	rotxr.b	@byte_dest:16	; shift right arithmetic by one, abs16
295;;;	.word	0x6a18
296;;;	.word	byte_dest
297;;;	.word	0x1300
298
299	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
300	test_zero_clear
301	test_ovf_clear
302	test_neg_clear
303
304	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
305	test_gr_a5a5 2
306	test_gr_a5a5 2
307	test_gr_a5a5 3
308	test_gr_a5a5 4
309	test_gr_a5a5 5
310	test_gr_a5a5 6
311	test_gr_a5a5 7
312	; 1010 0101 -> 0101 0010
313	cmp.b	#0x52, @byte_dest
314	beq	.Lbabs161
315	fail
316.Lbabs161:
317	mov	#0xa5a5a5a5, @byte_dest
318
319rotxr_b_abs32_1:
320	set_grs_a5a5		; Fill all general regs with a fixed pattern
321	set_ccr_zero
322
323	rotxr.b	@byte_dest:32	; shift right arithmetic by one, abs32
324;;;	.word	0x6a38
325;;; 	.long	byte_dest
326;;;	.word	0x1300
327
328	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
329	test_zero_clear
330	test_ovf_clear
331	test_neg_clear
332
333	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
334	test_gr_a5a5 2
335	test_gr_a5a5 2
336	test_gr_a5a5 3
337	test_gr_a5a5 4
338	test_gr_a5a5 5
339	test_gr_a5a5 6
340	test_gr_a5a5 7
341	; 1010 0101 -> 0101 0010
342	cmp.b	#0x52, @byte_dest
343	beq	.Lbabs321
344	fail
345.Lbabs321:
346	mov	#0xa5a5a5a5, @byte_dest
347.endif
348
349rotxr_b_reg8_2:
350	set_grs_a5a5		; Fill all general regs with a fixed pattern
351	set_ccr_zero
352
353	rotxr.b	#2, r0l		; shift right arithmetic by two
354;;;	.word	0x1348
355
356	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
357	test_zero_clear
358	test_ovf_clear
359	test_neg_set
360
361	test_h_gr16 0xa5a9 r0	; 1010 0101 -> 1010 1001
362.if (sim_cpu)
363	test_h_gr32 0xa5a5a5a9 er0
364.endif
365	test_gr_a5a5 1		; Make sure other general regs not disturbed
366	test_gr_a5a5 2
367	test_gr_a5a5 3
368	test_gr_a5a5 4
369	test_gr_a5a5 5
370	test_gr_a5a5 6
371	test_gr_a5a5 7
372
373.if (sim_cpu == h8sx)
374rotxr_b_ind_2:
375	set_grs_a5a5		; Fill all general regs with a fixed pattern
376	set_ccr_zero
377
378	mov	#byte_dest, er0
379	rotxr.b	#2, @er0	; shift right arithmetic by two, indirect
380;;;	.word	0x7d00
381;;;	.word	0x1340
382
383	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
384	test_zero_clear
385	test_ovf_clear
386	test_neg_set
387
388	test_h_gr32  byte_dest er0
389	test_gr_a5a5 1		; Make sure other general regs not disturbed
390	test_gr_a5a5 2
391	test_gr_a5a5 3
392	test_gr_a5a5 4
393	test_gr_a5a5 5
394	test_gr_a5a5 6
395	test_gr_a5a5 7
396	; 1010 0101 -> 1010 1001
397	cmp.b	#0xa9, @byte_dest
398	beq	.Lbind2
399	fail
400.Lbind2:
401	mov	#0xa5a5a5a5, @byte_dest
402
403rotxr_b_postinc_2:
404	set_grs_a5a5		; Fill all general regs with a fixed pattern
405	set_ccr_zero
406
407	mov	#byte_dest, er0
408	rotxr.b	#2, @er0+	; shift right arithmetic by two, postinc
409;;;	.word	0x0174
410;;;	.word	0x6c08
411;;;	.word	0x1340
412
413	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
414	test_zero_clear
415	test_ovf_clear
416	test_neg_set
417
418	test_h_gr32  byte_dest+1 er0
419	test_gr_a5a5 1		; Make sure other general regs not disturbed
420	test_gr_a5a5 2
421	test_gr_a5a5 3
422	test_gr_a5a5 4
423	test_gr_a5a5 5
424	test_gr_a5a5 6
425	test_gr_a5a5 7
426	; 1010 0101 -> 1010 1001
427	cmp.b	#0xa9, @byte_dest
428	beq	.Lbpostinc2
429	fail
430.Lbpostinc2:
431	mov	#0xa5a5a5a5, @byte_dest
432
433rotxr_b_postdec_2:
434	set_grs_a5a5		; Fill all general regs with a fixed pattern
435	set_ccr_zero
436
437	mov	#byte_dest, er0
438	rotxr.b	#2, @er0-	; shift right arithmetic by two, postdec
439;;;	.word	0x0176
440;;;	.word	0x6c08
441;;;	.word	0x1340
442
443	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
444	test_zero_clear
445	test_ovf_clear
446	test_neg_set
447
448	test_h_gr32  byte_dest-1 er0
449	test_gr_a5a5 1		; Make sure other general regs not disturbed
450	test_gr_a5a5 2
451	test_gr_a5a5 3
452	test_gr_a5a5 4
453	test_gr_a5a5 5
454	test_gr_a5a5 6
455	test_gr_a5a5 7
456	; 1010 0101 -> 1010 1001
457	cmp.b	#0xa9, @byte_dest
458	beq	.Lbpostdec2
459	fail
460.Lbpostdec2:
461	mov	#0xa5a5a5a5, @byte_dest
462
463rotxr_b_preinc_2:
464	set_grs_a5a5		; Fill all general regs with a fixed pattern
465	set_ccr_zero
466
467	mov	#byte_dest-1, er0
468	rotxr.b	#2, @+er0	; shift right arithmetic by two, preinc
469;;;	.word	0x0175
470;;;	.word	0x6c08
471;;;	.word	0x1340
472
473	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
474	test_zero_clear
475	test_ovf_clear
476	test_neg_set
477
478	test_h_gr32  byte_dest er0
479	test_gr_a5a5 1		; Make sure other general regs not disturbed
480	test_gr_a5a5 2
481	test_gr_a5a5 3
482	test_gr_a5a5 4
483	test_gr_a5a5 5
484	test_gr_a5a5 6
485	test_gr_a5a5 7
486	; 1010 0101 -> 1010 1001
487	cmp.b	#0xa9, @byte_dest
488	beq	.Lbpreinc2
489	fail
490.Lbpreinc2:
491	mov	#0xa5a5a5a5, @byte_dest
492
493rotxr_b_predec_2:
494	set_grs_a5a5		; Fill all general regs with a fixed pattern
495	set_ccr_zero
496
497	mov	#byte_dest+1, er0
498	rotxr.b	#2, @-er0	; shift right arithmetic by two, predec
499;;;	.word	0x0177
500;;;	.word	0x6c08
501;;;	.word	0x1340
502
503	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
504	test_zero_clear
505	test_ovf_clear
506	test_neg_set
507
508	test_h_gr32  byte_dest er0
509	test_gr_a5a5 1		; Make sure other general regs not disturbed
510	test_gr_a5a5 2
511	test_gr_a5a5 3
512	test_gr_a5a5 4
513	test_gr_a5a5 5
514	test_gr_a5a5 6
515	test_gr_a5a5 7
516	; 1010 0101 -> 1010 1001
517	cmp.b	#0xa9, @byte_dest
518	beq	.Lbpredec2
519	fail
520.Lbpredec2:
521	mov	#0xa5a5a5a5, @byte_dest
522
523rotxr_b_disp2_2:
524	set_grs_a5a5		; Fill all general regs with a fixed pattern
525	set_ccr_zero
526
527	mov	#byte_dest-2, er0
528	rotxr.b	#2, @(2:2, er0)	; shift right arithmetic by two, disp2
529;;;	.word	0x0176
530;;;	.word	0x6808
531;;;	.word	0x1340
532
533	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
534	test_zero_clear
535	test_ovf_clear
536	test_neg_set
537
538	test_h_gr32  byte_dest-2 er0
539	test_gr_a5a5 1		; Make sure other general regs not disturbed
540	test_gr_a5a5 2
541	test_gr_a5a5 3
542	test_gr_a5a5 4
543	test_gr_a5a5 5
544	test_gr_a5a5 6
545	test_gr_a5a5 7
546	; 1010 0101 -> 1010 1001
547	cmp.b	#0xa9, @byte_dest
548	beq	.Lbdisp22
549	fail
550.Lbdisp22:
551	mov	#0xa5a5a5a5, @byte_dest
552
553rotxr_b_disp16_2:
554	set_grs_a5a5		; Fill all general regs with a fixed pattern
555	set_ccr_zero
556
557	mov	#byte_dest-44, er0
558	rotxr.b	#2, @(44:16, er0)	; shift right arithmetic by two, disp16
559;;;	.word	0x0174
560;;;	.word	0x6e08
561;;;	.word	44
562;;;	.word	0x1340
563
564	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
565	test_zero_clear
566	test_ovf_clear
567	test_neg_set
568
569	test_h_gr32  byte_dest-44 er0
570	test_gr_a5a5 1		; Make sure other general regs not disturbed
571	test_gr_a5a5 2
572	test_gr_a5a5 3
573	test_gr_a5a5 4
574	test_gr_a5a5 5
575	test_gr_a5a5 6
576	test_gr_a5a5 7
577	; 1010 0101 -> 1010 1001
578	cmp.b	#0xa9, @byte_dest
579	beq	.Lbdisp162
580	fail
581.Lbdisp162:
582	mov	#0xa5a5a5a5, @byte_dest
583
584rotxr_b_disp32_2:
585	set_grs_a5a5		; Fill all general regs with a fixed pattern
586	set_ccr_zero
587
588	mov	#byte_dest-666, er0
589	rotxr.b	#2, @(666:32, er0)	; shift right arithmetic by two, disp32
590;;;	.word	0x7884
591;;;	.word	0x6a28
592;;; 	.long	666
593;;;	.word	0x1340
594
595	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
596	test_zero_clear
597	test_ovf_clear
598	test_neg_set
599
600	test_h_gr32  byte_dest-666 er0
601	test_gr_a5a5 1		; Make sure other general regs not disturbed
602	test_gr_a5a5 2
603	test_gr_a5a5 3
604	test_gr_a5a5 4
605	test_gr_a5a5 5
606	test_gr_a5a5 6
607	test_gr_a5a5 7
608	; 1010 0101 -> 1010 1001
609	cmp.b	#0xa9, @byte_dest
610	beq	.Lbdisp322
611	fail
612.Lbdisp322:
613	mov	#0xa5a5a5a5, @byte_dest
614
615rotxr_b_abs16_2:
616	set_grs_a5a5		; Fill all general regs with a fixed pattern
617	set_ccr_zero
618
619	rotxr.b	#2, @byte_dest:16	; shift right arithmetic by two, abs16
620;;;	.word	0x6a18
621;;;	.word	byte_dest
622;;;	.word	0x1340
623
624	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
625	test_zero_clear
626	test_ovf_clear
627	test_neg_set
628
629	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
630	test_gr_a5a5 2
631	test_gr_a5a5 2
632	test_gr_a5a5 3
633	test_gr_a5a5 4
634	test_gr_a5a5 5
635	test_gr_a5a5 6
636	test_gr_a5a5 7
637	; 1010 0101 -> 1010 1001
638	cmp.b	#0xa9, @byte_dest
639	beq	.Lbabs162
640	fail
641.Lbabs162:
642	mov	#0xa5a5a5a5, @byte_dest
643
644rotxr_b_abs32_2:
645	set_grs_a5a5		; Fill all general regs with a fixed pattern
646	set_ccr_zero
647
648	rotxr.b	#2, @byte_dest:32	; shift right arithmetic by two, abs32
649;;;	.word	0x6a38
650;;; 	.long	byte_dest
651;;;	.word	0x1340
652
653	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
654	test_zero_clear
655	test_ovf_clear
656	test_neg_set
657
658	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
659	test_gr_a5a5 2
660	test_gr_a5a5 2
661	test_gr_a5a5 3
662	test_gr_a5a5 4
663	test_gr_a5a5 5
664	test_gr_a5a5 6
665	test_gr_a5a5 7
666	; 1010 0101 -> 1010 1001
667	cmp.b	#0xa9, @byte_dest
668	beq	.Lbabs322
669	fail
670.Lbabs322:
671	mov	#0xa5a5a5a5, @byte_dest
672.endif
673
674.if (sim_cpu)			; Not available in h8300 mode
675rotxr_w_reg16_1:
676	set_grs_a5a5		; Fill all general regs with a fixed pattern
677	set_ccr_zero
678
679	rotxr.w	r0		; shift right arithmetic by one
680;;;	.word	0x1310
681
682	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
683	test_zero_clear
684	test_ovf_clear
685	test_neg_clear
686
687	test_h_gr16 0x52d2 r0	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
688	test_h_gr32 0xa5a552d2 er0
689
690	test_gr_a5a5 1		; Make sure other general regs not disturbed
691	test_gr_a5a5 2
692	test_gr_a5a5 3
693	test_gr_a5a5 4
694	test_gr_a5a5 5
695	test_gr_a5a5 6
696	test_gr_a5a5 7
697
698.if (sim_cpu == h8sx)
699rotxr_w_ind_1:
700	set_grs_a5a5		; Fill all general regs with a fixed pattern
701	set_ccr_zero
702
703	mov	#word_dest, er0
704	rotxr.w	@er0	; shift right arithmetic by one, indirect
705;;;	.word	0x7d80
706;;;	.word	0x1310
707
708	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
709	test_zero_clear
710	test_ovf_clear
711	test_neg_clear
712
713	test_h_gr32  word_dest er0
714	test_gr_a5a5 1		; Make sure other general regs not disturbed
715	test_gr_a5a5 2
716	test_gr_a5a5 3
717	test_gr_a5a5 4
718	test_gr_a5a5 5
719	test_gr_a5a5 6
720	test_gr_a5a5 7
721	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
722	cmp.w	#0x52d2, @word_dest
723	beq	.Lwind1
724	fail
725.Lwind1:
726	mov	#0xa5a5a5a5, @word_dest
727
728rotxr_w_postinc_1:
729	set_grs_a5a5		; Fill all general regs with a fixed pattern
730	set_ccr_zero
731
732	mov	#word_dest, er0
733	rotxr.w	@er0+	; shift right arithmetic by one, postinc
734;;;	.word	0x0154
735;;;	.word	0x6d08
736;;;	.word	0x1310
737
738	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
739	test_zero_clear
740	test_ovf_clear
741	test_neg_clear
742
743	test_h_gr32  word_dest+2 er0
744	test_gr_a5a5 1		; Make sure other general regs not disturbed
745	test_gr_a5a5 2
746	test_gr_a5a5 3
747	test_gr_a5a5 4
748	test_gr_a5a5 5
749	test_gr_a5a5 6
750	test_gr_a5a5 7
751	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
752	cmp.w	#0x52d2, @word_dest
753	beq	.Lwpostinc1
754	fail
755.Lwpostinc1:
756	mov	#0xa5a5a5a5, @word_dest
757
758rotxr_w_postdec_1:
759	set_grs_a5a5		; Fill all general regs with a fixed pattern
760	set_ccr_zero
761
762	mov	#word_dest, er0
763	rotxr.w	@er0-	; shift right arithmetic by one, postdec
764;;;	.word	0x0156
765;;;	.word	0x6d08
766;;;	.word	0x1310
767
768	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
769	test_zero_clear
770	test_ovf_clear
771	test_neg_clear
772
773	test_h_gr32  word_dest-2 er0
774	test_gr_a5a5 1		; Make sure other general regs not disturbed
775	test_gr_a5a5 2
776	test_gr_a5a5 3
777	test_gr_a5a5 4
778	test_gr_a5a5 5
779	test_gr_a5a5 6
780	test_gr_a5a5 7
781	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
782	cmp.w	#0x52d2, @word_dest
783	beq	.Lwpostdec1
784	fail
785.Lwpostdec1:
786	mov	#0xa5a5a5a5, @word_dest
787
788rotxr_w_preinc_1:
789	set_grs_a5a5		; Fill all general regs with a fixed pattern
790	set_ccr_zero
791
792	mov	#word_dest-2, er0
793	rotxr.w	@+er0	; shift right arithmetic by one, preinc
794;;;	.word	0x0155
795;;;	.word	0x6d08
796;;;	.word	0x1310
797
798	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
799	test_zero_clear
800	test_ovf_clear
801	test_neg_clear
802
803	test_h_gr32  word_dest er0
804	test_gr_a5a5 1		; Make sure other general regs not disturbed
805	test_gr_a5a5 2
806	test_gr_a5a5 3
807	test_gr_a5a5 4
808	test_gr_a5a5 5
809	test_gr_a5a5 6
810	test_gr_a5a5 7
811	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
812	cmp.w	#0x52d2, @word_dest
813	beq	.Lwpreinc1
814	fail
815.Lwpreinc1:
816	mov	#0xa5a5a5a5, @word_dest
817
818rotxr_w_predec_1:
819	set_grs_a5a5		; Fill all general regs with a fixed pattern
820	set_ccr_zero
821
822	mov	#word_dest+2, er0
823	rotxr.w	@-er0	; shift right arithmetic by one, predec
824;;;	.word	0x0157
825;;;	.word	0x6d08
826;;;	.word	0x1310
827
828	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
829	test_zero_clear
830	test_ovf_clear
831	test_neg_clear
832
833	test_h_gr32  word_dest er0
834	test_gr_a5a5 1		; Make sure other general regs not disturbed
835	test_gr_a5a5 2
836	test_gr_a5a5 3
837	test_gr_a5a5 4
838	test_gr_a5a5 5
839	test_gr_a5a5 6
840	test_gr_a5a5 7
841	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
842	cmp.w	#0x52d2, @word_dest
843	beq	.Lwpredec1
844	fail
845.Lwpredec1:
846	mov	#0xa5a5a5a5, @word_dest
847
848rotxr_w_disp2_1:
849	set_grs_a5a5		; Fill all general regs with a fixed pattern
850	set_ccr_zero
851
852	mov	#word_dest-4, er0
853	rotxr.w	@(4:2, er0)	; shift right arithmetic by one, disp2
854;;;	.word	0x0156
855;;;	.word	0xa908
856;;;	.word	0x1310
857
858	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
859	test_zero_clear
860	test_ovf_clear
861	test_neg_clear
862
863	test_h_gr32  word_dest-4 er0
864	test_gr_a5a5 1		; Make sure other general regs not disturbed
865	test_gr_a5a5 2
866	test_gr_a5a5 3
867	test_gr_a5a5 4
868	test_gr_a5a5 5
869	test_gr_a5a5 6
870	test_gr_a5a5 7
871	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
872	cmp.w	#0x52d2, @word_dest
873	beq	.Lwdisp21
874	fail
875.Lwdisp21:
876	mov	#0xa5a5a5a5, @word_dest
877
878rotxr_w_disp16_1:
879	set_grs_a5a5		; Fill all general regs with a fixed pattern
880	set_ccr_zero
881
882	mov	#word_dest-44, er0
883	rotxr.w	@(44:16, er0)	; shift right arithmetic by one, disp16
884;;;	.word	0x0154
885;;;	.word	0x6f08
886;;;	.word	44
887;;;	.word	0x1310
888
889	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
890	test_zero_clear
891	test_ovf_clear
892	test_neg_clear
893
894	test_h_gr32  word_dest-44 er0
895	test_gr_a5a5 1		; Make sure other general regs not disturbed
896	test_gr_a5a5 2
897	test_gr_a5a5 3
898	test_gr_a5a5 4
899	test_gr_a5a5 5
900	test_gr_a5a5 6
901	test_gr_a5a5 7
902	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
903	cmp.w	#0x52d2, @word_dest
904	beq	.Lwdisp161
905	fail
906.Lwdisp161:
907	mov	#0xa5a5a5a5, @word_dest
908
909rotxr_w_disp32_1:
910	set_grs_a5a5		; Fill all general regs with a fixed pattern
911	set_ccr_zero
912
913	mov	#word_dest-666, er0
914	rotxr.w	@(666:32, er0)	; shift right arithmetic by one, disp32
915;;;	.word	0x7884
916;;;	.word	0x6b28
917;;; 	.long	666
918;;;	.word	0x1310
919
920	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
921	test_zero_clear
922	test_ovf_clear
923	test_neg_clear
924
925	test_h_gr32  word_dest-666 er0
926	test_gr_a5a5 1		; Make sure other general regs not disturbed
927	test_gr_a5a5 2
928	test_gr_a5a5 3
929	test_gr_a5a5 4
930	test_gr_a5a5 5
931	test_gr_a5a5 6
932	test_gr_a5a5 7
933	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
934	cmp.w	#0x52d2, @word_dest
935	beq	.Lwdisp321
936	fail
937.Lwdisp321:
938	mov	#0xa5a5a5a5, @word_dest
939
940rotxr_w_abs16_1:
941	set_grs_a5a5		; Fill all general regs with a fixed pattern
942	set_ccr_zero
943
944	rotxr.w	@word_dest:16	; shift right arithmetic by one, abs16
945;;;	.word	0x6b18
946;;;	.word	word_dest
947;;;	.word	0x1310
948
949	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
950	test_zero_clear
951	test_ovf_clear
952	test_neg_clear
953
954	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
955	test_gr_a5a5 1
956	test_gr_a5a5 2
957	test_gr_a5a5 3
958	test_gr_a5a5 4
959	test_gr_a5a5 5
960	test_gr_a5a5 6
961	test_gr_a5a5 7
962	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
963	cmp.w	#0x52d2, @word_dest
964	beq	.Lwabs161
965	fail
966.Lwabs161:
967	mov	#0xa5a5a5a5, @word_dest
968
969rotxr_w_abs32_1:
970	set_grs_a5a5		; Fill all general regs with a fixed pattern
971	set_ccr_zero
972
973	rotxr.w	@word_dest:32	; shift right arithmetic by one, abs32
974;;;	.word	0x6b38
975;;; 	.long	word_dest
976;;;	.word	0x1310
977
978	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
979	test_zero_clear
980	test_ovf_clear
981	test_neg_clear
982
983	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
984	test_gr_a5a5 1
985	test_gr_a5a5 2
986	test_gr_a5a5 3
987	test_gr_a5a5 4
988	test_gr_a5a5 5
989	test_gr_a5a5 6
990	test_gr_a5a5 7
991	; 1010 0101 1010 0101 -> 0101 0010 1101 0010
992	cmp.w	#0x52d2, @word_dest
993	beq	.Lwabs321
994	fail
995.Lwabs321:
996	mov	#0xa5a5a5a5, @word_dest
997.endif
998
999rotxr_w_reg16_2:
1000	set_grs_a5a5		; Fill all general regs with a fixed pattern
1001	set_ccr_zero
1002
1003	rotxr.w	#2, r0		; shift right arithmetic by two
1004;;;	.word	0x1350
1005
1006	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1007	test_zero_clear
1008	test_ovf_clear
1009	test_neg_set
1010
1011	test_h_gr16 0xa969 r0	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1012	test_h_gr32 0xa5a5a969 er0
1013	test_gr_a5a5 1		; Make sure other general regs not disturbed
1014	test_gr_a5a5 2
1015	test_gr_a5a5 3
1016	test_gr_a5a5 4
1017	test_gr_a5a5 5
1018	test_gr_a5a5 6
1019	test_gr_a5a5 7
1020
1021.if (sim_cpu == h8sx)
1022rotxr_w_ind_2:
1023	set_grs_a5a5		; Fill all general regs with a fixed pattern
1024	set_ccr_zero
1025
1026	mov	#word_dest, er0
1027	rotxr.w	#2, @er0	; shift right arithmetic by two, indirect
1028;;;	.word	0x7d80
1029;;;	.word	0x1350
1030
1031	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1032	test_zero_clear
1033	test_ovf_clear
1034	test_neg_set
1035
1036	test_h_gr32  word_dest er0
1037	test_gr_a5a5 1		; Make sure other general regs not disturbed
1038	test_gr_a5a5 2
1039	test_gr_a5a5 3
1040	test_gr_a5a5 4
1041	test_gr_a5a5 5
1042	test_gr_a5a5 6
1043	test_gr_a5a5 7
1044	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1045	cmp.w	#0xa969, @word_dest
1046	beq	.Lwind2
1047	fail
1048.Lwind2:
1049	mov	#0xa5a5a5a5, @word_dest
1050
1051rotxr_w_postinc_2:
1052	set_grs_a5a5		; Fill all general regs with a fixed pattern
1053	set_ccr_zero
1054
1055	mov	#word_dest, er0
1056	rotxr.w	#2, @er0+	; shift right arithmetic by two, postinc
1057;;;	.word	0x0154
1058;;;	.word	0x6d08
1059;;;	.word	0x1350
1060
1061	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1062	test_zero_clear
1063	test_ovf_clear
1064	test_neg_set
1065
1066	test_h_gr32  word_dest+2 er0
1067	test_gr_a5a5 1		; Make sure other general regs not disturbed
1068	test_gr_a5a5 2
1069	test_gr_a5a5 3
1070	test_gr_a5a5 4
1071	test_gr_a5a5 5
1072	test_gr_a5a5 6
1073	test_gr_a5a5 7
1074	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1075	cmp.w	#0xa969, @word_dest
1076	beq	.Lwpostinc2
1077	fail
1078.Lwpostinc2:
1079	mov	#0xa5a5a5a5, @word_dest
1080
1081rotxr_w_postdec_2:
1082	set_grs_a5a5		; Fill all general regs with a fixed pattern
1083	set_ccr_zero
1084
1085	mov	#word_dest, er0
1086	rotxr.w	#2, @er0-	; shift right arithmetic by two, postdec
1087;;;	.word	0x0156
1088;;;	.word	0x6d08
1089;;;	.word	0x1350
1090
1091	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1092	test_zero_clear
1093	test_ovf_clear
1094	test_neg_set
1095
1096	test_h_gr32  word_dest-2 er0
1097	test_gr_a5a5 1		; Make sure other general regs not disturbed
1098	test_gr_a5a5 2
1099	test_gr_a5a5 3
1100	test_gr_a5a5 4
1101	test_gr_a5a5 5
1102	test_gr_a5a5 6
1103	test_gr_a5a5 7
1104	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1105	cmp.w	#0xa969, @word_dest
1106	beq	.Lwpostdec2
1107	fail
1108.Lwpostdec2:
1109	mov	#0xa5a5a5a5, @word_dest
1110
1111rotxr_w_preinc_2:
1112	set_grs_a5a5		; Fill all general regs with a fixed pattern
1113	set_ccr_zero
1114
1115	mov	#word_dest-2, er0
1116	rotxr.w	#2, @+er0	; shift right arithmetic by two, preinc
1117;;;	.word	0x0155
1118;;;	.word	0x6d08
1119;;;	.word	0x1350
1120
1121	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1122	test_zero_clear
1123	test_ovf_clear
1124	test_neg_set
1125
1126	test_h_gr32  word_dest er0
1127	test_gr_a5a5 1		; Make sure other general regs not disturbed
1128	test_gr_a5a5 2
1129	test_gr_a5a5 3
1130	test_gr_a5a5 4
1131	test_gr_a5a5 5
1132	test_gr_a5a5 6
1133	test_gr_a5a5 7
1134	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1135	cmp.w	#0xa969, @word_dest
1136	beq	.Lwpreinc2
1137	fail
1138.Lwpreinc2:
1139	mov	#0xa5a5a5a5, @word_dest
1140
1141rotxr_w_predec_2:
1142	set_grs_a5a5		; Fill all general regs with a fixed pattern
1143	set_ccr_zero
1144
1145	mov	#word_dest+2, er0
1146	rotxr.w	#2, @-er0	; shift right arithmetic by two, predec
1147;;;	.word	0x0157
1148;;;	.word	0x6d08
1149;;;	.word	0x1350
1150
1151	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1152	test_zero_clear
1153	test_ovf_clear
1154	test_neg_set
1155
1156	test_h_gr32  word_dest er0
1157	test_gr_a5a5 1		; Make sure other general regs not disturbed
1158	test_gr_a5a5 2
1159	test_gr_a5a5 3
1160	test_gr_a5a5 4
1161	test_gr_a5a5 5
1162	test_gr_a5a5 6
1163	test_gr_a5a5 7
1164	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1165	cmp.w	#0xa969, @word_dest
1166	beq	.Lwpredec2
1167	fail
1168.Lwpredec2:
1169	mov	#0xa5a5a5a5, @word_dest
1170
1171rotxr_w_disp2_2:
1172	set_grs_a5a5		; Fill all general regs with a fixed pattern
1173	set_ccr_zero
1174
1175	mov	#word_dest-4, er0
1176	rotxr.w	#2, @(4:2, er0)	; shift right arithmetic by two, disp2
1177;;;	.word	0x0156
1178;;;	.word	0xa908
1179;;;	.word	0x1350
1180
1181	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1182	test_zero_clear
1183	test_ovf_clear
1184	test_neg_set
1185
1186	test_h_gr32  word_dest-4 er0
1187	test_gr_a5a5 1		; Make sure other general regs not disturbed
1188	test_gr_a5a5 2
1189	test_gr_a5a5 3
1190	test_gr_a5a5 4
1191	test_gr_a5a5 5
1192	test_gr_a5a5 6
1193	test_gr_a5a5 7
1194	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1195	cmp.w	#0xa969, @word_dest
1196	beq	.Lwdisp22
1197	fail
1198.Lwdisp22:
1199	mov	#0xa5a5a5a5, @word_dest
1200
1201rotxr_w_disp16_2:
1202	set_grs_a5a5		; Fill all general regs with a fixed pattern
1203	set_ccr_zero
1204
1205	mov	#word_dest-44, er0
1206	rotxr.w	#2, @(44:16, er0)	; shift right arithmetic by two, disp16
1207;;;	.word	0x0154
1208;;;	.word	0x6f08
1209;;;	.word	44
1210;;;	.word	0x1350
1211
1212	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1213	test_zero_clear
1214	test_ovf_clear
1215	test_neg_set
1216
1217	test_h_gr32  word_dest-44 er0
1218	test_gr_a5a5 1		; Make sure other general regs not disturbed
1219	test_gr_a5a5 2
1220	test_gr_a5a5 3
1221	test_gr_a5a5 4
1222	test_gr_a5a5 5
1223	test_gr_a5a5 6
1224	test_gr_a5a5 7
1225	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1226	cmp.w	#0xa969, @word_dest
1227	beq	.Lwdisp162
1228	fail
1229.Lwdisp162:
1230	mov	#0xa5a5a5a5, @word_dest
1231
1232rotxr_w_disp32_2:
1233	set_grs_a5a5		; Fill all general regs with a fixed pattern
1234	set_ccr_zero
1235
1236	mov	#word_dest-666, er0
1237	rotxr.w	#2, @(666:32, er0)	; shift right arithmetic by two, disp32
1238;;;	.word	0x7884
1239;;;	.word	0x6b28
1240;;; 	.long	666
1241;;;	.word	0x1350
1242
1243	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1244	test_zero_clear
1245	test_ovf_clear
1246	test_neg_set
1247
1248	test_h_gr32  word_dest-666 er0
1249	test_gr_a5a5 1		; Make sure other general regs not disturbed
1250	test_gr_a5a5 2
1251	test_gr_a5a5 3
1252	test_gr_a5a5 4
1253	test_gr_a5a5 5
1254	test_gr_a5a5 6
1255	test_gr_a5a5 7
1256	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1257	cmp.w	#0xa969, @word_dest
1258	beq	.Lwdisp322
1259	fail
1260.Lwdisp322:
1261	mov	#0xa5a5a5a5, @word_dest
1262
1263rotxr_w_abs16_2:
1264	set_grs_a5a5		; Fill all general regs with a fixed pattern
1265	set_ccr_zero
1266
1267	rotxr.w	#2, @word_dest:16	; shift right arithmetic by two, abs16
1268;;;	.word	0x6b18
1269;;;	.word	word_dest
1270;;;	.word	0x1350
1271
1272	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1273	test_zero_clear
1274	test_ovf_clear
1275	test_neg_set
1276
1277	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1278	test_gr_a5a5 2
1279	test_gr_a5a5 2
1280	test_gr_a5a5 3
1281	test_gr_a5a5 4
1282	test_gr_a5a5 5
1283	test_gr_a5a5 6
1284	test_gr_a5a5 7
1285	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1286	cmp.w	#0xa969, @word_dest
1287	beq	.Lwabs162
1288	fail
1289.Lwabs162:
1290	mov	#0xa5a5a5a5, @word_dest
1291
1292rotxr_w_abs32_2:
1293	set_grs_a5a5		; Fill all general regs with a fixed pattern
1294	set_ccr_zero
1295
1296	rotxr.w	#2, @word_dest:32	; shift right arithmetic by two, abs32
1297;;;	.word	0x6b38
1298;;; 	.long	word_dest
1299;;;	.word	0x1350
1300
1301	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1302	test_zero_clear
1303	test_ovf_clear
1304	test_neg_set
1305
1306	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1307	test_gr_a5a5 2
1308	test_gr_a5a5 2
1309	test_gr_a5a5 3
1310	test_gr_a5a5 4
1311	test_gr_a5a5 5
1312	test_gr_a5a5 6
1313	test_gr_a5a5 7
1314	; 1010 0101 1010 0101 -> 1010 1001 0110 1001
1315	cmp.w	#0xa969, @word_dest
1316	beq	.Lwabs322
1317	fail
1318.Lwabs322:
1319	mov	#0xa5a5a5a5, @word_dest
1320.endif
1321
1322rotxr_l_reg32_1:
1323	set_grs_a5a5		; Fill all general regs with a fixed pattern
1324	set_ccr_zero
1325
1326	rotxr.l	er0		; shift right arithmetic by one, register
1327;;;	.word	0x1330
1328
1329	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1330	test_zero_clear
1331	test_ovf_clear
1332	test_neg_clear
1333
1334	; 1010 0101 1010 0101 1010 0101 1010 0101
1335	; -> 0101 0010 1101 0010 1101 0010 1101 0010
1336	test_h_gr32  0x52d2d2d2 er0
1337
1338	test_gr_a5a5 1		; Make sure other general regs not disturbed
1339	test_gr_a5a5 2
1340	test_gr_a5a5 3
1341	test_gr_a5a5 4
1342	test_gr_a5a5 5
1343	test_gr_a5a5 6
1344	test_gr_a5a5 7
1345
1346.if (sim_cpu == h8sx)
1347rotxr_l_ind_1:
1348	set_grs_a5a5		; Fill all general regs with a fixed pattern
1349	set_ccr_zero
1350
1351	mov	#long_dest, er0
1352	rotxr.l	@er0	; shift right arithmetic by one, indirect
1353;;;	.word	0x0104
1354;;;	.word	0xa908
1355;;;	.word	0x1330
1356
1357	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1358	test_zero_clear
1359	test_ovf_clear
1360	test_neg_clear
1361
1362	test_h_gr32  long_dest er0
1363	test_gr_a5a5 1		; Make sure other general regs not disturbed
1364	test_gr_a5a5 2
1365	test_gr_a5a5 3
1366	test_gr_a5a5 4
1367	test_gr_a5a5 5
1368	test_gr_a5a5 6
1369	test_gr_a5a5 7
1370	; 1010 0101 1010 0101 1010 0101 1010 0101
1371	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1372	cmp.l	#0x52d2d2d2, @long_dest
1373	beq	.Llind1
1374	fail
1375.Llind1:
1376	mov	#0xa5a5a5a5, @long_dest
1377
1378rotxr_l_postinc_1:
1379	set_grs_a5a5		; Fill all general regs with a fixed pattern
1380	set_ccr_zero
1381
1382	mov	#long_dest, er0
1383	rotxr.l	@er0+	; shift right arithmetic by one, postinc
1384;;;	.word	0x0104
1385;;;	.word	0x6d08
1386;;;	.word	0x1330
1387
1388	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1389	test_zero_clear
1390	test_ovf_clear
1391	test_neg_clear
1392
1393	test_h_gr32  long_dest+4 er0
1394	test_gr_a5a5 1		; Make sure other general regs not disturbed
1395	test_gr_a5a5 2
1396	test_gr_a5a5 3
1397	test_gr_a5a5 4
1398	test_gr_a5a5 5
1399	test_gr_a5a5 6
1400	test_gr_a5a5 7
1401	; 1010 0101 1010 0101 1010 0101 1010 0101
1402	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1403	cmp.l	#0x52d2d2d2, @long_dest
1404	beq	.Llpostinc1
1405	fail
1406.Llpostinc1:
1407	mov	#0xa5a5a5a5, @long_dest
1408
1409rotxr_l_postdec_1:
1410	set_grs_a5a5		; Fill all general regs with a fixed pattern
1411	set_ccr_zero
1412
1413	mov	#long_dest, er0
1414	rotxr.l	@er0-	; shift right arithmetic by one, postdec
1415;;;	.word	0x0106
1416;;;	.word	0x6d08
1417;;;	.word	0x1330
1418
1419	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1420	test_zero_clear
1421	test_ovf_clear
1422	test_neg_clear
1423
1424	test_h_gr32  long_dest-4 er0
1425	test_gr_a5a5 1		; Make sure other general regs not disturbed
1426	test_gr_a5a5 2
1427	test_gr_a5a5 3
1428	test_gr_a5a5 4
1429	test_gr_a5a5 5
1430	test_gr_a5a5 6
1431	test_gr_a5a5 7
1432	; 1010 0101 1010 0101 1010 0101 1010 0101
1433	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1434	cmp.l	#0x52d2d2d2, @long_dest
1435	beq	.Llpostdec1
1436	fail
1437.Llpostdec1:
1438	mov	#0xa5a5a5a5, @long_dest
1439
1440rotxr_l_preinc_1:
1441	set_grs_a5a5		; Fill all general regs with a fixed pattern
1442	set_ccr_zero
1443
1444	mov	#long_dest-4, er0
1445	rotxr.l	@+er0	; shift right arithmetic by one, preinc
1446;;;	.word	0x0105
1447;;;	.word	0x6d08
1448;;;	.word	0x1330
1449
1450	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1451	test_zero_clear
1452	test_ovf_clear
1453	test_neg_clear
1454
1455	test_h_gr32  long_dest er0
1456	test_gr_a5a5 1		; Make sure other general regs not disturbed
1457	test_gr_a5a5 2
1458	test_gr_a5a5 3
1459	test_gr_a5a5 4
1460	test_gr_a5a5 5
1461	test_gr_a5a5 6
1462	test_gr_a5a5 7
1463	; 1010 0101 1010 0101 1010 0101 1010 0101
1464	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1465	cmp.l	#0x52d2d2d2, @long_dest
1466	beq	.Llpreinc1
1467	fail
1468.Llpreinc1:
1469	mov	#0xa5a5a5a5, @long_dest
1470
1471rotxr_l_predec_1:
1472	set_grs_a5a5		; Fill all general regs with a fixed pattern
1473	set_ccr_zero
1474
1475	mov	#long_dest+4, er0
1476	rotxr.l	@-er0	; shift right arithmetic by one, predec
1477;;;	.word	0x0107
1478;;;	.word	0x6d08
1479;;;	.word	0x1330
1480
1481	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1482	test_zero_clear
1483	test_ovf_clear
1484	test_neg_clear
1485
1486	test_h_gr32  long_dest er0
1487	test_gr_a5a5 1		; Make sure other general regs not disturbed
1488	test_gr_a5a5 2
1489	test_gr_a5a5 3
1490	test_gr_a5a5 4
1491	test_gr_a5a5 5
1492	test_gr_a5a5 6
1493	test_gr_a5a5 7
1494	; 1010 0101 1010 0101 1010 0101 1010 0101
1495	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1496	cmp.l	#0x52d2d2d2, @long_dest
1497	beq	.Llpredec1
1498	fail
1499.Llpredec1:
1500	mov	#0xa5a5a5a5, @long_dest
1501
1502rotxr_l_disp2_1:
1503	set_grs_a5a5		; Fill all general regs with a fixed pattern
1504	set_ccr_zero
1505
1506	mov	#long_dest-8, er0
1507	rotxr.l	@(8:2, er0)	; shift right arithmetic by one, disp2
1508;;;	.word	0x0106
1509;;;	.word	0xa908
1510;;;	.word	0x1330
1511
1512	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1513	test_zero_clear
1514	test_ovf_clear
1515	test_neg_clear
1516
1517	test_h_gr32  long_dest-8 er0
1518	test_gr_a5a5 1		; Make sure other general regs not disturbed
1519	test_gr_a5a5 2
1520	test_gr_a5a5 3
1521	test_gr_a5a5 4
1522	test_gr_a5a5 5
1523	test_gr_a5a5 6
1524	test_gr_a5a5 7
1525	; 1010 0101 1010 0101 1010 0101 1010 0101
1526	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1527	cmp.l	#0x52d2d2d2, @long_dest
1528	beq	.Lldisp21
1529	fail
1530.Lldisp21:
1531	mov	#0xa5a5a5a5, @long_dest
1532
1533rotxr_l_disp16_1:
1534	set_grs_a5a5		; Fill all general regs with a fixed pattern
1535	set_ccr_zero
1536
1537	mov	#long_dest-44, er0
1538	rotxr.l	@(44:16, er0)	; shift right arithmetic by one, disp16
1539;;;	.word	0x0104
1540;;;	.word	0x6f08
1541;;;	.word	44
1542;;;	.word	0x1330
1543
1544	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1545	test_zero_clear
1546	test_ovf_clear
1547	test_neg_clear
1548
1549	test_h_gr32  long_dest-44 er0
1550	test_gr_a5a5 1		; Make sure other general regs not disturbed
1551	test_gr_a5a5 2
1552	test_gr_a5a5 3
1553	test_gr_a5a5 4
1554	test_gr_a5a5 5
1555	test_gr_a5a5 6
1556	test_gr_a5a5 7
1557	; 1010 0101 1010 0101 1010 0101 1010 0101
1558	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1559	cmp.l	#0x52d2d2d2, @long_dest
1560	beq	.Lldisp161
1561	fail
1562.Lldisp161:
1563	mov	#0xa5a5a5a5, @long_dest
1564
1565rotxr_l_disp32_1:
1566	set_grs_a5a5		; Fill all general regs with a fixed pattern
1567	set_ccr_zero
1568
1569	mov	#long_dest-666, er0
1570	rotxr.l	@(666:32, er0)	; shift right arithmetic by one, disp32
1571;;;	.word	0x7884
1572;;;	.word	0x6b28
1573;;; 	.long	666
1574;;;	.word	0x1330
1575
1576	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1577	test_zero_clear
1578	test_ovf_clear
1579	test_neg_clear
1580
1581	test_h_gr32  long_dest-666 er0
1582	test_gr_a5a5 1		; Make sure other general regs not disturbed
1583	test_gr_a5a5 2
1584	test_gr_a5a5 3
1585	test_gr_a5a5 4
1586	test_gr_a5a5 5
1587	test_gr_a5a5 6
1588	test_gr_a5a5 7
1589	; 1010 0101 1010 0101 1010 0101 1010 0101
1590	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1591	cmp.l	#0x52d2d2d2, @long_dest
1592	beq	.Lldisp321
1593	fail
1594.Lldisp321:
1595	mov	#0xa5a5a5a5, @long_dest
1596
1597rotxr_l_abs16_1:
1598	set_grs_a5a5		; Fill all general regs with a fixed pattern
1599	set_ccr_zero
1600
1601	rotxr.l	@long_dest:16	; shift right arithmetic by one, abs16
1602;;;	.word	0x0104
1603;;;	.word	0x6b08
1604;;;	.word	long_dest
1605;;;	.word	0x1330
1606
1607	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1608	test_zero_clear
1609	test_ovf_clear
1610	test_neg_clear
1611
1612	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1613	test_gr_a5a5 1
1614	test_gr_a5a5 2
1615	test_gr_a5a5 3
1616	test_gr_a5a5 4
1617	test_gr_a5a5 5
1618	test_gr_a5a5 6
1619	test_gr_a5a5 7
1620	; 1010 0101 1010 0101 1010 0101 1010 0101
1621	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1622	cmp.l	#0x52d2d2d2, @long_dest
1623	beq	.Llabs161
1624	fail
1625.Llabs161:
1626	mov	#0xa5a5a5a5, @long_dest
1627
1628rotxr_l_abs32_1:
1629	set_grs_a5a5		; Fill all general regs with a fixed pattern
1630	set_ccr_zero
1631
1632	rotxr.l	@long_dest:32	; shift right arithmetic by one, abs32
1633;;;	.word	0x0104
1634;;;	.word	0x6b28
1635;;; 	.long	long_dest
1636;;;	.word	0x1330
1637
1638	test_carry_set		; H=0 N=0 Z=0 V=0 C=1
1639	test_zero_clear
1640	test_ovf_clear
1641	test_neg_clear
1642
1643	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1644	test_gr_a5a5 1
1645	test_gr_a5a5 2
1646	test_gr_a5a5 3
1647	test_gr_a5a5 4
1648	test_gr_a5a5 5
1649	test_gr_a5a5 6
1650	test_gr_a5a5 7
1651	; 1010 0101 1010 0101 1010 0101 1010 0101
1652	;; -> 0101 0010 1101 0010 1101 0010 1101 0010
1653	cmp.l	#0x52d2d2d2, @long_dest
1654	beq	.Llabs321
1655	fail
1656.Llabs321:
1657	mov	#0xa5a5a5a5, @long_dest
1658.endif
1659
1660rotxr_l_reg32_2:
1661	set_grs_a5a5		; Fill all general regs with a fixed pattern
1662	set_ccr_zero
1663
1664	rotxr.l	#2, er0		; shift right arithmetic by two, register
1665;;;	.word	0x1370
1666
1667	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1668	test_zero_clear
1669	test_ovf_clear
1670	test_neg_set
1671	; 1010 0101 1010 0101 1010 0101 1010 0101
1672	; -> 1010 1001 0110 1001 0110 1001 0110 1001
1673	test_h_gr32  0xa9696969 er0
1674
1675	test_gr_a5a5 1		; Make sure other general regs not disturbed
1676	test_gr_a5a5 2
1677	test_gr_a5a5 3
1678	test_gr_a5a5 4
1679	test_gr_a5a5 5
1680	test_gr_a5a5 6
1681	test_gr_a5a5 7
1682
1683.if (sim_cpu == h8sx)
1684
1685rotxr_l_ind_2:
1686	set_grs_a5a5		; Fill all general regs with a fixed pattern
1687	set_ccr_zero
1688
1689	mov	#long_dest, er0
1690	rotxr.l	#2, @er0	; shift right arithmetic by two, indirect
1691;;;	.word	0x0104
1692;;;	.word	0xa908
1693;;;	.word	0x1370
1694
1695	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1696	test_zero_clear
1697	test_ovf_clear
1698	test_neg_set
1699
1700	test_h_gr32  long_dest er0
1701	test_gr_a5a5 1		; Make sure other general regs not disturbed
1702	test_gr_a5a5 2
1703	test_gr_a5a5 3
1704	test_gr_a5a5 4
1705	test_gr_a5a5 5
1706	test_gr_a5a5 6
1707	test_gr_a5a5 7
1708	; 1010 0101 1010 0101 1010 0101 1010 0101
1709	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1710	cmp.l	#0xa9696969, @long_dest
1711	beq	.Llind2
1712	fail
1713.Llind2:
1714	mov	#0xa5a5a5a5, @long_dest
1715
1716rotxr_l_postinc_2:
1717	set_grs_a5a5		; Fill all general regs with a fixed pattern
1718	set_ccr_zero
1719
1720	mov	#long_dest, er0
1721	rotxr.l	#2, @er0+	; shift right arithmetic by two, postinc
1722;;;	.word	0x0104
1723;;;	.word	0x6d08
1724;;;	.word	0x1370
1725
1726	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1727	test_zero_clear
1728	test_ovf_clear
1729	test_neg_set
1730
1731	test_h_gr32  long_dest+4 er0
1732	test_gr_a5a5 1		; Make sure other general regs not disturbed
1733	test_gr_a5a5 2
1734	test_gr_a5a5 3
1735	test_gr_a5a5 4
1736	test_gr_a5a5 5
1737	test_gr_a5a5 6
1738	test_gr_a5a5 7
1739	; 1010 0101 1010 0101 1010 0101 1010 0101
1740	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1741	cmp.l	#0xa9696969, @long_dest
1742	beq	.Llpostinc2
1743	fail
1744.Llpostinc2:
1745	mov	#0xa5a5a5a5, @long_dest
1746
1747rotxr_l_postdec_2:
1748	set_grs_a5a5		; Fill all general regs with a fixed pattern
1749	set_ccr_zero
1750
1751	mov	#long_dest, er0
1752	rotxr.l	#2, @er0-	; shift right arithmetic by two, postdec
1753;;;	.word	0x0106
1754;;;	.word	0x6d08
1755;;;	.word	0x1370
1756
1757	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1758	test_zero_clear
1759	test_ovf_clear
1760	test_neg_set
1761
1762	test_h_gr32  long_dest-4 er0
1763	test_gr_a5a5 1		; Make sure other general regs not disturbed
1764	test_gr_a5a5 2
1765	test_gr_a5a5 3
1766	test_gr_a5a5 4
1767	test_gr_a5a5 5
1768	test_gr_a5a5 6
1769	test_gr_a5a5 7
1770	; 1010 0101 1010 0101 1010 0101 1010 0101
1771	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1772	cmp.l	#0xa9696969, @long_dest
1773	beq	.Llpostdec2
1774	fail
1775.Llpostdec2:
1776	mov	#0xa5a5a5a5, @long_dest
1777
1778rotxr_l_preinc_2:
1779	set_grs_a5a5		; Fill all general regs with a fixed pattern
1780	set_ccr_zero
1781
1782	mov	#long_dest-4, er0
1783	rotxr.l	#2, @+er0	; shift right arithmetic by two, preinc
1784;;;	.word	0x0105
1785;;;	.word	0x6d08
1786;;;	.word	0x1370
1787
1788	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1789	test_zero_clear
1790	test_ovf_clear
1791	test_neg_set
1792
1793	test_h_gr32  long_dest er0
1794	test_gr_a5a5 1		; Make sure other general regs not disturbed
1795	test_gr_a5a5 2
1796	test_gr_a5a5 3
1797	test_gr_a5a5 4
1798	test_gr_a5a5 5
1799	test_gr_a5a5 6
1800	test_gr_a5a5 7
1801	; 1010 0101 1010 0101 1010 0101 1010 0101
1802	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1803	cmp.l	#0xa9696969, @long_dest
1804	beq	.Llpreinc2
1805	fail
1806.Llpreinc2:
1807	mov	#0xa5a5a5a5, @long_dest
1808
1809rotxr_l_predec_2:
1810	set_grs_a5a5		; Fill all general regs with a fixed pattern
1811	set_ccr_zero
1812
1813	mov	#long_dest+4, er0
1814	rotxr.l	#2, @-er0	; shift right arithmetic by two, predec
1815;;;	.word	0x0107
1816;;;	.word	0x6d08
1817;;;	.word	0x1370
1818
1819	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1820	test_zero_clear
1821	test_ovf_clear
1822	test_neg_set
1823
1824	test_h_gr32  long_dest er0
1825	test_gr_a5a5 1		; Make sure other general regs not disturbed
1826	test_gr_a5a5 2
1827	test_gr_a5a5 3
1828	test_gr_a5a5 4
1829	test_gr_a5a5 5
1830	test_gr_a5a5 6
1831	test_gr_a5a5 7
1832	; 1010 0101 1010 0101 1010 0101 1010 0101
1833	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1834	cmp.l	#0xa9696969, @long_dest
1835	beq	.Llpredec2
1836	fail
1837.Llpredec2:
1838	mov	#0xa5a5a5a5, @long_dest
1839
1840rotxr_l_disp2_2:
1841	set_grs_a5a5		; Fill all general regs with a fixed pattern
1842	set_ccr_zero
1843
1844	mov	#long_dest-8, er0
1845	rotxr.l	#2, @(8:2, er0)	; shift right arithmetic by two, disp2
1846;;;	.word	0x0106
1847;;;	.word	0xa908
1848;;;	.word	0x1370
1849
1850	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1851	test_zero_clear
1852	test_ovf_clear
1853	test_neg_set
1854
1855	test_h_gr32  long_dest-8 er0
1856	test_gr_a5a5 1		; Make sure other general regs not disturbed
1857	test_gr_a5a5 2
1858	test_gr_a5a5 3
1859	test_gr_a5a5 4
1860	test_gr_a5a5 5
1861	test_gr_a5a5 6
1862	test_gr_a5a5 7
1863	; 1010 0101 1010 0101 1010 0101 1010 0101
1864	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1865	cmp.l	#0xa9696969, @long_dest
1866	beq	.Lldisp22
1867	fail
1868.Lldisp22:
1869	mov	#0xa5a5a5a5, @long_dest
1870
1871rotxr_l_disp16_2:
1872	set_grs_a5a5		; Fill all general regs with a fixed pattern
1873	set_ccr_zero
1874
1875	mov	#long_dest-44, er0
1876	rotxr.l	#2, @(44:16, er0)	; shift right arithmetic by two, disp16
1877;;;	.word	0x0104
1878;;;	.word	0x6f08
1879;;;	.word	44
1880;;;	.word	0x1370
1881
1882	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1883	test_zero_clear
1884	test_ovf_clear
1885	test_neg_set
1886
1887	test_h_gr32  long_dest-44 er0
1888	test_gr_a5a5 1		; Make sure other general regs not disturbed
1889	test_gr_a5a5 2
1890	test_gr_a5a5 3
1891	test_gr_a5a5 4
1892	test_gr_a5a5 5
1893	test_gr_a5a5 6
1894	test_gr_a5a5 7
1895	; 1010 0101 1010 0101 1010 0101 1010 0101
1896	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1897	cmp.l	#0xa9696969, @long_dest
1898	beq	.Lldisp162
1899	fail
1900.Lldisp162:
1901	mov	#0xa5a5a5a5, @long_dest
1902
1903rotxr_l_disp32_2:
1904	set_grs_a5a5		; Fill all general regs with a fixed pattern
1905	set_ccr_zero
1906
1907	mov	#long_dest-666, er0
1908	rotxr.l	#2, @(666:32, er0)	; shift right arithmetic by two, disp32
1909;;;	.word	0x7884
1910;;;	.word	0x6b28
1911;;; 	.long	666
1912;;;	.word	0x1370
1913
1914	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1915	test_zero_clear
1916	test_ovf_clear
1917	test_neg_set
1918
1919	test_h_gr32  long_dest-666 er0
1920	test_gr_a5a5 1		; Make sure other general regs not disturbed
1921	test_gr_a5a5 2
1922	test_gr_a5a5 3
1923	test_gr_a5a5 4
1924	test_gr_a5a5 5
1925	test_gr_a5a5 6
1926	test_gr_a5a5 7
1927	; 1010 0101 1010 0101 1010 0101 1010 0101
1928	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1929	cmp.l	#0xa9696969, @long_dest
1930	beq	.Lldisp322
1931	fail
1932.Lldisp322:
1933	mov	#0xa5a5a5a5, @long_dest
1934
1935rotxr_l_abs16_2:
1936	set_grs_a5a5		; Fill all general regs with a fixed pattern
1937	set_ccr_zero
1938
1939	rotxr.l	#2, @long_dest:16	; shift right arithmetic by two, abs16
1940;;;	.word	0x0104
1941;;;	.word	0x6b08
1942;;;	.word	long_dest
1943;;;	.word	0x1370
1944
1945	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1946	test_zero_clear
1947	test_ovf_clear
1948	test_neg_set
1949
1950	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1951	test_gr_a5a5 1
1952	test_gr_a5a5 2
1953	test_gr_a5a5 3
1954	test_gr_a5a5 4
1955	test_gr_a5a5 5
1956	test_gr_a5a5 6
1957	test_gr_a5a5 7
1958	; 1010 0101 1010 0101 1010 0101 1010 0101
1959	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1960	cmp.l	#0xa9696969, @long_dest
1961	beq	.Llabs162
1962	fail
1963.Llabs162:
1964	mov	#0xa5a5a5a5, @long_dest
1965
1966rotxr_l_abs32_2:
1967	set_grs_a5a5		; Fill all general regs with a fixed pattern
1968	set_ccr_zero
1969
1970	rotxr.l	#2, @long_dest:32	; shift right arithmetic by two, abs32
1971;;;	.word	0x0104
1972;;;	.word	0x6b28
1973;;; 	.long	long_dest
1974;;;	.word	0x1370
1975
1976	test_carry_clear	; H=0 N=1 Z=0 V=0 C=0
1977	test_zero_clear
1978	test_ovf_clear
1979	test_neg_set
1980
1981	test_gr_a5a5 0		; Make sure ALL general regs not disturbed
1982	test_gr_a5a5 1
1983	test_gr_a5a5 2
1984	test_gr_a5a5 3
1985	test_gr_a5a5 4
1986	test_gr_a5a5 5
1987	test_gr_a5a5 6
1988	test_gr_a5a5 7
1989	; 1010 0101 1010 0101 1010 0101 1010 0101
1990	;; -> 1010 1001 0110 1001 0110 1001 0110 1001
1991	cmp.l	#0xa9696969, @long_dest
1992	beq	.Llabs322
1993	fail
1994.Llabs322:
1995	mov	#0xa5a5a5a5, @long_dest
1996
1997.endif
1998.endif
1999	pass
2000
2001	exit 0
2002
2003