Home | History | Annotate | Line # | Download | only in mn10300
am33-2.igen revision 1.5.26.1
      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.5.26.1  perseant   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.5.26.1  perseant   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.5.26.1  perseant       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.5.26.1  perseant       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.5.26.1  perseant       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.5.26.1  perseant       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.5.26.1  perseant       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.5.26.1  perseant       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.5.26.1  perseant       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