#include "level_base_with_ia32_ins.H"
#include "level_core_with_ia32_ins.H"
#include <vector>
#include <map>
|
#define | LOG_INS_REUSE(message) QMESSAGE(MessageTypeLogInsReuse, string("insReuse: ") + message) |
|
|
typedef vector< ADDRINT > | LEVEL_CORE::INS_REUSER_ID_VEC |
|
typedef ADDRINT | LEVEL_CORE::INS_REUSER_HANDLE |
|
typedef ADDRINT | LEVEL_CORE::INS_REUSER_STORE_HANDLE |
|
|
enum | INS_REUSER_TYPE {
INS_REUSER_TYPE_FIRST,
INS_REUSER_TYPE_YMM_INSERT_OP = INS_REUSER_TYPE_FIRST,
INS_REUSER_TYPE_LOAD_MEM_OP,
INS_REUSER_TYPE_STORE_MEM_OP,
INS_REUSER_TYPE_REG_REG_OP,
INS_REUSER_TYPE_REG_IMM_OP,
INS_REUSER_TYPE_REG_OP,
INS_REUSER_TYPE_SDISP_OP,
INS_REUSER_TYPE_IMM_OP,
INS_REUSER_TYPE_NO_REG_OP,
INS_REUSER_TYPE_VZEROUPPER,
INS_REUSER_TYPE_MEM_IMM_OP,
INS_REUSER_TYPE_CHANGE_TO_IMM_OP,
INS_REUSER_TYPE_SIZED_NOP,
INS_REUSER_TYPE_MM_LOAD,
INS_REUSER_TYPE_MM_STORE,
INS_REUSER_TYPE_MM_REG_REG_OP,
INS_REUSER_TYPE_YMM_REG_OP,
INS_REUSER_TYPE_YMM_REG_REG_REG_OP,
INS_REUSER_TYPE_RET_IMM,
INS_REUSER_TYPE_WIDTH_REG_IMM_OP,
INS_REUSER_TYPE_REG_WORD_REG_BYTE_OP,
INS_REUSER_TYPE_REG_WIDTH_REG_OP,
INS_REUSER_TYPE_LAST
} |
|
|
LOCALVAR MESSAGE_TYPE | LEVEL_CORE::MessageTypeLogInsReuse ("log_ins_reuse","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: ins_reusing") |
|
INS_REUSERS_MANAGER & | LEVEL_CORE::InsReusersManager () |
|
KNOB< BOOL > | LEVEL_CORE::KnobUseInsReusing (KNOB_MODE_WRITEONCE,"supported:regalloc","ins_reusing", KNOB_ONLY_OFF_MIC,"Enable ins reusing") |
|
LOCALVAR STAT_NORM | LEVEL_CORE::StatInReusingStoreBytes ("mem","bytes","ins_reusing","",&StatRawMmapBytes) |
|
|
LOCALVAR string | LEVEL_CORE::reuserTypeStr [] |
|
Contains the management of ins reuse - i.e. the reuse of already created inss when a new ins is generated. This functionality is used in the base INS_Init* functions in ins_initis_api_xed_ia32.cpp.