Disable unrolling for now
This commit is contained in:
@@ -114,6 +114,7 @@ int codegen_can_unroll_full(codeblock_t *block, ir_data_t *ir, uint32_t next_pc,
|
|||||||
static inline int
|
static inline int
|
||||||
codegen_can_unroll(codeblock_t *block, ir_data_t *ir, uint32_t next_pc, uint32_t dest_addr)
|
codegen_can_unroll(codeblock_t *block, ir_data_t *ir, uint32_t next_pc, uint32_t dest_addr)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
if (block->flags & CODEBLOCK_BYTE_MASK)
|
if (block->flags & CODEBLOCK_BYTE_MASK)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
#include "codegen_ops_mmx_arith.h"
|
#include "codegen_ops_mmx_arith.h"
|
||||||
#include "codegen_ops_helpers.h"
|
#include "codegen_ops_helpers.h"
|
||||||
|
|
||||||
extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|
||||||
|
|
||||||
#define ropParith(func) \
|
#define ropParith(func) \
|
||||||
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
||||||
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
||||||
@@ -39,9 +37,6 @@ extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|||||||
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__); \
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat); \
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx); \
|
|
||||||
return op_pc + 1; \
|
return op_pc + 1; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
#include "codegen_ops_mmx_cmp.h"
|
#include "codegen_ops_mmx_cmp.h"
|
||||||
#include "codegen_ops_helpers.h"
|
#include "codegen_ops_helpers.h"
|
||||||
|
|
||||||
extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|
||||||
|
|
||||||
#define ropPcmp(func) \
|
#define ropPcmp(func) \
|
||||||
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
||||||
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
||||||
@@ -39,9 +37,6 @@ extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|||||||
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__); \
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat); \
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx); \
|
|
||||||
return op_pc + 1; \
|
return op_pc + 1; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ ropMOVD_r_d(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
uop_MOVZX(ir, IREG_MM(dest_reg), IREG_temp0);
|
uop_MOVZX(ir, IREG_MM(dest_reg), IREG_temp0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
uint32_t
|
uint32_t
|
||||||
@@ -67,9 +64,6 @@ ropMOVD_d_r(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
uop_MEM_STORE_REG(ir, ireg_seg_base(target_seg), IREG_eaaddr, IREG_temp0);
|
uop_MEM_STORE_REG(ir, ireg_seg_base(target_seg), IREG_eaaddr, IREG_temp0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,9 +86,6 @@ ropMOVQ_r_q(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
uop_MEM_LOAD_REG(ir, IREG_MM(dest_reg), ireg_seg_base(target_seg), IREG_eaaddr);
|
uop_MEM_LOAD_REG(ir, IREG_MM(dest_reg), ireg_seg_base(target_seg), IREG_eaaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,8 +109,5 @@ ropMOVQ_q_r(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
uop_MEM_STORE_REG(ir, ireg_seg_base(target_seg), IREG_eaaddr, IREG_MM(src_reg));
|
uop_MEM_STORE_REG(ir, ireg_seg_base(target_seg), IREG_eaaddr, IREG_MM(src_reg));
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,6 @@ ropPAND(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fetc
|
|||||||
uop_AND(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
uop_AND(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
uint32_t
|
uint32_t
|
||||||
@@ -61,8 +59,6 @@ ropPANDN(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fet
|
|||||||
uop_ANDN(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
uop_ANDN(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
uint32_t
|
uint32_t
|
||||||
@@ -85,8 +81,6 @@ ropPOR(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fetch
|
|||||||
uop_OR(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
uop_OR(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
uint32_t
|
uint32_t
|
||||||
@@ -109,8 +103,5 @@ ropPXOR(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fetc
|
|||||||
uop_XOR(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
uop_XOR(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q);
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
return op_pc + 1;
|
return op_pc + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
#include "codegen_ops_mmx_pack.h"
|
#include "codegen_ops_mmx_pack.h"
|
||||||
#include "codegen_ops_helpers.h"
|
#include "codegen_ops_helpers.h"
|
||||||
|
|
||||||
extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|
||||||
#define ropPpack(func) \
|
#define ropPpack(func) \
|
||||||
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
uint32_t rop##func(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), \
|
||||||
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
uint32_t fetchdat, uint32_t op_32, uint32_t op_pc) \
|
||||||
@@ -38,9 +37,6 @@ extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|||||||
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
uop_##func(ir, IREG_MM(dest_reg), IREG_MM(dest_reg), IREG_temp0_Q); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__); \
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat); \
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx); \
|
|
||||||
return op_pc + 1; \
|
return op_pc + 1; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
#include "codegen_ops_mmx_shift.h"
|
#include "codegen_ops_mmx_shift.h"
|
||||||
#include "codegen_ops_helpers.h"
|
#include "codegen_ops_helpers.h"
|
||||||
|
|
||||||
extern void codegen_print_mmx(const char* str, uint32_t fetchdat);
|
|
||||||
uint32_t
|
uint32_t
|
||||||
ropPSxxW_imm(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fetchdat, UNUSED(uint32_t op_32), uint32_t op_pc)
|
ropPSxxW_imm(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t fetchdat, UNUSED(uint32_t op_32), uint32_t op_pc)
|
||||||
{
|
{
|
||||||
@@ -40,9 +39,6 @@ ropPSxxW_imm(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
||||||
return op_pc + 2;
|
return op_pc + 2;
|
||||||
}
|
}
|
||||||
@@ -69,9 +65,6 @@ ropPSxxD_imm(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
||||||
return op_pc + 2;
|
return op_pc + 2;
|
||||||
}
|
}
|
||||||
@@ -98,9 +91,6 @@ ropPSxxQ_imm(codeblock_t *block, ir_data_t *ir, UNUSED(uint8_t opcode), uint32_t
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, (uintptr_t)__func__);
|
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 1, fetchdat);
|
|
||||||
uop_CALL_FUNC(ir, codegen_print_mmx);
|
|
||||||
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
codegen_mark_code_present(block, cs + op_pc + 1, 1);
|
||||||
return op_pc + 2;
|
return op_pc + 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ static const uint8_t native_requested_sizes[9][8] =
|
|||||||
[REG_DOUBLE][IREG_SIZE_Q >> IREG_SIZE_SHIFT] = 1,
|
[REG_DOUBLE][IREG_SIZE_Q >> IREG_SIZE_SHIFT] = 1,
|
||||||
[REG_FPU_ST_DOUBLE][IREG_SIZE_Q >> IREG_SIZE_SHIFT] = 1,
|
[REG_FPU_ST_DOUBLE][IREG_SIZE_Q >> IREG_SIZE_SHIFT] = 1,
|
||||||
|
|
||||||
[REG_POINTER][(sizeof(void *) == 4) ? (IREG_SIZE_L >> IREG_SIZE_SHIFT) : (IREG_SIZE_Q >> IREG_SIZE_SHIFT)] = 1
|
[REG_POINTER][IREG_SIZE_Q >> IREG_SIZE_SHIFT] = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user