mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 01:48:21 -07:00
Upgrade to softfloat3e.
This should solve licensing problems as well.
This commit is contained in:
@@ -648,10 +648,10 @@ codegen_FTST(codeblock_t *block, uop_t *uop)
|
||||
host_arm64_FSUB_D(block, REG_V_TEMP, REG_V_TEMP, REG_V_TEMP);
|
||||
host_arm64_MOVZ_IMM(block, dest_reg, 0);
|
||||
host_arm64_FCMP_D(block, src_reg_a, REG_V_TEMP);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP2, dest_reg, C0);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, FPU_SW_C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP2, dest_reg, FPU_SW_C0);
|
||||
host_arm64_CSEL_EQ(block, dest_reg, REG_TEMP, dest_reg);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, C0 | C2 | C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
host_arm64_CSEL_CC(block, dest_reg, REG_TEMP2, dest_reg);
|
||||
host_arm64_CSEL_VS(block, dest_reg, REG_TEMP, dest_reg);
|
||||
} else
|
||||
@@ -690,10 +690,10 @@ codegen_FCOM(codeblock_t *block, uop_t *uop)
|
||||
if (REG_IS_W(dest_size) && REG_IS_D(src_size_a) && REG_IS_D(src_size_b)) {
|
||||
host_arm64_MOVZ_IMM(block, dest_reg, 0);
|
||||
host_arm64_FCMP_D(block, src_reg_a, src_reg_b);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP2, dest_reg, C0);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, FPU_SW_C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP2, dest_reg, FPU_SW_C0);
|
||||
host_arm64_CSEL_EQ(block, dest_reg, REG_TEMP, dest_reg);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, C0 | C2 | C3);
|
||||
host_arm64_ORR_IMM(block, REG_TEMP, dest_reg, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
host_arm64_CSEL_CC(block, dest_reg, REG_TEMP2, dest_reg);
|
||||
host_arm64_CSEL_VS(block, dest_reg, REG_TEMP, dest_reg);
|
||||
} else
|
||||
|
||||
@@ -718,9 +718,9 @@ codegen_FTST(codeblock_t *block, uop_t *uop)
|
||||
host_arm_VCMP_D(block, src_reg_a, REG_D_TEMP);
|
||||
host_arm_MOV_IMM(block, dest_reg, 0);
|
||||
host_arm_VMRS_APSR(block);
|
||||
host_arm_ORREQ_IMM(block, dest_reg, dest_reg, C3);
|
||||
host_arm_ORRCC_IMM(block, dest_reg, dest_reg, C0);
|
||||
host_arm_ORRVS_IMM(block, dest_reg, dest_reg, C0 | C2 | C3);
|
||||
host_arm_ORREQ_IMM(block, dest_reg, dest_reg, FPU_SW_C3);
|
||||
host_arm_ORRCC_IMM(block, dest_reg, dest_reg, FPU_SW_C0);
|
||||
host_arm_ORRVS_IMM(block, dest_reg, dest_reg, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
} else
|
||||
fatal("codegen_FTST %02x %02x %02x\n", uop->dest_reg_a_real, uop->src_reg_a_real, uop->src_reg_b_real);
|
||||
|
||||
@@ -758,9 +758,9 @@ codegen_FCOM(codeblock_t *block, uop_t *uop)
|
||||
host_arm_VCMP_D(block, src_reg_a, src_reg_b);
|
||||
host_arm_MOV_IMM(block, dest_reg, 0);
|
||||
host_arm_VMRS_APSR(block);
|
||||
host_arm_ORREQ_IMM(block, dest_reg, dest_reg, C3);
|
||||
host_arm_ORRCC_IMM(block, dest_reg, dest_reg, C0);
|
||||
host_arm_ORRVS_IMM(block, dest_reg, dest_reg, C0 | C2 | C3);
|
||||
host_arm_ORREQ_IMM(block, dest_reg, dest_reg, FPU_SW_C3);
|
||||
host_arm_ORRCC_IMM(block, dest_reg, dest_reg, FPU_SW_C0);
|
||||
host_arm_ORRVS_IMM(block, dest_reg, dest_reg, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
} else
|
||||
fatal("codegen_FCOM %02x %02x %02x\n", uop->dest_reg_a_real, uop->src_reg_a_real, uop->src_reg_b_real);
|
||||
|
||||
|
||||
@@ -672,7 +672,7 @@ codegen_FTST(codeblock_t *block, uop_t *uop)
|
||||
host_x86_XOR32_REG_REG(block, REG_EAX, REG_EAX);
|
||||
host_x86_COMISD_XREG_XREG(block, src_reg_a, REG_XMM_TEMP);
|
||||
host_x86_LAHF(block);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, C0 | C2 | C3);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
if (dest_reg != REG_EAX) {
|
||||
host_x86_MOV16_REG_REG(block, dest_reg, REG_EAX);
|
||||
host_x86_MOV32_REG_REG(block, REG_EAX, REG_ECX);
|
||||
@@ -720,7 +720,7 @@ codegen_FCOM(codeblock_t *block, uop_t *uop)
|
||||
host_x86_XOR32_REG_REG(block, REG_EAX, REG_EAX);
|
||||
host_x86_COMISD_XREG_XREG(block, src_reg_a, src_reg_b);
|
||||
host_x86_LAHF(block);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, C0 | C2 | C3);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
if (dest_reg != REG_EAX) {
|
||||
host_x86_MOV16_REG_REG(block, dest_reg, REG_EAX);
|
||||
host_x86_MOV32_REG_REG(block, REG_EAX, REG_ECX);
|
||||
|
||||
@@ -677,7 +677,7 @@ codegen_FTST(codeblock_t *block, uop_t *uop)
|
||||
host_x86_XOR32_REG_REG(block, REG_EAX, REG_EAX);
|
||||
host_x86_COMISD_XREG_XREG(block, src_reg_a, REG_XMM_TEMP);
|
||||
host_x86_LAHF(block);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, C0 | C2 | C3);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
if (dest_reg != REG_EAX) {
|
||||
host_x86_MOV16_REG_REG(block, dest_reg, REG_EAX);
|
||||
host_x86_MOV32_REG_REG(block, REG_EAX, REG_ECX);
|
||||
@@ -725,7 +725,7 @@ codegen_FCOM(codeblock_t *block, uop_t *uop)
|
||||
host_x86_XOR32_REG_REG(block, REG_EAX, REG_EAX);
|
||||
host_x86_COMISD_XREG_XREG(block, src_reg_a, src_reg_b);
|
||||
host_x86_LAHF(block);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, C0 | C2 | C3);
|
||||
host_x86_AND16_REG_IMM(block, REG_EAX, FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3);
|
||||
if (dest_reg != REG_EAX) {
|
||||
host_x86_MOV16_REG_REG(block, dest_reg, REG_EAX);
|
||||
host_x86_MOV32_REG_REG(block, REG_EAX, REG_ECX);
|
||||
|
||||
@@ -59,7 +59,7 @@ ropFCOM(UNUSED(codeblock_t *block), ir_data_t *ir, UNUSED(uint8_t opcode), uint3
|
||||
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(src_reg));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
|
||||
return op_pc;
|
||||
@@ -71,7 +71,7 @@ ropFCOMP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fet
|
||||
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(src_reg));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
fpu_POP(block, ir);
|
||||
|
||||
@@ -82,7 +82,7 @@ ropFCOMPP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fe
|
||||
{
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(1));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
fpu_POP2(block, ir);
|
||||
|
||||
@@ -269,7 +269,7 @@ ropFUCOM(UNUSED(codeblock_t *block), ir_data_t *ir, UNUSED(uint8_t opcode), uint
|
||||
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(src_reg));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
|
||||
return op_pc;
|
||||
@@ -281,7 +281,7 @@ ropFUCOMP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fe
|
||||
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(src_reg));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
fpu_POP(block, ir);
|
||||
|
||||
@@ -292,7 +292,7 @@ ropFUCOMPP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t f
|
||||
{
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FCOM(ir, IREG_temp0_W, IREG_ST(0), IREG_ST(1));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
fpu_POP2(block, ir);
|
||||
|
||||
@@ -328,7 +328,7 @@ ropFUCOMPP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t f
|
||||
codegen_check_seg_read(block, ir, target_seg); \
|
||||
load_uop(ir, IREG_temp0_D, ireg_seg_base(target_seg), IREG_eaaddr); \
|
||||
uop_FCOM(ir, IREG_temp1_W, IREG_ST(0), IREG_temp0_D); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3)); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3)); \
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp1_W); \
|
||||
\
|
||||
return op_pc + 1; \
|
||||
@@ -344,7 +344,7 @@ ropFUCOMPP(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t f
|
||||
codegen_check_seg_read(block, ir, target_seg); \
|
||||
load_uop(ir, IREG_temp0_D, ireg_seg_base(target_seg), IREG_eaaddr); \
|
||||
uop_FCOM(ir, IREG_temp1_W, IREG_ST(0), IREG_temp0_D); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3)); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3)); \
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp1_W); \
|
||||
fpu_POP(block, ir); \
|
||||
\
|
||||
@@ -460,7 +460,7 @@ ropF_arith_mem(d, uop_MEM_LOAD_DOUBLE)
|
||||
uop_MEM_LOAD_REG(ir, temp_reg, ireg_seg_base(target_seg), IREG_eaaddr); \
|
||||
uop_MOV_DOUBLE_INT(ir, IREG_temp0_D, temp_reg); \
|
||||
uop_FCOM(ir, IREG_temp1_W, IREG_ST(0), IREG_temp0_D); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3)); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3)); \
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp1_W); \
|
||||
\
|
||||
return op_pc + 1; \
|
||||
@@ -477,7 +477,7 @@ ropF_arith_mem(d, uop_MEM_LOAD_DOUBLE)
|
||||
uop_MEM_LOAD_REG(ir, temp_reg, ireg_seg_base(target_seg), IREG_eaaddr); \
|
||||
uop_MOV_DOUBLE_INT(ir, IREG_temp0_D, temp_reg); \
|
||||
uop_FCOM(ir, IREG_temp1_W, IREG_ST(0), IREG_temp0_D); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3)); \
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3)); \
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp1_W); \
|
||||
fpu_POP(block, ir); \
|
||||
\
|
||||
@@ -600,7 +600,7 @@ ropFTST(UNUSED(codeblock_t *block), ir_data_t *ir, UNUSED(uint8_t opcode), uint3
|
||||
{
|
||||
uop_FP_ENTER(ir);
|
||||
uop_FTST(ir, IREG_temp0_W, IREG_ST(0));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(C0 | C2 | C3));
|
||||
uop_AND_IMM(ir, IREG_NPXS, IREG_NPXS, ~(FPU_SW_C0 | FPU_SW_C2 | FPU_SW_C3));
|
||||
uop_OR(ir, IREG_NPXS, IREG_NPXS, IREG_temp0_W);
|
||||
|
||||
return op_pc;
|
||||
|
||||
Reference in New Issue
Block a user