void gencvt_s_d() { #ifdef INTERPRET_CVT_S_D gencallinterp((unsigned long)CVT_S_D, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned long*)(®_cop1_double[dst->f.cf.fs])); fld_preg32_qword(EAX); mov_eax_memoffs32((unsigned long*)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif }
void gencvt_s_d(usf_state_t * state) { #ifdef INTERPRET_CVT_S_D gencallinterp(state, (unsigned int)state->current_instruction_table.CVT_S_D, 0); #else gencheck_cop1_unusable(state); mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_double[state->dst->f.cf.fs])); fld_preg32_qword(state, EAX); mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_simple[state->dst->f.cf.fd])); fstp_preg32_dword(state, EAX); #endif }
void gencvt_s_w(void) { #ifdef INTERPRET_CVT_S_W gencallinterp((unsigned int)cached_interpreter_table.CVT_S_W, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned int*)(®_cop1_simple[dst->f.cf.fs])); fild_preg32_dword(EAX); mov_eax_memoffs32((unsigned int*)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif }
void gensqrt_s() { #ifdef INTERPRET_SQRT_S gencallinterp((u32)SQRT_S, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((u32 *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); fsqrt(); mov_eax_memoffs32((u32 *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif }
void genneg_s(void) { #ifdef INTERPRET_NEG_S gencallinterp((unsigned int)NEG_S, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); fchs(); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif }
void genabs_s(void) { #ifdef INTERPRET_ABS_S gencallinterp((unsigned int)cached_interpreter_table.ABS_S, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); fabs_(); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif }
void gencvt_s_l(void) { #ifdef INTERPRET_CVT_S_L gencallinterp((native_type)cached_interpreter_table.CVT_S_L, 0); #else gencheck_cop1_unusable(); #ifdef __x86_64__ mov_xreg64_m64rel(RAX, (unsigned long long *)(®_cop1_double[dst->f.cf.fs])); fild_preg64_qword(RAX); mov_xreg64_m64rel(RAX, (unsigned long long *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg64_dword(RAX); #else mov_eax_memoffs32((unsigned int*)(®_cop1_double[dst->f.cf.fs])); fild_preg32_qword(EAX); mov_eax_memoffs32((unsigned int*)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif #endif }
void genmul_s(void) { #ifdef INTERPRET_MUL_S gencallinterp((native_type)cached_interpreter_table.MUL_S, 0); #else gencheck_cop1_unusable(); #ifdef __x86_64__ mov_xreg64_m64rel(RAX, (unsigned long long *)(®_cop1_simple[dst->f.cf.fs])); fld_preg64_dword(RAX); mov_xreg64_m64rel(RAX, (unsigned long long *)(®_cop1_simple[dst->f.cf.ft])); fmul_preg64_dword(RAX); mov_xreg64_m64rel(RAX, (unsigned long long *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg64_dword(RAX); #else mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.ft])); fmul_preg32_dword(EAX); mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fd])); fstp_preg32_dword(EAX); #endif #endif }