1 // data cache pre-fetch:
3 // 1111 1001 1010 0110 Rm.. 0000; dcpf (Rm)
4 8.0xf9+8.0xa6+4.RN2,4.0000:D1a:::dcpf
12 srcreg = translate_rreg (SD_, RN2);
13 load_word (State.regs[srcreg]);
16 // 1111 1001 1010 0111 0000 0000; dcpf (sp)
17 8.0xf9+8.0xa7+8.0x00:D1b:::dcpf
26 // 1111 1011 1010 0110 Ri.. Rm.. 0000 0000; dcpf (Ri,Rm)
27 8.0xfb+8.0xa6+4.RN2,4.RN0+8.0x00:D2a:::dcpf
35 srci = translate_rreg (SD_, RN2);
36 srcm = translate_rreg (SD_, RN0);
38 load_word (State.regs[srci] + State.regs[srcm]);
41 // 1111 1011 1010 0111 Rm.. 0000 IMM8; dcpf (d8,Rm)
42 8.0xfb+8.0xa7+4.RN2,4.0000+8.IMM8:D2b:::dcpf
50 srcreg = translate_rreg (SD_, RN2);
52 load_word (State.regs[srcreg] + EXTEND8 (IMM8));
55 // 1111 1101 1010 0111 Rm.. 0000 IMM24; dcpf (d24,Rm)
56 8.0xfd+8.0xa7+4.RN2,4.0000+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::dcpf
64 srcreg = translate_rreg (SD_, RN2);
66 load_word (State.regs[srcreg] + EXTEND24 (FETCH24 (IMM24A,
70 // 1111 1110 0100 0110 Rm.. 0000 IMM32; dcpf (d32,Rm)
71 8.0xfe+8.0x46+4.RN2,4.0000+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::dcpf
79 srcreg = translate_rreg (SD_, RN2);
81 load_word (State.regs[srcreg]
82 + FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D));
85 // bit operations with imm8,(abs16) addressing mode:
87 // 1111 1110 1000 0010 ABS16 IMM8; btst imm8,(abs16)
88 8.0xfe+8.0x82+8.IMM16A+8.IMM16B+8.IMM8:D3:::btst
93 genericBtst (IMM8, FETCH16 (IMM16A, IMM16B));
96 // 1111 1110 1000 0000 ABS16 IMM8; bset imm8,(abs16)
97 8.0xfe+8.0x80+8.IMM16A+8.IMM16B+8.IMM8:D3:::bset
105 temp = load_byte (FETCH16 (IMM16A, IMM16B));
106 z = (temp & IMM8) == 0;
108 store_byte (FETCH16 (IMM16A, IMM16B), temp);
109 PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
110 PSW |= (z ? PSW_Z : 0);
113 // 1111 1110 1000 0001 ABS16 IMM8; bclr imm8,(abs16)
114 8.0xfe+8.0x81+8.IMM16A+8.IMM16B+8.IMM8:D3:::bclr
122 temp = load_byte (FETCH16 (IMM16A, IMM16B));
123 z = (temp & IMM8) == 0;
124 temp = temp & ~(IMM8);
125 store_byte (FETCH16 (IMM16A, IMM16B), temp);
126 PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
127 PSW |= (z ? PSW_Z : 0);
130 // single precision fmov:
132 // 1111 1001 0010 000X Rm.. Sn..; fmov (Rm),FSn
133 8.0xf9+4.2,3.0,1.X+4.Rm,4.Sn:D1a:::fmov
140 fpu_disabled_exception (SD, CPU, cia);
143 int reg = translate_rreg (SD_, Rm);
144 XS2FS (X,Sn) = load_word (State.regs[reg]);
148 // 1111 1001 0010 001X Rm.. Sn..; fmov (Rm+),FSn
149 8.0xf9+4.2,3.1,1.X+4.Rm,4.Sn:D1b:::fmov
156 fpu_disabled_exception (SD, CPU, cia);
159 int reg = translate_rreg (SD_, Rm);
160 XS2FS (X,Sn) = load_word (State.regs[reg]);
161 State.regs[reg] += 4;
165 // 1111 1001 0010 010X ---- Sn..; fmov (SP),FSn
166 8.0xf9+4.2,3.2,1.X+4.0,4.Sn:D1c:::fmov
173 fpu_disabled_exception (SD, CPU, cia);
177 XS2FS (X,Sn) = load_word (State.regs[reg]);
181 // 1111 1001 0010 011X Rm.. Sn..; fmov Rm,FSn
182 8.0xf9+4.2,3.3,1.X+4.Rm,4.Sn:D1d:::fmov
189 fpu_disabled_exception (SD, CPU, cia);
192 int reg = translate_rreg (SD_, Rm);
193 XS2FS (X,Sn) = State.regs[reg];
197 // 1111 1001 0011 00Y0 Sm.. Rn..; fmov FSm,(Rn)
198 8.0xf9+4.3,2.0,1.Y,1.0+4.Sm,4.Rn:D1e:::fmov
205 fpu_disabled_exception (SD, CPU, cia);
208 int reg = translate_rreg (SD_, Rn);
209 store_word (State.regs[reg], XS2FS (Y,Sm));
213 // 1111 1001 0011 00Y1 Sm.. Rn..; fmov FSm,(Rn+)
214 8.0xf9+4.3,2.0,1.Y,1.1+4.Sm,4.Rn:D1f:::fmov
221 fpu_disabled_exception (SD, CPU, cia);
224 int reg = translate_rreg (SD_, Rn);
225 store_word (State.regs[reg], XS2FS (Y,Sm));
226 State.regs[reg] += 4;
230 // 1111 1001 0011 01Y0 Sm.. ----; fmov FSm,(SP)
231 8.0xf9+4.3,2.1,1.Y,1.0+4.Sm,4.0:D1g:::fmov
238 fpu_disabled_exception (SD, CPU, cia);
242 store_word (State.regs[reg], XS2FS (Y,Sm));
246 // 1111 1001 0011 01Y1 Sm.. Rn..; fmov FSm,Rn
247 8.0xf9+4.3,2.1,1.Y,1.1+4.Sm,4.Rn:D1h:::fmov
254 fpu_disabled_exception (SD, CPU, cia);
257 int reg = translate_rreg (SD_, Rn);
258 State.regs[reg] = XS2FS (Y,Sm);
262 // 1111 1001 0100 00YX Sm.. Sn..; fmov FSm,FSn
263 8.0xf9+4.4,2.0,1.Y,1.X+4.Sm,4.Sn:D1i:::fmov
270 fpu_disabled_exception (SD, CPU, cia);
272 XS2FS (X,Sn) = XS2FS (Y,Sm);
275 // 1111 1011 0010 000X Rm.. Sn.. d8; fmov (d8,Rm),FSn
276 8.0xfb+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM8:D2a:::fmov
283 fpu_disabled_exception (SD, CPU, cia);
286 int reg = translate_rreg (SD_, Rm);
287 XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
291 // 1111 1011 0010 001X Rm.. Sn.. d8; fmov (Rm+,imm8),FSn
292 8.0xfb+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM8:D2b:::fmov
299 fpu_disabled_exception (SD, CPU, cia);
302 int reg = translate_rreg (SD_, Rm);
303 XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
304 State.regs[reg] += 4;
308 // 1111 1011 0010 010X ---- Sn.. d8; fmov (d8,SP),FSn
309 8.0xfb+4.2,3.2,1.X+4.0,4.Sn+8.IMM8:D2c:::fmov
316 fpu_disabled_exception (SD, CPU, cia);
320 XS2FS (X, Sn) = load_word (State.regs[reg] + IMM8);
324 // 1111 1011 0010 0111 Ri.. Rm.. Sn.. --Z-; fmov (Ri,Rm),FSn
325 8.0xfb+8.0x27+4.Ri,4.Rm+4.Sn,2.0,1.Z,1.0:D2d:::fmov
332 fpu_disabled_exception (SD, CPU, cia);
335 int ri = translate_rreg (SD_, Ri);
336 int rm = translate_rreg (SD_, Rm);
337 XS2FS (Z, Sn) = load_word (State.regs[ri] + State.regs[rm]);
341 // 1111 1011 0011 00Y0 Sm.. Rn.. d8; fmov FSm,(d8,Rn)
342 8.0xfb+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM8:D2e:::fmov
349 fpu_disabled_exception (SD, CPU, cia);
352 int reg = translate_rreg (SD_, Rn);
353 store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
357 // 1111 1011 0011 00Y1 Sm.. Rn.. d8; fmov FSm,(Rn+,d8)
358 8.0xfb+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM8:D2f:::fmov
365 fpu_disabled_exception (SD, CPU, cia);
368 int reg = translate_rreg (SD_, Rn);
369 store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
370 State.regs[reg] += 4;
374 // 1111 1011 0011 01Y0 Sm.. ---- d8; fmov FSm,(d8,SP)
375 8.0xfb+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM8:D2g:::fmov
382 fpu_disabled_exception (SD, CPU, cia);
386 store_word (State.regs[reg] + IMM8, XS2FS (Y, Sm));
390 // 1111 1011 0011 0111 Ri.. Rm.. Sm.. --Z-; fmov FSm,(Ri,Rm)
391 8.0xfb+8.0x37+4.Ri,4.Rm+4.Sm,2.0,1.Z,1.0:D2h:::fmov
398 fpu_disabled_exception (SD, CPU, cia);
401 int ri = translate_rreg (SD_, Ri);
402 int rm = translate_rreg (SD_, Rm);
403 store_word (State.regs[ri] + State.regs[rm], XS2FS (Z, Sm));
407 // 1111 1101 0010 000X Rm.. Sn.. d24; fmov (d24,Rm),FSn
408 8.0xfd+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::fmov
415 fpu_disabled_exception (SD, CPU, cia);
418 int reg = translate_rreg (SD_, Rm);
419 XS2FS (X, Sn) = load_word (State.regs[reg]
420 + EXTEND24 (FETCH24 (IMM24A,
425 // 1111 1101 0010 001X Rm.. Sn.. d24; fmov (Rm+,imm24),FSn
426 8.0xfd+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4b:::fmov
433 fpu_disabled_exception (SD, CPU, cia);
436 int reg = translate_rreg (SD_, Rm);
437 XS2FS (X, Sn) = load_word (State.regs[reg]
438 + EXTEND24 (FETCH24 (IMM24A,
440 State.regs[reg] += 4;
444 // 1111 1101 0010 010X ---- Sn.. d24; fmov (d24,SP),FSn
445 8.0xfd+4.2,3.2,1.X+4.0,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4c:::fmov
452 fpu_disabled_exception (SD, CPU, cia);
456 XS2FS (X, Sn) = load_word (State.regs[reg] + FETCH24 (IMM24A,
461 // 1111 1101 0011 00Y0 Sm.. Rn.. d24; fmov FSm,(d24,Rn)
462 8.0xfd+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4e:::fmov
469 fpu_disabled_exception (SD, CPU, cia);
472 int reg = translate_rreg (SD_, Rn);
473 store_word (State.regs[reg]
474 + EXTEND24 (FETCH24 (IMM24A,
475 IMM24B, IMM24C)), XS2FS (Y, Sm));
479 // 1111 1101 0011 00Y1 Sm.. Rn.. d24; fmov FSm,(Rn+,d24)
480 8.0xfd+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4f:::fmov
487 fpu_disabled_exception (SD, CPU, cia);
490 int reg = translate_rreg (SD_, Rn);
491 store_word (State.regs[reg]
492 + EXTEND24 (FETCH24 (IMM24A,
493 IMM24B, IMM24C)), XS2FS (Y, Sm));
494 State.regs[reg] += 4;
498 // 1111 1101 0011 01Y0 Sm.. ---- d24; fmov FSm,(d24,SP)
499 8.0xfd+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4g:::fmov
506 fpu_disabled_exception (SD, CPU, cia);
510 store_word (State.regs[reg]
512 IMM24B, IMM24C), XS2FS (Y, Sm));
516 // 1111 1110 0010 000X Rm.. Sn.. d32; fmov (d32,Rm),FSn
517 8.0xfe+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::fmov
524 fpu_disabled_exception (SD, CPU, cia);
527 int reg = translate_rreg (SD_, Rm);
528 XS2FS (X, Sn) = load_word (State.regs[reg]
529 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
534 // 1111 1110 0010 001X Rm.. Sn.. d32; fmov (Rm+,imm32),FSn
535 8.0xfe+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5b:::fmov
542 fpu_disabled_exception (SD, CPU, cia);
545 int reg = translate_rreg (SD_, Rm);
546 XS2FS (X, Sn) = load_word (State.regs[reg]
547 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
549 State.regs[reg] += 4;
553 // 1111 1110 0010 010X ---- Sn.. d32; fmov (d32,SP),FSn
554 8.0xfe+4.2,3.2,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5c:::fmov
561 fpu_disabled_exception (SD, CPU, cia);
565 XS2FS (X, Sn) = load_word (State.regs[reg]
566 + FETCH32 (IMM32A, IMM32B,
571 // 1111 1110 0010 011X ---- Sn.. d32; fmov imm32,FSn
572 8.0xfe+4.2,3.3,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5d:::fmov
579 fpu_disabled_exception (SD, CPU, cia);
581 XS2FS (X, Sn) = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
584 // 1111 1110 0011 00Y0 Sm.. Rn.. d32; fmov FSm,(d32,Rn)
585 8.0xfe+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5e:::fmov
592 fpu_disabled_exception (SD, CPU, cia);
595 int reg = translate_rreg (SD_, Rn);
596 store_word (State.regs[reg]
597 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
598 IMM32C, IMM32D)), XS2FS (Y, Sm));
602 // 1111 1110 0011 00Y1 Sm.. Rn.. d32; fmov FSm,(Rn+,d32)
603 8.0xfe+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5f:::fmov
610 fpu_disabled_exception (SD, CPU, cia);
613 int reg = translate_rreg (SD_, Rn);
614 store_word (State.regs[reg]
615 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
616 IMM32C, IMM32D)), XS2FS (Y, Sm));
617 State.regs[reg] += 4;
621 // 1111 1110 0011 01Y0 Sm.. ---- d32; fmov FSm,(d32,SP)
622 8.0xfe+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5g:::fmov
629 fpu_disabled_exception (SD, CPU, cia);
633 store_word (State.regs[reg]
634 + FETCH32 (IMM32A, IMM32B,
635 IMM32C, IMM32D), XS2FS (Y, Sm));
639 // double precision fmov:
641 // 1111 1001 1010 000X Rm.. fn.-; fmov (Rm),FDn
642 8.0xf9+4.0xa,3.0,1.X+4.Rm,3.fn,1.0:D1j:::fmov
649 fpu_disabled_exception (SD, CPU, cia);
652 int reg = translate_rreg (SD_, Rm);
653 Xf2FD (X,fn) = load_dword (State.regs[reg]);
657 // 1111 1001 1010 001X Rm.. fn.-; fmov (Rm+),FDn
658 8.0xf9+4.0xa,3.1,1.X+4.Rm,3.fn,1.0:D1k:::fmov
665 fpu_disabled_exception (SD, CPU, cia);
668 int reg = translate_rreg (SD_, Rm);
669 Xf2FD (X,fn) = load_dword (State.regs[reg]);
670 State.regs[reg] += 8;
674 // 1111 1001 1010 010X ---- fn.-; fmov (SP),FDn
675 8.0xf9+4.0xa,3.2,1.X+4.0,3.fn,1.0:D1l:::fmov
682 fpu_disabled_exception (SD, CPU, cia);
686 Xf2FD (X,fn) = load_dword (State.regs[reg]);
690 // 1111 1001 1011 00Y0 fm.- Rn..; fmov FDm,(Rn)
691 8.0xf9+4.0xb,2.0,1.Y,1.0+3.fm,1.0,4.Rn:D1m:::fmov
698 fpu_disabled_exception (SD, CPU, cia);
701 int reg = translate_rreg (SD_, Rn);
702 store_dword (State.regs[reg], Xf2FD (Y,fm));
706 // 1111 1001 1011 00Y1 fm.- Rn..; fmov FDm,(Rn+)
707 8.0xf9+4.0xb,2.0,1.Y,1.1+3.fm,1.0,4.Rn:D1n:::fmov
714 fpu_disabled_exception (SD, CPU, cia);
717 int reg = translate_rreg (SD_, Rn);
718 store_dword (State.regs[reg], Xf2FD (Y,fm));
719 State.regs[reg] += 8;
723 // 1111 1001 1011 01Y0 fm.- ----; fmov FDm,(SP)
724 8.0xf9+4.0xb,2.1,1.Y,1.0+3.fm,1.0,4.0:D1o:::fmov
731 fpu_disabled_exception (SD, CPU, cia);
735 store_dword (State.regs[reg], Xf2FD (Y,fm));
739 // 1111 1001 1100 00YX fm.- fn.-; fmov FDm,FDn
740 8.0xf9+4.0xc,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1p:::fmov
747 fpu_disabled_exception (SD, CPU, cia);
749 fpu_unimp_exception (SD, CPU, cia);
752 // 1111 1011 0100 0111 Ri.. Rm.. fn.- --Z-; fmov (Ri,Rm),FDn
753 8.0xfb+8.0x47+4.Ri,4.Rm+3.fn,1.0,2.0,1.Z,1.0:D2i:::fmov
760 fpu_disabled_exception (SD, CPU, cia);
763 int ri = translate_rreg (SD_, Ri);
764 int rm = translate_rreg (SD_, Rm);
765 Xf2FD (Z,fn) = load_dword (State.regs[ri] + State.regs[rm]);
769 // 1111 1011 0101 0111 Ri.. Rn.. fm.- --Z-; fmov FDm,(Ri,Rn)
770 8.0xfb+8.0x57+4.Ri,4.Rn+3.fm,1.0,2.0,1.Z,1.0:D2j:::fmov
777 fpu_disabled_exception (SD, CPU, cia);
780 int ri = translate_rreg (SD_, Ri);
781 int rn = translate_rreg (SD_, Rn);
782 store_dword (State.regs[ri] + State.regs[rn], Xf2FD (Z,fm));
786 // 1111 1011 1010 000X Rm.. fn.- d8; fmov (d8,Rm),FDn
787 8.0xfb+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM8:D2k:::fmov
794 fpu_disabled_exception (SD, CPU, cia);
797 int reg = translate_rreg (SD_, Rm);
798 Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
802 // 1111 1011 1010 001X Rm.. fn.- d8; fmov (Rm+,imm8),FDn
803 8.0xfb+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM8:D2l:::fmov
810 fpu_disabled_exception (SD, CPU, cia);
813 int reg = translate_rreg (SD_, Rm);
814 Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
815 State.regs[reg] += 8;
819 // 1111 1011 1010 010X ---- fn.- d8; fmov (d8,SP),FDn
820 8.0xfb+4.0xa,3.2,1.X+4.0,4.fn+8.IMM8:D2m:::fmov
827 fpu_disabled_exception (SD, CPU, cia);
831 Xf2FD (X, fn) = load_dword (State.regs[reg] + IMM8);
835 // 1111 1011 1011 00Y0 fm.- Rn.. d8; fmov FDm,(d8,Rn)
836 8.0xfb+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM8:D2n:::fmov
843 fpu_disabled_exception (SD, CPU, cia);
846 int reg = translate_rreg (SD_, Rn);
847 store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
851 // 1111 1011 1011 00Y1 fm.- Rn.. d8; fmov FDm,(Rn+,d8)
852 8.0xfb+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM8:D2o:::fmov
859 fpu_disabled_exception (SD, CPU, cia);
862 int reg = translate_rreg (SD_, Rn);
863 store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
864 State.regs[reg] += 8;
868 // 1111 1011 1011 01Y0 fm.- ---- d8; fmov FDm,(d8,SP)
869 8.0xfb+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM8:D2p:::fmov
876 fpu_disabled_exception (SD, CPU, cia);
880 store_dword (State.regs[reg] + IMM8, Xf2FD (Y, fm));
884 // 1111 1101 1010 000X Rm.. fn.- d24; fmov (d24,Rm),FDn
885 8.0xfd+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4k:::fmov
892 fpu_disabled_exception (SD, CPU, cia);
895 int reg = translate_rreg (SD_, Rm);
896 Xf2FD (X, fn) = load_dword (State.regs[reg]
897 + EXTEND24 (FETCH24 (IMM24A,
902 // 1111 1101 1010 001X Rm.. fn.- d24; fmov (Rm+,imm24),FDn
903 8.0xfd+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4l:::fmov
910 fpu_disabled_exception (SD, CPU, cia);
913 int reg = translate_rreg (SD_, Rm);
914 Xf2FD (X, fn) = load_dword (State.regs[reg]
915 + EXTEND24 (FETCH24 (IMM24A,
917 State.regs[reg] += 8;
921 // 1111 1101 1010 010X ---- fn.- d24; fmov (d24,SP),FDn
922 8.0xfd+4.0xa,3.2,1.X+4.0,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4m:::fmov
929 fpu_disabled_exception (SD, CPU, cia);
933 Xf2FD (X, fn) = load_dword (State.regs[reg]
939 // 1111 1101 1011 00Y0 fm.- Rn.. d24; fmov FDm,(d24,Rn)
940 8.0xfd+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4n:::fmov
947 fpu_disabled_exception (SD, CPU, cia);
950 int reg = translate_rreg (SD_, Rn);
951 store_dword (State.regs[reg]
952 + EXTEND24 (FETCH24 (IMM24A,
953 IMM24B, IMM24C)), Xf2FD (Y, fm));
957 // 1111 1101 1011 00Y1 fm.- Rn.. d24; fmov FDm,(Rn+,d24)
958 8.0xfd+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4o:::fmov
965 fpu_disabled_exception (SD, CPU, cia);
968 int reg = translate_rreg (SD_, Rn);
969 store_dword (State.regs[reg]
970 + EXTEND24 (FETCH24 (IMM24A,
971 IMM24B, IMM24C)), Xf2FD (Y, fm));
972 State.regs[reg] += 8;
976 // 1111 1101 1011 01Y0 fm.- ---- d24; fmov FDm,(d24,SP)
977 8.0xfd+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4p:::fmov
984 fpu_disabled_exception (SD, CPU, cia);
988 store_dword (State.regs[reg] + FETCH24 (IMM24A,
989 IMM24B, IMM24C), Xf2FD (Y, fm));
993 // 1111 1110 1010 000X Rm.. fn.- d32; fmov (d32,Rm),FDn
994 8.0xfe+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5k:::fmov
1001 fpu_disabled_exception (SD, CPU, cia);
1004 int reg = translate_rreg (SD_, Rm);
1005 Xf2FD (X, fn) = load_dword (State.regs[reg]
1006 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1011 // 1111 1110 1010 001X Rm.. fn.- d32; fmov (Rm+,imm32),FDn
1012 8.0xfe+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5l:::fmov
1019 fpu_disabled_exception (SD, CPU, cia);
1022 int reg = translate_rreg (SD_, Rm);
1023 Xf2FD (X, fn) = load_dword (State.regs[reg]
1024 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1026 State.regs[reg] += 8;
1030 // 1111 1110 1010 010X ---- fn.- d32; fmov (d32,SP),FDn
1031 8.0xfe+4.0xa,3.2,1.X+4.0,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5m:::fmov
1038 fpu_disabled_exception (SD, CPU, cia);
1042 Xf2FD (X, fn) = load_dword (State.regs[reg]
1043 + FETCH32 (IMM32A, IMM32B,
1048 // 1111 1110 1011 00Y0 fm.- Rn.. d32; fmov FDm,(d32,Rn)
1049 8.0xfe+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5n:::fmov
1056 fpu_disabled_exception (SD, CPU, cia);
1059 int reg = translate_rreg (SD_, Rn);
1060 store_dword (State.regs[reg]
1061 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1062 IMM32C, IMM32D)), Xf2FD (Y, fm));
1066 // 1111 1110 1011 00Y1 fm.- Rn.. d32; fmov FDm,(Rn+,d32)
1067 8.0xfe+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5o:::fmov
1074 fpu_disabled_exception (SD, CPU, cia);
1077 int reg = translate_rreg (SD_, Rn);
1078 store_dword (State.regs[reg]
1079 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1080 IMM32C, IMM32D)), Xf2FD (Y, fm));
1081 State.regs[reg] += 8;
1085 // 1111 1110 1011 01Y0 fm.- ---- d32; fmov FDm,(d32,SP)
1086 8.0xfe+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5p:::fmov
1093 fpu_disabled_exception (SD, CPU, cia);
1097 store_dword (State.regs[reg]
1098 + FETCH32 (IMM32A, IMM32B,
1099 IMM32C, IMM32D), Xf2FD (Y, fm));
1105 // 1111 1001 1011 0101 Rm.. ----; fmov Rm,FPCR
1106 8.0xf9+8.0xb5+4.Rm,4.0:D1q:::fmov
1113 fpu_disabled_exception (SD, CPU, cia);
1116 int reg = translate_rreg (SD_, Rm);
1117 unsigned32 val = State.regs[reg];
1118 FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
1119 | ((FPCR & ~val) & EF_MASK);
1123 // 1111 1001 1011 0111 ---- Rn..; fmov FPCR,Rn
1124 8.0xf9+8.0xb7+4.0,4.Rn:D1r:::fmov
1131 fpu_disabled_exception (SD, CPU, cia);
1134 int reg = translate_rreg (SD_, Rn);
1135 State.regs[reg] = FPCR & FPCR_MASK;
1139 // 1111 1101 1011 0101 imm32; fmov imm32,FPCR
1140 8.0xfd+8.0xb5+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmov
1147 fpu_disabled_exception (SD, CPU, cia);
1150 unsigned32 val = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1151 FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
1152 | ((FPCR & ~val) & EF_MASK);
1158 // 1111 1001 0100 010X ---- Sn..; fabs FSn
1159 8.0xf9+4.4,3.2,1.X+4.0,4.Sn:D1a:::fabs
1166 fpu_disabled_exception (SD, CPU, cia);
1171 FS2FPU (XS2FS (X,Sn), in);
1172 sim_fpu_abs (&out, &in);
1173 FPU2FS (out, XS2FS (X,Sn));
1177 // 1111 1001 1100 010X ---- Sn..; fabs FDn
1178 8.0xf9+4.0xc,3.2,1.X+4.0,3.fn,1.0:D1b:::fabs
1185 fpu_disabled_exception (SD, CPU, cia);
1187 fpu_unimp_exception (SD, CPU, cia);
1190 // 1111 1011 0100 0100 Sm.. ---- Sn.. X-Z-; fabs FSm,FSn
1191 8.0xfb+8.0x44+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fabs
1198 fpu_disabled_exception (SD, CPU, cia);
1203 FS2FPU (XS2FS (X,Sm), in);
1204 sim_fpu_abs (&out, &in);
1205 FPU2FS (out, XS2FS (Z,Sn));
1209 // 1111 1011 1100 0100 fm.- ---- fn.- X-Z-; fabs FDm,FDn
1210 8.0xfb+8.0xc4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fabs
1217 fpu_disabled_exception (SD, CPU, cia);
1219 fpu_unimp_exception (SD, CPU, cia);
1222 // 1111 1001 0100 011X ---- Sn..; fneg FSn
1223 8.0xf9+4.4,3.3,1.X+4.0,4.Sn:D1a:::fneg
1230 fpu_disabled_exception (SD, CPU, cia);
1235 FS2FPU (XS2FS (X,Sn), in);
1236 sim_fpu_neg (&out, &in);
1237 FPU2FS (out, XS2FS (X,Sn));
1241 // 1111 1001 1100 011X ---- Sn..; fneg FDn
1242 8.0xf9+4.0xc,3.3,1.X+4.0,3.fn,1.0:D1b:::fneg
1249 fpu_disabled_exception (SD, CPU, cia);
1251 fpu_unimp_exception (SD, CPU, cia);
1254 // 1111 1011 0100 0110 Sm.. ---- Sn.. X-Z-; fneg FSm,FSn
1255 8.0xfb+8.0x46+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fneg
1262 fpu_disabled_exception (SD, CPU, cia);
1267 FS2FPU (XS2FS (X,Sm), in);
1268 sim_fpu_neg (&out, &in);
1269 FPU2FS (out, XS2FS (Z,Sn));
1273 // 1111 1011 1100 0110 fm.- ---- fn.- X-Z-; fneg FDm,FDn
1274 8.0xfb+8.0xc6+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fneg
1281 fpu_disabled_exception (SD, CPU, cia);
1283 fpu_unimp_exception (SD, CPU, cia);
1286 // 1111 1001 0101 000X ---- Sn..; frsqrt FSn
1287 8.0xf9+4.5,3.0,1.X+4.0,4.Sn:D1a:::frsqrt
1294 fpu_disabled_exception (SD, CPU, cia);
1296 fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1299 // 1111 1001 1101 000X ---- fn.-; frsqrt FDn
1300 8.0xf9+4.0xd,3.0,1.X+4.0,3.fn,1.0:D1b:::frsqrt
1307 fpu_disabled_exception (SD, CPU, cia);
1309 fpu_unimp_exception (SD, CPU, cia);
1312 // 1111 1011 0101 0000 Sm.. ---- Sn.. X-Z-; frsqrt FSm,FSn
1313 8.0xfb+8.0x50+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::frsqrt
1320 fpu_disabled_exception (SD, CPU, cia);
1322 fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sm), &XS2FS (Z,Sn), FP_SINGLE);
1325 // 1111 1011 1101 0000 fm.- ---- fn.- X-Z-; frsqrt FDm,FDn
1326 8.0xfb+8.0xd0+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::frsqrt
1333 fpu_disabled_exception (SD, CPU, cia);
1335 fpu_unimp_exception (SD, CPU, cia);
1338 // 1111 1001 0101 001X ---- Sn..; fsqrt FSn
1339 8.0xf9+4.5,3.1,1.X+4.0,4.Sn:D1a:::fsqrt
1346 fpu_disabled_exception (SD, CPU, cia);
1348 fpu_unimp_exception (SD, CPU, cia);
1351 // 1111 1001 1101 001X ---- fn.-; fsqrt FDn
1352 8.0xf9+4.0xd,3.1,1.X+4.0,3.fn,1.0:D1b:::fsqrt
1359 fpu_disabled_exception (SD, CPU, cia);
1361 fpu_unimp_exception (SD, CPU, cia);
1364 // 1111 1011 0101 0100 Sm.. ---- Sn.. X-Z-; fsqrt FSm,FSn
1365 8.0xfb+8.0x54+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fsqrt
1372 fpu_disabled_exception (SD, CPU, cia);
1374 fpu_unimp_exception (SD, CPU, cia);
1377 // 1111 1011 1101 0100 fm.- ---- fn.- X-Z-; fsqrt FDm,FDn
1378 8.0xfb+8.0xd4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fsqrt
1385 fpu_disabled_exception (SD, CPU, cia);
1387 fpu_unimp_exception (SD, CPU, cia);
1390 // 1111 1001 0101 01YX Sm.. Sn..; fcmp FSm, FSn
1391 8.0xf9+4.5,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fcmp
1398 fpu_disabled_exception (SD, CPU, cia);
1400 fpu_cmp (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (Y,Sm), FP_SINGLE);
1403 // 1111 1001 1101 01YX fm.- fn.-; fcmp FDm, FDn
1404 8.0xf9+4.0xd,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fcmp
1411 fpu_disabled_exception (SD, CPU, cia);
1413 fpu_unimp_exception (SD, CPU, cia);
1416 // 1111 1110 0011 01Y1 Sm.. ---- IMM32; fcmp imm32, FSm
1417 8.0xfe+4.3,2.1,1.Y,1.1+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fcmp
1424 fpu_disabled_exception (SD, CPU, cia);
1427 uint32 imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1429 fpu_cmp (SD, CPU, cia, &XS2FS (Y,Sm), &imm, FP_SINGLE);
1433 // 1111 1001 0110 00YX Sm.. Sn..; fadd FSm, FSn
1434 8.0xf9+4.6,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fadd
1441 fpu_disabled_exception (SD, CPU, cia);
1443 fpu_add (SD, CPU, cia,
1444 &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1447 // 1111 1001 1110 00YX fm.- fn.-; fadd FDm, FDn
1448 8.0xf9+4.0xe,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fadd
1455 fpu_disabled_exception (SD, CPU, cia);
1457 fpu_unimp_exception (SD, CPU, cia);
1460 // 1111 1011 0110 0000 Sm1. Sm2. Sn.. XYZ-; fadd FSm1, FSm2, FSn
1461 8.0xfb+8.0x60+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fadd
1468 fpu_disabled_exception (SD, CPU, cia);
1470 fpu_add (SD, CPU, cia,
1471 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
1474 // 1111 1011 1110 0000 fm1- fm2- fn.- XYZ-; fadd FDm1, FDm2, FDn
1475 8.0xfb+8.0xe0+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fadd
1482 fpu_disabled_exception (SD, CPU, cia);
1484 fpu_unimp_exception (SD, CPU, cia);
1488 // 1111 1110 0110 00YX Sm.. Sn.. IMM32; fadd imm32, FSm, FSn
1489 8.0xfe+4.6,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fadd
1496 fpu_disabled_exception (SD, CPU, cia);
1499 uint32 imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1501 fpu_add (SD, CPU, cia,
1502 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1506 // 1111 1001 0110 01YX Sm.. Sn..; fsub FSm, FSn
1507 8.0xf9+4.6,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fsub
1514 fpu_disabled_exception (SD, CPU, cia);
1516 fpu_sub (SD, CPU, cia,
1517 &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1520 // 1111 1001 1110 01YX fm.- fn.-; fsub FDm, FDn
1521 8.0xf9+4.0xe,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fsub
1528 fpu_disabled_exception (SD, CPU, cia);
1530 fpu_unimp_exception (SD, CPU, cia);
1533 // 1111 1011 0110 0100 Sm1. Sm2. Sn.. XYZ-; fsub FSm1, FSm2, FSn
1534 8.0xfb+8.0x64+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fsub
1541 fpu_disabled_exception (SD, CPU, cia);
1543 fpu_sub (SD, CPU, cia,
1544 &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
1547 // 1111 1011 1110 0100 fm1- fm2- fn.- XYZ-; fsub FDm1, FDm2, FDn
1548 8.0xfb+8.0xe4+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fsub
1555 fpu_disabled_exception (SD, CPU, cia);
1557 fpu_unimp_exception (SD, CPU, cia);
1561 // 1111 1110 0110 01YX Sm.. Sn.. IMM32; fsub imm32, FSm, FSn
1562 8.0xfe+4.6,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fsub
1569 fpu_disabled_exception (SD, CPU, cia);
1572 uint32 imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1574 fpu_sub (SD, CPU, cia,
1575 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1579 // 1111 1001 0111 00YX Sm.. Sn..; fmul FSm, FSn
1580 8.0xf9+4.7,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fmul
1587 fpu_disabled_exception (SD, CPU, cia);
1589 fpu_mul (SD, CPU, cia,
1590 &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1593 // 1111 1001 1111 00YX fm.- fn.-; fmul FDm, FDn
1594 8.0xf9+4.0xf,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fmul
1601 fpu_disabled_exception (SD, CPU, cia);
1603 fpu_unimp_exception (SD, CPU, cia);
1606 // 1111 1011 0111 0000 Sm1. Sm2. Sn.. XYZ-; fmul FSm1, FSm2, FSn
1607 8.0xfb+8.0x70+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fmul
1614 fpu_disabled_exception (SD, CPU, cia);
1616 fpu_mul (SD, CPU, cia,
1617 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
1620 // 1111 1011 1111 0000 fm1- fm2- fn.- XYZ-; fmul FDm1, FDm2, FDn
1621 8.0xfb+8.0xf0+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fmul
1628 fpu_disabled_exception (SD, CPU, cia);
1630 fpu_unimp_exception (SD, CPU, cia);
1634 // 1111 1110 0111 00YX Sm.. Sn.. IMM32; fmul imm32, FSm, FSn
1635 8.0xfe+4.7,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmul
1642 fpu_disabled_exception (SD, CPU, cia);
1645 uint32 imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1647 fpu_mul (SD, CPU, cia,
1648 &imm, &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1652 // 1111 1001 0111 01YX Sm.. Sn..; fdiv FSm, FSn
1653 8.0xf9+4.7,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fdiv
1660 fpu_disabled_exception (SD, CPU, cia);
1662 fpu_div (SD, CPU, cia,
1663 &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1666 // 1111 1001 1111 01YX fm.- fn.-; fdiv FDm, FDn
1667 8.0xf9+4.0xf,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fdiv
1674 fpu_disabled_exception (SD, CPU, cia);
1676 fpu_unimp_exception (SD, CPU, cia);
1679 // 1111 1011 0111 0100 Sm1. Sm2. Sn.. XYZ-; fdiv FSm1, FSm2, FSn
1680 8.0xfb+8.0x74+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fdiv
1687 fpu_disabled_exception (SD, CPU, cia);
1689 fpu_div (SD, CPU, cia,
1690 &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
1693 // 1111 1011 1111 0100 fm1- fm2- fn.- XYZ-; fdiv FDm1, FDm2, FDn
1694 8.0xfb+8.0xf4+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fdiv
1701 fpu_disabled_exception (SD, CPU, cia);
1703 fpu_unimp_exception (SD, CPU, cia);
1707 // 1111 1110 0111 01YX Sm.. Sn.. IMM32; fdiv imm32, FSm, FSn
1708 8.0xfe+4.7,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fdiv
1715 fpu_disabled_exception (SD, CPU, cia);
1718 uint32 imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1720 fpu_div (SD, CPU, cia,
1721 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1725 // 1111 1011 1000 00Sn Sm1. Sm2. Sm3. XYZA; fmadd FSm1, FSm2, FSm3, FSn
1726 8.0xfb+4.8,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmadd
1733 fpu_disabled_exception (SD, CPU, cia);
1735 fpu_fmadd (SD, CPU, cia,
1736 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1737 &AS2FS (A,Sn), FP_SINGLE);
1740 // 1111 1011 1000 01Sn Sm1. Sm2. Sm3. XYZA; fmsub FSm1, FSm2, FSm3, FSn
1741 8.0xfb+4.8,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmsub
1748 fpu_disabled_exception (SD, CPU, cia);
1750 fpu_fmsub (SD, CPU, cia,
1751 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1752 &AS2FS (A,Sn), FP_SINGLE);
1755 // 1111 1011 1001 00Sn Sm1. Sm2. Sm3. XYZA; fnmadd FSm1, FSm2, FSm3, FSn
1756 8.0xfb+4.9,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmadd
1763 fpu_disabled_exception (SD, CPU, cia);
1765 fpu_fnmadd (SD, CPU, cia,
1766 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1767 &AS2FS (A,Sn), FP_SINGLE);
1770 // 1111 1011 1001 01Sn Sm1. Sm2. Sm3. XYZA; fnmsub FSm1, FSm2, FSm3, FSn
1771 8.0xfb+4.9,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmsub
1778 fpu_disabled_exception (SD, CPU, cia);
1780 fpu_fnmsub (SD, CPU, cia,
1781 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1782 &AS2FS (A,Sn), FP_SINGLE);
1787 // 1111 1011 0100 0000 Sm.. ---- Sn.. X-Z-; ftoi FSm,FSn
1788 8.0xfb+8.0x40+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::ftoi
1795 fpu_disabled_exception (SD, CPU, cia);
1797 fpu_unimp_exception (SD, CPU, cia);
1800 // 1111 1011 0100 0010 Sm.. ---- Sn.. X-Z-; itof FSm,FSn
1801 8.0xfb+8.0x42+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::itof
1808 fpu_disabled_exception (SD, CPU, cia);
1810 fpu_unimp_exception (SD, CPU, cia);
1813 // 1111 1011 0101 0010 Sm.. ---- fn.- X-Z-; ftod FSm,FDn
1814 8.0xfb+8.0x52+4.Sm,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2:::ftod
1821 fpu_disabled_exception (SD, CPU, cia);
1823 fpu_unimp_exception (SD, CPU, cia);
1826 // 1111 1011 0101 0110 fm.- ---- Sn.. X-Z-; dtof FDm,FSn
1827 8.0xfb+8.0x56+3.fm,1.0,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::dtof
1834 fpu_disabled_exception (SD, CPU, cia);
1836 fpu_unimp_exception (SD, CPU, cia);
1841 // 1111 1000 1101 0000 d8; fbeq (d8,PC) (d8 is sign-extended)
1842 8.0xf8+8.0xd0+8.D8:D1:::fbeq
1849 fpu_disabled_exception (SD, CPU, cia);
1850 else if ((FPCR & FCC_E))
1852 State.regs[REG_PC] += EXTEND8 (D8);
1857 // 1111 1000 1101 0001 d8; fbne (d8,PC) (d8 is sign-extended)
1858 8.0xf8+8.0xd1+8.D8:D1:::fbne
1865 fpu_disabled_exception (SD, CPU, cia);
1866 else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
1868 State.regs[REG_PC] += EXTEND8 (D8);
1873 // 1111 1000 1101 0010 d8; fbgt (d8,PC) (d8 is sign-extended)
1874 8.0xf8+8.0xd2+8.D8:D1:::fbgt
1881 fpu_disabled_exception (SD, CPU, cia);
1882 else if ((FPCR & FCC_G))
1884 State.regs[REG_PC] += EXTEND8 (D8);
1889 // 1111 1000 1101 0011 d8; fbge (d8,PC) (d8 is sign-extended)
1890 8.0xf8+8.0xd3+8.D8:D1:::fbge
1897 fpu_disabled_exception (SD, CPU, cia);
1898 else if ((FPCR & (FCC_G | FCC_E)))
1900 State.regs[REG_PC] += EXTEND8 (D8);
1905 // 1111 1000 1101 0100 d8; fblt (d8,PC) (d8 is sign-extended)
1906 8.0xf8+8.0xd4+8.D8:D1:::fblt
1913 fpu_disabled_exception (SD, CPU, cia);
1914 else if ((FPCR & FCC_L))
1916 State.regs[REG_PC] += EXTEND8 (D8);
1921 // 1111 1000 1101 0101 d8; fble (d8,PC) (d8 is sign-extended)
1922 8.0xf8+8.0xd5+8.D8:D1:::fble
1929 fpu_disabled_exception (SD, CPU, cia);
1930 else if ((FPCR & (FCC_L | FCC_E)))
1932 State.regs[REG_PC] += EXTEND8 (D8);
1937 // 1111 1000 1101 0110 d8; fbuo (d8,PC) (d8 is sign-extended)
1938 8.0xf8+8.0xd6+8.D8:D1:::fbuo
1945 fpu_disabled_exception (SD, CPU, cia);
1946 else if ((FPCR & FCC_U))
1948 State.regs[REG_PC] += EXTEND8 (D8);
1953 // 1111 1000 1101 0111 d8; fblg (d8,PC) (d8 is sign-extended)
1954 8.0xf8+8.0xd7+8.D8:D1:::fblg
1961 fpu_disabled_exception (SD, CPU, cia);
1962 else if ((FPCR & (FCC_L | FCC_G)))
1964 State.regs[REG_PC] += EXTEND8 (D8);
1968 // 1111 1000 1101 1000 d8; fbleg (d8,PC) (d8 is sign-extended)
1969 8.0xf8+8.0xd8+8.D8:D1:::fbleg
1976 fpu_disabled_exception (SD, CPU, cia);
1977 else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
1979 State.regs[REG_PC] += EXTEND8 (D8);
1984 // 1111 1000 1101 1001 d8; fbug (d8,PC) (d8 is sign-extended)
1985 8.0xf8+8.0xd9+8.D8:D1:::fbug
1992 fpu_disabled_exception (SD, CPU, cia);
1993 else if ((FPCR & (FCC_U | FCC_G)))
1995 State.regs[REG_PC] += EXTEND8 (D8);
2000 // 1111 1000 1101 1010 d8; fbuge (d8,PC) (d8 is sign-extended)
2001 8.0xf8+8.0xda+8.D8:D1:::fbuge
2008 fpu_disabled_exception (SD, CPU, cia);
2009 else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
2011 State.regs[REG_PC] += EXTEND8 (D8);
2016 // 1111 1000 1101 1011 d8; fbul (d8,PC) (d8 is sign-extended)
2017 8.0xf8+8.0xdb+8.D8:D1:::fbul
2024 fpu_disabled_exception (SD, CPU, cia);
2025 else if ((FPCR & (FCC_U | FCC_L)))
2027 State.regs[REG_PC] += EXTEND8 (D8);
2032 // 1111 1000 1101 1100 d8; fbule (d8,PC) (d8 is sign-extended)
2033 8.0xf8+8.0xdc+8.D8:D1:::fbule
2040 fpu_disabled_exception (SD, CPU, cia);
2041 else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
2043 State.regs[REG_PC] += EXTEND8 (D8);
2048 // 1111 1000 1101 1101 d8; fbue (d8,PC) (d8 is sign-extended)
2049 8.0xf8+8.0xdd+8.D8:D1:::fbue
2056 fpu_disabled_exception (SD, CPU, cia);
2057 else if ((FPCR & (FCC_U | FCC_E)))
2059 State.regs[REG_PC] += EXTEND8 (D8);
2064 // 1111 0000 1101 0000; fleq
2065 8.0xf0+8.0xd0:D0:::fleq
2072 fpu_disabled_exception (SD, CPU, cia);
2073 else if ((FPCR & FCC_E))
2075 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2080 // 1111 0000 1101 0001; flne
2081 8.0xf0+8.0xd1:D0:::flne
2088 fpu_disabled_exception (SD, CPU, cia);
2089 else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
2091 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2096 // 1111 0000 1101 0010; flgt
2097 8.0xf0+8.0xd2:D0:::flgt
2104 fpu_disabled_exception (SD, CPU, cia);
2105 else if ((FPCR & FCC_G))
2107 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2112 // 1111 0000 1101 0011; flge
2113 8.0xf0+8.0xd3:D0:::flge
2120 fpu_disabled_exception (SD, CPU, cia);
2121 else if ((FPCR & (FCC_G | FCC_E)))
2123 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2128 // 1111 0000 1101 0100; fllt
2129 8.0xf0+8.0xd4:D0:::fllt
2136 fpu_disabled_exception (SD, CPU, cia);
2137 else if ((FPCR & FCC_L))
2139 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2144 // 1111 0000 1101 0101; flle
2145 8.0xf0+8.0xd5:D0:::flle
2152 fpu_disabled_exception (SD, CPU, cia);
2153 else if ((FPCR & (FCC_L | FCC_E)))
2155 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2160 // 1111 0000 1101 0110; fluo
2161 8.0xf0+8.0xd6:D0:::fluo
2168 fpu_disabled_exception (SD, CPU, cia);
2169 else if ((FPCR & FCC_U))
2171 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2176 // 1111 0000 1101 0111; fllg
2177 8.0xf0+8.0xd7:D0:::fllg
2184 fpu_disabled_exception (SD, CPU, cia);
2185 else if ((FPCR & (FCC_L | FCC_G)))
2187 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2191 // 1111 0000 1101 1000; flleg
2192 8.0xf0+8.0xd8:D0:::flleg
2199 fpu_disabled_exception (SD, CPU, cia);
2200 else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
2202 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2207 // 1111 0000 1101 1001; flug
2208 8.0xf0+8.0xd9:D0:::flug
2215 fpu_disabled_exception (SD, CPU, cia);
2216 else if ((FPCR & (FCC_U | FCC_G)))
2218 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2223 // 1111 0000 1101 1010; fluge
2224 8.0xf0+8.0xda:D0:::fluge
2231 fpu_disabled_exception (SD, CPU, cia);
2232 else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
2234 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2239 // 1111 0000 1101 1011; flul
2240 8.0xf0+8.0xdb:D0:::flul
2247 fpu_disabled_exception (SD, CPU, cia);
2248 else if ((FPCR & (FCC_U | FCC_L)))
2250 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2255 // 1111 0000 1101 1100; flule
2256 8.0xf0+8.0xdc:D0:::flule
2263 fpu_disabled_exception (SD, CPU, cia);
2264 else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
2266 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2271 // 1111 0000 1101 1101; flue
2272 8.0xf0+8.0xdd:D0:::flue
2279 fpu_disabled_exception (SD, CPU, cia);
2280 else if ((FPCR & (FCC_U | FCC_E)))
2282 State.regs[REG_PC] = State.regs[REG_LAR] - 4;