1# license:BSD-3-Clause
2# copyright-holders:Olivier Galibert
3macro bxx_any %cond
4	prefetch_start();
5	TMP2 = read16i(TMP1);
6	if(%cond)
7		prefetch_switch(TMP1, TMP2);
8	prefetch_done();
9
10macro bxx_8 %cond
11	TMP1 = PC + int8_t(IR[0]);
12	bxx_any %cond
13
14macro bxx_16 %cond
15	TMP1 = PC + int16_t(IR[1]);
16	bxx_any %cond
17
18macro bset %bit
19	TMP1 |= 1 << ((%bit) & 7);
20
21macro bnot %bit
22	TMP1 ^= 1 << ((%bit) & 7);
23
24macro bclr %bit
25	TMP1 &= ~(1 << ((%bit) & 7));
26
27macro btst %bit
28	if(TMP1 & (1 << ((%bit) & 7)))
29		CCR &= ~F_Z;
30	else
31		CCR |= F_Z;
32
33macro bor %bit
34	if(TMP1 & (1 << ((%bit) & 7)))
35		CCR |= F_C;
36
37macro bior %bit
38	if(!(TMP1 & (1 << ((%bit) & 7))))
39		CCR |= F_C;
40
41macro bxor %bit
42	if(TMP1 & (1 << ((%bit) & 7)))
43		CCR ^= F_C;
44
45macro bixor %bit
46	if(!(TMP1 & (1 << ((%bit) & 7))))
47		CCR ^= F_C;
48
49macro band %bit
50	if(!(TMP1 & (1 << ((%bit) & 7))))
51		CCR &= ~F_C;
52
53macro biand %bit
54	if(TMP1 & (1 << ((%bit) & 7)))
55		CCR &= ~F_C;
56
57macro bld %bit
58	if(TMP1 & (1 << ((%bit) & 7)))
59		CCR |= F_C;
60	else
61		CCR &= ~F_C;
62
63macro bild %bit
64	if(!(TMP1 & (1 << ((%bit) & 7))))
65		CCR |= F_C;
66	else
67		CCR &= ~F_C;
68
69macro bst %bit
70	if(CCR & F_C)
71		TMP1 |= 1 << ((%bit) & 7);
72	else
73		TMP1 &= ~(1 << ((%bit) & 7));
74
75macro bist %bit
76	if(!(CCR & F_C))
77		TMP1 |= 1 << ((%bit) & 7);
78	else
79		TMP1 &= ~(1 << ((%bit) & 7));
80
81macro jsr16 %opc %spreg
82	prefetch_start();
83	%spreg = r16_r(7) - 2;
84	r16_w(7, %spreg);
85	write16(%spreg, %opc);
86	prefetch_done();
87
88macro jsr32 %opc %spreg
89	prefetch_start();
90	if(mode_advanced) {
91		%spreg = r32_r(7) - 4;
92		r32_w(7, %spreg);
93		write16(%spreg, %opc >> 16);
94		write16(%spreg+2, %opc);
95	} else {
96		%spreg = r32_r(7) - 2;
97		r32_w(7, %spreg);
98		write16(%spreg, %opc);
99	}
100	prefetch_done();
101
10210000 reset
103	CCR |= F_I;
104	EXR = EXR_I | EXR_NC;
105	if(mode_advanced) {
106		IR[0] = read16i(0);
107		IR[1] = read16i(2);
108		PC = (IR[0] << 16) | IR[1];
109	} else {
110		PC = read16i(0);
111	}
112	update_irq_filter();
113	prefetch_noirq();
114
11510001 irq o
116	internal(1);
117	TMP1 = r16_r(7) - 2;
118	r16_w(7, TMP1);
119	write16(TMP1, NPC);
120	TMP1 = r16_r(7) - 2;
121	r16_w(7, TMP1);
122	write16(TMP1, (CCR << 8) | ((PC >> 16) & 0xff));
123	PC = read16i(2*taken_irq_vector);
124	internal(1);
125	irq_setup();
126	update_irq_filter();
127	interrupt_taken();
128	prefetch_noirq();
129
13010001 irq h
131	internal(1);
132	TMP1 = r32_r(7) - 2;
133	r32_w(7, TMP1);
134	write16(TMP1, NPC);
135	TMP1 = r32_r(7) - 2;
136	r32_w(7, TMP1);
137	write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff));
138	if(exr_in_stack()) {
139		TMP1 = r32_r(7) - 2;
140		r32_w(7, TMP1);
141		write16(TMP1, EXR << 8);
142	}
143	if(mode_advanced) {
144		IR[0] = read16i(4*taken_irq_vector);
145		IR[1] = read16i(4*taken_irq_vector+2);
146		PC = (IR[0] << 16) | IR[1];
147	} else {
148		PC = read16i(2*taken_irq_vector);
149	}
150	internal(1);
151	irq_setup();
152	update_irq_filter();
153	interrupt_taken();
154	prefetch_noirq();
155
15610002 trace s20
157	internal(1);
158	TMP1 = r32_r(7) - 2;
159	r32_w(7, TMP1);
160	write16(TMP1, NPC);
161	TMP1 = r32_r(7) - 2;
162	r32_w(7, TMP1);
163	write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff));
164	TMP1 = r32_r(7) - 2;
165	r32_w(7, TMP1);
166	write16(TMP1, EXR << 8);
167	taken_irq_vector = trace_setup();
168	if(mode_advanced) {
169		IR[0] = read16i(4*taken_irq_vector);
170		IR[1] = read16i(4*taken_irq_vector+2);
171		PC = (IR[0] << 16) | IR[1];
172	} else {
173		PC = read16i(2*taken_irq_vector);
174	}
175	internal(1);
176	prefetch_noirq();
177
17810003 dma
179	if(current_dma->count == 1)
180		dma_device->count_last(current_dma->id);
181	if(current_dma->mode_16) {
182		TMP1 = read16(current_dma->source);
183		write16(current_dma->dest, TMP1);
184	} else {
185		TMP1 = read8(current_dma->source);
186		write8(current_dma->dest, TMP1);
187	}
188	current_dma->source += current_dma->incs;
189	current_dma->dest   += current_dma->incd;
190	current_dma->count--;
191	if(!current_dma->autoreq)
192		current_dma->suspended = true;
193	if(!current_dma->count) {
194		uint8_t id = current_dma->id;
195		current_dma = nullptr;
196		dma_device->count_done(id);
197	}
198	prefetch_done();
199
20010004 dtc s20
201	if(current_dtc->sra & 0x01000000) {
202		TMP1 = read16(current_dtc->sra & 0xffffff);
203		write16(current_dtc->dar & 0xffffff, TMP1);
204	} else {
205		TMP1 = read8(current_dtc->sra & 0xffffff);
206		write8(current_dtc->dar & 0xffffff, TMP1);
207	}
208	current_dtc->sra = (current_dtc->sra & 0xff000000) | ((current_dtc->sra + current_dtc->incs) & 0x00ffffff);
209	current_dtc->dar = (current_dtc->dar & 0xff000000) | ((current_dtc->dar + current_dtc->incd) & 0x00ffffff);
210	current_dtc->count--;
211	if(!current_dtc->count) {
212		uint8_t id = current_dtc->id;
213		current_dtc = nullptr;
214		dtc_device->count_done(id);
215	}
216	prefetch_done();
217
21810005 dtc_vector s20
219	TMP1 = dtc_device->get_waiting_vector();
220	if(TMP1 < h8_dtc_device::DTC_CHAINED) {
221		TMP2 = dtc_device->get_vector_address(TMP1);
222		TMP2 = read16(TMP2);
223		TMP2 |= 0xff0000;
224	} else {
225		TMP1 -= h8_dtc_device::DTC_CHAINED;
226		TMP2 = dtc_device->get_object(TMP1)->base + 12;
227	}
228
229	dtc_device->get_object(TMP1)->base = TMP2;
230	dtc_device->get_object(TMP1)->sra  = read16(TMP2) << 16;
231	dtc_device->get_object(TMP1)->sra |= read16(TMP2+2);
232	dtc_device->get_object(TMP1)->dar  = read16(TMP2+4) << 16;
233	dtc_device->get_object(TMP1)->dar |= read16(TMP2+6);
234	dtc_device->get_object(TMP1)->cr   = read16(TMP2+8) << 16;
235	dtc_device->get_object(TMP1)->cr  |= read16(TMP2+10);
236	dtc_device->vector_done(TMP1);
237	prefetch_done();
238
23910006 dtc_writeback s20
240	TMP1 = dtc_device->get_waiting_writeback();
241	TMP2 = dtc_device->get_object(TMP1)->base;
242	write16(TMP2, dtc_device->get_object(TMP1)->sra >> 16);
243	write16(TMP2+2, dtc_device->get_object(TMP1)->sra);
244	write16(TMP2+4, dtc_device->get_object(TMP1)->dar >> 16);
245	write16(TMP2+6, dtc_device->get_object(TMP1)->dar);
246	write16(TMP2+8, dtc_device->get_object(TMP1)->cr >> 16);
247	write16(TMP2+10, dtc_device->get_object(TMP1)->cr);
248	dtc_device->writeback_done(TMP1);
249	prefetch_done();
250
2510000         ffff         0 nop      -        -
252	prefetch();
253
25401006900     ffffff88     0 mov.l    r32ih    r32l     h
255	prefetch_start();
256	TMP2 = r32_r(IR[1] >> 4);
257	TMP1 = read16(TMP2) << 16;
258	TMP1 |= read16(TMP2+2);
259	set_nzv32(TMP1);
260	r32_w(IR[1], TMP1);
261	prefetch_done();
262
26301006980     ffffff88     0 mov.l    r32l     r32ih    h
264	prefetch_start();
265	TMP2 = r32_r(IR[1] >> 4);
266	TMP1 = r32_r(IR[1]);
267	set_nzv32(TMP1);
268	write16(TMP2, TMP1 >> 16);
269	write16(TMP2+2, TMP1);
270	prefetch_done();
271
27201006b00     fffffff8     0 mov.l    abs16    r32l     h
273	prefetch_start();
274	TMP2 = int16_t(IR[2]);
275	TMP1 = read16(TMP2) << 16;
276	TMP1 |= read16(TMP2+2);
277	set_nzv32(TMP1);
278	r32_w(IR[1], TMP1);
279	prefetch_done();
280
28101006b20     fffffff8     0 mov.l    abs32    r32l     h
282	prefetch_start();
283	TMP2 = (IR[2] << 16) | IR[3];
284	TMP1 = read16(TMP2) << 16;
285	TMP1 |= read16(TMP2+2);
286	set_nzv32(TMP1);
287	r32_w(IR[1], TMP1);
288	prefetch_done();
289
29001006b80     fffffff8     0 mov.l    r32l     abs16    h
291	prefetch_start();
292	TMP1 = r32_r(IR[1]);
293	TMP2 = int16_t(IR[2]);
294	set_nzv32(TMP1);
295	write16(TMP2, TMP1 >> 16);
296	write16(TMP2+2, TMP1);
297	prefetch_done();
298
29901006ba0     fffffff8     0 mov.l    r32l     abs32    h
300	prefetch_start();
301	TMP1 = r32_r(IR[1]);
302	TMP2 = (IR[2] << 16) | IR[3];
303	set_nzv32(TMP1);
304	write16(TMP2, TMP1 >> 16);
305	write16(TMP2+2, TMP1);
306	prefetch_done();
307
30801006d00     ffffff88     0 mov.l    r32ph    r32l     h
309	prefetch_start();
310	internal(1);
311	TMP2 = r32_r(IR[1] >> 4);
312	TMP1 = read16(TMP2) << 16;
313	TMP1 |= read16(TMP2+2);
314	TMP2 += 4;
315	r32_w(IR[1] >> 4, TMP2);
316	set_nzv32(TMP1);
317	r32_w(IR[1], TMP1);
318	prefetch_done();
319
32001006d80     ffffff88     0 mov.l    r32l     pr32h    h
321	prefetch_start();
322	internal(1);
323	TMP1 = r32_r(IR[1]);
324	TMP2 = r32_r(IR[1] >> 4);
325	TMP2 -= 4;
326	r32_w(IR[1] >> 4, TMP2);
327	write16(TMP2, TMP1 >> 16);
328	write16(TMP2+2, TMP1);
329	set_nzv32(TMP1);
330	prefetch_done();
331
33201006f00     ffffff88     0 mov.l    r32d16h  r32l     h
333	prefetch_start();
334	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
335	TMP2 = read16(TMP1) << 16;
336	TMP2 |= read16(TMP1+2);
337	set_nzv32(TMP2);
338	r32_w(IR[1], TMP2);
339	prefetch_done();
340
34101006f80     ffffff88     0 mov.l    r32l     r32d16h  h
342	prefetch_start();
343	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
344	TMP2 = r32_r(IR[1]);
345	set_nzv32(TMP2);
346	write16(TMP1, TMP2 >> 16);
347	write16(TMP1+2, TMP2);
348	prefetch_done();
349
350010078006b20 ffffff0ffff8 0 mov.l    r32d32hh r32l     h
351	prefetch_start();
352	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
353	TMP2 = read16(TMP1) << 16;
354	TMP2 |= read16(TMP1+2);
355	set_nzv32(TMP2);
356	r32_w(IR[2], TMP2);
357	prefetch_done();
358
359010078006ba0 ffffff0ffff8 0 mov.l    r32l     r32d32hh h
360	prefetch_start();
361	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
362	TMP2 = r32_r(IR[2]);
363	set_nzv32(TMP2);
364	write16(TMP1, TMP2 >> 16);
365	write16(TMP1+2, TMP2);
366	prefetch_done();
367
36801106d71     fffffff9     0 ldm.l    spp      r32n2l   s20
369	prefetch_start();
370	internal(1);
371	TMP1 = r32_r(7);
372	TMP2 = read16(TMP1) << 16;
373	TMP2 |= read16(TMP1+2);
374	r32_w(IR[1], TMP2);
375	if((IR[1] & 7) == 7)
376		TMP1 = TMP2;
377	TMP1 += 4;
378	r32_w(7, TMP1);
379	TMP2 = read16(TMP1) << 16;
380	TMP2 |= read16(TMP1+2);
381	r32_w(IR[1]-1, TMP2);
382	TMP1 += 4;
383	r32_w(7, TMP1);
384	prefetch_done();
385
38601106df0     fffffff9     0 stm.l    r32n2l   psp      s20
387	prefetch_start();
388	internal(1);
389	TMP1 = r32_r(7);
390	TMP1 -= 4;
391	r32_w(7, TMP1);
392	TMP2 = r32_r(IR[1]);
393	write16(TMP1, TMP2 >> 16);
394	write16(TMP1+2, TMP2);
395	TMP1 -= 4;
396	r32_w(7, TMP1);
397	TMP2 = r32_r(IR[1]+1);
398	write16(TMP1, TMP2 >> 16);
399	write16(TMP1+2, TMP2);
400	prefetch_done();
401
40201206d72     fffffffb     0 ldm.l    spp      r32n3l   s20
403	prefetch_start();
404	internal(1);
405	TMP1 = r32_r(7);
406	TMP2 = read16(TMP1) << 16;
407	TMP2 |= read16(TMP1+2);
408	r32_w(IR[1], TMP2);
409	TMP1 += 4;
410	r32_w(7, TMP1);
411	TMP2 = read16(TMP1) << 16;
412	TMP2 |= read16(TMP1+2);
413	r32_w(IR[1]-1, TMP2);
414	TMP1 += 4;
415	r32_w(7, TMP1);
416	TMP2 = read16(TMP1) << 16;
417	TMP2 |= read16(TMP1+2);
418	r32_w(IR[1]-2, TMP2);
419	TMP1 += 4;
420	r32_w(7, TMP1);
421	prefetch_done();
422
42301206df0     fffffffb     0 stm.l    r32n3l   psp      s20
424	prefetch_start();
425	internal(1);
426	TMP1 = r32_r(7);
427	TMP1 -= 4;
428	r32_w(7, TMP1);
429	TMP2 = r32_r(IR[1]);
430	write16(TMP1, TMP2 >> 16);
431	write16(TMP1+2, TMP2);
432	TMP1 -= 4;
433	r32_w(7, TMP1);
434	TMP2 = r32_r(IR[1]+1);
435	write16(TMP1, TMP2 >> 16);
436	write16(TMP1+2, TMP2);
437	TMP1 -= 4;
438	r32_w(7, TMP1);
439	TMP2 = r32_r(IR[1]+2);
440	write16(TMP1, TMP2 >> 16);
441	write16(TMP1+2, TMP2);
442	prefetch_done();
443
44401306d73     fffffffb     0 ldm.l    spp      r32n4l   s20
445	prefetch_start();
446	internal(1);
447	TMP1 = r32_r(7);
448	TMP2 = read16(TMP1) << 16;
449	TMP2 |= read16(TMP1+2);
450	r32_w(IR[1], TMP2);
451	if((IR[1] & 7) == 7)
452		TMP1 = TMP2;
453	TMP1 += 4;
454	r32_w(7, TMP1);
455	TMP2 = read16(TMP1) << 16;
456	TMP2 |= read16(TMP1+2);
457	r32_w(IR[1]-1, TMP2);
458	TMP1 += 4;
459	r32_w(7, TMP1);
460	TMP2 = read16(TMP1) << 16;
461	TMP2 |= read16(TMP1+2);
462	r32_w(IR[1]-2, TMP2);
463	TMP1 += 4;
464	r32_w(7, TMP1);
465	TMP2 = read16(TMP1) << 16;
466	TMP2 |= read16(TMP1+2);
467	r32_w(IR[1]-3, TMP2);
468	TMP1 += 4;
469	r32_w(7, TMP1);
470	prefetch_done();
471
47201306df0     fffffffb     0 stm.l    r32n4l   psp      s20
473	prefetch_start();
474	internal(1);
475	TMP1 = r32_r(7);
476	TMP1 -= 4;
477	r32_w(7, TMP1);
478	TMP2 = r32_r(IR[1]);
479	write16(TMP1, TMP2 >> 16);
480	write16(TMP1+2, TMP2);
481	TMP1 -= 4;
482	r32_w(7, TMP1);
483	TMP2 = r32_r(IR[1]+1);
484	write16(TMP1, TMP2 >> 16);
485	write16(TMP1+2, TMP2);
486	TMP1 -= 4;
487	r32_w(7, TMP1);
488	TMP2 = r32_r(IR[1]+2);
489	write16(TMP1, TMP2 >> 16);
490	write16(TMP1+2, TMP2);
491	TMP1 -= 4;
492	r32_w(7, TMP1);
493	TMP2 = r32_r(IR[1]+3);
494	write16(TMP1, TMP2 >> 16);
495	write16(TMP1+2, TMP2);
496	prefetch_done();
497
49801406900     ffffff8f     0 ldc.w    r32ih    ccr      h
499	prefetch_start();
500	TMP1 = r32_r(IR[1] >> 4);
501	CCR = read16(TMP1) >> 8;
502	update_irq_filter();
503	prefetch_done_noirq();
504
50501406980     ffffff8f     0 stc.w    ccr      r32ih    h
506	prefetch_start();
507	TMP1 = r32_r(IR[1] >> 4);
508	write16(TMP1, (CCR << 8) | CCR);
509	prefetch_done();
510
51101406b00     ffffffff     0 ldc.w    abs16    ccr      h
512	prefetch_start();
513	TMP1 = int16_t(IR[2]);
514	CCR = read16(TMP1) >> 8;
515	update_irq_filter();
516	prefetch_done_noirq();
517
51801406b20     ffffffff     0 ldc.w    abs32    ccr      h
519	prefetch_start();
520	TMP1 = (IR[2] << 16) | IR[3];
521	CCR = read16(TMP1) >> 8;
522	update_irq_filter();
523	prefetch_done_noirq();
524
52501406b80     ffffffff     0 stc.w    ccr      abs16    h
526	prefetch_start();
527	TMP1 = int16_t(IR[2]);
528	write16(TMP1, (CCR << 8) | CCR);
529	prefetch_done();
530
53101406ba0     ffffffff     0 stc.w    ccr      abs32    h
532	prefetch_start();
533	TMP1 = (IR[2] << 16) | IR[3];
534	write16(TMP1, (CCR << 8) | CCR);
535	prefetch_done();
536
53701406d00     ffffff8f     0 ldc.w    r32ph    ccr      h
538	prefetch_start();
539	internal(1);
540	TMP1 = r32_r(IR[1] >> 4);
541	r32_w(IR[1] >> 4, TMP1+2);
542	CCR = read16(TMP1) >> 8;
543	update_irq_filter();
544	prefetch_done_noirq();
545
54601406d80     ffffff8f     0 stc.w    ccr      pr32h    h
547	prefetch_start();
548	internal(1);
549	TMP1 = r32_r(IR[1] >> 4) - 2;
550	r32_w(IR[1] >> 4, TMP1);
551	write16(TMP1, (CCR << 8) | CCR);
552	prefetch_done();
553
55401406f00     ffffff8f     0 ldc.w    r32d16h  ccr      h
555	prefetch_start();
556	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
557	CCR = read16(TMP1) >> 8;
558	update_irq_filter();
559	prefetch_done_noirq();
560
56101406f80     ffffff8f     0 stc.w    ccr      r32d16h  h
562	prefetch_start();
563	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
564	write16(TMP1, (CCR << 8) | CCR);
565	prefetch_done();
566
567014078006b20 ffffff8fffff 0 ldc.w    r32d32hh ccr      h
568	prefetch_start();
569	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
570	CCR = read16(TMP1) >> 8;
571	update_irq_filter();
572	prefetch_done_noirq();
573
574014078806ba0 ffffff8fffff 0 stc.w    ccr      r32d32hh h
575	prefetch_start();
576	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
577	write16(TMP1, (CCR << 8) | CCR);
578	prefetch_done();
579
58001410400     ffffff00     0 orc      imm8     exr      s20
581	EXR |= IR[1];
582	update_irq_filter();
583	prefetch_noirq();
584
58501410500     ffffff00     0 xorc     imm8     exr      s20
586	EXR ^= IR[1] & ~EXR_NC;
587	update_irq_filter();
588	prefetch_noirq();
589
59001410600     ffffff00     0 andc     imm8     exr      s20
591	EXR &= IR[1] | EXR_NC;
592	update_irq_filter();
593	prefetch_noirq();
594
59501410700     ffffff00     0 ldc      imm8     exr      s20
596	EXR = IR[1] | EXR_NC;
597	update_irq_filter();
598	prefetch_noirq();
599
60001416900     ffffff8f     0 ldc.w    r32ih    exr      s20
601	prefetch_start();
602	TMP1 = r32_r(IR[1] >> 4);
603	EXR = (read16(TMP1) >> 8) | EXR_NC;
604	update_irq_filter();
605	prefetch_done_noirq();
606
60701416980     ffffff8f     0 stc.w    exr      r32ih    s20
608	prefetch_start();
609	TMP1 = r32_r(IR[1] >> 4);
610	write16(TMP1, (EXR << 8) | EXR);
611	prefetch_done();
612
61301416b00     ffffffff     0 ldc.w    abs16    exr      s20
614	prefetch_start();
615	TMP1 = int16_t(IR[2]);
616	EXR = (read16(TMP1) >> 8) | EXR_NC;
617	update_irq_filter();
618	prefetch_done_noirq();
619
62001416b20     ffffffff     0 ldc.w    abs32    exr      s20
621	prefetch_start();
622	TMP1 = (IR[2] << 16) | IR[3];
623	EXR = (read16(TMP1) >> 8) | EXR_NC;
624	update_irq_filter();
625	prefetch_done_noirq();
626
62701416b80     ffffffff     0 stc.w    exr      abs16    s20
628	prefetch_start();
629	TMP1 = int16_t(IR[2]);
630	write16(TMP1, (EXR << 8) | EXR);
631	prefetch_done();
632
63301416ba0     ffffffff     0 stc.w    exr      abs32    s20
634	prefetch_start();
635	TMP1 = (IR[2] << 16) | IR[3];
636	write16(TMP1, (EXR << 8) | EXR);
637	prefetch_done();
638
63901416d00     ffffff8f     0 ldc.w    r32ph    exr      s20
640	prefetch_start();
641	internal(1);
642	TMP1 = r32_r(IR[1] >> 4);
643	r32_w(IR[1] >> 4, TMP1+2);
644	EXR = (read16(TMP1) >> 8) | EXR_NC;
645	update_irq_filter();
646	prefetch_done_noirq();
647
64801416d80     ffffff8f     0 stc.w    exr      pr32h    s20
649	prefetch_start();
650	internal(1);
651	TMP1 = r32_r(IR[1] >> 4) - 2;
652	r32_w(IR[1] >> 4, TMP1);
653	write16(TMP1, (EXR << 8) | EXR);
654	prefetch_done();
655
65601416f00     ffffff8f     0 ldc.w    r32d16h  exr      s20
657	prefetch_start();
658	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
659	EXR = (read16(TMP1) >> 8) | EXR_NC;
660	update_irq_filter();
661	prefetch_done_noirq();
662
66301416f80     ffffff8f     0 stc.w    exr      r32d16h  s20
664	prefetch_start();
665	TMP1 = r32_r(IR[1] >> 4) + int16_t(IR[2]);
666	write16(TMP1, (EXR << 8) | EXR);
667	prefetch_done();
668
669014178006b20 ffffff8fffff 0 ldc.w    r32d32hh exr      s20
670	prefetch_start();
671	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
672	EXR = (read16(TMP1) >> 8) | EXR_NC;
673	update_irq_filter();
674	prefetch_done_noirq();
675
676014178806ba0 ffffff8fffff 0 stc.w    exr      r32d32hh s20
677	prefetch_start();
678	TMP1 = r32_r(IR[1] >> 4) + (IR[3] << 16) + IR[4];
679	write16(TMP1, (EXR << 8) | EXR);
680	prefetch_done();
681
68201606d00     ffffff88     0 mac      r32ph    r32pl    s26
683	prefetch_start();
684	TMP1 = read16(r32_r(IR[1]));
685	r32_w(IR[1], r32_r(IR[1]) + 2);
686	TMP2 = read16(r32_r(IR[1] >> 4));
687	r32_w(IR[1] >> 4, r32_r(IR[1] >> 4) + 2);
688	MAC += int16_t(TMP1)*int16_t(TMP2);
689	MACF &= ~(F_Z|F_N);
690	if(MAC)
691		MACF |= F_Z;
692	else if(MAC < 0)
693		MACF |= F_N;
694	if(mac_saturating) {
695		if(MAC < -0x80000000LL) {
696			MAC = -0x80000000LL;
697			MACF |= F_V;
698		} else if(MAC > 0x7fffffffLL) {
699			MAC = 0x7fffffffLL;
700			MACF |= F_V;
701		}
702	} else {
703		if(MAC < -0x20000000000LL) {
704			MAC = -0x20000000000LL;
705			MACF |= F_V;
706		} else if(MAC > 0x1ffffffffffLL) {
707			MAC = 0x1ffffffffffLL;
708			MACF |= F_V;
709		}
710	}
711	prefetch_done();
712
7130180         ffff         0 sleep    -        -
714	prefetch_start();
715	while(!irq_vector) {
716		eat-all-cycles;
717	}
718	prefetch_done();
719
72001a0         ffff         0 clrmac   -        -        s26
721	prefetch_start();
722	internal(1);
723	MAC = 0;
724	MACF &= ~F_V;
725	prefetch_done();
726
72701c05000     ffffff00     0 mulxs.b  r8h      r16l     h
728	prefetch_start();
729	TMP1 = int8_t(r16_r(IR[1])) * int8_t(r8_r(IR[1] >> 4));
730	set_nz16(TMP1);
731	r16_w(IR[1], TMP1);
732	internal(2);
733	prefetch_done();
734
73501c05200     ffffff08     0 mulxs.w  r16h     r32l     h
736	prefetch_start();
737	TMP1 = int16_t(r32_r(IR[1])) * int16_t(r16_r(IR[1] >> 4));
738	set_nz32(TMP1);
739	r32_w(IR[1], TMP1);
740	internal(3);
741	prefetch_done();
742
74301d05100     ffffff00     0 divxs.b  r8h      r16l     h
744	prefetch_start();
745	internal(11);
746	TMP1 = int16_t(r16_r(IR[1]));
747	TMP2 = int8_t(r8_r(IR[1] >> 4));
748	CCR &= ~(F_Z|F_N);
749	if(!TMP2) {
750		CCR |= F_Z;
751	} else {
752		// Conditions:
753		//    p = q*d + r
754		//    abs(r) < abs(d)
755		//    d and r are same sign or r=0
756		// p = +20, d = +3 -> q =  6, r =  2
757		// p = +20, d = -3 -> q = -6, r = -2
758		// p = -20, d = +3 -> q = -7, r =  1
759		// p = -20, d = -3 -> q =  7, r = -1
760		int q, r;
761		if(TMP2 < 0) {
762			if(TMP1 < 0) { // - -
763				q = (-TMP1) / (-TMP2);
764				r = (-TMP1) % (-TMP2);
765				if(r) {
766					r = r + TMP2;
767					q++;
768				}
769			} else {       // + -
770				CCR |= F_N;
771				q = -(TMP1 / (-TMP2));
772				r = -(TMP1 % (-TMP2));
773			}
774		} else {
775			if(TMP1 < 0) { // - +
776				CCR |= F_N;
777				q = -((-TMP1) / TMP2);
778				r = (-TMP1) % TMP2;
779				if(r) {
780					r = TMP2 - r;
781					q--;
782				}
783			} else {       // + +
784				q = TMP1 / TMP2;
785				r = TMP1 % TMP2;
786			}
787		}
788		r16_w(IR[1], (q & 0xff) | ((r & 0xff) << 8));
789	}
790	prefetch_done();
791
79201d05300     ffffff08     0 divxs.w  r16h     r32l     h
793	prefetch_start();
794	internal(19);
795	TMP1 = r32_r(IR[1]);
796	TMP2 = int16_t(r16_r(IR[1] >> 4));
797	CCR &= ~(F_Z|F_N);
798	if(!TMP2) {
799		CCR |= F_Z;
800	} else {
801		// Conditions:
802		//    p = q*d + r
803		//    abs(r) < abs(d)
804		//    d and r are same sign or r=0
805		// p = +20, d = +3 -> q =  6, r =  2
806		// p = +20, d = -3 -> q = -6, r = -2
807		// p = -20, d = +3 -> q = -7, r =  1
808		// p = -20, d = -3 -> q =  7, r = -1
809		int q, r;
810		if(TMP2 < 0) {
811			if(TMP1 < 0) { // - -
812				q = (-TMP1) / (-TMP2);
813				r = (-TMP1) % (-TMP2);
814				if(r) {
815					r = r + TMP2;
816					q++;
817				}
818			} else {       // + -
819				CCR |= F_N;
820				q = -(TMP1 / (-TMP2));
821				r = -(TMP1 % (-TMP2));
822			}
823		} else {
824			if(TMP1 < 0) { // - +
825				CCR |= F_N;
826				q = -((-TMP1) / TMP2);
827				r = (-TMP1) % TMP2;
828				if(r) {
829					r = TMP2 - r;
830					q--;
831				}
832			} else {       // + +
833				q = TMP1 / TMP2;
834				r = TMP1 % TMP2;
835			}
836		}
837		r32_w(IR[1], (q & 0xffff) | ((r & 0xffff) << 16));
838	}
839	prefetch_done();
840
84101e07b0c     ffffffaf     0 tas      r32ih    -        s20
842	prefetch_start();
843	TMP1 = r32_r(IR[1] >> 4);
844	TMP2 = read8(TMP1);
845	set_nzv8(TMP2);
846	write8(TMP1, TMP2 | 0x80);
847	prefetch_done();
848
84901f06400     ffffff88     0 or.l     r32h     r32l     h
850	TMP1 = r32_r(IR[1] >> 4) | r32_r(IR[1]);
851	set_nzv32(TMP1);
852	r32_w(IR[1], TMP1);
853	prefetch();
854
85501f06500     ffffff88     0 xor.l    r32h     r32l     h
856	TMP1 = r32_r(IR[1] >> 4) ^ r32_r(IR[1]);
857	set_nzv32(TMP1);
858	r32_w(IR[1], TMP1);
859	prefetch();
860
86101f06600     ffffff88     0 and.l    r32h     r32l     h
862	TMP1 = r32_r(IR[1] >> 4) & r32_r(IR[1]);
863	set_nzv32(TMP1);
864	r32_w(IR[1], TMP1);
865	prefetch();
866
8670200         fff0         0 stc      ccr      r8l
868	r8_w(IR[0], CCR);
869	prefetch();
870
8710210         fff0         0 stc      exr      r8l      s20
872	r8_w(IR[0], EXR);
873	prefetch();
874
8750220         fff8         0 stmac    mach     r32l     s26
876	r32_w(IR[0], MAC >> 32);
877	CCR = (CCR & ~(F_V|F_N|F_Z)) | MACF;
878	prefetch();
879
8800230         fff8         0 stmac    macl     r32l     s26
881	r32_w(IR[0], MAC);
882	CCR = (CCR & ~(F_V|F_N|F_Z)) | MACF;
883	prefetch();
884
8850300         fff0         0 ldc      r8l      ccr
886	CCR = r8_r(IR[0]);
887	update_irq_filter();
888	prefetch_noirq();
889
8900310         fff0         0 ldc      r8l      exr      s20
891	EXR = r8_r(IR[0]) | EXR_NC;
892	update_irq_filter();
893	prefetch_noirq();
894
8950320         fff8         0 ldmac    r32l     mach     s26
896	prefetch_start();
897	internal(1);
898	TMP1 = r32_r(IR[0]);
899	if(TMP1 & 0x200)
900		TMP1 |= 0xfffffc00;
901	else
902		TMP1 &= ~0xfffffc00;
903	MAC = (MAC & 0x00000000ffffffffULL) | (uint64_t(TMP1) << 32);
904	MACF &= ~F_V;
905	prefetch_done();
906
9070330         fff8         0 ldmac    r32l     macl     s26
908	prefetch_start();
909	internal(1);
910	MAC = (MAC & 0xffffffff00000000ULL) | r32_r(IR[0]);
911	MACF &= ~F_V;
912	prefetch_done();
913
9140400         ff00         0 orc      imm8     ccr
915	CCR |= IR[0];
916	update_irq_filter();
917	prefetch_noirq();
918
9190500         ff00         0 xorc     imm8     ccr
920	CCR ^= IR[0];
921	update_irq_filter();
922	prefetch_noirq();
923
9240600         ff00         0 andc     imm8     ccr
925	CCR &= IR[0];
926	update_irq_filter();
927	prefetch_noirq();
928
9290700         ff00         0 ldc      imm8     ccr
930	CCR = IR[0];
931	update_irq_filter();
932	prefetch_noirq();
933
9340800         ff00         0 add.b    r8h      r8l
935	r8_w(IR[0], do_add8(r8_r(IR[0]), r8_r(IR[0] >> 4)));
936	prefetch();
937
9380900         ff00         0 add.w    r16h     r16l
939	r16_w(IR[0], do_add16(r16_r(IR[0]), r16_r(IR[0] >> 4)));
940	prefetch();
941
9420a00         fff0         0 inc.b    one      r8l
943	r8_w(IR[0], do_inc8(r8_r(IR[0]), 1));
944	prefetch();
945
9460a80         ff88         0 add.l    r32h     r32l     h
947	r32_w(IR[0], do_add32(r32_r(IR[0]), r32_r(IR[0] >> 4)));
948	prefetch();
949
9500b00         fff8         0 adds.l   one      r16l     o
951	r16_w(IR[0], r16_r(IR[0])+1);
952	prefetch();
953
9540b00         fff8         0 adds.l   one      r32l     h
955	r32_w(IR[0], r32_r(IR[0])+1);
956	prefetch();
957
9580b50         fff0         0 inc.w    one      r16l     h
959	r16_w(IR[0], do_inc16(r16_r(IR[0]), 1));
960	prefetch();
961
9620b70         fff8         0 inc.l    one      r32l     h
963	r32_w(IR[0], do_inc32(r32_r(IR[0]), 1));
964	prefetch();
965
9660b80         fff8         0 adds.l   two      r16l     o
967	r16_w(IR[0], r16_r(IR[0])+2);
968	prefetch();
969
9700b80         fff8         0 adds.l   two      r32l     h
971	r32_w(IR[0], r32_r(IR[0])+2);
972	prefetch();
973
9740b90         fff8         0 adds.l   four     r16l     o
975	r16_w(IR[0], r16_r(IR[0])+4);
976	prefetch();
977
9780b90         fff8         0 adds.l   four     r32l     h
979	r32_w(IR[0], r32_r(IR[0])+4);
980	prefetch();
981
9820bd0         fff0         0 inc.w    two      r16l     h
983	r16_w(IR[0], do_inc16(r16_r(IR[0]), 2));
984	prefetch();
985
9860bf0         fff8         0 inc.l    two      r32l     h
987	r32_w(IR[0], do_inc32(r32_r(IR[0]), 2));
988	prefetch();
989
9900c00         ff00         0 mov.b    r8h      r8l
991	TMP1 = r8_r(IR[0] >> 4);
992	set_nzv8(TMP1);
993	r8_w(IR[0], TMP1);
994	prefetch();
995
9960d00         ff00         0 mov.w    r16h     r16l
997	TMP1 = r16_r(IR[0] >> 4);
998	set_nzv16(TMP1);
999	r16_w(IR[0], TMP1);
1000	prefetch();
1001
10020e00         ff00         0 addx.b   r8h      r8l
1003	r8_w(IR[0], do_addx8(r8_r(IR[0]), r8_r(IR[0] >> 4)));
1004	prefetch();
1005
10060f00         fff0         0 daa.b    r8l      -
1007	TMP1 = r8_r(IR[0]);
1008	TMP2 = 0;
1009	if(CCR & F_C) {
1010		if(CCR & F_H) {
1011			if((TMP1 & 0xf0) <= 0x30 && (TMP1 & 0x0f) <= 3)
1012				TMP2 = 0x66;
1013		} else {
1014			if((TMP1 & 0xf0) <= 0x20)
1015				TMP2 = (TMP1 & 0x0f) <= 9 ? 0x60 : 0x66;
1016		}
1017	} else {
1018		if(CCR & F_H) {
1019			if((TMP1 & 0x0f) <= 3)
1020				TMP2 = (TMP1 & 0xf0) <= 0x90 ? 0x06 : 0x66;
1021		} else {
1022			if((TMP1 & 0x0f) <= 9)
1023				TMP2 = (TMP1 & 0xf0) <= 0x90 ? 0x00 : 0x60;
1024			else
1025				TMP2 = (TMP1 & 0xf0) <= 0x80 ? 0x06 : 0x66;
1026		}
1027	}
1028	r8_w(IR[0], do_add8(TMP1, TMP2));
1029	prefetch();
1030
10310f80         ff88         0 mov.l    r32h     r32l     h
1032	TMP1 = r32_r(IR[0] >> 4);
1033	set_nzv32(TMP1);
1034	r32_w(IR[0], TMP1);
1035	prefetch();
1036
10371000         fff0         0 shll.b   r8l      -
1038	r8_w(IR[0], do_shll8(r8_r(IR[0])));
1039	prefetch();
1040
10411010         fff0         0 shll.w   r16l     -        h
1042	r16_w(IR[0], do_shll16(r16_r(IR[0])));
1043	prefetch();
1044
10451030         fff8         0 shll.l   r32l     -        h
1046	r32_w(IR[0], do_shll32(r32_r(IR[0])));
1047	prefetch();
1048
10491040         fff0         0 shll.b   two      r8l      s20
1050	r8_w(IR[0], do_shll2_8(r8_r(IR[0])));
1051	prefetch();
1052
10531050         fff0         0 shll.w   two      r16l     s20
1054	r16_w(IR[0], do_shll2_16(r16_r(IR[0])));
1055	prefetch();
1056
10571070         fff8         0 shll.l   two      r32l     s20
1058	r32_w(IR[0], do_shll2_32(r32_r(IR[0])));
1059	prefetch();
1060
10611080         fff0         0 shal.b   r8l      -
1062	r8_w(IR[0], do_shal8(r8_r(IR[0])));
1063	prefetch();
1064
10651090         fff0         0 shal.w   r16l     -        h
1066	r16_w(IR[0], do_shal16(r16_r(IR[0])));
1067	prefetch();
1068
106910b0         fff8         0 shal.l   r32l     -        h
1070	r32_w(IR[0], do_shal32(r32_r(IR[0])));
1071	prefetch();
1072
107310c0         fff0         0 shal.b   two      r8l      s20
1074	r8_w(IR[0], do_shal2_8(r8_r(IR[0])));
1075	prefetch();
1076
107710d0         fff0         0 shal.w   two      r16l     s20
1078	r16_w(IR[0], do_shal2_16(r16_r(IR[0])));
1079	prefetch();
1080
108110f0         fff8         0 shal.l   two      r32l     s20
1082	r32_w(IR[0], do_shal32(r32_r(IR[0])));
1083	prefetch();
1084
10851100         fff0         0 shlr.b   r8l      -
1086	r8_w(IR[0], do_shlr8(r8_r(IR[0])));
1087	prefetch();
1088
10891110         fff0         0 shlr.w   r16l     -        h
1090	r16_w(IR[0], do_shlr16(r16_r(IR[0])));
1091	prefetch();
1092
10931130         fff8         0 shlr.l   r32l     -        h
1094	r32_w(IR[0], do_shlr32(r32_r(IR[0])));
1095	prefetch();
1096
10971140         fff0         0 shlr.b   two      r8l      s20
1098	r8_w(IR[0], do_shlr2_8(r8_r(IR[0])));
1099	prefetch();
1100
11011150         fff0         0 shlr.w   two      r16l     s20
1102	r16_w(IR[0], do_shlr2_16(r16_r(IR[0])));
1103	prefetch();
1104
11051170         fff8         0 shlr.l   two      r32l     s20
1106	r32_w(IR[0], do_shlr2_32(r32_r(IR[0])));
1107	prefetch();
1108
11091180         fff0         0 shar.b   r8l      -
1110	r8_w(IR[0], do_shar8(r8_r(IR[0])));
1111	prefetch();
1112
11131190         fff0         0 shar.w   r16l     -        h
1114	r16_w(IR[0], do_shar16(r16_r(IR[0])));
1115	prefetch();
1116
111711b0         fff8         0 shar.l   r32l     -        h
1118	r32_w(IR[0], do_shar32(r32_r(IR[0])));
1119	prefetch();
1120
112111c0         fff0         0 shar.b   two      r8l      s20
1122	r8_w(IR[0], do_shar2_8(r8_r(IR[0])));
1123	prefetch();
1124
112511d0         fff0         0 shar.w   two      r16l     s20
1126	r16_w(IR[0], do_shar2_16(r16_r(IR[0])));
1127	prefetch();
1128
112911f0         fff8         0 shar.l   two      r32l     s20
1130	r32_w(IR[0], do_shar2_32(r32_r(IR[0])));
1131	prefetch();
1132
11331200         fff0         0 rotxl.b  r8l      -
1134	r8_w(IR[0], do_rotxl8(r8_r(IR[0])));
1135	prefetch();
1136
11371210         fff0         0 rotxl.w  r16l     -        h
1138	r16_w(IR[0], do_rotxl16(r16_r(IR[0])));
1139	prefetch();
1140
11411230         fff8         0 rotxl.l  r32l     -        h
1142	r32_w(IR[0], do_rotxl32(r32_r(IR[0])));
1143	prefetch();
1144
11451240         fff0         0 rotxl.b  two      r8l      s20
1146	r8_w(IR[0], do_rotxl2_8(r8_r(IR[0])));
1147	prefetch();
1148
11491250         fff0         0 rotxl.w  two      r16l     s20
1150	r16_w(IR[0], do_rotxl2_16(r16_r(IR[0])));
1151	prefetch();
1152
11531270         fff8         0 rotxl.l  two      r32l     s20
1154	r32_w(IR[0], do_rotxl2_32(r32_r(IR[0])));
1155	prefetch();
1156
11571280         fff0         0 rotl.b   r8l      -
1158	r8_w(IR[0], do_rotl8(r8_r(IR[0])));
1159	prefetch();
1160
11611290         fff0         0 rotl.w   r16l     -        h
1162	r16_w(IR[0], do_rotl16(r16_r(IR[0])));
1163	prefetch();
1164
116512b0         fff8         0 rotl.l   r32l     -        h
1166	r32_w(IR[0], do_rotl32(r32_r(IR[0])));
1167	prefetch();
1168
116912c0         fff0         0 rotl.b   two      r8l      s20
1170	r8_w(IR[0], do_rotl2_8(r8_r(IR[0])));
1171	prefetch();
1172
117312d0         fff0         0 rotl.w   two      r16l     s20
1174	r16_w(IR[0], do_rotl2_16(r16_r(IR[0])));
1175	prefetch();
1176
117712f0         fff8         0 rotl.l   two      r32l     s20
1178	r32_w(IR[0], do_rotl2_32(r32_r(IR[0])));
1179	prefetch();
1180
11811300         fff0         0 rotxr.b  r8l      -
1182	r8_w(IR[0], do_rotxr8(r8_r(IR[0])));
1183	prefetch();
1184
11851310         fff0         0 rotxr.w  r16l     -        h
1186	r16_w(IR[0], do_rotxr16(r16_r(IR[0])));
1187	prefetch();
1188
11891330         fff8         0 rotxr.l  r32l     -        h
1190	r32_w(IR[0], do_rotxr32(r32_r(IR[0])));
1191	prefetch();
1192
11931340         fff0         0 rotxr.b  two      r8l      s20
1194	r8_w(IR[0], do_rotxr2_8(r8_r(IR[0])));
1195	prefetch();
1196
11971350         fff0         0 rotxr.w  two      r16l     s20
1198	r16_w(IR[0], do_rotxr2_16(r16_r(IR[0])));
1199	prefetch();
1200
12011370         fff8         0 rotxr.l  two      r32l     s20
1202	r32_w(IR[0], do_rotxr2_32(r32_r(IR[0])));
1203	prefetch();
1204
12051380         fff0         0 rotr.b   r8l      -
1206	r8_w(IR[0], do_rotr8(r8_r(IR[0])));
1207	prefetch();
1208
12091390         fff0         0 rotr.w   r16l     -        h
1210	r16_w(IR[0], do_rotr16(r16_r(IR[0])));
1211	prefetch();
1212
121313b0         fff8         0 rotr.l   r32l     -        h
1214	r32_w(IR[0], do_rotr32(r32_r(IR[0])));
1215	prefetch();
1216
121713c0         fff0         0 rotr.b   two      r8l      s20
1218	r8_w(IR[0], do_rotr2_8(r8_r(IR[0])));
1219	prefetch();
1220
122113d0         fff0         0 rotr.w   two      r16l     s20
1222	r16_w(IR[0], do_rotr2_16(r16_r(IR[0])));
1223	prefetch();
1224
122513f0         fff8         0 rotr.l   two      r32l     s20
1226	r32_w(IR[0], do_rotr2_32(r32_r(IR[0])));
1227	prefetch();
1228
12291400         ff00         0 or.b     r8h      r8l
1230	TMP1 = r8_r(IR[0] >> 4) | r8_r(IR[0]);
1231	set_nzv8(TMP1);
1232	r8_w(IR[0], TMP1);
1233	prefetch();
1234
12351500         ff00         0 xor.b    r8h      r8l
1236	TMP1 = r8_r(IR[0] >> 4) ^ r8_r(IR[0]);
1237	set_nzv8(TMP1);
1238	r8_w(IR[0], TMP1);
1239	prefetch();
1240
12411600         ff00         0 and.b    r8h      r8l
1242	TMP1 = r8_r(IR[0] >> 4) & r8_r(IR[0]);
1243	set_nzv8(TMP1);
1244	r8_w(IR[0], TMP1);
1245	prefetch();
1246
12471700         fff0         0 not.b    r8l      -
1248	TMP1 = ~r8_r(IR[0]);
1249	set_nzv8(TMP1);
1250	r8_w(IR[0], TMP1);
1251	prefetch();
1252
12531710         fff0         0 not.w    r16l     -        h
1254	TMP1 = ~r16_r(IR[0]);
1255	set_nzv16(TMP1);
1256	r16_w(IR[0], TMP1);
1257	prefetch();
1258
12591730         fff8         0 not.l    r32l     -        h
1260	TMP1 = ~r32_r(IR[0]);
1261	set_nzv32(TMP1);
1262	r32_w(IR[0], TMP1);
1263	prefetch();
1264
12651750         fff0         0 extu.w   r16l     -        h
1266	CCR &= ~(F_N|F_Z|F_V);
1267	TMP1 = uint8_t(r16_r(IR[0]));
1268	if(!TMP1)
1269		CCR |= F_Z;
1270	r16_w(IR[0], TMP1);
1271	prefetch();
1272
12731770         fff8         0 extu.l   r32l     -        h
1274	CCR &= ~(F_N|F_Z|F_V);
1275	TMP1 = uint16_t(r32_r(IR[0]));
1276	if(!TMP1)
1277		CCR |= F_Z;
1278	r32_w(IR[0], TMP1);
1279	prefetch();
1280
12811780         fff0         0 neg.b    r8l      -
1282	r8_w(IR[0], do_sub8(0, r8_r(IR[0])));
1283	prefetch();
1284
12851790         fff0         0 neg.w    r16l     -        h
1286	r16_w(IR[0], do_sub16(0, r16_r(IR[0])));
1287	prefetch();
1288
128917b0         fff8         0 neg.l    r32l     -        h
1290	r32_w(IR[0], do_sub32(0, r32_r(IR[0])));
1291	prefetch();
1292
129317d0         fff0         0 exts.w   r16l     -        h
1294	CCR &= ~(F_N|F_Z|F_V);
1295	TMP1 = int8_t(r16_r(IR[0]));
1296	if(!TMP1)
1297		CCR |= F_Z;
1298	r16_w(IR[0], TMP1);
1299	prefetch();
1300
130117f0         fff8         0 exts.l   r32l     -        h
1302	CCR &= ~(F_N|F_Z|F_V);
1303	TMP1 = int16_t(r32_r(IR[0]));
1304	if(!TMP1)
1305		CCR |= F_Z;
1306	r32_w(IR[0], TMP1);
1307	prefetch();
1308
13091800         ff00         0 sub.b    r8h      r8l
1310	r8_w(IR[0], do_sub8(r8_r(IR[0]), r8_r(IR[0] >> 4)));
1311	prefetch();
1312
13131900         ff00         0 sub.w    r16h     r16l
1314	r16_w(IR[0], do_sub16(r16_r(IR[0]), r16_r(IR[0] >> 4)));
1315	prefetch();
1316
13171a00         fff0         0 dec.b    one      r8l
1318	r8_w(IR[0], do_dec8(r8_r(IR[0]), 1));
1319	prefetch();
1320
13211a80         ff88         0 sub.l    r32h     r32l     h
1322	r32_w(IR[0], do_sub32(r32_r(IR[0]), r32_r(IR[0] >> 4)));
1323	prefetch();
1324
13251b00         fff8         0 subs.l   one      r16l     o
1326	r16_w(IR[0], r16_r(IR[0])-1);
1327	prefetch();
1328
13291b00         fff8         0 subs.l   one      r32l     h
1330	r32_w(IR[0], r32_r(IR[0])-1);
1331	prefetch();
1332
13331b50         fff0         0 dec.w    one      r16l
1334	r16_w(IR[0], do_dec16(r16_r(IR[0]), 1));
1335	prefetch();
1336
13371b70         fff8         0 dec.l    one      r32l     h
1338	r32_w(IR[0], do_dec32(r32_r(IR[0]), 1));
1339	prefetch();
1340
13411b80         fff8         0 subs.l   two      r16l     o
1342	r16_w(IR[0], r16_r(IR[0])-2);
1343	prefetch();
1344
13451b80         fff8         0 subs.l   two      r32l     h
1346	r32_w(IR[0], r32_r(IR[0])-2);
1347	prefetch();
1348
13491b90         fff8         0 subs.l   four     r16l     o
1350	r16_w(IR[0], r16_r(IR[0])-4);
1351	prefetch();
1352
13531b90         fff8         0 subs.l   four     r32l     h
1354	r32_w(IR[0], r32_r(IR[0])-4);
1355	prefetch();
1356
13571bd0         fff0         0 dec.w    two      r16l
1358	r16_w(IR[0], do_dec16(r16_r(IR[0]), 2));
1359	prefetch();
1360
13611bf0         fff8         0 dec.l    two      r32l     h
1362	r32_w(IR[0], do_dec32(r32_r(IR[0]), 2));
1363	prefetch();
1364
13651c00         ff00         0 cmp.b    r8h      r8l
1366	do_sub8(r8_r(IR[0]), r8_r(IR[0] >> 4));
1367	prefetch();
1368
13691d00         ff00         0 cmp.w    r16h     r16l
1370	do_sub16(r16_r(IR[0]), r16_r(IR[0] >> 4));
1371	prefetch();
1372
13731e00         ff00         0 subx.b   r8h      r8l
1374	r8_w(IR[0], do_subx8(r8_r(IR[0]), r8_r(IR[0] >> 4)));
1375	prefetch();
1376
13771f00         fff0         0 das.b    r8l      -
1378	TMP1 = r8_r(IR[0]);
1379	TMP2 = 0;
1380	if(CCR & F_C) {
1381		if(CCR & F_H) {
1382			if((TMP1 & 0xf0) >= 0x60 && (TMP1 & 0x0f) >= 6)
1383				TMP2 = 0x9a;
1384		} else {
1385			if((TMP1 & 0xf0) >= 0x70 && (TMP1 & 0x0f) <= 9)
1386				TMP2 = 0xa0;
1387		}
1388	} else {
1389		if(CCR & F_H) {
1390			if((TMP1 & 0xf0) <= 0x80 && (TMP1 & 0x0f) >= 6)
1391				TMP2 = 0xfa;
1392		}
1393	}
1394	r8_w(IR[0], do_add8(TMP1, TMP2));
1395	prefetch();
1396
13971f80         ff88         0 cmp.l    r32h     r32l     h
1398	do_sub32(r32_r(IR[0]), r32_r(IR[0] >> 4));
1399	prefetch();
1400
14012000         f000         0 mov.b    abs8     r8u
1402	prefetch_start();
1403	TMP1 = read8(0xffffff00 | IR[0]);
1404	set_nzv8(TMP1);
1405	r8_w(IR[0] >> 8, TMP1);
1406	prefetch_done();
1407
14083000         f000         0 mov.b    r8u      abs8
1409	prefetch_start();
1410	TMP1 = r8_r(IR[0] >> 8);
1411	set_nzv8(TMP1);
1412	write8(0xffffff00 | IR[0], TMP1);
1413	prefetch_done();
1414
14154000         ff00         0 bt       rel8     -
1416	bxx_8 true
1417
14184100         ff00         0 bf       rel8     -
1419	bxx_8 false
1420
14214200         ff00         0 bhi      rel8     -
1422	bxx_8 !(CCR & (F_C|F_Z))
1423
14244300         ff00         0 bls      rel8     -
1425	bxx_8 CCR & (F_C|F_Z)
1426
14274400         ff00         0 bcc      rel8     -
1428	bxx_8 !(CCR & F_C)
1429
14304500         ff00         0 bcs      rel8     -
1431	bxx_8 CCR & F_C
1432
14334600         ff00         0 bne      rel8     -
1434	bxx_8 !(CCR & F_Z)
1435
14364700         ff00         0 beq      rel8     -
1437	bxx_8 CCR & F_Z
1438
14394800         ff00         0 bvc      rel8     -
1440	bxx_8 !(CCR & F_V)
1441
14424900         ff00         0 bvs      rel8     -
1443	bxx_8 CCR & F_V
1444
14454a00         ff00         0 bpl      rel8     -
1446	bxx_8 !(CCR & F_N)
1447
14484b00         ff00         0 bmi      rel8     -
1449	bxx_8 CCR & F_N
1450
14514c00         ff00         0 bge      rel8     -
1452	bxx_8 !((CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V)
1453
14544d00         ff00         0 blt      rel8     -
1455	bxx_8 (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V
1456
14574e00         ff00         0 bgt      rel8     -
1458	bxx_8 !((CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V)
1459
14604f00         ff00         0 ble      rel8     -
1461	bxx_8 (CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V
1462
14635000         ff00         0 mulxu.b  r8h      r16l
1464	prefetch_start();
1465	r16_w(IR[0], uint8_t(r16_r(IR[0])) * r8_r(IR[0] >> 4));
1466	internal(2);
1467	prefetch_done();
1468
14695100         ff00         0 divxu.b  r8h      r16l
1470	prefetch_start();
1471	internal(11);
1472	TMP1 = r16_r(IR[0]);
1473	TMP2 = r8_r(IR[0] >> 4);
1474	CCR &= ~(F_Z|F_N);
1475	if(TMP2 & 0x80)
1476		CCR |= F_N;
1477	if(!TMP2) {
1478		CCR |= F_Z;
1479	} else {
1480		int q = TMP1 / TMP2;
1481		int r = TMP1 % TMP2;
1482		r16_w(IR[0], (q & 0xff) | ((r & 0xff) << 8));
1483	}
1484	prefetch_done();
1485
14865200         ff08         0 mulxu.w  r16h     r32l     h
1487	prefetch_start();
1488	r32_w(IR[0], uint16_t(r32_r(IR[0])) * r16_r(IR[0] >> 4));
1489	internal(3);
1490	prefetch_done();
1491
14925300         ff08         0 divxu.w  r16h     r32l     h
1493	prefetch_start();
1494	internal(11);
1495	TMP1 = r32_r(IR[0]);
1496	TMP2 = r16_r(IR[0] >> 4);
1497	CCR &= ~(F_Z|F_N);
1498	if(TMP2 & 0x80)
1499		CCR |= F_N;
1500	if(!TMP2) {
1501		CCR |= F_Z;
1502	} else {
1503		int q = TMP1 / TMP2;
1504		int r = TMP1 % TMP2;
1505		r32_w(IR[0], (q & 0xffff) | ((r & 0xffff) << 16));
1506	}
1507	prefetch_done();
1508
15095470         ffff         0 rts      -        -        o
1510	fetch();
1511	TMP1 = r16_r(7);
1512	TMP2 = read16(TMP1);
1513	r16_w(7, TMP1+2);
1514	internal(1);
1515	PC = TMP2;
1516	prefetch();
1517
15185470         ffff         0 rts      -        -        h
1519	fetch();
1520	TMP1 = r32_r(7);
1521	if(mode_advanced) {
1522		TMP2 = read16(TMP1) << 16;
1523		TMP2 |= read16(TMP1+2);
1524		r32_w(7, TMP1+4);
1525	} else {
1526		TMP2 = read16(TMP1);
1527		r32_w(7, TMP1+2);
1528	}
1529	internal(1);
1530	PC = TMP2;
1531	prefetch();
1532
15335500         ff00         0 bsr      rel8     -        o
1534	TMP2 = PC;
1535	PC += int8_t(IR[0]);
1536	jsr16 TMP2 TMP1
1537
15385500         ff00         0 bsr      rel8     -        h
1539	TMP2 = PC;
1540	PC += int8_t(IR[0]);
1541	jsr32 TMP2 TMP1
1542
15435670         ffff         0 rte      -        -        o
1544	fetch();
1545	TMP1 = r16_r(7);
1546	CCR = read16(TMP1) >> 8;
1547	TMP1 = r16_r(7);
1548	TMP2 = read16(TMP1+2);
1549	r16_w(7, TMP1+4);
1550	internal(1);
1551	PC = TMP2;
1552	update_irq_filter();
1553	prefetch_noirq_notrace();
1554
15555670         ffff         0 rte      -        -        h
1556	fetch();
1557	TMP1 = r32_r(7);
1558	if(mode_advanced) {
1559		if(exr_in_stack()) {
1560			EXR = (read16(TMP1) >> 8) | EXR_NC;
1561			TMP1 += 2;
1562		}
1563		TMP2 = read16(TMP1);
1564		CCR = TMP2 >> 8;
1565		TMP2 = (TMP2 & 0xff) << 16;
1566		TMP2 |= read16(TMP1+2);
1567		r32_w(7, TMP1+4);
1568	} else {
1569		TMP2 = read16(TMP1);
1570		r32_w(7, TMP1+2);
1571	}
1572	internal(1);
1573	PC = TMP2;
1574	update_irq_filter();
1575	prefetch_noirq_notrace();
1576
15775700         ffcf         0 trapa    imm2     -        h
1578	internal(1);
1579	TMP1 = r32_r(7) - 2;
1580	r32_w(7, TMP1);
1581	write16(TMP1, NPC);
1582	TMP1 = r32_r(7) - 2;
1583	r32_w(7, TMP1);
1584	write16(TMP1, (CCR << 8) | ((NPC >> 16) & 0xff));
1585	if(exr_in_stack()) {
1586		TMP1 = r32_r(7) - 2;
1587		r32_w(7, TMP1);
1588		write16(TMP1, EXR << 8);
1589	}
1590	taken_irq_vector = trapa_setup() + ((IR[0] >> 4) & 3);
1591	if(mode_advanced) {
1592		IR[0] = read16i(4*taken_irq_vector);
1593		IR[1] = read16i(4*taken_irq_vector+2);
1594		PC = (IR[0] << 16) | IR[1];
1595	} else {
1596		PC = read16i(2*taken_irq_vector);
1597	}
1598	internal(1);
1599	update_irq_filter();
1600	prefetch();
1601
16025800         ffff         0 bt       rel16    -        h
1603	bxx_16 true
1604
16055810         ffff         0 bf       rel16    -        h
1606	bxx_16 false
1607
16085820         ffff         0 bhi      rel16    -        h
1609	bxx_16 !(CCR & (F_C|F_Z))
1610
16115830         ffff         0 bls      rel16    -        h
1612	bxx_16 CCR & (F_C|F_Z)
1613
16145840         ffff         0 bcc      rel16    -        h
1615	bxx_16 !(CCR & F_C)
1616
16175850         ffff         0 bcs      rel16    -        h
1618	bxx_16 CCR & F_C
1619
16205860         ffff         0 bne      rel16    -        h
1621	bxx_16 !(CCR & F_Z)
1622
16235870         ffff         0 beq      rel16    -        h
1624	bxx_16 CCR & F_Z
1625
16265880         ffff         0 bvc      rel16    -        h
1627	bxx_16 !(CCR & F_V)
1628
16295890         ffff         0 bvs      rel16    -        h
1630	bxx_16 CCR & F_V
1631
163258a0         ffff         0 bpl      rel16    -        h
1633	bxx_16 !(CCR & F_N)
1634
163558b0         ffff         0 bmi      rel16    -        h
1636	bxx_16 CCR & F_N
1637
163858c0         ffff         0 bge      rel16    -        h
1639	bxx_16 !((CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V)
1640
164158d0         ffff         0 blt      rel16    -        h
1642	bxx_16 (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V
1643
164458e0         ffff         0 bgt      rel16    -        h
1645	bxx_16 !((CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V)
1646
164758f0         ffff         0 ble      rel16    -        h
1648	bxx_16 (CCR & F_Z) || (CCR & (F_N|F_V)) == F_N || (CCR & (F_N|F_V)) == F_V
1649
16505900         ff8f         0 jmp      r32h     -        h
1651	fetch();
1652	PC = r32_r(IR[0] >> 4);
1653	prefetch();
1654
16555a00         ffff         0 jmp      abs16e   -        o
1656	internal(1);
1657	PC = IR[1];
1658	prefetch();
1659
16605a00         ff00         0 jmp      abs24e   -        h
1661	internal(1);
1662	PC = ((IR[0] & 0xff) << 16) | IR[1];
1663	prefetch();
1664
16655b00         ff00         0 jmp      abs8i    -        o
1666	fetch();
1667	PC = read16(IR[0] & 0xff);
1668	internal(1);
1669	prefetch();
1670
16715b00         ff00         0 jmp      abs8i    -        h
1672	fetch();
1673	if(mode_advanced) {
1674		TMP1 = read16(IR[0] & 0xff) << 16;
1675		TMP1 |= read16((IR[0] & 0xff) + 2);
1676		PC = TMP1;
1677	} else {
1678		PC = read16(IR[0] & 0xff);
1679	}
1680	internal(1);
1681	prefetch();
1682
16835c00         ffff         0 bsr      rel16    -        h
1684	internal(1);
1685	TMP2 = PC;
1686	PC += int16_t(IR[1]);
1687	jsr32 TMP2 TMP1
1688
16895d00         ff8f         0 jsr      r16h     -        o
1690	TMP2 = PC;
1691	PC = r16_r(IR[0] >> 4);
1692	jsr16 TMP2 TMP1
1693
16945d00         ff8f         0 jsr      r32h     -        h
1695	TMP2 = PC;
1696	PC = r32_r(IR[0] >> 4);
1697	jsr32 TMP2 TMP1
1698
16995e00         ffff         0 jsr      abs16e   -        o
1700	internal(1);
1701	TMP2 = PC;
1702	PC = IR[1];
1703	jsr16 TMP2 TMP1
1704
17055e00         ff00         0 jsr      abs24e   -        h
1706	internal(1);
1707	TMP2 = PC;
1708	PC = ((IR[0] & 0xff) << 16) | IR[1];
1709	jsr32 TMP2 TMP1
1710
17115f00         ff00         0 jsr      abs8i    -        o
1712	fetch();
1713	TMP2 = PC;
1714	PC = read16(IR[0] & 0xff);
1715	jsr16 TMP2 TMP1
1716
17175f00         ff00         0 jsr      abs8i    -        h
1718	fetch();
1719	TMP2 = PC;
1720	if(mode_advanced) {
1721		TMP1 = read16(IR[0] & 0xff) << 16;
1722		TMP1 |= read16((IR[0] & 0xff) + 2);
1723		PC = TMP1;
1724	} else {
1725		PC = read16(IR[0] & 0xff);
1726	}
1727	jsr32 TMP2 TMP1
1728
17296000         ff00         0 bset     r8h      r8l
1730	TMP1 = r8_r(IR[0]);
1731	bset r8_r(IR[0] >> 4)
1732	r8_w(IR[0], TMP1);
1733	prefetch();
1734
17356100         ff00         0 bnot     r8h      r8l
1736	TMP1 = r8_r(IR[0]);
1737	bnot r8_r(IR[0] >> 4)
1738	r8_w(IR[0], TMP1);
1739	prefetch();
1740
17416200         ff00         0 bclr     r8h      r8l
1742	TMP1 = r8_r(IR[0]);
1743	bclr r8_r(IR[0] >> 4)
1744	r8_w(IR[0], TMP1);
1745	prefetch();
1746
17476300         ff00         0 btst     r8h      r8l
1748	TMP1 = r8_r(IR[0]);
1749	btst r8_r(IR[0] >> 4)
1750	prefetch();
1751
17526400         ff00         0 or.w     r16h     r16l     h
1753	TMP1 = r16_r(IR[0] >> 4) | r16_r(IR[0]);
1754	set_nzv16(TMP1);
1755	r16_w(IR[0], TMP1);
1756	prefetch();
1757
17586500         ff00         0 xor.w    r16h     r16l     h
1759	TMP1 = r16_r(IR[0] >> 4) ^ r16_r(IR[0]);
1760	set_nzv16(TMP1);
1761	r16_w(IR[0], TMP1);
1762	prefetch();
1763
17646600         ff00         0 and.w    r16h     r16l     h
1765	TMP1 = r16_r(IR[0] >> 4) & r16_r(IR[0]);
1766	set_nzv16(TMP1);
1767	r16_w(IR[0], TMP1);
1768	prefetch();
1769
17706700         ff80         0 bst      imm3     r8l
1771	TMP1 = r8_r(IR[0]);
1772	bst IR[0] >> 4
1773	r8_w(IR[0], TMP1);
1774	prefetch();
1775
17766780         ff80         0 bist     imm3     r8l
1777	TMP1 = r8_r(IR[0]);
1778	bist IR[0] >> 4
1779	r8_w(IR[0], TMP1);
1780	prefetch();
1781
17826800         ff80         0 mov.b    r16ih    r8l      o
1783	prefetch_start();
1784	TMP1 = read8(r16_r(IR[0] >> 4));
1785	set_nzv8(TMP1);
1786	r8_w(IR[0], TMP1);
1787	prefetch_done();
1788
17896800         ff80         0 mov.b    r32ih    r8l      h
1790	prefetch_start();
1791	TMP1 = read8(r32_r(IR[0] >> 4));
1792	set_nzv8(TMP1);
1793	r8_w(IR[0], TMP1);
1794	prefetch_done();
1795
17966880         ff80         0 mov.b    r8l      r16ih    o
1797	prefetch_start();
1798	TMP1 = r8_r(IR[0]);
1799	set_nzv8(TMP1);
1800	write8(r16_r((IR[0] >> 4) & 7), TMP1);
1801	prefetch_done();
1802
18036880         ff80         0 mov.b    r8l      r32ih    h
1804	prefetch_start();
1805	TMP1 = r8_r(IR[0]);
1806	set_nzv8(TMP1);
1807	write8(r32_r(IR[0] >> 4), TMP1);
1808	prefetch_done();
1809
18106900         ff88         0 mov.w    r16ih    r16l     o
1811	prefetch_start();
1812	TMP1 = read16(r16_r(IR[0] >> 4));
1813	set_nzv16(TMP1);
1814	r16_w(IR[0], TMP1);
1815	prefetch_done();
1816
18176900         ff80         0 mov.w    r32ih    r16l     h
1818	prefetch_start();
1819	TMP1 = read16(r32_r(IR[0] >> 4));
1820	set_nzv16(TMP1);
1821	r16_w(IR[0], TMP1);
1822	prefetch_done();
1823
18246980         ff88         0 mov.w    r16l     r16ih    o
1825	prefetch_start();
1826	TMP1 = r16_r(IR[0]);
1827	set_nzv16(TMP1);
1828	write16(r16_r((IR[0] >> 4) & 7), TMP1);
1829	prefetch_done();
1830
18316980         ff80         0 mov.w    r16l     r32ih    h
1832	prefetch_start();
1833	TMP1 = r16_r(IR[0]);
1834	set_nzv16(TMP1);
1835	write16(r32_r(IR[0] >> 4), TMP1);
1836	prefetch_done();
1837
18386a00         fff0         0 mov.b    abs16    r8l
1839	prefetch_start();
1840	TMP1 = read8(int16_t(IR[1]));
1841	set_nzv8(TMP1);
1842	r8_w(IR[0], TMP1);
1843	prefetch_done();
1844
18456a106300     ffffff0f     1 btst     r8h      abs16
1846	TMP2 = int16_t(IR[1]);
1847	TMP1 = read8(TMP2);
1848	btst r8_r(IR[2] >> 4)
1849	prefetch();
1850
18516a107300     ffffff8f     1 btst     imm3     abs16
1852	TMP2 = int16_t(IR[1]);
1853	TMP1 = read8(TMP2);
1854	btst IR[2] >> 4
1855	prefetch();
1856
18576a107400     ffffff8f     1 bor      imm3     abs16
1858	TMP2 = int16_t(IR[1]);
1859	TMP1 = read8(TMP2);
1860	bor IR[2] >> 4
1861	prefetch();
1862
18636a107480     ffffff8f     1 bior     imm3     abs16
1864	TMP2 = int16_t(IR[1]);
1865	TMP1 = read8(TMP2);
1866	bior IR[2] >> 4
1867	prefetch();
1868
18696a107500     ffffff8f     1 bxor     imm3     abs16
1870	TMP2 = int16_t(IR[1]);
1871	TMP1 = read8(TMP2);
1872	bxor IR[2] >> 4
1873	prefetch();
1874
18756a107580     ffffff8f     1 bixor    imm3     abs16
1876	TMP2 = int16_t(IR[1]);
1877	TMP1 = read8(TMP2);
1878	bixor IR[2] >> 4
1879	prefetch();
1880
18816a107600     ffffff8f     1 band     imm3     abs16
1882	TMP2 = int16_t(IR[1]);
1883	TMP1 = read8(TMP2);
1884	band IR[2] >> 4
1885	prefetch();
1886
18876a107680     ffffff8f     1 biand    imm3     abs16
1888	TMP2 = int16_t(IR[1]);
1889	TMP1 = read8(TMP2);
1890	biand IR[2] >> 4
1891	prefetch();
1892
18936a107700     ffffff8f     1 bld      imm3     abs16
1894	TMP2 = int16_t(IR[1]);
1895	TMP1 = read8(TMP2);
1896	bld IR[2] >> 4
1897	prefetch();
1898
18996a107780     ffffff8f     1 bild     imm3     abs16
1900	TMP2 = int16_t(IR[1]);
1901	TMP1 = read8(TMP2);
1902	bild IR[2] >> 4
1903	prefetch();
1904
19056a186000     ffffff0f     1 bset     r8h      abs16
1906	TMP2 = int16_t(IR[1]);
1907	TMP1 = read8(TMP2);
1908	prefetch_start();
1909	bset r8_r(IR[2] >> 4)
1910	write8(TMP2, TMP1);
1911	prefetch_done();
1912
19136a186100     ffffff0f     1 bnot     r8h      abs16
1914	TMP2 = int16_t(IR[1]);
1915	TMP1 = read8(TMP2);
1916	prefetch_start();
1917	bnot r8_r(IR[2] >> 4)
1918	write8(TMP2, TMP1);
1919	prefetch_done();
1920
19216a186200     ffffff0f     1 bclr     r8h      abs16
1922	TMP2 = int16_t(IR[1]);
1923	TMP1 = read8(TMP2);
1924	prefetch_start();
1925	bclr r8_r(IR[2] >> 4)
1926	write8(TMP2, TMP1);
1927	prefetch_done();
1928
19296a186700     ffffff8f     1 bst      imm3     abs16
1930	TMP2 = int16_t(IR[2]);
1931	TMP1 = read8(TMP2);
1932	prefetch_start();
1933	bst IR[2] >> 4
1934	write8(TMP2, TMP1);
1935	prefetch_done();
1936
19376a186780     ffffff8f     1 bist     imm3     abs16
1938	TMP2 = int16_t(IR[1]);
1939	TMP1 = read8(TMP2);
1940	prefetch_start();
1941	bist IR[2] >> 4
1942	write8(TMP2, TMP1);
1943	prefetch_done();
1944
19456a187000     ffffff8f     1 bset     imm3     abs16
1946	TMP2 = int16_t(IR[1]);
1947	TMP1 = read8(TMP2);
1948	prefetch_start();
1949	bset IR[2] >> 4
1950	write8(TMP2, TMP1);
1951	prefetch_done();
1952
19536a187100     ffffff8f     1 bnot     imm3     abs16
1954	TMP2 = int16_t(IR[1]);
1955	TMP1 = read8(TMP2);
1956	prefetch_start();
1957	bnot IR[2] >> 4
1958	write8(TMP2, TMP1);
1959	prefetch_done();
1960
19616a187200     ffffff8f     1 bclr     imm3     abs16
1962	TMP2 = int16_t(IR[1]);
1963	TMP1 = read8(TMP2);
1964	prefetch_start();
1965	bclr IR[2] >> 4
1966	write8(TMP2, TMP1);
1967	prefetch_done();
1968
19696a20         fff0         0 mov.b    abs32    r8l      h
1970	prefetch_start();
1971	TMP1 = read8((IR[1] << 16) | IR[2]);
1972	set_nzv8(TMP1);
1973	r8_w(IR[0], TMP1);
1974	prefetch_done();
1975
19766a306300     ffffff0f     2 btst     r8h      abs32    h
1977	TMP2 = (IR[1] << 16) | IR[2];
1978	TMP1 = read8(TMP2);
1979	btst r8_r(IR[3] >> 4)
1980	prefetch();
1981
19826a307300     ffffff8f     2 btst     imm3     abs32    h
1983	TMP2 = (IR[1] << 16) | IR[2];
1984	TMP1 = read8(TMP2);
1985	btst IR[3] >> 4
1986	prefetch();
1987
19886a307400     ffffff8f     2 bor      imm3     abs32    h
1989	TMP2 = (IR[1] << 16) | IR[2];
1990	TMP1 = read8(TMP2);
1991	bor IR[3] >> 4
1992	prefetch();
1993
19946a307480     ffffff8f     2 bior     imm3     abs32    h
1995	TMP2 = (IR[1] << 16) | IR[2];
1996	TMP1 = read8(TMP2);
1997	bior IR[3] >> 4
1998	prefetch();
1999
20006a307500     ffffff8f     2 bxor     imm3     abs32    h
2001	TMP2 = (IR[1] << 16) | IR[2];
2002	TMP1 = read8(TMP2);
2003	bxor IR[3] >> 4
2004	prefetch();
2005
20066a307580     ffffff8f     2 bixor    imm3     abs32    h
2007	TMP2 = (IR[1] << 16) | IR[2];
2008	TMP1 = read8(TMP2);
2009	bixor IR[3] >> 4
2010	prefetch();
2011
20126a307600     ffffff8f     2 band     imm3     abs32    h
2013	TMP2 = (IR[1] << 16) | IR[2];
2014	TMP1 = read8(TMP2);
2015	band IR[3] >> 4
2016	prefetch();
2017
20186a307680     ffffff8f     2 biand    imm3     abs32    h
2019	TMP2 = (IR[1] << 16) | IR[2];
2020	TMP1 = read8(TMP2);
2021	biand IR[3] >> 4
2022	prefetch();
2023
20246a307700     ffffff8f     2 bld      imm3     abs32    h
2025	TMP2 = (IR[1] << 16) | IR[2];
2026	TMP1 = read8(TMP2);
2027	bld IR[3] >> 4
2028	prefetch();
2029
20306a307780     ffffff8f     2 bild     imm3     abs32    h
2031	TMP2 = (IR[1] << 16) | IR[2];
2032	TMP1 = read8(TMP2);
2033	bild IR[3] >> 4
2034	prefetch();
2035
20366a386000     ffffff0f     2 bset     r8h      abs32    h
2037	TMP2 = (IR[1] << 16) | IR[2];
2038	TMP1 = read8(TMP2);
2039	prefetch_start();
2040	bset r8_r(IR[3] >> 4)
2041	write8(TMP2, TMP1);
2042	prefetch_done();
2043
20446a386100     ffffff0f     2 bnot     r8h      abs32    h
2045	TMP2 = (IR[1] << 16) | IR[2];
2046	TMP1 = read8(TMP2);
2047	prefetch_start();
2048	bnot r8_r(IR[3] >> 4)
2049	write8(TMP2, TMP1);
2050	prefetch_done();
2051
20526a386200     ffffff0f     2 bclr     r8h      abs32    h
2053	TMP2 = (IR[1] << 16) | IR[2];
2054	TMP1 = read8(TMP2);
2055	prefetch_start();
2056	bclr r8_r(IR[3] >> 4)
2057	write8(TMP2, TMP1);
2058	prefetch_done();
2059
20606a386700     ffffff8f     2 bst      imm3     abs32    h
2061	TMP2 = (IR[1] << 16) | IR[2];
2062	TMP1 = read8(TMP2);
2063	prefetch_start();
2064	bst IR[3] >> 4
2065	write8(TMP2, TMP1);
2066	prefetch_done();
2067
20686a386780     ffffff8f     2 bist     imm3     abs32    h
2069	TMP2 = (IR[1] << 16) | IR[2];
2070	TMP1 = read8(TMP2);
2071	prefetch_start();
2072	bist IR[3] >> 4
2073	write8(TMP2, TMP1);
2074	prefetch_done();
2075
20766a387000     ffffff8f     2 bset     imm3     abs32    h
2077	TMP2 = (IR[1] << 16) | IR[2];
2078	TMP1 = read8(TMP2);
2079	prefetch_start();
2080	bset IR[3] >> 4
2081	write8(TMP2, TMP1);
2082	prefetch_done();
2083
20846a387100     ffffff8f     2 bnot     imm3     abs32    h
2085	TMP2 = (IR[1] << 16) | IR[2];
2086	TMP1 = read8(TMP2);
2087	prefetch_start();
2088	bnot IR[3] >> 4
2089	write8(TMP2, TMP1);
2090	prefetch_done();
2091
20926a387200     ffffff8f     2 bclr     imm3     abs32    h
2093	TMP2 = (IR[1] << 16) | IR[2];
2094	TMP1 = read8(TMP2);
2095	prefetch_start();
2096	bclr IR[3] >> 4
2097	write8(TMP2, TMP1);
2098	prefetch_done();
2099
21006a40         fff0         0 movfpe   abs16    r8l
21016a80         fff0         0 mov.b    r8l      abs16
2102	prefetch_start();
2103	TMP1 = r8_r(IR[0]);
2104	set_nzv8(TMP1);
2105	write8(int16_t(IR[1]), TMP1);
2106	prefetch_done();
2107
21086aa0         fff0         0 mov.b    r8l      abs32    h
2109	prefetch_start();
2110	TMP1 = r8_r(IR[0]);
2111	set_nzv8(TMP1);
2112	write8((IR[1] << 16) | IR[2], TMP1);
2113	prefetch_done();
2114
21156ac0         fff0         0 movtpe   r8l      abs16
21166b00         fff0         0 mov.w    abs16    r16l
2117	prefetch_start();
2118	TMP1 = read16(int16_t(IR[1]));
2119	set_nzv16(TMP1);
2120	r16_w(IR[0], TMP1);
2121	prefetch_done();
2122
21236b20         fff0         0 mov.w    abs32    r16l     h
2124	prefetch_start();
2125	TMP1 = read16((IR[1] << 16) | IR[2]);
2126	set_nzv16(TMP1);
2127	r16_w(IR[0], TMP1);
2128	prefetch_done();
2129
21306b80         fff0         0 mov.w    r16l     abs16
2131	prefetch_start();
2132	TMP1 = r16_r(IR[0]);
2133	set_nzv16(TMP1);
2134	write16(int16_t(IR[1]), TMP1);
2135	prefetch_done();
2136
21376ba0         fff0         0 mov.w    r16l     abs32    h
2138	prefetch_start();
2139	TMP1 = r16_r(IR[0]);
2140	set_nzv16(TMP1);
2141	write16((IR[1] << 16) | IR[2], TMP1);
2142	prefetch_done();
2143
21446c00         ff80         0 mov.b    r16ph    r8l      o
2145	TMP2 = r16_r(IR[0] >> 4);
2146	prefetch_start();
2147	internal(1);
2148	TMP1 = read8(TMP2);
2149	TMP2 += 1;
2150	r16_w(IR[0] >> 4, TMP2);
2151	set_nzv8(TMP1);
2152	r8_w(IR[0], TMP1);
2153	prefetch_done();
2154
21556c00         ff80         0 mov.b    r32ph    r8l      h
2156	TMP2 = r32_r(IR[0] >> 4);
2157	prefetch_start();
2158	internal(1);
2159	TMP1 = read8(TMP2);
2160	TMP2 += 1;
2161	r32_w(IR[0] >> 4, TMP2);
2162	set_nzv8(TMP1);
2163	r8_w(IR[0], TMP1);
2164	prefetch_done();
2165
21666c80         ff80         0 mov.b    r8l      pr16h    o
2167	TMP1 = r8_r(IR[0]);
2168	TMP2 = r16_r((IR[0] >> 4) & 7);
2169	prefetch_start();
2170	internal(1);
2171	TMP2 -= 1;
2172	r16_w((IR[0] >> 4) & 7, TMP2);
2173	set_nzv8(TMP1);
2174	write8(TMP2, TMP1);
2175	prefetch_done();
2176
21776c80         ff80         0 mov.b    r8l      pr32h    h
2178	TMP1 = r8_r(IR[0]);
2179	TMP2 = r32_r(IR[0] >> 4);
2180	prefetch_start();
2181	internal(1);
2182	TMP2 -= 1;
2183	r32_w(IR[0] >> 4, TMP2);
2184	set_nzv8(TMP1);
2185	write8(TMP2, TMP1);
2186	prefetch_done();
2187
21886d00         ff88         0 mov.w    r16ph    r16l     o
2189	TMP2 = r16_r(IR[0] >> 4);
2190	prefetch_start();
2191	internal(1);
2192	TMP1 = read16(TMP2);
2193	TMP2 += 2;
2194	r16_w(IR[0] >> 4, TMP2);
2195	set_nzv16(TMP1);
2196	r16_w(IR[0], TMP1);
2197	prefetch_done();
2198
21996d00         ff80         0 mov.w    r32ph    r16l     h
2200	TMP2 = r32_r(IR[0] >> 4);
2201	prefetch_start();
2202	internal(1);
2203	TMP1 = read16(TMP2);
2204	TMP2 += 2;
2205	r32_w(IR[0] >> 4, TMP2);
2206	set_nzv16(TMP1);
2207	r16_w(IR[0], TMP1);
2208	prefetch_done();
2209
22106d80         ff88         0 mov.w    r16l     pr16h    o
2211	TMP1 = r16_r(IR[0]);
2212	TMP2 = r16_r((IR[0] >> 4) & 7);
2213	prefetch_start();
2214	internal(1);
2215	TMP2 -= 2;
2216	r16_w((IR[0] >> 4) & 7, TMP2);
2217	set_nzv16(TMP1);
2218	write16(TMP2, TMP1);
2219	prefetch_done();
2220
22216d80         ff80         0 mov.w    r16l     pr32h    h
2222	TMP1 = r16_r(IR[0]);
2223	TMP2 = r32_r(IR[0] >> 4);
2224	prefetch_start();
2225	internal(1);
2226	TMP2 -= 2;
2227	r32_w(IR[0] >> 4, TMP2);
2228	set_nzv16(TMP1);
2229	write16(TMP2, TMP1);
2230	prefetch_done();
2231
22326e00         ff80         0 mov.b    r16d16h  r8l      o
2233	prefetch_start();
2234	TMP1 = uint16_t(r16_r(IR[0] >> 4) + IR[1]);
2235	TMP2 = read8(TMP1);
2236	set_nzv8(TMP2);
2237	r8_w(IR[0], TMP2);
2238	prefetch_done();
2239
22406e00         ff80         0 mov.b    r32d16h  r8l      h
2241	prefetch_start();
2242	TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]);
2243	TMP2 = read8(TMP1);
2244	set_nzv8(TMP2);
2245	r8_w(IR[0], TMP2);
2246	prefetch_done();
2247
22486e80         ff80         0 mov.b    r8l      r16d16h  o
2249	prefetch_start();
2250	TMP1 = uint16_t(r16_r((IR[0] >> 4) & 7) + IR[1]);
2251	TMP2 = r8_r(IR[0]);
2252	set_nzv8(TMP2);
2253	write8(TMP1, TMP2);
2254	prefetch_done();
2255
22566e80         ff80         0 mov.b    r8l      r32d16h  h
2257	prefetch_start();
2258	TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]);
2259	TMP2 = r8_r(IR[0]);
2260	set_nzv8(TMP2);
2261	write8(TMP1, TMP2);
2262	prefetch_done();
2263
22646f00         ff80         0 mov.w    r16d16h  r16l     o
2265	prefetch_start();
2266	TMP1 = uint16_t(r16_r(IR[0] >> 4) + IR[1]);
2267	TMP2 = read16(TMP1);
2268	set_nzv16(TMP2);
2269	r16_w(IR[0], TMP2);
2270	prefetch_done();
2271
22726f00         ff80         0 mov.w    r32d16h  r16l     h
2273	prefetch_start();
2274	TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]);
2275	TMP2 = read16(TMP1);
2276	set_nzv16(TMP2);
2277	r16_w(IR[0], TMP2);
2278	prefetch_done();
2279
22806f80         ff80         0 mov.w    r16l     r16d16h  o
2281	prefetch_start();
2282	TMP1 = uint16_t(r16_r((IR[0] >> 4) & 7) + IR[1]);
2283	TMP2 = r16_r(IR[0]);
2284	set_nzv16(TMP2);
2285	write16(TMP1, TMP2);
2286	prefetch_done();
2287
22886f80         ff80         0 mov.w    r16l     r32d16h  h
2289	prefetch_start();
2290	TMP1 = r32_r(IR[0] >> 4) + int16_t(IR[1]);
2291	TMP2 = r16_r(IR[0]);
2292	set_nzv16(TMP2);
2293	write16(TMP1, TMP2);
2294	prefetch_done();
2295
22967000         ff80         0 bset     imm3     r8l
2297	TMP1 = r8_r(IR[0]);
2298	bset IR[0] >> 4
2299	r8_w(IR[0], TMP1);
2300	prefetch();
2301
23027100         ff80         0 bnot     imm3     r8l
2303	TMP1 = r8_r(IR[0]);
2304	bnot IR[0] >> 4
2305	r8_w(IR[0], TMP1);
2306	prefetch();
2307
23087200         ff80         0 bclr     imm3     r8l
2309	TMP1 = r8_r(IR[0]);
2310	bclr IR[0] >> 4
2311	r8_w(IR[0], TMP1);
2312	prefetch();
2313
23147300         ff80         0 btst     imm3     r8l
2315	TMP1 = r8_r(IR[0]);
2316	btst IR[0] >> 4
2317	prefetch();
2318
23197400         ff80         0 bor      imm3     r8l
2320	TMP1 = r8_r(IR[0]);
2321	bor IR[0] >> 4
2322	prefetch();
2323
23247480         ff80         0 bior     imm3     r8l
2325	TMP1 = r8_r(IR[0]);
2326	bior IR[0] >> 4
2327	prefetch();
2328
23297500         ff80         0 bxor     imm3     r8l
2330	TMP1 = r8_r(IR[0]);
2331	bxor IR[0] >> 4
2332	prefetch();
2333
23347580         ff80         0 bixor    imm3     r8l
2335	TMP1 = r8_r(IR[0]);
2336	bixor IR[0] >> 4
2337	prefetch();
2338
23397600         ff80         0 band     imm3     r8l
2340	TMP1 = r8_r(IR[0]);
2341	band IR[0] >> 4
2342	prefetch();
2343
23447680         ff80         0 biand    imm3     r8l
2345	TMP1 = r8_r(IR[0]);
2346	biand IR[0] >> 4
2347	prefetch();
2348
23497700         ff80         0 bld      imm3     r8l
2350	TMP1 = r8_r(IR[0]);
2351	bld IR[0] >> 4
2352	prefetch();
2353
23547780         ff80         0 bild     imm3     r8l
2355	TMP1 = r8_r(IR[0]);
2356	bild IR[0] >> 4
2357	prefetch();
2358
235978006a20     ff8ffff0     0 mov.b    r32d32hh r8l      h
2360	prefetch_start();
2361	TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3];
2362	TMP2 = read8(TMP1);
2363	set_nzv8(TMP2);
2364	r8_w(IR[1], TMP2);
2365	prefetch_done();
2366
236778006aa0     ff8ffff0     0 mov.b    r8l      r32d32hh h
2368	prefetch_start();
2369	TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3];
2370	TMP2 = r8_r(IR[1]);
2371	set_nzv8(TMP2);
2372	write8(TMP1, TMP2);
2373	prefetch_done();
2374
237578006b20     ff8ffff0     0 mov.w    r32d32hh r16l     h
2376	prefetch_start();
2377	TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3];
2378	TMP2 = read16(TMP1);
2379	set_nzv16(TMP2);
2380	r16_w(IR[1], TMP2);
2381	prefetch_done();
2382
238378006ba0     ff8ffff0     0 mov.w    r16l     r32d32hh h
2384	prefetch_start();
2385	TMP1 = r32_r(IR[0] >> 4) + (IR[2] << 16) + IR[3];
2386	TMP2 = r16_r(IR[1]);
2387	set_nzv16(TMP2);
2388	write16(TMP1, TMP2);
2389	prefetch_done();
2390
23917900         fff0         0 mov.w    imm16    r16l
2392	set_nzv16(IR[1]);
2393	r16_w(IR[0], IR[1]);
2394	prefetch();
2395
23967910         fff0         0 add.w    imm16    r16l
2397	r16_w(IR[0], do_add16(r16_r(IR[0]), IR[1]));
2398	prefetch();
2399
24007920         fff0         0 cmp.w    imm16    r16l
2401	do_sub16(r16_r(IR[0]), IR[1]);
2402	prefetch();
2403
24047930         fff0         0 sub.w    imm16    r16l
2405	r16_w(IR[0], do_sub16(r16_r(IR[0]), IR[1]));
2406	prefetch();
2407
24087940         fff0         0 or.w     imm16    r16l
2409	TMP1 = IR[1] | r16_r(IR[0]);
2410	set_nzv16(TMP1);
2411	r16_w(IR[0], TMP1);
2412	prefetch();
2413
24147950         fff0         0 xor.w    imm16    r16l
2415	TMP1 = IR[1] ^ r16_r(IR[0]);
2416	set_nzv16(TMP1);
2417	r16_w(IR[0], TMP1);
2418	prefetch();
2419
24207960         fff0         0 and.w    imm16    r16l
2421	TMP1 = IR[1] & r16_r(IR[0]);
2422	set_nzv16(TMP1);
2423	r16_w(IR[0], TMP1);
2424	prefetch();
2425
24267a00         fff8         0 mov.l    imm32    r32l     h
2427	TMP1 = (IR[1] << 16) | IR[2];
2428	set_nzv32(TMP1);
2429	r32_w(IR[0], TMP1);
2430	prefetch();
2431
24327a10         fff8         0 add.l    imm32    r32l     h
2433	r32_w(IR[0], do_add32(r32_r(IR[0]), (IR[1] << 16) | IR[2]));
2434	prefetch();
2435
24367a20         fff8         0 cmp.l    imm32    r32l     h
2437	do_sub32(r32_r(IR[0]), (IR[1] << 16) | IR[2]);
2438	prefetch();
2439
24407a30         fff8         0 sub.l    imm32    r32l     h
2441	r32_w(IR[0], do_sub32(r32_r(IR[0]), (IR[1] << 16) | IR[2]));
2442	prefetch();
2443
24447a40         fff8         0 or.l     imm32    r32l     h
2445	TMP1 = r32_r(IR[0]) | ((IR[1] << 16) | IR[2]);
2446	set_nzv32(TMP1);
2447	r32_w(IR[0], TMP1);
2448	prefetch();
2449
24507a50         fff8         0 xor.l    imm32    r32l     h
2451	TMP1 = r32_r(IR[0]) ^ ((IR[1] << 16) | IR[2]);
2452	set_nzv32(TMP1);
2453	r32_w(IR[0], TMP1);
2454	prefetch();
2455
24567a60         fff8         0 and.l    imm32    r32l     h
2457	TMP1 = r32_r(IR[0]) & ((IR[1] << 16) | IR[2]);
2458	set_nzv32(TMP1);
2459	r32_w(IR[0], TMP1);
2460	prefetch();
2461
24627b5c598f     ffffffff     0 eepmov.b -        -        o
2463	while(r8_r(4+8)) {
2464		TMP1 = read8(r16_r(5));
2465		write8(r16_r(6), TMP1);
2466		r16_w(5, r16_r(5)+1);
2467		r16_w(6, r16_r(6)+1);
2468		r8_w(4+8, r8_r(4+8)-1);
2469	}
2470	prefetch();
2471
24727b5c598f     ffffffff     0 eepmov.b -        -        h
2473	while(r8_r(4+8)) {
2474		TMP1 = read8(r32_r(5));
2475		write8(r32_r(6), TMP1);
2476		r32_w(5, r32_r(5)+1);
2477		r32_w(6, r32_r(6)+1);
2478		r8_w(4+8, r8_r(4+8)-1);
2479	}
2480	prefetch();
2481
24827bd4598f     ffffffff     0 eepmov.w -        -        h
2483	while(r16_r(4)) {
2484		TMP1 = read8(r32_r(5));
2485		write8(r32_r(6), TMP1);
2486		r32_w(5, r32_r(5)+1);
2487		r32_w(6, r32_r(6)+1);
2488		r16_w(4, r16_r(4)-1);
2489	}
2490	prefetch();
2491
24927c006300     ff8fff0f     0 btst     r8h      r16ihh   o
2493	TMP2 = r16_r(IR[0] >> 4);
2494	TMP1 = read8(TMP2);
2495	btst r8_r(IR[1] >> 4)
2496	prefetch();
2497
24987c006300     ff8fff0f     0 btst     r8h      r32ihh   h
2499	TMP2 = r32_r(IR[0] >> 4);
2500	TMP1 = read8(TMP2);
2501	btst r8_r(IR[1] >> 4)
2502	prefetch();
2503
25047c007300     ff8fff8f     0 btst     imm3     r16ihh   o
2505	TMP2 = r16_r(IR[0] >> 4);
2506	TMP1 = read8(TMP2);
2507	btst IR[1] >> 4
2508	prefetch();
2509
25107c007300     ff8fff8f     0 btst     imm3     r32ihh   h
2511	TMP2 = r32_r(IR[0] >> 4);
2512	TMP1 = read8(TMP2);
2513	btst IR[1] >> 4
2514	prefetch();
2515
25167c007400     ff8fff8f     0 bor      imm3     r16ihh   o
2517	TMP2 = r16_r(IR[0] >> 4);
2518	TMP1 = read8(TMP2);
2519	bor IR[1] >> 4
2520	prefetch();
2521
25227c007400     ff8fff8f     0 bor      imm3     r32ihh   h
2523	TMP2 = r32_r(IR[0] >> 4);
2524	TMP1 = read8(TMP2);
2525	bor IR[1] >> 4
2526	prefetch();
2527
25287c007480     ff8fff8f     0 bior     imm3     r16ihh   o
2529	TMP2 = r16_r(IR[0] >> 4);
2530	TMP1 = read8(TMP2);
2531	bior IR[1] >> 4
2532	prefetch();
2533
25347c007480     ff8fff8f     0 bior     imm3     r32ihh   h
2535	TMP2 = r32_r(IR[0] >> 4);
2536	TMP1 = read8(TMP2);
2537	bior IR[1] >> 4
2538	prefetch();
2539
25407c007500     ff8fff8f     0 bxor     imm3     r16ihh   o
2541	TMP2 = r16_r(IR[0] >> 4);
2542	TMP1 = read8(TMP2);
2543	bxor IR[1] >> 4
2544	prefetch();
2545
25467c007500     ff8fff8f     0 bxor     imm3     r32ihh   h
2547	TMP2 = r32_r(IR[0] >> 4);
2548	TMP1 = read8(TMP2);
2549	bxor IR[1] >> 4
2550	prefetch();
2551
25527c007580     ff8fff8f     0 bixor    imm3     r16ihh   o
2553	TMP2 = r16_r(IR[0] >> 4);
2554	TMP1 = read8(TMP2);
2555	bixor IR[1] >> 4
2556	prefetch();
2557
25587c007580     ff8fff8f     0 bixor    imm3     r32ihh   h
2559	TMP2 = r32_r(IR[0] >> 4);
2560	TMP1 = read8(TMP2);
2561	bixor IR[1] >> 4
2562	prefetch();
2563
25647c007600     ff8fff8f     0 band     imm3     r16ihh   o
2565	TMP2 = r16_r(IR[0] >> 4);
2566	TMP1 = read8(TMP2);
2567	band IR[1] >> 4
2568	prefetch();
2569
25707c007600     ff8fff8f     0 band     imm3     r32ihh   h
2571	TMP2 = r32_r(IR[0] >> 4);
2572	TMP1 = read8(TMP2);
2573	band IR[1] >> 4
2574	prefetch();
2575
25767c007680     ff8fff8f     0 biand    imm3     r16ihh   o
2577	TMP2 = r16_r(IR[0] >> 4);
2578	TMP1 = read8(TMP2);
2579	biand IR[1] >> 4
2580	prefetch();
2581
25827c007680     ff8fff8f     0 biand    imm3     r32ihh   h
2583	TMP2 = r32_r(IR[0] >> 4);
2584	TMP1 = read8(TMP2);
2585	biand IR[1] >> 4
2586	prefetch();
2587
25887c007700     ff8fff8f     0 bld      imm3     r16ihh   o
2589	TMP2 = r16_r(IR[0] >> 4);
2590	TMP1 = read8(TMP2);
2591	bld IR[1] >> 4
2592	prefetch();
2593
25947c007700     ff8fff8f     0 bld      imm3     r32ihh   h
2595	TMP2 = r32_r(IR[0] >> 4);
2596	TMP1 = read8(TMP2);
2597	bld IR[1] >> 4
2598	prefetch();
2599
26007c007780     ff8fff8f     0 bild     imm3     r16ihh   o
2601	TMP2 = r16_r(IR[0] >> 4);
2602	TMP1 = read8(TMP2);
2603	bild IR[1] >> 4
2604	prefetch();
2605
26067c007780     ff8fff8f     0 bild     imm3     r32ihh   h
2607	TMP2 = r32_r(IR[0] >> 4);
2608	TMP1 = read8(TMP2);
2609	bild IR[1] >> 4
2610	prefetch();
2611
26127d006000     ff8fff0f     0 bset     r8h      r16ihh   o
2613	TMP2 = r16_r(IR[0] >> 4);
2614	TMP1 = read8(TMP2);
2615	bset r8_r(IR[1] >> 4)
2616	prefetch_start();
2617	write8(TMP2, TMP1);
2618	prefetch_done();
2619
26207d006000     ff8fff0f     0 bset     r8h      r32ihh   h
2621	TMP2 = r32_r(IR[0] >> 4);
2622	TMP1 = read8(TMP2);
2623	bset r8_r(IR[1] >> 4)
2624	prefetch_start();
2625	write8(TMP2, TMP1);
2626	prefetch_done();
2627
26287d006100     ff8fff0f     0 bnot     r8h      r16ihh   o
2629	TMP2 = r16_r(IR[0] >> 4);
2630	TMP1 = read8(TMP2);
2631	bnot r8_r(IR[1] >> 4)
2632	prefetch_start();
2633	write8(TMP2, TMP1);
2634	prefetch_done();
2635
26367d006100     ff8fff0f     0 bnot     r8h      r32ihh   h
2637	TMP2 = r32_r(IR[0] >> 4);
2638	TMP1 = read8(TMP2);
2639	bnot r8_r(IR[1] >> 4)
2640	prefetch_start();
2641	write8(TMP2, TMP1);
2642	prefetch_done();
2643
26447d006200     ff8fff0f     0 bclr     r8h      r16ihh   o
2645	TMP2 = r16_r(IR[0] >> 4);
2646	TMP1 = read8(TMP2);
2647	bclr r8_r(IR[1] >> 4)
2648	prefetch_start();
2649	write8(TMP2, TMP1);
2650	prefetch_done();
2651
26527d006200     ff8fff0f     0 bclr     r8h      r32ihh   h
2653	TMP2 = r32_r(IR[0] >> 4);
2654	TMP1 = read8(TMP2);
2655	bclr r8_r(IR[1] >> 4)
2656	prefetch_start();
2657	write8(TMP2, TMP1);
2658	prefetch_done();
2659
26607d006700     ff8fff8f     0 bst      imm3     r16ihh   o
2661	TMP2 = r16_r(IR[0] >> 4);
2662	TMP1 = read8(TMP2);
2663	bst IR[1] >> 4
2664	prefetch_start();
2665	write8(TMP2, TMP1);
2666	prefetch_done();
2667
26687d006700     ff8fff8f     0 bst      imm3     r32ihh   h
2669	TMP2 = r32_r(IR[0] >> 4);
2670	TMP1 = read8(TMP2);
2671	bst IR[1] >> 4
2672	prefetch_start();
2673	write8(TMP2, TMP1);
2674	prefetch_done();
2675
26767d006780     ff8fff8f     0 bist     imm3     r16ihh   o
2677	TMP2 = r16_r(IR[0] >> 4);
2678	TMP1 = read8(TMP2);
2679	bist IR[1] >> 4
2680	prefetch_start();
2681	write8(TMP2, TMP1);
2682	prefetch_done();
2683
26847d006780     ff8fff8f     0 bist     imm3     r32ihh   h
2685	TMP2 = r32_r(IR[0] >> 4);
2686	TMP1 = read8(TMP2);
2687	bist IR[1] >> 4
2688	prefetch_start();
2689	write8(TMP2, TMP1);
2690	prefetch_done();
2691
26927d007000     ff8fff8f     0 bset     imm3     r16ihh   o
2693	TMP2 = r16_r(IR[0] >> 4);
2694	TMP1 = read8(TMP2);
2695	bset IR[1] >> 4
2696	prefetch_start();
2697	write8(TMP2, TMP1);
2698	prefetch_done();
2699
27007d007000     ff8fff8f     0 bset     imm3     r32ihh   h
2701	TMP2 = r32_r(IR[0] >> 4);
2702	TMP1 = read8(TMP2);
2703	bset IR[1] >> 4
2704	prefetch_start();
2705	write8(TMP2, TMP1);
2706	prefetch_done();
2707
27087d007100     ff8fff8f     0 bnot     imm3     r16ihh   o
2709	TMP2 = r16_r(IR[0] >> 4);
2710	TMP1 = read8(TMP2);
2711	bnot IR[1] >> 4
2712	prefetch_start();
2713	write8(TMP2, TMP1);
2714	prefetch_done();
2715
27167d007100     ff8fff8f     0 bnot     imm3     r32ihh   h
2717	TMP2 = r32_r(IR[0] >> 4);
2718	TMP1 = read8(TMP2);
2719	bnot IR[1] >> 4
2720	prefetch_start();
2721	write8(TMP2, TMP1);
2722	prefetch_done();
2723
27247d007200     ff8fff8f     0 bclr     imm3     r16ihh   o
2725	TMP2 = r16_r(IR[0] >> 4);
2726	TMP1 = read8(TMP2);
2727	bclr IR[1] >> 4
2728	prefetch_start();
2729	write8(TMP2, TMP1);
2730	prefetch_done();
2731
27327d007200     ff8fff8f     0 bclr     imm3     r32ihh   h
2733	TMP2 = r32_r(IR[0] >> 4);
2734	TMP1 = read8(TMP2);
2735	bclr IR[1] >> 4
2736	prefetch_start();
2737	write8(TMP2, TMP1);
2738	prefetch_done();
2739
27407e006300     ff00ff0f     0 btst     r8h      abs8
2741	TMP2 = 0xffffff00 | IR[0];
2742	TMP1 = read8(TMP2);
2743	btst r8_r(IR[1] >> 4)
2744	prefetch();
2745
27467e007300     ff00ff8f     0 btst     imm3     abs8
2747	TMP2 = 0xffffff00 | IR[0];
2748	TMP1 = read8(TMP2);
2749	btst IR[1] >> 4
2750	prefetch();
2751
27527e007400     ff00ff8f     0 bor      imm3     abs8
2753	TMP2 = 0xffffff00 | IR[0];
2754	TMP1 = read8(TMP2);
2755	bor IR[1] >> 4
2756	prefetch();
2757
27587e007480     ff00ff8f     0 bior     imm3     abs8
2759	TMP2 = 0xffffff00 | IR[0];
2760	TMP1 = read8(TMP2);
2761	bior IR[1] >> 4
2762	prefetch();
2763
27647e007500     ff00ff8f     0 bxor     imm3     abs8
2765	TMP2 = 0xffffff00 | IR[0];
2766	TMP1 = read8(TMP2);
2767	bxor IR[1] >> 4
2768	prefetch();
2769
27707e007580     ff00ff8f     0 bixor    imm3     abs8
2771	TMP2 = 0xffffff00 | IR[0];
2772	TMP1 = read8(TMP2);
2773	bixor IR[1] >> 4
2774	prefetch();
2775
27767e007600     ff00ff8f     0 band     imm3     abs8
2777	TMP2 = 0xffffff00 | IR[0];
2778	TMP1 = read8(TMP2);
2779	band IR[1] >> 4
2780	prefetch();
2781
27827e007680     ff00ff8f     0 biand    imm3     abs8
2783	TMP2 = 0xffffff00 | IR[0];
2784	TMP1 = read8(TMP2);
2785	biand IR[1] >> 4
2786	prefetch();
2787
27887e007700     ff00ff8f     0 bld      imm3     abs8
2789	TMP2 = 0xffffff00 | IR[0];
2790	TMP1 = read8(TMP2);
2791	bld IR[1] >> 4
2792	prefetch();
2793
27947e007780     ff00ff8f     0 bild     imm3     abs8
2795	TMP2 = 0xffffff00 | IR[0];
2796	TMP1 = read8(TMP2);
2797	bild IR[1] >> 4
2798	prefetch();
2799
28007f006000     ff00ff0f     0 bset     r8h      abs8
2801	TMP2 = 0xffffff00 | IR[0];
2802	TMP1 = read8(TMP2);
2803	bset r8_r(IR[1] >> 4)
2804	prefetch_start();
2805	write8(TMP2, TMP1);
2806	prefetch_done();
2807
28087f006100     ff00ff0f     0 bnot     r8h      abs8
2809	TMP2 = 0xffffff00 | IR[0];
2810	TMP1 = read8(TMP2);
2811	bnot r8_r(IR[1] >> 4)
2812	prefetch_start();
2813	write8(TMP2, TMP1);
2814	prefetch_done();
2815
28167f006200     ff00ff0f     0 bclr     r8h      abs8
2817	TMP2 = 0xffffff00 | IR[0];
2818	TMP1 = read8(TMP2);
2819	bclr r8_r(IR[1] >> 4)
2820	prefetch_start();
2821	write8(TMP2, TMP1);
2822	prefetch_done();
2823
28247f006700     ff00ff8f     0 bst      imm3     abs8
2825	TMP2 = 0xffffff00 | IR[0];
2826	TMP1 = read8(TMP2);
2827	prefetch_start();
2828	bst IR[0] >> 4
2829	write8(TMP2, TMP1);
2830	prefetch_done();
2831
28327f006780     ff00ff8f     0 bist     imm3     abs8
2833	TMP2 = 0xffffff00 | IR[0];
2834	TMP1 = read8(TMP2);
2835	prefetch_start();
2836	bist IR[0] >> 4
2837	write8(TMP2, TMP1);
2838	prefetch_done();
2839
28407f007000     ff00ff8f     0 bset     imm3     abs8
2841	TMP2 = 0xffffff00 | IR[0];
2842	TMP1 = read8(TMP2);
2843	prefetch_start();
2844	bset IR[1] >> 4
2845	write8(TMP2, TMP1);
2846	prefetch_done();
2847
28487f007100     ff00ff8f     0 bnot     imm3     abs8
2849	TMP2 = 0xffffff00 | IR[0];
2850	TMP1 = read8(TMP2);
2851	prefetch_start();
2852	bnot IR[1] >> 4
2853	write8(TMP2, TMP1);
2854	prefetch_done();
2855
28567f007200     ff00ff8f     0 bclr     imm3     abs8
2857	TMP2 = 0xffffff00 | IR[0];
2858	TMP1 = read8(TMP2);
2859	prefetch_start();
2860	bclr IR[1] >> 4
2861	write8(TMP2, TMP1);
2862	prefetch_done();
2863
28648000         f000         0 add.b    imm8     r8u
2865	r8_w(IR[0] >> 8, do_add8(r8_r(IR[0] >> 8), IR[0]));
2866	prefetch();
2867
28689000         f000         0 addx.b   imm8     r8u
2869	r8_w(IR[0] >> 8, do_addx8(r8_r(IR[0] >> 8), IR[0]));
2870	prefetch();
2871
2872a000         f000         0 cmp.b    imm8     r8u
2873	do_sub8(r8_r(IR[0]>>8), IR[0]);
2874	prefetch();
2875
2876b000         f000         0 subx.b   imm8     r8u
2877	r8_w(IR[0] >> 8, do_subx8(r8_r(IR[0] >> 8), IR[0]));
2878	prefetch();
2879
2880c000         f000         0 or.b     imm8     r8u
2881	TMP1 = IR[0] | r8_r(IR[0] >> 8);
2882	set_nzv8(TMP1);
2883	r8_w(IR[0] >> 8, TMP1);
2884	prefetch();
2885
2886d000         f000         0 xor.b    imm8     r8u
2887	TMP1 = IR[0] ^ r8_r(IR[0] >> 8);
2888	set_nzv8(TMP1);
2889	r8_w(IR[0] >> 8, TMP1);
2890	prefetch();
2891
2892e000         f000         0 and.b    imm8     r8u
2893	TMP1 = IR[0] & r8_r(IR[0] >> 8);
2894	set_nzv8(TMP1);
2895	r8_w(IR[0] >> 8, TMP1);
2896	prefetch();
2897
2898f000         f000         0 mov.b    imm8     r8u
2899	set_nzv8(IR[0]);
2900	r8_w(IR[0] >> 8, IR[0]);
2901	prefetch();
2902