1	.h8300s
2	.section .text
3	.align 2
4	.global _main
5	.global movb_tests
6	.global movw_tests
7	.global movl_tests
8	.global ldm_stm_tests
9	.global movfpe_movtpe_tests
10	.global add_sub_addx_subx_tests
11	.global inc_dec_adds_subs_tests
12	.global daa_das_tests
13	.global mul_div_tests
14	.global cmp_tests
15	.global neg_tests
16	.global ext_tests
17	.global tas_mac_tests
18	.global logic_operations_tests
19	.global sha_shl_tests
20	.global rot_rotx_tests
21	.global bset_bclr_tests
22	.global bnot_btst_tests
23	.global band_bor_bxor_tests
24	.global bld_bst_tests
25	.global branch_tests
26	.global system_control_tests
27	.global block_data_transfer_tests
28_main:
29	nop
30
31movb_tests:
32	mov.b	r0l,r0h
33	mov.b	#0x12,r1l
34	mov.b	@er0,r1h
35	mov.b	@(0x1234:16,er0),r2l
36	mov.b	@(0x12345678:32,er0),r2h
37	mov.b	@er0+,r3l
38	mov.b	@0x12:8,r3h
39	mov.b	@0x1234:16,r4l
40	mov.b	@0x12345678:32,r4h
41
42movw_tests:
43	mov.w	e0,r0
44	mov.w	#0x1234,r1
45	mov.w	@er0,r2
46	mov.w	@(0x1234:16,er0),r3
47	mov.w	@(0x12345678:32,er0),r4
48	mov.w	@er0+,r5
49	mov.w	@0x1234:16,r6
50	mov.w	@0x12345678:32,r7
51
52movl_tests:
53	mov.l	er0,er1
54	mov.l	#0x12345678,er1
55	mov.l	@er0,er2
56	mov.l	@(0x1234:16,er0),er3
57	mov.l	@(0x12345678:32,er0),er4
58	mov.l	@er0+,er5
59	mov.l	@0x1234:16,er6
60	mov.l	@0x12345678:32,er7
61
62ldm_stm_tests:
63	ldm.l	@sp+,er0-er1
64	ldm.l	@sp+,er0-er2
65	ldm.l	@sp+,er0-er3
66	stm.l	er0-er1,@-sp
67	stm.l	er0-er2,@-sp
68	stm.l	er0-er3,@-sp
69
70movfpe_movtpe_tests:
71	movfpe	@0x1234:16,r2l
72	movtpe	r2l,@0x1234:16
73
74add_sub_addx_subx_tests:
75	add.b	#0x12,r0l
76	add.b	r1l,r1h
77	add.w	#0x1234,r2
78	add.w	r3,r4
79	add.l	#0x12345678,er5
80	add.l	er6,er7
81	sub.b	r1l,r1h
82	sub.w	#0x1234,r2
83	sub.w	r3,r4
84	sub.l	#0x12345678,er5
85	sub.l	er6,er7
86	addx	#0x12,r0l
87	addx	r1l,r1h
88	subx	#0x12,r0l
89	subx	r1l,r1h
90
91inc_dec_adds_subs_tests:
92	inc.b	r0l
93	inc.w	#0x1,r4
94	inc.w	#0x2,r3
95	inc.l	#0x1,er2
96	inc.l	#0x2,er1
97	dec.b	r0l
98	dec.w	#0x1,r4
99	dec.w	#0x2,r3
100	dec.l	#0x1,er2
101	dec.l	#0x2,er1
102	adds	#0x1,er7
103	adds	#0x2,er6
104	adds	#0x4,er5
105	subs	#0x1,er7
106	subs	#0x2,er6
107	subs	#0x4,er5
108
109daa_das_tests:
110	daa	r0l
111	das	r0h
112
113mul_div_tests:
114	mulxs.b	r0l,r1
115	mulxs.w	r2,er3
116	mulxu.b	r0l,e1
117	mulxu.w	e2,er3
118	divxs.b	r0l,r1
119	divxs.w	r2,er3
120	divxu.b	r0l,e1
121	divxu.w	e2,er3
122
123cmp_tests:
124	cmp.b	#0x12,r0l
125	cmp.b	r1l,r1h
126	cmp.w	#0x1234,r2
127	cmp.w	r3,e3
128	cmp.l	#0x12345678,er4
129	cmp.l	er5,er6
130
131neg_tests:
132	neg.b	r0l
133	neg.w	r2
134	neg.l	er3
135
136ext_tests:
137	exts.w	r0
138	exts.l	er1
139	extu.w	r2
140	extu.l	er3
141
142tas_mac_tests:
143	tas	@er0
144	mac	@er1+,@er2+
145	clrmac
146	ldmac	er4,mach
147	ldmac	er5,macl
148	stmac	mach,er6
149	stmac	macl,er7
150
151logic_operations_tests:
152	and.b	#0x12,r0l
153	and.b	r1l,r2h
154	and.w	#0x1234,r0
155	and.w	r1,r2
156	and.l	#0x12345678,er0
157	and.l	er1,er2
158	or.b	#0x12,r0l
159	or.b	r1l,r2h
160	or.w	#0x1234,r0
161	or.w	r1,r2
162	or.l	#0x12345678,er0
163	or.l	er1,er2
164	xor.b	#0x12,r0l
165	xor.b	r1l,r2h
166	xor.w	#0x1234,r0
167	xor.w	r1,r2
168	xor.l	#0x12345678,er0
169	xor.l	er1,er2
170	not.b	r0l
171	not.w	r1
172	not.l	er2
173
174sha_shl_tests:
175	shal	r0l
176	shal	r1
177	shal	er2
178	shar	r3l
179	shar	r4
180	shar	er5
181	shll	r0l
182	shll	r1
183	shll	er2
184	shlr	r3l
185	shlr	r4
186	shlr	er5
187
188rot_rotx_tests:
189	rotl	r0l
190	rotl	r1
191	rotl	er2
192	rotr	r3l
193	rotr	r4
194	rotr	er5
195	rotxl	r0l
196	rotxl	r1
197	rotxl	er2
198	rotxr	r3l
199	rotxr	r4
200	rotxr	er5
201
202bset_bclr_tests:
203	bset	#0x7,r0l
204	bset	#0x6,@er1
205	bset	#0x5,@0x12:8
206	bset	#0x4,@0x1234:16
207	bset	#0x3,@0x12345678:32
208	bset	r7l,r0h
209	bset	r6l,@er1
210	bset	r5l,@0x12:8
211	bset	r4l,@0x1234:16
212	bset	r3l,@0x12345678:32
213	bclr	#0x7,r0l
214	bclr	#0x6,@er1
215	bclr	#0x5,@0x12:8
216	bclr	#0x4,@0x1234:16
217	bclr	#0x3,@0x12345678:32
218	bclr	r7h,r0h
219	bclr	r6h,@er1
220	bclr	r5h,@0x12:8
221	bclr	r4h,@0x1234:16
222	bclr	r3h,@0x12345678:32
223
224bnot_btst_tests:
225	bnot	#0x7,r0l
226	bnot	#0x6,@er1
227	bnot	#0x5,@0x12:8
228	bnot	#0x4,@0x1234:16
229	bnot	#0x3,@0x12345678:32
230	bnot	r7l,r0h
231	bnot	r6l,@er1
232	bnot	r5l,@0x12:8
233	bnot	r4l,@0x1234:16
234	bnot	r3l,@0x12345678:32
235	btst	#0x7,r0l
236	btst	#0x6,@er1
237	btst	#0x5,@0x12:8
238	btst	#0x4,@0x1234:16
239	btst	#0x3,@0x12345678:32
240	btst	r7h,r0h
241	btst	r6h,@er1
242	btst	r5h,@0x12:8
243	btst	r4h,@0x1234:16
244	btst	r3h,@0x12345678:32
245
246band_bor_bxor_tests:
247	band	#0x7,r0l
248	band	#0x6,@er1
249	band	#0x5,@0x12:8
250	band	#0x4,@0x1234:16
251	band	#0x3,@0x12345678:32
252	bor	#0x7,r0l
253	bor	#0x6,@er1
254	bor	#0x5,@0x12:8
255	bor	#0x4,@0x1234:16
256	bor	#0x3,@0x12345678:32
257	bxor	#0x7,r0l
258	bxor	#0x6,@er1
259	bxor	#0x5,@0x12:8
260	bxor	#0x4,@0x1234:16
261	bxor	#0x3,@0x12345678:32
262
263bld_bst_tests:
264	bld	#0x7,r0l
265	bld	#0x6,@er1
266	bld	#0x5,@0x12:8
267	bld	#0x4,@0x1234:16
268	bld	#0x3,@0x12345678:32
269	bild	#0x7,r0l
270	bild	#0x6,@er1
271	bild	#0x5,@0x12:8
272	bild	#0x4,@0x1234:16
273	bild	#0x3,@0x12345678:32
274	bst	#0x7,r0l
275	bst	#0x6,@er1
276	bst	#0x5,@0x12:8
277	bst	#0x4,@0x1234:16
278	bst	#0x3,@0x12345678:32
279	bist	#0x7,r0l
280	bist	#0x6,@er1
281	bist	#0x5,@0x12:8
282	bist	#0x4,@0x1234:16
283	bist	#0x3,@0x12345678:32
284
285branch_tests:
286	bra	branch_tests
287	brn	branch_tests
288	bhi	branch_tests
289	bls	branch_tests
290	bcc	branch_tests
291	bcs	branch_tests
292	bne	branch_tests
293	beq	branch_tests
294	bvc	branch_tests
295	bvs	branch_tests
296	bpl	branch_tests
297	bmi	branch_tests
298	bge	branch_tests
299	blt	branch_tests
300	bgt	branch_tests
301	ble	branch_tests
302	jmp	@er0
303	jmp	@branch_tests
304	jmp	@@0 (0)
305	bsr	branch_tests:8
306	bsr	branch_tests:16
307	jsr	@er0
308	jsr	@branch_tests
309	jsr	@@0 (0)
310	rts
311
312system_control_tests:
313	trapa	#0x2
314	rte
315	sleep
316	ldc	#0x12,ccr
317	ldc	r3l,ccr
318	ldc	@er0,ccr
319	ldc	@(0x1234:16,er0),ccr
320	ldc	@(0x12345678:32,er0),ccr
321	ldc	@er1+,ccr
322	ldc	@0x1234:16,ccr
323	ldc	@0x12345678:32,ccr
324	stc	ccr,r3l
325	stc	ccr,@er0
326	stc	ccr,@(0x1234:16,er0)
327	stc	ccr,@(0x12345678:32,er0)
328	stc	ccr,@-er1
329	stc	ccr,@0x1234:16
330	stc	ccr,@0x12345678:32
331	andc	#0x12,ccr
332	orc	#0x34,ccr
333	xorc	#0x56,ccr
334	ldc	#0x12,exr
335	ldc	r3l,exr
336	ldc	@er0,exr
337	ldc	@(0x1234:16,er0),exr
338	ldc	@(0x12345678:32,er0),exr
339	ldc	@er1+,exr
340	ldc	@0x1234:16,exr
341	ldc	@0x12345678:32,exr
342	stc	exr,r3l
343	stc	exr,@er0
344	stc	exr,@(0x1234:16,er0)
345	stc	exr,@(0x12345678:32,er0)
346	stc	exr,@-er1
347	stc	exr,@0x1234:16
348	stc	exr,@0x12345678:32
349	andc	#0x12,exr
350	orc	#0x34,exr
351	xorc	#0x56,exr
352	nop
353
354block_data_transfer_tests:
355	eepmov.b
356	eepmov.w
357