#ifndef _X86_OPS_MMX_H_
#define _X86_OPS_MMX_H_
#define SSATB(val) (((val) < -128) ? -128 : (((val) > 127) ? 127 : (val)))
#define SSATW(val) (((val) < -32768) ? -32768 : (((val) > 32767) ? 32767 : (val)))
#define USATB(val) (((val) < 0) ? 0 : (((val) > 255) ? 255 : (val)))
#define USATW(val) (((val) < 0) ? 0 : (((val) > 65535) ? 65535 : (val)))

#define MMX_GETSRC()                                                            \
        if (cpu_mod == 3)                                                           \
        {                                                                       \
                src = cpu_state.MM[cpu_rm];                                                   \
                CLOCK_CYCLES(1);                                                \
        }                                                                       \
        else                                                                    \
        {                                                                       \
                SEG_CHECK_READ(cpu_state.ea_seg);                               \
                src.q = readmemq(easeg, cpu_state.eaaddr); if (cpu_state.abrt) return 1;            \
                CLOCK_CYCLES(2);                                                \
        }

#define MMX_ENTER()                                                     \
        if (!cpu_has_feature(CPU_FEATURE_MMX))                          \
        {                                                               \
                cpu_state.pc = cpu_state.oldpc;                                   \
                x86illegal();                                           \
                return 1;                                               \
        }                                                               \
        if (cr0 & 0xc)                                                  \
        {                                                               \
                x86_int(7);                                             \
                return 1;                                               \
        }                                                               \
        x87_set_mmx()

static int opEMMS(uint32_t fetchdat) {
	if (!cpu_has_feature(CPU_FEATURE_MMX)) {
		cpu_state.pc = cpu_state.oldpc;
		x86illegal();
		return 1;
	}
	if (cr0 & 0xc) {
		x86_int(7);
		return 1;
	}
	x87_emms();
	CLOCK_CYCLES(100); /*Guess*/
	return 0;
}

#endif /* _X86_OPS_MMX_H_ */
