コード例 #1
0
ファイル: gcop1_s.c プロジェクト: Oggom/mupen64plus-libretro
void genc_sf_s(void)
{
#ifdef INTERPRET_C_SF_S
   gencallinterp((native_type)cached_interpreter_table.C_SF_S, 0);
#else
   gencheck_cop1_unusable();
#ifdef __x86_64__
   mov_xreg64_m64rel(RAX, (unsigned long long *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg64_dword(RAX);
   mov_xreg64_m64rel(RAX, (unsigned long long *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg64_dword(RAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   and_m32rel_imm32((unsigned int*)&FCR31, ~0x800000);
#else
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg32_dword(EAX);
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg32_dword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000);
#endif
#endif
}
コード例 #2
0
ファイル: gcop1_s.c プロジェクト: Oggom/mupen64plus-libretro
void genc_ngt_s(void)
{
#ifdef INTERPRET_C_NGT_S
   gencallinterp((native_type)cached_interpreter_table.C_NGT_S, 0);
#else
   gencheck_cop1_unusable();
#ifdef __x86_64__
   mov_xreg64_m64rel(RAX, (unsigned long long *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg64_dword(RAX);
   mov_xreg64_m64rel(RAX, (unsigned long long *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg64_dword(RAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   jp_rj(15);
   ja_rj(13);
   or_m32rel_imm32((unsigned int*)&FCR31, 0x800000); // 11
   jmp_imm_short(11); // 2
   and_m32rel_imm32((unsigned int*)&FCR31, ~0x800000); // 11
#else
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg32_dword(EAX);
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg32_dword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   jp_rj(14);
   ja_rj(12);
   or_m32_imm32((unsigned int*)&FCR31, 0x800000); // 10
   jmp_imm_short(10); // 2
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000); // 10
#endif
#endif
}
コード例 #3
0
ファイル: gcop1_d.c プロジェクト: derselbst/lazyusf2
void genc_f_d(usf_state_t * state)
{
#ifdef INTERPRET_C_F_D
   gencallinterp(state, (unsigned int)state->current_instruction_table.C_F_D, 0);
#else
   gencheck_cop1_unusable(state);
   and_m32_imm32(state, (unsigned int*)&state->FCR31, ~0x800000);
#endif
}
コード例 #4
0
ファイル: gcop1_d.c プロジェクト: GPDP2/mupen64
void genc_f_d()
{
#ifdef INTERPRET_C_F_D
   gencallinterp((unsigned long)C_F_D, 0);
#else
   gencheck_cop1_unusable();
   and_m32_imm32((unsigned long*)&FCR31, ~0x800000);
#endif
}
コード例 #5
0
ファイル: gcop1_s.c プロジェクト: cxd4/mupen86
void genc_f_s()
{
#ifdef INTERPRET_C_F_S
   gencallinterp((u32)C_F_S, 0);
#else
   gencheck_cop1_unusable();
   and_m32_imm32((u32*)&FCR31, ~0x800000);
#endif
}
コード例 #6
0
void genc_f_s(void)
{
#ifdef INTERPRET_C_F_S
   gencallinterp((unsigned int)cached_interpreter_table.C_F_S, 0);
#else
   gencheck_cop1_unusable();
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000);
#endif
}
コード例 #7
0
ファイル: gcop1_s.c プロジェクト: Oggom/mupen64plus-libretro
void genc_f_s(void)
{
#ifdef INTERPRET_C_F_S
   gencallinterp((native_type)cached_interpreter_table.C_F_S, 0);
#else
   gencheck_cop1_unusable();
#ifdef __x86_64__
   and_m32rel_imm32((unsigned int*)&FCR31, ~0x800000);
#else
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000);
#endif
#endif
}
コード例 #8
0
ファイル: gcop1_d.c プロジェクト: derselbst/lazyusf2
void genc_sf_d(usf_state_t * state)
{
#ifdef INTERPRET_C_SF_D
   gencallinterp(state, (unsigned int)state->current_instruction_table.C_SF_D, 0);
#else
   gencheck_cop1_unusable(state);
   mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_double[state->dst->f.cf.ft]));
   fld_preg32_qword(state, EAX);
   mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_double[state->dst->f.cf.fs]));
   fld_preg32_qword(state, EAX);
   fcomip_fpreg(state, 1);
   ffree_fpreg(state, 0);
   and_m32_imm32(state, (unsigned int*)&state->FCR31, ~0x800000);
#endif
}
コード例 #9
0
ファイル: gcop1_s.c プロジェクト: cxd4/mupen86
void genc_sf_s()
{
#ifdef INTERPRET_C_SF_S
   gencallinterp((u32)C_SF_S, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((u32 *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg32_dword(EAX);
   mov_eax_memoffs32((u32 *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg32_dword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   and_m32_imm32((u32*)&FCR31, ~0x800000);
#endif
}
コード例 #10
0
ファイル: gcop1_d.c プロジェクト: GPDP2/mupen64
void genc_sf_d()
{
#ifdef INTERPRET_C_SF_D
   gencallinterp((unsigned long)C_SF_D, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((unsigned long*)(&reg_cop1_double[dst->f.cf.ft]));
   fld_preg32_qword(EAX);
   mov_eax_memoffs32((unsigned long*)(&reg_cop1_double[dst->f.cf.fs]));
   fld_preg32_qword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   and_m32_imm32((unsigned long*)&FCR31, ~0x800000);
#endif
}
コード例 #11
0
ファイル: gcop1_d.c プロジェクト: derselbst/lazyusf2
void genc_olt_d(usf_state_t * state)
{
#ifdef INTERPRET_C_OLT_D
   gencallinterp(state, (unsigned int)state->current_instruction_table.C_OLT_D, 0);
#else
   gencheck_cop1_unusable(state);
   mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_double[state->dst->f.cf.ft]));
   fld_preg32_qword(state, EAX);
   mov_eax_memoffs32(state, (unsigned int*)(&state->reg_cop1_double[state->dst->f.cf.fs]));
   fld_preg32_qword(state, EAX);
   fucomip_fpreg(state, 1);
   ffree_fpreg(state, 0);
   jae_rj(state, 12); // 2
   or_m32_imm32(state, (unsigned int*)&state->FCR31, 0x800000); // 10
   jmp_imm_short(state, 10); // 2
   and_m32_imm32(state, (unsigned int*)&state->FCR31, ~0x800000); // 10
#endif
}
コード例 #12
0
ファイル: gcop1_s.c プロジェクト: cxd4/mupen86
void genc_le_s()
{
#ifdef INTERPRET_C_LE_S
   gencallinterp((u32)C_LE_S, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((u32 *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg32_dword(EAX);
   mov_eax_memoffs32((u32 *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg32_dword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   ja_rj(12);
   or_m32_imm32((u32*)&FCR31, 0x800000); /* 10 */
   jmp_imm_short(10); /* 2 */
   and_m32_imm32((u32*)&FCR31, ~0x800000); /* 10 */
#endif
}
コード例 #13
0
ファイル: gcop1_d.c プロジェクト: GPDP2/mupen64
void genc_le_d()
{
#ifdef INTERPRET_C_LE_D
   gencallinterp((unsigned long)C_LE_D, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((unsigned long*)(&reg_cop1_double[dst->f.cf.ft]));
   fld_preg32_qword(EAX);
   mov_eax_memoffs32((unsigned long*)(&reg_cop1_double[dst->f.cf.fs]));
   fld_preg32_qword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   ja_rj(12); // 2
   or_m32_imm32((unsigned long*)&FCR31, 0x800000); // 10
   jmp_imm_short(10); // 2
   and_m32_imm32((unsigned long*)&FCR31, ~0x800000); // 10
#endif
}
コード例 #14
0
ファイル: gcop1_s.c プロジェクト: CatalystG/Mupen64Plus-PB
void genc_lt_s(void)
{
#ifdef INTERPRET_C_LT_S
   gencallinterp((unsigned int)C_LT_S, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.ft]));
   fld_preg32_dword(EAX);
   mov_eax_memoffs32((unsigned int *)(&reg_cop1_simple[dst->f.cf.fs]));
   fld_preg32_dword(EAX);
   fcomip_fpreg(1);
   ffree_fpreg(0);
   jae_rj(12);
   or_m32_imm32((unsigned int*)&FCR31, 0x800000); // 10
   jmp_imm_short(10); // 2
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000); // 10
#endif
}
コード例 #15
0
ファイル: gcop1_d.c プロジェクト: AlexOteiza/n64ios
void genc_ueq_d(void)
{
#ifdef INTERPRET_C_UEQ_D
   gencallinterp((unsigned int)C_UEQ_D, 0);
#else
   gencheck_cop1_unusable();
   mov_eax_memoffs32((unsigned int*)(&reg_cop1_double[dst->f.cf.ft]));
   fld_preg32_qword(EAX);
   mov_eax_memoffs32((unsigned int*)(&reg_cop1_double[dst->f.cf.fs]));
   fld_preg32_qword(EAX);
   fucomip_fpreg(1);
   ffree_fpreg(0);
   jp_rj(14);
   jne_rj(12);
   or_m32_imm32((unsigned int*)&FCR31, 0x800000); // 10
   jmp_imm_short(10); // 2
   and_m32_imm32((unsigned int*)&FCR31, ~0x800000); // 10
#endif
}