Home | History | Annotate | Line # | Download | only in mn10300
am33-2.igen revision 1.6
      1  1.1  christos // data cache pre-fetch:
      2  1.1  christos 
      3  1.1  christos // 1111 1001 1010 0110 Rm.. 0000; dcpf (Rm)
      4  1.1  christos 8.0xf9+8.0xa6+4.RN2,4.0000:D1a:::dcpf
      5  1.1  christos "dcpf"
      6  1.1  christos *am33_2
      7  1.1  christos {
      8  1.1  christos   int srcreg;
      9  1.1  christos 
     10  1.1  christos   PC = cia;
     11  1.1  christos 
     12  1.1  christos   srcreg = translate_rreg (SD_, RN2);
     13  1.1  christos   load_word (State.regs[srcreg]);
     14  1.1  christos }
     15  1.1  christos 
     16  1.1  christos // 1111 1001 1010 0111 0000 0000; dcpf (sp)
     17  1.1  christos 8.0xf9+8.0xa7+8.0x00:D1b:::dcpf
     18  1.1  christos "dcpf"
     19  1.1  christos *am33_2
     20  1.1  christos {
     21  1.1  christos   PC = cia;
     22  1.1  christos 
     23  1.1  christos   load_word (SP);
     24  1.1  christos }
     25  1.1  christos 
     26  1.1  christos // 1111 1011 1010 0110 Ri.. Rm.. 0000 0000; dcpf (Ri,Rm)
     27  1.1  christos 8.0xfb+8.0xa6+4.RN2,4.RN0+8.0x00:D2a:::dcpf
     28  1.1  christos "dcpf"
     29  1.1  christos *am33_2
     30  1.1  christos {
     31  1.1  christos   int srci, srcm;
     32  1.1  christos 
     33  1.1  christos   PC = cia;
     34  1.1  christos 
     35  1.1  christos   srci = translate_rreg (SD_, RN2);
     36  1.1  christos   srcm = translate_rreg (SD_, RN0);
     37  1.1  christos 
     38  1.1  christos   load_word (State.regs[srci] + State.regs[srcm]);
     39  1.1  christos }
     40  1.1  christos 
     41  1.1  christos // 1111 1011 1010 0111 Rm.. 0000 IMM8; dcpf (d8,Rm)
     42  1.1  christos 8.0xfb+8.0xa7+4.RN2,4.0000+8.IMM8:D2b:::dcpf
     43  1.1  christos "dcpf"
     44  1.1  christos *am33_2
     45  1.1  christos {
     46  1.1  christos   int srcreg;
     47  1.1  christos 
     48  1.1  christos   PC = cia;
     49  1.1  christos 
     50  1.1  christos   srcreg = translate_rreg (SD_, RN2);
     51  1.1  christos 
     52  1.1  christos   load_word (State.regs[srcreg] + EXTEND8 (IMM8));
     53  1.1  christos }
     54  1.1  christos 
     55  1.1  christos // 1111 1101 1010 0111 Rm.. 0000 IMM24; dcpf (d24,Rm)
     56  1.1  christos 8.0xfd+8.0xa7+4.RN2,4.0000+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::dcpf
     57  1.1  christos "dcpf"
     58  1.1  christos *am33_2
     59  1.1  christos {
     60  1.1  christos   int srcreg;
     61  1.1  christos 
     62  1.1  christos   PC = cia;
     63  1.1  christos 
     64  1.1  christos   srcreg = translate_rreg (SD_, RN2);
     65  1.1  christos 
     66  1.1  christos   load_word (State.regs[srcreg] + EXTEND24 (FETCH24 (IMM24A,
     67  1.1  christos 						     IMM24B, IMM24C)));
     68  1.1  christos }
     69  1.1  christos 
     70  1.1  christos // 1111 1110 0100 0110 Rm.. 0000 IMM32; dcpf (d32,Rm)
     71  1.1  christos 8.0xfe+8.0x46+4.RN2,4.0000+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::dcpf
     72  1.1  christos "dcpf"
     73  1.1  christos *am33_2
     74  1.1  christos {
     75  1.1  christos   int srcreg;
     76  1.1  christos 
     77  1.1  christos   PC = cia;
     78  1.1  christos 
     79  1.1  christos   srcreg = translate_rreg (SD_, RN2);
     80  1.1  christos 
     81  1.1  christos   load_word (State.regs[srcreg]
     82  1.1  christos 	     + FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D));
     83  1.1  christos }
     84  1.1  christos 
     85  1.1  christos // bit operations with imm8,(abs16) addressing mode:
     86  1.1  christos 
     87  1.1  christos // 1111 1110 1000 0010 ABS16 IMM8; btst imm8,(abs16)
     88  1.1  christos 8.0xfe+8.0x82+8.IMM16A+8.IMM16B+8.IMM8:D3:::btst
     89  1.1  christos "btst"
     90  1.1  christos *am33_2
     91  1.1  christos {
     92  1.1  christos   PC = cia;
     93  1.1  christos   genericBtst (IMM8, FETCH16 (IMM16A, IMM16B));
     94  1.1  christos }
     95  1.1  christos 
     96  1.1  christos // 1111 1110 1000 0000 ABS16 IMM8; bset imm8,(abs16)
     97  1.1  christos 8.0xfe+8.0x80+8.IMM16A+8.IMM16B+8.IMM8:D3:::bset
     98  1.1  christos "bset"
     99  1.1  christos *am33_2
    100  1.1  christos {
    101  1.6  christos   uint32_t temp;
    102  1.1  christos   int z;
    103  1.1  christos   
    104  1.1  christos   PC = cia;
    105  1.1  christos   temp = load_byte (FETCH16 (IMM16A, IMM16B));
    106  1.1  christos   z = (temp & IMM8) == 0;
    107  1.1  christos   temp |= IMM8;
    108  1.1  christos   store_byte (FETCH16 (IMM16A, IMM16B), temp);
    109  1.1  christos   PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
    110  1.1  christos   PSW |= (z ? PSW_Z : 0);
    111  1.1  christos }
    112  1.1  christos 
    113  1.1  christos // 1111 1110 1000 0001 ABS16 IMM8; bclr imm8,(abs16)
    114  1.1  christos 8.0xfe+8.0x81+8.IMM16A+8.IMM16B+8.IMM8:D3:::bclr
    115  1.1  christos "bclr"
    116  1.1  christos *am33_2
    117  1.1  christos {
    118  1.6  christos   uint32_t temp;
    119  1.1  christos   int z;
    120  1.1  christos   
    121  1.1  christos   PC = cia;
    122  1.1  christos   temp = load_byte (FETCH16 (IMM16A, IMM16B));
    123  1.1  christos   z = (temp & IMM8) == 0;
    124  1.1  christos   temp = temp & ~(IMM8);
    125  1.1  christos   store_byte (FETCH16 (IMM16A, IMM16B), temp);
    126  1.1  christos   PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
    127  1.1  christos   PSW |= (z ? PSW_Z : 0);
    128  1.1  christos }
    129  1.1  christos 
    130  1.1  christos // single precision fmov:
    131  1.1  christos 
    132  1.1  christos // 1111 1001 0010 000X Rm.. Sn..; fmov (Rm),FSn
    133  1.1  christos 8.0xf9+4.2,3.0,1.X+4.Rm,4.Sn:D1a:::fmov
    134  1.1  christos "fmov"
    135  1.1  christos *am33_2
    136  1.1  christos {
    137  1.1  christos   PC = cia;
    138  1.1  christos 
    139  1.1  christos   if (FPU_DISABLED)
    140  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    141  1.1  christos   else
    142  1.1  christos     {
    143  1.1  christos       int reg = translate_rreg (SD_, Rm);
    144  1.1  christos       XS2FS (X,Sn) = load_word (State.regs[reg]);
    145  1.1  christos     }
    146  1.1  christos }
    147  1.1  christos 
    148  1.1  christos // 1111 1001 0010 001X Rm.. Sn..; fmov (Rm+),FSn
    149  1.1  christos 8.0xf9+4.2,3.1,1.X+4.Rm,4.Sn:D1b:::fmov
    150  1.1  christos "fmov"
    151  1.1  christos *am33_2
    152  1.1  christos {
    153  1.1  christos   PC = cia;
    154  1.1  christos 
    155  1.1  christos   if (FPU_DISABLED)
    156  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    157  1.1  christos   else
    158  1.1  christos     {
    159  1.1  christos       int reg = translate_rreg (SD_, Rm);
    160  1.1  christos       XS2FS (X,Sn) = load_word (State.regs[reg]);
    161  1.1  christos       State.regs[reg] += 4;
    162  1.1  christos     }
    163  1.1  christos }
    164  1.1  christos 
    165  1.1  christos // 1111 1001 0010 010X ---- Sn..; fmov (SP),FSn
    166  1.1  christos 8.0xf9+4.2,3.2,1.X+4.0,4.Sn:D1c:::fmov
    167  1.1  christos "fmov"
    168  1.1  christos *am33_2
    169  1.1  christos {
    170  1.1  christos   PC = cia;
    171  1.1  christos 
    172  1.1  christos   if (FPU_DISABLED)
    173  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    174  1.1  christos   else
    175  1.1  christos     {
    176  1.1  christos       int reg = REG_SP;
    177  1.1  christos       XS2FS (X,Sn) = load_word (State.regs[reg]);
    178  1.1  christos     }
    179  1.1  christos }
    180  1.1  christos 
    181  1.1  christos // 1111 1001 0010 011X Rm.. Sn..; fmov Rm,FSn
    182  1.1  christos 8.0xf9+4.2,3.3,1.X+4.Rm,4.Sn:D1d:::fmov
    183  1.1  christos "fmov"
    184  1.1  christos *am33_2
    185  1.1  christos {
    186  1.1  christos   PC = cia;
    187  1.1  christos 
    188  1.1  christos   if (FPU_DISABLED)
    189  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    190  1.1  christos   else
    191  1.1  christos     {
    192  1.1  christos       int reg = translate_rreg (SD_, Rm);
    193  1.1  christos       XS2FS (X,Sn) = State.regs[reg];
    194  1.1  christos     }
    195  1.1  christos }
    196  1.1  christos 
    197  1.1  christos // 1111 1001 0011 00Y0 Sm.. Rn..; fmov FSm,(Rn)
    198  1.1  christos 8.0xf9+4.3,2.0,1.Y,1.0+4.Sm,4.Rn:D1e:::fmov
    199  1.1  christos "fmov"
    200  1.1  christos *am33_2
    201  1.1  christos {
    202  1.1  christos   PC = cia;
    203  1.1  christos 
    204  1.1  christos   if (FPU_DISABLED)
    205  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    206  1.1  christos   else
    207  1.1  christos     {
    208  1.1  christos       int reg = translate_rreg (SD_, Rn);
    209  1.1  christos       store_word (State.regs[reg], XS2FS (Y,Sm));
    210  1.1  christos     }
    211  1.1  christos }
    212  1.1  christos 
    213  1.1  christos // 1111 1001 0011 00Y1 Sm.. Rn..; fmov FSm,(Rn+)
    214  1.1  christos 8.0xf9+4.3,2.0,1.Y,1.1+4.Sm,4.Rn:D1f:::fmov
    215  1.1  christos "fmov"
    216  1.1  christos *am33_2
    217  1.1  christos {
    218  1.1  christos   PC = cia;
    219  1.1  christos 
    220  1.1  christos   if (FPU_DISABLED)
    221  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    222  1.1  christos   else
    223  1.1  christos     {
    224  1.1  christos       int reg = translate_rreg (SD_, Rn);
    225  1.1  christos       store_word (State.regs[reg], XS2FS (Y,Sm));
    226  1.1  christos       State.regs[reg] += 4;
    227  1.1  christos     }
    228  1.1  christos }
    229  1.1  christos 
    230  1.1  christos // 1111 1001 0011 01Y0 Sm.. ----; fmov FSm,(SP)
    231  1.1  christos 8.0xf9+4.3,2.1,1.Y,1.0+4.Sm,4.0:D1g:::fmov
    232  1.1  christos "fmov"
    233  1.1  christos *am33_2
    234  1.1  christos {
    235  1.1  christos   PC = cia;
    236  1.1  christos 
    237  1.1  christos   if (FPU_DISABLED)
    238  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    239  1.1  christos   else
    240  1.1  christos     {
    241  1.1  christos       int reg = REG_SP;
    242  1.1  christos       store_word (State.regs[reg], XS2FS (Y,Sm));
    243  1.1  christos     }
    244  1.1  christos }
    245  1.1  christos 
    246  1.1  christos // 1111 1001 0011 01Y1 Sm.. Rn..; fmov FSm,Rn
    247  1.1  christos 8.0xf9+4.3,2.1,1.Y,1.1+4.Sm,4.Rn:D1h:::fmov
    248  1.1  christos "fmov"
    249  1.1  christos *am33_2
    250  1.1  christos {
    251  1.1  christos   PC = cia;
    252  1.1  christos 
    253  1.1  christos   if (FPU_DISABLED)
    254  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    255  1.1  christos   else
    256  1.1  christos     {
    257  1.1  christos       int reg = translate_rreg (SD_, Rn);
    258  1.1  christos       State.regs[reg] = XS2FS (Y,Sm);
    259  1.1  christos     }
    260  1.1  christos }
    261  1.1  christos 
    262  1.1  christos // 1111 1001 0100 00YX Sm.. Sn..; fmov FSm,FSn
    263  1.1  christos 8.0xf9+4.4,2.0,1.Y,1.X+4.Sm,4.Sn:D1i:::fmov
    264  1.1  christos "fmov"
    265  1.1  christos *am33_2
    266  1.1  christos {
    267  1.1  christos   PC = cia;
    268  1.1  christos 
    269  1.1  christos   if (FPU_DISABLED)
    270  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    271  1.1  christos   else
    272  1.1  christos     XS2FS (X,Sn) = XS2FS (Y,Sm);
    273  1.1  christos }
    274  1.1  christos 
    275  1.1  christos // 1111 1011 0010 000X Rm.. Sn.. d8; fmov (d8,Rm),FSn
    276  1.1  christos 8.0xfb+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM8:D2a:::fmov
    277  1.1  christos "fmov"
    278  1.1  christos *am33_2
    279  1.1  christos {
    280  1.1  christos   PC = cia;
    281  1.1  christos 
    282  1.1  christos   if (FPU_DISABLED)
    283  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    284  1.1  christos   else
    285  1.1  christos     {
    286  1.1  christos       int reg = translate_rreg (SD_, Rm);
    287  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
    288  1.1  christos     }
    289  1.1  christos }
    290  1.1  christos 
    291  1.1  christos // 1111 1011 0010 001X Rm.. Sn.. d8; fmov (Rm+,imm8),FSn
    292  1.1  christos 8.0xfb+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM8:D2b:::fmov
    293  1.1  christos "fmov"
    294  1.1  christos *am33_2
    295  1.1  christos {
    296  1.1  christos   PC = cia;
    297  1.1  christos 
    298  1.1  christos   if (FPU_DISABLED)
    299  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    300  1.1  christos   else
    301  1.1  christos     {
    302  1.1  christos       int reg = translate_rreg (SD_, Rm);
    303  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
    304  1.1  christos       State.regs[reg] += 4;
    305  1.1  christos     }
    306  1.1  christos }
    307  1.1  christos 
    308  1.1  christos // 1111 1011 0010 010X ---- Sn.. d8; fmov (d8,SP),FSn
    309  1.1  christos 8.0xfb+4.2,3.2,1.X+4.0,4.Sn+8.IMM8:D2c:::fmov
    310  1.1  christos "fmov"
    311  1.1  christos *am33_2
    312  1.1  christos {
    313  1.1  christos   PC = cia;
    314  1.1  christos 
    315  1.1  christos   if (FPU_DISABLED)
    316  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    317  1.1  christos   else
    318  1.1  christos     {
    319  1.1  christos       int reg = REG_SP;
    320  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg] + IMM8);
    321  1.1  christos     }
    322  1.1  christos }
    323  1.1  christos 
    324  1.1  christos // 1111 1011 0010 0111 Ri.. Rm.. Sn.. --Z-; fmov (Ri,Rm),FSn
    325  1.1  christos 8.0xfb+8.0x27+4.Ri,4.Rm+4.Sn,2.0,1.Z,1.0:D2d:::fmov
    326  1.1  christos "fmov"
    327  1.1  christos *am33_2
    328  1.1  christos {
    329  1.1  christos   PC = cia;
    330  1.1  christos 
    331  1.1  christos   if (FPU_DISABLED)
    332  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    333  1.1  christos   else
    334  1.1  christos     {
    335  1.1  christos       int ri = translate_rreg (SD_, Ri);
    336  1.1  christos       int rm = translate_rreg (SD_, Rm);
    337  1.1  christos       XS2FS (Z, Sn) = load_word (State.regs[ri] + State.regs[rm]);
    338  1.1  christos     }
    339  1.1  christos }
    340  1.1  christos 
    341  1.1  christos // 1111 1011 0011 00Y0 Sm.. Rn.. d8; fmov FSm,(d8,Rn)
    342  1.1  christos 8.0xfb+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM8:D2e:::fmov
    343  1.1  christos "fmov"
    344  1.1  christos *am33_2
    345  1.1  christos {
    346  1.1  christos   PC = cia;
    347  1.1  christos 
    348  1.1  christos   if (FPU_DISABLED)
    349  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    350  1.1  christos   else
    351  1.1  christos     {
    352  1.1  christos       int reg = translate_rreg (SD_, Rn);
    353  1.1  christos       store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
    354  1.1  christos     }
    355  1.1  christos }
    356  1.1  christos 
    357  1.1  christos // 1111 1011 0011 00Y1 Sm.. Rn.. d8; fmov FSm,(Rn+,d8)
    358  1.1  christos 8.0xfb+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM8:D2f:::fmov
    359  1.1  christos "fmov"
    360  1.1  christos *am33_2
    361  1.1  christos {
    362  1.1  christos   PC = cia;
    363  1.1  christos 
    364  1.1  christos   if (FPU_DISABLED)
    365  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    366  1.1  christos   else
    367  1.1  christos     {
    368  1.1  christos       int reg = translate_rreg (SD_, Rn);
    369  1.1  christos       store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
    370  1.1  christos       State.regs[reg] += 4;
    371  1.1  christos     }
    372  1.1  christos }
    373  1.1  christos 
    374  1.1  christos // 1111 1011 0011 01Y0 Sm.. ---- d8; fmov FSm,(d8,SP)
    375  1.1  christos 8.0xfb+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM8:D2g:::fmov
    376  1.1  christos "fmov"
    377  1.1  christos *am33_2
    378  1.1  christos {
    379  1.1  christos   PC = cia;
    380  1.1  christos 
    381  1.1  christos   if (FPU_DISABLED)
    382  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    383  1.1  christos   else
    384  1.1  christos     {
    385  1.1  christos       int reg = REG_SP;
    386  1.1  christos       store_word (State.regs[reg] + IMM8, XS2FS (Y, Sm));
    387  1.1  christos     }
    388  1.1  christos }
    389  1.1  christos 
    390  1.1  christos // 1111 1011 0011 0111 Ri.. Rm.. Sm.. --Z-; fmov FSm,(Ri,Rm)
    391  1.1  christos 8.0xfb+8.0x37+4.Ri,4.Rm+4.Sm,2.0,1.Z,1.0:D2h:::fmov
    392  1.1  christos "fmov"
    393  1.1  christos *am33_2
    394  1.1  christos {
    395  1.1  christos   PC = cia;
    396  1.1  christos 
    397  1.1  christos   if (FPU_DISABLED)
    398  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    399  1.1  christos   else
    400  1.1  christos     {
    401  1.1  christos       int ri = translate_rreg (SD_, Ri);
    402  1.1  christos       int rm = translate_rreg (SD_, Rm);
    403  1.1  christos       store_word (State.regs[ri] + State.regs[rm], XS2FS (Z, Sm));
    404  1.1  christos     }
    405  1.1  christos }
    406  1.1  christos 
    407  1.1  christos // 1111 1101 0010 000X Rm.. Sn.. d24; fmov (d24,Rm),FSn
    408  1.1  christos 8.0xfd+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::fmov
    409  1.1  christos "fmov"
    410  1.1  christos *am33_2
    411  1.1  christos {
    412  1.1  christos   PC = cia;
    413  1.1  christos 
    414  1.1  christos   if (FPU_DISABLED)
    415  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    416  1.1  christos   else
    417  1.1  christos     {
    418  1.1  christos       int reg = translate_rreg (SD_, Rm);
    419  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg]
    420  1.1  christos 				 + EXTEND24 (FETCH24 (IMM24A,
    421  1.1  christos 						      IMM24B, IMM24C)));
    422  1.1  christos     }
    423  1.1  christos }
    424  1.1  christos 
    425  1.1  christos // 1111 1101 0010 001X Rm.. Sn.. d24; fmov (Rm+,imm24),FSn
    426  1.1  christos 8.0xfd+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4b:::fmov
    427  1.1  christos "fmov"
    428  1.1  christos *am33_2
    429  1.1  christos {
    430  1.1  christos   PC = cia;
    431  1.1  christos 
    432  1.1  christos   if (FPU_DISABLED)
    433  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    434  1.1  christos   else
    435  1.1  christos     {
    436  1.1  christos       int reg = translate_rreg (SD_, Rm);
    437  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg]
    438  1.1  christos 				 + EXTEND24 (FETCH24 (IMM24A,
    439  1.1  christos 						      IMM24B, IMM24C)));
    440  1.1  christos       State.regs[reg] += 4;
    441  1.1  christos     }
    442  1.1  christos }
    443  1.1  christos 
    444  1.1  christos // 1111 1101 0010 010X ---- Sn.. d24; fmov (d24,SP),FSn
    445  1.1  christos 8.0xfd+4.2,3.2,1.X+4.0,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4c:::fmov
    446  1.1  christos "fmov"
    447  1.1  christos *am33_2
    448  1.1  christos {
    449  1.1  christos   PC = cia;
    450  1.1  christos 
    451  1.1  christos   if (FPU_DISABLED)
    452  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    453  1.1  christos   else
    454  1.1  christos     {
    455  1.1  christos       int reg = REG_SP;
    456  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg] + FETCH24 (IMM24A,
    457  1.1  christos 							    IMM24B, IMM24C));
    458  1.1  christos     }
    459  1.1  christos }
    460  1.1  christos 
    461  1.1  christos // 1111 1101 0011 00Y0 Sm.. Rn.. d24; fmov FSm,(d24,Rn)
    462  1.1  christos 8.0xfd+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4e:::fmov
    463  1.1  christos "fmov"
    464  1.1  christos *am33_2
    465  1.1  christos {
    466  1.1  christos   PC = cia;
    467  1.1  christos 
    468  1.1  christos   if (FPU_DISABLED)
    469  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    470  1.1  christos   else
    471  1.1  christos     {
    472  1.1  christos       int reg = translate_rreg (SD_, Rn);
    473  1.1  christos       store_word (State.regs[reg]
    474  1.1  christos 		  + EXTEND24 (FETCH24 (IMM24A,
    475  1.1  christos 				       IMM24B, IMM24C)), XS2FS (Y, Sm));
    476  1.1  christos     }
    477  1.1  christos }
    478  1.1  christos 
    479  1.1  christos // 1111 1101 0011 00Y1 Sm.. Rn.. d24; fmov FSm,(Rn+,d24)
    480  1.1  christos 8.0xfd+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4f:::fmov
    481  1.1  christos "fmov"
    482  1.1  christos *am33_2
    483  1.1  christos {
    484  1.1  christos   PC = cia;
    485  1.1  christos 
    486  1.1  christos   if (FPU_DISABLED)
    487  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    488  1.1  christos   else
    489  1.1  christos     {
    490  1.1  christos       int reg = translate_rreg (SD_, Rn);
    491  1.1  christos       store_word (State.regs[reg]
    492  1.1  christos 		  + EXTEND24 (FETCH24 (IMM24A,
    493  1.1  christos 				       IMM24B, IMM24C)), XS2FS (Y, Sm));
    494  1.1  christos       State.regs[reg] += 4;
    495  1.1  christos     }
    496  1.1  christos }
    497  1.1  christos 
    498  1.1  christos // 1111 1101 0011 01Y0 Sm.. ---- d24; fmov FSm,(d24,SP)
    499  1.1  christos 8.0xfd+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4g:::fmov
    500  1.1  christos "fmov"
    501  1.1  christos *am33_2
    502  1.1  christos {
    503  1.1  christos   PC = cia;
    504  1.1  christos 
    505  1.1  christos   if (FPU_DISABLED)
    506  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    507  1.1  christos   else
    508  1.1  christos     {
    509  1.1  christos       int reg = REG_SP;
    510  1.1  christos       store_word (State.regs[reg]
    511  1.1  christos 		  + FETCH24 (IMM24A,
    512  1.1  christos 			     IMM24B, IMM24C), XS2FS (Y, Sm));
    513  1.1  christos     }
    514  1.1  christos }
    515  1.1  christos 
    516  1.1  christos // 1111 1110 0010 000X Rm.. Sn.. d32; fmov (d32,Rm),FSn
    517  1.1  christos 8.0xfe+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::fmov
    518  1.1  christos "fmov"
    519  1.1  christos *am33_2
    520  1.1  christos {
    521  1.1  christos   PC = cia;
    522  1.1  christos 
    523  1.1  christos   if (FPU_DISABLED)
    524  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    525  1.1  christos   else
    526  1.1  christos     {
    527  1.1  christos       int reg = translate_rreg (SD_, Rm);
    528  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg]
    529  1.1  christos 				 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
    530  1.1  christos 						      IMM32C, IMM32D)));
    531  1.1  christos     }
    532  1.1  christos }
    533  1.1  christos 
    534  1.1  christos // 1111 1110 0010 001X Rm.. Sn.. d32; fmov (Rm+,imm32),FSn
    535  1.1  christos 8.0xfe+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5b:::fmov
    536  1.1  christos "fmov"
    537  1.1  christos *am33_2
    538  1.1  christos {
    539  1.1  christos   PC = cia;
    540  1.1  christos 
    541  1.1  christos   if (FPU_DISABLED)
    542  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    543  1.1  christos   else
    544  1.1  christos     {
    545  1.1  christos       int reg = translate_rreg (SD_, Rm);
    546  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg]
    547  1.1  christos 				 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
    548  1.1  christos 						      IMM32C, IMM32D)));
    549  1.1  christos       State.regs[reg] += 4;
    550  1.1  christos     }
    551  1.1  christos }
    552  1.1  christos 
    553  1.1  christos // 1111 1110 0010 010X ---- Sn.. d32; fmov (d32,SP),FSn
    554  1.1  christos 8.0xfe+4.2,3.2,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5c:::fmov
    555  1.1  christos "fmov"
    556  1.1  christos *am33_2
    557  1.1  christos {
    558  1.1  christos   PC = cia;
    559  1.1  christos 
    560  1.1  christos   if (FPU_DISABLED)
    561  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    562  1.1  christos   else
    563  1.1  christos     {
    564  1.1  christos       int reg = REG_SP;
    565  1.1  christos       XS2FS (X, Sn) = load_word (State.regs[reg]
    566  1.1  christos 				 + FETCH32 (IMM32A, IMM32B,
    567  1.1  christos 					    IMM32C, IMM32D));
    568  1.1  christos     }
    569  1.1  christos }
    570  1.1  christos 
    571  1.1  christos // 1111 1110 0010 011X ---- Sn.. d32; fmov imm32,FSn
    572  1.1  christos 8.0xfe+4.2,3.3,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5d:::fmov
    573  1.1  christos "fmov"
    574  1.1  christos *am33_2
    575  1.1  christos {
    576  1.1  christos   PC = cia;
    577  1.1  christos 
    578  1.1  christos   if (FPU_DISABLED)
    579  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    580  1.1  christos   else
    581  1.1  christos     XS2FS (X, Sn) = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
    582  1.1  christos }
    583  1.1  christos 
    584  1.1  christos // 1111 1110 0011 00Y0 Sm.. Rn.. d32; fmov FSm,(d32,Rn)
    585  1.1  christos 8.0xfe+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5e:::fmov
    586  1.1  christos "fmov"
    587  1.1  christos *am33_2
    588  1.1  christos {
    589  1.1  christos   PC = cia;
    590  1.1  christos 
    591  1.1  christos   if (FPU_DISABLED)
    592  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    593  1.1  christos   else
    594  1.1  christos     {
    595  1.1  christos       int reg = translate_rreg (SD_, Rn);
    596  1.1  christos       store_word (State.regs[reg]
    597  1.1  christos 		  + EXTEND32 (FETCH32 (IMM32A, IMM32B,
    598  1.1  christos 				       IMM32C, IMM32D)), XS2FS (Y, Sm));
    599  1.1  christos     }
    600  1.1  christos }
    601  1.1  christos 
    602  1.1  christos // 1111 1110 0011 00Y1 Sm.. Rn.. d32; fmov FSm,(Rn+,d32)
    603  1.1  christos 8.0xfe+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5f:::fmov
    604  1.1  christos "fmov"
    605  1.1  christos *am33_2
    606  1.1  christos {
    607  1.1  christos   PC = cia;
    608  1.1  christos 
    609  1.1  christos   if (FPU_DISABLED)
    610  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    611  1.1  christos   else
    612  1.1  christos     {
    613  1.1  christos       int reg = translate_rreg (SD_, Rn);
    614  1.1  christos       store_word (State.regs[reg]
    615  1.1  christos 		  + EXTEND32 (FETCH32 (IMM32A, IMM32B,
    616  1.1  christos 				       IMM32C, IMM32D)), XS2FS (Y, Sm));
    617  1.1  christos       State.regs[reg] += 4;
    618  1.1  christos     }
    619  1.1  christos }
    620  1.1  christos 
    621  1.1  christos // 1111 1110 0011 01Y0 Sm.. ---- d32; fmov FSm,(d32,SP)
    622  1.1  christos 8.0xfe+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5g:::fmov
    623  1.1  christos "fmov"
    624  1.1  christos *am33_2
    625  1.1  christos {
    626  1.1  christos   PC = cia;
    627  1.1  christos 
    628  1.1  christos   if (FPU_DISABLED)
    629  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    630  1.1  christos   else
    631  1.1  christos     {
    632  1.1  christos       int reg = REG_SP;
    633  1.1  christos       store_word (State.regs[reg]
    634  1.1  christos 		  + FETCH32 (IMM32A, IMM32B,
    635  1.1  christos 			     IMM32C, IMM32D), XS2FS (Y, Sm));
    636  1.1  christos     }
    637  1.1  christos }
    638  1.1  christos 
    639  1.1  christos // double precision fmov:
    640  1.1  christos 
    641  1.1  christos // 1111 1001 1010 000X Rm.. fn.-; fmov (Rm),FDn
    642  1.1  christos 8.0xf9+4.0xa,3.0,1.X+4.Rm,3.fn,1.0:D1j:::fmov
    643  1.1  christos "fmov"
    644  1.1  christos *am33_2
    645  1.1  christos {
    646  1.1  christos   PC = cia;
    647  1.1  christos 
    648  1.1  christos   if (FPU_DISABLED)
    649  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    650  1.1  christos   else
    651  1.1  christos     {
    652  1.1  christos       int reg = translate_rreg (SD_, Rm);
    653  1.1  christos       Xf2FD (X,fn) = load_dword (State.regs[reg]);
    654  1.1  christos     }
    655  1.1  christos }
    656  1.1  christos 
    657  1.1  christos // 1111 1001 1010 001X Rm.. fn.-; fmov (Rm+),FDn
    658  1.1  christos 8.0xf9+4.0xa,3.1,1.X+4.Rm,3.fn,1.0:D1k:::fmov
    659  1.1  christos "fmov"
    660  1.1  christos *am33_2
    661  1.1  christos {
    662  1.1  christos   PC = cia;
    663  1.1  christos 
    664  1.1  christos   if (FPU_DISABLED)
    665  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    666  1.1  christos   else
    667  1.1  christos     {
    668  1.1  christos       int reg = translate_rreg (SD_, Rm);
    669  1.1  christos       Xf2FD (X,fn) = load_dword (State.regs[reg]);
    670  1.1  christos       State.regs[reg] += 8;
    671  1.1  christos     }
    672  1.1  christos }
    673  1.1  christos 
    674  1.1  christos // 1111 1001 1010 010X ---- fn.-; fmov (SP),FDn
    675  1.1  christos 8.0xf9+4.0xa,3.2,1.X+4.0,3.fn,1.0:D1l:::fmov
    676  1.1  christos "fmov"
    677  1.1  christos *am33_2
    678  1.1  christos {
    679  1.1  christos   PC = cia;
    680  1.1  christos 
    681  1.1  christos   if (FPU_DISABLED)
    682  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    683  1.1  christos   else
    684  1.1  christos     {
    685  1.1  christos       int reg = REG_SP;
    686  1.1  christos       Xf2FD (X,fn) = load_dword (State.regs[reg]);
    687  1.1  christos     }
    688  1.1  christos }
    689  1.1  christos 
    690  1.1  christos // 1111 1001 1011 00Y0 fm.- Rn..; fmov FDm,(Rn)
    691  1.1  christos 8.0xf9+4.0xb,2.0,1.Y,1.0+3.fm,1.0,4.Rn:D1m:::fmov
    692  1.1  christos "fmov"
    693  1.1  christos *am33_2
    694  1.1  christos {
    695  1.1  christos   PC = cia;
    696  1.1  christos 
    697  1.1  christos   if (FPU_DISABLED)
    698  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    699  1.1  christos   else
    700  1.1  christos     {
    701  1.1  christos       int reg = translate_rreg (SD_, Rn);
    702  1.1  christos       store_dword (State.regs[reg], Xf2FD (Y,fm));
    703  1.1  christos     }
    704  1.1  christos }
    705  1.1  christos 
    706  1.1  christos // 1111 1001 1011 00Y1 fm.- Rn..; fmov FDm,(Rn+)
    707  1.1  christos 8.0xf9+4.0xb,2.0,1.Y,1.1+3.fm,1.0,4.Rn:D1n:::fmov
    708  1.1  christos "fmov"
    709  1.1  christos *am33_2
    710  1.1  christos {
    711  1.1  christos   PC = cia;
    712  1.1  christos 
    713  1.1  christos   if (FPU_DISABLED)
    714  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    715  1.1  christos   else
    716  1.1  christos     {
    717  1.1  christos       int reg = translate_rreg (SD_, Rn);
    718  1.1  christos       store_dword (State.regs[reg], Xf2FD (Y,fm));
    719  1.1  christos       State.regs[reg] += 8;
    720  1.1  christos     }
    721  1.1  christos }
    722  1.1  christos 
    723  1.1  christos // 1111 1001 1011 01Y0 fm.- ----; fmov FDm,(SP)
    724  1.1  christos 8.0xf9+4.0xb,2.1,1.Y,1.0+3.fm,1.0,4.0:D1o:::fmov
    725  1.1  christos "fmov"
    726  1.1  christos *am33_2
    727  1.1  christos {
    728  1.1  christos   PC = cia;
    729  1.1  christos 
    730  1.1  christos   if (FPU_DISABLED)
    731  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    732  1.1  christos   else
    733  1.1  christos     {
    734  1.1  christos       int reg = REG_SP;
    735  1.1  christos       store_dword (State.regs[reg], Xf2FD (Y,fm));
    736  1.1  christos     }
    737  1.1  christos }
    738  1.1  christos 
    739  1.1  christos // 1111 1001 1100 00YX fm.- fn.-; fmov FDm,FDn
    740  1.1  christos 8.0xf9+4.0xc,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1p:::fmov
    741  1.1  christos "fmov"
    742  1.1  christos *am33_2
    743  1.1  christos {
    744  1.1  christos   PC = cia;
    745  1.1  christos 
    746  1.1  christos   if (FPU_DISABLED)
    747  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    748  1.1  christos   else
    749  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
    750  1.1  christos }
    751  1.1  christos 
    752  1.1  christos // 1111 1011 0100 0111 Ri.. Rm.. fn.- --Z-; fmov (Ri,Rm),FDn
    753  1.1  christos 8.0xfb+8.0x47+4.Ri,4.Rm+3.fn,1.0,2.0,1.Z,1.0:D2i:::fmov
    754  1.1  christos "fmov"
    755  1.1  christos *am33_2
    756  1.1  christos {
    757  1.1  christos   PC = cia;
    758  1.1  christos 
    759  1.1  christos   if (FPU_DISABLED)
    760  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    761  1.1  christos   else
    762  1.1  christos     {
    763  1.1  christos       int ri = translate_rreg (SD_, Ri);
    764  1.1  christos       int rm = translate_rreg (SD_, Rm);
    765  1.1  christos       Xf2FD (Z,fn) = load_dword (State.regs[ri] + State.regs[rm]);
    766  1.1  christos     }
    767  1.1  christos }
    768  1.1  christos       
    769  1.1  christos // 1111 1011 0101 0111 Ri.. Rn.. fm.- --Z-; fmov FDm,(Ri,Rn)
    770  1.1  christos 8.0xfb+8.0x57+4.Ri,4.Rn+3.fm,1.0,2.0,1.Z,1.0:D2j:::fmov
    771  1.1  christos "fmov"
    772  1.1  christos *am33_2
    773  1.1  christos {
    774  1.1  christos   PC = cia;
    775  1.1  christos 
    776  1.1  christos   if (FPU_DISABLED)
    777  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    778  1.1  christos   else
    779  1.1  christos     {
    780  1.1  christos       int ri = translate_rreg (SD_, Ri);
    781  1.1  christos       int rn = translate_rreg (SD_, Rn);
    782  1.1  christos       store_dword (State.regs[ri] + State.regs[rn], Xf2FD (Z,fm));
    783  1.1  christos     }
    784  1.1  christos }
    785  1.1  christos       
    786  1.1  christos // 1111 1011 1010 000X Rm.. fn.- d8; fmov (d8,Rm),FDn
    787  1.1  christos 8.0xfb+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM8:D2k:::fmov
    788  1.1  christos "fmov"
    789  1.1  christos *am33_2
    790  1.1  christos {
    791  1.1  christos   PC = cia;
    792  1.1  christos 
    793  1.1  christos   if (FPU_DISABLED)
    794  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    795  1.1  christos   else
    796  1.1  christos     {
    797  1.1  christos       int reg = translate_rreg (SD_, Rm);
    798  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
    799  1.1  christos     }
    800  1.1  christos }
    801  1.1  christos 
    802  1.1  christos // 1111 1011 1010 001X Rm.. fn.- d8; fmov (Rm+,imm8),FDn
    803  1.1  christos 8.0xfb+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM8:D2l:::fmov
    804  1.1  christos "fmov"
    805  1.1  christos *am33_2
    806  1.1  christos {
    807  1.1  christos   PC = cia;
    808  1.1  christos 
    809  1.1  christos   if (FPU_DISABLED)
    810  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    811  1.1  christos   else
    812  1.1  christos     {
    813  1.1  christos       int reg = translate_rreg (SD_, Rm);
    814  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
    815  1.1  christos       State.regs[reg] += 8;
    816  1.1  christos     }
    817  1.1  christos }
    818  1.1  christos 
    819  1.1  christos // 1111 1011 1010 010X ---- fn.- d8; fmov (d8,SP),FDn
    820  1.1  christos 8.0xfb+4.0xa,3.2,1.X+4.0,4.fn+8.IMM8:D2m:::fmov
    821  1.1  christos "fmov"
    822  1.1  christos *am33_2
    823  1.1  christos {
    824  1.1  christos   PC = cia;
    825  1.1  christos 
    826  1.1  christos   if (FPU_DISABLED)
    827  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    828  1.1  christos   else
    829  1.1  christos     {
    830  1.1  christos       int reg = REG_SP;
    831  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg] + IMM8);
    832  1.1  christos     }
    833  1.1  christos }
    834  1.1  christos 
    835  1.1  christos // 1111 1011 1011 00Y0 fm.- Rn.. d8; fmov FDm,(d8,Rn)
    836  1.1  christos 8.0xfb+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM8:D2n:::fmov
    837  1.1  christos "fmov"
    838  1.1  christos *am33_2
    839  1.1  christos {
    840  1.1  christos   PC = cia;
    841  1.1  christos 
    842  1.1  christos   if (FPU_DISABLED)
    843  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    844  1.1  christos   else
    845  1.1  christos     {
    846  1.1  christos       int reg = translate_rreg (SD_, Rn);
    847  1.1  christos       store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
    848  1.1  christos     }
    849  1.1  christos }
    850  1.1  christos 
    851  1.1  christos // 1111 1011 1011 00Y1 fm.- Rn.. d8; fmov FDm,(Rn+,d8)
    852  1.1  christos 8.0xfb+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM8:D2o:::fmov
    853  1.1  christos "fmov"
    854  1.1  christos *am33_2
    855  1.1  christos {
    856  1.1  christos   PC = cia;
    857  1.1  christos 
    858  1.1  christos   if (FPU_DISABLED)
    859  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    860  1.1  christos   else
    861  1.1  christos     {
    862  1.1  christos       int reg = translate_rreg (SD_, Rn);
    863  1.1  christos       store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
    864  1.1  christos       State.regs[reg] += 8;
    865  1.1  christos     }
    866  1.1  christos }
    867  1.1  christos 
    868  1.1  christos // 1111 1011 1011 01Y0 fm.- ---- d8; fmov FDm,(d8,SP)
    869  1.1  christos 8.0xfb+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM8:D2p:::fmov
    870  1.1  christos "fmov"
    871  1.1  christos *am33_2
    872  1.1  christos {
    873  1.1  christos   PC = cia;
    874  1.1  christos 
    875  1.1  christos   if (FPU_DISABLED)
    876  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    877  1.1  christos   else
    878  1.1  christos     {
    879  1.1  christos       int reg = REG_SP;
    880  1.1  christos       store_dword (State.regs[reg] + IMM8, Xf2FD (Y, fm));
    881  1.1  christos     }
    882  1.1  christos }
    883  1.1  christos 
    884  1.1  christos // 1111 1101 1010 000X Rm.. fn.- d24; fmov (d24,Rm),FDn
    885  1.1  christos 8.0xfd+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4k:::fmov
    886  1.1  christos "fmov"
    887  1.1  christos *am33_2
    888  1.1  christos {
    889  1.1  christos   PC = cia;
    890  1.1  christos 
    891  1.1  christos   if (FPU_DISABLED)
    892  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    893  1.1  christos   else
    894  1.1  christos     {
    895  1.1  christos       int reg = translate_rreg (SD_, Rm);
    896  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
    897  1.1  christos 				  + EXTEND24 (FETCH24 (IMM24A,
    898  1.1  christos 						       IMM24B, IMM24C)));
    899  1.1  christos     }
    900  1.1  christos }
    901  1.1  christos 
    902  1.1  christos // 1111 1101 1010 001X Rm.. fn.- d24; fmov (Rm+,imm24),FDn
    903  1.1  christos 8.0xfd+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4l:::fmov
    904  1.1  christos "fmov"
    905  1.1  christos *am33_2
    906  1.1  christos {
    907  1.1  christos   PC = cia;
    908  1.1  christos 
    909  1.1  christos   if (FPU_DISABLED)
    910  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    911  1.1  christos   else
    912  1.1  christos     {
    913  1.1  christos       int reg = translate_rreg (SD_, Rm);
    914  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
    915  1.1  christos 				  + EXTEND24 (FETCH24 (IMM24A,
    916  1.1  christos 						       IMM24B, IMM24C)));
    917  1.1  christos       State.regs[reg] += 8;
    918  1.1  christos     }
    919  1.1  christos }
    920  1.1  christos 
    921  1.1  christos // 1111 1101 1010 010X ---- fn.- d24; fmov (d24,SP),FDn
    922  1.1  christos 8.0xfd+4.0xa,3.2,1.X+4.0,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4m:::fmov
    923  1.1  christos "fmov"
    924  1.1  christos *am33_2
    925  1.1  christos {
    926  1.1  christos   PC = cia;
    927  1.1  christos 
    928  1.1  christos   if (FPU_DISABLED)
    929  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    930  1.1  christos   else
    931  1.1  christos     {
    932  1.1  christos       int reg = REG_SP;
    933  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
    934  1.1  christos 				  + FETCH24 (IMM24A,
    935  1.1  christos 					     IMM24B, IMM24C));
    936  1.1  christos     }
    937  1.1  christos }
    938  1.1  christos 
    939  1.1  christos // 1111 1101 1011 00Y0 fm.- Rn.. d24; fmov FDm,(d24,Rn)
    940  1.1  christos 8.0xfd+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4n:::fmov
    941  1.1  christos "fmov"
    942  1.1  christos *am33_2
    943  1.1  christos {
    944  1.1  christos   PC = cia;
    945  1.1  christos 
    946  1.1  christos   if (FPU_DISABLED)
    947  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    948  1.1  christos   else
    949  1.1  christos     {
    950  1.1  christos       int reg = translate_rreg (SD_, Rn);
    951  1.1  christos       store_dword (State.regs[reg]
    952  1.1  christos 		   + EXTEND24 (FETCH24 (IMM24A,
    953  1.1  christos 					IMM24B, IMM24C)), Xf2FD (Y, fm));
    954  1.1  christos     }
    955  1.1  christos }
    956  1.1  christos 
    957  1.1  christos // 1111 1101 1011 00Y1 fm.- Rn.. d24; fmov FDm,(Rn+,d24)
    958  1.1  christos 8.0xfd+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4o:::fmov
    959  1.1  christos "fmov"
    960  1.1  christos *am33_2
    961  1.1  christos {
    962  1.1  christos   PC = cia;
    963  1.1  christos 
    964  1.1  christos   if (FPU_DISABLED)
    965  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    966  1.1  christos   else
    967  1.1  christos     {
    968  1.1  christos       int reg = translate_rreg (SD_, Rn);
    969  1.1  christos       store_dword (State.regs[reg]
    970  1.1  christos 		   + EXTEND24 (FETCH24 (IMM24A,
    971  1.1  christos 					IMM24B, IMM24C)), Xf2FD (Y, fm));
    972  1.1  christos       State.regs[reg] += 8;
    973  1.1  christos     }
    974  1.1  christos }
    975  1.1  christos 
    976  1.1  christos // 1111 1101 1011 01Y0 fm.- ---- d24; fmov FDm,(d24,SP)
    977  1.1  christos 8.0xfd+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4p:::fmov
    978  1.1  christos "fmov"
    979  1.1  christos *am33_2
    980  1.1  christos {
    981  1.1  christos   PC = cia;
    982  1.1  christos 
    983  1.1  christos   if (FPU_DISABLED)
    984  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
    985  1.1  christos   else
    986  1.1  christos     {
    987  1.1  christos       int reg = REG_SP;
    988  1.1  christos       store_dword (State.regs[reg] + FETCH24 (IMM24A,
    989  1.1  christos 					      IMM24B, IMM24C), Xf2FD (Y, fm));
    990  1.1  christos     }
    991  1.1  christos }
    992  1.1  christos 
    993  1.1  christos // 1111 1110 1010 000X Rm.. fn.- d32; fmov (d32,Rm),FDn
    994  1.1  christos 8.0xfe+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5k:::fmov
    995  1.1  christos "fmov"
    996  1.1  christos *am33_2
    997  1.1  christos {
    998  1.1  christos   PC = cia;
    999  1.1  christos 
   1000  1.1  christos   if (FPU_DISABLED)
   1001  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1002  1.1  christos   else
   1003  1.1  christos     {
   1004  1.1  christos       int reg = translate_rreg (SD_, Rm);
   1005  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
   1006  1.1  christos 				  + EXTEND32 (FETCH32 (IMM32A, IMM32B,
   1007  1.1  christos 						       IMM32C, IMM32D)));
   1008  1.1  christos     }
   1009  1.1  christos }
   1010  1.1  christos 
   1011  1.1  christos // 1111 1110 1010 001X Rm.. fn.- d32; fmov (Rm+,imm32),FDn
   1012  1.1  christos 8.0xfe+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5l:::fmov
   1013  1.1  christos "fmov"
   1014  1.1  christos *am33_2
   1015  1.1  christos {
   1016  1.1  christos   PC = cia;
   1017  1.1  christos 
   1018  1.1  christos   if (FPU_DISABLED)
   1019  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1020  1.1  christos   else
   1021  1.1  christos     {
   1022  1.1  christos       int reg = translate_rreg (SD_, Rm);
   1023  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
   1024  1.1  christos 				  + EXTEND32 (FETCH32 (IMM32A, IMM32B,
   1025  1.1  christos 						       IMM32C, IMM32D)));
   1026  1.1  christos       State.regs[reg] += 8;
   1027  1.1  christos     }
   1028  1.1  christos }
   1029  1.1  christos 
   1030  1.1  christos // 1111 1110 1010 010X ---- fn.- d32; fmov (d32,SP),FDn
   1031  1.1  christos 8.0xfe+4.0xa,3.2,1.X+4.0,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5m:::fmov
   1032  1.1  christos "fmov"
   1033  1.1  christos *am33_2
   1034  1.1  christos {
   1035  1.1  christos   PC = cia;
   1036  1.1  christos 
   1037  1.1  christos   if (FPU_DISABLED)
   1038  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1039  1.1  christos   else
   1040  1.1  christos     {
   1041  1.1  christos       int reg = REG_SP;
   1042  1.1  christos       Xf2FD (X, fn) = load_dword (State.regs[reg]
   1043  1.1  christos 				  + FETCH32 (IMM32A, IMM32B,
   1044  1.1  christos 					     IMM32C, IMM32D));
   1045  1.1  christos     }
   1046  1.1  christos }
   1047  1.1  christos 
   1048  1.1  christos // 1111 1110 1011 00Y0 fm.- Rn.. d32; fmov FDm,(d32,Rn)
   1049  1.1  christos 8.0xfe+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5n:::fmov
   1050  1.1  christos "fmov"
   1051  1.1  christos *am33_2
   1052  1.1  christos {
   1053  1.1  christos   PC = cia;
   1054  1.1  christos 
   1055  1.1  christos   if (FPU_DISABLED)
   1056  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1057  1.1  christos   else
   1058  1.1  christos     {
   1059  1.1  christos       int reg = translate_rreg (SD_, Rn);
   1060  1.1  christos       store_dword (State.regs[reg]
   1061  1.1  christos 		   + EXTEND32 (FETCH32 (IMM32A, IMM32B,
   1062  1.1  christos 					IMM32C, IMM32D)), Xf2FD (Y, fm));
   1063  1.1  christos     }
   1064  1.1  christos }
   1065  1.1  christos 
   1066  1.1  christos // 1111 1110 1011 00Y1 fm.- Rn.. d32; fmov FDm,(Rn+,d32)
   1067  1.1  christos 8.0xfe+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5o:::fmov
   1068  1.1  christos "fmov"
   1069  1.1  christos *am33_2
   1070  1.1  christos {
   1071  1.1  christos   PC = cia;
   1072  1.1  christos 
   1073  1.1  christos   if (FPU_DISABLED)
   1074  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1075  1.1  christos   else
   1076  1.1  christos     {
   1077  1.1  christos       int reg = translate_rreg (SD_, Rn);
   1078  1.1  christos       store_dword (State.regs[reg]
   1079  1.1  christos 		   + EXTEND32 (FETCH32 (IMM32A, IMM32B,
   1080  1.1  christos 					IMM32C, IMM32D)), Xf2FD (Y, fm));
   1081  1.1  christos       State.regs[reg] += 8;
   1082  1.1  christos     }
   1083  1.1  christos }
   1084  1.1  christos 
   1085  1.1  christos // 1111 1110 1011 01Y0 fm.- ---- d32; fmov FDm,(d32,SP)
   1086  1.1  christos 8.0xfe+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5p:::fmov
   1087  1.1  christos "fmov"
   1088  1.1  christos *am33_2
   1089  1.1  christos {
   1090  1.1  christos   PC = cia;
   1091  1.1  christos 
   1092  1.1  christos   if (FPU_DISABLED)
   1093  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1094  1.1  christos   else
   1095  1.1  christos     {
   1096  1.1  christos       int reg = REG_SP;
   1097  1.1  christos       store_dword (State.regs[reg]
   1098  1.1  christos 		   + FETCH32 (IMM32A, IMM32B,
   1099  1.1  christos 			      IMM32C, IMM32D), Xf2FD (Y, fm));
   1100  1.1  christos     }
   1101  1.1  christos }
   1102  1.1  christos 
   1103  1.1  christos // FPCR fmov:
   1104  1.1  christos 
   1105  1.1  christos // 1111 1001 1011 0101 Rm.. ----; fmov Rm,FPCR
   1106  1.1  christos 8.0xf9+8.0xb5+4.Rm,4.0:D1q:::fmov
   1107  1.1  christos "fmov"
   1108  1.1  christos *am33_2
   1109  1.1  christos {
   1110  1.1  christos   PC = cia;
   1111  1.1  christos 
   1112  1.1  christos   if (FPU_DISABLED)
   1113  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1114  1.1  christos   else
   1115  1.1  christos     {
   1116  1.1  christos       int reg = translate_rreg (SD_, Rm);
   1117  1.6  christos       uint32_t val = State.regs[reg];
   1118  1.1  christos       FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
   1119  1.1  christos 	| ((FPCR & ~val) & EF_MASK);
   1120  1.1  christos     }
   1121  1.1  christos }
   1122  1.1  christos 
   1123  1.1  christos // 1111 1001 1011 0111 ---- Rn..; fmov FPCR,Rn
   1124  1.1  christos 8.0xf9+8.0xb7+4.0,4.Rn:D1r:::fmov
   1125  1.1  christos "fmov"
   1126  1.1  christos *am33_2
   1127  1.1  christos {
   1128  1.1  christos   PC = cia;
   1129  1.1  christos 
   1130  1.1  christos   if (FPU_DISABLED)
   1131  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1132  1.1  christos   else
   1133  1.1  christos     {
   1134  1.1  christos       int reg = translate_rreg (SD_, Rn);
   1135  1.1  christos       State.regs[reg] = FPCR & FPCR_MASK;
   1136  1.1  christos     }
   1137  1.1  christos }
   1138  1.1  christos 
   1139  1.1  christos // 1111 1101 1011 0101 imm32; fmov imm32,FPCR
   1140  1.1  christos 8.0xfd+8.0xb5+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmov
   1141  1.1  christos "fmov"
   1142  1.1  christos *am33_2
   1143  1.1  christos {
   1144  1.1  christos   PC = cia;
   1145  1.1  christos 
   1146  1.1  christos   if (FPU_DISABLED)
   1147  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1148  1.1  christos   else
   1149  1.1  christos     {
   1150  1.6  christos       uint32_t val = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1151  1.1  christos       FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
   1152  1.1  christos 	| ((FPCR & ~val) & EF_MASK);
   1153  1.1  christos     }
   1154  1.1  christos }
   1155  1.1  christos 
   1156  1.1  christos // fabs:
   1157  1.1  christos 
   1158  1.1  christos // 1111 1001 0100 010X ---- Sn..; fabs FSn
   1159  1.1  christos 8.0xf9+4.4,3.2,1.X+4.0,4.Sn:D1a:::fabs
   1160  1.1  christos "fabs"
   1161  1.1  christos *am33_2
   1162  1.1  christos {
   1163  1.1  christos   PC = cia;
   1164  1.1  christos 
   1165  1.1  christos   if (FPU_DISABLED)
   1166  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1167  1.1  christos   else
   1168  1.1  christos     {
   1169  1.1  christos       sim_fpu in, out;
   1170  1.1  christos 
   1171  1.1  christos       FS2FPU (XS2FS (X,Sn), in);
   1172  1.1  christos       sim_fpu_abs (&out, &in);
   1173  1.1  christos       FPU2FS (out, XS2FS (X,Sn));
   1174  1.1  christos     }
   1175  1.1  christos }
   1176  1.1  christos 
   1177  1.1  christos // 1111 1001 1100 010X ---- Sn..; fabs FDn
   1178  1.1  christos 8.0xf9+4.0xc,3.2,1.X+4.0,3.fn,1.0:D1b:::fabs
   1179  1.1  christos "fabs"
   1180  1.1  christos *am33_2
   1181  1.1  christos {
   1182  1.1  christos   PC = cia;
   1183  1.1  christos 
   1184  1.1  christos   if (FPU_DISABLED)
   1185  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1186  1.1  christos   else
   1187  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1188  1.1  christos }
   1189  1.1  christos 
   1190  1.1  christos // 1111 1011 0100 0100 Sm.. ---- Sn.. X-Z-; fabs FSm,FSn
   1191  1.1  christos 8.0xfb+8.0x44+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fabs
   1192  1.1  christos "fabs"
   1193  1.1  christos *am33_2
   1194  1.1  christos {
   1195  1.1  christos   PC = cia;
   1196  1.1  christos 
   1197  1.1  christos   if (FPU_DISABLED)
   1198  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1199  1.1  christos   else
   1200  1.1  christos     {
   1201  1.1  christos       sim_fpu in, out;
   1202  1.1  christos 
   1203  1.1  christos       FS2FPU (XS2FS (X,Sm), in);
   1204  1.1  christos       sim_fpu_abs (&out, &in);
   1205  1.1  christos       FPU2FS (out, XS2FS (Z,Sn));
   1206  1.1  christos     }
   1207  1.1  christos }
   1208  1.1  christos 
   1209  1.1  christos // 1111 1011 1100 0100 fm.- ---- fn.- X-Z-; fabs FDm,FDn
   1210  1.1  christos 8.0xfb+8.0xc4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fabs
   1211  1.1  christos "fabs"
   1212  1.1  christos *am33_2
   1213  1.1  christos {
   1214  1.1  christos   PC = cia;
   1215  1.1  christos 
   1216  1.1  christos   if (FPU_DISABLED)
   1217  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1218  1.1  christos   else
   1219  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1220  1.1  christos }
   1221  1.1  christos 
   1222  1.1  christos // 1111 1001 0100 011X ---- Sn..; fneg FSn
   1223  1.1  christos 8.0xf9+4.4,3.3,1.X+4.0,4.Sn:D1a:::fneg
   1224  1.1  christos "fneg"
   1225  1.1  christos *am33_2
   1226  1.1  christos {
   1227  1.1  christos   PC = cia;
   1228  1.1  christos 
   1229  1.1  christos   if (FPU_DISABLED)
   1230  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1231  1.1  christos   else
   1232  1.1  christos     {
   1233  1.1  christos       sim_fpu in, out;
   1234  1.1  christos 
   1235  1.1  christos       FS2FPU (XS2FS (X,Sn), in);
   1236  1.1  christos       sim_fpu_neg (&out, &in);
   1237  1.1  christos       FPU2FS (out, XS2FS (X,Sn));
   1238  1.1  christos     }
   1239  1.1  christos }
   1240  1.1  christos 
   1241  1.1  christos // 1111 1001 1100 011X ---- Sn..; fneg FDn
   1242  1.1  christos 8.0xf9+4.0xc,3.3,1.X+4.0,3.fn,1.0:D1b:::fneg
   1243  1.1  christos "fneg"
   1244  1.1  christos *am33_2
   1245  1.1  christos {
   1246  1.1  christos   PC = cia;
   1247  1.1  christos 
   1248  1.1  christos   if (FPU_DISABLED)
   1249  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1250  1.1  christos   else
   1251  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1252  1.1  christos }
   1253  1.1  christos 
   1254  1.1  christos // 1111 1011 0100 0110 Sm.. ---- Sn.. X-Z-; fneg FSm,FSn
   1255  1.1  christos 8.0xfb+8.0x46+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fneg
   1256  1.1  christos "fneg"
   1257  1.1  christos *am33_2
   1258  1.1  christos {
   1259  1.1  christos   PC = cia;
   1260  1.1  christos 
   1261  1.1  christos   if (FPU_DISABLED)
   1262  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1263  1.1  christos   else
   1264  1.1  christos     {
   1265  1.1  christos       sim_fpu in, out;
   1266  1.1  christos 
   1267  1.1  christos       FS2FPU (XS2FS (X,Sm), in);
   1268  1.1  christos       sim_fpu_neg (&out, &in);
   1269  1.1  christos       FPU2FS (out, XS2FS (Z,Sn));
   1270  1.1  christos     }
   1271  1.1  christos }
   1272  1.1  christos 
   1273  1.1  christos // 1111 1011 1100 0110 fm.- ---- fn.- X-Z-; fneg FDm,FDn
   1274  1.1  christos 8.0xfb+8.0xc6+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fneg
   1275  1.1  christos "fneg"
   1276  1.1  christos *am33_2
   1277  1.1  christos {
   1278  1.1  christos   PC = cia;
   1279  1.1  christos 
   1280  1.1  christos   if (FPU_DISABLED)
   1281  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1282  1.1  christos   else
   1283  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1284  1.1  christos }
   1285  1.1  christos 
   1286  1.1  christos // 1111 1001 0101 000X ---- Sn..; frsqrt FSn
   1287  1.1  christos 8.0xf9+4.5,3.0,1.X+4.0,4.Sn:D1a:::frsqrt
   1288  1.1  christos "frsqrt"
   1289  1.1  christos *am33_2
   1290  1.1  christos {
   1291  1.1  christos   PC = cia;
   1292  1.1  christos 
   1293  1.1  christos   if (FPU_DISABLED)
   1294  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1295  1.1  christos   else
   1296  1.1  christos     fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
   1297  1.1  christos }
   1298  1.1  christos 
   1299  1.1  christos // 1111 1001 1101 000X ---- fn.-; frsqrt FDn
   1300  1.1  christos 8.0xf9+4.0xd,3.0,1.X+4.0,3.fn,1.0:D1b:::frsqrt
   1301  1.1  christos "frsqrt"
   1302  1.1  christos *am33_2
   1303  1.1  christos {
   1304  1.1  christos   PC = cia;
   1305  1.1  christos 
   1306  1.1  christos   if (FPU_DISABLED)
   1307  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1308  1.1  christos   else
   1309  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1310  1.1  christos }
   1311  1.1  christos 
   1312  1.1  christos // 1111 1011 0101 0000 Sm.. ---- Sn.. X-Z-; frsqrt FSm,FSn
   1313  1.1  christos 8.0xfb+8.0x50+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::frsqrt
   1314  1.1  christos "frsqrt"
   1315  1.1  christos *am33_2
   1316  1.1  christos {
   1317  1.1  christos   PC = cia;
   1318  1.1  christos 
   1319  1.1  christos   if (FPU_DISABLED)
   1320  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1321  1.1  christos   else
   1322  1.1  christos     fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sm), &XS2FS (Z,Sn), FP_SINGLE);
   1323  1.1  christos }
   1324  1.1  christos 
   1325  1.1  christos // 1111 1011 1101 0000 fm.- ---- fn.- X-Z-; frsqrt FDm,FDn
   1326  1.1  christos 8.0xfb+8.0xd0+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::frsqrt
   1327  1.1  christos "frsqrt"
   1328  1.1  christos *am33_2
   1329  1.1  christos {
   1330  1.1  christos   PC = cia;
   1331  1.1  christos 
   1332  1.1  christos   if (FPU_DISABLED)
   1333  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1334  1.1  christos   else
   1335  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1336  1.1  christos }
   1337  1.1  christos 
   1338  1.1  christos // 1111 1001 0101 001X ---- Sn..; fsqrt FSn
   1339  1.1  christos 8.0xf9+4.5,3.1,1.X+4.0,4.Sn:D1a:::fsqrt
   1340  1.1  christos "fsqrt"
   1341  1.1  christos *am33_2
   1342  1.1  christos {
   1343  1.1  christos   PC = cia;
   1344  1.1  christos 
   1345  1.1  christos   if (FPU_DISABLED)
   1346  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1347  1.1  christos   else
   1348  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1349  1.1  christos }
   1350  1.1  christos 
   1351  1.1  christos // 1111 1001 1101 001X ---- fn.-; fsqrt FDn
   1352  1.1  christos 8.0xf9+4.0xd,3.1,1.X+4.0,3.fn,1.0:D1b:::fsqrt
   1353  1.1  christos "fsqrt"
   1354  1.1  christos *am33_2
   1355  1.1  christos {
   1356  1.1  christos   PC = cia;
   1357  1.1  christos 
   1358  1.1  christos   if (FPU_DISABLED)
   1359  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1360  1.1  christos   else
   1361  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1362  1.1  christos }
   1363  1.1  christos 
   1364  1.1  christos // 1111 1011 0101 0100 Sm.. ---- Sn.. X-Z-; fsqrt FSm,FSn
   1365  1.1  christos 8.0xfb+8.0x54+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fsqrt
   1366  1.1  christos "fsqrt"
   1367  1.1  christos *am33_2
   1368  1.1  christos {
   1369  1.1  christos   PC = cia;
   1370  1.1  christos 
   1371  1.1  christos   if (FPU_DISABLED)
   1372  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1373  1.1  christos   else
   1374  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1375  1.1  christos }
   1376  1.1  christos 
   1377  1.1  christos // 1111 1011 1101 0100 fm.- ---- fn.- X-Z-; fsqrt FDm,FDn
   1378  1.1  christos 8.0xfb+8.0xd4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fsqrt
   1379  1.1  christos "fsqrt"
   1380  1.1  christos *am33_2
   1381  1.1  christos {
   1382  1.1  christos   PC = cia;
   1383  1.1  christos 
   1384  1.1  christos   if (FPU_DISABLED)
   1385  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1386  1.1  christos   else
   1387  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1388  1.1  christos }
   1389  1.1  christos 
   1390  1.1  christos // 1111 1001 0101 01YX Sm.. Sn..; fcmp FSm, FSn
   1391  1.1  christos 8.0xf9+4.5,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fcmp
   1392  1.1  christos "fcmp"
   1393  1.1  christos *am33_2
   1394  1.1  christos {
   1395  1.1  christos   PC = cia;
   1396  1.1  christos 
   1397  1.1  christos   if (FPU_DISABLED)
   1398  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1399  1.1  christos   else
   1400  1.1  christos     fpu_cmp (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (Y,Sm), FP_SINGLE);
   1401  1.1  christos }
   1402  1.1  christos 
   1403  1.1  christos // 1111 1001 1101 01YX fm.- fn.-; fcmp FDm, FDn
   1404  1.1  christos 8.0xf9+4.0xd,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fcmp
   1405  1.1  christos "fcmp"
   1406  1.1  christos *am33_2
   1407  1.1  christos {
   1408  1.1  christos   PC = cia;
   1409  1.1  christos 
   1410  1.1  christos   if (FPU_DISABLED)
   1411  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1412  1.1  christos   else
   1413  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1414  1.1  christos }
   1415  1.1  christos 
   1416  1.1  christos // 1111 1110 0011 01Y1 Sm.. ---- IMM32; fcmp imm32, FSm
   1417  1.1  christos 8.0xfe+4.3,2.1,1.Y,1.1+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fcmp
   1418  1.1  christos "fcmp"
   1419  1.1  christos *am33_2
   1420  1.1  christos {
   1421  1.1  christos   PC = cia;
   1422  1.1  christos 
   1423  1.1  christos   if (FPU_DISABLED)
   1424  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1425  1.1  christos   else
   1426  1.1  christos     {
   1427  1.6  christos       uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1428  1.1  christos 
   1429  1.1  christos       fpu_cmp (SD, CPU, cia, &XS2FS (Y,Sm), &imm, FP_SINGLE);
   1430  1.1  christos     }
   1431  1.1  christos }
   1432  1.1  christos 
   1433  1.1  christos // 1111 1001 0110 00YX Sm.. Sn..; fadd FSm, FSn
   1434  1.1  christos 8.0xf9+4.6,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fadd
   1435  1.1  christos "fadd"
   1436  1.1  christos *am33_2
   1437  1.1  christos {
   1438  1.1  christos   PC = cia;
   1439  1.1  christos 
   1440  1.1  christos   if (FPU_DISABLED)
   1441  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1442  1.1  christos   else
   1443  1.1  christos     fpu_add (SD, CPU, cia,
   1444  1.1  christos 	     &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
   1445  1.1  christos }
   1446  1.1  christos 
   1447  1.1  christos // 1111 1001 1110 00YX fm.- fn.-; fadd FDm, FDn
   1448  1.1  christos 8.0xf9+4.0xe,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fadd
   1449  1.1  christos "fadd"
   1450  1.1  christos *am33_2
   1451  1.1  christos {
   1452  1.1  christos   PC = cia;
   1453  1.1  christos 
   1454  1.1  christos   if (FPU_DISABLED)
   1455  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1456  1.1  christos   else
   1457  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1458  1.1  christos }
   1459  1.1  christos 
   1460  1.1  christos // 1111 1011 0110 0000 Sm1. Sm2. Sn.. XYZ-; fadd FSm1, FSm2, FSn
   1461  1.1  christos 8.0xfb+8.0x60+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fadd
   1462  1.1  christos "fadd"
   1463  1.1  christos *am33_2
   1464  1.1  christos {
   1465  1.1  christos   PC = cia;
   1466  1.1  christos 
   1467  1.1  christos   if (FPU_DISABLED)
   1468  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1469  1.1  christos   else
   1470  1.1  christos     fpu_add (SD, CPU, cia,
   1471  1.1  christos 	     &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
   1472  1.1  christos }
   1473  1.1  christos 
   1474  1.1  christos // 1111 1011 1110 0000 fm1- fm2- fn.- XYZ-; fadd FDm1, FDm2, FDn
   1475  1.1  christos 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
   1476  1.1  christos "fadd"
   1477  1.1  christos *am33_2
   1478  1.1  christos {
   1479  1.1  christos   PC = cia;
   1480  1.1  christos 
   1481  1.1  christos   if (FPU_DISABLED)
   1482  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1483  1.1  christos   else
   1484  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1485  1.1  christos }
   1486  1.1  christos 
   1487  1.1  christos 
   1488  1.1  christos // 1111 1110 0110 00YX Sm.. Sn.. IMM32; fadd imm32, FSm, FSn
   1489  1.1  christos 8.0xfe+4.6,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fadd
   1490  1.1  christos "fadd"
   1491  1.1  christos *am33_2
   1492  1.1  christos {
   1493  1.1  christos   PC = cia;
   1494  1.1  christos 
   1495  1.1  christos   if (FPU_DISABLED)
   1496  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1497  1.1  christos   else
   1498  1.1  christos     {
   1499  1.6  christos       uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1500  1.1  christos 
   1501  1.1  christos       fpu_add (SD, CPU, cia,
   1502  1.1  christos 	       &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
   1503  1.1  christos     }
   1504  1.1  christos }
   1505  1.1  christos 
   1506  1.1  christos // 1111 1001 0110 01YX Sm.. Sn..; fsub FSm, FSn
   1507  1.1  christos 8.0xf9+4.6,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fsub
   1508  1.1  christos "fsub"
   1509  1.1  christos *am33_2
   1510  1.1  christos {
   1511  1.1  christos   PC = cia;
   1512  1.1  christos 
   1513  1.1  christos   if (FPU_DISABLED)
   1514  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1515  1.1  christos   else
   1516  1.1  christos     fpu_sub (SD, CPU, cia,
   1517  1.1  christos 	     &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
   1518  1.1  christos }
   1519  1.1  christos 
   1520  1.1  christos // 1111 1001 1110 01YX fm.- fn.-; fsub FDm, FDn
   1521  1.1  christos 8.0xf9+4.0xe,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fsub
   1522  1.1  christos "fsub"
   1523  1.1  christos *am33_2
   1524  1.1  christos {
   1525  1.1  christos   PC = cia;
   1526  1.1  christos 
   1527  1.1  christos   if (FPU_DISABLED)
   1528  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1529  1.1  christos   else
   1530  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1531  1.1  christos }
   1532  1.1  christos 
   1533  1.1  christos // 1111 1011 0110 0100 Sm1. Sm2. Sn.. XYZ-; fsub FSm1, FSm2, FSn
   1534  1.1  christos 8.0xfb+8.0x64+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fsub
   1535  1.1  christos "fsub"
   1536  1.1  christos *am33_2
   1537  1.1  christos {
   1538  1.1  christos   PC = cia;
   1539  1.1  christos 
   1540  1.1  christos   if (FPU_DISABLED)
   1541  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1542  1.1  christos   else
   1543  1.1  christos     fpu_sub (SD, CPU, cia,
   1544  1.1  christos 	     &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
   1545  1.1  christos }
   1546  1.1  christos 
   1547  1.1  christos // 1111 1011 1110 0100 fm1- fm2- fn.- XYZ-; fsub FDm1, FDm2, FDn
   1548  1.1  christos 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
   1549  1.1  christos "fsub"
   1550  1.1  christos *am33_2
   1551  1.1  christos {
   1552  1.1  christos   PC = cia;
   1553  1.1  christos 
   1554  1.1  christos   if (FPU_DISABLED)
   1555  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1556  1.1  christos   else
   1557  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1558  1.1  christos }
   1559  1.1  christos 
   1560  1.1  christos 
   1561  1.1  christos // 1111 1110 0110 01YX Sm.. Sn.. IMM32; fsub imm32, FSm, FSn
   1562  1.1  christos 8.0xfe+4.6,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fsub
   1563  1.1  christos "fsub"
   1564  1.1  christos *am33_2
   1565  1.1  christos {
   1566  1.1  christos   PC = cia;
   1567  1.1  christos 
   1568  1.1  christos   if (FPU_DISABLED)
   1569  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1570  1.1  christos   else
   1571  1.1  christos     {
   1572  1.6  christos       uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1573  1.1  christos 
   1574  1.1  christos       fpu_sub (SD, CPU, cia,
   1575  1.1  christos 	       &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
   1576  1.1  christos     }
   1577  1.1  christos }
   1578  1.1  christos 
   1579  1.1  christos // 1111 1001 0111 00YX Sm.. Sn..; fmul FSm, FSn
   1580  1.1  christos 8.0xf9+4.7,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fmul
   1581  1.1  christos "fmul"
   1582  1.1  christos *am33_2
   1583  1.1  christos {
   1584  1.1  christos   PC = cia;
   1585  1.1  christos 
   1586  1.1  christos   if (FPU_DISABLED)
   1587  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1588  1.1  christos   else
   1589  1.1  christos     fpu_mul (SD, CPU, cia,
   1590  1.1  christos 	     &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
   1591  1.1  christos }
   1592  1.1  christos 
   1593  1.1  christos // 1111 1001 1111 00YX fm.- fn.-; fmul FDm, FDn
   1594  1.1  christos 8.0xf9+4.0xf,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fmul
   1595  1.1  christos "fmul"
   1596  1.1  christos *am33_2
   1597  1.1  christos {
   1598  1.1  christos   PC = cia;
   1599  1.1  christos 
   1600  1.1  christos   if (FPU_DISABLED)
   1601  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1602  1.1  christos   else
   1603  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1604  1.1  christos }
   1605  1.1  christos 
   1606  1.1  christos // 1111 1011 0111 0000 Sm1. Sm2. Sn.. XYZ-; fmul FSm1, FSm2, FSn
   1607  1.1  christos 8.0xfb+8.0x70+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fmul
   1608  1.1  christos "fmul"
   1609  1.1  christos *am33_2
   1610  1.1  christos {
   1611  1.1  christos   PC = cia;
   1612  1.1  christos 
   1613  1.1  christos   if (FPU_DISABLED)
   1614  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1615  1.1  christos   else
   1616  1.1  christos     fpu_mul (SD, CPU, cia,
   1617  1.1  christos 	     &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
   1618  1.1  christos }
   1619  1.1  christos 
   1620  1.1  christos // 1111 1011 1111 0000 fm1- fm2- fn.- XYZ-; fmul FDm1, FDm2, FDn
   1621  1.1  christos 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
   1622  1.1  christos "fmul"
   1623  1.1  christos *am33_2
   1624  1.1  christos {
   1625  1.1  christos   PC = cia;
   1626  1.1  christos 
   1627  1.1  christos   if (FPU_DISABLED)
   1628  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1629  1.1  christos   else
   1630  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1631  1.1  christos }
   1632  1.1  christos 
   1633  1.1  christos 
   1634  1.1  christos // 1111 1110 0111 00YX Sm.. Sn.. IMM32; fmul imm32, FSm, FSn
   1635  1.1  christos 8.0xfe+4.7,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmul
   1636  1.1  christos "fmul"
   1637  1.1  christos *am33_2
   1638  1.1  christos {
   1639  1.1  christos   PC = cia;
   1640  1.1  christos 
   1641  1.1  christos   if (FPU_DISABLED)
   1642  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1643  1.1  christos   else
   1644  1.1  christos     {
   1645  1.6  christos       uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1646  1.1  christos 
   1647  1.1  christos       fpu_mul (SD, CPU, cia,
   1648  1.1  christos 	       &imm, &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
   1649  1.1  christos     }
   1650  1.1  christos }
   1651  1.1  christos 
   1652  1.1  christos // 1111 1001 0111 01YX Sm.. Sn..; fdiv FSm, FSn
   1653  1.1  christos 8.0xf9+4.7,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fdiv
   1654  1.1  christos "fdiv"
   1655  1.1  christos *am33_2
   1656  1.1  christos {
   1657  1.1  christos   PC = cia;
   1658  1.1  christos 
   1659  1.1  christos   if (FPU_DISABLED)
   1660  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1661  1.1  christos   else
   1662  1.1  christos     fpu_div (SD, CPU, cia,
   1663  1.1  christos 	     &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
   1664  1.1  christos }
   1665  1.1  christos 
   1666  1.1  christos // 1111 1001 1111 01YX fm.- fn.-; fdiv FDm, FDn
   1667  1.1  christos 8.0xf9+4.0xf,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fdiv
   1668  1.1  christos "fdiv"
   1669  1.1  christos *am33_2
   1670  1.1  christos {
   1671  1.1  christos   PC = cia;
   1672  1.1  christos 
   1673  1.1  christos   if (FPU_DISABLED)
   1674  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1675  1.1  christos   else
   1676  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1677  1.1  christos }
   1678  1.1  christos 
   1679  1.1  christos // 1111 1011 0111 0100 Sm1. Sm2. Sn.. XYZ-; fdiv FSm1, FSm2, FSn
   1680  1.1  christos 8.0xfb+8.0x74+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fdiv
   1681  1.1  christos "fdiv"
   1682  1.1  christos *am33_2
   1683  1.1  christos {
   1684  1.1  christos   PC = cia;
   1685  1.1  christos 
   1686  1.1  christos   if (FPU_DISABLED)
   1687  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1688  1.1  christos   else
   1689  1.1  christos     fpu_div (SD, CPU, cia,
   1690  1.1  christos 	     &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
   1691  1.1  christos }
   1692  1.1  christos 
   1693  1.1  christos // 1111 1011 1111 0100 fm1- fm2- fn.- XYZ-; fdiv FDm1, FDm2, FDn
   1694  1.1  christos 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
   1695  1.1  christos "fdiv"
   1696  1.1  christos *am33_2
   1697  1.1  christos {
   1698  1.1  christos   PC = cia;
   1699  1.1  christos 
   1700  1.1  christos   if (FPU_DISABLED)
   1701  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1702  1.1  christos   else
   1703  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1704  1.1  christos }
   1705  1.1  christos 
   1706  1.1  christos 
   1707  1.1  christos // 1111 1110 0111 01YX Sm.. Sn.. IMM32; fdiv imm32, FSm, FSn
   1708  1.1  christos 8.0xfe+4.7,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fdiv
   1709  1.1  christos "fdiv"
   1710  1.1  christos *am33_2
   1711  1.1  christos {
   1712  1.1  christos   PC = cia;
   1713  1.1  christos 
   1714  1.1  christos   if (FPU_DISABLED)
   1715  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1716  1.1  christos   else
   1717  1.1  christos     {
   1718  1.6  christos       uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
   1719  1.1  christos 
   1720  1.1  christos       fpu_div (SD, CPU, cia,
   1721  1.1  christos 	       &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
   1722  1.1  christos     }
   1723  1.1  christos }
   1724  1.1  christos 
   1725  1.1  christos // 1111 1011 1000 00Sn Sm1. Sm2. Sm3. XYZA; fmadd FSm1, FSm2, FSm3, FSn
   1726  1.1  christos 8.0xfb+4.8,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmadd
   1727  1.1  christos "fmadd"
   1728  1.1  christos *am33_2
   1729  1.1  christos {
   1730  1.1  christos   PC = cia;
   1731  1.1  christos 
   1732  1.1  christos   if (FPU_DISABLED)
   1733  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1734  1.1  christos   else
   1735  1.1  christos     fpu_fmadd (SD, CPU, cia,
   1736  1.1  christos 	       &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
   1737  1.1  christos 	       &AS2FS (A,Sn), FP_SINGLE);
   1738  1.1  christos }
   1739  1.1  christos     
   1740  1.1  christos // 1111 1011 1000 01Sn Sm1. Sm2. Sm3. XYZA; fmsub FSm1, FSm2, FSm3, FSn
   1741  1.1  christos 8.0xfb+4.8,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmsub
   1742  1.1  christos "fmsub"
   1743  1.1  christos *am33_2
   1744  1.1  christos {
   1745  1.1  christos   PC = cia;
   1746  1.1  christos 
   1747  1.1  christos   if (FPU_DISABLED)
   1748  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1749  1.1  christos   else
   1750  1.1  christos     fpu_fmsub (SD, CPU, cia,
   1751  1.1  christos 	       &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
   1752  1.1  christos 	       &AS2FS (A,Sn), FP_SINGLE);
   1753  1.1  christos }
   1754  1.1  christos 
   1755  1.1  christos // 1111 1011 1001 00Sn Sm1. Sm2. Sm3. XYZA; fnmadd FSm1, FSm2, FSm3, FSn
   1756  1.1  christos 8.0xfb+4.9,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmadd
   1757  1.1  christos "fnmadd"
   1758  1.1  christos *am33_2
   1759  1.1  christos {
   1760  1.1  christos   PC = cia;
   1761  1.1  christos 
   1762  1.1  christos   if (FPU_DISABLED)
   1763  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1764  1.1  christos   else
   1765  1.1  christos     fpu_fnmadd (SD, CPU, cia,
   1766  1.1  christos 		&XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
   1767  1.1  christos 		&AS2FS (A,Sn), FP_SINGLE);
   1768  1.1  christos }
   1769  1.1  christos     
   1770  1.1  christos // 1111 1011 1001 01Sn Sm1. Sm2. Sm3. XYZA; fnmsub FSm1, FSm2, FSm3, FSn
   1771  1.1  christos 8.0xfb+4.9,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmsub
   1772  1.1  christos "fnmsub"
   1773  1.1  christos *am33_2
   1774  1.1  christos {
   1775  1.1  christos   PC = cia;
   1776  1.1  christos 
   1777  1.1  christos   if (FPU_DISABLED)
   1778  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1779  1.1  christos   else
   1780  1.1  christos     fpu_fnmsub (SD, CPU, cia,
   1781  1.1  christos 		&XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
   1782  1.1  christos 		&AS2FS (A,Sn), FP_SINGLE);
   1783  1.1  christos }
   1784  1.1  christos 
   1785  1.1  christos // conversion:
   1786  1.1  christos 
   1787  1.1  christos // 1111 1011 0100 0000 Sm.. ---- Sn.. X-Z-; ftoi FSm,FSn
   1788  1.1  christos 8.0xfb+8.0x40+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::ftoi
   1789  1.1  christos "ftoi"
   1790  1.1  christos *am33_2
   1791  1.1  christos {
   1792  1.1  christos   PC = cia;
   1793  1.1  christos 
   1794  1.1  christos   if (FPU_DISABLED)
   1795  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1796  1.1  christos   else
   1797  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1798  1.1  christos }
   1799  1.1  christos 
   1800  1.1  christos // 1111 1011 0100 0010 Sm.. ---- Sn.. X-Z-; itof FSm,FSn
   1801  1.1  christos 8.0xfb+8.0x42+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::itof
   1802  1.1  christos "itof"
   1803  1.1  christos *am33_2
   1804  1.1  christos {
   1805  1.1  christos   PC = cia;
   1806  1.1  christos 
   1807  1.1  christos   if (FPU_DISABLED)
   1808  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1809  1.1  christos   else
   1810  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1811  1.1  christos }
   1812  1.1  christos 
   1813  1.1  christos // 1111 1011 0101 0010 Sm.. ---- fn.- X-Z-; ftod FSm,FDn
   1814  1.1  christos 8.0xfb+8.0x52+4.Sm,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2:::ftod
   1815  1.1  christos "ftod"
   1816  1.1  christos *am33_2
   1817  1.1  christos {
   1818  1.1  christos   PC = cia;
   1819  1.1  christos 
   1820  1.1  christos   if (FPU_DISABLED)
   1821  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1822  1.1  christos   else
   1823  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1824  1.1  christos }
   1825  1.1  christos 
   1826  1.1  christos // 1111 1011 0101 0110 fm.- ---- Sn.. X-Z-; dtof FDm,FSn
   1827  1.1  christos 8.0xfb+8.0x56+3.fm,1.0,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::dtof
   1828  1.1  christos "dtof"
   1829  1.1  christos *am33_2
   1830  1.1  christos {
   1831  1.1  christos   PC = cia;
   1832  1.1  christos 
   1833  1.1  christos   if (FPU_DISABLED)
   1834  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1835  1.1  christos   else
   1836  1.1  christos     fpu_unimp_exception (SD, CPU, cia);
   1837  1.1  christos }
   1838  1.1  christos 
   1839  1.1  christos // branching:
   1840  1.1  christos 
   1841  1.1  christos // 1111 1000 1101 0000 d8; fbeq (d8,PC) (d8 is sign-extended)
   1842  1.1  christos 8.0xf8+8.0xd0+8.D8:D1:::fbeq
   1843  1.1  christos "fbeq"
   1844  1.1  christos *am33_2
   1845  1.1  christos {
   1846  1.1  christos   PC = cia;
   1847  1.1  christos 
   1848  1.1  christos   if (FPU_DISABLED)
   1849  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1850  1.1  christos   else if ((FPCR & FCC_E))
   1851  1.1  christos     {
   1852  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1853  1.1  christos       nia = PC;
   1854  1.1  christos     }
   1855  1.1  christos }
   1856  1.1  christos 
   1857  1.1  christos // 1111 1000 1101 0001 d8; fbne (d8,PC) (d8 is sign-extended)
   1858  1.1  christos 8.0xf8+8.0xd1+8.D8:D1:::fbne
   1859  1.1  christos "fbne"
   1860  1.1  christos *am33_2
   1861  1.1  christos {
   1862  1.1  christos   PC = cia;
   1863  1.1  christos 
   1864  1.1  christos   if (FPU_DISABLED)
   1865  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1866  1.1  christos   else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
   1867  1.1  christos     {
   1868  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1869  1.1  christos       nia = PC;
   1870  1.1  christos     }
   1871  1.1  christos }
   1872  1.1  christos 
   1873  1.1  christos // 1111 1000 1101 0010 d8; fbgt (d8,PC) (d8 is sign-extended)
   1874  1.1  christos 8.0xf8+8.0xd2+8.D8:D1:::fbgt
   1875  1.1  christos "fbgt"
   1876  1.1  christos *am33_2
   1877  1.1  christos {
   1878  1.1  christos   PC = cia;
   1879  1.1  christos 
   1880  1.1  christos   if (FPU_DISABLED)
   1881  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1882  1.1  christos   else if ((FPCR & FCC_G))
   1883  1.1  christos     {
   1884  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1885  1.1  christos       nia = PC;
   1886  1.1  christos     }
   1887  1.1  christos }
   1888  1.1  christos 
   1889  1.1  christos // 1111 1000 1101 0011 d8; fbge (d8,PC) (d8 is sign-extended)
   1890  1.1  christos 8.0xf8+8.0xd3+8.D8:D1:::fbge
   1891  1.1  christos "fbge"
   1892  1.1  christos *am33_2
   1893  1.1  christos {
   1894  1.1  christos   PC = cia;
   1895  1.1  christos 
   1896  1.1  christos   if (FPU_DISABLED)
   1897  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1898  1.1  christos   else if ((FPCR & (FCC_G | FCC_E)))
   1899  1.1  christos     {
   1900  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1901  1.1  christos       nia = PC;
   1902  1.1  christos     }
   1903  1.1  christos }
   1904  1.1  christos 
   1905  1.1  christos // 1111 1000 1101 0100 d8; fblt (d8,PC) (d8 is sign-extended)
   1906  1.1  christos 8.0xf8+8.0xd4+8.D8:D1:::fblt
   1907  1.1  christos "fblt"
   1908  1.1  christos *am33_2
   1909  1.1  christos {
   1910  1.1  christos   PC = cia;
   1911  1.1  christos 
   1912  1.1  christos   if (FPU_DISABLED)
   1913  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1914  1.1  christos   else if ((FPCR & FCC_L))
   1915  1.1  christos     {
   1916  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1917  1.1  christos       nia = PC;
   1918  1.1  christos     }
   1919  1.1  christos }
   1920  1.1  christos 
   1921  1.1  christos // 1111 1000 1101 0101 d8; fble (d8,PC) (d8 is sign-extended)
   1922  1.1  christos 8.0xf8+8.0xd5+8.D8:D1:::fble
   1923  1.1  christos "fble"
   1924  1.1  christos *am33_2
   1925  1.1  christos {
   1926  1.1  christos   PC = cia;
   1927  1.1  christos 
   1928  1.1  christos   if (FPU_DISABLED)
   1929  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1930  1.1  christos   else if ((FPCR & (FCC_L | FCC_E)))
   1931  1.1  christos     {
   1932  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1933  1.1  christos       nia = PC;
   1934  1.1  christos     }
   1935  1.1  christos }
   1936  1.1  christos 
   1937  1.1  christos // 1111 1000 1101 0110 d8; fbuo (d8,PC) (d8 is sign-extended)
   1938  1.1  christos 8.0xf8+8.0xd6+8.D8:D1:::fbuo
   1939  1.1  christos "fbuo"
   1940  1.1  christos *am33_2
   1941  1.1  christos {
   1942  1.1  christos   PC = cia;
   1943  1.1  christos 
   1944  1.1  christos   if (FPU_DISABLED)
   1945  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1946  1.1  christos   else if ((FPCR & FCC_U))
   1947  1.1  christos     {
   1948  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1949  1.1  christos       nia = PC;
   1950  1.1  christos     }
   1951  1.1  christos }
   1952  1.1  christos 
   1953  1.1  christos // 1111 1000 1101 0111 d8; fblg (d8,PC) (d8 is sign-extended)
   1954  1.1  christos 8.0xf8+8.0xd7+8.D8:D1:::fblg
   1955  1.1  christos "fblg"
   1956  1.1  christos *am33_2
   1957  1.1  christos {
   1958  1.1  christos   PC = cia;
   1959  1.1  christos 
   1960  1.1  christos   if (FPU_DISABLED)
   1961  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1962  1.1  christos   else if ((FPCR & (FCC_L | FCC_G)))
   1963  1.1  christos     {
   1964  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1965  1.1  christos       nia = PC;
   1966  1.1  christos     }
   1967  1.1  christos }
   1968  1.1  christos // 1111 1000 1101 1000 d8; fbleg (d8,PC) (d8 is sign-extended)
   1969  1.1  christos 8.0xf8+8.0xd8+8.D8:D1:::fbleg
   1970  1.1  christos "fbleg"
   1971  1.1  christos *am33_2
   1972  1.1  christos {
   1973  1.1  christos   PC = cia;
   1974  1.1  christos 
   1975  1.1  christos   if (FPU_DISABLED)
   1976  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1977  1.1  christos   else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
   1978  1.1  christos     {
   1979  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1980  1.1  christos       nia = PC;
   1981  1.1  christos     }
   1982  1.1  christos }
   1983  1.1  christos 
   1984  1.1  christos // 1111 1000 1101 1001 d8; fbug (d8,PC) (d8 is sign-extended)
   1985  1.1  christos 8.0xf8+8.0xd9+8.D8:D1:::fbug
   1986  1.1  christos "fbug"
   1987  1.1  christos *am33_2
   1988  1.1  christos {
   1989  1.1  christos   PC = cia;
   1990  1.1  christos 
   1991  1.1  christos   if (FPU_DISABLED)
   1992  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   1993  1.1  christos   else if ((FPCR & (FCC_U | FCC_G)))
   1994  1.1  christos     {
   1995  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   1996  1.1  christos       nia = PC;
   1997  1.1  christos     }
   1998  1.1  christos }
   1999  1.1  christos 
   2000  1.1  christos // 1111 1000 1101 1010 d8; fbuge (d8,PC) (d8 is sign-extended)
   2001  1.1  christos 8.0xf8+8.0xda+8.D8:D1:::fbuge
   2002  1.1  christos "fbuge"
   2003  1.1  christos *am33_2
   2004  1.1  christos {
   2005  1.1  christos   PC = cia;
   2006  1.1  christos 
   2007  1.1  christos   if (FPU_DISABLED)
   2008  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2009  1.1  christos   else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
   2010  1.1  christos     {
   2011  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   2012  1.1  christos       nia = PC;
   2013  1.1  christos     }
   2014  1.1  christos }
   2015  1.1  christos 
   2016  1.1  christos // 1111 1000 1101 1011 d8; fbul (d8,PC) (d8 is sign-extended)
   2017  1.1  christos 8.0xf8+8.0xdb+8.D8:D1:::fbul
   2018  1.1  christos "fbul"
   2019  1.1  christos *am33_2
   2020  1.1  christos {
   2021  1.1  christos   PC = cia;
   2022  1.1  christos 
   2023  1.1  christos   if (FPU_DISABLED)
   2024  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2025  1.1  christos   else if ((FPCR & (FCC_U | FCC_L)))
   2026  1.1  christos     {
   2027  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   2028  1.1  christos       nia = PC;
   2029  1.1  christos     }
   2030  1.1  christos }
   2031  1.1  christos 
   2032  1.1  christos // 1111 1000 1101 1100 d8; fbule (d8,PC) (d8 is sign-extended)
   2033  1.1  christos 8.0xf8+8.0xdc+8.D8:D1:::fbule
   2034  1.1  christos "fbule"
   2035  1.1  christos *am33_2
   2036  1.1  christos {
   2037  1.1  christos   PC = cia;
   2038  1.1  christos 
   2039  1.1  christos   if (FPU_DISABLED)
   2040  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2041  1.1  christos   else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
   2042  1.1  christos     {
   2043  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   2044  1.1  christos       nia = PC;
   2045  1.1  christos     }
   2046  1.1  christos }
   2047  1.1  christos 
   2048  1.1  christos // 1111 1000 1101 1101 d8; fbue (d8,PC) (d8 is sign-extended)
   2049  1.1  christos 8.0xf8+8.0xdd+8.D8:D1:::fbue
   2050  1.1  christos "fbue"
   2051  1.1  christos *am33_2
   2052  1.1  christos {
   2053  1.1  christos   PC = cia;
   2054  1.1  christos 
   2055  1.1  christos   if (FPU_DISABLED)
   2056  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2057  1.1  christos   else if ((FPCR & (FCC_U | FCC_E)))
   2058  1.1  christos     {
   2059  1.1  christos       State.regs[REG_PC] += EXTEND8 (D8);
   2060  1.1  christos       nia = PC;
   2061  1.1  christos     }
   2062  1.1  christos }
   2063  1.1  christos 
   2064  1.1  christos // 1111 0000 1101 0000; fleq
   2065  1.1  christos 8.0xf0+8.0xd0:D0:::fleq
   2066  1.1  christos "fleq"
   2067  1.1  christos *am33_2
   2068  1.1  christos {
   2069  1.1  christos   PC = cia;
   2070  1.1  christos 
   2071  1.1  christos   if (FPU_DISABLED)
   2072  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2073  1.1  christos   else if ((FPCR & FCC_E))
   2074  1.1  christos     {
   2075  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2076  1.1  christos       nia = PC;
   2077  1.1  christos     }
   2078  1.1  christos }
   2079  1.1  christos 
   2080  1.1  christos // 1111 0000 1101 0001; flne
   2081  1.1  christos 8.0xf0+8.0xd1:D0:::flne
   2082  1.1  christos "flne"
   2083  1.1  christos *am33_2
   2084  1.1  christos {
   2085  1.1  christos   PC = cia;
   2086  1.1  christos 
   2087  1.1  christos   if (FPU_DISABLED)
   2088  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2089  1.1  christos   else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
   2090  1.1  christos     {
   2091  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2092  1.1  christos       nia = PC;
   2093  1.1  christos     }
   2094  1.1  christos }
   2095  1.1  christos 
   2096  1.1  christos // 1111 0000 1101 0010; flgt
   2097  1.1  christos 8.0xf0+8.0xd2:D0:::flgt
   2098  1.1  christos "flgt"
   2099  1.1  christos *am33_2
   2100  1.1  christos {
   2101  1.1  christos   PC = cia;
   2102  1.1  christos 
   2103  1.1  christos   if (FPU_DISABLED)
   2104  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2105  1.1  christos   else if ((FPCR & FCC_G))
   2106  1.1  christos     {
   2107  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2108  1.1  christos       nia = PC;
   2109  1.1  christos     }
   2110  1.1  christos }
   2111  1.1  christos 
   2112  1.1  christos // 1111 0000 1101 0011; flge
   2113  1.1  christos 8.0xf0+8.0xd3:D0:::flge
   2114  1.1  christos "flge"
   2115  1.1  christos *am33_2
   2116  1.1  christos {
   2117  1.1  christos   PC = cia;
   2118  1.1  christos 
   2119  1.1  christos   if (FPU_DISABLED)
   2120  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2121  1.1  christos   else if ((FPCR & (FCC_G | FCC_E)))
   2122  1.1  christos     {
   2123  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2124  1.1  christos       nia = PC;
   2125  1.1  christos     }
   2126  1.1  christos }
   2127  1.1  christos 
   2128  1.1  christos // 1111 0000 1101 0100; fllt
   2129  1.1  christos 8.0xf0+8.0xd4:D0:::fllt
   2130  1.1  christos "fllt"
   2131  1.1  christos *am33_2
   2132  1.1  christos {
   2133  1.1  christos   PC = cia;
   2134  1.1  christos 
   2135  1.1  christos   if (FPU_DISABLED)
   2136  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2137  1.1  christos   else if ((FPCR & FCC_L))
   2138  1.1  christos     {
   2139  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2140  1.1  christos       nia = PC;
   2141  1.1  christos     }
   2142  1.1  christos }
   2143  1.1  christos 
   2144  1.1  christos // 1111 0000 1101 0101; flle
   2145  1.1  christos 8.0xf0+8.0xd5:D0:::flle
   2146  1.1  christos "flle"
   2147  1.1  christos *am33_2
   2148  1.1  christos {
   2149  1.1  christos   PC = cia;
   2150  1.1  christos 
   2151  1.1  christos   if (FPU_DISABLED)
   2152  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2153  1.1  christos   else if ((FPCR & (FCC_L | FCC_E)))
   2154  1.1  christos     {
   2155  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2156  1.1  christos       nia = PC;
   2157  1.1  christos     }
   2158  1.1  christos }
   2159  1.1  christos 
   2160  1.1  christos // 1111 0000 1101 0110; fluo
   2161  1.1  christos 8.0xf0+8.0xd6:D0:::fluo
   2162  1.1  christos "fluo"
   2163  1.1  christos *am33_2
   2164  1.1  christos {
   2165  1.1  christos   PC = cia;
   2166  1.1  christos 
   2167  1.1  christos   if (FPU_DISABLED)
   2168  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2169  1.1  christos   else if ((FPCR & FCC_U))
   2170  1.1  christos     {
   2171  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2172  1.1  christos       nia = PC;
   2173  1.1  christos     }
   2174  1.1  christos }
   2175  1.1  christos 
   2176  1.1  christos // 1111 0000 1101 0111; fllg
   2177  1.1  christos 8.0xf0+8.0xd7:D0:::fllg
   2178  1.1  christos "fllg"
   2179  1.1  christos *am33_2
   2180  1.1  christos {
   2181  1.1  christos   PC = cia;
   2182  1.1  christos 
   2183  1.1  christos   if (FPU_DISABLED)
   2184  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2185  1.1  christos   else if ((FPCR & (FCC_L | FCC_G)))
   2186  1.1  christos     {
   2187  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2188  1.1  christos       nia = PC;
   2189  1.1  christos     }
   2190  1.1  christos }
   2191  1.1  christos // 1111 0000 1101 1000; flleg
   2192  1.1  christos 8.0xf0+8.0xd8:D0:::flleg
   2193  1.1  christos "flleg"
   2194  1.1  christos *am33_2
   2195  1.1  christos {
   2196  1.1  christos   PC = cia;
   2197  1.1  christos 
   2198  1.1  christos   if (FPU_DISABLED)
   2199  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2200  1.1  christos   else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
   2201  1.1  christos     {
   2202  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2203  1.1  christos       nia = PC;
   2204  1.1  christos     }
   2205  1.1  christos }
   2206  1.1  christos 
   2207  1.1  christos // 1111 0000 1101 1001; flug
   2208  1.1  christos 8.0xf0+8.0xd9:D0:::flug
   2209  1.1  christos "flug"
   2210  1.1  christos *am33_2
   2211  1.1  christos {
   2212  1.1  christos   PC = cia;
   2213  1.1  christos 
   2214  1.1  christos   if (FPU_DISABLED)
   2215  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2216  1.1  christos   else if ((FPCR & (FCC_U | FCC_G)))
   2217  1.1  christos     {
   2218  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2219  1.1  christos       nia = PC;
   2220  1.1  christos     }
   2221  1.1  christos }
   2222  1.1  christos 
   2223  1.1  christos // 1111 0000 1101 1010; fluge
   2224  1.1  christos 8.0xf0+8.0xda:D0:::fluge
   2225  1.1  christos "fluge"
   2226  1.1  christos *am33_2
   2227  1.1  christos {
   2228  1.1  christos   PC = cia;
   2229  1.1  christos 
   2230  1.1  christos   if (FPU_DISABLED)
   2231  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2232  1.1  christos   else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
   2233  1.1  christos     {
   2234  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2235  1.1  christos       nia = PC;
   2236  1.1  christos     }
   2237  1.1  christos }
   2238  1.1  christos 
   2239  1.1  christos // 1111 0000 1101 1011; flul
   2240  1.1  christos 8.0xf0+8.0xdb:D0:::flul
   2241  1.1  christos "flul"
   2242  1.1  christos *am33_2
   2243  1.1  christos {
   2244  1.1  christos   PC = cia;
   2245  1.1  christos 
   2246  1.1  christos   if (FPU_DISABLED)
   2247  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2248  1.1  christos   else if ((FPCR & (FCC_U | FCC_L)))
   2249  1.1  christos     {
   2250  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2251  1.1  christos       nia = PC;
   2252  1.1  christos     }
   2253  1.1  christos }
   2254  1.1  christos 
   2255  1.1  christos // 1111 0000 1101 1100; flule
   2256  1.1  christos 8.0xf0+8.0xdc:D0:::flule
   2257  1.1  christos "flule"
   2258  1.1  christos *am33_2
   2259  1.1  christos {
   2260  1.1  christos   PC = cia;
   2261  1.1  christos 
   2262  1.1  christos   if (FPU_DISABLED)
   2263  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2264  1.1  christos   else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
   2265  1.1  christos     {
   2266  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2267  1.1  christos       nia = PC;
   2268  1.1  christos     }
   2269  1.1  christos }
   2270  1.1  christos 
   2271  1.1  christos // 1111 0000 1101 1101; flue
   2272  1.1  christos 8.0xf0+8.0xdd:D0:::flue
   2273  1.1  christos "flue"
   2274  1.1  christos *am33_2
   2275  1.1  christos {
   2276  1.1  christos   PC = cia;
   2277  1.1  christos 
   2278  1.1  christos   if (FPU_DISABLED)
   2279  1.1  christos     fpu_disabled_exception (SD, CPU, cia);
   2280  1.1  christos   else if ((FPCR & (FCC_U | FCC_E)))
   2281  1.1  christos     {
   2282  1.1  christos       State.regs[REG_PC] = State.regs[REG_LAR] - 4;
   2283  1.1  christos       nia = PC;
   2284  1.1  christos     }
   2285  1.1  christos }
   2286