void gencvt_l_s(void) { #if defined(COUNT_INSTR) inc_m32rel(&instr_count[117]); #endif #ifdef INTERPRET_CVT_L_S gencallinterp((unsigned long long)cached_interpreter_table.CVT_L_S, 0); #else gencheck_cop1_unusable(); 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])); fistp_preg64_qword(RAX); #endif }
void genfloor_l_s(void) { #if defined(COUNT_INSTR) inc_m32rel(&instr_count[130]); #endif #ifdef INTERPRET_FLOOR_L_S gencallinterp((unsigned long long)cached_interpreter_table.FLOOR_L_S, 0); #else gencheck_cop1_unusable(); fldcw_m16rel((unsigned short*)&floor_mode); 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])); fistp_preg64_qword(RAX); fldcw_m16rel((unsigned short*)&rounding_mode); #endif }
void gencvt_l_s(void) { #ifdef INTERPRET_CVT_L_S gencallinterp((native_type)cached_interpreter_table.CVT_L_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])); fistp_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])); fistp_preg32_qword(EAX); #endif #endif }
void genfloor_l_s(void) { #ifdef INTERPRET_FLOOR_L_S gencallinterp((native_type)cached_interpreter_table.FLOOR_L_S, 0); #else gencheck_cop1_unusable(); #ifdef __x86_64__ fldcw_m16rel((unsigned short*)&floor_mode); 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])); fistp_preg64_qword(RAX); fldcw_m16rel((unsigned short*)&rounding_mode); #else fldcw_m16((unsigned short*)&floor_mode); 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])); fistp_preg32_qword(EAX); fldcw_m16((unsigned short*)&rounding_mode); #endif #endif }