/* FPREM1 */
case 0x35:
+ /* FPREM */
+ case 0x38:
{
LONGLONG Quotient;
break;
}
- if (Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), TRUE, &FPU_ST(0), &Quotient))
+ if (Fast486FpuRemainder(State,
+ &FPU_ST(0),
+ &FPU_ST(1),
+ ModRegRm.Register == 6, /* TRUE if it's FPREM1 */
+ &FPU_ST(0),
+ &Quotient))
{
FPU_UPDATE_TAG(0);
break;
}
- /* FPREM */
- case 0x38:
- {
- LONGLONG Quotient;
-
- Fast486FpuExceptionCheck(State);
- FPU_SAVE_LAST_INST();
-
- if (FPU_GET_TAG(0) == FPU_TAG_EMPTY || FPU_GET_TAG(1) == FPU_TAG_EMPTY)
- {
- State->FpuStatus.Ie = TRUE;
- break;
- }
-
- if (Fast486FpuRemainder(State, &FPU_ST(0), &FPU_ST(1), FALSE, &FPU_ST(0), &Quotient))
- {
- FPU_UPDATE_TAG(0);
-
- /* Return the lowest 3 bits of the quotient in C1, C3, C0 */
- State->FpuStatus.Code1 = Quotient & 1;
- State->FpuStatus.Code3 = (Quotient >> 1) & 1;
- State->FpuStatus.Code0 = (Quotient >> 2) & 1;
- }
-
- break;
- }
-
/* FYL2XP1 */
case 0x39:
{