void gencvt_d_s() { #ifdef INTERPRET_CVT_D_S gencallinterp((u32)CVT_D_S, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((u32 *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); mov_eax_memoffs32((u32 *)(®_cop1_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif }
void gencvt_d_l(void) { #ifdef INTERPRET_CVT_D_L gencallinterp((unsigned int)CVT_D_L, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned int*)(®_cop1_double[dst->f.cf.fs])); fild_preg32_qword(EAX); mov_eax_memoffs32((unsigned int*)(®_cop1_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif }
void gencvt_d_w(void) { #ifdef INTERPRET_CVT_D_W gencallinterp((unsigned int)cached_interpreter_table.CVT_D_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_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif }
void gensqrt_d(usf_state_t * state) { #ifdef INTERPRET_SQRT_D gencallinterp(state, (unsigned int)state->current_instruction_table.SQRT_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); fsqrt(state); mov_eax_memoffs32(state, (unsigned int *)(&state->reg_cop1_double[state->dst->f.cf.fd])); fstp_preg32_qword(state, EAX); #endif }
void gensqrt_d() { #ifdef INTERPRET_SQRT_D gencallinterp((unsigned long)SQRT_D, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned long *)(®_cop1_double[dst->f.cf.fs])); fld_preg32_qword(EAX); fsqrt(); mov_eax_memoffs32((unsigned long *)(®_cop1_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif }
void genneg_d(void) { #ifdef INTERPRET_NEG_D gencallinterp((unsigned int)NEG_D, 0); #else gencheck_cop1_unusable(); mov_eax_memoffs32((unsigned int *)(®_cop1_double[dst->f.cf.fs])); fld_preg32_qword(EAX); fchs(); mov_eax_memoffs32((unsigned int *)(®_cop1_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif }
void gencvt_d_s(void) { #ifdef INTERPRET_CVT_D_S gencallinterp((native_type)cached_interpreter_table.CVT_D_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_double[dst->f.cf.fd])); fstp_preg64_qword(RAX); #else mov_eax_memoffs32((unsigned int *)(®_cop1_simple[dst->f.cf.fs])); fld_preg32_dword(EAX); mov_eax_memoffs32((unsigned int *)(®_cop1_double[dst->f.cf.fd])); fstp_preg32_qword(EAX); #endif #endif }