lestes::md::instructions Namespace Reference


Classes

class  execution_info
 Holds information related to target machine instruction's execution characteristics. More...
class  instruction_group_base
 Represents a group of instructions that perform the same operation but they differ in type or kind of operands or execution background (used register, execution units ). More...
class  pi_operand2ge_operand_base
 Provides a way to convert pi_operand instance to corresponding ge_operand. More...
class  pi_pi2ge_pi_base
 Visitor that converts pi_pi instance to a corresponding list of ge_pi pseudoinstructions. More...
class  pi_pi2ge_pi_template_base
 A template that represents possible conversion from a pi_pi pseudoinstruction to a list of ge_pi pseudoinstructions. More...
class  tm_instr_base
 A description of target machine instruction. More...
class  tm_instr_op_base
 Operand of tm_instr instruction. More...
class  tm_instr_op_mem_base
 Memory operand. More...
class  tm_instr_op_reg_base
 Register operand. More...
class  tm_instr_op_imm_base
 Immediate operand. More...
class  instruction_group
class  pi_operand2ge_operand
class  pi_pi2ge_pi
class  pi_pi2ge_pi_template
class  tm_instr
class  tm_instr_op_mem
class  tm_instr_op_reg
class  tm_instr_op_imm

Typedefs

typedef map< srp< pi_operand >,
srp< ge_operand > > 
pi_op2ge_op__type
typedef list< ulint > ulint_list__type
typedef vector< ulint > ulint_vector__type
typedef set< ulint > ulint_set__type
typedef map< ulint, srp< tm_instr_op_base > > ulint2tm_instr_op_base__type
typedef map< ulint, ulint > ulint2ulint__type
typedef list< srp< instruction_group_base > > instruction_group_base_list__type
typedef vector< srp< tm_instr_op_base > > tm_instr_op_base_vector__type
typedef vector< srp< ge_operand > > ge_operand_vector__type
typedef vector< srp< ge_pi > > ge_pi_vector__type
typedef set< srp< ge_pi > > ge_pi_set__type
typedef vector< srp< ge_sp > > ge_sp_vector__type
typedef vector< srp< pi_sp > > pi_sp_vector__type
typedef map< ulint, srp< ge_operand > > ulint2ge_operand__type
typedef map< srp< pi_operand >,
srp< ge_operand > > 
pi_op2ge_op__type
typedef map< srp< pi_sp >,
srp< ge_sp > > 
pi_sp2ge_sp__type
typedef map< ulint, lstring > ulint2lstring__type
typedef list< srp< pi_mem > > pi_mem_list__type
typedef list< srp< pi_operand > > pi_operand_list__type
typedef vector< srp< ::lestes::backend_v2::intercode::ge_pi > > ge_pi_vector__type
typedef vector< srp< ge_pi > > ge_pi_vector__type
typedef set< srp< ge_pi > > ge_pi_set__type

Enumerations

enum  intr_flag_type {
  IF_JUMP = 1, IF_LOAD = 2, IF_STORE = 4, IF_SYS = 8,
  IF_COPY = 16
}
 tm_instr_base flags. More...
enum  instruction_template_operand_pid_type {
  PIN_1, PIN_2, PIN_3, PIN_4,
  POUT_1, POUT_2, POUT_3, POUT_4,
  ADD_O_2, SUB_O_2, MUL_O_2, MUL_O_3,
  CBW_O_1, DIV_O_2, DIV_O_3, CWD_O_1,
  CWD_O_2, NULL_O_1, DIV_O_1, NEG_O_2,
  CVT_O_1, SHL_O_2, SHR_O_2, SAL_O_2,
  SAR_O_2, AND_O_2, OR_O_2, XOR_O_2,
  CMP_O_1, AND_O_1, LAHF_O_1, MOV_O_1,
  IROPT_TERMINATOR
}
 Operand ids within instruction templates. More...
enum  pi_pi2ge_template_id_type {
  TEM_ADD_1, TEM_SUB_1, TEM_MUL_1, TEM_MUL_2,
  TEM_DIV_1, TEM_DIV_2, TEM_DIV_3, TEM_MOD_1,
  TEM_MOD_2, TEM_MOD_3, TEM_REM_1, TEM_REM_2,
  TEM_REM_3, TEM_NEG_1, TEM_GAT_1, TEM_SHL_1,
  TEM_SHR_1, TEM_SAL_1, TEM_SAR_1, TEM_BAND_1,
  TEM_BOR_1, TEM_BXOR_1, TEM_BNOT_1, TEM_LAND_1,
  TEM_LOR_1, TEM_LXOR_1, TEM_LNOT_1, TEM_CVT_1,
  TEM_CVT_2, TEM_CVT_3, TEM_MOV_1, TEM_ST_1,
  TEM_STV_1, TEM_STI_1, TEM_STIV_1, TEM_STP_1,
  TEM_STPV_1, TEM_LD_1, TEM_LDV_1, TEM_LDI_1,
  TEM_LDP_1, TEM_LDPV_1, TEM_LDA_1, TEM_CMP_1,
  TEM_BA_1, TEM_BN_1, TEM_BT_1, TEM_BF_1,
  TEM_BG_1, TEM_BL_1, TEM_BE_1, TEM_BNG_1,
  TEM_BNL_1, TEM_BNE_1, TEM_SBG_1, TEM_SBL_1,
  TEM_SBE_1, TEM_SBNG_1, TEM_SBNL_1, TEM_SBNE_1,
  TEM_REGISTER_MOVE_1, TEM_REGISTER_MOVE_2, TEM_REGISTER_MOVE_3, TEM_REGISTER_MOVE_4,
  TEM_REGISTER_MOVE_5
}
 Ids of pi_pi2ge_pi_templates. More...
enum  tm_instr_id_type {
  NO_INSTRUCTION_ID, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3,
  INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71,
  INSTRUCTION_MOV__8, INSTRUCTION_SYSMOV__9, INSTRUCTION_SYSMOV__10, INSTRUCTION_SYSMOV__11,
  INSTRUCTION_SAHF__1, INSTRUCTION_LAHF__1, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11,
  INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, INSTRUCTION_SUB__1,
  INSTRUCTION_SUB__11, INSTRUCTION_SUB__12, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2,
  INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24,
  INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2,
  INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31,
  INSTRUCTION_MUL__32, INSTRUCTION_CBW__1, INSTRUCTION_CWD__1, INSTRUCTION_CDQ__1,
  INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21,
  INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, INSTRUCTION_NULLAH__1, INSTRUCTION_NULLDX__1,
  INSTRUCTION_NULLEDX__1, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2,
  INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, INSTRUCTION_NEG__1,
  INSTRUCTION_SHL__1, INSTRUCTION_SHR__1, INSTRUCTION_SAL__1, INSTRUCTION_SAR__1,
  INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13,
  INSTRUCTION_AND__14, INSTRUCTION_AND__2, INSTRUCTION_OR__1, INSTRUCTION_OR__11,
  INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, INSTRUCTION_XOR__1,
  INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14,
  INSTRUCTION_XOR__2, INSTRUCTION_NOT__1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__5,
  INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2,
  INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6,
  INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21,
  INSTRUCTION_LEA__1, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21,
  INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, INSTRUCTION_JMP__1,
  INSTRUCTION_JA__1, INSTRUCTION_JZ__1, INSTRUCTION_JG__1, INSTRUCTION_JL__1,
  INSTRUCTION_JB__1, INSTRUCTION_JE__1, INSTRUCTION_JNG__1, INSTRUCTION_JNA__1,
  INSTRUCTION_JNL__1, INSTRUCTION_JNB__1, INSTRUCTION_JNE__1, INSTRUCTION_SETG__1,
  INSTRUCTION_SETA__1, INSTRUCTION_SETL__1, INSTRUCTION_SETB__1, INSTRUCTION_SETE__1,
  INSTRUCTION_SETNG__1, INSTRUCTION_SETNA__1, INSTRUCTION_SETNL__1, INSTRUCTION_SETNB__1,
  INSTRUCTION_SETNE__1, INSTRUCTION_SETNZ__1, INSTRUCTION_PUSH__1, INSTRUCTION_PUSH__2,
  INSTRUCTION_PUSH__3, INSTRUCTION_POP__1, INSTRUCTION_NOP__1, INSTRUCTION_ESPADD__1,
  INSTRUCTION_BACKUPESP__1, INSTRUCTION_CALL__1, INSTRUCTION_PROLOGUE__1, INSTRUCTION_EPILOGUE__1,
  INSTRUCTION_LEAVE__1, INSTRUCTION_RET__1, TIIT_TERMINATOR
}
 Ids of target machine instructions. More...
enum  tm_instr_op_id_type {
  NO_OPERAND_ID, I_1, I_2, I_3,
  I_4, I_5, I_6, I_7,
  I_8, I_9, O_1, O_2,
  O_3, O_4, O_5, O_6,
  O_7, O_8, O_9, TIOIT_TERMINATOR
}
 Id of instruction operand. More...
enum  tm_instr_property_key_type { NO_PROPERTY_KEY, PROPERTY_TEST_SIGNED, TIPKT_TERMINATOR }
 Ids of user defined properties. More...

Functions

 declare_logger (log1)
 initialize_logger (log1,"pi_pi2ge_pi_base", md_logger)
 declare_logger (log)
 initialize_logger (log,"pi_pi2ge_pi", md_logger)
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_ADD_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SUB_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MUL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MUL_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_DIV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_DIV_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_DIV_3 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MOD_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MOD_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MOD_3 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REM_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REM_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REM_3 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_NEG_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_GAT_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SHL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SHR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SAL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SAR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BAND_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BOR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BXOR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BNOT_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LAND_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LOR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LXOR_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LNOT_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_CVT_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_CVT_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_CVT_3 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_MOV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_ST_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_STV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_STI_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_STIV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_STP_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_STPV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LD_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LDV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LDI_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LDP_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LDPV_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_LDA_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_CMP_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BA_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BN_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BT_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BF_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BG_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BE_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BNG_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BNL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_BNE_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBG_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBE_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBNG_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBNL_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_SBNE_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_1 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_2 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_3 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_4 ()
ptr< pi_pi2ge_pi_templatepi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_5 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__4 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__5 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__7 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__71 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOV__8 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SYSMOV__9 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SYSMOV__10 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SYSMOV__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SAHF__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_LAHF__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ADD__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ADD__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ADD__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ADD__13 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ADD__14 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SUB__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SUB__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SUB__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__22 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__23 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IMUL__24 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__22 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__31 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MUL__32 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CBW__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CWD__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CDQ__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_DIV__31 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NULLAH__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NULLDX__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NULLEDX__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_IDIV__31 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NEG__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SHL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SHR__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SAL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SAR__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__13 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__14 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_AND__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_OR__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_OR__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_OR__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_OR__13 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_OR__14 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__12 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__13 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__14 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_XOR__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NOT__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CONVERT__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CONVERT__5 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CONVERT__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CONVERT__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__4 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__5 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVZX__6 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVSX__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVSX__11 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVSX__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_MOVSX__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_LEA__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__21 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__22 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__23 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CMP__24 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JMP__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JA__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JZ__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JG__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JB__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JNG__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JNA__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JNL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JNB__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_JNE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETG__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETA__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETB__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNG__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNA__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNB__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_SETNZ__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_PUSH__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_PUSH__2 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_PUSH__3 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_POP__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_NOP__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_ESPADD__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_BACKUPESP__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_CALL__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_PROLOGUE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_EPILOGUE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_LEAVE__1 ()
ptr< tm_instrtm_instr_create_INSTRUCTION_RET__1 ()


Typedef Documentation

typedef vector< srp < ge_operand > > lestes::md::instructions::ge_operand_vector__type

Definition at line 35 of file pi_pi2ge_pi_base.cc.

typedef set< srp < ge_pi > > lestes::md::instructions::ge_pi_set__type

Definition at line 37 of file pi_pi2ge_pi.cc.

typedef set< srp < ge_pi > > lestes::md::instructions::ge_pi_set__type

Definition at line 37 of file pi_pi2ge_pi_base.cc.

typedef vector< srp < ge_pi > > lestes::md::instructions::ge_pi_vector__type

Definition at line 36 of file pi_pi2ge_pi.cc.

typedef vector< srp< ::lestes::backend_v2::intercode::ge_pi> > lestes::md::instructions::ge_pi_vector__type

Definition at line 35 of file pi_pi2ge_pi.cc.

typedef vector< srp < ge_pi > > lestes::md::instructions::ge_pi_vector__type

Definition at line 36 of file pi_pi2ge_pi_base.cc.

typedef vector< srp < ge_sp > > lestes::md::instructions::ge_sp_vector__type

Definition at line 38 of file pi_pi2ge_pi_base.cc.

typedef list< srp < instruction_group_base > > lestes::md::instructions::instruction_group_base_list__type

Definition at line 33 of file pi_pi2ge_pi_base.cc.

typedef list< srp<pi_mem> > lestes::md::instructions::pi_mem_list__type

Definition at line 33 of file pi_pi2ge_pi.cc.

typedef map< srp<pi_operand>, srp<ge_operand> > lestes::md::instructions::pi_op2ge_op__type

Definition at line 41 of file pi_pi2ge_pi_base.cc.

typedef map< srp<pi_operand>, srp<ge_operand> > lestes::md::instructions::pi_op2ge_op__type

Definition at line 17 of file pi_operand2ge_operand_base.cc.

typedef list< srp<pi_operand> > lestes::md::instructions::pi_operand_list__type

Definition at line 34 of file pi_pi2ge_pi.cc.

typedef map< srp<pi_sp>, srp<ge_sp> > lestes::md::instructions::pi_sp2ge_sp__type

Definition at line 42 of file pi_pi2ge_pi_base.cc.

typedef vector< srp < pi_sp > > lestes::md::instructions::pi_sp_vector__type

Definition at line 39 of file pi_pi2ge_pi_base.cc.

typedef vector< srp < tm_instr_op_base > > lestes::md::instructions::tm_instr_op_base_vector__type

Definition at line 34 of file pi_pi2ge_pi_base.cc.

typedef map< ulint, srp<ge_operand> > lestes::md::instructions::ulint2ge_operand__type

Definition at line 40 of file pi_pi2ge_pi_base.cc.

typedef map<ulint,lstring> lestes::md::instructions::ulint2lstring__type

Definition at line 32 of file pi_pi2ge_pi.cc.

typedef map< ulint, srp<tm_instr_op_base> > lestes::md::instructions::ulint2tm_instr_op_base__type

Definition at line 31 of file pi_pi2ge_pi_base.cc.

typedef map< ulint, ulint > lestes::md::instructions::ulint2ulint__type

Definition at line 32 of file pi_pi2ge_pi_base.cc.

typedef list< ulint > lestes::md::instructions::ulint_list__type

Definition at line 28 of file pi_pi2ge_pi_base.cc.

typedef set< ulint > lestes::md::instructions::ulint_set__type

Definition at line 30 of file pi_pi2ge_pi_base.cc.

typedef vector< ulint > lestes::md::instructions::ulint_vector__type

Definition at line 29 of file pi_pi2ge_pi_base.cc.


Enumeration Type Documentation

enum lestes::md::instructions::instruction_template_operand_pid_type

Operand ids within instruction templates.

PIN_X id represents input operands that template receives from source pi-level pseudoinstruction. POUT_X id represents output operand that template receives from source pi-level pseudoinstruction. The rest of ids are operands defined and passed among ge-level pseudoinstructions within the template itself.

Enumerator:
PIN_1 
PIN_2 
PIN_3 
PIN_4 
POUT_1 
POUT_2 
POUT_3 
POUT_4 
ADD_O_2 
SUB_O_2 
MUL_O_2 
MUL_O_3 
CBW_O_1 
DIV_O_2 
DIV_O_3 
CWD_O_1 
CWD_O_2 
NULL_O_1 
DIV_O_1 
NEG_O_2 
CVT_O_1 
SHL_O_2 
SHR_O_2 
SAL_O_2 
SAR_O_2 
AND_O_2 
OR_O_2 
XOR_O_2 
CMP_O_1 
AND_O_1 
LAHF_O_1 
MOV_O_1 
IROPT_TERMINATOR 

Definition at line 24 of file instruction_group.mdg.hh.

00024                                            {
00025         PIN_1,
00026         PIN_2,
00027         PIN_3,
00028         PIN_4,
00029         POUT_1,
00030         POUT_2,
00031         POUT_3,
00032         POUT_4,
00033         ADD_O_2,
00034         SUB_O_2,
00035         MUL_O_2,
00036         MUL_O_3,
00037         CBW_O_1,
00038         DIV_O_2,
00039         DIV_O_3,
00040         CWD_O_1,
00041         CWD_O_2,
00042         NULL_O_1,
00043         DIV_O_1,
00044         NEG_O_2,
00045         CVT_O_1,
00046         SHL_O_2,
00047         SHR_O_2,
00048         SAL_O_2,
00049         SAR_O_2,
00050         AND_O_2,
00051         OR_O_2,
00052         XOR_O_2,
00053         CMP_O_1,
00054         AND_O_1,
00055         LAHF_O_1,
00056         MOV_O_1,
00057         IROPT_TERMINATOR
00058 };

enum lestes::md::instructions::intr_flag_type

tm_instr_base flags.

Enumerator:
IF_JUMP 
IF_LOAD 
IF_STORE 
IF_SYS 
IF_COPY 

Definition at line 54 of file tm_instr_base.g.hh.

00054                     {
00055         IF_JUMP=1,
00056         IF_LOAD=2,
00057         IF_STORE=4,
00058         IF_SYS=8,
00059         IF_COPY=16
00060 };

enum lestes::md::instructions::pi_pi2ge_template_id_type

Ids of pi_pi2ge_pi_templates.

Enumerator:
TEM_ADD_1 
TEM_SUB_1 
TEM_MUL_1 
TEM_MUL_2 
TEM_DIV_1 
TEM_DIV_2 
TEM_DIV_3 
TEM_MOD_1 
TEM_MOD_2 
TEM_MOD_3 
TEM_REM_1 
TEM_REM_2 
TEM_REM_3 
TEM_NEG_1 
TEM_GAT_1 
TEM_SHL_1 
TEM_SHR_1 
TEM_SAL_1 
TEM_SAR_1 
TEM_BAND_1 
TEM_BOR_1 
TEM_BXOR_1 
TEM_BNOT_1 
TEM_LAND_1 
TEM_LOR_1 
TEM_LXOR_1 
TEM_LNOT_1 
TEM_CVT_1 
TEM_CVT_2 
TEM_CVT_3 
TEM_MOV_1 
TEM_ST_1 
TEM_STV_1 
TEM_STI_1 
TEM_STIV_1 
TEM_STP_1 
TEM_STPV_1 
TEM_LD_1 
TEM_LDV_1 
TEM_LDI_1 
TEM_LDP_1 
TEM_LDPV_1 
TEM_LDA_1 
TEM_CMP_1 
TEM_BA_1 
TEM_BN_1 
TEM_BT_1 
TEM_BF_1 
TEM_BG_1 
TEM_BL_1 
TEM_BE_1 
TEM_BNG_1 
TEM_BNL_1 
TEM_BNE_1 
TEM_SBG_1 
TEM_SBL_1 
TEM_SBE_1 
TEM_SBNG_1 
TEM_SBNL_1 
TEM_SBNE_1 
TEM_REGISTER_MOVE_1 
TEM_REGISTER_MOVE_2 
TEM_REGISTER_MOVE_3 
TEM_REGISTER_MOVE_4 
TEM_REGISTER_MOVE_5 

Definition at line 20 of file pi_pi2ge_pi_template.mdg.hh.

00020                                {
00021         TEM_ADD_1,      //0
00022         TEM_SUB_1,      //1
00023         TEM_MUL_1,      //2
00024         TEM_MUL_2,      //3
00025         TEM_DIV_1,      //4
00026         TEM_DIV_2,      //5
00027         TEM_DIV_3,      //6
00028         TEM_MOD_1,      //7
00029         TEM_MOD_2,      //8
00030         TEM_MOD_3,      //9
00031         TEM_REM_1,      //10
00032         TEM_REM_2,      //11
00033         TEM_REM_3,      //12
00034         TEM_NEG_1,      //13
00035         TEM_GAT_1,      //14
00036         TEM_SHL_1,      //15
00037         TEM_SHR_1,      //16
00038         TEM_SAL_1,      //17
00039         TEM_SAR_1,      //18
00040         TEM_BAND_1,     //19
00041         TEM_BOR_1,      //20
00042         TEM_BXOR_1,     //21
00043         TEM_BNOT_1,     //22
00044         TEM_LAND_1,     //23
00045         TEM_LOR_1,      //24
00046         TEM_LXOR_1,     //25
00047         TEM_LNOT_1,     //26
00048         TEM_CVT_1,      //27
00049         TEM_CVT_2,      //28
00050         TEM_CVT_3,      //29
00051         TEM_MOV_1,      //30
00052         TEM_ST_1,       //31
00053         TEM_STV_1,      //32
00054         TEM_STI_1,      //33
00055         TEM_STIV_1,     //34
00056         TEM_STP_1,      //35
00057         TEM_STPV_1,     //36
00058         TEM_LD_1,       //37
00059         TEM_LDV_1,      //38
00060         TEM_LDI_1,      //39
00061         TEM_LDP_1,      //40
00062         TEM_LDPV_1,     //41
00063         TEM_LDA_1,      //42
00064         TEM_CMP_1,      //43
00065         TEM_BA_1,       //44
00066         TEM_BN_1,       //45
00067         TEM_BT_1,       //46
00068         TEM_BF_1,       //47
00069         TEM_BG_1,       //48
00070         TEM_BL_1,       //49
00071         TEM_BE_1,       //50
00072         TEM_BNG_1,      //51
00073         TEM_BNL_1,      //52
00074         TEM_BNE_1,      //53
00075         TEM_SBG_1,      //54
00076         TEM_SBL_1,      //55
00077         TEM_SBE_1,      //56
00078         TEM_SBNG_1,     //57
00079         TEM_SBNL_1,     //58
00080         TEM_SBNE_1,     //59
00081         TEM_REGISTER_MOVE_1,    //60
00082         TEM_REGISTER_MOVE_2,    //61
00083         TEM_REGISTER_MOVE_3,    //62
00084         TEM_REGISTER_MOVE_4,    //63
00085         TEM_REGISTER_MOVE_5     //64
00086 };

enum lestes::md::instructions::tm_instr_id_type

Ids of target machine instructions.

Enumerator:
NO_INSTRUCTION_ID 
INSTRUCTION_MOV__1 
INSTRUCTION_MOV__2 
INSTRUCTION_MOV__3 
INSTRUCTION_MOV__4 
INSTRUCTION_MOV__5 
INSTRUCTION_MOV__7 
INSTRUCTION_MOV__71 
INSTRUCTION_MOV__8 
INSTRUCTION_SYSMOV__9 
INSTRUCTION_SYSMOV__10 
INSTRUCTION_SYSMOV__11 
INSTRUCTION_SAHF__1 
INSTRUCTION_LAHF__1 
INSTRUCTION_ADD__1 
INSTRUCTION_ADD__11 
INSTRUCTION_ADD__12 
INSTRUCTION_ADD__13 
INSTRUCTION_ADD__14 
INSTRUCTION_SUB__1 
INSTRUCTION_SUB__11 
INSTRUCTION_SUB__12 
INSTRUCTION_IMUL__1 
INSTRUCTION_IMUL__2 
INSTRUCTION_IMUL__21 
INSTRUCTION_IMUL__22 
INSTRUCTION_IMUL__23 
INSTRUCTION_IMUL__24 
INSTRUCTION_MUL__1 
INSTRUCTION_MUL__11 
INSTRUCTION_MUL__12 
INSTRUCTION_MUL__2 
INSTRUCTION_MUL__21 
INSTRUCTION_MUL__22 
INSTRUCTION_MUL__3 
INSTRUCTION_MUL__31 
INSTRUCTION_MUL__32 
INSTRUCTION_CBW__1 
INSTRUCTION_CWD__1 
INSTRUCTION_CDQ__1 
INSTRUCTION_DIV__1 
INSTRUCTION_DIV__11 
INSTRUCTION_DIV__2 
INSTRUCTION_DIV__21 
INSTRUCTION_DIV__3 
INSTRUCTION_DIV__31 
INSTRUCTION_NULLAH__1 
INSTRUCTION_NULLDX__1 
INSTRUCTION_NULLEDX__1 
INSTRUCTION_IDIV__1 
INSTRUCTION_IDIV__11 
INSTRUCTION_IDIV__2 
INSTRUCTION_IDIV__21 
INSTRUCTION_IDIV__3 
INSTRUCTION_IDIV__31 
INSTRUCTION_NEG__1 
INSTRUCTION_SHL__1 
INSTRUCTION_SHR__1 
INSTRUCTION_SAL__1 
INSTRUCTION_SAR__1 
INSTRUCTION_AND__1 
INSTRUCTION_AND__11 
INSTRUCTION_AND__12 
INSTRUCTION_AND__13 
INSTRUCTION_AND__14 
INSTRUCTION_AND__2 
INSTRUCTION_OR__1 
INSTRUCTION_OR__11 
INSTRUCTION_OR__12 
INSTRUCTION_OR__13 
INSTRUCTION_OR__14 
INSTRUCTION_XOR__1 
INSTRUCTION_XOR__11 
INSTRUCTION_XOR__12 
INSTRUCTION_XOR__13 
INSTRUCTION_XOR__14 
INSTRUCTION_XOR__2 
INSTRUCTION_NOT__1 
INSTRUCTION_CONVERT__1 
INSTRUCTION_CONVERT__5 
INSTRUCTION_CONVERT__2 
INSTRUCTION_CONVERT__3 
INSTRUCTION_MOVZX__1 
INSTRUCTION_MOVZX__2 
INSTRUCTION_MOVZX__3 
INSTRUCTION_MOVZX__4 
INSTRUCTION_MOVZX__5 
INSTRUCTION_MOVZX__6 
INSTRUCTION_MOVSX__1 
INSTRUCTION_MOVSX__11 
INSTRUCTION_MOVSX__2 
INSTRUCTION_MOVSX__21 
INSTRUCTION_LEA__1 
INSTRUCTION_CMP__1 
INSTRUCTION_CMP__2 
INSTRUCTION_CMP__21 
INSTRUCTION_CMP__22 
INSTRUCTION_CMP__23 
INSTRUCTION_CMP__24 
INSTRUCTION_JMP__1 
INSTRUCTION_JA__1 
INSTRUCTION_JZ__1 
INSTRUCTION_JG__1 
INSTRUCTION_JL__1 
INSTRUCTION_JB__1 
INSTRUCTION_JE__1 
INSTRUCTION_JNG__1 
INSTRUCTION_JNA__1 
INSTRUCTION_JNL__1 
INSTRUCTION_JNB__1 
INSTRUCTION_JNE__1 
INSTRUCTION_SETG__1 
INSTRUCTION_SETA__1 
INSTRUCTION_SETL__1 
INSTRUCTION_SETB__1 
INSTRUCTION_SETE__1 
INSTRUCTION_SETNG__1 
INSTRUCTION_SETNA__1 
INSTRUCTION_SETNL__1 
INSTRUCTION_SETNB__1 
INSTRUCTION_SETNE__1 
INSTRUCTION_SETNZ__1 
INSTRUCTION_PUSH__1 
INSTRUCTION_PUSH__2 
INSTRUCTION_PUSH__3 
INSTRUCTION_POP__1 
INSTRUCTION_NOP__1 
INSTRUCTION_ESPADD__1 
INSTRUCTION_BACKUPESP__1 
INSTRUCTION_CALL__1 
INSTRUCTION_PROLOGUE__1 
INSTRUCTION_EPILOGUE__1 
INSTRUCTION_LEAVE__1 
INSTRUCTION_RET__1 
TIIT_TERMINATOR 

Definition at line 21 of file tm_instr.mdg.hh.

00021                       {
00022         NO_INSTRUCTION_ID,
00023         INSTRUCTION_MOV__1,     //1
00024         INSTRUCTION_MOV__2,     //2
00025         INSTRUCTION_MOV__3,     //3
00026         INSTRUCTION_MOV__4,     //4
00027         INSTRUCTION_MOV__5,     //5
00028         INSTRUCTION_MOV__7,     //6
00029         INSTRUCTION_MOV__71,    //7
00030         INSTRUCTION_MOV__8,     //8
00031         INSTRUCTION_SYSMOV__9,  //9
00032         INSTRUCTION_SYSMOV__10, //10
00033         INSTRUCTION_SYSMOV__11, //11
00034         INSTRUCTION_SAHF__1,    //12
00035         INSTRUCTION_LAHF__1,    //13
00036         INSTRUCTION_ADD__1,     //14
00037         INSTRUCTION_ADD__11,    //15
00038         INSTRUCTION_ADD__12,    //16
00039         INSTRUCTION_ADD__13,    //17
00040         INSTRUCTION_ADD__14,    //18
00041         INSTRUCTION_SUB__1,     //19
00042         INSTRUCTION_SUB__11,    //20
00043         INSTRUCTION_SUB__12,    //21
00044         INSTRUCTION_IMUL__1,    //22
00045         INSTRUCTION_IMUL__2,    //23
00046         INSTRUCTION_IMUL__21,   //24
00047         INSTRUCTION_IMUL__22,   //25
00048         INSTRUCTION_IMUL__23,   //26
00049         INSTRUCTION_IMUL__24,   //27
00050         INSTRUCTION_MUL__1,     //28
00051         INSTRUCTION_MUL__11,    //29
00052         INSTRUCTION_MUL__12,    //30
00053         INSTRUCTION_MUL__2,     //31
00054         INSTRUCTION_MUL__21,    //32
00055         INSTRUCTION_MUL__22,    //33
00056         INSTRUCTION_MUL__3,     //34
00057         INSTRUCTION_MUL__31,    //35
00058         INSTRUCTION_MUL__32,    //36
00059         INSTRUCTION_CBW__1,     //37
00060         INSTRUCTION_CWD__1,     //38
00061         INSTRUCTION_CDQ__1,     //39
00062         INSTRUCTION_DIV__1,     //40
00063         INSTRUCTION_DIV__11,    //41
00064         INSTRUCTION_DIV__2,     //42
00065         INSTRUCTION_DIV__21,    //43
00066         INSTRUCTION_DIV__3,     //44
00067         INSTRUCTION_DIV__31,    //45
00068         INSTRUCTION_NULLAH__1,  //46
00069         INSTRUCTION_NULLDX__1,  //47
00070         INSTRUCTION_NULLEDX__1, //48
00071         INSTRUCTION_IDIV__1,    //49
00072         INSTRUCTION_IDIV__11,   //50
00073         INSTRUCTION_IDIV__2,    //51
00074         INSTRUCTION_IDIV__21,   //52
00075         INSTRUCTION_IDIV__3,    //53
00076         INSTRUCTION_IDIV__31,   //54
00077         INSTRUCTION_NEG__1,     //55
00078         INSTRUCTION_SHL__1,     //56
00079         INSTRUCTION_SHR__1,     //57
00080         INSTRUCTION_SAL__1,     //58
00081         INSTRUCTION_SAR__1,     //59
00082         INSTRUCTION_AND__1,     //60
00083         INSTRUCTION_AND__11,    //61
00084         INSTRUCTION_AND__12,    //62
00085         INSTRUCTION_AND__13,    //63
00086         INSTRUCTION_AND__14,    //64
00087         INSTRUCTION_AND__2,     //65
00088         INSTRUCTION_OR__1,      //66
00089         INSTRUCTION_OR__11,     //67
00090         INSTRUCTION_OR__12,     //68
00091         INSTRUCTION_OR__13,     //69
00092         INSTRUCTION_OR__14,     //70
00093         INSTRUCTION_XOR__1,     //71
00094         INSTRUCTION_XOR__11,    //72
00095         INSTRUCTION_XOR__12,    //73
00096         INSTRUCTION_XOR__13,    //74
00097         INSTRUCTION_XOR__14,    //75
00098         INSTRUCTION_XOR__2,     //76
00099         INSTRUCTION_NOT__1,     //77
00100         INSTRUCTION_CONVERT__1, //78
00101         INSTRUCTION_CONVERT__5, //79
00102         INSTRUCTION_CONVERT__2, //80
00103         INSTRUCTION_CONVERT__3, //81
00104         INSTRUCTION_MOVZX__1,   //82
00105         INSTRUCTION_MOVZX__2,   //83
00106         INSTRUCTION_MOVZX__3,   //84
00107         INSTRUCTION_MOVZX__4,   //85
00108         INSTRUCTION_MOVZX__5,   //86
00109         INSTRUCTION_MOVZX__6,   //87
00110         INSTRUCTION_MOVSX__1,   //88
00111         INSTRUCTION_MOVSX__11,  //89
00112         INSTRUCTION_MOVSX__2,   //90
00113         INSTRUCTION_MOVSX__21,  //91
00114         INSTRUCTION_LEA__1,     //92
00115         INSTRUCTION_CMP__1,     //93
00116         INSTRUCTION_CMP__2,     //94
00117         INSTRUCTION_CMP__21,    //95
00118         INSTRUCTION_CMP__22,    //96
00119         INSTRUCTION_CMP__23,    //97
00120         INSTRUCTION_CMP__24,    //98
00121         INSTRUCTION_JMP__1,     //99
00122         INSTRUCTION_JA__1,      //100
00123         INSTRUCTION_JZ__1,      //101
00124         INSTRUCTION_JG__1,      //102
00125         INSTRUCTION_JL__1,      //103
00126         INSTRUCTION_JB__1,      //104
00127         INSTRUCTION_JE__1,      //105
00128         INSTRUCTION_JNG__1,     //106
00129         INSTRUCTION_JNA__1,     //107
00130         INSTRUCTION_JNL__1,     //108
00131         INSTRUCTION_JNB__1,     //109
00132         INSTRUCTION_JNE__1,     //110
00133         INSTRUCTION_SETG__1,    //111
00134         INSTRUCTION_SETA__1,    //112
00135         INSTRUCTION_SETL__1,    //113
00136         INSTRUCTION_SETB__1,    //114
00137         INSTRUCTION_SETE__1,    //115
00138         INSTRUCTION_SETNG__1,   //116
00139         INSTRUCTION_SETNA__1,   //117
00140         INSTRUCTION_SETNL__1,   //118
00141         INSTRUCTION_SETNB__1,   //119
00142         INSTRUCTION_SETNE__1,   //120
00143         INSTRUCTION_SETNZ__1,   //121
00144         INSTRUCTION_PUSH__1,    //122
00145         INSTRUCTION_PUSH__2,    //123
00146         INSTRUCTION_PUSH__3,    //124
00147         INSTRUCTION_POP__1,     //125
00148         INSTRUCTION_NOP__1,     //126
00149         INSTRUCTION_ESPADD__1,  //127
00150         INSTRUCTION_BACKUPESP__1,       //128
00151         INSTRUCTION_CALL__1,    //129
00152         INSTRUCTION_PROLOGUE__1,        //130
00153         INSTRUCTION_EPILOGUE__1,        //131
00154         INSTRUCTION_LEAVE__1,   //132
00155         INSTRUCTION_RET__1,     //133
00156         TIIT_TERMINATOR 
00157 };

enum lestes::md::instructions::tm_instr_op_id_type

Id of instruction operand.

Operand is referenced by its id within instruction group.

Enumerator:
NO_OPERAND_ID 
I_1 
I_2 
I_3 
I_4 
I_5 
I_6 
I_7 
I_8 
I_9 
O_1 
O_2 
O_3 
O_4 
O_5 
O_6 
O_7 
O_8 
O_9 
TIOIT_TERMINATOR 

Definition at line 165 of file tm_instr.mdg.hh.

00165                          {
00166         NO_OPERAND_ID,
00167         I_1,
00168         I_2,
00169         I_3,
00170         I_4,
00171         I_5,
00172         I_6,
00173         I_7,
00174         I_8,
00175         I_9,
00176         O_1,
00177         O_2,
00178         O_3,
00179         O_4,
00180         O_5,
00181         O_6,
00182         O_7,
00183         O_8,
00184         O_9,
00185         TIOIT_TERMINATOR
00186 };

enum lestes::md::instructions::tm_instr_property_key_type

Ids of user defined properties.

Enumerator:
NO_PROPERTY_KEY 
PROPERTY_TEST_SIGNED 
TIPKT_TERMINATOR 

Definition at line 191 of file tm_instr.mdg.hh.

00191                                 {
00192         NO_PROPERTY_KEY,
00193         PROPERTY_TEST_SIGNED,
00194         TIPKT_TERMINATOR
00195 };


Function Documentation

lestes::md::instructions::declare_logger ( log   ) 

lestes::md::instructions::declare_logger ( log1   ) 

lestes::md::instructions::initialize_logger ( log  ,
"pi_pi2ge_pi"  ,
md_logger   
)

lestes::md::instructions::initialize_logger ( log1  ,
"pi_pi2ge_pi_base"  ,
md_logger   
)

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_ADD_1 (  ) 

Definition at line 16 of file pi_pi2ge_pi_template.mdg.cc.

References ADD_O_2, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, PIN_1, PIN_2, POUT_1, and TEM_ADD_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00016                                                                   {
00017         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00018 
00019         ptr<vector<ulint> > instrs;
00020         ptr<vector<ulint> > in_pids;
00021         ptr<vector<ulint> > out_pids;
00022         ptr<vector<ulint> > in_refs;
00023         ptr<vector<ulint> > out_refs;
00024         
00025         instrs = vector<ulint>::create();
00026         in_pids = vector<ulint>::create();
00027         out_pids = vector<ulint>::create();
00028         in_refs = vector<ulint>::create();
00029         out_refs = vector<ulint>::create();
00030 
00031         instrs->push_back(INSTRUCTION_ADD__1);
00032         instrs->push_back(INSTRUCTION_ADD__11);
00033         instrs->push_back(INSTRUCTION_ADD__12);
00034         instrs->push_back(INSTRUCTION_ADD__13);
00035         instrs->push_back(INSTRUCTION_ADD__14);
00036 
00037         //input operands
00038         in_pids->push_back(PIN_1);
00039         in_refs->push_back(I_1);
00040         in_pids->push_back(PIN_2);
00041         in_refs->push_back(I_2);
00042 
00043         //output operands
00044         out_pids->push_back(POUT_1);
00045         out_refs->push_back(O_1);
00046         out_pids->push_back(ADD_O_2);
00047         out_refs->push_back(O_2);
00048 
00049         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00050 
00051 
00052         return pi_pi2ge_pi_template::create(TEM_ADD_1,instr_patts);
00053 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BA_1 (  ) 

Definition at line 1834 of file pi_pi2ge_pi_template.mdg.cc.

References INSTRUCTION_JMP__1, and TEM_BA_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01834                                                                  {
01835         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01836 
01837         ptr<vector<ulint> > instrs;
01838         ptr<vector<ulint> > in_pids;
01839         ptr<vector<ulint> > out_pids;
01840         ptr<vector<ulint> > in_refs;
01841         ptr<vector<ulint> > out_refs;
01842         
01843         instrs = vector<ulint>::create();
01844         in_pids = vector<ulint>::create();
01845         out_pids = vector<ulint>::create();
01846         in_refs = vector<ulint>::create();
01847         out_refs = vector<ulint>::create();
01848 
01849         instrs->push_back(INSTRUCTION_JMP__1);
01850 
01851         //input operands
01852 
01853         //output operands
01854 
01855         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01856 
01857 
01858         return pi_pi2ge_pi_template::create(TEM_BA_1,instr_patts);
01859 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BAND_1 (  ) 

Definition at line 985 of file pi_pi2ge_pi_template.mdg.cc.

References AND_O_2, I_1, I_2, INSTRUCTION_AND__1, O_1, O_2, PIN_1, PIN_2, POUT_1, and TEM_BAND_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00985                                                                    {
00986         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00987 
00988         ptr<vector<ulint> > instrs;
00989         ptr<vector<ulint> > in_pids;
00990         ptr<vector<ulint> > out_pids;
00991         ptr<vector<ulint> > in_refs;
00992         ptr<vector<ulint> > out_refs;
00993         
00994         instrs = vector<ulint>::create();
00995         in_pids = vector<ulint>::create();
00996         out_pids = vector<ulint>::create();
00997         in_refs = vector<ulint>::create();
00998         out_refs = vector<ulint>::create();
00999 
01000         instrs->push_back(INSTRUCTION_AND__1);
01001 
01002         //input operands
01003         in_pids->push_back(PIN_1);
01004         in_refs->push_back(I_1);
01005         in_pids->push_back(PIN_2);
01006         in_refs->push_back(I_2);
01007 
01008         //output operands
01009         out_pids->push_back(POUT_1);
01010         out_refs->push_back(O_1);
01011         out_pids->push_back(AND_O_2);
01012         out_refs->push_back(O_2);
01013 
01014         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01015 
01016 
01017         return pi_pi2ge_pi_template::create(TEM_BAND_1,instr_patts);
01018 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BE_1 (  ) 

Definition at line 2044 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JE__1, PIN_1, and TEM_BE_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02044                                                                  {
02045         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02046 
02047         ptr<vector<ulint> > instrs;
02048         ptr<vector<ulint> > in_pids;
02049         ptr<vector<ulint> > out_pids;
02050         ptr<vector<ulint> > in_refs;
02051         ptr<vector<ulint> > out_refs;
02052         
02053         instrs = vector<ulint>::create();
02054         in_pids = vector<ulint>::create();
02055         out_pids = vector<ulint>::create();
02056         in_refs = vector<ulint>::create();
02057         out_refs = vector<ulint>::create();
02058 
02059         instrs->push_back(INSTRUCTION_JE__1);
02060 
02061         //input operands
02062         in_pids->push_back(PIN_1);
02063         in_refs->push_back(I_1);
02064 
02065         //output operands
02066 
02067         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02068 
02069 
02070         return pi_pi2ge_pi_template::create(TEM_BE_1,instr_patts);
02071 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BF_1 (  ) 

Definition at line 1936 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, INSTRUCTION_CMP__1, INSTRUCTION_JZ__1, O_1, PIN_1, and TEM_BF_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01936                                                                  {
01937         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01938 
01939         ptr<vector<ulint> > instrs;
01940         ptr<vector<ulint> > in_pids;
01941         ptr<vector<ulint> > out_pids;
01942         ptr<vector<ulint> > in_refs;
01943         ptr<vector<ulint> > out_refs;
01944         
01945         instrs = vector<ulint>::create();
01946         in_pids = vector<ulint>::create();
01947         out_pids = vector<ulint>::create();
01948         in_refs = vector<ulint>::create();
01949         out_refs = vector<ulint>::create();
01950 
01951         instrs->push_back(INSTRUCTION_CMP__1);
01952 
01953         //input operands
01954         in_pids->push_back(PIN_1);
01955         in_refs->push_back(I_1);
01956 
01957         //output operands
01958         out_pids->push_back(CMP_O_1);
01959         out_refs->push_back(O_1);
01960 
01961         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01962 
01963 
01964         instrs = vector<ulint>::create();
01965         in_pids = vector<ulint>::create();
01966         out_pids = vector<ulint>::create();
01967         in_refs = vector<ulint>::create();
01968         out_refs = vector<ulint>::create();
01969 
01970         instrs->push_back(INSTRUCTION_JZ__1);
01971 
01972         //input operands
01973         in_pids->push_back(CMP_O_1);
01974         in_refs->push_back(I_1);
01975 
01976         //output operands
01977 
01978         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01979 
01980 
01981         return pi_pi2ge_pi_template::create(TEM_BF_1,instr_patts);
01982 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BG_1 (  ) 

Definition at line 1984 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JA__1, INSTRUCTION_JG__1, PIN_1, and TEM_BG_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01984                                                                  {
01985         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01986 
01987         ptr<vector<ulint> > instrs;
01988         ptr<vector<ulint> > in_pids;
01989         ptr<vector<ulint> > out_pids;
01990         ptr<vector<ulint> > in_refs;
01991         ptr<vector<ulint> > out_refs;
01992         
01993         instrs = vector<ulint>::create();
01994         in_pids = vector<ulint>::create();
01995         out_pids = vector<ulint>::create();
01996         in_refs = vector<ulint>::create();
01997         out_refs = vector<ulint>::create();
01998 
01999         instrs->push_back(INSTRUCTION_JG__1);
02000         instrs->push_back(INSTRUCTION_JA__1);
02001 
02002         //input operands
02003         in_pids->push_back(PIN_1);
02004         in_refs->push_back(I_1);
02005 
02006         //output operands
02007 
02008         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02009 
02010 
02011         return pi_pi2ge_pi_template::create(TEM_BG_1,instr_patts);
02012 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BL_1 (  ) 

Definition at line 2014 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JB__1, INSTRUCTION_JL__1, PIN_1, and TEM_BL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02014                                                                  {
02015         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02016 
02017         ptr<vector<ulint> > instrs;
02018         ptr<vector<ulint> > in_pids;
02019         ptr<vector<ulint> > out_pids;
02020         ptr<vector<ulint> > in_refs;
02021         ptr<vector<ulint> > out_refs;
02022         
02023         instrs = vector<ulint>::create();
02024         in_pids = vector<ulint>::create();
02025         out_pids = vector<ulint>::create();
02026         in_refs = vector<ulint>::create();
02027         out_refs = vector<ulint>::create();
02028 
02029         instrs->push_back(INSTRUCTION_JL__1);
02030         instrs->push_back(INSTRUCTION_JB__1);
02031 
02032         //input operands
02033         in_pids->push_back(PIN_1);
02034         in_refs->push_back(I_1);
02035 
02036         //output operands
02037 
02038         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02039 
02040 
02041         return pi_pi2ge_pi_template::create(TEM_BL_1,instr_patts);
02042 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BN_1 (  ) 

Definition at line 1861 of file pi_pi2ge_pi_template.mdg.cc.

References INSTRUCTION_NOP__1, and TEM_BN_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01861                                                                  {
01862         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01863 
01864         ptr<vector<ulint> > instrs;
01865         ptr<vector<ulint> > in_pids;
01866         ptr<vector<ulint> > out_pids;
01867         ptr<vector<ulint> > in_refs;
01868         ptr<vector<ulint> > out_refs;
01869         
01870         instrs = vector<ulint>::create();
01871         in_pids = vector<ulint>::create();
01872         out_pids = vector<ulint>::create();
01873         in_refs = vector<ulint>::create();
01874         out_refs = vector<ulint>::create();
01875 
01876         instrs->push_back(INSTRUCTION_NOP__1);
01877 
01878         //input operands
01879 
01880         //output operands
01881 
01882         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01883 
01884 
01885         return pi_pi2ge_pi_template::create(TEM_BN_1,instr_patts);
01886 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BNE_1 (  ) 

Definition at line 2133 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JNE__1, PIN_1, and TEM_BNE_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02133                                                                   {
02134         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02135 
02136         ptr<vector<ulint> > instrs;
02137         ptr<vector<ulint> > in_pids;
02138         ptr<vector<ulint> > out_pids;
02139         ptr<vector<ulint> > in_refs;
02140         ptr<vector<ulint> > out_refs;
02141         
02142         instrs = vector<ulint>::create();
02143         in_pids = vector<ulint>::create();
02144         out_pids = vector<ulint>::create();
02145         in_refs = vector<ulint>::create();
02146         out_refs = vector<ulint>::create();
02147 
02148         instrs->push_back(INSTRUCTION_JNE__1);
02149 
02150         //input operands
02151         in_pids->push_back(PIN_1);
02152         in_refs->push_back(I_1);
02153 
02154         //output operands
02155 
02156         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02157 
02158 
02159         return pi_pi2ge_pi_template::create(TEM_BNE_1,instr_patts);
02160 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BNG_1 (  ) 

Definition at line 2073 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JNA__1, INSTRUCTION_JNG__1, PIN_1, and TEM_BNG_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02073                                                                   {
02074         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02075 
02076         ptr<vector<ulint> > instrs;
02077         ptr<vector<ulint> > in_pids;
02078         ptr<vector<ulint> > out_pids;
02079         ptr<vector<ulint> > in_refs;
02080         ptr<vector<ulint> > out_refs;
02081         
02082         instrs = vector<ulint>::create();
02083         in_pids = vector<ulint>::create();
02084         out_pids = vector<ulint>::create();
02085         in_refs = vector<ulint>::create();
02086         out_refs = vector<ulint>::create();
02087 
02088         instrs->push_back(INSTRUCTION_JNG__1);
02089         instrs->push_back(INSTRUCTION_JNA__1);
02090 
02091         //input operands
02092         in_pids->push_back(PIN_1);
02093         in_refs->push_back(I_1);
02094 
02095         //output operands
02096 
02097         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02098 
02099 
02100         return pi_pi2ge_pi_template::create(TEM_BNG_1,instr_patts);
02101 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BNL_1 (  ) 

Definition at line 2103 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_JNB__1, INSTRUCTION_JNL__1, PIN_1, and TEM_BNL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02103                                                                   {
02104         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02105 
02106         ptr<vector<ulint> > instrs;
02107         ptr<vector<ulint> > in_pids;
02108         ptr<vector<ulint> > out_pids;
02109         ptr<vector<ulint> > in_refs;
02110         ptr<vector<ulint> > out_refs;
02111         
02112         instrs = vector<ulint>::create();
02113         in_pids = vector<ulint>::create();
02114         out_pids = vector<ulint>::create();
02115         in_refs = vector<ulint>::create();
02116         out_refs = vector<ulint>::create();
02117 
02118         instrs->push_back(INSTRUCTION_JNL__1);
02119         instrs->push_back(INSTRUCTION_JNB__1);
02120 
02121         //input operands
02122         in_pids->push_back(PIN_1);
02123         in_refs->push_back(I_1);
02124 
02125         //output operands
02126 
02127         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02128 
02129 
02130         return pi_pi2ge_pi_template::create(TEM_BNL_1,instr_patts);
02131 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BNOT_1 (  ) 

Definition at line 1090 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_NOT__1, O_1, PIN_1, POUT_1, and TEM_BNOT_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01090                                                                    {
01091         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01092 
01093         ptr<vector<ulint> > instrs;
01094         ptr<vector<ulint> > in_pids;
01095         ptr<vector<ulint> > out_pids;
01096         ptr<vector<ulint> > in_refs;
01097         ptr<vector<ulint> > out_refs;
01098         
01099         instrs = vector<ulint>::create();
01100         in_pids = vector<ulint>::create();
01101         out_pids = vector<ulint>::create();
01102         in_refs = vector<ulint>::create();
01103         out_refs = vector<ulint>::create();
01104 
01105         instrs->push_back(INSTRUCTION_NOT__1);
01106 
01107         //input operands
01108         in_pids->push_back(PIN_1);
01109         in_refs->push_back(I_1);
01110 
01111         //output operands
01112         out_pids->push_back(POUT_1);
01113         out_refs->push_back(O_1);
01114 
01115         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01116 
01117 
01118         return pi_pi2ge_pi_template::create(TEM_BNOT_1,instr_patts);
01119 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BOR_1 (  ) 

Definition at line 1020 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_OR__1, O_1, O_2, OR_O_2, PIN_1, PIN_2, POUT_1, and TEM_BOR_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01020                                                                   {
01021         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01022 
01023         ptr<vector<ulint> > instrs;
01024         ptr<vector<ulint> > in_pids;
01025         ptr<vector<ulint> > out_pids;
01026         ptr<vector<ulint> > in_refs;
01027         ptr<vector<ulint> > out_refs;
01028         
01029         instrs = vector<ulint>::create();
01030         in_pids = vector<ulint>::create();
01031         out_pids = vector<ulint>::create();
01032         in_refs = vector<ulint>::create();
01033         out_refs = vector<ulint>::create();
01034 
01035         instrs->push_back(INSTRUCTION_OR__1);
01036 
01037         //input operands
01038         in_pids->push_back(PIN_1);
01039         in_refs->push_back(I_1);
01040         in_pids->push_back(PIN_2);
01041         in_refs->push_back(I_2);
01042 
01043         //output operands
01044         out_pids->push_back(POUT_1);
01045         out_refs->push_back(O_1);
01046         out_pids->push_back(OR_O_2);
01047         out_refs->push_back(O_2);
01048 
01049         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01050 
01051 
01052         return pi_pi2ge_pi_template::create(TEM_BOR_1,instr_patts);
01053 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BT_1 (  ) 

Definition at line 1888 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, INSTRUCTION_CMP__1, INSTRUCTION_JA__1, O_1, PIN_1, and TEM_BT_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01888                                                                  {
01889         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01890 
01891         ptr<vector<ulint> > instrs;
01892         ptr<vector<ulint> > in_pids;
01893         ptr<vector<ulint> > out_pids;
01894         ptr<vector<ulint> > in_refs;
01895         ptr<vector<ulint> > out_refs;
01896         
01897         instrs = vector<ulint>::create();
01898         in_pids = vector<ulint>::create();
01899         out_pids = vector<ulint>::create();
01900         in_refs = vector<ulint>::create();
01901         out_refs = vector<ulint>::create();
01902 
01903         instrs->push_back(INSTRUCTION_CMP__1);
01904 
01905         //input operands
01906         in_pids->push_back(PIN_1);
01907         in_refs->push_back(I_1);
01908 
01909         //output operands
01910         out_pids->push_back(CMP_O_1);
01911         out_refs->push_back(O_1);
01912 
01913         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01914 
01915 
01916         instrs = vector<ulint>::create();
01917         in_pids = vector<ulint>::create();
01918         out_pids = vector<ulint>::create();
01919         in_refs = vector<ulint>::create();
01920         out_refs = vector<ulint>::create();
01921 
01922         instrs->push_back(INSTRUCTION_JA__1);
01923 
01924         //input operands
01925         in_pids->push_back(CMP_O_1);
01926         in_refs->push_back(I_1);
01927 
01928         //output operands
01929 
01930         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01931 
01932 
01933         return pi_pi2ge_pi_template::create(TEM_BT_1,instr_patts);
01934 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_BXOR_1 (  ) 

Definition at line 1055 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_XOR__1, O_1, O_2, PIN_1, PIN_2, POUT_1, TEM_BXOR_1, and XOR_O_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01055                                                                    {
01056         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01057 
01058         ptr<vector<ulint> > instrs;
01059         ptr<vector<ulint> > in_pids;
01060         ptr<vector<ulint> > out_pids;
01061         ptr<vector<ulint> > in_refs;
01062         ptr<vector<ulint> > out_refs;
01063         
01064         instrs = vector<ulint>::create();
01065         in_pids = vector<ulint>::create();
01066         out_pids = vector<ulint>::create();
01067         in_refs = vector<ulint>::create();
01068         out_refs = vector<ulint>::create();
01069 
01070         instrs->push_back(INSTRUCTION_XOR__1);
01071 
01072         //input operands
01073         in_pids->push_back(PIN_1);
01074         in_refs->push_back(I_1);
01075         in_pids->push_back(PIN_2);
01076         in_refs->push_back(I_2);
01077 
01078         //output operands
01079         out_pids->push_back(POUT_1);
01080         out_refs->push_back(O_1);
01081         out_pids->push_back(XOR_O_2);
01082         out_refs->push_back(O_2);
01083 
01084         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01085 
01086 
01087         return pi_pi2ge_pi_template::create(TEM_BXOR_1,instr_patts);
01088 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_CMP_1 (  ) 

Definition at line 1801 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_CMP__2, O_1, PIN_1, PIN_2, POUT_1, and TEM_CMP_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01801                                                                   {
01802         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01803 
01804         ptr<vector<ulint> > instrs;
01805         ptr<vector<ulint> > in_pids;
01806         ptr<vector<ulint> > out_pids;
01807         ptr<vector<ulint> > in_refs;
01808         ptr<vector<ulint> > out_refs;
01809         
01810         instrs = vector<ulint>::create();
01811         in_pids = vector<ulint>::create();
01812         out_pids = vector<ulint>::create();
01813         in_refs = vector<ulint>::create();
01814         out_refs = vector<ulint>::create();
01815 
01816         instrs->push_back(INSTRUCTION_CMP__2);
01817 
01818         //input operands
01819         in_pids->push_back(PIN_1);
01820         in_refs->push_back(I_1);
01821         in_pids->push_back(PIN_2);
01822         in_refs->push_back(I_2);
01823 
01824         //output operands
01825         out_pids->push_back(POUT_1);
01826         out_refs->push_back(O_1);
01827 
01828         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01829 
01830 
01831         return pi_pi2ge_pi_template::create(TEM_CMP_1,instr_patts);
01832 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_CVT_1 (  ) 

Definition at line 1259 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_CONVERT__5, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, PIN_1, POUT_1, and TEM_CVT_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01259                                                                   {
01260         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01261 
01262         ptr<vector<ulint> > instrs;
01263         ptr<vector<ulint> > in_pids;
01264         ptr<vector<ulint> > out_pids;
01265         ptr<vector<ulint> > in_refs;
01266         ptr<vector<ulint> > out_refs;
01267         
01268         instrs = vector<ulint>::create();
01269         in_pids = vector<ulint>::create();
01270         out_pids = vector<ulint>::create();
01271         in_refs = vector<ulint>::create();
01272         out_refs = vector<ulint>::create();
01273 
01274         instrs->push_back(INSTRUCTION_CONVERT__1);
01275         instrs->push_back(INSTRUCTION_CONVERT__5);
01276         instrs->push_back(INSTRUCTION_CONVERT__2);
01277         instrs->push_back(INSTRUCTION_CONVERT__3);
01278         instrs->push_back(INSTRUCTION_MOVZX__1);
01279         instrs->push_back(INSTRUCTION_MOVZX__2);
01280         instrs->push_back(INSTRUCTION_MOVZX__3);
01281         instrs->push_back(INSTRUCTION_MOVZX__4);
01282         instrs->push_back(INSTRUCTION_MOVZX__5);
01283         instrs->push_back(INSTRUCTION_MOVZX__6);
01284         instrs->push_back(INSTRUCTION_MOVSX__1);
01285         instrs->push_back(INSTRUCTION_MOVSX__11);
01286         instrs->push_back(INSTRUCTION_MOVSX__2);
01287         instrs->push_back(INSTRUCTION_MOVSX__21);
01288 
01289         //input operands
01290         in_pids->push_back(PIN_1);
01291         in_refs->push_back(I_1);
01292 
01293         //output operands
01294         out_pids->push_back(POUT_1);
01295         out_refs->push_back(O_1);
01296 
01297         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01298 
01299 
01300         return pi_pi2ge_pi_template::create(TEM_CVT_1,instr_patts);
01301 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_CVT_2 (  ) 

Definition at line 1303 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, INSTRUCTION_CMP__1, INSTRUCTION_SETNZ__1, O_1, PIN_1, POUT_1, and TEM_CVT_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01303                                                                   {
01304         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01305 
01306         ptr<vector<ulint> > instrs;
01307         ptr<vector<ulint> > in_pids;
01308         ptr<vector<ulint> > out_pids;
01309         ptr<vector<ulint> > in_refs;
01310         ptr<vector<ulint> > out_refs;
01311         
01312         instrs = vector<ulint>::create();
01313         in_pids = vector<ulint>::create();
01314         out_pids = vector<ulint>::create();
01315         in_refs = vector<ulint>::create();
01316         out_refs = vector<ulint>::create();
01317 
01318         instrs->push_back(INSTRUCTION_CMP__1);
01319 
01320         //input operands
01321         in_pids->push_back(PIN_1);
01322         in_refs->push_back(I_1);
01323 
01324         //output operands
01325         out_pids->push_back(CMP_O_1);
01326         out_refs->push_back(O_1);
01327 
01328         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01329 
01330 
01331         instrs = vector<ulint>::create();
01332         in_pids = vector<ulint>::create();
01333         out_pids = vector<ulint>::create();
01334         in_refs = vector<ulint>::create();
01335         out_refs = vector<ulint>::create();
01336 
01337         instrs->push_back(INSTRUCTION_SETNZ__1);
01338 
01339         //input operands
01340         in_pids->push_back(CMP_O_1);
01341         in_refs->push_back(I_1);
01342 
01343         //output operands
01344         out_pids->push_back(POUT_1);
01345         out_refs->push_back(O_1);
01346 
01347         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01348 
01349 
01350         return pi_pi2ge_pi_template::create(TEM_CVT_2,instr_patts);
01351 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_CVT_3 (  ) 

Definition at line 1353 of file pi_pi2ge_pi_template.mdg.cc.

References AND_O_1, I_1, INSTRUCTION_AND__2, O_1, O_2, PIN_1, POUT_1, and TEM_CVT_3.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01353                                                                   {
01354         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01355 
01356         ptr<vector<ulint> > instrs;
01357         ptr<vector<ulint> > in_pids;
01358         ptr<vector<ulint> > out_pids;
01359         ptr<vector<ulint> > in_refs;
01360         ptr<vector<ulint> > out_refs;
01361         
01362         instrs = vector<ulint>::create();
01363         in_pids = vector<ulint>::create();
01364         out_pids = vector<ulint>::create();
01365         in_refs = vector<ulint>::create();
01366         out_refs = vector<ulint>::create();
01367 
01368         instrs->push_back(INSTRUCTION_AND__2);
01369 
01370         //input operands
01371         in_pids->push_back(PIN_1);
01372         in_refs->push_back(I_1);
01373 
01374         //output operands
01375         out_pids->push_back(POUT_1);
01376         out_refs->push_back(O_1);
01377         out_pids->push_back(AND_O_1);
01378         out_refs->push_back(O_2);
01379 
01380         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01381 
01382 
01383         return pi_pi2ge_pi_template::create(TEM_CVT_3,instr_patts);
01384 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_DIV_1 (  ) 

Definition at line 171 of file pi_pi2ge_pi_template.mdg.cc.

References CBW_O_1, DIV_O_2, DIV_O_3, I_1, I_2, INSTRUCTION_CBW__1, INSTRUCTION_IDIV__1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_DIV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00171                                                                   {
00172         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00173 
00174         ptr<vector<ulint> > instrs;
00175         ptr<vector<ulint> > in_pids;
00176         ptr<vector<ulint> > out_pids;
00177         ptr<vector<ulint> > in_refs;
00178         ptr<vector<ulint> > out_refs;
00179         
00180         instrs = vector<ulint>::create();
00181         in_pids = vector<ulint>::create();
00182         out_pids = vector<ulint>::create();
00183         in_refs = vector<ulint>::create();
00184         out_refs = vector<ulint>::create();
00185 
00186         instrs->push_back(INSTRUCTION_CBW__1);
00187 
00188         //input operands
00189         in_pids->push_back(PIN_1);
00190         in_refs->push_back(I_1);
00191 
00192         //output operands
00193         out_pids->push_back(CBW_O_1);
00194         out_refs->push_back(O_1);
00195 
00196         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00197 
00198 
00199         instrs = vector<ulint>::create();
00200         in_pids = vector<ulint>::create();
00201         out_pids = vector<ulint>::create();
00202         in_refs = vector<ulint>::create();
00203         out_refs = vector<ulint>::create();
00204 
00205         instrs->push_back(INSTRUCTION_IDIV__1);
00206 
00207         //input operands
00208         in_pids->push_back(CBW_O_1);
00209         in_refs->push_back(I_1);
00210         in_pids->push_back(PIN_2);
00211         in_refs->push_back(I_2);
00212 
00213         //output operands
00214         out_pids->push_back(POUT_1);
00215         out_refs->push_back(O_1);
00216         out_pids->push_back(DIV_O_2);
00217         out_refs->push_back(O_2);
00218         out_pids->push_back(DIV_O_3);
00219         out_refs->push_back(O_3);
00220 
00221         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00222 
00223 
00224         return pi_pi2ge_pi_template::create(TEM_DIV_1,instr_patts);
00225 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_DIV_2 (  ) 

Definition at line 227 of file pi_pi2ge_pi_template.mdg.cc.

References CWD_O_1, CWD_O_2, DIV_O_2, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_CDQ__1, INSTRUCTION_CWD__1, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__3, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_DIV_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00227                                                                   {
00228         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00229 
00230         ptr<vector<ulint> > instrs;
00231         ptr<vector<ulint> > in_pids;
00232         ptr<vector<ulint> > out_pids;
00233         ptr<vector<ulint> > in_refs;
00234         ptr<vector<ulint> > out_refs;
00235         
00236         instrs = vector<ulint>::create();
00237         in_pids = vector<ulint>::create();
00238         out_pids = vector<ulint>::create();
00239         in_refs = vector<ulint>::create();
00240         out_refs = vector<ulint>::create();
00241 
00242         instrs->push_back(INSTRUCTION_CWD__1);
00243         instrs->push_back(INSTRUCTION_CDQ__1);
00244 
00245         //input operands
00246         in_pids->push_back(PIN_1);
00247         in_refs->push_back(I_1);
00248 
00249         //output operands
00250         out_pids->push_back(CWD_O_1);
00251         out_refs->push_back(O_1);
00252         out_pids->push_back(CWD_O_2);
00253         out_refs->push_back(O_2);
00254 
00255         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00256 
00257 
00258         instrs = vector<ulint>::create();
00259         in_pids = vector<ulint>::create();
00260         out_pids = vector<ulint>::create();
00261         in_refs = vector<ulint>::create();
00262         out_refs = vector<ulint>::create();
00263 
00264         instrs->push_back(INSTRUCTION_IDIV__2);
00265         instrs->push_back(INSTRUCTION_IDIV__3);
00266 
00267         //input operands
00268         in_pids->push_back(CWD_O_1);
00269         in_refs->push_back(I_1);
00270         in_pids->push_back(CWD_O_2);
00271         in_refs->push_back(I_2);
00272         in_pids->push_back(PIN_2);
00273         in_refs->push_back(I_3);
00274 
00275         //output operands
00276         out_pids->push_back(POUT_1);
00277         out_refs->push_back(O_1);
00278         out_pids->push_back(DIV_O_2);
00279         out_refs->push_back(O_2);
00280         out_pids->push_back(DIV_O_3);
00281         out_refs->push_back(O_3);
00282 
00283         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00284 
00285 
00286         return pi_pi2ge_pi_template::create(TEM_DIV_2,instr_patts);
00287 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_DIV_3 (  ) 

Definition at line 289 of file pi_pi2ge_pi_template.mdg.cc.

References DIV_O_2, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__2, INSTRUCTION_DIV__3, INSTRUCTION_NULLAH__1, INSTRUCTION_NULLDX__1, INSTRUCTION_NULLEDX__1, NULL_O_1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_DIV_3.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00289                                                                   {
00290         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00291 
00292         ptr<vector<ulint> > instrs;
00293         ptr<vector<ulint> > in_pids;
00294         ptr<vector<ulint> > out_pids;
00295         ptr<vector<ulint> > in_refs;
00296         ptr<vector<ulint> > out_refs;
00297         
00298         instrs = vector<ulint>::create();
00299         in_pids = vector<ulint>::create();
00300         out_pids = vector<ulint>::create();
00301         in_refs = vector<ulint>::create();
00302         out_refs = vector<ulint>::create();
00303 
00304         instrs->push_back(INSTRUCTION_NULLAH__1);
00305         instrs->push_back(INSTRUCTION_NULLDX__1);
00306         instrs->push_back(INSTRUCTION_NULLEDX__1);
00307 
00308         //input operands
00309 
00310         //output operands
00311         out_pids->push_back(NULL_O_1);
00312         out_refs->push_back(O_1);
00313 
00314         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00315 
00316 
00317         instrs = vector<ulint>::create();
00318         in_pids = vector<ulint>::create();
00319         out_pids = vector<ulint>::create();
00320         in_refs = vector<ulint>::create();
00321         out_refs = vector<ulint>::create();
00322 
00323         instrs->push_back(INSTRUCTION_DIV__1);
00324         instrs->push_back(INSTRUCTION_DIV__2);
00325         instrs->push_back(INSTRUCTION_DIV__3);
00326 
00327         //input operands
00328         in_pids->push_back(NULL_O_1);
00329         in_refs->push_back(I_1);
00330         in_pids->push_back(PIN_1);
00331         in_refs->push_back(I_2);
00332         in_pids->push_back(PIN_2);
00333         in_refs->push_back(I_3);
00334 
00335         //output operands
00336         out_pids->push_back(POUT_1);
00337         out_refs->push_back(O_1);
00338         out_pids->push_back(DIV_O_2);
00339         out_refs->push_back(O_2);
00340         out_pids->push_back(DIV_O_3);
00341         out_refs->push_back(O_3);
00342 
00343         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00344 
00345 
00346         return pi_pi2ge_pi_template::create(TEM_DIV_3,instr_patts);
00347 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_GAT_1 (  ) 

Definition at line 738 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, O_1, PIN_1, POUT_1, and TEM_GAT_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00738                                                                   {
00739         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00740 
00741         ptr<vector<ulint> > instrs;
00742         ptr<vector<ulint> > in_pids;
00743         ptr<vector<ulint> > out_pids;
00744         ptr<vector<ulint> > in_refs;
00745         ptr<vector<ulint> > out_refs;
00746         
00747         instrs = vector<ulint>::create();
00748         in_pids = vector<ulint>::create();
00749         out_pids = vector<ulint>::create();
00750         in_refs = vector<ulint>::create();
00751         out_refs = vector<ulint>::create();
00752 
00753         instrs->push_back(INSTRUCTION_MOV__1);
00754 
00755         //input operands
00756         in_pids->push_back(PIN_1);
00757         in_refs->push_back(I_1);
00758 
00759         //output operands
00760         out_pids->push_back(POUT_1);
00761         out_refs->push_back(O_1);
00762 
00763         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00764 
00765 
00766         return pi_pi2ge_pi_template::create(TEM_GAT_1,instr_patts);
00767 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LAND_1 (  ) 

Definition at line 1121 of file pi_pi2ge_pi_template.mdg.cc.

References AND_O_2, I_1, I_2, INSTRUCTION_AND__1, O_1, O_2, PIN_1, PIN_2, POUT_1, and TEM_LAND_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01121                                                                    {
01122         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01123 
01124         ptr<vector<ulint> > instrs;
01125         ptr<vector<ulint> > in_pids;
01126         ptr<vector<ulint> > out_pids;
01127         ptr<vector<ulint> > in_refs;
01128         ptr<vector<ulint> > out_refs;
01129         
01130         instrs = vector<ulint>::create();
01131         in_pids = vector<ulint>::create();
01132         out_pids = vector<ulint>::create();
01133         in_refs = vector<ulint>::create();
01134         out_refs = vector<ulint>::create();
01135 
01136         instrs->push_back(INSTRUCTION_AND__1);
01137 
01138         //input operands
01139         in_pids->push_back(PIN_1);
01140         in_refs->push_back(I_1);
01141         in_pids->push_back(PIN_2);
01142         in_refs->push_back(I_2);
01143 
01144         //output operands
01145         out_pids->push_back(POUT_1);
01146         out_refs->push_back(O_1);
01147         out_pids->push_back(AND_O_2);
01148         out_refs->push_back(O_2);
01149 
01150         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01151 
01152 
01153         return pi_pi2ge_pi_template::create(TEM_LAND_1,instr_patts);
01154 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LD_1 (  ) 

Definition at line 1609 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__3, O_1, PIN_1, POUT_1, and TEM_LD_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01609                                                                  {
01610         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01611 
01612         ptr<vector<ulint> > instrs;
01613         ptr<vector<ulint> > in_pids;
01614         ptr<vector<ulint> > out_pids;
01615         ptr<vector<ulint> > in_refs;
01616         ptr<vector<ulint> > out_refs;
01617         
01618         instrs = vector<ulint>::create();
01619         in_pids = vector<ulint>::create();
01620         out_pids = vector<ulint>::create();
01621         in_refs = vector<ulint>::create();
01622         out_refs = vector<ulint>::create();
01623 
01624         instrs->push_back(INSTRUCTION_MOV__3);
01625         instrs->push_back(INSTRUCTION_MOV__1);
01626 
01627         //input operands
01628         in_pids->push_back(PIN_1);
01629         in_refs->push_back(I_1);
01630 
01631         //output operands
01632         out_pids->push_back(POUT_1);
01633         out_refs->push_back(O_1);
01634 
01635         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01636 
01637 
01638         return pi_pi2ge_pi_template::create(TEM_LD_1,instr_patts);
01639 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LDA_1 (  ) 

Definition at line 1770 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_LEA__1, O_1, PIN_1, POUT_1, and TEM_LDA_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01770                                                                   {
01771         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01772 
01773         ptr<vector<ulint> > instrs;
01774         ptr<vector<ulint> > in_pids;
01775         ptr<vector<ulint> > out_pids;
01776         ptr<vector<ulint> > in_refs;
01777         ptr<vector<ulint> > out_refs;
01778         
01779         instrs = vector<ulint>::create();
01780         in_pids = vector<ulint>::create();
01781         out_pids = vector<ulint>::create();
01782         in_refs = vector<ulint>::create();
01783         out_refs = vector<ulint>::create();
01784 
01785         instrs->push_back(INSTRUCTION_LEA__1);
01786 
01787         //input operands
01788         in_pids->push_back(PIN_1);
01789         in_refs->push_back(I_1);
01790 
01791         //output operands
01792         out_pids->push_back(POUT_1);
01793         out_refs->push_back(O_1);
01794 
01795         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01796 
01797 
01798         return pi_pi2ge_pi_template::create(TEM_LDA_1,instr_patts);
01799 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LDI_1 (  ) 

Definition at line 1673 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__5, O_1, PIN_1, POUT_1, and TEM_LDI_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01673                                                                   {
01674         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01675 
01676         ptr<vector<ulint> > instrs;
01677         ptr<vector<ulint> > in_pids;
01678         ptr<vector<ulint> > out_pids;
01679         ptr<vector<ulint> > in_refs;
01680         ptr<vector<ulint> > out_refs;
01681         
01682         instrs = vector<ulint>::create();
01683         in_pids = vector<ulint>::create();
01684         out_pids = vector<ulint>::create();
01685         in_refs = vector<ulint>::create();
01686         out_refs = vector<ulint>::create();
01687 
01688         instrs->push_back(INSTRUCTION_MOV__5);
01689 
01690         //input operands
01691         in_pids->push_back(PIN_1);
01692         in_refs->push_back(I_1);
01693 
01694         //output operands
01695         out_pids->push_back(POUT_1);
01696         out_refs->push_back(O_1);
01697 
01698         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01699 
01700 
01701         return pi_pi2ge_pi_template::create(TEM_LDI_1,instr_patts);
01702 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LDP_1 (  ) 

Definition at line 1704 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_MOV__8, O_1, PIN_1, PIN_2, POUT_1, and TEM_LDP_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01704                                                                   {
01705         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01706 
01707         ptr<vector<ulint> > instrs;
01708         ptr<vector<ulint> > in_pids;
01709         ptr<vector<ulint> > out_pids;
01710         ptr<vector<ulint> > in_refs;
01711         ptr<vector<ulint> > out_refs;
01712         
01713         instrs = vector<ulint>::create();
01714         in_pids = vector<ulint>::create();
01715         out_pids = vector<ulint>::create();
01716         in_refs = vector<ulint>::create();
01717         out_refs = vector<ulint>::create();
01718 
01719         instrs->push_back(INSTRUCTION_MOV__8);
01720 
01721         //input operands
01722         in_pids->push_back(PIN_1);
01723         in_refs->push_back(I_1);
01724         in_pids->push_back(PIN_2);
01725         in_refs->push_back(I_2);
01726 
01727         //output operands
01728         out_pids->push_back(POUT_1);
01729         out_refs->push_back(O_1);
01730 
01731         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01732 
01733 
01734         return pi_pi2ge_pi_template::create(TEM_LDP_1,instr_patts);
01735 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LDPV_1 (  ) 

Definition at line 1737 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_MOV__8, O_1, PIN_1, PIN_2, POUT_1, and TEM_LDPV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01737                                                                    {
01738         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01739 
01740         ptr<vector<ulint> > instrs;
01741         ptr<vector<ulint> > in_pids;
01742         ptr<vector<ulint> > out_pids;
01743         ptr<vector<ulint> > in_refs;
01744         ptr<vector<ulint> > out_refs;
01745         
01746         instrs = vector<ulint>::create();
01747         in_pids = vector<ulint>::create();
01748         out_pids = vector<ulint>::create();
01749         in_refs = vector<ulint>::create();
01750         out_refs = vector<ulint>::create();
01751 
01752         instrs->push_back(INSTRUCTION_MOV__8);
01753 
01754         //input operands
01755         in_pids->push_back(PIN_1);
01756         in_refs->push_back(I_1);
01757         in_pids->push_back(PIN_2);
01758         in_refs->push_back(I_2);
01759 
01760         //output operands
01761         out_pids->push_back(POUT_1);
01762         out_refs->push_back(O_1);
01763 
01764         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01765 
01766 
01767         return pi_pi2ge_pi_template::create(TEM_LDPV_1,instr_patts);
01768 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LDV_1 (  ) 

Definition at line 1641 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__3, O_1, PIN_1, POUT_1, and TEM_LDV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01641                                                                   {
01642         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01643 
01644         ptr<vector<ulint> > instrs;
01645         ptr<vector<ulint> > in_pids;
01646         ptr<vector<ulint> > out_pids;
01647         ptr<vector<ulint> > in_refs;
01648         ptr<vector<ulint> > out_refs;
01649         
01650         instrs = vector<ulint>::create();
01651         in_pids = vector<ulint>::create();
01652         out_pids = vector<ulint>::create();
01653         in_refs = vector<ulint>::create();
01654         out_refs = vector<ulint>::create();
01655 
01656         instrs->push_back(INSTRUCTION_MOV__3);
01657         instrs->push_back(INSTRUCTION_MOV__1);
01658 
01659         //input operands
01660         in_pids->push_back(PIN_1);
01661         in_refs->push_back(I_1);
01662 
01663         //output operands
01664         out_pids->push_back(POUT_1);
01665         out_refs->push_back(O_1);
01666 
01667         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01668 
01669 
01670         return pi_pi2ge_pi_template::create(TEM_LDV_1,instr_patts);
01671 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LNOT_1 (  ) 

Definition at line 1226 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_XOR__2, O_1, O_2, PIN_1, POUT_1, TEM_LNOT_1, and XOR_O_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01226                                                                    {
01227         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01228 
01229         ptr<vector<ulint> > instrs;
01230         ptr<vector<ulint> > in_pids;
01231         ptr<vector<ulint> > out_pids;
01232         ptr<vector<ulint> > in_refs;
01233         ptr<vector<ulint> > out_refs;
01234         
01235         instrs = vector<ulint>::create();
01236         in_pids = vector<ulint>::create();
01237         out_pids = vector<ulint>::create();
01238         in_refs = vector<ulint>::create();
01239         out_refs = vector<ulint>::create();
01240 
01241         instrs->push_back(INSTRUCTION_XOR__2);
01242 
01243         //input operands
01244         in_pids->push_back(PIN_1);
01245         in_refs->push_back(I_1);
01246 
01247         //output operands
01248         out_pids->push_back(POUT_1);
01249         out_refs->push_back(O_1);
01250         out_pids->push_back(XOR_O_2);
01251         out_refs->push_back(O_2);
01252 
01253         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01254 
01255 
01256         return pi_pi2ge_pi_template::create(TEM_LNOT_1,instr_patts);
01257 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LOR_1 (  ) 

Definition at line 1156 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_OR__1, O_1, O_2, OR_O_2, PIN_1, PIN_2, POUT_1, and TEM_LOR_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01156                                                                   {
01157         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01158 
01159         ptr<vector<ulint> > instrs;
01160         ptr<vector<ulint> > in_pids;
01161         ptr<vector<ulint> > out_pids;
01162         ptr<vector<ulint> > in_refs;
01163         ptr<vector<ulint> > out_refs;
01164         
01165         instrs = vector<ulint>::create();
01166         in_pids = vector<ulint>::create();
01167         out_pids = vector<ulint>::create();
01168         in_refs = vector<ulint>::create();
01169         out_refs = vector<ulint>::create();
01170 
01171         instrs->push_back(INSTRUCTION_OR__1);
01172 
01173         //input operands
01174         in_pids->push_back(PIN_1);
01175         in_refs->push_back(I_1);
01176         in_pids->push_back(PIN_2);
01177         in_refs->push_back(I_2);
01178 
01179         //output operands
01180         out_pids->push_back(POUT_1);
01181         out_refs->push_back(O_1);
01182         out_pids->push_back(OR_O_2);
01183         out_refs->push_back(O_2);
01184 
01185         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01186 
01187 
01188         return pi_pi2ge_pi_template::create(TEM_LOR_1,instr_patts);
01189 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_LXOR_1 (  ) 

Definition at line 1191 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_XOR__1, O_1, O_2, PIN_1, PIN_2, POUT_1, TEM_LXOR_1, and XOR_O_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01191                                                                    {
01192         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01193 
01194         ptr<vector<ulint> > instrs;
01195         ptr<vector<ulint> > in_pids;
01196         ptr<vector<ulint> > out_pids;
01197         ptr<vector<ulint> > in_refs;
01198         ptr<vector<ulint> > out_refs;
01199         
01200         instrs = vector<ulint>::create();
01201         in_pids = vector<ulint>::create();
01202         out_pids = vector<ulint>::create();
01203         in_refs = vector<ulint>::create();
01204         out_refs = vector<ulint>::create();
01205 
01206         instrs->push_back(INSTRUCTION_XOR__1);
01207 
01208         //input operands
01209         in_pids->push_back(PIN_1);
01210         in_refs->push_back(I_1);
01211         in_pids->push_back(PIN_2);
01212         in_refs->push_back(I_2);
01213 
01214         //output operands
01215         out_pids->push_back(POUT_1);
01216         out_refs->push_back(O_1);
01217         out_pids->push_back(XOR_O_2);
01218         out_refs->push_back(O_2);
01219 
01220         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01221 
01222 
01223         return pi_pi2ge_pi_template::create(TEM_LXOR_1,instr_patts);
01224 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MOD_1 (  ) 

Definition at line 349 of file pi_pi2ge_pi_template.mdg.cc.

References CBW_O_1, DIV_O_1, DIV_O_3, I_1, I_2, INSTRUCTION_CBW__1, INSTRUCTION_IDIV__1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_MOD_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00349                                                                   {
00350         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00351 
00352         ptr<vector<ulint> > instrs;
00353         ptr<vector<ulint> > in_pids;
00354         ptr<vector<ulint> > out_pids;
00355         ptr<vector<ulint> > in_refs;
00356         ptr<vector<ulint> > out_refs;
00357         
00358         instrs = vector<ulint>::create();
00359         in_pids = vector<ulint>::create();
00360         out_pids = vector<ulint>::create();
00361         in_refs = vector<ulint>::create();
00362         out_refs = vector<ulint>::create();
00363 
00364         instrs->push_back(INSTRUCTION_CBW__1);
00365 
00366         //input operands
00367         in_pids->push_back(PIN_1);
00368         in_refs->push_back(I_1);
00369 
00370         //output operands
00371         out_pids->push_back(CBW_O_1);
00372         out_refs->push_back(O_1);
00373 
00374         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00375 
00376 
00377         instrs = vector<ulint>::create();
00378         in_pids = vector<ulint>::create();
00379         out_pids = vector<ulint>::create();
00380         in_refs = vector<ulint>::create();
00381         out_refs = vector<ulint>::create();
00382 
00383         instrs->push_back(INSTRUCTION_IDIV__1);
00384 
00385         //input operands
00386         in_pids->push_back(CBW_O_1);
00387         in_refs->push_back(I_1);
00388         in_pids->push_back(PIN_2);
00389         in_refs->push_back(I_2);
00390 
00391         //output operands
00392         out_pids->push_back(DIV_O_1);
00393         out_refs->push_back(O_1);
00394         out_pids->push_back(POUT_1);
00395         out_refs->push_back(O_2);
00396         out_pids->push_back(DIV_O_3);
00397         out_refs->push_back(O_3);
00398 
00399         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00400 
00401 
00402         return pi_pi2ge_pi_template::create(TEM_MOD_1,instr_patts);
00403 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MOD_2 (  ) 

Definition at line 405 of file pi_pi2ge_pi_template.mdg.cc.

References CWD_O_1, CWD_O_2, DIV_O_1, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_CDQ__1, INSTRUCTION_CWD__1, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__3, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_MOD_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00405                                                                   {
00406         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00407 
00408         ptr<vector<ulint> > instrs;
00409         ptr<vector<ulint> > in_pids;
00410         ptr<vector<ulint> > out_pids;
00411         ptr<vector<ulint> > in_refs;
00412         ptr<vector<ulint> > out_refs;
00413         
00414         instrs = vector<ulint>::create();
00415         in_pids = vector<ulint>::create();
00416         out_pids = vector<ulint>::create();
00417         in_refs = vector<ulint>::create();
00418         out_refs = vector<ulint>::create();
00419 
00420         instrs->push_back(INSTRUCTION_CWD__1);
00421         instrs->push_back(INSTRUCTION_CDQ__1);
00422 
00423         //input operands
00424         in_pids->push_back(PIN_1);
00425         in_refs->push_back(I_1);
00426 
00427         //output operands
00428         out_pids->push_back(CWD_O_1);
00429         out_refs->push_back(O_1);
00430         out_pids->push_back(CWD_O_2);
00431         out_refs->push_back(O_2);
00432 
00433         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00434 
00435 
00436         instrs = vector<ulint>::create();
00437         in_pids = vector<ulint>::create();
00438         out_pids = vector<ulint>::create();
00439         in_refs = vector<ulint>::create();
00440         out_refs = vector<ulint>::create();
00441 
00442         instrs->push_back(INSTRUCTION_IDIV__2);
00443         instrs->push_back(INSTRUCTION_IDIV__3);
00444 
00445         //input operands
00446         in_pids->push_back(CWD_O_1);
00447         in_refs->push_back(I_1);
00448         in_pids->push_back(CWD_O_2);
00449         in_refs->push_back(I_2);
00450         in_pids->push_back(PIN_2);
00451         in_refs->push_back(I_3);
00452 
00453         //output operands
00454         out_pids->push_back(DIV_O_1);
00455         out_refs->push_back(O_1);
00456         out_pids->push_back(POUT_1);
00457         out_refs->push_back(O_2);
00458         out_pids->push_back(DIV_O_3);
00459         out_refs->push_back(O_3);
00460 
00461         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00462 
00463 
00464         return pi_pi2ge_pi_template::create(TEM_MOD_2,instr_patts);
00465 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MOD_3 (  ) 

Definition at line 467 of file pi_pi2ge_pi_template.mdg.cc.

References DIV_O_1, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__2, INSTRUCTION_DIV__3, INSTRUCTION_NULLAH__1, INSTRUCTION_NULLDX__1, INSTRUCTION_NULLEDX__1, NULL_O_1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_MOD_3.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00467                                                                   {
00468         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00469 
00470         ptr<vector<ulint> > instrs;
00471         ptr<vector<ulint> > in_pids;
00472         ptr<vector<ulint> > out_pids;
00473         ptr<vector<ulint> > in_refs;
00474         ptr<vector<ulint> > out_refs;
00475         
00476         instrs = vector<ulint>::create();
00477         in_pids = vector<ulint>::create();
00478         out_pids = vector<ulint>::create();
00479         in_refs = vector<ulint>::create();
00480         out_refs = vector<ulint>::create();
00481 
00482         instrs->push_back(INSTRUCTION_NULLAH__1);
00483         instrs->push_back(INSTRUCTION_NULLDX__1);
00484         instrs->push_back(INSTRUCTION_NULLEDX__1);
00485 
00486         //input operands
00487 
00488         //output operands
00489         out_pids->push_back(NULL_O_1);
00490         out_refs->push_back(O_1);
00491 
00492         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00493 
00494 
00495         instrs = vector<ulint>::create();
00496         in_pids = vector<ulint>::create();
00497         out_pids = vector<ulint>::create();
00498         in_refs = vector<ulint>::create();
00499         out_refs = vector<ulint>::create();
00500 
00501         instrs->push_back(INSTRUCTION_DIV__1);
00502         instrs->push_back(INSTRUCTION_DIV__2);
00503         instrs->push_back(INSTRUCTION_DIV__3);
00504 
00505         //input operands
00506         in_pids->push_back(NULL_O_1);
00507         in_refs->push_back(I_1);
00508         in_pids->push_back(PIN_1);
00509         in_refs->push_back(I_2);
00510         in_pids->push_back(PIN_2);
00511         in_refs->push_back(I_3);
00512 
00513         //output operands
00514         out_pids->push_back(DIV_O_1);
00515         out_refs->push_back(O_1);
00516         out_pids->push_back(POUT_1);
00517         out_refs->push_back(O_2);
00518         out_pids->push_back(DIV_O_3);
00519         out_refs->push_back(O_3);
00520 
00521         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00522 
00523 
00524         return pi_pi2ge_pi_template::create(TEM_MOD_3,instr_patts);
00525 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MOV_1 (  ) 

Definition at line 1386 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, O_1, PIN_1, POUT_1, and TEM_MOV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01386                                                                   {
01387         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01388 
01389         ptr<vector<ulint> > instrs;
01390         ptr<vector<ulint> > in_pids;
01391         ptr<vector<ulint> > out_pids;
01392         ptr<vector<ulint> > in_refs;
01393         ptr<vector<ulint> > out_refs;
01394         
01395         instrs = vector<ulint>::create();
01396         in_pids = vector<ulint>::create();
01397         out_pids = vector<ulint>::create();
01398         in_refs = vector<ulint>::create();
01399         out_refs = vector<ulint>::create();
01400 
01401         instrs->push_back(INSTRUCTION_MOV__1);
01402 
01403         //input operands
01404         in_pids->push_back(PIN_1);
01405         in_refs->push_back(I_1);
01406 
01407         //output operands
01408         out_pids->push_back(POUT_1);
01409         out_refs->push_back(O_1);
01410 
01411         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01412 
01413 
01414         return pi_pi2ge_pi_template::create(TEM_MOV_1,instr_patts);
01415 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MUL_1 (  ) 

Definition at line 92 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, INSTRUCTION_MUL__1, MUL_O_2, O_1, O_2, PIN_1, PIN_2, POUT_1, and TEM_MUL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00092                                                                   {
00093         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00094 
00095         ptr<vector<ulint> > instrs;
00096         ptr<vector<ulint> > in_pids;
00097         ptr<vector<ulint> > out_pids;
00098         ptr<vector<ulint> > in_refs;
00099         ptr<vector<ulint> > out_refs;
00100         
00101         instrs = vector<ulint>::create();
00102         in_pids = vector<ulint>::create();
00103         out_pids = vector<ulint>::create();
00104         in_refs = vector<ulint>::create();
00105         out_refs = vector<ulint>::create();
00106 
00107         instrs->push_back(INSTRUCTION_MUL__1);
00108         instrs->push_back(INSTRUCTION_IMUL__1);
00109         instrs->push_back(INSTRUCTION_IMUL__2);
00110         instrs->push_back(INSTRUCTION_IMUL__21);
00111         instrs->push_back(INSTRUCTION_IMUL__22);
00112         instrs->push_back(INSTRUCTION_IMUL__23);
00113         instrs->push_back(INSTRUCTION_IMUL__24);
00114 
00115         //input operands
00116         in_pids->push_back(PIN_1);
00117         in_refs->push_back(I_1);
00118         in_pids->push_back(PIN_2);
00119         in_refs->push_back(I_2);
00120 
00121         //output operands
00122         out_pids->push_back(POUT_1);
00123         out_refs->push_back(O_1);
00124         out_pids->push_back(MUL_O_2);
00125         out_refs->push_back(O_2);
00126 
00127         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00128 
00129 
00130         return pi_pi2ge_pi_template::create(TEM_MUL_1,instr_patts);
00131 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_MUL_2 (  ) 

Definition at line 133 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_MUL__2, INSTRUCTION_MUL__3, MUL_O_2, MUL_O_3, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_MUL_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00133                                                                   {
00134         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00135 
00136         ptr<vector<ulint> > instrs;
00137         ptr<vector<ulint> > in_pids;
00138         ptr<vector<ulint> > out_pids;
00139         ptr<vector<ulint> > in_refs;
00140         ptr<vector<ulint> > out_refs;
00141         
00142         instrs = vector<ulint>::create();
00143         in_pids = vector<ulint>::create();
00144         out_pids = vector<ulint>::create();
00145         in_refs = vector<ulint>::create();
00146         out_refs = vector<ulint>::create();
00147 
00148         instrs->push_back(INSTRUCTION_MUL__2);
00149         instrs->push_back(INSTRUCTION_MUL__3);
00150 
00151         //input operands
00152         in_pids->push_back(PIN_1);
00153         in_refs->push_back(I_1);
00154         in_pids->push_back(PIN_2);
00155         in_refs->push_back(I_2);
00156 
00157         //output operands
00158         out_pids->push_back(POUT_1);
00159         out_refs->push_back(O_1);
00160         out_pids->push_back(MUL_O_2);
00161         out_refs->push_back(O_2);
00162         out_pids->push_back(MUL_O_3);
00163         out_refs->push_back(O_3);
00164 
00165         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00166 
00167 
00168         return pi_pi2ge_pi_template::create(TEM_MUL_2,instr_patts);
00169 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_NEG_1 (  ) 

Definition at line 705 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_NEG__1, NEG_O_2, O_1, O_2, PIN_1, POUT_1, and TEM_NEG_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00705                                                                   {
00706         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00707 
00708         ptr<vector<ulint> > instrs;
00709         ptr<vector<ulint> > in_pids;
00710         ptr<vector<ulint> > out_pids;
00711         ptr<vector<ulint> > in_refs;
00712         ptr<vector<ulint> > out_refs;
00713         
00714         instrs = vector<ulint>::create();
00715         in_pids = vector<ulint>::create();
00716         out_pids = vector<ulint>::create();
00717         in_refs = vector<ulint>::create();
00718         out_refs = vector<ulint>::create();
00719 
00720         instrs->push_back(INSTRUCTION_NEG__1);
00721 
00722         //input operands
00723         in_pids->push_back(PIN_1);
00724         in_refs->push_back(I_1);
00725 
00726         //output operands
00727         out_pids->push_back(POUT_1);
00728         out_refs->push_back(O_1);
00729         out_pids->push_back(NEG_O_2);
00730         out_refs->push_back(O_2);
00731 
00732         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00733 
00734 
00735         return pi_pi2ge_pi_template::create(TEM_NEG_1,instr_patts);
00736 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_1 (  ) 

Definition at line 2478 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, O_1, PIN_1, POUT_1, and TEM_REGISTER_MOVE_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02478                                                                             {
02479         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02480 
02481         ptr<vector<ulint> > instrs;
02482         ptr<vector<ulint> > in_pids;
02483         ptr<vector<ulint> > out_pids;
02484         ptr<vector<ulint> > in_refs;
02485         ptr<vector<ulint> > out_refs;
02486         
02487         instrs = vector<ulint>::create();
02488         in_pids = vector<ulint>::create();
02489         out_pids = vector<ulint>::create();
02490         in_refs = vector<ulint>::create();
02491         out_refs = vector<ulint>::create();
02492 
02493         instrs->push_back(INSTRUCTION_MOV__1);
02494         instrs->push_back(INSTRUCTION_MOV__2);
02495         instrs->push_back(INSTRUCTION_MOV__3);
02496 
02497         //input operands
02498         in_pids->push_back(PIN_1);
02499         in_refs->push_back(I_1);
02500 
02501         //output operands
02502         out_pids->push_back(POUT_1);
02503         out_refs->push_back(O_1);
02504 
02505         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02506 
02507 
02508         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_1,instr_patts);
02509 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_2 (  ) 

Definition at line 2511 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_LAHF__1, INSTRUCTION_SAHF__1, O_1, PIN_1, POUT_1, and TEM_REGISTER_MOVE_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02511                                                                             {
02512         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02513 
02514         ptr<vector<ulint> > instrs;
02515         ptr<vector<ulint> > in_pids;
02516         ptr<vector<ulint> > out_pids;
02517         ptr<vector<ulint> > in_refs;
02518         ptr<vector<ulint> > out_refs;
02519         
02520         instrs = vector<ulint>::create();
02521         in_pids = vector<ulint>::create();
02522         out_pids = vector<ulint>::create();
02523         in_refs = vector<ulint>::create();
02524         out_refs = vector<ulint>::create();
02525 
02526         instrs->push_back(INSTRUCTION_LAHF__1);
02527         instrs->push_back(INSTRUCTION_SAHF__1);
02528 
02529         //input operands
02530         in_pids->push_back(PIN_1);
02531         in_refs->push_back(I_1);
02532 
02533         //output operands
02534         out_pids->push_back(POUT_1);
02535         out_refs->push_back(O_1);
02536 
02537         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02538 
02539 
02540         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_2,instr_patts);
02541 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_3 (  ) 

Definition at line 2543 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_LAHF__1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, LAHF_O_1, O_1, PIN_1, POUT_1, and TEM_REGISTER_MOVE_3.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02543                                                                             {
02544         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02545 
02546         ptr<vector<ulint> > instrs;
02547         ptr<vector<ulint> > in_pids;
02548         ptr<vector<ulint> > out_pids;
02549         ptr<vector<ulint> > in_refs;
02550         ptr<vector<ulint> > out_refs;
02551         
02552         instrs = vector<ulint>::create();
02553         in_pids = vector<ulint>::create();
02554         out_pids = vector<ulint>::create();
02555         in_refs = vector<ulint>::create();
02556         out_refs = vector<ulint>::create();
02557 
02558         instrs->push_back(INSTRUCTION_LAHF__1);
02559 
02560         //input operands
02561         in_pids->push_back(PIN_1);
02562         in_refs->push_back(I_1);
02563 
02564         //output operands
02565         out_pids->push_back(LAHF_O_1);
02566         out_refs->push_back(O_1);
02567 
02568         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02569 
02570 
02571         instrs = vector<ulint>::create();
02572         in_pids = vector<ulint>::create();
02573         out_pids = vector<ulint>::create();
02574         in_refs = vector<ulint>::create();
02575         out_refs = vector<ulint>::create();
02576 
02577         instrs->push_back(INSTRUCTION_MOV__1);
02578         instrs->push_back(INSTRUCTION_MOV__2);
02579 
02580         //input operands
02581         in_pids->push_back(LAHF_O_1);
02582         in_refs->push_back(I_1);
02583 
02584         //output operands
02585         out_pids->push_back(POUT_1);
02586         out_refs->push_back(O_1);
02587 
02588         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02589 
02590 
02591         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_3,instr_patts);
02592 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_4 (  ) 

Definition at line 2594 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__3, INSTRUCTION_SAHF__1, MOV_O_1, O_1, PIN_1, POUT_1, and TEM_REGISTER_MOVE_4.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02594                                                                             {
02595         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02596 
02597         ptr<vector<ulint> > instrs;
02598         ptr<vector<ulint> > in_pids;
02599         ptr<vector<ulint> > out_pids;
02600         ptr<vector<ulint> > in_refs;
02601         ptr<vector<ulint> > out_refs;
02602         
02603         instrs = vector<ulint>::create();
02604         in_pids = vector<ulint>::create();
02605         out_pids = vector<ulint>::create();
02606         in_refs = vector<ulint>::create();
02607         out_refs = vector<ulint>::create();
02608 
02609         instrs->push_back(INSTRUCTION_MOV__1);
02610         instrs->push_back(INSTRUCTION_MOV__3);
02611 
02612         //input operands
02613         in_pids->push_back(PIN_1);
02614         in_refs->push_back(I_1);
02615 
02616         //output operands
02617         out_pids->push_back(MOV_O_1);
02618         out_refs->push_back(O_1);
02619 
02620         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02621 
02622 
02623         instrs = vector<ulint>::create();
02624         in_pids = vector<ulint>::create();
02625         out_pids = vector<ulint>::create();
02626         in_refs = vector<ulint>::create();
02627         out_refs = vector<ulint>::create();
02628 
02629         instrs->push_back(INSTRUCTION_SAHF__1);
02630 
02631         //input operands
02632         in_pids->push_back(MOV_O_1);
02633         in_refs->push_back(I_1);
02634 
02635         //output operands
02636         out_pids->push_back(POUT_1);
02637         out_refs->push_back(O_1);
02638 
02639         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02640 
02641 
02642         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_4,instr_patts);
02643 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_5 (  ) 

Definition at line 2645 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_SYSMOV__10, INSTRUCTION_SYSMOV__11, INSTRUCTION_SYSMOV__9, O_1, PIN_1, POUT_1, and TEM_REGISTER_MOVE_5.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02645                                                                             {
02646         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02647 
02648         ptr<vector<ulint> > instrs;
02649         ptr<vector<ulint> > in_pids;
02650         ptr<vector<ulint> > out_pids;
02651         ptr<vector<ulint> > in_refs;
02652         ptr<vector<ulint> > out_refs;
02653         
02654         instrs = vector<ulint>::create();
02655         in_pids = vector<ulint>::create();
02656         out_pids = vector<ulint>::create();
02657         in_refs = vector<ulint>::create();
02658         out_refs = vector<ulint>::create();
02659 
02660         instrs->push_back(INSTRUCTION_SYSMOV__9);
02661         instrs->push_back(INSTRUCTION_SYSMOV__10);
02662         instrs->push_back(INSTRUCTION_SYSMOV__11);
02663 
02664         //input operands
02665         in_pids->push_back(PIN_1);
02666         in_refs->push_back(I_1);
02667 
02668         //output operands
02669         out_pids->push_back(POUT_1);
02670         out_refs->push_back(O_1);
02671 
02672         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02673 
02674 
02675         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_5,instr_patts);
02676 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REM_1 (  ) 

Definition at line 527 of file pi_pi2ge_pi_template.mdg.cc.

References CBW_O_1, DIV_O_1, DIV_O_3, I_1, I_2, INSTRUCTION_CBW__1, INSTRUCTION_IDIV__1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_REM_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00527                                                                   {
00528         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00529 
00530         ptr<vector<ulint> > instrs;
00531         ptr<vector<ulint> > in_pids;
00532         ptr<vector<ulint> > out_pids;
00533         ptr<vector<ulint> > in_refs;
00534         ptr<vector<ulint> > out_refs;
00535         
00536         instrs = vector<ulint>::create();
00537         in_pids = vector<ulint>::create();
00538         out_pids = vector<ulint>::create();
00539         in_refs = vector<ulint>::create();
00540         out_refs = vector<ulint>::create();
00541 
00542         instrs->push_back(INSTRUCTION_CBW__1);
00543 
00544         //input operands
00545         in_pids->push_back(PIN_1);
00546         in_refs->push_back(I_1);
00547 
00548         //output operands
00549         out_pids->push_back(CBW_O_1);
00550         out_refs->push_back(O_1);
00551 
00552         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00553 
00554 
00555         instrs = vector<ulint>::create();
00556         in_pids = vector<ulint>::create();
00557         out_pids = vector<ulint>::create();
00558         in_refs = vector<ulint>::create();
00559         out_refs = vector<ulint>::create();
00560 
00561         instrs->push_back(INSTRUCTION_IDIV__1);
00562 
00563         //input operands
00564         in_pids->push_back(CBW_O_1);
00565         in_refs->push_back(I_1);
00566         in_pids->push_back(PIN_2);
00567         in_refs->push_back(I_2);
00568 
00569         //output operands
00570         out_pids->push_back(DIV_O_1);
00571         out_refs->push_back(O_1);
00572         out_pids->push_back(POUT_1);
00573         out_refs->push_back(O_2);
00574         out_pids->push_back(DIV_O_3);
00575         out_refs->push_back(O_3);
00576 
00577         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00578 
00579 
00580         return pi_pi2ge_pi_template::create(TEM_REM_1,instr_patts);
00581 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REM_2 (  ) 

Definition at line 583 of file pi_pi2ge_pi_template.mdg.cc.

References CWD_O_1, CWD_O_2, DIV_O_1, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_CDQ__1, INSTRUCTION_CWD__1, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__3, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_REM_2.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00583                                                                   {
00584         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00585 
00586         ptr<vector<ulint> > instrs;
00587         ptr<vector<ulint> > in_pids;
00588         ptr<vector<ulint> > out_pids;
00589         ptr<vector<ulint> > in_refs;
00590         ptr<vector<ulint> > out_refs;
00591         
00592         instrs = vector<ulint>::create();
00593         in_pids = vector<ulint>::create();
00594         out_pids = vector<ulint>::create();
00595         in_refs = vector<ulint>::create();
00596         out_refs = vector<ulint>::create();
00597 
00598         instrs->push_back(INSTRUCTION_CWD__1);
00599         instrs->push_back(INSTRUCTION_CDQ__1);
00600 
00601         //input operands
00602         in_pids->push_back(PIN_1);
00603         in_refs->push_back(I_1);
00604 
00605         //output operands
00606         out_pids->push_back(CWD_O_1);
00607         out_refs->push_back(O_1);
00608         out_pids->push_back(CWD_O_2);
00609         out_refs->push_back(O_2);
00610 
00611         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00612 
00613 
00614         instrs = vector<ulint>::create();
00615         in_pids = vector<ulint>::create();
00616         out_pids = vector<ulint>::create();
00617         in_refs = vector<ulint>::create();
00618         out_refs = vector<ulint>::create();
00619 
00620         instrs->push_back(INSTRUCTION_IDIV__2);
00621         instrs->push_back(INSTRUCTION_IDIV__3);
00622 
00623         //input operands
00624         in_pids->push_back(CWD_O_1);
00625         in_refs->push_back(I_1);
00626         in_pids->push_back(CWD_O_2);
00627         in_refs->push_back(I_2);
00628         in_pids->push_back(PIN_2);
00629         in_refs->push_back(I_3);
00630 
00631         //output operands
00632         out_pids->push_back(DIV_O_1);
00633         out_refs->push_back(O_1);
00634         out_pids->push_back(POUT_1);
00635         out_refs->push_back(O_2);
00636         out_pids->push_back(DIV_O_3);
00637         out_refs->push_back(O_3);
00638 
00639         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00640 
00641 
00642         return pi_pi2ge_pi_template::create(TEM_REM_2,instr_patts);
00643 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_REM_3 (  ) 

Definition at line 645 of file pi_pi2ge_pi_template.mdg.cc.

References DIV_O_1, DIV_O_3, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__2, INSTRUCTION_DIV__3, INSTRUCTION_NULLAH__1, INSTRUCTION_NULLDX__1, INSTRUCTION_NULLEDX__1, NULL_O_1, O_1, O_2, O_3, PIN_1, PIN_2, POUT_1, and TEM_REM_3.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00645                                                                   {
00646         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00647 
00648         ptr<vector<ulint> > instrs;
00649         ptr<vector<ulint> > in_pids;
00650         ptr<vector<ulint> > out_pids;
00651         ptr<vector<ulint> > in_refs;
00652         ptr<vector<ulint> > out_refs;
00653         
00654         instrs = vector<ulint>::create();
00655         in_pids = vector<ulint>::create();
00656         out_pids = vector<ulint>::create();
00657         in_refs = vector<ulint>::create();
00658         out_refs = vector<ulint>::create();
00659 
00660         instrs->push_back(INSTRUCTION_NULLAH__1);
00661         instrs->push_back(INSTRUCTION_NULLDX__1);
00662         instrs->push_back(INSTRUCTION_NULLEDX__1);
00663 
00664         //input operands
00665 
00666         //output operands
00667         out_pids->push_back(NULL_O_1);
00668         out_refs->push_back(O_1);
00669 
00670         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00671 
00672 
00673         instrs = vector<ulint>::create();
00674         in_pids = vector<ulint>::create();
00675         out_pids = vector<ulint>::create();
00676         in_refs = vector<ulint>::create();
00677         out_refs = vector<ulint>::create();
00678 
00679         instrs->push_back(INSTRUCTION_DIV__1);
00680         instrs->push_back(INSTRUCTION_DIV__2);
00681         instrs->push_back(INSTRUCTION_DIV__3);
00682 
00683         //input operands
00684         in_pids->push_back(NULL_O_1);
00685         in_refs->push_back(I_1);
00686         in_pids->push_back(PIN_1);
00687         in_refs->push_back(I_2);
00688         in_pids->push_back(PIN_2);
00689         in_refs->push_back(I_3);
00690 
00691         //output operands
00692         out_pids->push_back(DIV_O_1);
00693         out_refs->push_back(O_1);
00694         out_pids->push_back(POUT_1);
00695         out_refs->push_back(O_2);
00696         out_pids->push_back(DIV_O_3);
00697         out_refs->push_back(O_3);
00698 
00699         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00700 
00701 
00702         return pi_pi2ge_pi_template::create(TEM_REM_3,instr_patts);
00703 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SAL_1 (  ) 

Definition at line 877 of file pi_pi2ge_pi_template.mdg.cc.

References CVT_O_1, I_1, I_2, INSTRUCTION_CONVERT__1, INSTRUCTION_SAL__1, O_1, O_2, PIN_1, PIN_2, POUT_1, SAL_O_2, and TEM_SAL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00877                                                                   {
00878         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00879 
00880         ptr<vector<ulint> > instrs;
00881         ptr<vector<ulint> > in_pids;
00882         ptr<vector<ulint> > out_pids;
00883         ptr<vector<ulint> > in_refs;
00884         ptr<vector<ulint> > out_refs;
00885         
00886         instrs = vector<ulint>::create();
00887         in_pids = vector<ulint>::create();
00888         out_pids = vector<ulint>::create();
00889         in_refs = vector<ulint>::create();
00890         out_refs = vector<ulint>::create();
00891 
00892         instrs->push_back(INSTRUCTION_CONVERT__1);
00893 
00894         //input operands
00895         in_pids->push_back(PIN_2);
00896         in_refs->push_back(I_1);
00897 
00898         //output operands
00899         out_pids->push_back(CVT_O_1);
00900         out_refs->push_back(O_1);
00901 
00902         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00903 
00904 
00905         instrs = vector<ulint>::create();
00906         in_pids = vector<ulint>::create();
00907         out_pids = vector<ulint>::create();
00908         in_refs = vector<ulint>::create();
00909         out_refs = vector<ulint>::create();
00910 
00911         instrs->push_back(INSTRUCTION_SAL__1);
00912 
00913         //input operands
00914         in_pids->push_back(PIN_1);
00915         in_refs->push_back(I_1);
00916         in_pids->push_back(CVT_O_1);
00917         in_refs->push_back(I_2);
00918 
00919         //output operands
00920         out_pids->push_back(POUT_1);
00921         out_refs->push_back(O_1);
00922         out_pids->push_back(SAL_O_2);
00923         out_refs->push_back(O_2);
00924 
00925         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00926 
00927 
00928         return pi_pi2ge_pi_template::create(TEM_SAL_1,instr_patts);
00929 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SAR_1 (  ) 

Definition at line 931 of file pi_pi2ge_pi_template.mdg.cc.

References CVT_O_1, I_1, I_2, INSTRUCTION_CONVERT__1, INSTRUCTION_SAR__1, O_1, O_2, PIN_1, PIN_2, POUT_1, SAR_O_2, and TEM_SAR_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00931                                                                   {
00932         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00933 
00934         ptr<vector<ulint> > instrs;
00935         ptr<vector<ulint> > in_pids;
00936         ptr<vector<ulint> > out_pids;
00937         ptr<vector<ulint> > in_refs;
00938         ptr<vector<ulint> > out_refs;
00939         
00940         instrs = vector<ulint>::create();
00941         in_pids = vector<ulint>::create();
00942         out_pids = vector<ulint>::create();
00943         in_refs = vector<ulint>::create();
00944         out_refs = vector<ulint>::create();
00945 
00946         instrs->push_back(INSTRUCTION_CONVERT__1);
00947 
00948         //input operands
00949         in_pids->push_back(PIN_2);
00950         in_refs->push_back(I_1);
00951 
00952         //output operands
00953         out_pids->push_back(CVT_O_1);
00954         out_refs->push_back(O_1);
00955 
00956         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00957 
00958 
00959         instrs = vector<ulint>::create();
00960         in_pids = vector<ulint>::create();
00961         out_pids = vector<ulint>::create();
00962         in_refs = vector<ulint>::create();
00963         out_refs = vector<ulint>::create();
00964 
00965         instrs->push_back(INSTRUCTION_SAR__1);
00966 
00967         //input operands
00968         in_pids->push_back(PIN_1);
00969         in_refs->push_back(I_1);
00970         in_pids->push_back(CVT_O_1);
00971         in_refs->push_back(I_2);
00972 
00973         //output operands
00974         out_pids->push_back(POUT_1);
00975         out_refs->push_back(O_1);
00976         out_pids->push_back(SAR_O_2);
00977         out_refs->push_back(O_2);
00978 
00979         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00980 
00981 
00982         return pi_pi2ge_pi_template::create(TEM_SAR_1,instr_patts);
00983 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBE_1 (  ) 

Definition at line 2268 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETE__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBE_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02268                                                                   {
02269         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02270 
02271         ptr<vector<ulint> > instrs;
02272         ptr<vector<ulint> > in_pids;
02273         ptr<vector<ulint> > out_pids;
02274         ptr<vector<ulint> > in_refs;
02275         ptr<vector<ulint> > out_refs;
02276         
02277         instrs = vector<ulint>::create();
02278         in_pids = vector<ulint>::create();
02279         out_pids = vector<ulint>::create();
02280         in_refs = vector<ulint>::create();
02281         out_refs = vector<ulint>::create();
02282 
02283         instrs->push_back(INSTRUCTION_CMP__2);
02284 
02285         //input operands
02286         in_pids->push_back(PIN_1);
02287         in_refs->push_back(I_1);
02288         in_pids->push_back(PIN_2);
02289         in_refs->push_back(I_2);
02290 
02291         //output operands
02292         out_pids->push_back(CMP_O_1);
02293         out_refs->push_back(O_1);
02294 
02295         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02296 
02297 
02298         instrs = vector<ulint>::create();
02299         in_pids = vector<ulint>::create();
02300         out_pids = vector<ulint>::create();
02301         in_refs = vector<ulint>::create();
02302         out_refs = vector<ulint>::create();
02303 
02304         instrs->push_back(INSTRUCTION_SETE__1);
02305 
02306         //input operands
02307         in_pids->push_back(CMP_O_1);
02308         in_refs->push_back(I_1);
02309 
02310         //output operands
02311         out_pids->push_back(POUT_1);
02312         out_refs->push_back(O_1);
02313 
02314         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02315 
02316 
02317         return pi_pi2ge_pi_template::create(TEM_SBE_1,instr_patts);
02318 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBG_1 (  ) 

Definition at line 2162 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETA__1, INSTRUCTION_SETG__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBG_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02162                                                                   {
02163         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02164 
02165         ptr<vector<ulint> > instrs;
02166         ptr<vector<ulint> > in_pids;
02167         ptr<vector<ulint> > out_pids;
02168         ptr<vector<ulint> > in_refs;
02169         ptr<vector<ulint> > out_refs;
02170         
02171         instrs = vector<ulint>::create();
02172         in_pids = vector<ulint>::create();
02173         out_pids = vector<ulint>::create();
02174         in_refs = vector<ulint>::create();
02175         out_refs = vector<ulint>::create();
02176 
02177         instrs->push_back(INSTRUCTION_CMP__2);
02178 
02179         //input operands
02180         in_pids->push_back(PIN_1);
02181         in_refs->push_back(I_1);
02182         in_pids->push_back(PIN_2);
02183         in_refs->push_back(I_2);
02184 
02185         //output operands
02186         out_pids->push_back(CMP_O_1);
02187         out_refs->push_back(O_1);
02188 
02189         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02190 
02191 
02192         instrs = vector<ulint>::create();
02193         in_pids = vector<ulint>::create();
02194         out_pids = vector<ulint>::create();
02195         in_refs = vector<ulint>::create();
02196         out_refs = vector<ulint>::create();
02197 
02198         instrs->push_back(INSTRUCTION_SETG__1);
02199         instrs->push_back(INSTRUCTION_SETA__1);
02200 
02201         //input operands
02202         in_pids->push_back(CMP_O_1);
02203         in_refs->push_back(I_1);
02204 
02205         //output operands
02206         out_pids->push_back(POUT_1);
02207         out_refs->push_back(O_1);
02208 
02209         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02210 
02211 
02212         return pi_pi2ge_pi_template::create(TEM_SBG_1,instr_patts);
02213 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBL_1 (  ) 

Definition at line 2215 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETB__1, INSTRUCTION_SETL__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02215                                                                   {
02216         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02217 
02218         ptr<vector<ulint> > instrs;
02219         ptr<vector<ulint> > in_pids;
02220         ptr<vector<ulint> > out_pids;
02221         ptr<vector<ulint> > in_refs;
02222         ptr<vector<ulint> > out_refs;
02223         
02224         instrs = vector<ulint>::create();
02225         in_pids = vector<ulint>::create();
02226         out_pids = vector<ulint>::create();
02227         in_refs = vector<ulint>::create();
02228         out_refs = vector<ulint>::create();
02229 
02230         instrs->push_back(INSTRUCTION_CMP__2);
02231 
02232         //input operands
02233         in_pids->push_back(PIN_1);
02234         in_refs->push_back(I_1);
02235         in_pids->push_back(PIN_2);
02236         in_refs->push_back(I_2);
02237 
02238         //output operands
02239         out_pids->push_back(CMP_O_1);
02240         out_refs->push_back(O_1);
02241 
02242         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02243 
02244 
02245         instrs = vector<ulint>::create();
02246         in_pids = vector<ulint>::create();
02247         out_pids = vector<ulint>::create();
02248         in_refs = vector<ulint>::create();
02249         out_refs = vector<ulint>::create();
02250 
02251         instrs->push_back(INSTRUCTION_SETL__1);
02252         instrs->push_back(INSTRUCTION_SETB__1);
02253 
02254         //input operands
02255         in_pids->push_back(CMP_O_1);
02256         in_refs->push_back(I_1);
02257 
02258         //output operands
02259         out_pids->push_back(POUT_1);
02260         out_refs->push_back(O_1);
02261 
02262         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02263 
02264 
02265         return pi_pi2ge_pi_template::create(TEM_SBL_1,instr_patts);
02266 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBNE_1 (  ) 

Definition at line 2426 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETNE__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBNE_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02426                                                                    {
02427         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02428 
02429         ptr<vector<ulint> > instrs;
02430         ptr<vector<ulint> > in_pids;
02431         ptr<vector<ulint> > out_pids;
02432         ptr<vector<ulint> > in_refs;
02433         ptr<vector<ulint> > out_refs;
02434         
02435         instrs = vector<ulint>::create();
02436         in_pids = vector<ulint>::create();
02437         out_pids = vector<ulint>::create();
02438         in_refs = vector<ulint>::create();
02439         out_refs = vector<ulint>::create();
02440 
02441         instrs->push_back(INSTRUCTION_CMP__2);
02442 
02443         //input operands
02444         in_pids->push_back(PIN_1);
02445         in_refs->push_back(I_1);
02446         in_pids->push_back(PIN_2);
02447         in_refs->push_back(I_2);
02448 
02449         //output operands
02450         out_pids->push_back(CMP_O_1);
02451         out_refs->push_back(O_1);
02452 
02453         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02454 
02455 
02456         instrs = vector<ulint>::create();
02457         in_pids = vector<ulint>::create();
02458         out_pids = vector<ulint>::create();
02459         in_refs = vector<ulint>::create();
02460         out_refs = vector<ulint>::create();
02461 
02462         instrs->push_back(INSTRUCTION_SETNE__1);
02463 
02464         //input operands
02465         in_pids->push_back(CMP_O_1);
02466         in_refs->push_back(I_1);
02467 
02468         //output operands
02469         out_pids->push_back(POUT_1);
02470         out_refs->push_back(O_1);
02471 
02472         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02473 
02474 
02475         return pi_pi2ge_pi_template::create(TEM_SBNE_1,instr_patts);
02476 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBNG_1 (  ) 

Definition at line 2320 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETNA__1, INSTRUCTION_SETNG__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBNG_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02320                                                                    {
02321         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02322 
02323         ptr<vector<ulint> > instrs;
02324         ptr<vector<ulint> > in_pids;
02325         ptr<vector<ulint> > out_pids;
02326         ptr<vector<ulint> > in_refs;
02327         ptr<vector<ulint> > out_refs;
02328         
02329         instrs = vector<ulint>::create();
02330         in_pids = vector<ulint>::create();
02331         out_pids = vector<ulint>::create();
02332         in_refs = vector<ulint>::create();
02333         out_refs = vector<ulint>::create();
02334 
02335         instrs->push_back(INSTRUCTION_CMP__2);
02336 
02337         //input operands
02338         in_pids->push_back(PIN_1);
02339         in_refs->push_back(I_1);
02340         in_pids->push_back(PIN_2);
02341         in_refs->push_back(I_2);
02342 
02343         //output operands
02344         out_pids->push_back(CMP_O_1);
02345         out_refs->push_back(O_1);
02346 
02347         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02348 
02349 
02350         instrs = vector<ulint>::create();
02351         in_pids = vector<ulint>::create();
02352         out_pids = vector<ulint>::create();
02353         in_refs = vector<ulint>::create();
02354         out_refs = vector<ulint>::create();
02355 
02356         instrs->push_back(INSTRUCTION_SETNG__1);
02357         instrs->push_back(INSTRUCTION_SETNA__1);
02358 
02359         //input operands
02360         in_pids->push_back(CMP_O_1);
02361         in_refs->push_back(I_1);
02362 
02363         //output operands
02364         out_pids->push_back(POUT_1);
02365         out_refs->push_back(O_1);
02366 
02367         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02368 
02369 
02370         return pi_pi2ge_pi_template::create(TEM_SBNG_1,instr_patts);
02371 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SBNL_1 (  ) 

Definition at line 2373 of file pi_pi2ge_pi_template.mdg.cc.

References CMP_O_1, I_1, I_2, INSTRUCTION_CMP__2, INSTRUCTION_SETNB__1, INSTRUCTION_SETNL__1, O_1, PIN_1, PIN_2, POUT_1, and TEM_SBNL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

02373                                                                    {
02374         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02375 
02376         ptr<vector<ulint> > instrs;
02377         ptr<vector<ulint> > in_pids;
02378         ptr<vector<ulint> > out_pids;
02379         ptr<vector<ulint> > in_refs;
02380         ptr<vector<ulint> > out_refs;
02381         
02382         instrs = vector<ulint>::create();
02383         in_pids = vector<ulint>::create();
02384         out_pids = vector<ulint>::create();
02385         in_refs = vector<ulint>::create();
02386         out_refs = vector<ulint>::create();
02387 
02388         instrs->push_back(INSTRUCTION_CMP__2);
02389 
02390         //input operands
02391         in_pids->push_back(PIN_1);
02392         in_refs->push_back(I_1);
02393         in_pids->push_back(PIN_2);
02394         in_refs->push_back(I_2);
02395 
02396         //output operands
02397         out_pids->push_back(CMP_O_1);
02398         out_refs->push_back(O_1);
02399 
02400         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02401 
02402 
02403         instrs = vector<ulint>::create();
02404         in_pids = vector<ulint>::create();
02405         out_pids = vector<ulint>::create();
02406         in_refs = vector<ulint>::create();
02407         out_refs = vector<ulint>::create();
02408 
02409         instrs->push_back(INSTRUCTION_SETNL__1);
02410         instrs->push_back(INSTRUCTION_SETNB__1);
02411 
02412         //input operands
02413         in_pids->push_back(CMP_O_1);
02414         in_refs->push_back(I_1);
02415 
02416         //output operands
02417         out_pids->push_back(POUT_1);
02418         out_refs->push_back(O_1);
02419 
02420         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02421 
02422 
02423         return pi_pi2ge_pi_template::create(TEM_SBNL_1,instr_patts);
02424 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SHL_1 (  ) 

Definition at line 769 of file pi_pi2ge_pi_template.mdg.cc.

References CVT_O_1, I_1, I_2, INSTRUCTION_CONVERT__1, INSTRUCTION_SHL__1, O_1, O_2, PIN_1, PIN_2, POUT_1, SHL_O_2, and TEM_SHL_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00769                                                                   {
00770         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00771 
00772         ptr<vector<ulint> > instrs;
00773         ptr<vector<ulint> > in_pids;
00774         ptr<vector<ulint> > out_pids;
00775         ptr<vector<ulint> > in_refs;
00776         ptr<vector<ulint> > out_refs;
00777         
00778         instrs = vector<ulint>::create();
00779         in_pids = vector<ulint>::create();
00780         out_pids = vector<ulint>::create();
00781         in_refs = vector<ulint>::create();
00782         out_refs = vector<ulint>::create();
00783 
00784         instrs->push_back(INSTRUCTION_CONVERT__1);
00785 
00786         //input operands
00787         in_pids->push_back(PIN_2);
00788         in_refs->push_back(I_1);
00789 
00790         //output operands
00791         out_pids->push_back(CVT_O_1);
00792         out_refs->push_back(O_1);
00793 
00794         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00795 
00796 
00797         instrs = vector<ulint>::create();
00798         in_pids = vector<ulint>::create();
00799         out_pids = vector<ulint>::create();
00800         in_refs = vector<ulint>::create();
00801         out_refs = vector<ulint>::create();
00802 
00803         instrs->push_back(INSTRUCTION_SHL__1);
00804 
00805         //input operands
00806         in_pids->push_back(PIN_1);
00807         in_refs->push_back(I_1);
00808         in_pids->push_back(CVT_O_1);
00809         in_refs->push_back(I_2);
00810 
00811         //output operands
00812         out_pids->push_back(POUT_1);
00813         out_refs->push_back(O_1);
00814         out_pids->push_back(SHL_O_2);
00815         out_refs->push_back(O_2);
00816 
00817         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00818 
00819 
00820         return pi_pi2ge_pi_template::create(TEM_SHL_1,instr_patts);
00821 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SHR_1 (  ) 

Definition at line 823 of file pi_pi2ge_pi_template.mdg.cc.

References CVT_O_1, I_1, I_2, INSTRUCTION_CONVERT__1, INSTRUCTION_SHR__1, O_1, O_2, PIN_1, PIN_2, POUT_1, SHR_O_2, and TEM_SHR_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00823                                                                   {
00824         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00825 
00826         ptr<vector<ulint> > instrs;
00827         ptr<vector<ulint> > in_pids;
00828         ptr<vector<ulint> > out_pids;
00829         ptr<vector<ulint> > in_refs;
00830         ptr<vector<ulint> > out_refs;
00831         
00832         instrs = vector<ulint>::create();
00833         in_pids = vector<ulint>::create();
00834         out_pids = vector<ulint>::create();
00835         in_refs = vector<ulint>::create();
00836         out_refs = vector<ulint>::create();
00837 
00838         instrs->push_back(INSTRUCTION_CONVERT__1);
00839 
00840         //input operands
00841         in_pids->push_back(PIN_2);
00842         in_refs->push_back(I_1);
00843 
00844         //output operands
00845         out_pids->push_back(CVT_O_1);
00846         out_refs->push_back(O_1);
00847 
00848         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00849 
00850 
00851         instrs = vector<ulint>::create();
00852         in_pids = vector<ulint>::create();
00853         out_pids = vector<ulint>::create();
00854         in_refs = vector<ulint>::create();
00855         out_refs = vector<ulint>::create();
00856 
00857         instrs->push_back(INSTRUCTION_SHR__1);
00858 
00859         //input operands
00860         in_pids->push_back(PIN_1);
00861         in_refs->push_back(I_1);
00862         in_pids->push_back(CVT_O_1);
00863         in_refs->push_back(I_2);
00864 
00865         //output operands
00866         out_pids->push_back(POUT_1);
00867         out_refs->push_back(O_1);
00868         out_pids->push_back(SHR_O_2);
00869         out_refs->push_back(O_2);
00870 
00871         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00872 
00873 
00874         return pi_pi2ge_pi_template::create(TEM_SHR_1,instr_patts);
00875 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_ST_1 (  ) 

Definition at line 1417 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, O_1, PIN_1, POUT_1, and TEM_ST_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01417                                                                  {
01418         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01419 
01420         ptr<vector<ulint> > instrs;
01421         ptr<vector<ulint> > in_pids;
01422         ptr<vector<ulint> > out_pids;
01423         ptr<vector<ulint> > in_refs;
01424         ptr<vector<ulint> > out_refs;
01425         
01426         instrs = vector<ulint>::create();
01427         in_pids = vector<ulint>::create();
01428         out_pids = vector<ulint>::create();
01429         in_refs = vector<ulint>::create();
01430         out_refs = vector<ulint>::create();
01431 
01432         instrs->push_back(INSTRUCTION_MOV__2);
01433         instrs->push_back(INSTRUCTION_MOV__1);
01434 
01435         //input operands
01436         in_pids->push_back(PIN_1);
01437         in_refs->push_back(I_1);
01438 
01439         //output operands
01440         out_pids->push_back(POUT_1);
01441         out_refs->push_back(O_1);
01442 
01443         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01444 
01445 
01446         return pi_pi2ge_pi_template::create(TEM_ST_1,instr_patts);
01447 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_STI_1 (  ) 

Definition at line 1481 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__4, O_1, PIN_1, POUT_1, and TEM_STI_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01481                                                                   {
01482         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01483 
01484         ptr<vector<ulint> > instrs;
01485         ptr<vector<ulint> > in_pids;
01486         ptr<vector<ulint> > out_pids;
01487         ptr<vector<ulint> > in_refs;
01488         ptr<vector<ulint> > out_refs;
01489         
01490         instrs = vector<ulint>::create();
01491         in_pids = vector<ulint>::create();
01492         out_pids = vector<ulint>::create();
01493         in_refs = vector<ulint>::create();
01494         out_refs = vector<ulint>::create();
01495 
01496         instrs->push_back(INSTRUCTION_MOV__4);
01497 
01498         //input operands
01499         in_pids->push_back(PIN_1);
01500         in_refs->push_back(I_1);
01501 
01502         //output operands
01503         out_pids->push_back(POUT_1);
01504         out_refs->push_back(O_1);
01505 
01506         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01507 
01508 
01509         return pi_pi2ge_pi_template::create(TEM_STI_1,instr_patts);
01510 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_STIV_1 (  ) 

Definition at line 1512 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__4, O_1, PIN_1, POUT_1, and TEM_STIV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01512                                                                    {
01513         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01514 
01515         ptr<vector<ulint> > instrs;
01516         ptr<vector<ulint> > in_pids;
01517         ptr<vector<ulint> > out_pids;
01518         ptr<vector<ulint> > in_refs;
01519         ptr<vector<ulint> > out_refs;
01520         
01521         instrs = vector<ulint>::create();
01522         in_pids = vector<ulint>::create();
01523         out_pids = vector<ulint>::create();
01524         in_refs = vector<ulint>::create();
01525         out_refs = vector<ulint>::create();
01526 
01527         instrs->push_back(INSTRUCTION_MOV__4);
01528 
01529         //input operands
01530         in_pids->push_back(PIN_1);
01531         in_refs->push_back(I_1);
01532 
01533         //output operands
01534         out_pids->push_back(POUT_1);
01535         out_refs->push_back(O_1);
01536 
01537         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01538 
01539 
01540         return pi_pi2ge_pi_template::create(TEM_STIV_1,instr_patts);
01541 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_STP_1 (  ) 

Definition at line 1543 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_MOV__7, O_1, PIN_1, PIN_2, POUT_1, and TEM_STP_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01543                                                                   {
01544         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01545 
01546         ptr<vector<ulint> > instrs;
01547         ptr<vector<ulint> > in_pids;
01548         ptr<vector<ulint> > out_pids;
01549         ptr<vector<ulint> > in_refs;
01550         ptr<vector<ulint> > out_refs;
01551         
01552         instrs = vector<ulint>::create();
01553         in_pids = vector<ulint>::create();
01554         out_pids = vector<ulint>::create();
01555         in_refs = vector<ulint>::create();
01556         out_refs = vector<ulint>::create();
01557 
01558         instrs->push_back(INSTRUCTION_MOV__7);
01559 
01560         //input operands
01561         in_pids->push_back(PIN_1);
01562         in_refs->push_back(I_1);
01563         in_pids->push_back(PIN_2);
01564         in_refs->push_back(I_2);
01565 
01566         //output operands
01567         out_pids->push_back(POUT_1);
01568         out_refs->push_back(O_1);
01569 
01570         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01571 
01572 
01573         return pi_pi2ge_pi_template::create(TEM_STP_1,instr_patts);
01574 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_STPV_1 (  ) 

Definition at line 1576 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_MOV__7, O_1, PIN_1, PIN_2, POUT_1, and TEM_STPV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01576                                                                    {
01577         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01578 
01579         ptr<vector<ulint> > instrs;
01580         ptr<vector<ulint> > in_pids;
01581         ptr<vector<ulint> > out_pids;
01582         ptr<vector<ulint> > in_refs;
01583         ptr<vector<ulint> > out_refs;
01584         
01585         instrs = vector<ulint>::create();
01586         in_pids = vector<ulint>::create();
01587         out_pids = vector<ulint>::create();
01588         in_refs = vector<ulint>::create();
01589         out_refs = vector<ulint>::create();
01590 
01591         instrs->push_back(INSTRUCTION_MOV__7);
01592 
01593         //input operands
01594         in_pids->push_back(PIN_1);
01595         in_refs->push_back(I_1);
01596         in_pids->push_back(PIN_2);
01597         in_refs->push_back(I_2);
01598 
01599         //output operands
01600         out_pids->push_back(POUT_1);
01601         out_refs->push_back(O_1);
01602 
01603         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01604 
01605 
01606         return pi_pi2ge_pi_template::create(TEM_STPV_1,instr_patts);
01607 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_STV_1 (  ) 

Definition at line 1449 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, O_1, PIN_1, POUT_1, and TEM_STV_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

01449                                                                   {
01450         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01451 
01452         ptr<vector<ulint> > instrs;
01453         ptr<vector<ulint> > in_pids;
01454         ptr<vector<ulint> > out_pids;
01455         ptr<vector<ulint> > in_refs;
01456         ptr<vector<ulint> > out_refs;
01457         
01458         instrs = vector<ulint>::create();
01459         in_pids = vector<ulint>::create();
01460         out_pids = vector<ulint>::create();
01461         in_refs = vector<ulint>::create();
01462         out_refs = vector<ulint>::create();
01463 
01464         instrs->push_back(INSTRUCTION_MOV__2);
01465         instrs->push_back(INSTRUCTION_MOV__1);
01466 
01467         //input operands
01468         in_pids->push_back(PIN_1);
01469         in_refs->push_back(I_1);
01470 
01471         //output operands
01472         out_pids->push_back(POUT_1);
01473         out_refs->push_back(O_1);
01474 
01475         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01476 
01477 
01478         return pi_pi2ge_pi_template::create(TEM_STV_1,instr_patts);
01479 }

ptr<pi_pi2ge_pi_template> lestes::md::instructions::pi_pi2ge_pi_template_create_TEM_SUB_1 (  ) 

Definition at line 55 of file pi_pi2ge_pi_template.mdg.cc.

References I_1, I_2, INSTRUCTION_SUB__1, INSTRUCTION_SUB__11, INSTRUCTION_SUB__12, O_1, O_2, PIN_1, PIN_2, POUT_1, SUB_O_2, and TEM_SUB_1.

Referenced by lestes::md::instructions::pi_pi2ge_pi_template::instance().

00055                                                                   {
00056         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00057 
00058         ptr<vector<ulint> > instrs;
00059         ptr<vector<ulint> > in_pids;
00060         ptr<vector<ulint> > out_pids;
00061         ptr<vector<ulint> > in_refs;
00062         ptr<vector<ulint> > out_refs;
00063         
00064         instrs = vector<ulint>::create();
00065         in_pids = vector<ulint>::create();
00066         out_pids = vector<ulint>::create();
00067         in_refs = vector<ulint>::create();
00068         out_refs = vector<ulint>::create();
00069 
00070         instrs->push_back(INSTRUCTION_SUB__1);
00071         instrs->push_back(INSTRUCTION_SUB__11);
00072         instrs->push_back(INSTRUCTION_SUB__12);
00073 
00074         //input operands
00075         in_pids->push_back(PIN_1);
00076         in_refs->push_back(I_1);
00077         in_pids->push_back(PIN_2);
00078         in_refs->push_back(I_2);
00079 
00080         //output operands
00081         out_pids->push_back(POUT_1);
00082         out_refs->push_back(O_1);
00083         out_pids->push_back(SUB_O_2);
00084         out_refs->push_back(O_2);
00085 
00086         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00087 
00088 
00089         return pi_pi2ge_pi_template::create(TEM_SUB_1,instr_patts);
00090 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ADD__1 (  ) 

Definition at line 964 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00964                                                    {
00965         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00966         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00967         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00968         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00969         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00970         ptr<execution_info> einfo;
00971         ptr<set<ulint> > versions;
00972         
00973         //input operands
00974         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00975         dt_list_I_1->insert(DT_INT_8P);
00976         dt_list_I_1->insert(DT_INT_8U);
00977         dt_list_I_1->insert(DT_INT_8S);
00978         dt_list_I_1->insert(DT_INT_16U);
00979         dt_list_I_1->insert(DT_INT_16S);
00980         dt_list_I_1->insert(DT_INT_32U);
00981         dt_list_I_1->insert(DT_INT_32S);
00982         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00983         reg_list_I_1->insert(R_EAX);
00984         reg_list_I_1->insert(R_EBX);
00985         reg_list_I_1->insert(R_ECX);
00986         reg_list_I_1->insert(R_EDX);
00987         reg_list_I_1->insert(R_EDI);
00988         reg_list_I_1->insert(R_ESI);
00989         reg_list_I_1->insert(R_AX);
00990         reg_list_I_1->insert(R_BX);
00991         reg_list_I_1->insert(R_CX);
00992         reg_list_I_1->insert(R_DX);
00993         reg_list_I_1->insert(R_DI);
00994         reg_list_I_1->insert(R_SI);
00995         reg_list_I_1->insert(R_AL);
00996         reg_list_I_1->insert(R_AH);
00997         reg_list_I_1->insert(R_BL);
00998         reg_list_I_1->insert(R_BH);
00999         reg_list_I_1->insert(R_CL);
01000         reg_list_I_1->insert(R_CH);
01001         reg_list_I_1->insert(R_DL);
01002         reg_list_I_1->insert(R_DH);
01003         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01004         op_I_1->destroyed_by_get()->push_back(O_1);
01005         in_operands->push_back(op_I_1);
01006         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01007         dt_list_I_2->insert(DT_INT_8P);
01008         dt_list_I_2->insert(DT_INT_8U);
01009         dt_list_I_2->insert(DT_INT_8S);
01010         dt_list_I_2->insert(DT_INT_16U);
01011         dt_list_I_2->insert(DT_INT_16S);
01012         dt_list_I_2->insert(DT_INT_32U);
01013         dt_list_I_2->insert(DT_INT_32S);
01014         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01015         reg_list_I_2->insert(R_EAX);
01016         reg_list_I_2->insert(R_EBX);
01017         reg_list_I_2->insert(R_ECX);
01018         reg_list_I_2->insert(R_EDX);
01019         reg_list_I_2->insert(R_EDI);
01020         reg_list_I_2->insert(R_ESI);
01021         reg_list_I_2->insert(R_AX);
01022         reg_list_I_2->insert(R_BX);
01023         reg_list_I_2->insert(R_CX);
01024         reg_list_I_2->insert(R_DX);
01025         reg_list_I_2->insert(R_DI);
01026         reg_list_I_2->insert(R_SI);
01027         reg_list_I_2->insert(R_AL);
01028         reg_list_I_2->insert(R_AH);
01029         reg_list_I_2->insert(R_BL);
01030         reg_list_I_2->insert(R_BH);
01031         reg_list_I_2->insert(R_CL);
01032         reg_list_I_2->insert(R_CH);
01033         reg_list_I_2->insert(R_DL);
01034         reg_list_I_2->insert(R_DH);
01035         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01036         in_operands->push_back(op_I_2);
01037 
01038         //output operands
01039         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01040         dt_list_O_1->insert(DT_INT_8P);
01041         dt_list_O_1->insert(DT_INT_8U);
01042         dt_list_O_1->insert(DT_INT_8S);
01043         dt_list_O_1->insert(DT_INT_16U);
01044         dt_list_O_1->insert(DT_INT_16S);
01045         dt_list_O_1->insert(DT_INT_32U);
01046         dt_list_O_1->insert(DT_INT_32S);
01047         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01048         reg_list_O_1->insert(R_EAX);
01049         reg_list_O_1->insert(R_EBX);
01050         reg_list_O_1->insert(R_ECX);
01051         reg_list_O_1->insert(R_EDX);
01052         reg_list_O_1->insert(R_EDI);
01053         reg_list_O_1->insert(R_ESI);
01054         reg_list_O_1->insert(R_AX);
01055         reg_list_O_1->insert(R_BX);
01056         reg_list_O_1->insert(R_CX);
01057         reg_list_O_1->insert(R_DX);
01058         reg_list_O_1->insert(R_DI);
01059         reg_list_O_1->insert(R_SI);
01060         reg_list_O_1->insert(R_AL);
01061         reg_list_O_1->insert(R_AH);
01062         reg_list_O_1->insert(R_BL);
01063         reg_list_O_1->insert(R_BH);
01064         reg_list_O_1->insert(R_CL);
01065         reg_list_O_1->insert(R_CH);
01066         reg_list_O_1->insert(R_DL);
01067         reg_list_O_1->insert(R_DH);
01068         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01069         op_O_1->destroys_set(I_1);
01070         out_operands->push_back(op_O_1);
01071         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01072         dt_list_O_2->insert(DT_COND);
01073         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01074         reg_list_O_2->insert(R_COND);
01075         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01076         out_operands->push_back(op_O_2);
01077 
01078         //execution info
01079         einfo = execution_info::create(10);
01080 
01081         //properties
01082 
01083         //versions
01084         versions = set<ulint>::create();
01085         versions->insert(INSTRUCTION_ADD__11);
01086         versions->insert(INSTRUCTION_ADD__12);
01087         versions->insert(INSTRUCTION_ADD__13);
01088         versions->insert(INSTRUCTION_ADD__14);
01089 
01090 
01091         //return target pseudoinstruction
01092         return tm_instr::create(INSTRUCTION_ADD__1,in_operands,out_operands,lstring("add $O_1, $I_2"), props,versions,0,einfo);
01093 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ADD__11 (  ) 

Definition at line 1095 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01095                                                     {
01096         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01097         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01098         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01099         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01100         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01101         ptr<execution_info> einfo;
01102         ptr<set<ulint> > versions;
01103         
01104         //input operands
01105         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01106         dt_list_I_1->insert(DT_INT_8P);
01107         dt_list_I_1->insert(DT_INT_8U);
01108         dt_list_I_1->insert(DT_INT_8S);
01109         dt_list_I_1->insert(DT_INT_16U);
01110         dt_list_I_1->insert(DT_INT_16S);
01111         dt_list_I_1->insert(DT_INT_32U);
01112         dt_list_I_1->insert(DT_INT_32S);
01113         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01114         reg_list_I_1->insert(R_EAX);
01115         reg_list_I_1->insert(R_EBX);
01116         reg_list_I_1->insert(R_ECX);
01117         reg_list_I_1->insert(R_EDX);
01118         reg_list_I_1->insert(R_EDI);
01119         reg_list_I_1->insert(R_ESI);
01120         reg_list_I_1->insert(R_AX);
01121         reg_list_I_1->insert(R_BX);
01122         reg_list_I_1->insert(R_CX);
01123         reg_list_I_1->insert(R_DX);
01124         reg_list_I_1->insert(R_DI);
01125         reg_list_I_1->insert(R_SI);
01126         reg_list_I_1->insert(R_AL);
01127         reg_list_I_1->insert(R_AH);
01128         reg_list_I_1->insert(R_BL);
01129         reg_list_I_1->insert(R_BH);
01130         reg_list_I_1->insert(R_CL);
01131         reg_list_I_1->insert(R_CH);
01132         reg_list_I_1->insert(R_DL);
01133         reg_list_I_1->insert(R_DH);
01134         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01135         op_I_1->destroyed_by_get()->push_back(O_1);
01136         in_operands->push_back(op_I_1);
01137         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01138         dt_list_I_2->insert(DT_INT_8P);
01139         dt_list_I_2->insert(DT_INT_8U);
01140         dt_list_I_2->insert(DT_INT_8S);
01141         dt_list_I_2->insert(DT_INT_16U);
01142         dt_list_I_2->insert(DT_INT_16S);
01143         dt_list_I_2->insert(DT_INT_32U);
01144         dt_list_I_2->insert(DT_INT_32S);
01145         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
01146         in_operands->push_back(op_I_2);
01147 
01148         //output operands
01149         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01150         dt_list_O_1->insert(DT_INT_8P);
01151         dt_list_O_1->insert(DT_INT_8U);
01152         dt_list_O_1->insert(DT_INT_8S);
01153         dt_list_O_1->insert(DT_INT_16U);
01154         dt_list_O_1->insert(DT_INT_16S);
01155         dt_list_O_1->insert(DT_INT_32U);
01156         dt_list_O_1->insert(DT_INT_32S);
01157         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01158         reg_list_O_1->insert(R_EAX);
01159         reg_list_O_1->insert(R_EBX);
01160         reg_list_O_1->insert(R_ECX);
01161         reg_list_O_1->insert(R_EDX);
01162         reg_list_O_1->insert(R_EDI);
01163         reg_list_O_1->insert(R_ESI);
01164         reg_list_O_1->insert(R_AX);
01165         reg_list_O_1->insert(R_BX);
01166         reg_list_O_1->insert(R_CX);
01167         reg_list_O_1->insert(R_DX);
01168         reg_list_O_1->insert(R_DI);
01169         reg_list_O_1->insert(R_SI);
01170         reg_list_O_1->insert(R_AL);
01171         reg_list_O_1->insert(R_AH);
01172         reg_list_O_1->insert(R_BL);
01173         reg_list_O_1->insert(R_BH);
01174         reg_list_O_1->insert(R_CL);
01175         reg_list_O_1->insert(R_CH);
01176         reg_list_O_1->insert(R_DL);
01177         reg_list_O_1->insert(R_DH);
01178         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01179         op_O_1->destroys_set(I_1);
01180         out_operands->push_back(op_O_1);
01181         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01182         dt_list_O_2->insert(DT_COND);
01183         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01184         reg_list_O_2->insert(R_COND);
01185         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01186         out_operands->push_back(op_O_2);
01187 
01188         //execution info
01189         einfo = execution_info::create(30);
01190 
01191         //properties
01192 
01193         //versions
01194         versions = set<ulint>::create();
01195         versions->insert(INSTRUCTION_ADD__1);
01196         versions->insert(INSTRUCTION_ADD__12);
01197         versions->insert(INSTRUCTION_ADD__13);
01198         versions->insert(INSTRUCTION_ADD__14);
01199 
01200 
01201         //return target pseudoinstruction
01202         return tm_instr::create(INSTRUCTION_ADD__11,in_operands,out_operands,lstring("add $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
01203 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ADD__12 (  ) 

Definition at line 1205 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01205                                                     {
01206         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01207         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01208         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01209         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01210         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01211         ptr<execution_info> einfo;
01212         ptr<set<ulint> > versions;
01213         
01214         //input operands
01215         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01216         dt_list_I_1->insert(DT_INT_8P);
01217         dt_list_I_1->insert(DT_INT_8U);
01218         dt_list_I_1->insert(DT_INT_8S);
01219         dt_list_I_1->insert(DT_INT_16U);
01220         dt_list_I_1->insert(DT_INT_16S);
01221         dt_list_I_1->insert(DT_INT_32U);
01222         dt_list_I_1->insert(DT_INT_32S);
01223         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
01224         in_operands->push_back(op_I_1);
01225         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01226         dt_list_I_2->insert(DT_INT_8P);
01227         dt_list_I_2->insert(DT_INT_8U);
01228         dt_list_I_2->insert(DT_INT_8S);
01229         dt_list_I_2->insert(DT_INT_16U);
01230         dt_list_I_2->insert(DT_INT_16S);
01231         dt_list_I_2->insert(DT_INT_32U);
01232         dt_list_I_2->insert(DT_INT_32S);
01233         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01234         reg_list_I_2->insert(R_EAX);
01235         reg_list_I_2->insert(R_EBX);
01236         reg_list_I_2->insert(R_ECX);
01237         reg_list_I_2->insert(R_EDX);
01238         reg_list_I_2->insert(R_EDI);
01239         reg_list_I_2->insert(R_ESI);
01240         reg_list_I_2->insert(R_AX);
01241         reg_list_I_2->insert(R_BX);
01242         reg_list_I_2->insert(R_CX);
01243         reg_list_I_2->insert(R_DX);
01244         reg_list_I_2->insert(R_DI);
01245         reg_list_I_2->insert(R_SI);
01246         reg_list_I_2->insert(R_AL);
01247         reg_list_I_2->insert(R_AH);
01248         reg_list_I_2->insert(R_BL);
01249         reg_list_I_2->insert(R_BH);
01250         reg_list_I_2->insert(R_CL);
01251         reg_list_I_2->insert(R_CH);
01252         reg_list_I_2->insert(R_DL);
01253         reg_list_I_2->insert(R_DH);
01254         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01255         op_I_2->destroyed_by_get()->push_back(O_1);
01256         in_operands->push_back(op_I_2);
01257 
01258         //output operands
01259         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01260         dt_list_O_1->insert(DT_INT_8P);
01261         dt_list_O_1->insert(DT_INT_8U);
01262         dt_list_O_1->insert(DT_INT_8S);
01263         dt_list_O_1->insert(DT_INT_16U);
01264         dt_list_O_1->insert(DT_INT_16S);
01265         dt_list_O_1->insert(DT_INT_32U);
01266         dt_list_O_1->insert(DT_INT_32S);
01267         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01268         reg_list_O_1->insert(R_EAX);
01269         reg_list_O_1->insert(R_EBX);
01270         reg_list_O_1->insert(R_ECX);
01271         reg_list_O_1->insert(R_EDX);
01272         reg_list_O_1->insert(R_EDI);
01273         reg_list_O_1->insert(R_ESI);
01274         reg_list_O_1->insert(R_AX);
01275         reg_list_O_1->insert(R_BX);
01276         reg_list_O_1->insert(R_CX);
01277         reg_list_O_1->insert(R_DX);
01278         reg_list_O_1->insert(R_DI);
01279         reg_list_O_1->insert(R_SI);
01280         reg_list_O_1->insert(R_AL);
01281         reg_list_O_1->insert(R_AH);
01282         reg_list_O_1->insert(R_BL);
01283         reg_list_O_1->insert(R_BH);
01284         reg_list_O_1->insert(R_CL);
01285         reg_list_O_1->insert(R_CH);
01286         reg_list_O_1->insert(R_DL);
01287         reg_list_O_1->insert(R_DH);
01288         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01289         op_O_1->destroys_set(I_2);
01290         out_operands->push_back(op_O_1);
01291         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01292         dt_list_O_2->insert(DT_COND);
01293         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01294         reg_list_O_2->insert(R_COND);
01295         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01296         out_operands->push_back(op_O_2);
01297 
01298         //execution info
01299         einfo = execution_info::create(30);
01300 
01301         //properties
01302 
01303         //versions
01304         versions = set<ulint>::create();
01305         versions->insert(INSTRUCTION_ADD__1);
01306         versions->insert(INSTRUCTION_ADD__11);
01307         versions->insert(INSTRUCTION_ADD__13);
01308         versions->insert(INSTRUCTION_ADD__14);
01309 
01310 
01311         //return target pseudoinstruction
01312         return tm_instr::create(INSTRUCTION_ADD__12,in_operands,out_operands,lstring("add $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
01313 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ADD__13 (  ) 

Definition at line 1315 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01315                                                     {
01316         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01317         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01318         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01319         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01320         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01321         ptr<execution_info> einfo;
01322         ptr<set<ulint> > versions;
01323         
01324         //input operands
01325         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01326         dt_list_I_1->insert(DT_INT_8P);
01327         dt_list_I_1->insert(DT_INT_8U);
01328         dt_list_I_1->insert(DT_INT_8S);
01329         dt_list_I_1->insert(DT_INT_16U);
01330         dt_list_I_1->insert(DT_INT_16S);
01331         dt_list_I_1->insert(DT_INT_32U);
01332         dt_list_I_1->insert(DT_INT_32S);
01333         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01334         reg_list_I_1->insert(R_EAX);
01335         reg_list_I_1->insert(R_EBX);
01336         reg_list_I_1->insert(R_ECX);
01337         reg_list_I_1->insert(R_EDX);
01338         reg_list_I_1->insert(R_EDI);
01339         reg_list_I_1->insert(R_ESI);
01340         reg_list_I_1->insert(R_AX);
01341         reg_list_I_1->insert(R_BX);
01342         reg_list_I_1->insert(R_CX);
01343         reg_list_I_1->insert(R_DX);
01344         reg_list_I_1->insert(R_DI);
01345         reg_list_I_1->insert(R_SI);
01346         reg_list_I_1->insert(R_AL);
01347         reg_list_I_1->insert(R_AH);
01348         reg_list_I_1->insert(R_BL);
01349         reg_list_I_1->insert(R_BH);
01350         reg_list_I_1->insert(R_CL);
01351         reg_list_I_1->insert(R_CH);
01352         reg_list_I_1->insert(R_DL);
01353         reg_list_I_1->insert(R_DH);
01354         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01355         op_I_1->destroyed_by_get()->push_back(O_1);
01356         in_operands->push_back(op_I_1);
01357         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01358         dt_list_I_2->insert(DT_INT_8P);
01359         dt_list_I_2->insert(DT_INT_8U);
01360         dt_list_I_2->insert(DT_INT_8S);
01361         dt_list_I_2->insert(DT_INT_16U);
01362         dt_list_I_2->insert(DT_INT_16S);
01363         dt_list_I_2->insert(DT_INT_32U);
01364         dt_list_I_2->insert(DT_INT_32S);
01365         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
01366         in_operands->push_back(op_I_2);
01367 
01368         //output operands
01369         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01370         dt_list_O_1->insert(DT_INT_8P);
01371         dt_list_O_1->insert(DT_INT_8U);
01372         dt_list_O_1->insert(DT_INT_8S);
01373         dt_list_O_1->insert(DT_INT_16U);
01374         dt_list_O_1->insert(DT_INT_16S);
01375         dt_list_O_1->insert(DT_INT_32U);
01376         dt_list_O_1->insert(DT_INT_32S);
01377         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01378         reg_list_O_1->insert(R_EAX);
01379         reg_list_O_1->insert(R_EBX);
01380         reg_list_O_1->insert(R_ECX);
01381         reg_list_O_1->insert(R_EDX);
01382         reg_list_O_1->insert(R_EDI);
01383         reg_list_O_1->insert(R_ESI);
01384         reg_list_O_1->insert(R_AX);
01385         reg_list_O_1->insert(R_BX);
01386         reg_list_O_1->insert(R_CX);
01387         reg_list_O_1->insert(R_DX);
01388         reg_list_O_1->insert(R_DI);
01389         reg_list_O_1->insert(R_SI);
01390         reg_list_O_1->insert(R_AL);
01391         reg_list_O_1->insert(R_AH);
01392         reg_list_O_1->insert(R_BL);
01393         reg_list_O_1->insert(R_BH);
01394         reg_list_O_1->insert(R_CL);
01395         reg_list_O_1->insert(R_CH);
01396         reg_list_O_1->insert(R_DL);
01397         reg_list_O_1->insert(R_DH);
01398         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01399         op_O_1->destroys_set(I_1);
01400         out_operands->push_back(op_O_1);
01401         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01402         dt_list_O_2->insert(DT_COND);
01403         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01404         reg_list_O_2->insert(R_COND);
01405         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01406         out_operands->push_back(op_O_2);
01407 
01408         //execution info
01409         einfo = execution_info::create(10);
01410 
01411         //properties
01412 
01413         //versions
01414         versions = set<ulint>::create();
01415         versions->insert(INSTRUCTION_ADD__1);
01416         versions->insert(INSTRUCTION_ADD__11);
01417         versions->insert(INSTRUCTION_ADD__12);
01418         versions->insert(INSTRUCTION_ADD__14);
01419 
01420 
01421         //return target pseudoinstruction
01422         return tm_instr::create(INSTRUCTION_ADD__13,in_operands,out_operands,lstring("add $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
01423 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ADD__14 (  ) 

Definition at line 1425 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_ADD__1, INSTRUCTION_ADD__11, INSTRUCTION_ADD__12, INSTRUCTION_ADD__13, INSTRUCTION_ADD__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01425                                                     {
01426         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01427         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01428         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01429         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01430         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01431         ptr<execution_info> einfo;
01432         ptr<set<ulint> > versions;
01433         
01434         //input operands
01435         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01436         dt_list_I_1->insert(DT_INT_8P);
01437         dt_list_I_1->insert(DT_INT_8U);
01438         dt_list_I_1->insert(DT_INT_8S);
01439         dt_list_I_1->insert(DT_INT_16U);
01440         dt_list_I_1->insert(DT_INT_16S);
01441         dt_list_I_1->insert(DT_INT_32U);
01442         dt_list_I_1->insert(DT_INT_32S);
01443         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
01444         in_operands->push_back(op_I_1);
01445         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01446         dt_list_I_2->insert(DT_INT_8P);
01447         dt_list_I_2->insert(DT_INT_8U);
01448         dt_list_I_2->insert(DT_INT_8S);
01449         dt_list_I_2->insert(DT_INT_16U);
01450         dt_list_I_2->insert(DT_INT_16S);
01451         dt_list_I_2->insert(DT_INT_32U);
01452         dt_list_I_2->insert(DT_INT_32S);
01453         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01454         reg_list_I_2->insert(R_EAX);
01455         reg_list_I_2->insert(R_EBX);
01456         reg_list_I_2->insert(R_ECX);
01457         reg_list_I_2->insert(R_EDX);
01458         reg_list_I_2->insert(R_EDI);
01459         reg_list_I_2->insert(R_ESI);
01460         reg_list_I_2->insert(R_AX);
01461         reg_list_I_2->insert(R_BX);
01462         reg_list_I_2->insert(R_CX);
01463         reg_list_I_2->insert(R_DX);
01464         reg_list_I_2->insert(R_DI);
01465         reg_list_I_2->insert(R_SI);
01466         reg_list_I_2->insert(R_AL);
01467         reg_list_I_2->insert(R_AH);
01468         reg_list_I_2->insert(R_BL);
01469         reg_list_I_2->insert(R_BH);
01470         reg_list_I_2->insert(R_CL);
01471         reg_list_I_2->insert(R_CH);
01472         reg_list_I_2->insert(R_DL);
01473         reg_list_I_2->insert(R_DH);
01474         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01475         op_I_2->destroyed_by_get()->push_back(O_1);
01476         in_operands->push_back(op_I_2);
01477 
01478         //output operands
01479         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01480         dt_list_O_1->insert(DT_INT_8P);
01481         dt_list_O_1->insert(DT_INT_8U);
01482         dt_list_O_1->insert(DT_INT_8S);
01483         dt_list_O_1->insert(DT_INT_16U);
01484         dt_list_O_1->insert(DT_INT_16S);
01485         dt_list_O_1->insert(DT_INT_32U);
01486         dt_list_O_1->insert(DT_INT_32S);
01487         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01488         reg_list_O_1->insert(R_EAX);
01489         reg_list_O_1->insert(R_EBX);
01490         reg_list_O_1->insert(R_ECX);
01491         reg_list_O_1->insert(R_EDX);
01492         reg_list_O_1->insert(R_EDI);
01493         reg_list_O_1->insert(R_ESI);
01494         reg_list_O_1->insert(R_AX);
01495         reg_list_O_1->insert(R_BX);
01496         reg_list_O_1->insert(R_CX);
01497         reg_list_O_1->insert(R_DX);
01498         reg_list_O_1->insert(R_DI);
01499         reg_list_O_1->insert(R_SI);
01500         reg_list_O_1->insert(R_AL);
01501         reg_list_O_1->insert(R_AH);
01502         reg_list_O_1->insert(R_BL);
01503         reg_list_O_1->insert(R_BH);
01504         reg_list_O_1->insert(R_CL);
01505         reg_list_O_1->insert(R_CH);
01506         reg_list_O_1->insert(R_DL);
01507         reg_list_O_1->insert(R_DH);
01508         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01509         op_O_1->destroys_set(I_2);
01510         out_operands->push_back(op_O_1);
01511         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01512         dt_list_O_2->insert(DT_COND);
01513         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01514         reg_list_O_2->insert(R_COND);
01515         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01516         out_operands->push_back(op_O_2);
01517 
01518         //execution info
01519         einfo = execution_info::create(10);
01520 
01521         //properties
01522 
01523         //versions
01524         versions = set<ulint>::create();
01525         versions->insert(INSTRUCTION_ADD__1);
01526         versions->insert(INSTRUCTION_ADD__11);
01527         versions->insert(INSTRUCTION_ADD__12);
01528         versions->insert(INSTRUCTION_ADD__13);
01529 
01530 
01531         //return target pseudoinstruction
01532         return tm_instr::create(INSTRUCTION_ADD__14,in_operands,out_operands,lstring("add $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
01533 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__1 (  ) 

Definition at line 4547 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04547                                                    {
04548         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04549         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04550         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04551         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04552         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04553         ptr<execution_info> einfo;
04554         ptr<set<ulint> > versions;
04555         
04556         //input operands
04557         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04558         dt_list_I_1->insert(DT_INT_8P);
04559         dt_list_I_1->insert(DT_INT_8U);
04560         dt_list_I_1->insert(DT_INT_8S);
04561         dt_list_I_1->insert(DT_INT_16U);
04562         dt_list_I_1->insert(DT_INT_16S);
04563         dt_list_I_1->insert(DT_INT_32U);
04564         dt_list_I_1->insert(DT_INT_32S);
04565         dt_list_I_1->insert(DT_BOOL);
04566         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04567         reg_list_I_1->insert(R_EAX);
04568         reg_list_I_1->insert(R_EBX);
04569         reg_list_I_1->insert(R_ECX);
04570         reg_list_I_1->insert(R_EDX);
04571         reg_list_I_1->insert(R_EDI);
04572         reg_list_I_1->insert(R_ESI);
04573         reg_list_I_1->insert(R_AX);
04574         reg_list_I_1->insert(R_BX);
04575         reg_list_I_1->insert(R_CX);
04576         reg_list_I_1->insert(R_DX);
04577         reg_list_I_1->insert(R_DI);
04578         reg_list_I_1->insert(R_SI);
04579         reg_list_I_1->insert(R_AL);
04580         reg_list_I_1->insert(R_AH);
04581         reg_list_I_1->insert(R_BL);
04582         reg_list_I_1->insert(R_BH);
04583         reg_list_I_1->insert(R_CL);
04584         reg_list_I_1->insert(R_CH);
04585         reg_list_I_1->insert(R_DL);
04586         reg_list_I_1->insert(R_DH);
04587         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04588         op_I_1->destroyed_by_get()->push_back(O_1);
04589         in_operands->push_back(op_I_1);
04590         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04591         dt_list_I_2->insert(DT_INT_8P);
04592         dt_list_I_2->insert(DT_INT_8U);
04593         dt_list_I_2->insert(DT_INT_8S);
04594         dt_list_I_2->insert(DT_INT_16U);
04595         dt_list_I_2->insert(DT_INT_16S);
04596         dt_list_I_2->insert(DT_INT_32U);
04597         dt_list_I_2->insert(DT_INT_32S);
04598         dt_list_I_2->insert(DT_BOOL);
04599         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04600         reg_list_I_2->insert(R_EAX);
04601         reg_list_I_2->insert(R_EBX);
04602         reg_list_I_2->insert(R_ECX);
04603         reg_list_I_2->insert(R_EDX);
04604         reg_list_I_2->insert(R_EDI);
04605         reg_list_I_2->insert(R_ESI);
04606         reg_list_I_2->insert(R_AX);
04607         reg_list_I_2->insert(R_BX);
04608         reg_list_I_2->insert(R_CX);
04609         reg_list_I_2->insert(R_DX);
04610         reg_list_I_2->insert(R_DI);
04611         reg_list_I_2->insert(R_SI);
04612         reg_list_I_2->insert(R_AL);
04613         reg_list_I_2->insert(R_AH);
04614         reg_list_I_2->insert(R_BL);
04615         reg_list_I_2->insert(R_BH);
04616         reg_list_I_2->insert(R_CL);
04617         reg_list_I_2->insert(R_CH);
04618         reg_list_I_2->insert(R_DL);
04619         reg_list_I_2->insert(R_DH);
04620         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04621         in_operands->push_back(op_I_2);
04622 
04623         //output operands
04624         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04625         dt_list_O_1->insert(DT_INT_8P);
04626         dt_list_O_1->insert(DT_INT_8U);
04627         dt_list_O_1->insert(DT_INT_8S);
04628         dt_list_O_1->insert(DT_INT_16U);
04629         dt_list_O_1->insert(DT_INT_16S);
04630         dt_list_O_1->insert(DT_INT_32U);
04631         dt_list_O_1->insert(DT_INT_32S);
04632         dt_list_O_1->insert(DT_BOOL);
04633         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04634         reg_list_O_1->insert(R_EAX);
04635         reg_list_O_1->insert(R_EBX);
04636         reg_list_O_1->insert(R_ECX);
04637         reg_list_O_1->insert(R_EDX);
04638         reg_list_O_1->insert(R_EDI);
04639         reg_list_O_1->insert(R_ESI);
04640         reg_list_O_1->insert(R_AX);
04641         reg_list_O_1->insert(R_BX);
04642         reg_list_O_1->insert(R_CX);
04643         reg_list_O_1->insert(R_DX);
04644         reg_list_O_1->insert(R_DI);
04645         reg_list_O_1->insert(R_SI);
04646         reg_list_O_1->insert(R_AL);
04647         reg_list_O_1->insert(R_AH);
04648         reg_list_O_1->insert(R_BL);
04649         reg_list_O_1->insert(R_BH);
04650         reg_list_O_1->insert(R_CL);
04651         reg_list_O_1->insert(R_CH);
04652         reg_list_O_1->insert(R_DL);
04653         reg_list_O_1->insert(R_DH);
04654         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04655         op_O_1->destroys_set(I_1);
04656         out_operands->push_back(op_O_1);
04657         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04658         dt_list_O_2->insert(DT_COND);
04659         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04660         reg_list_O_2->insert(R_COND);
04661         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04662         out_operands->push_back(op_O_2);
04663 
04664         //execution info
04665         einfo = execution_info::create(10);
04666 
04667         //properties
04668 
04669         //versions
04670         versions = set<ulint>::create();
04671         versions->insert(INSTRUCTION_AND__11);
04672         versions->insert(INSTRUCTION_AND__12);
04673         versions->insert(INSTRUCTION_AND__13);
04674         versions->insert(INSTRUCTION_AND__14);
04675         versions->insert(INSTRUCTION_AND__2);
04676 
04677 
04678         //return target pseudoinstruction
04679         return tm_instr::create(INSTRUCTION_AND__1,in_operands,out_operands,lstring("and $O_1, $I_2"), props,versions,0,einfo);
04680 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__11 (  ) 

Definition at line 4682 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04682                                                     {
04683         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04684         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04685         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04686         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04687         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04688         ptr<execution_info> einfo;
04689         ptr<set<ulint> > versions;
04690         
04691         //input operands
04692         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04693         dt_list_I_1->insert(DT_INT_8P);
04694         dt_list_I_1->insert(DT_INT_8U);
04695         dt_list_I_1->insert(DT_INT_8S);
04696         dt_list_I_1->insert(DT_INT_16U);
04697         dt_list_I_1->insert(DT_INT_16S);
04698         dt_list_I_1->insert(DT_INT_32U);
04699         dt_list_I_1->insert(DT_INT_32S);
04700         dt_list_I_1->insert(DT_BOOL);
04701         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04702         reg_list_I_1->insert(R_EAX);
04703         reg_list_I_1->insert(R_EBX);
04704         reg_list_I_1->insert(R_ECX);
04705         reg_list_I_1->insert(R_EDX);
04706         reg_list_I_1->insert(R_EDI);
04707         reg_list_I_1->insert(R_ESI);
04708         reg_list_I_1->insert(R_AX);
04709         reg_list_I_1->insert(R_BX);
04710         reg_list_I_1->insert(R_CX);
04711         reg_list_I_1->insert(R_DX);
04712         reg_list_I_1->insert(R_DI);
04713         reg_list_I_1->insert(R_SI);
04714         reg_list_I_1->insert(R_AL);
04715         reg_list_I_1->insert(R_AH);
04716         reg_list_I_1->insert(R_BL);
04717         reg_list_I_1->insert(R_BH);
04718         reg_list_I_1->insert(R_CL);
04719         reg_list_I_1->insert(R_CH);
04720         reg_list_I_1->insert(R_DL);
04721         reg_list_I_1->insert(R_DH);
04722         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04723         op_I_1->destroyed_by_get()->push_back(O_1);
04724         in_operands->push_back(op_I_1);
04725         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04726         dt_list_I_2->insert(DT_INT_8P);
04727         dt_list_I_2->insert(DT_INT_8U);
04728         dt_list_I_2->insert(DT_INT_8S);
04729         dt_list_I_2->insert(DT_INT_16U);
04730         dt_list_I_2->insert(DT_INT_16S);
04731         dt_list_I_2->insert(DT_INT_32U);
04732         dt_list_I_2->insert(DT_INT_32S);
04733         dt_list_I_2->insert(DT_BOOL);
04734         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
04735         in_operands->push_back(op_I_2);
04736 
04737         //output operands
04738         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04739         dt_list_O_1->insert(DT_INT_8P);
04740         dt_list_O_1->insert(DT_INT_8U);
04741         dt_list_O_1->insert(DT_INT_8S);
04742         dt_list_O_1->insert(DT_INT_16U);
04743         dt_list_O_1->insert(DT_INT_16S);
04744         dt_list_O_1->insert(DT_INT_32U);
04745         dt_list_O_1->insert(DT_INT_32S);
04746         dt_list_O_1->insert(DT_BOOL);
04747         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04748         reg_list_O_1->insert(R_EAX);
04749         reg_list_O_1->insert(R_EBX);
04750         reg_list_O_1->insert(R_ECX);
04751         reg_list_O_1->insert(R_EDX);
04752         reg_list_O_1->insert(R_EDI);
04753         reg_list_O_1->insert(R_ESI);
04754         reg_list_O_1->insert(R_AX);
04755         reg_list_O_1->insert(R_BX);
04756         reg_list_O_1->insert(R_CX);
04757         reg_list_O_1->insert(R_DX);
04758         reg_list_O_1->insert(R_DI);
04759         reg_list_O_1->insert(R_SI);
04760         reg_list_O_1->insert(R_AL);
04761         reg_list_O_1->insert(R_AH);
04762         reg_list_O_1->insert(R_BL);
04763         reg_list_O_1->insert(R_BH);
04764         reg_list_O_1->insert(R_CL);
04765         reg_list_O_1->insert(R_CH);
04766         reg_list_O_1->insert(R_DL);
04767         reg_list_O_1->insert(R_DH);
04768         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04769         op_O_1->destroys_set(I_1);
04770         out_operands->push_back(op_O_1);
04771         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04772         dt_list_O_2->insert(DT_COND);
04773         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04774         reg_list_O_2->insert(R_COND);
04775         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04776         out_operands->push_back(op_O_2);
04777 
04778         //execution info
04779         einfo = execution_info::create(10);
04780 
04781         //properties
04782 
04783         //versions
04784         versions = set<ulint>::create();
04785         versions->insert(INSTRUCTION_AND__1);
04786         versions->insert(INSTRUCTION_AND__12);
04787         versions->insert(INSTRUCTION_AND__13);
04788         versions->insert(INSTRUCTION_AND__14);
04789         versions->insert(INSTRUCTION_AND__2);
04790 
04791 
04792         //return target pseudoinstruction
04793         return tm_instr::create(INSTRUCTION_AND__11,in_operands,out_operands,lstring("and $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
04794 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__12 (  ) 

Definition at line 4796 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04796                                                     {
04797         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04798         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04799         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04800         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04801         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04802         ptr<execution_info> einfo;
04803         ptr<set<ulint> > versions;
04804         
04805         //input operands
04806         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04807         dt_list_I_1->insert(DT_INT_8P);
04808         dt_list_I_1->insert(DT_INT_8U);
04809         dt_list_I_1->insert(DT_INT_8S);
04810         dt_list_I_1->insert(DT_INT_16U);
04811         dt_list_I_1->insert(DT_INT_16S);
04812         dt_list_I_1->insert(DT_INT_32U);
04813         dt_list_I_1->insert(DT_INT_32S);
04814         dt_list_I_1->insert(DT_BOOL);
04815         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
04816         in_operands->push_back(op_I_1);
04817         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04818         dt_list_I_2->insert(DT_INT_8P);
04819         dt_list_I_2->insert(DT_INT_8U);
04820         dt_list_I_2->insert(DT_INT_8S);
04821         dt_list_I_2->insert(DT_INT_16U);
04822         dt_list_I_2->insert(DT_INT_16S);
04823         dt_list_I_2->insert(DT_INT_32U);
04824         dt_list_I_2->insert(DT_INT_32S);
04825         dt_list_I_2->insert(DT_BOOL);
04826         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04827         reg_list_I_2->insert(R_EAX);
04828         reg_list_I_2->insert(R_EBX);
04829         reg_list_I_2->insert(R_ECX);
04830         reg_list_I_2->insert(R_EDX);
04831         reg_list_I_2->insert(R_EDI);
04832         reg_list_I_2->insert(R_ESI);
04833         reg_list_I_2->insert(R_AX);
04834         reg_list_I_2->insert(R_BX);
04835         reg_list_I_2->insert(R_CX);
04836         reg_list_I_2->insert(R_DX);
04837         reg_list_I_2->insert(R_DI);
04838         reg_list_I_2->insert(R_SI);
04839         reg_list_I_2->insert(R_AL);
04840         reg_list_I_2->insert(R_AH);
04841         reg_list_I_2->insert(R_BL);
04842         reg_list_I_2->insert(R_BH);
04843         reg_list_I_2->insert(R_CL);
04844         reg_list_I_2->insert(R_CH);
04845         reg_list_I_2->insert(R_DL);
04846         reg_list_I_2->insert(R_DH);
04847         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04848         op_I_2->destroyed_by_get()->push_back(O_1);
04849         in_operands->push_back(op_I_2);
04850 
04851         //output operands
04852         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04853         dt_list_O_1->insert(DT_INT_8P);
04854         dt_list_O_1->insert(DT_INT_8U);
04855         dt_list_O_1->insert(DT_INT_8S);
04856         dt_list_O_1->insert(DT_INT_16U);
04857         dt_list_O_1->insert(DT_INT_16S);
04858         dt_list_O_1->insert(DT_INT_32U);
04859         dt_list_O_1->insert(DT_INT_32S);
04860         dt_list_O_1->insert(DT_BOOL);
04861         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04862         reg_list_O_1->insert(R_EAX);
04863         reg_list_O_1->insert(R_EBX);
04864         reg_list_O_1->insert(R_ECX);
04865         reg_list_O_1->insert(R_EDX);
04866         reg_list_O_1->insert(R_EDI);
04867         reg_list_O_1->insert(R_ESI);
04868         reg_list_O_1->insert(R_AX);
04869         reg_list_O_1->insert(R_BX);
04870         reg_list_O_1->insert(R_CX);
04871         reg_list_O_1->insert(R_DX);
04872         reg_list_O_1->insert(R_DI);
04873         reg_list_O_1->insert(R_SI);
04874         reg_list_O_1->insert(R_AL);
04875         reg_list_O_1->insert(R_AH);
04876         reg_list_O_1->insert(R_BL);
04877         reg_list_O_1->insert(R_BH);
04878         reg_list_O_1->insert(R_CL);
04879         reg_list_O_1->insert(R_CH);
04880         reg_list_O_1->insert(R_DL);
04881         reg_list_O_1->insert(R_DH);
04882         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04883         op_O_1->destroys_set(I_2);
04884         out_operands->push_back(op_O_1);
04885         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04886         dt_list_O_2->insert(DT_COND);
04887         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04888         reg_list_O_2->insert(R_COND);
04889         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04890         out_operands->push_back(op_O_2);
04891 
04892         //execution info
04893         einfo = execution_info::create(10);
04894 
04895         //properties
04896 
04897         //versions
04898         versions = set<ulint>::create();
04899         versions->insert(INSTRUCTION_AND__1);
04900         versions->insert(INSTRUCTION_AND__11);
04901         versions->insert(INSTRUCTION_AND__13);
04902         versions->insert(INSTRUCTION_AND__14);
04903         versions->insert(INSTRUCTION_AND__2);
04904 
04905 
04906         //return target pseudoinstruction
04907         return tm_instr::create(INSTRUCTION_AND__12,in_operands,out_operands,lstring("and $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
04908 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__13 (  ) 

Definition at line 4910 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04910                                                     {
04911         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04912         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04913         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04914         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04915         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04916         ptr<execution_info> einfo;
04917         ptr<set<ulint> > versions;
04918         
04919         //input operands
04920         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04921         dt_list_I_1->insert(DT_INT_8P);
04922         dt_list_I_1->insert(DT_INT_8U);
04923         dt_list_I_1->insert(DT_INT_8S);
04924         dt_list_I_1->insert(DT_INT_16U);
04925         dt_list_I_1->insert(DT_INT_16S);
04926         dt_list_I_1->insert(DT_INT_32U);
04927         dt_list_I_1->insert(DT_INT_32S);
04928         dt_list_I_1->insert(DT_BOOL);
04929         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04930         reg_list_I_1->insert(R_EAX);
04931         reg_list_I_1->insert(R_EBX);
04932         reg_list_I_1->insert(R_ECX);
04933         reg_list_I_1->insert(R_EDX);
04934         reg_list_I_1->insert(R_EDI);
04935         reg_list_I_1->insert(R_ESI);
04936         reg_list_I_1->insert(R_AX);
04937         reg_list_I_1->insert(R_BX);
04938         reg_list_I_1->insert(R_CX);
04939         reg_list_I_1->insert(R_DX);
04940         reg_list_I_1->insert(R_DI);
04941         reg_list_I_1->insert(R_SI);
04942         reg_list_I_1->insert(R_AL);
04943         reg_list_I_1->insert(R_AH);
04944         reg_list_I_1->insert(R_BL);
04945         reg_list_I_1->insert(R_BH);
04946         reg_list_I_1->insert(R_CL);
04947         reg_list_I_1->insert(R_CH);
04948         reg_list_I_1->insert(R_DL);
04949         reg_list_I_1->insert(R_DH);
04950         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04951         op_I_1->destroyed_by_get()->push_back(O_1);
04952         in_operands->push_back(op_I_1);
04953         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04954         dt_list_I_2->insert(DT_INT_8P);
04955         dt_list_I_2->insert(DT_INT_8U);
04956         dt_list_I_2->insert(DT_INT_8S);
04957         dt_list_I_2->insert(DT_INT_16U);
04958         dt_list_I_2->insert(DT_INT_16S);
04959         dt_list_I_2->insert(DT_INT_32U);
04960         dt_list_I_2->insert(DT_INT_32S);
04961         dt_list_I_2->insert(DT_BOOL);
04962         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
04963         in_operands->push_back(op_I_2);
04964 
04965         //output operands
04966         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04967         dt_list_O_1->insert(DT_INT_8P);
04968         dt_list_O_1->insert(DT_INT_8U);
04969         dt_list_O_1->insert(DT_INT_8S);
04970         dt_list_O_1->insert(DT_INT_16U);
04971         dt_list_O_1->insert(DT_INT_16S);
04972         dt_list_O_1->insert(DT_INT_32U);
04973         dt_list_O_1->insert(DT_INT_32S);
04974         dt_list_O_1->insert(DT_BOOL);
04975         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04976         reg_list_O_1->insert(R_EAX);
04977         reg_list_O_1->insert(R_EBX);
04978         reg_list_O_1->insert(R_ECX);
04979         reg_list_O_1->insert(R_EDX);
04980         reg_list_O_1->insert(R_EDI);
04981         reg_list_O_1->insert(R_ESI);
04982         reg_list_O_1->insert(R_AX);
04983         reg_list_O_1->insert(R_BX);
04984         reg_list_O_1->insert(R_CX);
04985         reg_list_O_1->insert(R_DX);
04986         reg_list_O_1->insert(R_DI);
04987         reg_list_O_1->insert(R_SI);
04988         reg_list_O_1->insert(R_AL);
04989         reg_list_O_1->insert(R_AH);
04990         reg_list_O_1->insert(R_BL);
04991         reg_list_O_1->insert(R_BH);
04992         reg_list_O_1->insert(R_CL);
04993         reg_list_O_1->insert(R_CH);
04994         reg_list_O_1->insert(R_DL);
04995         reg_list_O_1->insert(R_DH);
04996         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04997         op_O_1->destroys_set(I_1);
04998         out_operands->push_back(op_O_1);
04999         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05000         dt_list_O_2->insert(DT_COND);
05001         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05002         reg_list_O_2->insert(R_COND);
05003         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05004         out_operands->push_back(op_O_2);
05005 
05006         //execution info
05007         einfo = execution_info::create(30);
05008 
05009         //properties
05010 
05011         //versions
05012         versions = set<ulint>::create();
05013         versions->insert(INSTRUCTION_AND__1);
05014         versions->insert(INSTRUCTION_AND__11);
05015         versions->insert(INSTRUCTION_AND__12);
05016         versions->insert(INSTRUCTION_AND__14);
05017         versions->insert(INSTRUCTION_AND__2);
05018 
05019 
05020         //return target pseudoinstruction
05021         return tm_instr::create(INSTRUCTION_AND__13,in_operands,out_operands,lstring("and $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
05022 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__14 (  ) 

Definition at line 5024 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05024                                                     {
05025         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05026         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05027         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05028         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05029         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05030         ptr<execution_info> einfo;
05031         ptr<set<ulint> > versions;
05032         
05033         //input operands
05034         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05035         dt_list_I_1->insert(DT_INT_8P);
05036         dt_list_I_1->insert(DT_INT_8U);
05037         dt_list_I_1->insert(DT_INT_8S);
05038         dt_list_I_1->insert(DT_INT_16U);
05039         dt_list_I_1->insert(DT_INT_16S);
05040         dt_list_I_1->insert(DT_INT_32U);
05041         dt_list_I_1->insert(DT_INT_32S);
05042         dt_list_I_1->insert(DT_BOOL);
05043         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
05044         in_operands->push_back(op_I_1);
05045         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05046         dt_list_I_2->insert(DT_INT_8P);
05047         dt_list_I_2->insert(DT_INT_8U);
05048         dt_list_I_2->insert(DT_INT_8S);
05049         dt_list_I_2->insert(DT_INT_16U);
05050         dt_list_I_2->insert(DT_INT_16S);
05051         dt_list_I_2->insert(DT_INT_32U);
05052         dt_list_I_2->insert(DT_INT_32S);
05053         dt_list_I_2->insert(DT_BOOL);
05054         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
05055         reg_list_I_2->insert(R_EAX);
05056         reg_list_I_2->insert(R_EBX);
05057         reg_list_I_2->insert(R_ECX);
05058         reg_list_I_2->insert(R_EDX);
05059         reg_list_I_2->insert(R_EDI);
05060         reg_list_I_2->insert(R_ESI);
05061         reg_list_I_2->insert(R_AX);
05062         reg_list_I_2->insert(R_BX);
05063         reg_list_I_2->insert(R_CX);
05064         reg_list_I_2->insert(R_DX);
05065         reg_list_I_2->insert(R_DI);
05066         reg_list_I_2->insert(R_SI);
05067         reg_list_I_2->insert(R_AL);
05068         reg_list_I_2->insert(R_AH);
05069         reg_list_I_2->insert(R_BL);
05070         reg_list_I_2->insert(R_BH);
05071         reg_list_I_2->insert(R_CL);
05072         reg_list_I_2->insert(R_CH);
05073         reg_list_I_2->insert(R_DL);
05074         reg_list_I_2->insert(R_DH);
05075         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
05076         op_I_2->destroyed_by_get()->push_back(O_1);
05077         in_operands->push_back(op_I_2);
05078 
05079         //output operands
05080         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05081         dt_list_O_1->insert(DT_INT_8P);
05082         dt_list_O_1->insert(DT_INT_8U);
05083         dt_list_O_1->insert(DT_INT_8S);
05084         dt_list_O_1->insert(DT_INT_16U);
05085         dt_list_O_1->insert(DT_INT_16S);
05086         dt_list_O_1->insert(DT_INT_32U);
05087         dt_list_O_1->insert(DT_INT_32S);
05088         dt_list_O_1->insert(DT_BOOL);
05089         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05090         reg_list_O_1->insert(R_EAX);
05091         reg_list_O_1->insert(R_EBX);
05092         reg_list_O_1->insert(R_ECX);
05093         reg_list_O_1->insert(R_EDX);
05094         reg_list_O_1->insert(R_EDI);
05095         reg_list_O_1->insert(R_ESI);
05096         reg_list_O_1->insert(R_AX);
05097         reg_list_O_1->insert(R_BX);
05098         reg_list_O_1->insert(R_CX);
05099         reg_list_O_1->insert(R_DX);
05100         reg_list_O_1->insert(R_DI);
05101         reg_list_O_1->insert(R_SI);
05102         reg_list_O_1->insert(R_AL);
05103         reg_list_O_1->insert(R_AH);
05104         reg_list_O_1->insert(R_BL);
05105         reg_list_O_1->insert(R_BH);
05106         reg_list_O_1->insert(R_CL);
05107         reg_list_O_1->insert(R_CH);
05108         reg_list_O_1->insert(R_DL);
05109         reg_list_O_1->insert(R_DH);
05110         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05111         op_O_1->destroys_set(I_2);
05112         out_operands->push_back(op_O_1);
05113         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05114         dt_list_O_2->insert(DT_COND);
05115         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05116         reg_list_O_2->insert(R_COND);
05117         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05118         out_operands->push_back(op_O_2);
05119 
05120         //execution info
05121         einfo = execution_info::create(30);
05122 
05123         //properties
05124 
05125         //versions
05126         versions = set<ulint>::create();
05127         versions->insert(INSTRUCTION_AND__1);
05128         versions->insert(INSTRUCTION_AND__11);
05129         versions->insert(INSTRUCTION_AND__12);
05130         versions->insert(INSTRUCTION_AND__13);
05131         versions->insert(INSTRUCTION_AND__2);
05132 
05133 
05134         //return target pseudoinstruction
05135         return tm_instr::create(INSTRUCTION_AND__14,in_operands,out_operands,lstring("and $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
05136 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_AND__2 (  ) 

Definition at line 5138 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_AND__1, INSTRUCTION_AND__11, INSTRUCTION_AND__12, INSTRUCTION_AND__13, INSTRUCTION_AND__14, INSTRUCTION_AND__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05138                                                    {
05139         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05140         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05141         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05142         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05143         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05144         ptr<execution_info> einfo;
05145         ptr<set<ulint> > versions;
05146         
05147         //input operands
05148         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05149         dt_list_I_1->insert(DT_BOOL);
05150         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05151         reg_list_I_1->insert(R_AL);
05152         reg_list_I_1->insert(R_AH);
05153         reg_list_I_1->insert(R_BL);
05154         reg_list_I_1->insert(R_BH);
05155         reg_list_I_1->insert(R_CL);
05156         reg_list_I_1->insert(R_CH);
05157         reg_list_I_1->insert(R_DL);
05158         reg_list_I_1->insert(R_DH);
05159         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05160         op_I_1->destroyed_by_get()->push_back(O_1);
05161         in_operands->push_back(op_I_1);
05162 
05163         //output operands
05164         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05165         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05166         reg_list_O_1->insert(R_EAX);
05167         reg_list_O_1->insert(R_EBX);
05168         reg_list_O_1->insert(R_ECX);
05169         reg_list_O_1->insert(R_EDX);
05170         reg_list_O_1->insert(R_EDI);
05171         reg_list_O_1->insert(R_ESI);
05172         reg_list_O_1->insert(R_AX);
05173         reg_list_O_1->insert(R_BX);
05174         reg_list_O_1->insert(R_CX);
05175         reg_list_O_1->insert(R_DX);
05176         reg_list_O_1->insert(R_DI);
05177         reg_list_O_1->insert(R_SI);
05178         reg_list_O_1->insert(R_AL);
05179         reg_list_O_1->insert(R_AH);
05180         reg_list_O_1->insert(R_BL);
05181         reg_list_O_1->insert(R_BH);
05182         reg_list_O_1->insert(R_CL);
05183         reg_list_O_1->insert(R_CH);
05184         reg_list_O_1->insert(R_DL);
05185         reg_list_O_1->insert(R_DH);
05186         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05187         op_O_1->destroys_set(I_1);
05188         out_operands->push_back(op_O_1);
05189         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05190         dt_list_O_2->insert(DT_COND);
05191         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05192         reg_list_O_2->insert(R_COND);
05193         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05194         out_operands->push_back(op_O_2);
05195 
05196         //execution info
05197         einfo = execution_info::create(10);
05198 
05199         //properties
05200 
05201         //versions
05202         versions = set<ulint>::create();
05203         versions->insert(INSTRUCTION_AND__1);
05204         versions->insert(INSTRUCTION_AND__11);
05205         versions->insert(INSTRUCTION_AND__12);
05206         versions->insert(INSTRUCTION_AND__13);
05207         versions->insert(INSTRUCTION_AND__14);
05208 
05209 
05210         //return target pseudoinstruction
05211         return tm_instr::create(INSTRUCTION_AND__2,in_operands,out_operands,lstring("and $O_1, 0x1"), props,versions,0,einfo);
05212 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_BACKUPESP__1 (  ) 

Definition at line 9119 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32U, I_1, IF_SYS, INSTRUCTION_BACKUPESP__1, O_1, lestes::md::registers::R_EBP, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

09119                                                          {
09120         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09121         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09122         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09123         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09124         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09125         ptr<execution_info> einfo;
09126         ptr<set<ulint> > versions;
09127         
09128         //input operands
09129         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
09130         dt_list_I_1->insert(DT_INT_32U);
09131         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
09132         reg_list_I_1->insert(R_ESP);
09133         reg_list_I_1->insert(R_EBP);
09134         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
09135         in_operands->push_back(op_I_1);
09136 
09137         //output operands
09138         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
09139         dt_list_O_1->insert(DT_INT_32U);
09140         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
09141         reg_list_O_1->insert(R_ESP);
09142         reg_list_O_1->insert(R_EBP);
09143         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
09144         out_operands->push_back(op_O_1);
09145 
09146         //execution info
09147         einfo = execution_info::create(10);
09148 
09149         //properties
09150 
09151         //versions
09152 
09153 
09154         //return target pseudoinstruction
09155         return tm_instr::create(INSTRUCTION_BACKUPESP__1,in_operands,out_operands,lstring("mov $O_1, $I_1"), props,versions,IF_SYS,einfo);
09156 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CALL__1 (  ) 

Definition at line 9158 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, IF_SYS, INSTRUCTION_CALL__1, O_1, O_2, O_3, lestes::md::registers::R_EAX, lestes::md::registers::R_ECX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

09158                                                     {
09159         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09160         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09161         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09162         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09163         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09164         ptr<execution_info> einfo;
09165         ptr<set<ulint> > versions;
09166         
09167         //input operands
09168 
09169         //output operands
09170         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
09171         dt_list_O_1->insert(DT_INT_8P);
09172         dt_list_O_1->insert(DT_INT_8U);
09173         dt_list_O_1->insert(DT_INT_8S);
09174         dt_list_O_1->insert(DT_INT_16U);
09175         dt_list_O_1->insert(DT_INT_16S);
09176         dt_list_O_1->insert(DT_INT_32U);
09177         dt_list_O_1->insert(DT_INT_32S);
09178         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
09179         reg_list_O_1->insert(R_EAX);
09180         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
09181         out_operands->push_back(op_O_1);
09182         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
09183         dt_list_O_2->insert(DT_INT_8P);
09184         dt_list_O_2->insert(DT_INT_8U);
09185         dt_list_O_2->insert(DT_INT_8S);
09186         dt_list_O_2->insert(DT_INT_16U);
09187         dt_list_O_2->insert(DT_INT_16S);
09188         dt_list_O_2->insert(DT_INT_32U);
09189         dt_list_O_2->insert(DT_INT_32S);
09190         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
09191         reg_list_O_2->insert(R_ECX);
09192         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
09193         out_operands->push_back(op_O_2);
09194         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
09195         dt_list_O_3->insert(DT_INT_8P);
09196         dt_list_O_3->insert(DT_INT_8U);
09197         dt_list_O_3->insert(DT_INT_8S);
09198         dt_list_O_3->insert(DT_INT_16U);
09199         dt_list_O_3->insert(DT_INT_16S);
09200         dt_list_O_3->insert(DT_INT_32U);
09201         dt_list_O_3->insert(DT_INT_32S);
09202         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
09203         reg_list_O_3->insert(R_EDX);
09204         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
09205         out_operands->push_back(op_O_3);
09206 
09207         //execution info
09208         einfo = execution_info::create(50);
09209 
09210         //properties
09211 
09212         //versions
09213 
09214 
09215         //return target pseudoinstruction
09216         return tm_instr::create(INSTRUCTION_CALL__1,in_operands,out_operands,lstring("call $name"), props,versions,IF_SYS,einfo);
09217 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CBW__1 (  ) 

Definition at line 2942 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_8S, I_1, INSTRUCTION_CBW__1, O_1, lestes::md::registers::R_AL, and lestes::md::registers::R_AX.

Referenced by lestes::md::instructions::tm_instr::instance().

02942                                                    {
02943         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02944         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02945         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02946         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02947         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02948         ptr<execution_info> einfo;
02949         ptr<set<ulint> > versions;
02950         
02951         //input operands
02952         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02953         dt_list_I_1->insert(DT_INT_8S);
02954         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02955         reg_list_I_1->insert(R_AL);
02956         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02957         op_I_1->destroyed_by_get()->push_back(O_1);
02958         in_operands->push_back(op_I_1);
02959 
02960         //output operands
02961         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02962         dt_list_O_1->insert(DT_INT_16S);
02963         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02964         reg_list_O_1->insert(R_AX);
02965         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02966         op_O_1->destroys_set(I_1);
02967         out_operands->push_back(op_O_1);
02968 
02969         //execution info
02970         einfo = execution_info::create(10);
02971 
02972         //properties
02973 
02974         //versions
02975 
02976 
02977         //return target pseudoinstruction
02978         return tm_instr::create(INSTRUCTION_CBW__1,in_operands,out_operands,lstring("cbw"), props,versions,0,einfo);
02979 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CDQ__1 (  ) 

Definition at line 3026 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32S, I_1, INSTRUCTION_CDQ__1, O_1, O_2, lestes::md::registers::R_EAX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

03026                                                    {
03027         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03028         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03029         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03030         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03031         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03032         ptr<execution_info> einfo;
03033         ptr<set<ulint> > versions;
03034         
03035         //input operands
03036         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03037         dt_list_I_1->insert(DT_INT_32S);
03038         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03039         reg_list_I_1->insert(R_EAX);
03040         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03041         op_I_1->destroyed_by_get()->push_back(O_2);
03042         in_operands->push_back(op_I_1);
03043 
03044         //output operands
03045         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03046         dt_list_O_1->insert(DT_INT_32S);
03047         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03048         reg_list_O_1->insert(R_EDX);
03049         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03050         out_operands->push_back(op_O_1);
03051         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03052         dt_list_O_2->insert(DT_INT_32S);
03053         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03054         reg_list_O_2->insert(R_EAX);
03055         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03056         op_O_2->destroys_set(I_1);
03057         out_operands->push_back(op_O_2);
03058 
03059         //execution info
03060         einfo = execution_info::create(10);
03061 
03062         //properties
03063 
03064         //versions
03065 
03066 
03067         //return target pseudoinstruction
03068         return tm_instr::create(INSTRUCTION_CDQ__1,in_operands,out_operands,lstring("cdq"), props,versions,0,einfo);
03069 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__1 (  ) 

Definition at line 7468 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07468                                                    {
07469         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07470         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07471         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07472         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07473         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07474         ptr<execution_info> einfo;
07475         ptr<set<ulint> > versions;
07476         
07477         //input operands
07478         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07479         dt_list_I_1->insert(DT_INT_8P);
07480         dt_list_I_1->insert(DT_INT_8U);
07481         dt_list_I_1->insert(DT_INT_8S);
07482         dt_list_I_1->insert(DT_INT_16U);
07483         dt_list_I_1->insert(DT_INT_16S);
07484         dt_list_I_1->insert(DT_INT_32U);
07485         dt_list_I_1->insert(DT_INT_32S);
07486         dt_list_I_1->insert(DT_BOOL);
07487         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07488         reg_list_I_1->insert(R_EAX);
07489         reg_list_I_1->insert(R_EBX);
07490         reg_list_I_1->insert(R_ECX);
07491         reg_list_I_1->insert(R_EDX);
07492         reg_list_I_1->insert(R_EDI);
07493         reg_list_I_1->insert(R_ESI);
07494         reg_list_I_1->insert(R_AX);
07495         reg_list_I_1->insert(R_BX);
07496         reg_list_I_1->insert(R_CX);
07497         reg_list_I_1->insert(R_DX);
07498         reg_list_I_1->insert(R_DI);
07499         reg_list_I_1->insert(R_SI);
07500         reg_list_I_1->insert(R_AL);
07501         reg_list_I_1->insert(R_AH);
07502         reg_list_I_1->insert(R_BL);
07503         reg_list_I_1->insert(R_BH);
07504         reg_list_I_1->insert(R_CL);
07505         reg_list_I_1->insert(R_CH);
07506         reg_list_I_1->insert(R_DL);
07507         reg_list_I_1->insert(R_DH);
07508         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07509         in_operands->push_back(op_I_1);
07510 
07511         //output operands
07512         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07513         dt_list_O_1->insert(DT_COND);
07514         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07515         reg_list_O_1->insert(R_COND);
07516         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07517         out_operands->push_back(op_O_1);
07518 
07519         //execution info
07520         einfo = execution_info::create(10);
07521 
07522         //properties
07523 
07524         //versions
07525         versions = set<ulint>::create();
07526         versions->insert(INSTRUCTION_CMP__2);
07527         versions->insert(INSTRUCTION_CMP__21);
07528         versions->insert(INSTRUCTION_CMP__22);
07529         versions->insert(INSTRUCTION_CMP__23);
07530         versions->insert(INSTRUCTION_CMP__24);
07531 
07532 
07533         //return target pseudoinstruction
07534         return tm_instr::create(INSTRUCTION_CMP__1,in_operands,out_operands,lstring("cmp $I_1, 0"), props,versions,0,einfo);
07535 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__2 (  ) 

Definition at line 7537 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07537                                                    {
07538         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07539         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07540         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07541         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07542         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07543         ptr<execution_info> einfo;
07544         ptr<set<ulint> > versions;
07545         
07546         //input operands
07547         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07548         dt_list_I_1->insert(DT_INT_8P);
07549         dt_list_I_1->insert(DT_INT_8U);
07550         dt_list_I_1->insert(DT_INT_8S);
07551         dt_list_I_1->insert(DT_INT_16U);
07552         dt_list_I_1->insert(DT_INT_16S);
07553         dt_list_I_1->insert(DT_INT_32U);
07554         dt_list_I_1->insert(DT_INT_32S);
07555         dt_list_I_1->insert(DT_BOOL);
07556         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07557         reg_list_I_1->insert(R_EAX);
07558         reg_list_I_1->insert(R_EBX);
07559         reg_list_I_1->insert(R_ECX);
07560         reg_list_I_1->insert(R_EDX);
07561         reg_list_I_1->insert(R_EDI);
07562         reg_list_I_1->insert(R_ESI);
07563         reg_list_I_1->insert(R_AX);
07564         reg_list_I_1->insert(R_BX);
07565         reg_list_I_1->insert(R_CX);
07566         reg_list_I_1->insert(R_DX);
07567         reg_list_I_1->insert(R_DI);
07568         reg_list_I_1->insert(R_SI);
07569         reg_list_I_1->insert(R_AL);
07570         reg_list_I_1->insert(R_AH);
07571         reg_list_I_1->insert(R_BL);
07572         reg_list_I_1->insert(R_BH);
07573         reg_list_I_1->insert(R_CL);
07574         reg_list_I_1->insert(R_CH);
07575         reg_list_I_1->insert(R_DL);
07576         reg_list_I_1->insert(R_DH);
07577         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07578         in_operands->push_back(op_I_1);
07579         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
07580         dt_list_I_2->insert(DT_INT_8P);
07581         dt_list_I_2->insert(DT_INT_8U);
07582         dt_list_I_2->insert(DT_INT_8S);
07583         dt_list_I_2->insert(DT_INT_16U);
07584         dt_list_I_2->insert(DT_INT_16S);
07585         dt_list_I_2->insert(DT_INT_32U);
07586         dt_list_I_2->insert(DT_INT_32S);
07587         dt_list_I_2->insert(DT_BOOL);
07588         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
07589         reg_list_I_2->insert(R_EAX);
07590         reg_list_I_2->insert(R_EBX);
07591         reg_list_I_2->insert(R_ECX);
07592         reg_list_I_2->insert(R_EDX);
07593         reg_list_I_2->insert(R_EDI);
07594         reg_list_I_2->insert(R_ESI);
07595         reg_list_I_2->insert(R_AX);
07596         reg_list_I_2->insert(R_BX);
07597         reg_list_I_2->insert(R_CX);
07598         reg_list_I_2->insert(R_DX);
07599         reg_list_I_2->insert(R_DI);
07600         reg_list_I_2->insert(R_SI);
07601         reg_list_I_2->insert(R_AL);
07602         reg_list_I_2->insert(R_AH);
07603         reg_list_I_2->insert(R_BL);
07604         reg_list_I_2->insert(R_BH);
07605         reg_list_I_2->insert(R_CL);
07606         reg_list_I_2->insert(R_CH);
07607         reg_list_I_2->insert(R_DL);
07608         reg_list_I_2->insert(R_DH);
07609         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
07610         in_operands->push_back(op_I_2);
07611 
07612         //output operands
07613         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07614         dt_list_O_1->insert(DT_COND);
07615         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07616         reg_list_O_1->insert(R_COND);
07617         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07618         out_operands->push_back(op_O_1);
07619 
07620         //execution info
07621         einfo = execution_info::create(10);
07622 
07623         //properties
07624 
07625         //versions
07626         versions = set<ulint>::create();
07627         versions->insert(INSTRUCTION_CMP__1);
07628         versions->insert(INSTRUCTION_CMP__21);
07629         versions->insert(INSTRUCTION_CMP__22);
07630         versions->insert(INSTRUCTION_CMP__23);
07631         versions->insert(INSTRUCTION_CMP__24);
07632 
07633 
07634         //return target pseudoinstruction
07635         return tm_instr::create(INSTRUCTION_CMP__2,in_operands,out_operands,lstring("cmp $I_1, $I_2"), props,versions,0,einfo);
07636 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__21 (  ) 

Definition at line 7638 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07638                                                     {
07639         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07640         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07641         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07642         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07643         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07644         ptr<execution_info> einfo;
07645         ptr<set<ulint> > versions;
07646         
07647         //input operands
07648         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07649         dt_list_I_1->insert(DT_INT_8P);
07650         dt_list_I_1->insert(DT_INT_8U);
07651         dt_list_I_1->insert(DT_INT_8S);
07652         dt_list_I_1->insert(DT_INT_16U);
07653         dt_list_I_1->insert(DT_INT_16S);
07654         dt_list_I_1->insert(DT_INT_32U);
07655         dt_list_I_1->insert(DT_INT_32S);
07656         dt_list_I_1->insert(DT_BOOL);
07657         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07658         reg_list_I_1->insert(R_EAX);
07659         reg_list_I_1->insert(R_EBX);
07660         reg_list_I_1->insert(R_ECX);
07661         reg_list_I_1->insert(R_EDX);
07662         reg_list_I_1->insert(R_EDI);
07663         reg_list_I_1->insert(R_ESI);
07664         reg_list_I_1->insert(R_AX);
07665         reg_list_I_1->insert(R_BX);
07666         reg_list_I_1->insert(R_CX);
07667         reg_list_I_1->insert(R_DX);
07668         reg_list_I_1->insert(R_DI);
07669         reg_list_I_1->insert(R_SI);
07670         reg_list_I_1->insert(R_AL);
07671         reg_list_I_1->insert(R_AH);
07672         reg_list_I_1->insert(R_BL);
07673         reg_list_I_1->insert(R_BH);
07674         reg_list_I_1->insert(R_CL);
07675         reg_list_I_1->insert(R_CH);
07676         reg_list_I_1->insert(R_DL);
07677         reg_list_I_1->insert(R_DH);
07678         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07679         in_operands->push_back(op_I_1);
07680         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
07681         dt_list_I_2->insert(DT_INT_8P);
07682         dt_list_I_2->insert(DT_INT_8U);
07683         dt_list_I_2->insert(DT_INT_8S);
07684         dt_list_I_2->insert(DT_INT_16U);
07685         dt_list_I_2->insert(DT_INT_16S);
07686         dt_list_I_2->insert(DT_INT_32U);
07687         dt_list_I_2->insert(DT_INT_32S);
07688         dt_list_I_2->insert(DT_BOOL);
07689         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
07690         in_operands->push_back(op_I_2);
07691 
07692         //output operands
07693         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07694         dt_list_O_1->insert(DT_COND);
07695         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07696         reg_list_O_1->insert(R_COND);
07697         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07698         out_operands->push_back(op_O_1);
07699 
07700         //execution info
07701         einfo = execution_info::create(10);
07702 
07703         //properties
07704 
07705         //versions
07706         versions = set<ulint>::create();
07707         versions->insert(INSTRUCTION_CMP__1);
07708         versions->insert(INSTRUCTION_CMP__2);
07709         versions->insert(INSTRUCTION_CMP__22);
07710         versions->insert(INSTRUCTION_CMP__23);
07711         versions->insert(INSTRUCTION_CMP__24);
07712 
07713 
07714         //return target pseudoinstruction
07715         return tm_instr::create(INSTRUCTION_CMP__21,in_operands,out_operands,lstring("cmp $I_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
07716 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__22 (  ) 

Definition at line 7718 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07718                                                     {
07719         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07720         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07721         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07722         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07723         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07724         ptr<execution_info> einfo;
07725         ptr<set<ulint> > versions;
07726         
07727         //input operands
07728         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07729         dt_list_I_1->insert(DT_INT_8P);
07730         dt_list_I_1->insert(DT_INT_8U);
07731         dt_list_I_1->insert(DT_INT_8S);
07732         dt_list_I_1->insert(DT_INT_16U);
07733         dt_list_I_1->insert(DT_INT_16S);
07734         dt_list_I_1->insert(DT_INT_32U);
07735         dt_list_I_1->insert(DT_INT_32S);
07736         dt_list_I_1->insert(DT_BOOL);
07737         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07738         reg_list_I_1->insert(R_EAX);
07739         reg_list_I_1->insert(R_EBX);
07740         reg_list_I_1->insert(R_ECX);
07741         reg_list_I_1->insert(R_EDX);
07742         reg_list_I_1->insert(R_EDI);
07743         reg_list_I_1->insert(R_ESI);
07744         reg_list_I_1->insert(R_AX);
07745         reg_list_I_1->insert(R_BX);
07746         reg_list_I_1->insert(R_CX);
07747         reg_list_I_1->insert(R_DX);
07748         reg_list_I_1->insert(R_DI);
07749         reg_list_I_1->insert(R_SI);
07750         reg_list_I_1->insert(R_AL);
07751         reg_list_I_1->insert(R_AH);
07752         reg_list_I_1->insert(R_BL);
07753         reg_list_I_1->insert(R_BH);
07754         reg_list_I_1->insert(R_CL);
07755         reg_list_I_1->insert(R_CH);
07756         reg_list_I_1->insert(R_DL);
07757         reg_list_I_1->insert(R_DH);
07758         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07759         in_operands->push_back(op_I_1);
07760         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
07761         dt_list_I_2->insert(DT_INT_8P);
07762         dt_list_I_2->insert(DT_INT_8U);
07763         dt_list_I_2->insert(DT_INT_8S);
07764         dt_list_I_2->insert(DT_INT_16U);
07765         dt_list_I_2->insert(DT_INT_16S);
07766         dt_list_I_2->insert(DT_INT_32U);
07767         dt_list_I_2->insert(DT_INT_32S);
07768         dt_list_I_2->insert(DT_BOOL);
07769         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
07770         in_operands->push_back(op_I_2);
07771 
07772         //output operands
07773         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07774         dt_list_O_1->insert(DT_COND);
07775         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07776         reg_list_O_1->insert(R_COND);
07777         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07778         out_operands->push_back(op_O_1);
07779 
07780         //execution info
07781         einfo = execution_info::create(30);
07782 
07783         //properties
07784 
07785         //versions
07786         versions = set<ulint>::create();
07787         versions->insert(INSTRUCTION_CMP__1);
07788         versions->insert(INSTRUCTION_CMP__2);
07789         versions->insert(INSTRUCTION_CMP__21);
07790         versions->insert(INSTRUCTION_CMP__23);
07791         versions->insert(INSTRUCTION_CMP__24);
07792 
07793 
07794         //return target pseudoinstruction
07795         return tm_instr::create(INSTRUCTION_CMP__22,in_operands,out_operands,lstring("cmp $I_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
07796 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__23 (  ) 

Definition at line 7798 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07798                                                     {
07799         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07800         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07801         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07802         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07803         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07804         ptr<execution_info> einfo;
07805         ptr<set<ulint> > versions;
07806         
07807         //input operands
07808         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07809         dt_list_I_1->insert(DT_INT_8P);
07810         dt_list_I_1->insert(DT_INT_8U);
07811         dt_list_I_1->insert(DT_INT_8S);
07812         dt_list_I_1->insert(DT_INT_16U);
07813         dt_list_I_1->insert(DT_INT_16S);
07814         dt_list_I_1->insert(DT_INT_32U);
07815         dt_list_I_1->insert(DT_INT_32S);
07816         dt_list_I_1->insert(DT_BOOL);
07817         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07818         in_operands->push_back(op_I_1);
07819         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
07820         dt_list_I_2->insert(DT_INT_8P);
07821         dt_list_I_2->insert(DT_INT_8U);
07822         dt_list_I_2->insert(DT_INT_8S);
07823         dt_list_I_2->insert(DT_INT_16U);
07824         dt_list_I_2->insert(DT_INT_16S);
07825         dt_list_I_2->insert(DT_INT_32U);
07826         dt_list_I_2->insert(DT_INT_32S);
07827         dt_list_I_2->insert(DT_BOOL);
07828         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
07829         reg_list_I_2->insert(R_EAX);
07830         reg_list_I_2->insert(R_EBX);
07831         reg_list_I_2->insert(R_ECX);
07832         reg_list_I_2->insert(R_EDX);
07833         reg_list_I_2->insert(R_EDI);
07834         reg_list_I_2->insert(R_ESI);
07835         reg_list_I_2->insert(R_AX);
07836         reg_list_I_2->insert(R_BX);
07837         reg_list_I_2->insert(R_CX);
07838         reg_list_I_2->insert(R_DX);
07839         reg_list_I_2->insert(R_DI);
07840         reg_list_I_2->insert(R_SI);
07841         reg_list_I_2->insert(R_AL);
07842         reg_list_I_2->insert(R_AH);
07843         reg_list_I_2->insert(R_BL);
07844         reg_list_I_2->insert(R_BH);
07845         reg_list_I_2->insert(R_CL);
07846         reg_list_I_2->insert(R_CH);
07847         reg_list_I_2->insert(R_DL);
07848         reg_list_I_2->insert(R_DH);
07849         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
07850         in_operands->push_back(op_I_2);
07851 
07852         //output operands
07853         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07854         dt_list_O_1->insert(DT_COND);
07855         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07856         reg_list_O_1->insert(R_COND);
07857         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07858         out_operands->push_back(op_O_1);
07859 
07860         //execution info
07861         einfo = execution_info::create(30);
07862 
07863         //properties
07864 
07865         //versions
07866         versions = set<ulint>::create();
07867         versions->insert(INSTRUCTION_CMP__1);
07868         versions->insert(INSTRUCTION_CMP__2);
07869         versions->insert(INSTRUCTION_CMP__21);
07870         versions->insert(INSTRUCTION_CMP__22);
07871         versions->insert(INSTRUCTION_CMP__24);
07872 
07873 
07874         //return target pseudoinstruction
07875         return tm_instr::create(INSTRUCTION_CMP__23,in_operands,out_operands,lstring("cmp $I_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
07876 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CMP__24 (  ) 

Definition at line 7878 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_CMP__1, INSTRUCTION_CMP__2, INSTRUCTION_CMP__21, INSTRUCTION_CMP__22, INSTRUCTION_CMP__23, INSTRUCTION_CMP__24, O_1, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

07878                                                     {
07879         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07880         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07881         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07882         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07883         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07884         ptr<execution_info> einfo;
07885         ptr<set<ulint> > versions;
07886         
07887         //input operands
07888         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07889         dt_list_I_1->insert(DT_INT_8P);
07890         dt_list_I_1->insert(DT_INT_8U);
07891         dt_list_I_1->insert(DT_INT_8S);
07892         dt_list_I_1->insert(DT_INT_16U);
07893         dt_list_I_1->insert(DT_INT_16S);
07894         dt_list_I_1->insert(DT_INT_32U);
07895         dt_list_I_1->insert(DT_INT_32S);
07896         dt_list_I_1->insert(DT_BOOL);
07897         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07898         in_operands->push_back(op_I_1);
07899         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
07900         dt_list_I_2->insert(DT_INT_8P);
07901         dt_list_I_2->insert(DT_INT_8U);
07902         dt_list_I_2->insert(DT_INT_8S);
07903         dt_list_I_2->insert(DT_INT_16U);
07904         dt_list_I_2->insert(DT_INT_16S);
07905         dt_list_I_2->insert(DT_INT_32U);
07906         dt_list_I_2->insert(DT_INT_32S);
07907         dt_list_I_2->insert(DT_BOOL);
07908         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
07909         in_operands->push_back(op_I_2);
07910 
07911         //output operands
07912         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07913         dt_list_O_1->insert(DT_COND);
07914         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07915         reg_list_O_1->insert(R_COND);
07916         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07917         out_operands->push_back(op_O_1);
07918 
07919         //execution info
07920         einfo = execution_info::create(30);
07921 
07922         //properties
07923 
07924         //versions
07925         versions = set<ulint>::create();
07926         versions->insert(INSTRUCTION_CMP__1);
07927         versions->insert(INSTRUCTION_CMP__2);
07928         versions->insert(INSTRUCTION_CMP__21);
07929         versions->insert(INSTRUCTION_CMP__22);
07930         versions->insert(INSTRUCTION_CMP__23);
07931 
07932 
07933         //return target pseudoinstruction
07934         return tm_instr::create(INSTRUCTION_CMP__24,in_operands,out_operands,lstring("cmp $TYPE_I_1 $I_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
07935 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CONVERT__1 (  ) 

Definition at line 6585 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_CONVERT__5, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06585                                                        {
06586         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06587         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06588         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06589         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06590         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06591         ptr<execution_info> einfo;
06592         ptr<set<ulint> > versions;
06593         
06594         //input operands
06595         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06596         dt_list_I_1->insert(DT_INT_8P);
06597         dt_list_I_1->insert(DT_INT_8U);
06598         dt_list_I_1->insert(DT_INT_8S);
06599         dt_list_I_1->insert(DT_INT_16U);
06600         dt_list_I_1->insert(DT_INT_16S);
06601         dt_list_I_1->insert(DT_INT_32U);
06602         dt_list_I_1->insert(DT_INT_32S);
06603         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06604         reg_list_I_1->insert(R_EAX);
06605         reg_list_I_1->insert(R_EBX);
06606         reg_list_I_1->insert(R_ECX);
06607         reg_list_I_1->insert(R_EDX);
06608         reg_list_I_1->insert(R_EDI);
06609         reg_list_I_1->insert(R_ESI);
06610         reg_list_I_1->insert(R_AX);
06611         reg_list_I_1->insert(R_BX);
06612         reg_list_I_1->insert(R_CX);
06613         reg_list_I_1->insert(R_DX);
06614         reg_list_I_1->insert(R_DI);
06615         reg_list_I_1->insert(R_SI);
06616         reg_list_I_1->insert(R_AL);
06617         reg_list_I_1->insert(R_AH);
06618         reg_list_I_1->insert(R_BL);
06619         reg_list_I_1->insert(R_BH);
06620         reg_list_I_1->insert(R_CL);
06621         reg_list_I_1->insert(R_CH);
06622         reg_list_I_1->insert(R_DL);
06623         reg_list_I_1->insert(R_DH);
06624         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06625         op_I_1->destroyed_by_get()->push_back(O_1);
06626         in_operands->push_back(op_I_1);
06627 
06628         //output operands
06629         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06630         dt_list_O_1->insert(DT_INT_8U);
06631         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06632         reg_list_O_1->insert(R_AL);
06633         reg_list_O_1->insert(R_AH);
06634         reg_list_O_1->insert(R_BL);
06635         reg_list_O_1->insert(R_BH);
06636         reg_list_O_1->insert(R_CL);
06637         reg_list_O_1->insert(R_CH);
06638         reg_list_O_1->insert(R_DL);
06639         reg_list_O_1->insert(R_DH);
06640         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06641         op_O_1->destroys_set(I_1);
06642         out_operands->push_back(op_O_1);
06643 
06644         //execution info
06645         einfo = execution_info::create(0);
06646 
06647         //properties
06648 
06649         //versions
06650         versions = set<ulint>::create();
06651         versions->insert(INSTRUCTION_CONVERT__5);
06652         versions->insert(INSTRUCTION_CONVERT__2);
06653         versions->insert(INSTRUCTION_CONVERT__3);
06654 
06655 
06656         //return target pseudoinstruction
06657         return tm_instr::create(INSTRUCTION_CONVERT__1,in_operands,out_operands,lstring(""), props,versions,0,einfo);
06658 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CONVERT__2 (  ) 

Definition at line 6737 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, I_1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_CONVERT__5, O_1, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06737                                                        {
06738         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06739         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06740         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06741         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06742         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06743         ptr<execution_info> einfo;
06744         ptr<set<ulint> > versions;
06745         
06746         //input operands
06747         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06748         dt_list_I_1->insert(DT_INT_32U);
06749         dt_list_I_1->insert(DT_INT_32S);
06750         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06751         reg_list_I_1->insert(R_EAX);
06752         reg_list_I_1->insert(R_EBX);
06753         reg_list_I_1->insert(R_ECX);
06754         reg_list_I_1->insert(R_EDX);
06755         reg_list_I_1->insert(R_EDI);
06756         reg_list_I_1->insert(R_ESI);
06757         reg_list_I_1->insert(R_AX);
06758         reg_list_I_1->insert(R_BX);
06759         reg_list_I_1->insert(R_CX);
06760         reg_list_I_1->insert(R_DX);
06761         reg_list_I_1->insert(R_DI);
06762         reg_list_I_1->insert(R_SI);
06763         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06764         op_I_1->destroyed_by_get()->push_back(O_1);
06765         in_operands->push_back(op_I_1);
06766 
06767         //output operands
06768         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06769         dt_list_O_1->insert(DT_INT_16U);
06770         dt_list_O_1->insert(DT_INT_16S);
06771         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06772         reg_list_O_1->insert(R_AX);
06773         reg_list_O_1->insert(R_BX);
06774         reg_list_O_1->insert(R_CX);
06775         reg_list_O_1->insert(R_DX);
06776         reg_list_O_1->insert(R_DI);
06777         reg_list_O_1->insert(R_SI);
06778         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06779         op_O_1->destroys_set(I_1);
06780         out_operands->push_back(op_O_1);
06781 
06782         //execution info
06783         einfo = execution_info::create(0);
06784 
06785         //properties
06786 
06787         //versions
06788         versions = set<ulint>::create();
06789         versions->insert(INSTRUCTION_CONVERT__1);
06790         versions->insert(INSTRUCTION_CONVERT__5);
06791         versions->insert(INSTRUCTION_CONVERT__3);
06792 
06793 
06794         //return target pseudoinstruction
06795         return tm_instr::create(INSTRUCTION_CONVERT__2,in_operands,out_operands,lstring(""), props,versions,0,einfo);
06796 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CONVERT__3 (  ) 

Definition at line 6798 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, I_1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_CONVERT__5, O_1, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

06798                                                        {
06799         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06800         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06801         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06802         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06803         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06804         ptr<execution_info> einfo;
06805         ptr<set<ulint> > versions;
06806         
06807         //input operands
06808         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06809         dt_list_I_1->insert(DT_INT_32U);
06810         dt_list_I_1->insert(DT_INT_32S);
06811         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06812         reg_list_I_1->insert(R_EAX);
06813         reg_list_I_1->insert(R_EBX);
06814         reg_list_I_1->insert(R_ECX);
06815         reg_list_I_1->insert(R_EDX);
06816         reg_list_I_1->insert(R_EDI);
06817         reg_list_I_1->insert(R_ESI);
06818         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06819         op_I_1->destroyed_by_get()->push_back(O_1);
06820         in_operands->push_back(op_I_1);
06821 
06822         //output operands
06823         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06824         dt_list_O_1->insert(DT_INT_32U);
06825         dt_list_O_1->insert(DT_INT_32S);
06826         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06827         reg_list_O_1->insert(R_EAX);
06828         reg_list_O_1->insert(R_EBX);
06829         reg_list_O_1->insert(R_ECX);
06830         reg_list_O_1->insert(R_EDX);
06831         reg_list_O_1->insert(R_EDI);
06832         reg_list_O_1->insert(R_ESI);
06833         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06834         op_O_1->destroys_set(I_1);
06835         out_operands->push_back(op_O_1);
06836 
06837         //execution info
06838         einfo = execution_info::create(0);
06839 
06840         //properties
06841 
06842         //versions
06843         versions = set<ulint>::create();
06844         versions->insert(INSTRUCTION_CONVERT__1);
06845         versions->insert(INSTRUCTION_CONVERT__5);
06846         versions->insert(INSTRUCTION_CONVERT__2);
06847 
06848 
06849         //return target pseudoinstruction
06850         return tm_instr::create(INSTRUCTION_CONVERT__3,in_operands,out_operands,lstring(""), props,versions,0,einfo);
06851 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CONVERT__5 (  ) 

Definition at line 6660 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_CONVERT__1, INSTRUCTION_CONVERT__2, INSTRUCTION_CONVERT__3, INSTRUCTION_CONVERT__5, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06660                                                        {
06661         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06662         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06663         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06664         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06665         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06666         ptr<execution_info> einfo;
06667         ptr<set<ulint> > versions;
06668         
06669         //input operands
06670         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06671         dt_list_I_1->insert(DT_INT_8P);
06672         dt_list_I_1->insert(DT_INT_8U);
06673         dt_list_I_1->insert(DT_INT_8S);
06674         dt_list_I_1->insert(DT_INT_16U);
06675         dt_list_I_1->insert(DT_INT_16S);
06676         dt_list_I_1->insert(DT_INT_32U);
06677         dt_list_I_1->insert(DT_INT_32S);
06678         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06679         reg_list_I_1->insert(R_EAX);
06680         reg_list_I_1->insert(R_EBX);
06681         reg_list_I_1->insert(R_ECX);
06682         reg_list_I_1->insert(R_EDX);
06683         reg_list_I_1->insert(R_EDI);
06684         reg_list_I_1->insert(R_ESI);
06685         reg_list_I_1->insert(R_AX);
06686         reg_list_I_1->insert(R_BX);
06687         reg_list_I_1->insert(R_CX);
06688         reg_list_I_1->insert(R_DX);
06689         reg_list_I_1->insert(R_DI);
06690         reg_list_I_1->insert(R_SI);
06691         reg_list_I_1->insert(R_AL);
06692         reg_list_I_1->insert(R_AH);
06693         reg_list_I_1->insert(R_BL);
06694         reg_list_I_1->insert(R_BH);
06695         reg_list_I_1->insert(R_CL);
06696         reg_list_I_1->insert(R_CH);
06697         reg_list_I_1->insert(R_DL);
06698         reg_list_I_1->insert(R_DH);
06699         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06700         op_I_1->destroyed_by_get()->push_back(O_1);
06701         in_operands->push_back(op_I_1);
06702 
06703         //output operands
06704         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06705         dt_list_O_1->insert(DT_INT_8P);
06706         dt_list_O_1->insert(DT_INT_8U);
06707         dt_list_O_1->insert(DT_INT_8S);
06708         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06709         reg_list_O_1->insert(R_AL);
06710         reg_list_O_1->insert(R_AH);
06711         reg_list_O_1->insert(R_BL);
06712         reg_list_O_1->insert(R_BH);
06713         reg_list_O_1->insert(R_CL);
06714         reg_list_O_1->insert(R_CH);
06715         reg_list_O_1->insert(R_DL);
06716         reg_list_O_1->insert(R_DH);
06717         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06718         op_O_1->destroys_set(I_1);
06719         out_operands->push_back(op_O_1);
06720 
06721         //execution info
06722         einfo = execution_info::create(0);
06723 
06724         //properties
06725 
06726         //versions
06727         versions = set<ulint>::create();
06728         versions->insert(INSTRUCTION_CONVERT__1);
06729         versions->insert(INSTRUCTION_CONVERT__2);
06730         versions->insert(INSTRUCTION_CONVERT__3);
06731 
06732 
06733         //return target pseudoinstruction
06734         return tm_instr::create(INSTRUCTION_CONVERT__5,in_operands,out_operands,lstring(""), props,versions,0,einfo);
06735 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_CWD__1 (  ) 

Definition at line 2981 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, I_1, INSTRUCTION_CWD__1, O_1, O_2, lestes::md::registers::R_AX, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

02981                                                    {
02982         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02983         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02984         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02985         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02986         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02987         ptr<execution_info> einfo;
02988         ptr<set<ulint> > versions;
02989         
02990         //input operands
02991         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02992         dt_list_I_1->insert(DT_INT_16S);
02993         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02994         reg_list_I_1->insert(R_AX);
02995         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02996         op_I_1->destroyed_by_get()->push_back(O_2);
02997         in_operands->push_back(op_I_1);
02998 
02999         //output operands
03000         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03001         dt_list_O_1->insert(DT_INT_16S);
03002         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03003         reg_list_O_1->insert(R_DX);
03004         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03005         out_operands->push_back(op_O_1);
03006         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03007         dt_list_O_2->insert(DT_INT_16S);
03008         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03009         reg_list_O_2->insert(R_AX);
03010         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03011         op_O_2->destroys_set(I_1);
03012         out_operands->push_back(op_O_2);
03013 
03014         //execution info
03015         einfo = execution_info::create(10);
03016 
03017         //properties
03018 
03019         //versions
03020 
03021 
03022         //return target pseudoinstruction
03023         return tm_instr::create(INSTRUCTION_CWD__1,in_operands,out_operands,lstring("cwd"), props,versions,0,einfo);
03024 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__1 (  ) 

Definition at line 3071 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

03071                                                    {
03072         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03073         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03074         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03075         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03076         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03077         ptr<execution_info> einfo;
03078         ptr<set<ulint> > versions;
03079         
03080         //input operands
03081         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03082         dt_list_I_1->insert(DT_INT_8U);
03083         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03084         reg_list_I_1->insert(R_AH);
03085         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03086         op_I_1->destroyed_by_get()->push_back(O_2);
03087         in_operands->push_back(op_I_1);
03088         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03089         dt_list_I_2->insert(DT_INT_8U);
03090         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03091         reg_list_I_2->insert(R_AL);
03092         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03093         op_I_2->destroyed_by_get()->push_back(O_1);
03094         in_operands->push_back(op_I_2);
03095         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03096         dt_list_I_3->insert(DT_INT_8U);
03097         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
03098         reg_list_I_3->insert(R_AL);
03099         reg_list_I_3->insert(R_AH);
03100         reg_list_I_3->insert(R_BL);
03101         reg_list_I_3->insert(R_BH);
03102         reg_list_I_3->insert(R_CL);
03103         reg_list_I_3->insert(R_CH);
03104         reg_list_I_3->insert(R_DL);
03105         reg_list_I_3->insert(R_DH);
03106         reg_list_I_3->erase(R_AL);
03107         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
03108         in_operands->push_back(op_I_3);
03109 
03110         //output operands
03111         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03112         dt_list_O_1->insert(DT_INT_8U);
03113         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03114         reg_list_O_1->insert(R_AL);
03115         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03116         op_O_1->destroys_set(I_2);
03117         out_operands->push_back(op_O_1);
03118         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03119         dt_list_O_2->insert(DT_INT_8U);
03120         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03121         reg_list_O_2->insert(R_AH);
03122         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03123         op_O_2->destroys_set(I_1);
03124         out_operands->push_back(op_O_2);
03125         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03126         dt_list_O_3->insert(DT_COND);
03127         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03128         reg_list_O_3->insert(R_COND);
03129         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03130         out_operands->push_back(op_O_3);
03131 
03132         //execution info
03133         einfo = execution_info::create(700);
03134 
03135         //properties
03136 
03137         //versions
03138         versions = set<ulint>::create();
03139         versions->insert(INSTRUCTION_DIV__11);
03140         versions->insert(INSTRUCTION_DIV__2);
03141         versions->insert(INSTRUCTION_DIV__21);
03142         versions->insert(INSTRUCTION_DIV__3);
03143         versions->insert(INSTRUCTION_DIV__31);
03144 
03145 
03146         //return target pseudoinstruction
03147         return tm_instr::create(INSTRUCTION_DIV__1,in_operands,out_operands,lstring("div $I_3"), props,versions,0,einfo);
03148 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__11 (  ) 

Definition at line 3150 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_AH, lestes::md::registers::R_AL, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

03150                                                     {
03151         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03152         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03153         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03154         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03155         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03156         ptr<execution_info> einfo;
03157         ptr<set<ulint> > versions;
03158         
03159         //input operands
03160         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03161         dt_list_I_1->insert(DT_INT_8U);
03162         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03163         reg_list_I_1->insert(R_AH);
03164         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03165         op_I_1->destroyed_by_get()->push_back(O_2);
03166         in_operands->push_back(op_I_1);
03167         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03168         dt_list_I_2->insert(DT_INT_8U);
03169         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03170         reg_list_I_2->insert(R_AL);
03171         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03172         op_I_2->destroyed_by_get()->push_back(O_1);
03173         in_operands->push_back(op_I_2);
03174         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03175         dt_list_I_3->insert(DT_INT_8U);
03176         ptr<tm_instr_op_mem> op_I_3 = tm_instr_op_mem::create(I_3, dt_list_I_3);
03177         in_operands->push_back(op_I_3);
03178 
03179         //output operands
03180         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03181         dt_list_O_1->insert(DT_INT_8U);
03182         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03183         reg_list_O_1->insert(R_AL);
03184         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03185         op_O_1->destroys_set(I_2);
03186         out_operands->push_back(op_O_1);
03187         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03188         dt_list_O_2->insert(DT_INT_8U);
03189         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03190         reg_list_O_2->insert(R_AH);
03191         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03192         op_O_2->destroys_set(I_1);
03193         out_operands->push_back(op_O_2);
03194         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03195         dt_list_O_3->insert(DT_COND);
03196         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03197         reg_list_O_3->insert(R_COND);
03198         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03199         out_operands->push_back(op_O_3);
03200 
03201         //execution info
03202         einfo = execution_info::create(720);
03203 
03204         //properties
03205 
03206         //versions
03207         versions = set<ulint>::create();
03208         versions->insert(INSTRUCTION_DIV__1);
03209         versions->insert(INSTRUCTION_DIV__2);
03210         versions->insert(INSTRUCTION_DIV__21);
03211         versions->insert(INSTRUCTION_DIV__3);
03212         versions->insert(INSTRUCTION_DIV__31);
03213 
03214 
03215         //return target pseudoinstruction
03216         return tm_instr::create(INSTRUCTION_DIV__11,in_operands,out_operands,lstring("div $TYPE_I_3 $I_3"), props,versions,0,einfo);
03217 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__2 (  ) 

Definition at line 3219 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

03219                                                    {
03220         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03221         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03222         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03223         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03224         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03225         ptr<execution_info> einfo;
03226         ptr<set<ulint> > versions;
03227         
03228         //input operands
03229         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03230         dt_list_I_1->insert(DT_INT_16U);
03231         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03232         reg_list_I_1->insert(R_DX);
03233         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03234         op_I_1->destroyed_by_get()->push_back(O_2);
03235         in_operands->push_back(op_I_1);
03236         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03237         dt_list_I_2->insert(DT_INT_16U);
03238         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03239         reg_list_I_2->insert(R_AX);
03240         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03241         op_I_2->destroyed_by_get()->push_back(O_1);
03242         in_operands->push_back(op_I_2);
03243         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03244         dt_list_I_3->insert(DT_INT_16U);
03245         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
03246         reg_list_I_3->insert(R_AX);
03247         reg_list_I_3->insert(R_BX);
03248         reg_list_I_3->insert(R_CX);
03249         reg_list_I_3->insert(R_DX);
03250         reg_list_I_3->insert(R_DI);
03251         reg_list_I_3->insert(R_SI);
03252         reg_list_I_3->erase(R_DX);
03253         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
03254         in_operands->push_back(op_I_3);
03255 
03256         //output operands
03257         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03258         dt_list_O_1->insert(DT_INT_16U);
03259         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03260         reg_list_O_1->insert(R_AX);
03261         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03262         op_O_1->destroys_set(I_2);
03263         out_operands->push_back(op_O_1);
03264         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03265         dt_list_O_2->insert(DT_INT_16U);
03266         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03267         reg_list_O_2->insert(R_DX);
03268         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03269         op_O_2->destroys_set(I_1);
03270         out_operands->push_back(op_O_2);
03271         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03272         dt_list_O_3->insert(DT_COND);
03273         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03274         reg_list_O_3->insert(R_COND);
03275         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03276         out_operands->push_back(op_O_3);
03277 
03278         //execution info
03279         einfo = execution_info::create(700);
03280 
03281         //properties
03282 
03283         //versions
03284         versions = set<ulint>::create();
03285         versions->insert(INSTRUCTION_DIV__1);
03286         versions->insert(INSTRUCTION_DIV__11);
03287         versions->insert(INSTRUCTION_DIV__21);
03288         versions->insert(INSTRUCTION_DIV__3);
03289         versions->insert(INSTRUCTION_DIV__31);
03290 
03291 
03292         //return target pseudoinstruction
03293         return tm_instr::create(INSTRUCTION_DIV__2,in_operands,out_operands,lstring("div $I_3"), props,versions,0,einfo);
03294 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__21 (  ) 

Definition at line 3296 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_COND, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

03296                                                     {
03297         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03298         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03299         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03300         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03301         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03302         ptr<execution_info> einfo;
03303         ptr<set<ulint> > versions;
03304         
03305         //input operands
03306         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03307         dt_list_I_1->insert(DT_INT_16U);
03308         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03309         reg_list_I_1->insert(R_DX);
03310         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03311         op_I_1->destroyed_by_get()->push_back(O_2);
03312         in_operands->push_back(op_I_1);
03313         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03314         dt_list_I_2->insert(DT_INT_16U);
03315         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03316         reg_list_I_2->insert(R_AX);
03317         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03318         op_I_2->destroyed_by_get()->push_back(O_1);
03319         in_operands->push_back(op_I_2);
03320         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03321         dt_list_I_3->insert(DT_INT_16U);
03322         ptr<tm_instr_op_mem> op_I_3 = tm_instr_op_mem::create(I_3, dt_list_I_3);
03323         in_operands->push_back(op_I_3);
03324 
03325         //output operands
03326         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03327         dt_list_O_1->insert(DT_INT_16U);
03328         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03329         reg_list_O_1->insert(R_AX);
03330         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03331         op_O_1->destroys_set(I_2);
03332         out_operands->push_back(op_O_1);
03333         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03334         dt_list_O_2->insert(DT_INT_16U);
03335         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03336         reg_list_O_2->insert(R_DX);
03337         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03338         op_O_2->destroys_set(I_1);
03339         out_operands->push_back(op_O_2);
03340         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03341         dt_list_O_3->insert(DT_COND);
03342         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03343         reg_list_O_3->insert(R_COND);
03344         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03345         out_operands->push_back(op_O_3);
03346 
03347         //execution info
03348         einfo = execution_info::create(720);
03349 
03350         //properties
03351 
03352         //versions
03353         versions = set<ulint>::create();
03354         versions->insert(INSTRUCTION_DIV__1);
03355         versions->insert(INSTRUCTION_DIV__11);
03356         versions->insert(INSTRUCTION_DIV__2);
03357         versions->insert(INSTRUCTION_DIV__3);
03358         versions->insert(INSTRUCTION_DIV__31);
03359 
03360 
03361         //return target pseudoinstruction
03362         return tm_instr::create(INSTRUCTION_DIV__21,in_operands,out_operands,lstring("div $TYPE_I_3 $I_3"), props,versions,0,einfo);
03363 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__3 (  ) 

Definition at line 3365 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

03365                                                    {
03366         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03367         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03368         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03369         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03370         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03371         ptr<execution_info> einfo;
03372         ptr<set<ulint> > versions;
03373         
03374         //input operands
03375         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03376         dt_list_I_1->insert(DT_INT_32U);
03377         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03378         reg_list_I_1->insert(R_EDX);
03379         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03380         op_I_1->destroyed_by_get()->push_back(O_2);
03381         in_operands->push_back(op_I_1);
03382         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03383         dt_list_I_2->insert(DT_INT_32U);
03384         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03385         reg_list_I_2->insert(R_EAX);
03386         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03387         op_I_2->destroyed_by_get()->push_back(O_1);
03388         in_operands->push_back(op_I_2);
03389         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03390         dt_list_I_3->insert(DT_INT_32U);
03391         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
03392         reg_list_I_3->insert(R_EAX);
03393         reg_list_I_3->insert(R_EBX);
03394         reg_list_I_3->insert(R_ECX);
03395         reg_list_I_3->insert(R_EDX);
03396         reg_list_I_3->insert(R_EDI);
03397         reg_list_I_3->insert(R_ESI);
03398         reg_list_I_3->erase(R_EDX);
03399         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
03400         in_operands->push_back(op_I_3);
03401 
03402         //output operands
03403         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03404         dt_list_O_1->insert(DT_INT_32U);
03405         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03406         reg_list_O_1->insert(R_EAX);
03407         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03408         op_O_1->destroys_set(I_2);
03409         out_operands->push_back(op_O_1);
03410         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03411         dt_list_O_2->insert(DT_INT_32U);
03412         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03413         reg_list_O_2->insert(R_EDX);
03414         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03415         op_O_2->destroys_set(I_1);
03416         out_operands->push_back(op_O_2);
03417         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03418         dt_list_O_3->insert(DT_COND);
03419         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03420         reg_list_O_3->insert(R_COND);
03421         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03422         out_operands->push_back(op_O_3);
03423 
03424         //execution info
03425         einfo = execution_info::create(700);
03426 
03427         //properties
03428 
03429         //versions
03430         versions = set<ulint>::create();
03431         versions->insert(INSTRUCTION_DIV__1);
03432         versions->insert(INSTRUCTION_DIV__11);
03433         versions->insert(INSTRUCTION_DIV__2);
03434         versions->insert(INSTRUCTION_DIV__21);
03435         versions->insert(INSTRUCTION_DIV__31);
03436 
03437 
03438         //return target pseudoinstruction
03439         return tm_instr::create(INSTRUCTION_DIV__3,in_operands,out_operands,lstring("div $I_3"), props,versions,0,einfo);
03440 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_DIV__31 (  ) 

Definition at line 3442 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32U, I_1, I_2, I_3, INSTRUCTION_DIV__1, INSTRUCTION_DIV__11, INSTRUCTION_DIV__2, INSTRUCTION_DIV__21, INSTRUCTION_DIV__3, INSTRUCTION_DIV__31, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

03442                                                     {
03443         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03444         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03445         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03446         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03447         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03448         ptr<execution_info> einfo;
03449         ptr<set<ulint> > versions;
03450         
03451         //input operands
03452         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03453         dt_list_I_1->insert(DT_INT_32U);
03454         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03455         reg_list_I_1->insert(R_EDX);
03456         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03457         op_I_1->destroyed_by_get()->push_back(O_2);
03458         in_operands->push_back(op_I_1);
03459         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03460         dt_list_I_2->insert(DT_INT_32U);
03461         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03462         reg_list_I_2->insert(R_EAX);
03463         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03464         op_I_2->destroyed_by_get()->push_back(O_1);
03465         in_operands->push_back(op_I_2);
03466         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03467         dt_list_I_3->insert(DT_INT_32U);
03468         ptr<tm_instr_op_mem> op_I_3 = tm_instr_op_mem::create(I_3, dt_list_I_3);
03469         in_operands->push_back(op_I_3);
03470 
03471         //output operands
03472         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03473         dt_list_O_1->insert(DT_INT_32U);
03474         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03475         reg_list_O_1->insert(R_EAX);
03476         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03477         op_O_1->destroys_set(I_2);
03478         out_operands->push_back(op_O_1);
03479         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03480         dt_list_O_2->insert(DT_INT_32U);
03481         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03482         reg_list_O_2->insert(R_EDX);
03483         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03484         op_O_2->destroys_set(I_1);
03485         out_operands->push_back(op_O_2);
03486         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03487         dt_list_O_3->insert(DT_COND);
03488         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03489         reg_list_O_3->insert(R_COND);
03490         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03491         out_operands->push_back(op_O_3);
03492 
03493         //execution info
03494         einfo = execution_info::create(720);
03495 
03496         //properties
03497 
03498         //versions
03499         versions = set<ulint>::create();
03500         versions->insert(INSTRUCTION_DIV__1);
03501         versions->insert(INSTRUCTION_DIV__11);
03502         versions->insert(INSTRUCTION_DIV__2);
03503         versions->insert(INSTRUCTION_DIV__21);
03504         versions->insert(INSTRUCTION_DIV__3);
03505 
03506 
03507         //return target pseudoinstruction
03508         return tm_instr::create(INSTRUCTION_DIV__31,in_operands,out_operands,lstring("div $TYPE_I_3 $I_3"), props,versions,0,einfo);
03509 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_EPILOGUE__1 (  ) 

Definition at line 9280 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, I_3, IF_SYS, INSTRUCTION_EPILOGUE__1, lestes::md::registers::R_EBX, lestes::md::registers::R_EDI, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

09280                                                         {
09281         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09282         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09283         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09284         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09285         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09286         ptr<execution_info> einfo;
09287         ptr<set<ulint> > versions;
09288         
09289         //input operands
09290         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
09291         dt_list_I_1->insert(DT_INT_8P);
09292         dt_list_I_1->insert(DT_INT_8U);
09293         dt_list_I_1->insert(DT_INT_8S);
09294         dt_list_I_1->insert(DT_INT_16U);
09295         dt_list_I_1->insert(DT_INT_16S);
09296         dt_list_I_1->insert(DT_INT_32U);
09297         dt_list_I_1->insert(DT_INT_32S);
09298         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
09299         reg_list_I_1->insert(R_EDI);
09300         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
09301         in_operands->push_back(op_I_1);
09302         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
09303         dt_list_I_2->insert(DT_INT_8P);
09304         dt_list_I_2->insert(DT_INT_8U);
09305         dt_list_I_2->insert(DT_INT_8S);
09306         dt_list_I_2->insert(DT_INT_16U);
09307         dt_list_I_2->insert(DT_INT_16S);
09308         dt_list_I_2->insert(DT_INT_32U);
09309         dt_list_I_2->insert(DT_INT_32S);
09310         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
09311         reg_list_I_2->insert(R_ESI);
09312         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
09313         in_operands->push_back(op_I_2);
09314         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
09315         dt_list_I_3->insert(DT_INT_8P);
09316         dt_list_I_3->insert(DT_INT_8U);
09317         dt_list_I_3->insert(DT_INT_8S);
09318         dt_list_I_3->insert(DT_INT_16U);
09319         dt_list_I_3->insert(DT_INT_16S);
09320         dt_list_I_3->insert(DT_INT_32U);
09321         dt_list_I_3->insert(DT_INT_32S);
09322         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
09323         reg_list_I_3->insert(R_EBX);
09324         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
09325         in_operands->push_back(op_I_3);
09326 
09327         //output operands
09328 
09329         //execution info
09330         einfo = execution_info::create(0);
09331 
09332         //properties
09333 
09334         //versions
09335 
09336 
09337         //return target pseudoinstruction
09338         return tm_instr::create(INSTRUCTION_EPILOGUE__1,in_operands,out_operands,lstring(""), props,versions,IF_SYS,einfo);
09339 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_ESPADD__1 (  ) 

Definition at line 9066 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, IF_SYS, INSTRUCTION_ESPADD__1, O_1, O_2, lestes::md::registers::R_COND, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

09066                                                       {
09067         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09068         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09069         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09070         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09071         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09072         ptr<execution_info> einfo;
09073         ptr<set<ulint> > versions;
09074         
09075         //input operands
09076         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
09077         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
09078         reg_list_I_1->insert(R_ESP);
09079         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
09080         op_I_1->destroyed_by_get()->push_back(O_1);
09081         in_operands->push_back(op_I_1);
09082         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
09083         dt_list_I_2->insert(DT_INT_8P);
09084         dt_list_I_2->insert(DT_INT_8U);
09085         dt_list_I_2->insert(DT_INT_8S);
09086         dt_list_I_2->insert(DT_INT_16U);
09087         dt_list_I_2->insert(DT_INT_16S);
09088         dt_list_I_2->insert(DT_INT_32U);
09089         dt_list_I_2->insert(DT_INT_32S);
09090         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
09091         in_operands->push_back(op_I_2);
09092 
09093         //output operands
09094         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
09095         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
09096         reg_list_O_1->insert(R_ESP);
09097         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
09098         op_O_1->destroys_set(I_1);
09099         out_operands->push_back(op_O_1);
09100         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
09101         dt_list_O_2->insert(DT_COND);
09102         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
09103         reg_list_O_2->insert(R_COND);
09104         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
09105         out_operands->push_back(op_O_2);
09106 
09107         //execution info
09108         einfo = execution_info::create(10);
09109 
09110         //properties
09111 
09112         //versions
09113 
09114 
09115         //return target pseudoinstruction
09116         return tm_instr::create(INSTRUCTION_ESPADD__1,in_operands,out_operands,lstring("add $O_1, $TYPE_I_2 $I_2"), props,versions,IF_SYS,einfo);
09117 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__1 (  ) 

Definition at line 3604 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_8S, I_1, I_2, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

03604                                                     {
03605         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03606         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03607         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03608         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03609         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03610         ptr<execution_info> einfo;
03611         ptr<set<ulint> > versions;
03612         
03613         //input operands
03614         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03615         dt_list_I_1->insert(DT_INT_16S);
03616         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03617         reg_list_I_1->insert(R_AX);
03618         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03619         op_I_1->destroyed_by_get()->push_back(O_1);
03620         op_I_1->destroyed_by_get()->push_back(O_2);
03621         in_operands->push_back(op_I_1);
03622         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03623         dt_list_I_2->insert(DT_INT_8S);
03624         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03625         reg_list_I_2->insert(R_AL);
03626         reg_list_I_2->insert(R_AH);
03627         reg_list_I_2->insert(R_BL);
03628         reg_list_I_2->insert(R_BH);
03629         reg_list_I_2->insert(R_CL);
03630         reg_list_I_2->insert(R_CH);
03631         reg_list_I_2->insert(R_DL);
03632         reg_list_I_2->insert(R_DH);
03633         reg_list_I_2->erase(R_AH);
03634         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03635         in_operands->push_back(op_I_2);
03636 
03637         //output operands
03638         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03639         dt_list_O_1->insert(DT_INT_8S);
03640         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03641         reg_list_O_1->insert(R_AL);
03642         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03643         op_O_1->destroys_set(I_1);
03644         out_operands->push_back(op_O_1);
03645         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03646         dt_list_O_2->insert(DT_INT_8S);
03647         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03648         reg_list_O_2->insert(R_AH);
03649         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03650         op_O_2->destroys_set(I_1);
03651         out_operands->push_back(op_O_2);
03652         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03653         dt_list_O_3->insert(DT_COND);
03654         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03655         reg_list_O_3->insert(R_COND);
03656         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03657         out_operands->push_back(op_O_3);
03658 
03659         //execution info
03660         einfo = execution_info::create(700);
03661 
03662         //properties
03663 
03664         //versions
03665         versions = set<ulint>::create();
03666         versions->insert(INSTRUCTION_IDIV__11);
03667         versions->insert(INSTRUCTION_IDIV__2);
03668         versions->insert(INSTRUCTION_IDIV__21);
03669         versions->insert(INSTRUCTION_IDIV__3);
03670         versions->insert(INSTRUCTION_IDIV__31);
03671 
03672 
03673         //return target pseudoinstruction
03674         return tm_instr::create(INSTRUCTION_IDIV__1,in_operands,out_operands,lstring("idiv $I_2"), props,versions,0,einfo);
03675 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__11 (  ) 

Definition at line 3677 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_8S, I_1, I_2, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

03677                                                      {
03678         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03679         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03680         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03681         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03682         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03683         ptr<execution_info> einfo;
03684         ptr<set<ulint> > versions;
03685         
03686         //input operands
03687         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03688         dt_list_I_1->insert(DT_INT_16S);
03689         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03690         reg_list_I_1->insert(R_AX);
03691         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03692         op_I_1->destroyed_by_get()->push_back(O_1);
03693         op_I_1->destroyed_by_get()->push_back(O_2);
03694         in_operands->push_back(op_I_1);
03695         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03696         dt_list_I_2->insert(DT_INT_8S);
03697         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
03698         in_operands->push_back(op_I_2);
03699 
03700         //output operands
03701         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03702         dt_list_O_1->insert(DT_INT_8S);
03703         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03704         reg_list_O_1->insert(R_AL);
03705         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03706         op_O_1->destroys_set(I_1);
03707         out_operands->push_back(op_O_1);
03708         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03709         dt_list_O_2->insert(DT_INT_8S);
03710         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03711         reg_list_O_2->insert(R_AH);
03712         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03713         op_O_2->destroys_set(I_1);
03714         out_operands->push_back(op_O_2);
03715         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03716         dt_list_O_3->insert(DT_COND);
03717         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03718         reg_list_O_3->insert(R_COND);
03719         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03720         out_operands->push_back(op_O_3);
03721 
03722         //execution info
03723         einfo = execution_info::create(720);
03724 
03725         //properties
03726 
03727         //versions
03728         versions = set<ulint>::create();
03729         versions->insert(INSTRUCTION_IDIV__1);
03730         versions->insert(INSTRUCTION_IDIV__2);
03731         versions->insert(INSTRUCTION_IDIV__21);
03732         versions->insert(INSTRUCTION_IDIV__3);
03733         versions->insert(INSTRUCTION_IDIV__31);
03734 
03735 
03736         //return target pseudoinstruction
03737         return tm_instr::create(INSTRUCTION_IDIV__11,in_operands,out_operands,lstring("idiv $TYPE_I_2 $I_2"), props,versions,0,einfo);
03738 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__2 (  ) 

Definition at line 3740 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, I_1, I_2, I_3, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

03740                                                     {
03741         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03742         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03743         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03744         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03745         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03746         ptr<execution_info> einfo;
03747         ptr<set<ulint> > versions;
03748         
03749         //input operands
03750         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03751         dt_list_I_1->insert(DT_INT_16S);
03752         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03753         reg_list_I_1->insert(R_DX);
03754         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03755         op_I_1->destroyed_by_get()->push_back(O_2);
03756         in_operands->push_back(op_I_1);
03757         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03758         dt_list_I_2->insert(DT_INT_16S);
03759         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03760         reg_list_I_2->insert(R_AX);
03761         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03762         op_I_2->destroyed_by_get()->push_back(O_1);
03763         in_operands->push_back(op_I_2);
03764         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03765         dt_list_I_3->insert(DT_INT_16S);
03766         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
03767         reg_list_I_3->insert(R_AX);
03768         reg_list_I_3->insert(R_BX);
03769         reg_list_I_3->insert(R_CX);
03770         reg_list_I_3->insert(R_DX);
03771         reg_list_I_3->insert(R_DI);
03772         reg_list_I_3->insert(R_SI);
03773         reg_list_I_3->erase(R_DX);
03774         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
03775         in_operands->push_back(op_I_3);
03776 
03777         //output operands
03778         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03779         dt_list_O_1->insert(DT_INT_16S);
03780         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03781         reg_list_O_1->insert(R_AX);
03782         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03783         op_O_1->destroys_set(I_2);
03784         out_operands->push_back(op_O_1);
03785         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03786         dt_list_O_2->insert(DT_INT_16S);
03787         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03788         reg_list_O_2->insert(R_DX);
03789         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03790         op_O_2->destroys_set(I_1);
03791         out_operands->push_back(op_O_2);
03792         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03793         dt_list_O_3->insert(DT_COND);
03794         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03795         reg_list_O_3->insert(R_COND);
03796         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03797         out_operands->push_back(op_O_3);
03798 
03799         //execution info
03800         einfo = execution_info::create(700);
03801 
03802         //properties
03803 
03804         //versions
03805         versions = set<ulint>::create();
03806         versions->insert(INSTRUCTION_IDIV__1);
03807         versions->insert(INSTRUCTION_IDIV__11);
03808         versions->insert(INSTRUCTION_IDIV__21);
03809         versions->insert(INSTRUCTION_IDIV__3);
03810         versions->insert(INSTRUCTION_IDIV__31);
03811 
03812 
03813         //return target pseudoinstruction
03814         return tm_instr::create(INSTRUCTION_IDIV__2,in_operands,out_operands,lstring("idiv $I_3"), props,versions,0,einfo);
03815 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__21 (  ) 

Definition at line 3817 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, I_1, I_2, I_3, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_COND, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

03817                                                      {
03818         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03819         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03820         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03821         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03822         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03823         ptr<execution_info> einfo;
03824         ptr<set<ulint> > versions;
03825         
03826         //input operands
03827         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03828         dt_list_I_1->insert(DT_INT_16S);
03829         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03830         reg_list_I_1->insert(R_DX);
03831         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03832         op_I_1->destroyed_by_get()->push_back(O_2);
03833         in_operands->push_back(op_I_1);
03834         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03835         dt_list_I_2->insert(DT_INT_16S);
03836         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03837         reg_list_I_2->insert(R_AX);
03838         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03839         op_I_2->destroyed_by_get()->push_back(O_1);
03840         in_operands->push_back(op_I_2);
03841         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03842         dt_list_I_3->insert(DT_INT_16S);
03843         ptr<tm_instr_op_mem> op_I_3 = tm_instr_op_mem::create(I_3, dt_list_I_3);
03844         in_operands->push_back(op_I_3);
03845 
03846         //output operands
03847         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03848         dt_list_O_1->insert(DT_INT_16S);
03849         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03850         reg_list_O_1->insert(R_AX);
03851         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03852         op_O_1->destroys_set(I_2);
03853         out_operands->push_back(op_O_1);
03854         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03855         dt_list_O_2->insert(DT_INT_16S);
03856         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03857         reg_list_O_2->insert(R_DX);
03858         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03859         op_O_2->destroys_set(I_1);
03860         out_operands->push_back(op_O_2);
03861         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03862         dt_list_O_3->insert(DT_COND);
03863         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03864         reg_list_O_3->insert(R_COND);
03865         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03866         out_operands->push_back(op_O_3);
03867 
03868         //execution info
03869         einfo = execution_info::create(720);
03870 
03871         //properties
03872 
03873         //versions
03874         versions = set<ulint>::create();
03875         versions->insert(INSTRUCTION_IDIV__1);
03876         versions->insert(INSTRUCTION_IDIV__11);
03877         versions->insert(INSTRUCTION_IDIV__2);
03878         versions->insert(INSTRUCTION_IDIV__3);
03879         versions->insert(INSTRUCTION_IDIV__31);
03880 
03881 
03882         //return target pseudoinstruction
03883         return tm_instr::create(INSTRUCTION_IDIV__21,in_operands,out_operands,lstring("idiv $TYPE_I_3 $I_3"), props,versions,0,einfo);
03884 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__3 (  ) 

Definition at line 3886 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32S, I_1, I_2, I_3, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

03886                                                     {
03887         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03888         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03889         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03890         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03891         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03892         ptr<execution_info> einfo;
03893         ptr<set<ulint> > versions;
03894         
03895         //input operands
03896         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03897         dt_list_I_1->insert(DT_INT_32S);
03898         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03899         reg_list_I_1->insert(R_EDX);
03900         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03901         op_I_1->destroyed_by_get()->push_back(O_2);
03902         in_operands->push_back(op_I_1);
03903         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03904         dt_list_I_2->insert(DT_INT_32S);
03905         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03906         reg_list_I_2->insert(R_EAX);
03907         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03908         op_I_2->destroyed_by_get()->push_back(O_1);
03909         in_operands->push_back(op_I_2);
03910         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03911         dt_list_I_3->insert(DT_INT_32S);
03912         ptr<set<tm_register_base::id_type> > reg_list_I_3 = set<tm_register_base::id_type>::create();
03913         reg_list_I_3->insert(R_EAX);
03914         reg_list_I_3->insert(R_EBX);
03915         reg_list_I_3->insert(R_ECX);
03916         reg_list_I_3->insert(R_EDX);
03917         reg_list_I_3->insert(R_EDI);
03918         reg_list_I_3->insert(R_ESI);
03919         reg_list_I_3->erase(R_EDX);
03920         ptr<tm_instr_op_reg> op_I_3 = tm_instr_op_reg::create(I_3, dt_list_I_3, reg_list_I_3);
03921         in_operands->push_back(op_I_3);
03922 
03923         //output operands
03924         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03925         dt_list_O_1->insert(DT_INT_32S);
03926         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03927         reg_list_O_1->insert(R_EAX);
03928         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03929         op_O_1->destroys_set(I_2);
03930         out_operands->push_back(op_O_1);
03931         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
03932         dt_list_O_2->insert(DT_INT_32S);
03933         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
03934         reg_list_O_2->insert(R_EDX);
03935         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
03936         op_O_2->destroys_set(I_1);
03937         out_operands->push_back(op_O_2);
03938         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
03939         dt_list_O_3->insert(DT_COND);
03940         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
03941         reg_list_O_3->insert(R_COND);
03942         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
03943         out_operands->push_back(op_O_3);
03944 
03945         //execution info
03946         einfo = execution_info::create(700);
03947 
03948         //properties
03949 
03950         //versions
03951         versions = set<ulint>::create();
03952         versions->insert(INSTRUCTION_IDIV__1);
03953         versions->insert(INSTRUCTION_IDIV__11);
03954         versions->insert(INSTRUCTION_IDIV__2);
03955         versions->insert(INSTRUCTION_IDIV__21);
03956         versions->insert(INSTRUCTION_IDIV__31);
03957 
03958 
03959         //return target pseudoinstruction
03960         return tm_instr::create(INSTRUCTION_IDIV__3,in_operands,out_operands,lstring("idiv $I_3"), props,versions,0,einfo);
03961 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IDIV__31 (  ) 

Definition at line 3963 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32S, I_1, I_2, I_3, INSTRUCTION_IDIV__1, INSTRUCTION_IDIV__11, INSTRUCTION_IDIV__2, INSTRUCTION_IDIV__21, INSTRUCTION_IDIV__3, INSTRUCTION_IDIV__31, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

03963                                                      {
03964         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03965         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03966         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03967         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03968         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03969         ptr<execution_info> einfo;
03970         ptr<set<ulint> > versions;
03971         
03972         //input operands
03973         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
03974         dt_list_I_1->insert(DT_INT_32S);
03975         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
03976         reg_list_I_1->insert(R_EDX);
03977         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
03978         op_I_1->destroyed_by_get()->push_back(O_2);
03979         in_operands->push_back(op_I_1);
03980         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
03981         dt_list_I_2->insert(DT_INT_32S);
03982         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
03983         reg_list_I_2->insert(R_EAX);
03984         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
03985         op_I_2->destroyed_by_get()->push_back(O_1);
03986         in_operands->push_back(op_I_2);
03987         ptr<set<tm_data_type_base::id_type> > dt_list_I_3 = set<tm_data_type_base::id_type>::create();
03988         dt_list_I_3->insert(DT_INT_32S);
03989         ptr<tm_instr_op_mem> op_I_3 = tm_instr_op_mem::create(I_3, dt_list_I_3);
03990         in_operands->push_back(op_I_3);
03991 
03992         //output operands
03993         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03994         dt_list_O_1->insert(DT_INT_32S);
03995         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03996         reg_list_O_1->insert(R_EAX);
03997         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03998         op_O_1->destroys_set(I_2);
03999         out_operands->push_back(op_O_1);
04000         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04001         dt_list_O_2->insert(DT_INT_32S);
04002         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04003         reg_list_O_2->insert(R_EDX);
04004         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04005         op_O_2->destroys_set(I_1);
04006         out_operands->push_back(op_O_2);
04007         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
04008         dt_list_O_3->insert(DT_COND);
04009         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
04010         reg_list_O_3->insert(R_COND);
04011         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
04012         out_operands->push_back(op_O_3);
04013 
04014         //execution info
04015         einfo = execution_info::create(720);
04016 
04017         //properties
04018 
04019         //versions
04020         versions = set<ulint>::create();
04021         versions->insert(INSTRUCTION_IDIV__1);
04022         versions->insert(INSTRUCTION_IDIV__11);
04023         versions->insert(INSTRUCTION_IDIV__2);
04024         versions->insert(INSTRUCTION_IDIV__21);
04025         versions->insert(INSTRUCTION_IDIV__3);
04026 
04027 
04028         //return target pseudoinstruction
04029         return tm_instr::create(INSTRUCTION_IDIV__31,in_operands,out_operands,lstring("idiv $TYPE_I_3 $I_3"), props,versions,0,einfo);
04030 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__1 (  ) 

Definition at line 1880 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

01880                                                     {
01881         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01882         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01883         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01884         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01885         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01886         ptr<execution_info> einfo;
01887         ptr<set<ulint> > versions;
01888         
01889         //input operands
01890         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01891         dt_list_I_1->insert(DT_INT_8S);
01892         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01893         reg_list_I_1->insert(R_AL);
01894         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01895         op_I_1->destroyed_by_get()->push_back(O_1);
01896         in_operands->push_back(op_I_1);
01897         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01898         dt_list_I_2->insert(DT_INT_8S);
01899         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01900         reg_list_I_2->insert(R_AL);
01901         reg_list_I_2->insert(R_AH);
01902         reg_list_I_2->insert(R_BL);
01903         reg_list_I_2->insert(R_BH);
01904         reg_list_I_2->insert(R_CL);
01905         reg_list_I_2->insert(R_CH);
01906         reg_list_I_2->insert(R_DL);
01907         reg_list_I_2->insert(R_DH);
01908         reg_list_I_2->erase(R_AL);
01909         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01910         in_operands->push_back(op_I_2);
01911 
01912         //output operands
01913         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01914         dt_list_O_1->insert(DT_INT_8S);
01915         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01916         reg_list_O_1->insert(R_AL);
01917         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01918         op_O_1->destroys_set(I_1);
01919         out_operands->push_back(op_O_1);
01920         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01921         dt_list_O_2->insert(DT_COND);
01922         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01923         reg_list_O_2->insert(R_COND);
01924         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01925         out_operands->push_back(op_O_2);
01926 
01927         //execution info
01928         einfo = execution_info::create(100);
01929 
01930         //properties
01931 
01932         //versions
01933         versions = set<ulint>::create();
01934         versions->insert(INSTRUCTION_IMUL__2);
01935         versions->insert(INSTRUCTION_IMUL__21);
01936         versions->insert(INSTRUCTION_IMUL__22);
01937         versions->insert(INSTRUCTION_IMUL__23);
01938         versions->insert(INSTRUCTION_IMUL__24);
01939 
01940 
01941         //return target pseudoinstruction
01942         return tm_instr::create(INSTRUCTION_IMUL__1,in_operands,out_operands,lstring("imul $I_2"), props,versions,0,einfo);
01943 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__2 (  ) 

Definition at line 1945 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01945                                                     {
01946         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01947         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01948         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01949         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01950         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01951         ptr<execution_info> einfo;
01952         ptr<set<ulint> > versions;
01953         
01954         //input operands
01955         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01956         dt_list_I_1->insert(DT_INT_16S);
01957         dt_list_I_1->insert(DT_INT_32S);
01958         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01959         reg_list_I_1->insert(R_AX);
01960         reg_list_I_1->insert(R_BX);
01961         reg_list_I_1->insert(R_CX);
01962         reg_list_I_1->insert(R_DX);
01963         reg_list_I_1->insert(R_DI);
01964         reg_list_I_1->insert(R_SI);
01965         reg_list_I_1->insert(R_EAX);
01966         reg_list_I_1->insert(R_EBX);
01967         reg_list_I_1->insert(R_ECX);
01968         reg_list_I_1->insert(R_EDX);
01969         reg_list_I_1->insert(R_EDI);
01970         reg_list_I_1->insert(R_ESI);
01971         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01972         op_I_1->destroyed_by_get()->push_back(O_1);
01973         in_operands->push_back(op_I_1);
01974         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01975         dt_list_I_2->insert(DT_INT_16S);
01976         dt_list_I_2->insert(DT_INT_32S);
01977         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01978         reg_list_I_2->insert(R_AX);
01979         reg_list_I_2->insert(R_BX);
01980         reg_list_I_2->insert(R_CX);
01981         reg_list_I_2->insert(R_DX);
01982         reg_list_I_2->insert(R_DI);
01983         reg_list_I_2->insert(R_SI);
01984         reg_list_I_2->insert(R_EAX);
01985         reg_list_I_2->insert(R_EBX);
01986         reg_list_I_2->insert(R_ECX);
01987         reg_list_I_2->insert(R_EDX);
01988         reg_list_I_2->insert(R_EDI);
01989         reg_list_I_2->insert(R_ESI);
01990         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01991         in_operands->push_back(op_I_2);
01992 
01993         //output operands
01994         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01995         dt_list_O_1->insert(DT_INT_16S);
01996         dt_list_O_1->insert(DT_INT_32S);
01997         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01998         reg_list_O_1->insert(R_AX);
01999         reg_list_O_1->insert(R_BX);
02000         reg_list_O_1->insert(R_CX);
02001         reg_list_O_1->insert(R_DX);
02002         reg_list_O_1->insert(R_DI);
02003         reg_list_O_1->insert(R_SI);
02004         reg_list_O_1->insert(R_EAX);
02005         reg_list_O_1->insert(R_EBX);
02006         reg_list_O_1->insert(R_ECX);
02007         reg_list_O_1->insert(R_EDX);
02008         reg_list_O_1->insert(R_EDI);
02009         reg_list_O_1->insert(R_ESI);
02010         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02011         op_O_1->destroys_set(I_1);
02012         out_operands->push_back(op_O_1);
02013         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02014         dt_list_O_2->insert(DT_COND);
02015         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02016         reg_list_O_2->insert(R_COND);
02017         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02018         out_operands->push_back(op_O_2);
02019 
02020         //execution info
02021         einfo = execution_info::create(100);
02022 
02023         //properties
02024 
02025         //versions
02026         versions = set<ulint>::create();
02027         versions->insert(INSTRUCTION_IMUL__1);
02028         versions->insert(INSTRUCTION_IMUL__21);
02029         versions->insert(INSTRUCTION_IMUL__22);
02030         versions->insert(INSTRUCTION_IMUL__23);
02031         versions->insert(INSTRUCTION_IMUL__24);
02032 
02033 
02034         //return target pseudoinstruction
02035         return tm_instr::create(INSTRUCTION_IMUL__2,in_operands,out_operands,lstring("imul $O_1, $I_2"), props,versions,0,einfo);
02036 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__21 (  ) 

Definition at line 2038 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

02038                                                      {
02039         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02040         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02041         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02042         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02043         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02044         ptr<execution_info> einfo;
02045         ptr<set<ulint> > versions;
02046         
02047         //input operands
02048         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02049         dt_list_I_1->insert(DT_INT_16S);
02050         dt_list_I_1->insert(DT_INT_32S);
02051         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02052         reg_list_I_1->insert(R_AX);
02053         reg_list_I_1->insert(R_BX);
02054         reg_list_I_1->insert(R_CX);
02055         reg_list_I_1->insert(R_DX);
02056         reg_list_I_1->insert(R_DI);
02057         reg_list_I_1->insert(R_SI);
02058         reg_list_I_1->insert(R_EAX);
02059         reg_list_I_1->insert(R_EBX);
02060         reg_list_I_1->insert(R_ECX);
02061         reg_list_I_1->insert(R_EDX);
02062         reg_list_I_1->insert(R_EDI);
02063         reg_list_I_1->insert(R_ESI);
02064         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02065         op_I_1->destroyed_by_get()->push_back(O_1);
02066         in_operands->push_back(op_I_1);
02067         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02068         dt_list_I_2->insert(DT_INT_16S);
02069         dt_list_I_2->insert(DT_INT_32S);
02070         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
02071         in_operands->push_back(op_I_2);
02072 
02073         //output operands
02074         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02075         dt_list_O_1->insert(DT_INT_16S);
02076         dt_list_O_1->insert(DT_INT_32S);
02077         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02078         reg_list_O_1->insert(R_AX);
02079         reg_list_O_1->insert(R_BX);
02080         reg_list_O_1->insert(R_CX);
02081         reg_list_O_1->insert(R_DX);
02082         reg_list_O_1->insert(R_DI);
02083         reg_list_O_1->insert(R_SI);
02084         reg_list_O_1->insert(R_EAX);
02085         reg_list_O_1->insert(R_EBX);
02086         reg_list_O_1->insert(R_ECX);
02087         reg_list_O_1->insert(R_EDX);
02088         reg_list_O_1->insert(R_EDI);
02089         reg_list_O_1->insert(R_ESI);
02090         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02091         op_O_1->destroys_set(I_1);
02092         out_operands->push_back(op_O_1);
02093         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02094         dt_list_O_2->insert(DT_COND);
02095         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02096         reg_list_O_2->insert(R_COND);
02097         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02098         out_operands->push_back(op_O_2);
02099 
02100         //execution info
02101         einfo = execution_info::create(100);
02102 
02103         //properties
02104 
02105         //versions
02106         versions = set<ulint>::create();
02107         versions->insert(INSTRUCTION_IMUL__1);
02108         versions->insert(INSTRUCTION_IMUL__2);
02109         versions->insert(INSTRUCTION_IMUL__22);
02110         versions->insert(INSTRUCTION_IMUL__23);
02111         versions->insert(INSTRUCTION_IMUL__24);
02112 
02113 
02114         //return target pseudoinstruction
02115         return tm_instr::create(INSTRUCTION_IMUL__21,in_operands,out_operands,lstring("imul $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
02116 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__22 (  ) 

Definition at line 2118 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

02118                                                      {
02119         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02120         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02121         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02122         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02123         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02124         ptr<execution_info> einfo;
02125         ptr<set<ulint> > versions;
02126         
02127         //input operands
02128         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02129         dt_list_I_1->insert(DT_INT_16S);
02130         dt_list_I_1->insert(DT_INT_32S);
02131         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
02132         in_operands->push_back(op_I_1);
02133         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02134         dt_list_I_2->insert(DT_INT_16S);
02135         dt_list_I_2->insert(DT_INT_32S);
02136         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02137         reg_list_I_2->insert(R_AX);
02138         reg_list_I_2->insert(R_BX);
02139         reg_list_I_2->insert(R_CX);
02140         reg_list_I_2->insert(R_DX);
02141         reg_list_I_2->insert(R_DI);
02142         reg_list_I_2->insert(R_SI);
02143         reg_list_I_2->insert(R_EAX);
02144         reg_list_I_2->insert(R_EBX);
02145         reg_list_I_2->insert(R_ECX);
02146         reg_list_I_2->insert(R_EDX);
02147         reg_list_I_2->insert(R_EDI);
02148         reg_list_I_2->insert(R_ESI);
02149         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02150         op_I_2->destroyed_by_get()->push_back(O_1);
02151         in_operands->push_back(op_I_2);
02152 
02153         //output operands
02154         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02155         dt_list_O_1->insert(DT_INT_16S);
02156         dt_list_O_1->insert(DT_INT_32S);
02157         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02158         reg_list_O_1->insert(R_AX);
02159         reg_list_O_1->insert(R_BX);
02160         reg_list_O_1->insert(R_CX);
02161         reg_list_O_1->insert(R_DX);
02162         reg_list_O_1->insert(R_DI);
02163         reg_list_O_1->insert(R_SI);
02164         reg_list_O_1->insert(R_EAX);
02165         reg_list_O_1->insert(R_EBX);
02166         reg_list_O_1->insert(R_ECX);
02167         reg_list_O_1->insert(R_EDX);
02168         reg_list_O_1->insert(R_EDI);
02169         reg_list_O_1->insert(R_ESI);
02170         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02171         op_O_1->destroys_set(I_2);
02172         out_operands->push_back(op_O_1);
02173         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02174         dt_list_O_2->insert(DT_COND);
02175         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02176         reg_list_O_2->insert(R_COND);
02177         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02178         out_operands->push_back(op_O_2);
02179 
02180         //execution info
02181         einfo = execution_info::create(100);
02182 
02183         //properties
02184 
02185         //versions
02186         versions = set<ulint>::create();
02187         versions->insert(INSTRUCTION_IMUL__1);
02188         versions->insert(INSTRUCTION_IMUL__2);
02189         versions->insert(INSTRUCTION_IMUL__21);
02190         versions->insert(INSTRUCTION_IMUL__23);
02191         versions->insert(INSTRUCTION_IMUL__24);
02192 
02193 
02194         //return target pseudoinstruction
02195         return tm_instr::create(INSTRUCTION_IMUL__22,in_operands,out_operands,lstring("imul $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
02196 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__23 (  ) 

Definition at line 2198 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

02198                                                      {
02199         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02200         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02201         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02202         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02203         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02204         ptr<execution_info> einfo;
02205         ptr<set<ulint> > versions;
02206         
02207         //input operands
02208         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02209         dt_list_I_1->insert(DT_INT_16S);
02210         dt_list_I_1->insert(DT_INT_32S);
02211         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02212         reg_list_I_1->insert(R_AX);
02213         reg_list_I_1->insert(R_BX);
02214         reg_list_I_1->insert(R_CX);
02215         reg_list_I_1->insert(R_DX);
02216         reg_list_I_1->insert(R_DI);
02217         reg_list_I_1->insert(R_SI);
02218         reg_list_I_1->insert(R_EAX);
02219         reg_list_I_1->insert(R_EBX);
02220         reg_list_I_1->insert(R_ECX);
02221         reg_list_I_1->insert(R_EDX);
02222         reg_list_I_1->insert(R_EDI);
02223         reg_list_I_1->insert(R_ESI);
02224         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02225         op_I_1->destroyed_by_get()->push_back(O_1);
02226         in_operands->push_back(op_I_1);
02227         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02228         dt_list_I_2->insert(DT_INT_16S);
02229         dt_list_I_2->insert(DT_INT_32S);
02230         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
02231         in_operands->push_back(op_I_2);
02232 
02233         //output operands
02234         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02235         dt_list_O_1->insert(DT_INT_16S);
02236         dt_list_O_1->insert(DT_INT_32S);
02237         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02238         reg_list_O_1->insert(R_AX);
02239         reg_list_O_1->insert(R_BX);
02240         reg_list_O_1->insert(R_CX);
02241         reg_list_O_1->insert(R_DX);
02242         reg_list_O_1->insert(R_DI);
02243         reg_list_O_1->insert(R_SI);
02244         reg_list_O_1->insert(R_EAX);
02245         reg_list_O_1->insert(R_EBX);
02246         reg_list_O_1->insert(R_ECX);
02247         reg_list_O_1->insert(R_EDX);
02248         reg_list_O_1->insert(R_EDI);
02249         reg_list_O_1->insert(R_ESI);
02250         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02251         op_O_1->destroys_set(I_1);
02252         out_operands->push_back(op_O_1);
02253         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02254         dt_list_O_2->insert(DT_COND);
02255         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02256         reg_list_O_2->insert(R_COND);
02257         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02258         out_operands->push_back(op_O_2);
02259 
02260         //execution info
02261         einfo = execution_info::create(120);
02262 
02263         //properties
02264 
02265         //versions
02266         versions = set<ulint>::create();
02267         versions->insert(INSTRUCTION_IMUL__1);
02268         versions->insert(INSTRUCTION_IMUL__2);
02269         versions->insert(INSTRUCTION_IMUL__21);
02270         versions->insert(INSTRUCTION_IMUL__22);
02271         versions->insert(INSTRUCTION_IMUL__24);
02272 
02273 
02274         //return target pseudoinstruction
02275         return tm_instr::create(INSTRUCTION_IMUL__23,in_operands,out_operands,lstring("imul $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
02276 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_IMUL__24 (  ) 

Definition at line 2278 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, I_1, I_2, INSTRUCTION_IMUL__1, INSTRUCTION_IMUL__2, INSTRUCTION_IMUL__21, INSTRUCTION_IMUL__22, INSTRUCTION_IMUL__23, INSTRUCTION_IMUL__24, O_1, O_2, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

02278                                                      {
02279         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02280         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02281         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02282         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02283         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02284         ptr<execution_info> einfo;
02285         ptr<set<ulint> > versions;
02286         
02287         //input operands
02288         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02289         dt_list_I_1->insert(DT_INT_16S);
02290         dt_list_I_1->insert(DT_INT_32S);
02291         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
02292         in_operands->push_back(op_I_1);
02293         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02294         dt_list_I_2->insert(DT_INT_16S);
02295         dt_list_I_2->insert(DT_INT_32S);
02296         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02297         reg_list_I_2->insert(R_AX);
02298         reg_list_I_2->insert(R_BX);
02299         reg_list_I_2->insert(R_CX);
02300         reg_list_I_2->insert(R_DX);
02301         reg_list_I_2->insert(R_DI);
02302         reg_list_I_2->insert(R_SI);
02303         reg_list_I_2->insert(R_EAX);
02304         reg_list_I_2->insert(R_EBX);
02305         reg_list_I_2->insert(R_ECX);
02306         reg_list_I_2->insert(R_EDX);
02307         reg_list_I_2->insert(R_EDI);
02308         reg_list_I_2->insert(R_ESI);
02309         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02310         op_I_2->destroyed_by_get()->push_back(O_1);
02311         in_operands->push_back(op_I_2);
02312 
02313         //output operands
02314         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02315         dt_list_O_1->insert(DT_INT_16S);
02316         dt_list_O_1->insert(DT_INT_32S);
02317         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02318         reg_list_O_1->insert(R_AX);
02319         reg_list_O_1->insert(R_BX);
02320         reg_list_O_1->insert(R_CX);
02321         reg_list_O_1->insert(R_DX);
02322         reg_list_O_1->insert(R_DI);
02323         reg_list_O_1->insert(R_SI);
02324         reg_list_O_1->insert(R_EAX);
02325         reg_list_O_1->insert(R_EBX);
02326         reg_list_O_1->insert(R_ECX);
02327         reg_list_O_1->insert(R_EDX);
02328         reg_list_O_1->insert(R_EDI);
02329         reg_list_O_1->insert(R_ESI);
02330         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02331         op_O_1->destroys_set(I_2);
02332         out_operands->push_back(op_O_1);
02333         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02334         dt_list_O_2->insert(DT_COND);
02335         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02336         reg_list_O_2->insert(R_COND);
02337         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02338         out_operands->push_back(op_O_2);
02339 
02340         //execution info
02341         einfo = execution_info::create(120);
02342 
02343         //properties
02344 
02345         //versions
02346         versions = set<ulint>::create();
02347         versions->insert(INSTRUCTION_IMUL__1);
02348         versions->insert(INSTRUCTION_IMUL__2);
02349         versions->insert(INSTRUCTION_IMUL__21);
02350         versions->insert(INSTRUCTION_IMUL__22);
02351         versions->insert(INSTRUCTION_IMUL__23);
02352 
02353 
02354         //return target pseudoinstruction
02355         return tm_instr::create(INSTRUCTION_IMUL__24,in_operands,out_operands,lstring("imul $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
02356 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JA__1 (  ) 

Definition at line 7962 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JA__1, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

07962                                                   {
07963         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07964         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07965         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07966         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07967         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07968         ptr<execution_info> einfo;
07969         ptr<set<ulint> > versions;
07970         
07971         //input operands
07972         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07973         dt_list_I_1->insert(DT_COND);
07974         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07975         reg_list_I_1->insert(R_COND);
07976         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07977         in_operands->push_back(op_I_1);
07978 
07979         //output operands
07980 
07981         //execution info
07982         einfo = execution_info::create(10);
07983 
07984         //properties
07985 
07986         //versions
07987 
07988 
07989         //return target pseudoinstruction
07990         return tm_instr::create(INSTRUCTION_JA__1,in_operands,out_operands,lstring("ja NEAR $label_1"), props,versions,IF_JUMP,einfo);
07991 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JB__1 (  ) 

Definition at line 8088 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JB__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08088                                                   {
08089         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08090         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08091         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08092         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08093         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08094         ptr<execution_info> einfo;
08095         ptr<set<ulint> > versions;
08096         
08097         //input operands
08098         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08099         dt_list_I_1->insert(DT_COND);
08100         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08101         reg_list_I_1->insert(R_COND);
08102         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08103         in_operands->push_back(op_I_1);
08104 
08105         //output operands
08106 
08107         //execution info
08108         einfo = execution_info::create(10);
08109 
08110         //properties
08111         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08112 
08113         //versions
08114 
08115 
08116         //return target pseudoinstruction
08117         return tm_instr::create(INSTRUCTION_JB__1,in_operands,out_operands,lstring("jb NEAR $label_1"), props,versions,IF_JUMP,einfo);
08118 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JE__1 (  ) 

Definition at line 8120 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JE__1, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08120                                                   {
08121         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08122         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08123         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08124         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08125         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08126         ptr<execution_info> einfo;
08127         ptr<set<ulint> > versions;
08128         
08129         //input operands
08130         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08131         dt_list_I_1->insert(DT_COND);
08132         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08133         reg_list_I_1->insert(R_COND);
08134         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08135         in_operands->push_back(op_I_1);
08136 
08137         //output operands
08138 
08139         //execution info
08140         einfo = execution_info::create(10);
08141 
08142         //properties
08143 
08144         //versions
08145 
08146 
08147         //return target pseudoinstruction
08148         return tm_instr::create(INSTRUCTION_JE__1,in_operands,out_operands,lstring("je NEAR $label_1"), props,versions,IF_JUMP,einfo);
08149 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JG__1 (  ) 

Definition at line 8024 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JG__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08024                                                   {
08025         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08026         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08027         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08028         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08029         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08030         ptr<execution_info> einfo;
08031         ptr<set<ulint> > versions;
08032         
08033         //input operands
08034         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08035         dt_list_I_1->insert(DT_COND);
08036         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08037         reg_list_I_1->insert(R_COND);
08038         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08039         in_operands->push_back(op_I_1);
08040 
08041         //output operands
08042 
08043         //execution info
08044         einfo = execution_info::create(10);
08045 
08046         //properties
08047         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08048 
08049         //versions
08050 
08051 
08052         //return target pseudoinstruction
08053         return tm_instr::create(INSTRUCTION_JG__1,in_operands,out_operands,lstring("jg NEAR $label_1"), props,versions,IF_JUMP,einfo);
08054 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JL__1 (  ) 

Definition at line 8056 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JL__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08056                                                   {
08057         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08058         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08059         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08060         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08061         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08062         ptr<execution_info> einfo;
08063         ptr<set<ulint> > versions;
08064         
08065         //input operands
08066         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08067         dt_list_I_1->insert(DT_COND);
08068         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08069         reg_list_I_1->insert(R_COND);
08070         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08071         in_operands->push_back(op_I_1);
08072 
08073         //output operands
08074 
08075         //execution info
08076         einfo = execution_info::create(10);
08077 
08078         //properties
08079         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08080 
08081         //versions
08082 
08083 
08084         //return target pseudoinstruction
08085         return tm_instr::create(INSTRUCTION_JL__1,in_operands,out_operands,lstring("jl NEAR $label_1"), props,versions,IF_JUMP,einfo);
08086 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JMP__1 (  ) 

Definition at line 7937 of file tm_instr.mdg.cc.

References IF_JUMP, and INSTRUCTION_JMP__1.

Referenced by lestes::md::instructions::tm_instr::instance().

07937                                                    {
07938         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07939         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07940         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07941         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07942         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07943         ptr<execution_info> einfo;
07944         ptr<set<ulint> > versions;
07945         
07946         //input operands
07947 
07948         //output operands
07949 
07950         //execution info
07951         einfo = execution_info::create(10);
07952 
07953         //properties
07954 
07955         //versions
07956 
07957 
07958         //return target pseudoinstruction
07959         return tm_instr::create(INSTRUCTION_JMP__1,in_operands,out_operands,lstring("jmp NEAR $label_1"), props,versions,IF_JUMP,einfo);
07960 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JNA__1 (  ) 

Definition at line 8183 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JNA__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08183                                                    {
08184         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08185         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08186         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08187         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08188         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08189         ptr<execution_info> einfo;
08190         ptr<set<ulint> > versions;
08191         
08192         //input operands
08193         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08194         dt_list_I_1->insert(DT_COND);
08195         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08196         reg_list_I_1->insert(R_COND);
08197         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08198         in_operands->push_back(op_I_1);
08199 
08200         //output operands
08201 
08202         //execution info
08203         einfo = execution_info::create(10);
08204 
08205         //properties
08206         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08207 
08208         //versions
08209 
08210 
08211         //return target pseudoinstruction
08212         return tm_instr::create(INSTRUCTION_JNA__1,in_operands,out_operands,lstring("jna NEAR $label_1"), props,versions,IF_JUMP,einfo);
08213 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JNB__1 (  ) 

Definition at line 8247 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JNB__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08247                                                    {
08248         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08249         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08250         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08251         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08252         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08253         ptr<execution_info> einfo;
08254         ptr<set<ulint> > versions;
08255         
08256         //input operands
08257         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08258         dt_list_I_1->insert(DT_COND);
08259         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08260         reg_list_I_1->insert(R_COND);
08261         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08262         in_operands->push_back(op_I_1);
08263 
08264         //output operands
08265 
08266         //execution info
08267         einfo = execution_info::create(10);
08268 
08269         //properties
08270         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08271 
08272         //versions
08273 
08274 
08275         //return target pseudoinstruction
08276         return tm_instr::create(INSTRUCTION_JNB__1,in_operands,out_operands,lstring("jnb NEAR $label_1"), props,versions,IF_JUMP,einfo);
08277 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JNE__1 (  ) 

Definition at line 8279 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JNE__1, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08279                                                    {
08280         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08281         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08282         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08283         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08284         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08285         ptr<execution_info> einfo;
08286         ptr<set<ulint> > versions;
08287         
08288         //input operands
08289         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08290         dt_list_I_1->insert(DT_COND);
08291         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08292         reg_list_I_1->insert(R_COND);
08293         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08294         in_operands->push_back(op_I_1);
08295 
08296         //output operands
08297 
08298         //execution info
08299         einfo = execution_info::create(10);
08300 
08301         //properties
08302 
08303         //versions
08304 
08305 
08306         //return target pseudoinstruction
08307         return tm_instr::create(INSTRUCTION_JNE__1,in_operands,out_operands,lstring("jne NEAR $label_1"), props,versions,IF_JUMP,einfo);
08308 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JNG__1 (  ) 

Definition at line 8151 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JNG__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08151                                                    {
08152         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08153         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08154         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08155         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08156         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08157         ptr<execution_info> einfo;
08158         ptr<set<ulint> > versions;
08159         
08160         //input operands
08161         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08162         dt_list_I_1->insert(DT_COND);
08163         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08164         reg_list_I_1->insert(R_COND);
08165         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08166         in_operands->push_back(op_I_1);
08167 
08168         //output operands
08169 
08170         //execution info
08171         einfo = execution_info::create(10);
08172 
08173         //properties
08174         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08175 
08176         //versions
08177 
08178 
08179         //return target pseudoinstruction
08180         return tm_instr::create(INSTRUCTION_JNG__1,in_operands,out_operands,lstring("jng NEAR $label_1"), props,versions,IF_JUMP,einfo);
08181 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JNL__1 (  ) 

Definition at line 8215 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JNL__1, PROPERTY_TEST_SIGNED, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

08215                                                    {
08216         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08217         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08218         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08219         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08220         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08221         ptr<execution_info> einfo;
08222         ptr<set<ulint> > versions;
08223         
08224         //input operands
08225         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08226         dt_list_I_1->insert(DT_COND);
08227         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08228         reg_list_I_1->insert(R_COND);
08229         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08230         in_operands->push_back(op_I_1);
08231 
08232         //output operands
08233 
08234         //execution info
08235         einfo = execution_info::create(10);
08236 
08237         //properties
08238         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08239 
08240         //versions
08241 
08242 
08243         //return target pseudoinstruction
08244         return tm_instr::create(INSTRUCTION_JNL__1,in_operands,out_operands,lstring("jnl NEAR $label_1"), props,versions,IF_JUMP,einfo);
08245 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_JZ__1 (  ) 

Definition at line 7993 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, IF_JUMP, INSTRUCTION_JZ__1, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

07993                                                   {
07994         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07995         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07996         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07997         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07998         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07999         ptr<execution_info> einfo;
08000         ptr<set<ulint> > versions;
08001         
08002         //input operands
08003         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08004         dt_list_I_1->insert(DT_COND);
08005         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08006         reg_list_I_1->insert(R_COND);
08007         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08008         in_operands->push_back(op_I_1);
08009 
08010         //output operands
08011 
08012         //execution info
08013         einfo = execution_info::create(10);
08014 
08015         //properties
08016 
08017         //versions
08018 
08019 
08020         //return target pseudoinstruction
08021         return tm_instr::create(INSTRUCTION_JZ__1,in_operands,out_operands,lstring("jz NEAR $label_1"), props,versions,IF_JUMP,einfo);
08022 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_LAHF__1 (  ) 

Definition at line 927 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, INSTRUCTION_LAHF__1, O_1, lestes::md::registers::R_AH, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

00927                                                     {
00928         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00929         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00930         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00931         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00932         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00933         ptr<execution_info> einfo;
00934         ptr<set<ulint> > versions;
00935         
00936         //input operands
00937         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00938         dt_list_I_1->insert(DT_COND);
00939         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00940         reg_list_I_1->insert(R_COND);
00941         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00942         in_operands->push_back(op_I_1);
00943 
00944         //output operands
00945         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00946         dt_list_O_1->insert(DT_COND);
00947         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00948         reg_list_O_1->insert(R_AH);
00949         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00950         out_operands->push_back(op_O_1);
00951 
00952         //execution info
00953         einfo = execution_info::create(10);
00954 
00955         //properties
00956 
00957         //versions
00958 
00959 
00960         //return target pseudoinstruction
00961         return tm_instr::create(INSTRUCTION_LAHF__1,in_operands,out_operands,lstring("lahf"), props,versions,0,einfo);
00962 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_LEA__1 (  ) 

Definition at line 7418 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_LEA__1, INSTRUCTION_LEAVE__1, O_1, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

07418                                                    {
07419         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07420         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07421         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07422         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07423         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07424         ptr<execution_info> einfo;
07425         ptr<set<ulint> > versions;
07426         
07427         //input operands
07428         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07429         dt_list_I_1->insert(DT_INT_8P);
07430         dt_list_I_1->insert(DT_INT_8U);
07431         dt_list_I_1->insert(DT_INT_8S);
07432         dt_list_I_1->insert(DT_INT_16U);
07433         dt_list_I_1->insert(DT_INT_16S);
07434         dt_list_I_1->insert(DT_INT_32U);
07435         dt_list_I_1->insert(DT_INT_32S);
07436         dt_list_I_1->insert(DT_COND);
07437         dt_list_I_1->insert(DT_BOOL);
07438         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07439         in_operands->push_back(op_I_1);
07440 
07441         //output operands
07442         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07443         dt_list_O_1->insert(DT_INT_32U);
07444         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07445         reg_list_O_1->insert(R_EAX);
07446         reg_list_O_1->insert(R_EBX);
07447         reg_list_O_1->insert(R_ECX);
07448         reg_list_O_1->insert(R_EDX);
07449         reg_list_O_1->insert(R_EDI);
07450         reg_list_O_1->insert(R_ESI);
07451         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07452         out_operands->push_back(op_O_1);
07453 
07454         //execution info
07455         einfo = execution_info::create(10);
07456 
07457         //properties
07458 
07459         //versions
07460         versions = set<ulint>::create();
07461         versions->insert(INSTRUCTION_LEAVE__1);
07462 
07463 
07464         //return target pseudoinstruction
07465         return tm_instr::create(INSTRUCTION_LEA__1,in_operands,out_operands,lstring("lea $O_1, $I_1"), props,versions,0,einfo);
07466 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_LEAVE__1 (  ) 

Definition at line 9341 of file tm_instr.mdg.cc.

References IF_SYS, and INSTRUCTION_LEAVE__1.

Referenced by lestes::md::instructions::tm_instr::instance().

09341                                                      {
09342         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09343         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09344         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09345         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09346         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09347         ptr<execution_info> einfo;
09348         ptr<set<ulint> > versions;
09349         
09350         //input operands
09351 
09352         //output operands
09353 
09354         //execution info
09355         einfo = execution_info::create(10);
09356 
09357         //properties
09358 
09359         //versions
09360 
09361 
09362         //return target pseudoinstruction
09363         return tm_instr::create(INSTRUCTION_LEAVE__1,in_operands,out_operands,lstring("leave"), props,versions,IF_SYS,einfo);
09364 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__1 (  ) 

Definition at line 22 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_COPY, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00022                                                    {
00023         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00024         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00025         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00026         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00027         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00028         ptr<execution_info> einfo;
00029         ptr<set<ulint> > versions;
00030         
00031         //input operands
00032         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00033         dt_list_I_1->insert(DT_INT_8P);
00034         dt_list_I_1->insert(DT_INT_8U);
00035         dt_list_I_1->insert(DT_INT_8S);
00036         dt_list_I_1->insert(DT_INT_16U);
00037         dt_list_I_1->insert(DT_INT_16S);
00038         dt_list_I_1->insert(DT_INT_32U);
00039         dt_list_I_1->insert(DT_INT_32S);
00040         dt_list_I_1->insert(DT_COND);
00041         dt_list_I_1->insert(DT_BOOL);
00042         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00043         reg_list_I_1->insert(R_EAX);
00044         reg_list_I_1->insert(R_EBX);
00045         reg_list_I_1->insert(R_ECX);
00046         reg_list_I_1->insert(R_EDX);
00047         reg_list_I_1->insert(R_EDI);
00048         reg_list_I_1->insert(R_ESI);
00049         reg_list_I_1->insert(R_AX);
00050         reg_list_I_1->insert(R_BX);
00051         reg_list_I_1->insert(R_CX);
00052         reg_list_I_1->insert(R_DX);
00053         reg_list_I_1->insert(R_DI);
00054         reg_list_I_1->insert(R_SI);
00055         reg_list_I_1->insert(R_AL);
00056         reg_list_I_1->insert(R_AH);
00057         reg_list_I_1->insert(R_BL);
00058         reg_list_I_1->insert(R_BH);
00059         reg_list_I_1->insert(R_CL);
00060         reg_list_I_1->insert(R_CH);
00061         reg_list_I_1->insert(R_DL);
00062         reg_list_I_1->insert(R_DH);
00063         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00064         in_operands->push_back(op_I_1);
00065 
00066         //output operands
00067         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00068         dt_list_O_1->insert(DT_INT_8P);
00069         dt_list_O_1->insert(DT_INT_8U);
00070         dt_list_O_1->insert(DT_INT_8S);
00071         dt_list_O_1->insert(DT_INT_16U);
00072         dt_list_O_1->insert(DT_INT_16S);
00073         dt_list_O_1->insert(DT_INT_32U);
00074         dt_list_O_1->insert(DT_INT_32S);
00075         dt_list_O_1->insert(DT_COND);
00076         dt_list_O_1->insert(DT_BOOL);
00077         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00078         reg_list_O_1->insert(R_EAX);
00079         reg_list_O_1->insert(R_EBX);
00080         reg_list_O_1->insert(R_ECX);
00081         reg_list_O_1->insert(R_EDX);
00082         reg_list_O_1->insert(R_EDI);
00083         reg_list_O_1->insert(R_ESI);
00084         reg_list_O_1->insert(R_AX);
00085         reg_list_O_1->insert(R_BX);
00086         reg_list_O_1->insert(R_CX);
00087         reg_list_O_1->insert(R_DX);
00088         reg_list_O_1->insert(R_DI);
00089         reg_list_O_1->insert(R_SI);
00090         reg_list_O_1->insert(R_AL);
00091         reg_list_O_1->insert(R_AH);
00092         reg_list_O_1->insert(R_BL);
00093         reg_list_O_1->insert(R_BH);
00094         reg_list_O_1->insert(R_CL);
00095         reg_list_O_1->insert(R_CH);
00096         reg_list_O_1->insert(R_DL);
00097         reg_list_O_1->insert(R_DH);
00098         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00099         out_operands->push_back(op_O_1);
00100 
00101         //execution info
00102         einfo = execution_info::create(10);
00103 
00104         //properties
00105 
00106         //versions
00107         versions = set<ulint>::create();
00108         versions->insert(INSTRUCTION_MOV__2);
00109         versions->insert(INSTRUCTION_MOV__3);
00110         versions->insert(INSTRUCTION_MOV__4);
00111         versions->insert(INSTRUCTION_MOV__5);
00112         versions->insert(INSTRUCTION_MOV__7);
00113         versions->insert(INSTRUCTION_MOV__71);
00114         versions->insert(INSTRUCTION_MOV__8);
00115         versions->insert(INSTRUCTION_MOVZX__1);
00116         versions->insert(INSTRUCTION_MOVZX__2);
00117         versions->insert(INSTRUCTION_MOVZX__3);
00118         versions->insert(INSTRUCTION_MOVZX__4);
00119         versions->insert(INSTRUCTION_MOVZX__5);
00120         versions->insert(INSTRUCTION_MOVZX__6);
00121         versions->insert(INSTRUCTION_MOVSX__1);
00122         versions->insert(INSTRUCTION_MOVSX__11);
00123         versions->insert(INSTRUCTION_MOVSX__2);
00124         versions->insert(INSTRUCTION_MOVSX__21);
00125 
00126 
00127         //return target pseudoinstruction
00128         return tm_instr::create(INSTRUCTION_MOV__1,in_operands,out_operands,lstring("mov $O_1, $I_1"), props,versions,IF_COPY,einfo);
00129 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__2 (  ) 

Definition at line 131 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_STORE, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00131                                                    {
00132         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00133         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00134         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00135         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00136         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00137         ptr<execution_info> einfo;
00138         ptr<set<ulint> > versions;
00139         
00140         //input operands
00141         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00142         dt_list_I_1->insert(DT_INT_8P);
00143         dt_list_I_1->insert(DT_INT_8U);
00144         dt_list_I_1->insert(DT_INT_8S);
00145         dt_list_I_1->insert(DT_INT_16U);
00146         dt_list_I_1->insert(DT_INT_16S);
00147         dt_list_I_1->insert(DT_INT_32U);
00148         dt_list_I_1->insert(DT_INT_32S);
00149         dt_list_I_1->insert(DT_COND);
00150         dt_list_I_1->insert(DT_BOOL);
00151         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00152         reg_list_I_1->insert(R_EAX);
00153         reg_list_I_1->insert(R_EBX);
00154         reg_list_I_1->insert(R_ECX);
00155         reg_list_I_1->insert(R_EDX);
00156         reg_list_I_1->insert(R_EDI);
00157         reg_list_I_1->insert(R_ESI);
00158         reg_list_I_1->insert(R_AX);
00159         reg_list_I_1->insert(R_BX);
00160         reg_list_I_1->insert(R_CX);
00161         reg_list_I_1->insert(R_DX);
00162         reg_list_I_1->insert(R_DI);
00163         reg_list_I_1->insert(R_SI);
00164         reg_list_I_1->insert(R_AL);
00165         reg_list_I_1->insert(R_AH);
00166         reg_list_I_1->insert(R_BL);
00167         reg_list_I_1->insert(R_BH);
00168         reg_list_I_1->insert(R_CL);
00169         reg_list_I_1->insert(R_CH);
00170         reg_list_I_1->insert(R_DL);
00171         reg_list_I_1->insert(R_DH);
00172         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00173         in_operands->push_back(op_I_1);
00174 
00175         //output operands
00176         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00177         dt_list_O_1->insert(DT_INT_8P);
00178         dt_list_O_1->insert(DT_INT_8U);
00179         dt_list_O_1->insert(DT_INT_8S);
00180         dt_list_O_1->insert(DT_INT_16U);
00181         dt_list_O_1->insert(DT_INT_16S);
00182         dt_list_O_1->insert(DT_INT_32U);
00183         dt_list_O_1->insert(DT_INT_32S);
00184         dt_list_O_1->insert(DT_COND);
00185         dt_list_O_1->insert(DT_BOOL);
00186         ptr<tm_instr_op_mem> op_O_1 = tm_instr_op_mem::create(O_1, dt_list_O_1);
00187         out_operands->push_back(op_O_1);
00188 
00189         //execution info
00190         einfo = execution_info::create(30);
00191 
00192         //properties
00193 
00194         //versions
00195         versions = set<ulint>::create();
00196         versions->insert(INSTRUCTION_MOV__1);
00197         versions->insert(INSTRUCTION_MOV__3);
00198         versions->insert(INSTRUCTION_MOV__4);
00199         versions->insert(INSTRUCTION_MOV__5);
00200         versions->insert(INSTRUCTION_MOV__7);
00201         versions->insert(INSTRUCTION_MOV__71);
00202         versions->insert(INSTRUCTION_MOV__8);
00203         versions->insert(INSTRUCTION_MOVZX__1);
00204         versions->insert(INSTRUCTION_MOVZX__2);
00205         versions->insert(INSTRUCTION_MOVZX__3);
00206         versions->insert(INSTRUCTION_MOVZX__4);
00207         versions->insert(INSTRUCTION_MOVZX__5);
00208         versions->insert(INSTRUCTION_MOVZX__6);
00209         versions->insert(INSTRUCTION_MOVSX__1);
00210         versions->insert(INSTRUCTION_MOVSX__11);
00211         versions->insert(INSTRUCTION_MOVSX__2);
00212         versions->insert(INSTRUCTION_MOVSX__21);
00213 
00214 
00215         //return target pseudoinstruction
00216         return tm_instr::create(INSTRUCTION_MOV__2,in_operands,out_operands,lstring("mov $TYPE_O_1 $O_1, $I_1"), props,versions,IF_STORE,einfo);
00217 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__3 (  ) 

Definition at line 219 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_LOAD, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00219                                                    {
00220         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00221         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00222         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00223         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00224         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00225         ptr<execution_info> einfo;
00226         ptr<set<ulint> > versions;
00227         
00228         //input operands
00229         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00230         dt_list_I_1->insert(DT_INT_8P);
00231         dt_list_I_1->insert(DT_INT_8U);
00232         dt_list_I_1->insert(DT_INT_8S);
00233         dt_list_I_1->insert(DT_INT_16U);
00234         dt_list_I_1->insert(DT_INT_16S);
00235         dt_list_I_1->insert(DT_INT_32U);
00236         dt_list_I_1->insert(DT_INT_32S);
00237         dt_list_I_1->insert(DT_COND);
00238         dt_list_I_1->insert(DT_BOOL);
00239         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
00240         in_operands->push_back(op_I_1);
00241 
00242         //output operands
00243         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00244         dt_list_O_1->insert(DT_INT_8P);
00245         dt_list_O_1->insert(DT_INT_8U);
00246         dt_list_O_1->insert(DT_INT_8S);
00247         dt_list_O_1->insert(DT_INT_16U);
00248         dt_list_O_1->insert(DT_INT_16S);
00249         dt_list_O_1->insert(DT_INT_32U);
00250         dt_list_O_1->insert(DT_INT_32S);
00251         dt_list_O_1->insert(DT_COND);
00252         dt_list_O_1->insert(DT_BOOL);
00253         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00254         reg_list_O_1->insert(R_EAX);
00255         reg_list_O_1->insert(R_EBX);
00256         reg_list_O_1->insert(R_ECX);
00257         reg_list_O_1->insert(R_EDX);
00258         reg_list_O_1->insert(R_EDI);
00259         reg_list_O_1->insert(R_ESI);
00260         reg_list_O_1->insert(R_AX);
00261         reg_list_O_1->insert(R_BX);
00262         reg_list_O_1->insert(R_CX);
00263         reg_list_O_1->insert(R_DX);
00264         reg_list_O_1->insert(R_DI);
00265         reg_list_O_1->insert(R_SI);
00266         reg_list_O_1->insert(R_AL);
00267         reg_list_O_1->insert(R_AH);
00268         reg_list_O_1->insert(R_BL);
00269         reg_list_O_1->insert(R_BH);
00270         reg_list_O_1->insert(R_CL);
00271         reg_list_O_1->insert(R_CH);
00272         reg_list_O_1->insert(R_DL);
00273         reg_list_O_1->insert(R_DH);
00274         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00275         out_operands->push_back(op_O_1);
00276 
00277         //execution info
00278         einfo = execution_info::create(30);
00279 
00280         //properties
00281 
00282         //versions
00283         versions = set<ulint>::create();
00284         versions->insert(INSTRUCTION_MOV__1);
00285         versions->insert(INSTRUCTION_MOV__2);
00286         versions->insert(INSTRUCTION_MOV__4);
00287         versions->insert(INSTRUCTION_MOV__5);
00288         versions->insert(INSTRUCTION_MOV__7);
00289         versions->insert(INSTRUCTION_MOV__71);
00290         versions->insert(INSTRUCTION_MOV__8);
00291         versions->insert(INSTRUCTION_MOVZX__1);
00292         versions->insert(INSTRUCTION_MOVZX__2);
00293         versions->insert(INSTRUCTION_MOVZX__3);
00294         versions->insert(INSTRUCTION_MOVZX__4);
00295         versions->insert(INSTRUCTION_MOVZX__5);
00296         versions->insert(INSTRUCTION_MOVZX__6);
00297         versions->insert(INSTRUCTION_MOVSX__1);
00298         versions->insert(INSTRUCTION_MOVSX__11);
00299         versions->insert(INSTRUCTION_MOVSX__2);
00300         versions->insert(INSTRUCTION_MOVSX__21);
00301 
00302 
00303         //return target pseudoinstruction
00304         return tm_instr::create(INSTRUCTION_MOV__3,in_operands,out_operands,lstring("mov $O_1, $TYPE_I_1 $I_1"), props,versions,IF_LOAD,einfo);
00305 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__4 (  ) 

Definition at line 307 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_LOAD, IF_STORE, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, and O_1.

Referenced by lestes::md::instructions::tm_instr::instance().

00307                                                    {
00308         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00309         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00310         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00311         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00312         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00313         ptr<execution_info> einfo;
00314         ptr<set<ulint> > versions;
00315         
00316         //input operands
00317         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00318         dt_list_I_1->insert(DT_INT_8P);
00319         dt_list_I_1->insert(DT_INT_8U);
00320         dt_list_I_1->insert(DT_INT_8S);
00321         dt_list_I_1->insert(DT_INT_16U);
00322         dt_list_I_1->insert(DT_INT_16S);
00323         dt_list_I_1->insert(DT_INT_32U);
00324         dt_list_I_1->insert(DT_INT_32S);
00325         dt_list_I_1->insert(DT_BOOL);
00326         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
00327         in_operands->push_back(op_I_1);
00328 
00329         //output operands
00330         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00331         dt_list_O_1->insert(DT_INT_8P);
00332         dt_list_O_1->insert(DT_INT_8U);
00333         dt_list_O_1->insert(DT_INT_8S);
00334         dt_list_O_1->insert(DT_INT_16U);
00335         dt_list_O_1->insert(DT_INT_16S);
00336         dt_list_O_1->insert(DT_INT_32U);
00337         dt_list_O_1->insert(DT_INT_32S);
00338         dt_list_O_1->insert(DT_BOOL);
00339         ptr<tm_instr_op_mem> op_O_1 = tm_instr_op_mem::create(O_1, dt_list_O_1);
00340         out_operands->push_back(op_O_1);
00341 
00342         //execution info
00343         einfo = execution_info::create(30);
00344 
00345         //properties
00346 
00347         //versions
00348         versions = set<ulint>::create();
00349         versions->insert(INSTRUCTION_MOV__1);
00350         versions->insert(INSTRUCTION_MOV__2);
00351         versions->insert(INSTRUCTION_MOV__3);
00352         versions->insert(INSTRUCTION_MOV__5);
00353         versions->insert(INSTRUCTION_MOV__7);
00354         versions->insert(INSTRUCTION_MOV__71);
00355         versions->insert(INSTRUCTION_MOV__8);
00356         versions->insert(INSTRUCTION_MOVZX__1);
00357         versions->insert(INSTRUCTION_MOVZX__2);
00358         versions->insert(INSTRUCTION_MOVZX__3);
00359         versions->insert(INSTRUCTION_MOVZX__4);
00360         versions->insert(INSTRUCTION_MOVZX__5);
00361         versions->insert(INSTRUCTION_MOVZX__6);
00362         versions->insert(INSTRUCTION_MOVSX__1);
00363         versions->insert(INSTRUCTION_MOVSX__11);
00364         versions->insert(INSTRUCTION_MOVSX__2);
00365         versions->insert(INSTRUCTION_MOVSX__21);
00366 
00367 
00368         //return target pseudoinstruction
00369         return tm_instr::create(INSTRUCTION_MOV__4,in_operands,out_operands,lstring("mov $TYPE_O_1 $O_1, $TYPE_I_1 $I_1"), props,versions,IF_LOAD | IF_STORE,einfo);
00370 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__5 (  ) 

Definition at line 372 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_LOAD, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00372                                                    {
00373         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00374         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00375         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00376         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00377         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00378         ptr<execution_info> einfo;
00379         ptr<set<ulint> > versions;
00380         
00381         //input operands
00382         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00383         dt_list_I_1->insert(DT_INT_8P);
00384         dt_list_I_1->insert(DT_INT_8U);
00385         dt_list_I_1->insert(DT_INT_8S);
00386         dt_list_I_1->insert(DT_INT_16U);
00387         dt_list_I_1->insert(DT_INT_16S);
00388         dt_list_I_1->insert(DT_INT_32U);
00389         dt_list_I_1->insert(DT_INT_32S);
00390         dt_list_I_1->insert(DT_BOOL);
00391         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
00392         in_operands->push_back(op_I_1);
00393 
00394         //output operands
00395         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00396         dt_list_O_1->insert(DT_INT_8P);
00397         dt_list_O_1->insert(DT_INT_8U);
00398         dt_list_O_1->insert(DT_INT_8S);
00399         dt_list_O_1->insert(DT_INT_16U);
00400         dt_list_O_1->insert(DT_INT_16S);
00401         dt_list_O_1->insert(DT_INT_32U);
00402         dt_list_O_1->insert(DT_INT_32S);
00403         dt_list_O_1->insert(DT_BOOL);
00404         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00405         reg_list_O_1->insert(R_EAX);
00406         reg_list_O_1->insert(R_EBX);
00407         reg_list_O_1->insert(R_ECX);
00408         reg_list_O_1->insert(R_EDX);
00409         reg_list_O_1->insert(R_EDI);
00410         reg_list_O_1->insert(R_ESI);
00411         reg_list_O_1->insert(R_AX);
00412         reg_list_O_1->insert(R_BX);
00413         reg_list_O_1->insert(R_CX);
00414         reg_list_O_1->insert(R_DX);
00415         reg_list_O_1->insert(R_DI);
00416         reg_list_O_1->insert(R_SI);
00417         reg_list_O_1->insert(R_AL);
00418         reg_list_O_1->insert(R_AH);
00419         reg_list_O_1->insert(R_BL);
00420         reg_list_O_1->insert(R_BH);
00421         reg_list_O_1->insert(R_CL);
00422         reg_list_O_1->insert(R_CH);
00423         reg_list_O_1->insert(R_DL);
00424         reg_list_O_1->insert(R_DH);
00425         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00426         out_operands->push_back(op_O_1);
00427 
00428         //execution info
00429         einfo = execution_info::create(10);
00430 
00431         //properties
00432 
00433         //versions
00434         versions = set<ulint>::create();
00435         versions->insert(INSTRUCTION_MOV__1);
00436         versions->insert(INSTRUCTION_MOV__2);
00437         versions->insert(INSTRUCTION_MOV__3);
00438         versions->insert(INSTRUCTION_MOV__4);
00439         versions->insert(INSTRUCTION_MOV__7);
00440         versions->insert(INSTRUCTION_MOV__71);
00441         versions->insert(INSTRUCTION_MOV__8);
00442         versions->insert(INSTRUCTION_MOVZX__1);
00443         versions->insert(INSTRUCTION_MOVZX__2);
00444         versions->insert(INSTRUCTION_MOVZX__3);
00445         versions->insert(INSTRUCTION_MOVZX__4);
00446         versions->insert(INSTRUCTION_MOVZX__5);
00447         versions->insert(INSTRUCTION_MOVZX__6);
00448         versions->insert(INSTRUCTION_MOVSX__1);
00449         versions->insert(INSTRUCTION_MOVSX__11);
00450         versions->insert(INSTRUCTION_MOVSX__2);
00451         versions->insert(INSTRUCTION_MOVSX__21);
00452 
00453 
00454         //return target pseudoinstruction
00455         return tm_instr::create(INSTRUCTION_MOV__5,in_operands,out_operands,lstring("mov $O_1, $TYPE_I_1 $I_1"), props,versions,IF_LOAD,einfo);
00456 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__7 (  ) 

Definition at line 458 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, IF_STORE, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00458                                                    {
00459         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00460         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00461         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00462         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00463         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00464         ptr<execution_info> einfo;
00465         ptr<set<ulint> > versions;
00466         
00467         //input operands
00468         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00469         dt_list_I_1->insert(DT_INT_8P);
00470         dt_list_I_1->insert(DT_INT_8U);
00471         dt_list_I_1->insert(DT_INT_8S);
00472         dt_list_I_1->insert(DT_INT_16U);
00473         dt_list_I_1->insert(DT_INT_16S);
00474         dt_list_I_1->insert(DT_INT_32U);
00475         dt_list_I_1->insert(DT_INT_32S);
00476         dt_list_I_1->insert(DT_COND);
00477         dt_list_I_1->insert(DT_BOOL);
00478         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00479         reg_list_I_1->insert(R_EAX);
00480         reg_list_I_1->insert(R_EBX);
00481         reg_list_I_1->insert(R_ECX);
00482         reg_list_I_1->insert(R_EDX);
00483         reg_list_I_1->insert(R_EDI);
00484         reg_list_I_1->insert(R_ESI);
00485         reg_list_I_1->insert(R_AX);
00486         reg_list_I_1->insert(R_BX);
00487         reg_list_I_1->insert(R_CX);
00488         reg_list_I_1->insert(R_DX);
00489         reg_list_I_1->insert(R_DI);
00490         reg_list_I_1->insert(R_SI);
00491         reg_list_I_1->insert(R_AL);
00492         reg_list_I_1->insert(R_AH);
00493         reg_list_I_1->insert(R_BL);
00494         reg_list_I_1->insert(R_BH);
00495         reg_list_I_1->insert(R_CL);
00496         reg_list_I_1->insert(R_CH);
00497         reg_list_I_1->insert(R_DL);
00498         reg_list_I_1->insert(R_DH);
00499         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00500         in_operands->push_back(op_I_1);
00501         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
00502         dt_list_I_2->insert(DT_INT_32U);
00503         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
00504         reg_list_I_2->insert(R_EAX);
00505         reg_list_I_2->insert(R_EBX);
00506         reg_list_I_2->insert(R_ECX);
00507         reg_list_I_2->insert(R_EDX);
00508         reg_list_I_2->insert(R_EDI);
00509         reg_list_I_2->insert(R_ESI);
00510         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
00511         in_operands->push_back(op_I_2);
00512 
00513         //output operands
00514         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00515         dt_list_O_1->insert(DT_INT_8P);
00516         dt_list_O_1->insert(DT_INT_8U);
00517         dt_list_O_1->insert(DT_INT_8S);
00518         dt_list_O_1->insert(DT_INT_16U);
00519         dt_list_O_1->insert(DT_INT_16S);
00520         dt_list_O_1->insert(DT_INT_32U);
00521         dt_list_O_1->insert(DT_INT_32S);
00522         dt_list_O_1->insert(DT_COND);
00523         dt_list_O_1->insert(DT_BOOL);
00524         ptr<tm_instr_op_mem> op_O_1 = tm_instr_op_mem::create(O_1, dt_list_O_1);
00525         out_operands->push_back(op_O_1);
00526 
00527         //execution info
00528         einfo = execution_info::create(30);
00529 
00530         //properties
00531 
00532         //versions
00533         versions = set<ulint>::create();
00534         versions->insert(INSTRUCTION_MOV__1);
00535         versions->insert(INSTRUCTION_MOV__2);
00536         versions->insert(INSTRUCTION_MOV__3);
00537         versions->insert(INSTRUCTION_MOV__4);
00538         versions->insert(INSTRUCTION_MOV__5);
00539         versions->insert(INSTRUCTION_MOV__71);
00540         versions->insert(INSTRUCTION_MOV__8);
00541         versions->insert(INSTRUCTION_MOVZX__1);
00542         versions->insert(INSTRUCTION_MOVZX__2);
00543         versions->insert(INSTRUCTION_MOVZX__3);
00544         versions->insert(INSTRUCTION_MOVZX__4);
00545         versions->insert(INSTRUCTION_MOVZX__5);
00546         versions->insert(INSTRUCTION_MOVZX__6);
00547         versions->insert(INSTRUCTION_MOVSX__1);
00548         versions->insert(INSTRUCTION_MOVSX__11);
00549         versions->insert(INSTRUCTION_MOVSX__2);
00550         versions->insert(INSTRUCTION_MOVSX__21);
00551 
00552 
00553         //return target pseudoinstruction
00554         return tm_instr::create(INSTRUCTION_MOV__7,in_operands,out_operands,lstring("mov $TYPE_O_1 $O_1, $I_1"), props,versions,IF_STORE,einfo);
00555 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__71 (  ) 

Definition at line 557 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, IF_STORE, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

00557                                                     {
00558         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00559         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00560         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00561         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00562         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00563         ptr<execution_info> einfo;
00564         ptr<set<ulint> > versions;
00565         
00566         //input operands
00567         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00568         dt_list_I_1->insert(DT_INT_8P);
00569         dt_list_I_1->insert(DT_INT_8U);
00570         dt_list_I_1->insert(DT_INT_8S);
00571         dt_list_I_1->insert(DT_INT_16U);
00572         dt_list_I_1->insert(DT_INT_16S);
00573         dt_list_I_1->insert(DT_INT_32U);
00574         dt_list_I_1->insert(DT_INT_32S);
00575         dt_list_I_1->insert(DT_COND);
00576         dt_list_I_1->insert(DT_BOOL);
00577         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
00578         in_operands->push_back(op_I_1);
00579         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
00580         dt_list_I_2->insert(DT_INT_32U);
00581         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
00582         reg_list_I_2->insert(R_EAX);
00583         reg_list_I_2->insert(R_EBX);
00584         reg_list_I_2->insert(R_ECX);
00585         reg_list_I_2->insert(R_EDX);
00586         reg_list_I_2->insert(R_EDI);
00587         reg_list_I_2->insert(R_ESI);
00588         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
00589         in_operands->push_back(op_I_2);
00590 
00591         //output operands
00592         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00593         dt_list_O_1->insert(DT_INT_8P);
00594         dt_list_O_1->insert(DT_INT_8U);
00595         dt_list_O_1->insert(DT_INT_8S);
00596         dt_list_O_1->insert(DT_INT_16U);
00597         dt_list_O_1->insert(DT_INT_16S);
00598         dt_list_O_1->insert(DT_INT_32U);
00599         dt_list_O_1->insert(DT_INT_32S);
00600         dt_list_O_1->insert(DT_COND);
00601         dt_list_O_1->insert(DT_BOOL);
00602         ptr<tm_instr_op_mem> op_O_1 = tm_instr_op_mem::create(O_1, dt_list_O_1);
00603         out_operands->push_back(op_O_1);
00604 
00605         //execution info
00606         einfo = execution_info::create(30);
00607 
00608         //properties
00609 
00610         //versions
00611         versions = set<ulint>::create();
00612         versions->insert(INSTRUCTION_MOV__1);
00613         versions->insert(INSTRUCTION_MOV__2);
00614         versions->insert(INSTRUCTION_MOV__3);
00615         versions->insert(INSTRUCTION_MOV__4);
00616         versions->insert(INSTRUCTION_MOV__5);
00617         versions->insert(INSTRUCTION_MOV__7);
00618         versions->insert(INSTRUCTION_MOV__8);
00619         versions->insert(INSTRUCTION_MOVZX__1);
00620         versions->insert(INSTRUCTION_MOVZX__2);
00621         versions->insert(INSTRUCTION_MOVZX__3);
00622         versions->insert(INSTRUCTION_MOVZX__4);
00623         versions->insert(INSTRUCTION_MOVZX__5);
00624         versions->insert(INSTRUCTION_MOVZX__6);
00625         versions->insert(INSTRUCTION_MOVSX__1);
00626         versions->insert(INSTRUCTION_MOVSX__11);
00627         versions->insert(INSTRUCTION_MOVSX__2);
00628         versions->insert(INSTRUCTION_MOVSX__21);
00629 
00630 
00631         //return target pseudoinstruction
00632         return tm_instr::create(INSTRUCTION_MOV__71,in_operands,out_operands,lstring("mov $TYPE_O_1 $O_1, $TYPE_I_1 $I_1"), props,versions,IF_STORE,einfo);
00633 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOV__8 (  ) 

Definition at line 635 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, IF_LOAD, INSTRUCTION_MOV__1, INSTRUCTION_MOV__2, INSTRUCTION_MOV__3, INSTRUCTION_MOV__4, INSTRUCTION_MOV__5, INSTRUCTION_MOV__7, INSTRUCTION_MOV__71, INSTRUCTION_MOV__8, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

00635                                                    {
00636         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00637         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00638         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00639         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00640         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00641         ptr<execution_info> einfo;
00642         ptr<set<ulint> > versions;
00643         
00644         //input operands
00645         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00646         dt_list_I_1->insert(DT_INT_8P);
00647         dt_list_I_1->insert(DT_INT_8U);
00648         dt_list_I_1->insert(DT_INT_8S);
00649         dt_list_I_1->insert(DT_INT_16U);
00650         dt_list_I_1->insert(DT_INT_16S);
00651         dt_list_I_1->insert(DT_INT_32U);
00652         dt_list_I_1->insert(DT_INT_32S);
00653         dt_list_I_1->insert(DT_COND);
00654         dt_list_I_1->insert(DT_BOOL);
00655         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
00656         in_operands->push_back(op_I_1);
00657         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
00658         dt_list_I_2->insert(DT_INT_32U);
00659         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
00660         reg_list_I_2->insert(R_EAX);
00661         reg_list_I_2->insert(R_EBX);
00662         reg_list_I_2->insert(R_ECX);
00663         reg_list_I_2->insert(R_EDX);
00664         reg_list_I_2->insert(R_EDI);
00665         reg_list_I_2->insert(R_ESI);
00666         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
00667         in_operands->push_back(op_I_2);
00668 
00669         //output operands
00670         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00671         dt_list_O_1->insert(DT_INT_8P);
00672         dt_list_O_1->insert(DT_INT_8U);
00673         dt_list_O_1->insert(DT_INT_8S);
00674         dt_list_O_1->insert(DT_INT_16U);
00675         dt_list_O_1->insert(DT_INT_16S);
00676         dt_list_O_1->insert(DT_INT_32U);
00677         dt_list_O_1->insert(DT_INT_32S);
00678         dt_list_O_1->insert(DT_COND);
00679         dt_list_O_1->insert(DT_BOOL);
00680         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00681         reg_list_O_1->insert(R_EAX);
00682         reg_list_O_1->insert(R_EBX);
00683         reg_list_O_1->insert(R_ECX);
00684         reg_list_O_1->insert(R_EDX);
00685         reg_list_O_1->insert(R_EDI);
00686         reg_list_O_1->insert(R_ESI);
00687         reg_list_O_1->insert(R_AX);
00688         reg_list_O_1->insert(R_BX);
00689         reg_list_O_1->insert(R_CX);
00690         reg_list_O_1->insert(R_DX);
00691         reg_list_O_1->insert(R_DI);
00692         reg_list_O_1->insert(R_SI);
00693         reg_list_O_1->insert(R_AL);
00694         reg_list_O_1->insert(R_AH);
00695         reg_list_O_1->insert(R_BL);
00696         reg_list_O_1->insert(R_BH);
00697         reg_list_O_1->insert(R_CL);
00698         reg_list_O_1->insert(R_CH);
00699         reg_list_O_1->insert(R_DL);
00700         reg_list_O_1->insert(R_DH);
00701         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00702         out_operands->push_back(op_O_1);
00703 
00704         //execution info
00705         einfo = execution_info::create(30);
00706 
00707         //properties
00708 
00709         //versions
00710         versions = set<ulint>::create();
00711         versions->insert(INSTRUCTION_MOV__1);
00712         versions->insert(INSTRUCTION_MOV__2);
00713         versions->insert(INSTRUCTION_MOV__3);
00714         versions->insert(INSTRUCTION_MOV__4);
00715         versions->insert(INSTRUCTION_MOV__5);
00716         versions->insert(INSTRUCTION_MOV__7);
00717         versions->insert(INSTRUCTION_MOV__71);
00718         versions->insert(INSTRUCTION_MOVZX__1);
00719         versions->insert(INSTRUCTION_MOVZX__2);
00720         versions->insert(INSTRUCTION_MOVZX__3);
00721         versions->insert(INSTRUCTION_MOVZX__4);
00722         versions->insert(INSTRUCTION_MOVZX__5);
00723         versions->insert(INSTRUCTION_MOVZX__6);
00724         versions->insert(INSTRUCTION_MOVSX__1);
00725         versions->insert(INSTRUCTION_MOVSX__11);
00726         versions->insert(INSTRUCTION_MOVSX__2);
00727         versions->insert(INSTRUCTION_MOVSX__21);
00728 
00729 
00730         //return target pseudoinstruction
00731         return tm_instr::create(INSTRUCTION_MOV__8,in_operands,out_operands,lstring("mov $O_1, $TYPE_I_1 $I_1"), props,versions,IF_LOAD,einfo);
00732 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVSX__1 (  ) 

Definition at line 7212 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07212                                                      {
07213         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07214         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07215         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07216         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07217         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07218         ptr<execution_info> einfo;
07219         ptr<set<ulint> > versions;
07220         
07221         //input operands
07222         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07223         dt_list_I_1->insert(DT_INT_8P);
07224         dt_list_I_1->insert(DT_INT_8U);
07225         dt_list_I_1->insert(DT_INT_8S);
07226         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07227         reg_list_I_1->insert(R_AL);
07228         reg_list_I_1->insert(R_AH);
07229         reg_list_I_1->insert(R_BL);
07230         reg_list_I_1->insert(R_BH);
07231         reg_list_I_1->insert(R_CL);
07232         reg_list_I_1->insert(R_CH);
07233         reg_list_I_1->insert(R_DL);
07234         reg_list_I_1->insert(R_DH);
07235         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07236         in_operands->push_back(op_I_1);
07237 
07238         //output operands
07239         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07240         dt_list_O_1->insert(DT_INT_32S);
07241         dt_list_O_1->insert(DT_INT_16S);
07242         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07243         reg_list_O_1->insert(R_EAX);
07244         reg_list_O_1->insert(R_EBX);
07245         reg_list_O_1->insert(R_ECX);
07246         reg_list_O_1->insert(R_EDX);
07247         reg_list_O_1->insert(R_EDI);
07248         reg_list_O_1->insert(R_ESI);
07249         reg_list_O_1->insert(R_AX);
07250         reg_list_O_1->insert(R_BX);
07251         reg_list_O_1->insert(R_CX);
07252         reg_list_O_1->insert(R_DX);
07253         reg_list_O_1->insert(R_DI);
07254         reg_list_O_1->insert(R_SI);
07255         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07256         out_operands->push_back(op_O_1);
07257 
07258         //execution info
07259         einfo = execution_info::create(10);
07260 
07261         //properties
07262 
07263         //versions
07264         versions = set<ulint>::create();
07265         versions->insert(INSTRUCTION_MOVSX__11);
07266         versions->insert(INSTRUCTION_MOVSX__2);
07267         versions->insert(INSTRUCTION_MOVSX__21);
07268 
07269 
07270         //return target pseudoinstruction
07271         return tm_instr::create(INSTRUCTION_MOVSX__1,in_operands,out_operands,lstring("movsx $O_1, $I_1"), props,versions,0,einfo);
07272 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVSX__11 (  ) 

Definition at line 7274 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, O_1, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07274                                                       {
07275         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07276         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07277         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07278         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07279         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07280         ptr<execution_info> einfo;
07281         ptr<set<ulint> > versions;
07282         
07283         //input operands
07284         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07285         dt_list_I_1->insert(DT_INT_8P);
07286         dt_list_I_1->insert(DT_INT_8U);
07287         dt_list_I_1->insert(DT_INT_8S);
07288         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07289         in_operands->push_back(op_I_1);
07290 
07291         //output operands
07292         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07293         dt_list_O_1->insert(DT_INT_32S);
07294         dt_list_O_1->insert(DT_INT_16S);
07295         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07296         reg_list_O_1->insert(R_EAX);
07297         reg_list_O_1->insert(R_EBX);
07298         reg_list_O_1->insert(R_ECX);
07299         reg_list_O_1->insert(R_EDX);
07300         reg_list_O_1->insert(R_EDI);
07301         reg_list_O_1->insert(R_ESI);
07302         reg_list_O_1->insert(R_AX);
07303         reg_list_O_1->insert(R_BX);
07304         reg_list_O_1->insert(R_CX);
07305         reg_list_O_1->insert(R_DX);
07306         reg_list_O_1->insert(R_DI);
07307         reg_list_O_1->insert(R_SI);
07308         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07309         out_operands->push_back(op_O_1);
07310 
07311         //execution info
07312         einfo = execution_info::create(30);
07313 
07314         //properties
07315 
07316         //versions
07317         versions = set<ulint>::create();
07318         versions->insert(INSTRUCTION_MOVSX__1);
07319         versions->insert(INSTRUCTION_MOVSX__2);
07320         versions->insert(INSTRUCTION_MOVSX__21);
07321 
07322 
07323         //return target pseudoinstruction
07324         return tm_instr::create(INSTRUCTION_MOVSX__11,in_operands,out_operands,lstring("movsx $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
07325 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVSX__2 (  ) 

Definition at line 7327 of file tm_instr.mdg.cc.

References I_1, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, O_1, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07327                                                      {
07328         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07329         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07330         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07331         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07332         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07333         ptr<execution_info> einfo;
07334         ptr<set<ulint> > versions;
07335         
07336         //input operands
07337         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07338         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07339         reg_list_I_1->insert(R_AX);
07340         reg_list_I_1->insert(R_BX);
07341         reg_list_I_1->insert(R_CX);
07342         reg_list_I_1->insert(R_DX);
07343         reg_list_I_1->insert(R_DI);
07344         reg_list_I_1->insert(R_SI);
07345         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07346         in_operands->push_back(op_I_1);
07347 
07348         //output operands
07349         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07350         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07351         reg_list_O_1->insert(R_EAX);
07352         reg_list_O_1->insert(R_EBX);
07353         reg_list_O_1->insert(R_ECX);
07354         reg_list_O_1->insert(R_EDX);
07355         reg_list_O_1->insert(R_EDI);
07356         reg_list_O_1->insert(R_ESI);
07357         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07358         out_operands->push_back(op_O_1);
07359 
07360         //execution info
07361         einfo = execution_info::create(10);
07362 
07363         //properties
07364 
07365         //versions
07366         versions = set<ulint>::create();
07367         versions->insert(INSTRUCTION_MOVSX__1);
07368         versions->insert(INSTRUCTION_MOVSX__11);
07369         versions->insert(INSTRUCTION_MOVSX__21);
07370 
07371 
07372         //return target pseudoinstruction
07373         return tm_instr::create(INSTRUCTION_MOVSX__2,in_operands,out_operands,lstring("movsx $O_1, $I_1"), props,versions,0,einfo);
07374 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVSX__21 (  ) 

Definition at line 7376 of file tm_instr.mdg.cc.

References I_1, INSTRUCTION_MOVSX__1, INSTRUCTION_MOVSX__11, INSTRUCTION_MOVSX__2, INSTRUCTION_MOVSX__21, O_1, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

07376                                                       {
07377         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07378         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07379         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07380         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07381         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07382         ptr<execution_info> einfo;
07383         ptr<set<ulint> > versions;
07384         
07385         //input operands
07386         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07387         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07388         in_operands->push_back(op_I_1);
07389 
07390         //output operands
07391         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07392         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07393         reg_list_O_1->insert(R_EAX);
07394         reg_list_O_1->insert(R_EBX);
07395         reg_list_O_1->insert(R_ECX);
07396         reg_list_O_1->insert(R_EDX);
07397         reg_list_O_1->insert(R_EDI);
07398         reg_list_O_1->insert(R_ESI);
07399         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07400         out_operands->push_back(op_O_1);
07401 
07402         //execution info
07403         einfo = execution_info::create(30);
07404 
07405         //properties
07406 
07407         //versions
07408         versions = set<ulint>::create();
07409         versions->insert(INSTRUCTION_MOVSX__1);
07410         versions->insert(INSTRUCTION_MOVSX__11);
07411         versions->insert(INSTRUCTION_MOVSX__2);
07412 
07413 
07414         //return target pseudoinstruction
07415         return tm_instr::create(INSTRUCTION_MOVSX__21,in_operands,out_operands,lstring("movsx $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
07416 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__1 (  ) 

Definition at line 6853 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06853                                                      {
06854         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06855         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06856         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06857         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06858         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06859         ptr<execution_info> einfo;
06860         ptr<set<ulint> > versions;
06861         
06862         //input operands
06863         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06864         dt_list_I_1->insert(DT_INT_8P);
06865         dt_list_I_1->insert(DT_INT_8U);
06866         dt_list_I_1->insert(DT_INT_8S);
06867         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06868         reg_list_I_1->insert(R_AL);
06869         reg_list_I_1->insert(R_AH);
06870         reg_list_I_1->insert(R_BL);
06871         reg_list_I_1->insert(R_BH);
06872         reg_list_I_1->insert(R_CL);
06873         reg_list_I_1->insert(R_CH);
06874         reg_list_I_1->insert(R_DL);
06875         reg_list_I_1->insert(R_DH);
06876         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06877         in_operands->push_back(op_I_1);
06878 
06879         //output operands
06880         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06881         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06882         reg_list_O_1->insert(R_EAX);
06883         reg_list_O_1->insert(R_EBX);
06884         reg_list_O_1->insert(R_ECX);
06885         reg_list_O_1->insert(R_EDX);
06886         reg_list_O_1->insert(R_EDI);
06887         reg_list_O_1->insert(R_ESI);
06888         reg_list_O_1->insert(R_AX);
06889         reg_list_O_1->insert(R_BX);
06890         reg_list_O_1->insert(R_CX);
06891         reg_list_O_1->insert(R_DX);
06892         reg_list_O_1->insert(R_DI);
06893         reg_list_O_1->insert(R_SI);
06894         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06895         out_operands->push_back(op_O_1);
06896 
06897         //execution info
06898         einfo = execution_info::create(10);
06899 
06900         //properties
06901 
06902         //versions
06903         versions = set<ulint>::create();
06904         versions->insert(INSTRUCTION_MOVZX__2);
06905         versions->insert(INSTRUCTION_MOVZX__3);
06906         versions->insert(INSTRUCTION_MOVZX__4);
06907         versions->insert(INSTRUCTION_MOVZX__5);
06908         versions->insert(INSTRUCTION_MOVZX__6);
06909 
06910 
06911         //return target pseudoinstruction
06912         return tm_instr::create(INSTRUCTION_MOVZX__1,in_operands,out_operands,lstring("movzx $O_1, $I_1"), props,versions,0,einfo);
06913 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__2 (  ) 

Definition at line 6915 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06915                                                      {
06916         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06917         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06918         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06919         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06920         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06921         ptr<execution_info> einfo;
06922         ptr<set<ulint> > versions;
06923         
06924         //input operands
06925         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06926         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06927         reg_list_I_1->insert(R_AX);
06928         reg_list_I_1->insert(R_BX);
06929         reg_list_I_1->insert(R_CX);
06930         reg_list_I_1->insert(R_DX);
06931         reg_list_I_1->insert(R_DI);
06932         reg_list_I_1->insert(R_SI);
06933         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06934         in_operands->push_back(op_I_1);
06935 
06936         //output operands
06937         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06938         dt_list_O_1->insert(DT_INT_32U);
06939         dt_list_O_1->insert(DT_INT_32S);
06940         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06941         reg_list_O_1->insert(R_EAX);
06942         reg_list_O_1->insert(R_EBX);
06943         reg_list_O_1->insert(R_ECX);
06944         reg_list_O_1->insert(R_EDX);
06945         reg_list_O_1->insert(R_EDI);
06946         reg_list_O_1->insert(R_ESI);
06947         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06948         out_operands->push_back(op_O_1);
06949 
06950         //execution info
06951         einfo = execution_info::create(10);
06952 
06953         //properties
06954 
06955         //versions
06956         versions = set<ulint>::create();
06957         versions->insert(INSTRUCTION_MOVZX__1);
06958         versions->insert(INSTRUCTION_MOVZX__3);
06959         versions->insert(INSTRUCTION_MOVZX__4);
06960         versions->insert(INSTRUCTION_MOVZX__5);
06961         versions->insert(INSTRUCTION_MOVZX__6);
06962 
06963 
06964         //return target pseudoinstruction
06965         return tm_instr::create(INSTRUCTION_MOVZX__2,in_operands,out_operands,lstring("movzx $O_1, $I_1"), props,versions,0,einfo);
06966 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__3 (  ) 

Definition at line 6968 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06968                                                      {
06969         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06970         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06971         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06972         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06973         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06974         ptr<execution_info> einfo;
06975         ptr<set<ulint> > versions;
06976         
06977         //input operands
06978         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06979         dt_list_I_1->insert(DT_BOOL);
06980         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06981         reg_list_I_1->insert(R_AL);
06982         reg_list_I_1->insert(R_AH);
06983         reg_list_I_1->insert(R_BL);
06984         reg_list_I_1->insert(R_BH);
06985         reg_list_I_1->insert(R_CL);
06986         reg_list_I_1->insert(R_CH);
06987         reg_list_I_1->insert(R_DL);
06988         reg_list_I_1->insert(R_DH);
06989         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06990         in_operands->push_back(op_I_1);
06991 
06992         //output operands
06993         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06994         dt_list_O_1->insert(DT_INT_8P);
06995         dt_list_O_1->insert(DT_INT_8U);
06996         dt_list_O_1->insert(DT_INT_8S);
06997         dt_list_O_1->insert(DT_INT_16U);
06998         dt_list_O_1->insert(DT_INT_16S);
06999         dt_list_O_1->insert(DT_INT_32U);
07000         dt_list_O_1->insert(DT_INT_32S);
07001         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07002         reg_list_O_1->insert(R_EAX);
07003         reg_list_O_1->insert(R_EBX);
07004         reg_list_O_1->insert(R_ECX);
07005         reg_list_O_1->insert(R_EDX);
07006         reg_list_O_1->insert(R_EDI);
07007         reg_list_O_1->insert(R_ESI);
07008         reg_list_O_1->insert(R_AX);
07009         reg_list_O_1->insert(R_BX);
07010         reg_list_O_1->insert(R_CX);
07011         reg_list_O_1->insert(R_DX);
07012         reg_list_O_1->insert(R_DI);
07013         reg_list_O_1->insert(R_SI);
07014         reg_list_O_1->insert(R_AL);
07015         reg_list_O_1->insert(R_AH);
07016         reg_list_O_1->insert(R_BL);
07017         reg_list_O_1->insert(R_BH);
07018         reg_list_O_1->insert(R_CL);
07019         reg_list_O_1->insert(R_CH);
07020         reg_list_O_1->insert(R_DL);
07021         reg_list_O_1->insert(R_DH);
07022         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07023         out_operands->push_back(op_O_1);
07024 
07025         //execution info
07026         einfo = execution_info::create(10);
07027 
07028         //properties
07029 
07030         //versions
07031         versions = set<ulint>::create();
07032         versions->insert(INSTRUCTION_MOVZX__1);
07033         versions->insert(INSTRUCTION_MOVZX__2);
07034         versions->insert(INSTRUCTION_MOVZX__4);
07035         versions->insert(INSTRUCTION_MOVZX__5);
07036         versions->insert(INSTRUCTION_MOVZX__6);
07037 
07038 
07039         //return target pseudoinstruction
07040         return tm_instr::create(INSTRUCTION_MOVZX__3,in_operands,out_operands,lstring("movzx $O_1, $I_1"), props,versions,0,einfo);
07041 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__4 (  ) 

Definition at line 7043 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07043                                                      {
07044         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07045         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07046         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07047         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07048         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07049         ptr<execution_info> einfo;
07050         ptr<set<ulint> > versions;
07051         
07052         //input operands
07053         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07054         dt_list_I_1->insert(DT_BOOL);
07055         dt_list_I_1->insert(DT_INT_8P);
07056         dt_list_I_1->insert(DT_INT_8U);
07057         dt_list_I_1->insert(DT_INT_8S);
07058         dt_list_I_1->insert(DT_INT_16U);
07059         dt_list_I_1->insert(DT_INT_16S);
07060         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
07061         reg_list_I_1->insert(R_AL);
07062         reg_list_I_1->insert(R_AH);
07063         reg_list_I_1->insert(R_BL);
07064         reg_list_I_1->insert(R_BH);
07065         reg_list_I_1->insert(R_CL);
07066         reg_list_I_1->insert(R_CH);
07067         reg_list_I_1->insert(R_DL);
07068         reg_list_I_1->insert(R_DH);
07069         reg_list_I_1->insert(R_AX);
07070         reg_list_I_1->insert(R_BX);
07071         reg_list_I_1->insert(R_CX);
07072         reg_list_I_1->insert(R_DX);
07073         reg_list_I_1->insert(R_DI);
07074         reg_list_I_1->insert(R_SI);
07075         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
07076         in_operands->push_back(op_I_1);
07077 
07078         //output operands
07079         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07080         dt_list_O_1->insert(DT_INT_32U);
07081         dt_list_O_1->insert(DT_INT_32S);
07082         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07083         reg_list_O_1->insert(R_EAX);
07084         reg_list_O_1->insert(R_EBX);
07085         reg_list_O_1->insert(R_ECX);
07086         reg_list_O_1->insert(R_EDX);
07087         reg_list_O_1->insert(R_EDI);
07088         reg_list_O_1->insert(R_ESI);
07089         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07090         out_operands->push_back(op_O_1);
07091 
07092         //execution info
07093         einfo = execution_info::create(10);
07094 
07095         //properties
07096 
07097         //versions
07098         versions = set<ulint>::create();
07099         versions->insert(INSTRUCTION_MOVZX__1);
07100         versions->insert(INSTRUCTION_MOVZX__2);
07101         versions->insert(INSTRUCTION_MOVZX__3);
07102         versions->insert(INSTRUCTION_MOVZX__5);
07103         versions->insert(INSTRUCTION_MOVZX__6);
07104 
07105 
07106         //return target pseudoinstruction
07107         return tm_instr::create(INSTRUCTION_MOVZX__4,in_operands,out_operands,lstring("movzx $O_1, $I_1"), props,versions,0,einfo);
07108 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__5 (  ) 

Definition at line 7110 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

07110                                                      {
07111         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07112         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07113         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07114         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07115         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07116         ptr<execution_info> einfo;
07117         ptr<set<ulint> > versions;
07118         
07119         //input operands
07120         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07121         dt_list_I_1->insert(DT_BOOL);
07122         dt_list_I_1->insert(DT_INT_8P);
07123         dt_list_I_1->insert(DT_INT_8U);
07124         dt_list_I_1->insert(DT_INT_8S);
07125         dt_list_I_1->insert(DT_INT_16U);
07126         dt_list_I_1->insert(DT_INT_16S);
07127         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07128         in_operands->push_back(op_I_1);
07129 
07130         //output operands
07131         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07132         dt_list_O_1->insert(DT_INT_32U);
07133         dt_list_O_1->insert(DT_INT_32S);
07134         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07135         reg_list_O_1->insert(R_EAX);
07136         reg_list_O_1->insert(R_EBX);
07137         reg_list_O_1->insert(R_ECX);
07138         reg_list_O_1->insert(R_EDX);
07139         reg_list_O_1->insert(R_EDI);
07140         reg_list_O_1->insert(R_ESI);
07141         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07142         out_operands->push_back(op_O_1);
07143 
07144         //execution info
07145         einfo = execution_info::create(30);
07146 
07147         //properties
07148 
07149         //versions
07150         versions = set<ulint>::create();
07151         versions->insert(INSTRUCTION_MOVZX__1);
07152         versions->insert(INSTRUCTION_MOVZX__2);
07153         versions->insert(INSTRUCTION_MOVZX__3);
07154         versions->insert(INSTRUCTION_MOVZX__4);
07155         versions->insert(INSTRUCTION_MOVZX__6);
07156 
07157 
07158         //return target pseudoinstruction
07159         return tm_instr::create(INSTRUCTION_MOVZX__5,in_operands,out_operands,lstring("movzx $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
07160 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MOVZX__6 (  ) 

Definition at line 7162 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_MOVZX__1, INSTRUCTION_MOVZX__2, INSTRUCTION_MOVZX__3, INSTRUCTION_MOVZX__4, INSTRUCTION_MOVZX__5, INSTRUCTION_MOVZX__6, O_1, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

07162                                                      {
07163         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
07164         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
07165         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
07166         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
07167         ptr<set<tm_data_type_base::id_type> > allowed_types; 
07168         ptr<execution_info> einfo;
07169         ptr<set<ulint> > versions;
07170         
07171         //input operands
07172         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
07173         dt_list_I_1->insert(DT_BOOL);
07174         dt_list_I_1->insert(DT_INT_8P);
07175         dt_list_I_1->insert(DT_INT_8U);
07176         dt_list_I_1->insert(DT_INT_8S);
07177         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
07178         in_operands->push_back(op_I_1);
07179 
07180         //output operands
07181         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
07182         dt_list_O_1->insert(DT_INT_16U);
07183         dt_list_O_1->insert(DT_INT_16S);
07184         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
07185         reg_list_O_1->insert(R_AX);
07186         reg_list_O_1->insert(R_BX);
07187         reg_list_O_1->insert(R_CX);
07188         reg_list_O_1->insert(R_DX);
07189         reg_list_O_1->insert(R_DI);
07190         reg_list_O_1->insert(R_SI);
07191         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
07192         out_operands->push_back(op_O_1);
07193 
07194         //execution info
07195         einfo = execution_info::create(30);
07196 
07197         //properties
07198 
07199         //versions
07200         versions = set<ulint>::create();
07201         versions->insert(INSTRUCTION_MOVZX__1);
07202         versions->insert(INSTRUCTION_MOVZX__2);
07203         versions->insert(INSTRUCTION_MOVZX__3);
07204         versions->insert(INSTRUCTION_MOVZX__4);
07205         versions->insert(INSTRUCTION_MOVZX__5);
07206 
07207 
07208         //return target pseudoinstruction
07209         return tm_instr::create(INSTRUCTION_MOVZX__6,in_operands,out_operands,lstring("movzx $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
07210 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__1 (  ) 

Definition at line 2358 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

02358                                                    {
02359         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02360         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02361         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02362         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02363         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02364         ptr<execution_info> einfo;
02365         ptr<set<ulint> > versions;
02366         
02367         //input operands
02368         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02369         dt_list_I_1->insert(DT_INT_8U);
02370         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02371         reg_list_I_1->insert(R_AL);
02372         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02373         op_I_1->destroyed_by_get()->push_back(O_1);
02374         in_operands->push_back(op_I_1);
02375         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02376         dt_list_I_2->insert(DT_INT_8U);
02377         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02378         reg_list_I_2->insert(R_AL);
02379         reg_list_I_2->insert(R_AH);
02380         reg_list_I_2->insert(R_BL);
02381         reg_list_I_2->insert(R_BH);
02382         reg_list_I_2->insert(R_CL);
02383         reg_list_I_2->insert(R_CH);
02384         reg_list_I_2->insert(R_DL);
02385         reg_list_I_2->insert(R_DH);
02386         reg_list_I_2->erase(R_AL);
02387         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02388         in_operands->push_back(op_I_2);
02389 
02390         //output operands
02391         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02392         dt_list_O_1->insert(DT_INT_8U);
02393         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02394         reg_list_O_1->insert(R_AL);
02395         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02396         op_O_1->destroys_set(I_1);
02397         out_operands->push_back(op_O_1);
02398         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02399         dt_list_O_2->insert(DT_COND);
02400         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02401         reg_list_O_2->insert(R_COND);
02402         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02403         out_operands->push_back(op_O_2);
02404 
02405         //execution info
02406         einfo = execution_info::create(100);
02407 
02408         //properties
02409 
02410         //versions
02411         versions = set<ulint>::create();
02412         versions->insert(INSTRUCTION_MUL__11);
02413         versions->insert(INSTRUCTION_MUL__12);
02414         versions->insert(INSTRUCTION_MUL__2);
02415         versions->insert(INSTRUCTION_MUL__21);
02416         versions->insert(INSTRUCTION_MUL__22);
02417         versions->insert(INSTRUCTION_MUL__3);
02418         versions->insert(INSTRUCTION_MUL__31);
02419         versions->insert(INSTRUCTION_MUL__32);
02420 
02421 
02422         //return target pseudoinstruction
02423         return tm_instr::create(INSTRUCTION_MUL__1,in_operands,out_operands,lstring("mul $I_2"), props,versions,0,einfo);
02424 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__11 (  ) 

Definition at line 2426 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, lestes::md::registers::R_AL, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

02426                                                     {
02427         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02428         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02429         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02430         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02431         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02432         ptr<execution_info> einfo;
02433         ptr<set<ulint> > versions;
02434         
02435         //input operands
02436         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02437         dt_list_I_1->insert(DT_INT_8U);
02438         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02439         reg_list_I_1->insert(R_AL);
02440         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02441         op_I_1->destroyed_by_get()->push_back(O_1);
02442         in_operands->push_back(op_I_1);
02443         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02444         dt_list_I_2->insert(DT_INT_8U);
02445         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
02446         in_operands->push_back(op_I_2);
02447 
02448         //output operands
02449         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02450         dt_list_O_1->insert(DT_INT_8U);
02451         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02452         reg_list_O_1->insert(R_AL);
02453         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02454         op_O_1->destroys_set(I_1);
02455         out_operands->push_back(op_O_1);
02456         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02457         dt_list_O_2->insert(DT_COND);
02458         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02459         reg_list_O_2->insert(R_COND);
02460         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02461         out_operands->push_back(op_O_2);
02462 
02463         //execution info
02464         einfo = execution_info::create(120);
02465 
02466         //properties
02467 
02468         //versions
02469         versions = set<ulint>::create();
02470         versions->insert(INSTRUCTION_MUL__1);
02471         versions->insert(INSTRUCTION_MUL__12);
02472         versions->insert(INSTRUCTION_MUL__2);
02473         versions->insert(INSTRUCTION_MUL__21);
02474         versions->insert(INSTRUCTION_MUL__22);
02475         versions->insert(INSTRUCTION_MUL__3);
02476         versions->insert(INSTRUCTION_MUL__31);
02477         versions->insert(INSTRUCTION_MUL__32);
02478 
02479 
02480         //return target pseudoinstruction
02481         return tm_instr::create(INSTRUCTION_MUL__11,in_operands,out_operands,lstring("mul $TYPE_I_2 $I_2"), props,versions,0,einfo);
02482 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__12 (  ) 

Definition at line 2484 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, lestes::md::registers::R_AL, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

02484                                                     {
02485         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02486         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02487         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02488         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02489         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02490         ptr<execution_info> einfo;
02491         ptr<set<ulint> > versions;
02492         
02493         //input operands
02494         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02495         dt_list_I_1->insert(DT_INT_8U);
02496         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
02497         in_operands->push_back(op_I_1);
02498         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02499         dt_list_I_2->insert(DT_INT_8U);
02500         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02501         reg_list_I_2->insert(R_AL);
02502         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02503         op_I_2->destroyed_by_get()->push_back(O_1);
02504         in_operands->push_back(op_I_2);
02505 
02506         //output operands
02507         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02508         dt_list_O_1->insert(DT_INT_8U);
02509         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02510         reg_list_O_1->insert(R_AL);
02511         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02512         op_O_1->destroys_set(I_2);
02513         out_operands->push_back(op_O_1);
02514         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02515         dt_list_O_2->insert(DT_COND);
02516         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02517         reg_list_O_2->insert(R_COND);
02518         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02519         out_operands->push_back(op_O_2);
02520 
02521         //execution info
02522         einfo = execution_info::create(120);
02523 
02524         //properties
02525 
02526         //versions
02527         versions = set<ulint>::create();
02528         versions->insert(INSTRUCTION_MUL__1);
02529         versions->insert(INSTRUCTION_MUL__11);
02530         versions->insert(INSTRUCTION_MUL__2);
02531         versions->insert(INSTRUCTION_MUL__21);
02532         versions->insert(INSTRUCTION_MUL__22);
02533         versions->insert(INSTRUCTION_MUL__3);
02534         versions->insert(INSTRUCTION_MUL__31);
02535         versions->insert(INSTRUCTION_MUL__32);
02536 
02537 
02538         //return target pseudoinstruction
02539         return tm_instr::create(INSTRUCTION_MUL__12,in_operands,out_operands,lstring("mul $TYPE_I_1 $I_1"), props,versions,0,einfo);
02540 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__2 (  ) 

Definition at line 2542 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_BX, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DI, lestes::md::registers::R_DX, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

02542                                                    {
02543         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02544         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02545         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02546         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02547         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02548         ptr<execution_info> einfo;
02549         ptr<set<ulint> > versions;
02550         
02551         //input operands
02552         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02553         dt_list_I_1->insert(DT_INT_16U);
02554         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02555         reg_list_I_1->insert(R_AX);
02556         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02557         op_I_1->destroyed_by_get()->push_back(O_1);
02558         in_operands->push_back(op_I_1);
02559         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02560         dt_list_I_2->insert(DT_INT_16U);
02561         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02562         reg_list_I_2->insert(R_AX);
02563         reg_list_I_2->insert(R_BX);
02564         reg_list_I_2->insert(R_CX);
02565         reg_list_I_2->insert(R_DX);
02566         reg_list_I_2->insert(R_DI);
02567         reg_list_I_2->insert(R_SI);
02568         reg_list_I_2->erase(R_DX);
02569         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02570         in_operands->push_back(op_I_2);
02571 
02572         //output operands
02573         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02574         dt_list_O_1->insert(DT_INT_16U);
02575         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02576         reg_list_O_1->insert(R_AX);
02577         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02578         op_O_1->destroys_set(I_1);
02579         out_operands->push_back(op_O_1);
02580         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02581         dt_list_O_2->insert(DT_INT_16U);
02582         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02583         reg_list_O_2->insert(R_DX);
02584         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02585         out_operands->push_back(op_O_2);
02586         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02587         dt_list_O_3->insert(DT_COND);
02588         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02589         reg_list_O_3->insert(R_COND);
02590         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02591         out_operands->push_back(op_O_3);
02592 
02593         //execution info
02594         einfo = execution_info::create(100);
02595 
02596         //properties
02597 
02598         //versions
02599         versions = set<ulint>::create();
02600         versions->insert(INSTRUCTION_MUL__1);
02601         versions->insert(INSTRUCTION_MUL__11);
02602         versions->insert(INSTRUCTION_MUL__12);
02603         versions->insert(INSTRUCTION_MUL__21);
02604         versions->insert(INSTRUCTION_MUL__22);
02605         versions->insert(INSTRUCTION_MUL__3);
02606         versions->insert(INSTRUCTION_MUL__31);
02607         versions->insert(INSTRUCTION_MUL__32);
02608 
02609 
02610         //return target pseudoinstruction
02611         return tm_instr::create(INSTRUCTION_MUL__2,in_operands,out_operands,lstring("mul $I_2"), props,versions,0,einfo);
02612 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__21 (  ) 

Definition at line 2614 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_COND, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

02614                                                     {
02615         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02616         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02617         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02618         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02619         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02620         ptr<execution_info> einfo;
02621         ptr<set<ulint> > versions;
02622         
02623         //input operands
02624         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02625         dt_list_I_1->insert(DT_INT_16U);
02626         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02627         reg_list_I_1->insert(R_AX);
02628         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02629         op_I_1->destroyed_by_get()->push_back(O_1);
02630         in_operands->push_back(op_I_1);
02631         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02632         dt_list_I_2->insert(DT_INT_16U);
02633         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
02634         in_operands->push_back(op_I_2);
02635 
02636         //output operands
02637         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02638         dt_list_O_1->insert(DT_INT_16U);
02639         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02640         reg_list_O_1->insert(R_AX);
02641         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02642         op_O_1->destroys_set(I_1);
02643         out_operands->push_back(op_O_1);
02644         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02645         dt_list_O_2->insert(DT_INT_16U);
02646         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02647         reg_list_O_2->insert(R_DX);
02648         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02649         out_operands->push_back(op_O_2);
02650         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02651         dt_list_O_3->insert(DT_COND);
02652         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02653         reg_list_O_3->insert(R_COND);
02654         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02655         out_operands->push_back(op_O_3);
02656 
02657         //execution info
02658         einfo = execution_info::create(120);
02659 
02660         //properties
02661 
02662         //versions
02663         versions = set<ulint>::create();
02664         versions->insert(INSTRUCTION_MUL__1);
02665         versions->insert(INSTRUCTION_MUL__11);
02666         versions->insert(INSTRUCTION_MUL__12);
02667         versions->insert(INSTRUCTION_MUL__2);
02668         versions->insert(INSTRUCTION_MUL__22);
02669         versions->insert(INSTRUCTION_MUL__3);
02670         versions->insert(INSTRUCTION_MUL__31);
02671         versions->insert(INSTRUCTION_MUL__32);
02672 
02673 
02674         //return target pseudoinstruction
02675         return tm_instr::create(INSTRUCTION_MUL__21,in_operands,out_operands,lstring("mul $TYPE_I_2 $I_2"), props,versions,0,einfo);
02676 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__22 (  ) 

Definition at line 2678 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_AX, lestes::md::registers::R_COND, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

02678                                                     {
02679         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02680         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02681         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02682         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02683         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02684         ptr<execution_info> einfo;
02685         ptr<set<ulint> > versions;
02686         
02687         //input operands
02688         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02689         dt_list_I_1->insert(DT_INT_16U);
02690         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
02691         in_operands->push_back(op_I_1);
02692         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02693         dt_list_I_2->insert(DT_INT_16U);
02694         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02695         reg_list_I_2->insert(R_AX);
02696         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02697         op_I_2->destroyed_by_get()->push_back(O_1);
02698         in_operands->push_back(op_I_2);
02699 
02700         //output operands
02701         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02702         dt_list_O_1->insert(DT_INT_16U);
02703         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02704         reg_list_O_1->insert(R_AX);
02705         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02706         op_O_1->destroys_set(I_2);
02707         out_operands->push_back(op_O_1);
02708         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02709         dt_list_O_2->insert(DT_INT_16U);
02710         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02711         reg_list_O_2->insert(R_DX);
02712         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02713         out_operands->push_back(op_O_2);
02714         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02715         dt_list_O_3->insert(DT_COND);
02716         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02717         reg_list_O_3->insert(R_COND);
02718         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02719         out_operands->push_back(op_O_3);
02720 
02721         //execution info
02722         einfo = execution_info::create(120);
02723 
02724         //properties
02725 
02726         //versions
02727         versions = set<ulint>::create();
02728         versions->insert(INSTRUCTION_MUL__1);
02729         versions->insert(INSTRUCTION_MUL__11);
02730         versions->insert(INSTRUCTION_MUL__12);
02731         versions->insert(INSTRUCTION_MUL__2);
02732         versions->insert(INSTRUCTION_MUL__21);
02733         versions->insert(INSTRUCTION_MUL__3);
02734         versions->insert(INSTRUCTION_MUL__31);
02735         versions->insert(INSTRUCTION_MUL__32);
02736 
02737 
02738         //return target pseudoinstruction
02739         return tm_instr::create(INSTRUCTION_MUL__22,in_operands,out_operands,lstring("mul $TYPE_I_1 $I_1"), props,versions,0,einfo);
02740 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__3 (  ) 

Definition at line 2742 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

02742                                                    {
02743         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02744         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02745         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02746         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02747         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02748         ptr<execution_info> einfo;
02749         ptr<set<ulint> > versions;
02750         
02751         //input operands
02752         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02753         dt_list_I_1->insert(DT_INT_32U);
02754         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02755         reg_list_I_1->insert(R_EAX);
02756         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02757         op_I_1->destroyed_by_get()->push_back(O_1);
02758         in_operands->push_back(op_I_1);
02759         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02760         dt_list_I_2->insert(DT_INT_32U);
02761         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02762         reg_list_I_2->insert(R_EAX);
02763         reg_list_I_2->insert(R_EBX);
02764         reg_list_I_2->insert(R_ECX);
02765         reg_list_I_2->insert(R_EDX);
02766         reg_list_I_2->insert(R_EDI);
02767         reg_list_I_2->insert(R_ESI);
02768         reg_list_I_2->erase(R_EDX);
02769         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02770         in_operands->push_back(op_I_2);
02771 
02772         //output operands
02773         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02774         dt_list_O_1->insert(DT_INT_32U);
02775         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02776         reg_list_O_1->insert(R_EAX);
02777         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02778         op_O_1->destroys_set(I_1);
02779         out_operands->push_back(op_O_1);
02780         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02781         dt_list_O_2->insert(DT_INT_32U);
02782         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02783         reg_list_O_2->insert(R_EDX);
02784         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02785         out_operands->push_back(op_O_2);
02786         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02787         dt_list_O_3->insert(DT_COND);
02788         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02789         reg_list_O_3->insert(R_COND);
02790         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02791         out_operands->push_back(op_O_3);
02792 
02793         //execution info
02794         einfo = execution_info::create(100);
02795 
02796         //properties
02797 
02798         //versions
02799         versions = set<ulint>::create();
02800         versions->insert(INSTRUCTION_MUL__1);
02801         versions->insert(INSTRUCTION_MUL__11);
02802         versions->insert(INSTRUCTION_MUL__12);
02803         versions->insert(INSTRUCTION_MUL__2);
02804         versions->insert(INSTRUCTION_MUL__21);
02805         versions->insert(INSTRUCTION_MUL__22);
02806         versions->insert(INSTRUCTION_MUL__31);
02807         versions->insert(INSTRUCTION_MUL__32);
02808 
02809 
02810         //return target pseudoinstruction
02811         return tm_instr::create(INSTRUCTION_MUL__3,in_operands,out_operands,lstring("mul $I_2"), props,versions,0,einfo);
02812 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__31 (  ) 

Definition at line 2814 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

02814                                                     {
02815         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02816         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02817         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02818         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02819         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02820         ptr<execution_info> einfo;
02821         ptr<set<ulint> > versions;
02822         
02823         //input operands
02824         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02825         dt_list_I_1->insert(DT_INT_32U);
02826         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
02827         reg_list_I_1->insert(R_EAX);
02828         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
02829         op_I_1->destroyed_by_get()->push_back(O_1);
02830         in_operands->push_back(op_I_1);
02831         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02832         dt_list_I_2->insert(DT_INT_32U);
02833         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
02834         in_operands->push_back(op_I_2);
02835 
02836         //output operands
02837         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02838         dt_list_O_1->insert(DT_INT_32U);
02839         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02840         reg_list_O_1->insert(R_EAX);
02841         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02842         op_O_1->destroys_set(I_1);
02843         out_operands->push_back(op_O_1);
02844         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02845         dt_list_O_2->insert(DT_INT_32U);
02846         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02847         reg_list_O_2->insert(R_EDX);
02848         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02849         out_operands->push_back(op_O_2);
02850         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02851         dt_list_O_3->insert(DT_COND);
02852         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02853         reg_list_O_3->insert(R_COND);
02854         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02855         out_operands->push_back(op_O_3);
02856 
02857         //execution info
02858         einfo = execution_info::create(120);
02859 
02860         //properties
02861 
02862         //versions
02863         versions = set<ulint>::create();
02864         versions->insert(INSTRUCTION_MUL__1);
02865         versions->insert(INSTRUCTION_MUL__11);
02866         versions->insert(INSTRUCTION_MUL__12);
02867         versions->insert(INSTRUCTION_MUL__2);
02868         versions->insert(INSTRUCTION_MUL__21);
02869         versions->insert(INSTRUCTION_MUL__22);
02870         versions->insert(INSTRUCTION_MUL__3);
02871         versions->insert(INSTRUCTION_MUL__32);
02872 
02873 
02874         //return target pseudoinstruction
02875         return tm_instr::create(INSTRUCTION_MUL__31,in_operands,out_operands,lstring("mul $TYPE_I_2 $I_2"), props,versions,0,einfo);
02876 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_MUL__32 (  ) 

Definition at line 2878 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_32U, I_1, I_2, INSTRUCTION_MUL__1, INSTRUCTION_MUL__11, INSTRUCTION_MUL__12, INSTRUCTION_MUL__2, INSTRUCTION_MUL__21, INSTRUCTION_MUL__22, INSTRUCTION_MUL__3, INSTRUCTION_MUL__31, INSTRUCTION_MUL__32, O_1, O_2, O_3, lestes::md::registers::R_COND, lestes::md::registers::R_EAX, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

02878                                                     {
02879         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
02880         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
02881         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
02882         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
02883         ptr<set<tm_data_type_base::id_type> > allowed_types; 
02884         ptr<execution_info> einfo;
02885         ptr<set<ulint> > versions;
02886         
02887         //input operands
02888         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
02889         dt_list_I_1->insert(DT_INT_32U);
02890         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
02891         in_operands->push_back(op_I_1);
02892         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
02893         dt_list_I_2->insert(DT_INT_32U);
02894         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
02895         reg_list_I_2->insert(R_EAX);
02896         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
02897         op_I_2->destroyed_by_get()->push_back(O_1);
02898         in_operands->push_back(op_I_2);
02899 
02900         //output operands
02901         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
02902         dt_list_O_1->insert(DT_INT_32U);
02903         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
02904         reg_list_O_1->insert(R_EAX);
02905         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
02906         op_O_1->destroys_set(I_2);
02907         out_operands->push_back(op_O_1);
02908         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
02909         dt_list_O_2->insert(DT_INT_32U);
02910         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
02911         reg_list_O_2->insert(R_EDX);
02912         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
02913         out_operands->push_back(op_O_2);
02914         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
02915         dt_list_O_3->insert(DT_COND);
02916         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
02917         reg_list_O_3->insert(R_COND);
02918         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
02919         out_operands->push_back(op_O_3);
02920 
02921         //execution info
02922         einfo = execution_info::create(120);
02923 
02924         //properties
02925 
02926         //versions
02927         versions = set<ulint>::create();
02928         versions->insert(INSTRUCTION_MUL__1);
02929         versions->insert(INSTRUCTION_MUL__11);
02930         versions->insert(INSTRUCTION_MUL__12);
02931         versions->insert(INSTRUCTION_MUL__2);
02932         versions->insert(INSTRUCTION_MUL__21);
02933         versions->insert(INSTRUCTION_MUL__22);
02934         versions->insert(INSTRUCTION_MUL__3);
02935         versions->insert(INSTRUCTION_MUL__31);
02936 
02937 
02938         //return target pseudoinstruction
02939         return tm_instr::create(INSTRUCTION_MUL__32,in_operands,out_operands,lstring("mul $TYPE_I_1 $I_1"), props,versions,0,einfo);
02940 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NEG__1 (  ) 

Definition at line 4032 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_NEG__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04032                                                    {
04033         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04034         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04035         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04036         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04037         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04038         ptr<execution_info> einfo;
04039         ptr<set<ulint> > versions;
04040         
04041         //input operands
04042         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04043         dt_list_I_1->insert(DT_INT_8P);
04044         dt_list_I_1->insert(DT_INT_8U);
04045         dt_list_I_1->insert(DT_INT_8S);
04046         dt_list_I_1->insert(DT_INT_16U);
04047         dt_list_I_1->insert(DT_INT_16S);
04048         dt_list_I_1->insert(DT_INT_32U);
04049         dt_list_I_1->insert(DT_INT_32S);
04050         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04051         reg_list_I_1->insert(R_EAX);
04052         reg_list_I_1->insert(R_EBX);
04053         reg_list_I_1->insert(R_ECX);
04054         reg_list_I_1->insert(R_EDX);
04055         reg_list_I_1->insert(R_EDI);
04056         reg_list_I_1->insert(R_ESI);
04057         reg_list_I_1->insert(R_AX);
04058         reg_list_I_1->insert(R_BX);
04059         reg_list_I_1->insert(R_CX);
04060         reg_list_I_1->insert(R_DX);
04061         reg_list_I_1->insert(R_DI);
04062         reg_list_I_1->insert(R_SI);
04063         reg_list_I_1->insert(R_AL);
04064         reg_list_I_1->insert(R_AH);
04065         reg_list_I_1->insert(R_BL);
04066         reg_list_I_1->insert(R_BH);
04067         reg_list_I_1->insert(R_CL);
04068         reg_list_I_1->insert(R_CH);
04069         reg_list_I_1->insert(R_DL);
04070         reg_list_I_1->insert(R_DH);
04071         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04072         op_I_1->destroyed_by_get()->push_back(O_1);
04073         in_operands->push_back(op_I_1);
04074 
04075         //output operands
04076         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04077         dt_list_O_1->insert(DT_INT_8P);
04078         dt_list_O_1->insert(DT_INT_8U);
04079         dt_list_O_1->insert(DT_INT_8S);
04080         dt_list_O_1->insert(DT_INT_16U);
04081         dt_list_O_1->insert(DT_INT_16S);
04082         dt_list_O_1->insert(DT_INT_32U);
04083         dt_list_O_1->insert(DT_INT_32S);
04084         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04085         reg_list_O_1->insert(R_EAX);
04086         reg_list_O_1->insert(R_EBX);
04087         reg_list_O_1->insert(R_ECX);
04088         reg_list_O_1->insert(R_EDX);
04089         reg_list_O_1->insert(R_EDI);
04090         reg_list_O_1->insert(R_ESI);
04091         reg_list_O_1->insert(R_AX);
04092         reg_list_O_1->insert(R_BX);
04093         reg_list_O_1->insert(R_CX);
04094         reg_list_O_1->insert(R_DX);
04095         reg_list_O_1->insert(R_DI);
04096         reg_list_O_1->insert(R_SI);
04097         reg_list_O_1->insert(R_AL);
04098         reg_list_O_1->insert(R_AH);
04099         reg_list_O_1->insert(R_BL);
04100         reg_list_O_1->insert(R_BH);
04101         reg_list_O_1->insert(R_CL);
04102         reg_list_O_1->insert(R_CH);
04103         reg_list_O_1->insert(R_DL);
04104         reg_list_O_1->insert(R_DH);
04105         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04106         op_O_1->destroys_set(I_1);
04107         out_operands->push_back(op_O_1);
04108         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04109         dt_list_O_2->insert(DT_COND);
04110         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04111         reg_list_O_2->insert(R_COND);
04112         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04113         out_operands->push_back(op_O_2);
04114 
04115         //execution info
04116         einfo = execution_info::create(10);
04117 
04118         //properties
04119 
04120         //versions
04121 
04122 
04123         //return target pseudoinstruction
04124         return tm_instr::create(INSTRUCTION_NEG__1,in_operands,out_operands,lstring("neg $I_1"), props,versions,0,einfo);
04125 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NOP__1 (  ) 

Definition at line 9041 of file tm_instr.mdg.cc.

References IF_SYS, and INSTRUCTION_NOP__1.

Referenced by lestes::md::instructions::tm_instr::instance().

09041                                                    {
09042         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09043         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09044         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09045         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09046         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09047         ptr<execution_info> einfo;
09048         ptr<set<ulint> > versions;
09049         
09050         //input operands
09051 
09052         //output operands
09053 
09054         //execution info
09055         einfo = execution_info::create(10);
09056 
09057         //properties
09058 
09059         //versions
09060 
09061 
09062         //return target pseudoinstruction
09063         return tm_instr::create(INSTRUCTION_NOP__1,in_operands,out_operands,lstring("nop"), props,versions,IF_SYS,einfo);
09064 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NOT__1 (  ) 

Definition at line 6494 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_NOT__1, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06494                                                    {
06495         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06496         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06497         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06498         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06499         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06500         ptr<execution_info> einfo;
06501         ptr<set<ulint> > versions;
06502         
06503         //input operands
06504         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06505         dt_list_I_1->insert(DT_INT_8P);
06506         dt_list_I_1->insert(DT_INT_8U);
06507         dt_list_I_1->insert(DT_INT_8S);
06508         dt_list_I_1->insert(DT_INT_16U);
06509         dt_list_I_1->insert(DT_INT_16S);
06510         dt_list_I_1->insert(DT_INT_32U);
06511         dt_list_I_1->insert(DT_INT_32S);
06512         dt_list_I_1->insert(DT_BOOL);
06513         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06514         reg_list_I_1->insert(R_EAX);
06515         reg_list_I_1->insert(R_EBX);
06516         reg_list_I_1->insert(R_ECX);
06517         reg_list_I_1->insert(R_EDX);
06518         reg_list_I_1->insert(R_EDI);
06519         reg_list_I_1->insert(R_ESI);
06520         reg_list_I_1->insert(R_AX);
06521         reg_list_I_1->insert(R_BX);
06522         reg_list_I_1->insert(R_CX);
06523         reg_list_I_1->insert(R_DX);
06524         reg_list_I_1->insert(R_DI);
06525         reg_list_I_1->insert(R_SI);
06526         reg_list_I_1->insert(R_AL);
06527         reg_list_I_1->insert(R_AH);
06528         reg_list_I_1->insert(R_BL);
06529         reg_list_I_1->insert(R_BH);
06530         reg_list_I_1->insert(R_CL);
06531         reg_list_I_1->insert(R_CH);
06532         reg_list_I_1->insert(R_DL);
06533         reg_list_I_1->insert(R_DH);
06534         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06535         op_I_1->destroyed_by_get()->push_back(O_1);
06536         in_operands->push_back(op_I_1);
06537 
06538         //output operands
06539         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06540         dt_list_O_1->insert(DT_INT_8P);
06541         dt_list_O_1->insert(DT_INT_8U);
06542         dt_list_O_1->insert(DT_INT_8S);
06543         dt_list_O_1->insert(DT_INT_16U);
06544         dt_list_O_1->insert(DT_INT_16S);
06545         dt_list_O_1->insert(DT_INT_32U);
06546         dt_list_O_1->insert(DT_INT_32S);
06547         dt_list_O_1->insert(DT_BOOL);
06548         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06549         reg_list_O_1->insert(R_EAX);
06550         reg_list_O_1->insert(R_EBX);
06551         reg_list_O_1->insert(R_ECX);
06552         reg_list_O_1->insert(R_EDX);
06553         reg_list_O_1->insert(R_EDI);
06554         reg_list_O_1->insert(R_ESI);
06555         reg_list_O_1->insert(R_AX);
06556         reg_list_O_1->insert(R_BX);
06557         reg_list_O_1->insert(R_CX);
06558         reg_list_O_1->insert(R_DX);
06559         reg_list_O_1->insert(R_DI);
06560         reg_list_O_1->insert(R_SI);
06561         reg_list_O_1->insert(R_AL);
06562         reg_list_O_1->insert(R_AH);
06563         reg_list_O_1->insert(R_BL);
06564         reg_list_O_1->insert(R_BH);
06565         reg_list_O_1->insert(R_CL);
06566         reg_list_O_1->insert(R_CH);
06567         reg_list_O_1->insert(R_DL);
06568         reg_list_O_1->insert(R_DH);
06569         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06570         op_O_1->destroys_set(I_1);
06571         out_operands->push_back(op_O_1);
06572 
06573         //execution info
06574         einfo = execution_info::create(10);
06575 
06576         //properties
06577 
06578         //versions
06579 
06580 
06581         //return target pseudoinstruction
06582         return tm_instr::create(INSTRUCTION_NOT__1,in_operands,out_operands,lstring("not $O_1"), props,versions,0,einfo);
06583 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NULLAH__1 (  ) 

Definition at line 3511 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_8U, INSTRUCTION_NULLAH__1, O_1, and lestes::md::registers::R_AH.

Referenced by lestes::md::instructions::tm_instr::instance().

03511                                                       {
03512         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03513         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03514         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03515         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03516         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03517         ptr<execution_info> einfo;
03518         ptr<set<ulint> > versions;
03519         
03520         //input operands
03521 
03522         //output operands
03523         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03524         dt_list_O_1->insert(DT_INT_8U);
03525         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03526         reg_list_O_1->insert(R_AH);
03527         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03528         out_operands->push_back(op_O_1);
03529 
03530         //execution info
03531         einfo = execution_info::create(10);
03532 
03533         //properties
03534 
03535         //versions
03536 
03537 
03538         //return target pseudoinstruction
03539         return tm_instr::create(INSTRUCTION_NULLAH__1,in_operands,out_operands,lstring("xor $O_1, $O_1"), props,versions,0,einfo);
03540 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NULLDX__1 (  ) 

Definition at line 3542 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16U, INSTRUCTION_NULLDX__1, O_1, and lestes::md::registers::R_DX.

Referenced by lestes::md::instructions::tm_instr::instance().

03542                                                       {
03543         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03544         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03545         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03546         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03547         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03548         ptr<execution_info> einfo;
03549         ptr<set<ulint> > versions;
03550         
03551         //input operands
03552 
03553         //output operands
03554         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03555         dt_list_O_1->insert(DT_INT_16U);
03556         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03557         reg_list_O_1->insert(R_DX);
03558         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03559         out_operands->push_back(op_O_1);
03560 
03561         //execution info
03562         einfo = execution_info::create(10);
03563 
03564         //properties
03565 
03566         //versions
03567 
03568 
03569         //return target pseudoinstruction
03570         return tm_instr::create(INSTRUCTION_NULLDX__1,in_operands,out_operands,lstring("xor $O_1, $O_1"), props,versions,0,einfo);
03571 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_NULLEDX__1 (  ) 

Definition at line 3573 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32U, INSTRUCTION_NULLEDX__1, O_1, and lestes::md::registers::R_EDX.

Referenced by lestes::md::instructions::tm_instr::instance().

03573                                                        {
03574         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
03575         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
03576         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
03577         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
03578         ptr<set<tm_data_type_base::id_type> > allowed_types; 
03579         ptr<execution_info> einfo;
03580         ptr<set<ulint> > versions;
03581         
03582         //input operands
03583 
03584         //output operands
03585         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
03586         dt_list_O_1->insert(DT_INT_32U);
03587         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
03588         reg_list_O_1->insert(R_EDX);
03589         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
03590         out_operands->push_back(op_O_1);
03591 
03592         //execution info
03593         einfo = execution_info::create(10);
03594 
03595         //properties
03596 
03597         //versions
03598 
03599 
03600         //return target pseudoinstruction
03601         return tm_instr::create(INSTRUCTION_NULLEDX__1,in_operands,out_operands,lstring("xor $O_1, $O_1"), props,versions,0,einfo);
03602 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_OR__1 (  ) 

Definition at line 5214 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_OR__1, INSTRUCTION_OR__11, INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05214                                                   {
05215         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05216         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05217         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05218         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05219         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05220         ptr<execution_info> einfo;
05221         ptr<set<ulint> > versions;
05222         
05223         //input operands
05224         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05225         dt_list_I_1->insert(DT_INT_8P);
05226         dt_list_I_1->insert(DT_INT_8U);
05227         dt_list_I_1->insert(DT_INT_8S);
05228         dt_list_I_1->insert(DT_INT_16U);
05229         dt_list_I_1->insert(DT_INT_16S);
05230         dt_list_I_1->insert(DT_INT_32U);
05231         dt_list_I_1->insert(DT_INT_32S);
05232         dt_list_I_1->insert(DT_BOOL);
05233         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05234         reg_list_I_1->insert(R_EAX);
05235         reg_list_I_1->insert(R_EBX);
05236         reg_list_I_1->insert(R_ECX);
05237         reg_list_I_1->insert(R_EDX);
05238         reg_list_I_1->insert(R_EDI);
05239         reg_list_I_1->insert(R_ESI);
05240         reg_list_I_1->insert(R_AX);
05241         reg_list_I_1->insert(R_BX);
05242         reg_list_I_1->insert(R_CX);
05243         reg_list_I_1->insert(R_DX);
05244         reg_list_I_1->insert(R_DI);
05245         reg_list_I_1->insert(R_SI);
05246         reg_list_I_1->insert(R_AL);
05247         reg_list_I_1->insert(R_AH);
05248         reg_list_I_1->insert(R_BL);
05249         reg_list_I_1->insert(R_BH);
05250         reg_list_I_1->insert(R_CL);
05251         reg_list_I_1->insert(R_CH);
05252         reg_list_I_1->insert(R_DL);
05253         reg_list_I_1->insert(R_DH);
05254         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05255         op_I_1->destroyed_by_get()->push_back(O_1);
05256         in_operands->push_back(op_I_1);
05257         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05258         dt_list_I_2->insert(DT_INT_8P);
05259         dt_list_I_2->insert(DT_INT_8U);
05260         dt_list_I_2->insert(DT_INT_8S);
05261         dt_list_I_2->insert(DT_INT_16U);
05262         dt_list_I_2->insert(DT_INT_16S);
05263         dt_list_I_2->insert(DT_INT_32U);
05264         dt_list_I_2->insert(DT_INT_32S);
05265         dt_list_I_2->insert(DT_BOOL);
05266         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
05267         reg_list_I_2->insert(R_EAX);
05268         reg_list_I_2->insert(R_EBX);
05269         reg_list_I_2->insert(R_ECX);
05270         reg_list_I_2->insert(R_EDX);
05271         reg_list_I_2->insert(R_EDI);
05272         reg_list_I_2->insert(R_ESI);
05273         reg_list_I_2->insert(R_AX);
05274         reg_list_I_2->insert(R_BX);
05275         reg_list_I_2->insert(R_CX);
05276         reg_list_I_2->insert(R_DX);
05277         reg_list_I_2->insert(R_DI);
05278         reg_list_I_2->insert(R_SI);
05279         reg_list_I_2->insert(R_AL);
05280         reg_list_I_2->insert(R_AH);
05281         reg_list_I_2->insert(R_BL);
05282         reg_list_I_2->insert(R_BH);
05283         reg_list_I_2->insert(R_CL);
05284         reg_list_I_2->insert(R_CH);
05285         reg_list_I_2->insert(R_DL);
05286         reg_list_I_2->insert(R_DH);
05287         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
05288         in_operands->push_back(op_I_2);
05289 
05290         //output operands
05291         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05292         dt_list_O_1->insert(DT_INT_8P);
05293         dt_list_O_1->insert(DT_INT_8U);
05294         dt_list_O_1->insert(DT_INT_8S);
05295         dt_list_O_1->insert(DT_INT_16U);
05296         dt_list_O_1->insert(DT_INT_16S);
05297         dt_list_O_1->insert(DT_INT_32U);
05298         dt_list_O_1->insert(DT_INT_32S);
05299         dt_list_O_1->insert(DT_BOOL);
05300         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05301         reg_list_O_1->insert(R_EAX);
05302         reg_list_O_1->insert(R_EBX);
05303         reg_list_O_1->insert(R_ECX);
05304         reg_list_O_1->insert(R_EDX);
05305         reg_list_O_1->insert(R_EDI);
05306         reg_list_O_1->insert(R_ESI);
05307         reg_list_O_1->insert(R_AX);
05308         reg_list_O_1->insert(R_BX);
05309         reg_list_O_1->insert(R_CX);
05310         reg_list_O_1->insert(R_DX);
05311         reg_list_O_1->insert(R_DI);
05312         reg_list_O_1->insert(R_SI);
05313         reg_list_O_1->insert(R_AL);
05314         reg_list_O_1->insert(R_AH);
05315         reg_list_O_1->insert(R_BL);
05316         reg_list_O_1->insert(R_BH);
05317         reg_list_O_1->insert(R_CL);
05318         reg_list_O_1->insert(R_CH);
05319         reg_list_O_1->insert(R_DL);
05320         reg_list_O_1->insert(R_DH);
05321         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05322         op_O_1->destroys_set(I_1);
05323         out_operands->push_back(op_O_1);
05324         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05325         dt_list_O_2->insert(DT_COND);
05326         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05327         reg_list_O_2->insert(R_COND);
05328         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05329         out_operands->push_back(op_O_2);
05330 
05331         //execution info
05332         einfo = execution_info::create(10);
05333 
05334         //properties
05335 
05336         //versions
05337         versions = set<ulint>::create();
05338         versions->insert(INSTRUCTION_OR__11);
05339         versions->insert(INSTRUCTION_OR__12);
05340         versions->insert(INSTRUCTION_OR__13);
05341         versions->insert(INSTRUCTION_OR__14);
05342 
05343 
05344         //return target pseudoinstruction
05345         return tm_instr::create(INSTRUCTION_OR__1,in_operands,out_operands,lstring("or $O_1, $I_2"), props,versions,0,einfo);
05346 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_OR__11 (  ) 

Definition at line 5348 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_OR__1, INSTRUCTION_OR__11, INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05348                                                    {
05349         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05350         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05351         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05352         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05353         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05354         ptr<execution_info> einfo;
05355         ptr<set<ulint> > versions;
05356         
05357         //input operands
05358         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05359         dt_list_I_1->insert(DT_INT_8P);
05360         dt_list_I_1->insert(DT_INT_8U);
05361         dt_list_I_1->insert(DT_INT_8S);
05362         dt_list_I_1->insert(DT_INT_16U);
05363         dt_list_I_1->insert(DT_INT_16S);
05364         dt_list_I_1->insert(DT_INT_32U);
05365         dt_list_I_1->insert(DT_INT_32S);
05366         dt_list_I_1->insert(DT_BOOL);
05367         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05368         reg_list_I_1->insert(R_EAX);
05369         reg_list_I_1->insert(R_EBX);
05370         reg_list_I_1->insert(R_ECX);
05371         reg_list_I_1->insert(R_EDX);
05372         reg_list_I_1->insert(R_EDI);
05373         reg_list_I_1->insert(R_ESI);
05374         reg_list_I_1->insert(R_AX);
05375         reg_list_I_1->insert(R_BX);
05376         reg_list_I_1->insert(R_CX);
05377         reg_list_I_1->insert(R_DX);
05378         reg_list_I_1->insert(R_DI);
05379         reg_list_I_1->insert(R_SI);
05380         reg_list_I_1->insert(R_AL);
05381         reg_list_I_1->insert(R_AH);
05382         reg_list_I_1->insert(R_BL);
05383         reg_list_I_1->insert(R_BH);
05384         reg_list_I_1->insert(R_CL);
05385         reg_list_I_1->insert(R_CH);
05386         reg_list_I_1->insert(R_DL);
05387         reg_list_I_1->insert(R_DH);
05388         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05389         op_I_1->destroyed_by_get()->push_back(O_1);
05390         in_operands->push_back(op_I_1);
05391         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05392         dt_list_I_2->insert(DT_INT_8P);
05393         dt_list_I_2->insert(DT_INT_8U);
05394         dt_list_I_2->insert(DT_INT_8S);
05395         dt_list_I_2->insert(DT_INT_16U);
05396         dt_list_I_2->insert(DT_INT_16S);
05397         dt_list_I_2->insert(DT_INT_32U);
05398         dt_list_I_2->insert(DT_INT_32S);
05399         dt_list_I_2->insert(DT_BOOL);
05400         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
05401         in_operands->push_back(op_I_2);
05402 
05403         //output operands
05404         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05405         dt_list_O_1->insert(DT_INT_8P);
05406         dt_list_O_1->insert(DT_INT_8U);
05407         dt_list_O_1->insert(DT_INT_8S);
05408         dt_list_O_1->insert(DT_INT_16U);
05409         dt_list_O_1->insert(DT_INT_16S);
05410         dt_list_O_1->insert(DT_INT_32U);
05411         dt_list_O_1->insert(DT_INT_32S);
05412         dt_list_O_1->insert(DT_BOOL);
05413         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05414         reg_list_O_1->insert(R_EAX);
05415         reg_list_O_1->insert(R_EBX);
05416         reg_list_O_1->insert(R_ECX);
05417         reg_list_O_1->insert(R_EDX);
05418         reg_list_O_1->insert(R_EDI);
05419         reg_list_O_1->insert(R_ESI);
05420         reg_list_O_1->insert(R_AX);
05421         reg_list_O_1->insert(R_BX);
05422         reg_list_O_1->insert(R_CX);
05423         reg_list_O_1->insert(R_DX);
05424         reg_list_O_1->insert(R_DI);
05425         reg_list_O_1->insert(R_SI);
05426         reg_list_O_1->insert(R_AL);
05427         reg_list_O_1->insert(R_AH);
05428         reg_list_O_1->insert(R_BL);
05429         reg_list_O_1->insert(R_BH);
05430         reg_list_O_1->insert(R_CL);
05431         reg_list_O_1->insert(R_CH);
05432         reg_list_O_1->insert(R_DL);
05433         reg_list_O_1->insert(R_DH);
05434         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05435         op_O_1->destroys_set(I_1);
05436         out_operands->push_back(op_O_1);
05437         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05438         dt_list_O_2->insert(DT_COND);
05439         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05440         reg_list_O_2->insert(R_COND);
05441         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05442         out_operands->push_back(op_O_2);
05443 
05444         //execution info
05445         einfo = execution_info::create(10);
05446 
05447         //properties
05448 
05449         //versions
05450         versions = set<ulint>::create();
05451         versions->insert(INSTRUCTION_OR__1);
05452         versions->insert(INSTRUCTION_OR__12);
05453         versions->insert(INSTRUCTION_OR__13);
05454         versions->insert(INSTRUCTION_OR__14);
05455 
05456 
05457         //return target pseudoinstruction
05458         return tm_instr::create(INSTRUCTION_OR__11,in_operands,out_operands,lstring("or $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
05459 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_OR__12 (  ) 

Definition at line 5461 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_OR__1, INSTRUCTION_OR__11, INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05461                                                    {
05462         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05463         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05464         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05465         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05466         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05467         ptr<execution_info> einfo;
05468         ptr<set<ulint> > versions;
05469         
05470         //input operands
05471         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05472         dt_list_I_1->insert(DT_INT_8P);
05473         dt_list_I_1->insert(DT_INT_8U);
05474         dt_list_I_1->insert(DT_INT_8S);
05475         dt_list_I_1->insert(DT_INT_16U);
05476         dt_list_I_1->insert(DT_INT_16S);
05477         dt_list_I_1->insert(DT_INT_32U);
05478         dt_list_I_1->insert(DT_INT_32S);
05479         dt_list_I_1->insert(DT_BOOL);
05480         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
05481         in_operands->push_back(op_I_1);
05482         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05483         dt_list_I_2->insert(DT_INT_8P);
05484         dt_list_I_2->insert(DT_INT_8U);
05485         dt_list_I_2->insert(DT_INT_8S);
05486         dt_list_I_2->insert(DT_INT_16U);
05487         dt_list_I_2->insert(DT_INT_16S);
05488         dt_list_I_2->insert(DT_INT_32U);
05489         dt_list_I_2->insert(DT_INT_32S);
05490         dt_list_I_2->insert(DT_BOOL);
05491         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
05492         reg_list_I_2->insert(R_EAX);
05493         reg_list_I_2->insert(R_EBX);
05494         reg_list_I_2->insert(R_ECX);
05495         reg_list_I_2->insert(R_EDX);
05496         reg_list_I_2->insert(R_EDI);
05497         reg_list_I_2->insert(R_ESI);
05498         reg_list_I_2->insert(R_AX);
05499         reg_list_I_2->insert(R_BX);
05500         reg_list_I_2->insert(R_CX);
05501         reg_list_I_2->insert(R_DX);
05502         reg_list_I_2->insert(R_DI);
05503         reg_list_I_2->insert(R_SI);
05504         reg_list_I_2->insert(R_AL);
05505         reg_list_I_2->insert(R_AH);
05506         reg_list_I_2->insert(R_BL);
05507         reg_list_I_2->insert(R_BH);
05508         reg_list_I_2->insert(R_CL);
05509         reg_list_I_2->insert(R_CH);
05510         reg_list_I_2->insert(R_DL);
05511         reg_list_I_2->insert(R_DH);
05512         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
05513         op_I_2->destroyed_by_get()->push_back(O_1);
05514         in_operands->push_back(op_I_2);
05515 
05516         //output operands
05517         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05518         dt_list_O_1->insert(DT_INT_8P);
05519         dt_list_O_1->insert(DT_INT_8U);
05520         dt_list_O_1->insert(DT_INT_8S);
05521         dt_list_O_1->insert(DT_INT_16U);
05522         dt_list_O_1->insert(DT_INT_16S);
05523         dt_list_O_1->insert(DT_INT_32U);
05524         dt_list_O_1->insert(DT_INT_32S);
05525         dt_list_O_1->insert(DT_BOOL);
05526         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05527         reg_list_O_1->insert(R_EAX);
05528         reg_list_O_1->insert(R_EBX);
05529         reg_list_O_1->insert(R_ECX);
05530         reg_list_O_1->insert(R_EDX);
05531         reg_list_O_1->insert(R_EDI);
05532         reg_list_O_1->insert(R_ESI);
05533         reg_list_O_1->insert(R_AX);
05534         reg_list_O_1->insert(R_BX);
05535         reg_list_O_1->insert(R_CX);
05536         reg_list_O_1->insert(R_DX);
05537         reg_list_O_1->insert(R_DI);
05538         reg_list_O_1->insert(R_SI);
05539         reg_list_O_1->insert(R_AL);
05540         reg_list_O_1->insert(R_AH);
05541         reg_list_O_1->insert(R_BL);
05542         reg_list_O_1->insert(R_BH);
05543         reg_list_O_1->insert(R_CL);
05544         reg_list_O_1->insert(R_CH);
05545         reg_list_O_1->insert(R_DL);
05546         reg_list_O_1->insert(R_DH);
05547         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05548         op_O_1->destroys_set(I_2);
05549         out_operands->push_back(op_O_1);
05550         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05551         dt_list_O_2->insert(DT_COND);
05552         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05553         reg_list_O_2->insert(R_COND);
05554         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05555         out_operands->push_back(op_O_2);
05556 
05557         //execution info
05558         einfo = execution_info::create(10);
05559 
05560         //properties
05561 
05562         //versions
05563         versions = set<ulint>::create();
05564         versions->insert(INSTRUCTION_OR__1);
05565         versions->insert(INSTRUCTION_OR__11);
05566         versions->insert(INSTRUCTION_OR__13);
05567         versions->insert(INSTRUCTION_OR__14);
05568 
05569 
05570         //return target pseudoinstruction
05571         return tm_instr::create(INSTRUCTION_OR__12,in_operands,out_operands,lstring("or $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
05572 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_OR__13 (  ) 

Definition at line 5574 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_OR__1, INSTRUCTION_OR__11, INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05574                                                    {
05575         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05576         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05577         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05578         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05579         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05580         ptr<execution_info> einfo;
05581         ptr<set<ulint> > versions;
05582         
05583         //input operands
05584         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05585         dt_list_I_1->insert(DT_INT_8P);
05586         dt_list_I_1->insert(DT_INT_8U);
05587         dt_list_I_1->insert(DT_INT_8S);
05588         dt_list_I_1->insert(DT_INT_16U);
05589         dt_list_I_1->insert(DT_INT_16S);
05590         dt_list_I_1->insert(DT_INT_32U);
05591         dt_list_I_1->insert(DT_INT_32S);
05592         dt_list_I_1->insert(DT_BOOL);
05593         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05594         reg_list_I_1->insert(R_EAX);
05595         reg_list_I_1->insert(R_EBX);
05596         reg_list_I_1->insert(R_ECX);
05597         reg_list_I_1->insert(R_EDX);
05598         reg_list_I_1->insert(R_EDI);
05599         reg_list_I_1->insert(R_ESI);
05600         reg_list_I_1->insert(R_AX);
05601         reg_list_I_1->insert(R_BX);
05602         reg_list_I_1->insert(R_CX);
05603         reg_list_I_1->insert(R_DX);
05604         reg_list_I_1->insert(R_DI);
05605         reg_list_I_1->insert(R_SI);
05606         reg_list_I_1->insert(R_AL);
05607         reg_list_I_1->insert(R_AH);
05608         reg_list_I_1->insert(R_BL);
05609         reg_list_I_1->insert(R_BH);
05610         reg_list_I_1->insert(R_CL);
05611         reg_list_I_1->insert(R_CH);
05612         reg_list_I_1->insert(R_DL);
05613         reg_list_I_1->insert(R_DH);
05614         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05615         op_I_1->destroyed_by_get()->push_back(O_1);
05616         in_operands->push_back(op_I_1);
05617         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05618         dt_list_I_2->insert(DT_INT_8P);
05619         dt_list_I_2->insert(DT_INT_8U);
05620         dt_list_I_2->insert(DT_INT_8S);
05621         dt_list_I_2->insert(DT_INT_16U);
05622         dt_list_I_2->insert(DT_INT_16S);
05623         dt_list_I_2->insert(DT_INT_32U);
05624         dt_list_I_2->insert(DT_INT_32S);
05625         dt_list_I_2->insert(DT_BOOL);
05626         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
05627         in_operands->push_back(op_I_2);
05628 
05629         //output operands
05630         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05631         dt_list_O_1->insert(DT_INT_8P);
05632         dt_list_O_1->insert(DT_INT_8U);
05633         dt_list_O_1->insert(DT_INT_8S);
05634         dt_list_O_1->insert(DT_INT_16U);
05635         dt_list_O_1->insert(DT_INT_16S);
05636         dt_list_O_1->insert(DT_INT_32U);
05637         dt_list_O_1->insert(DT_INT_32S);
05638         dt_list_O_1->insert(DT_BOOL);
05639         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05640         reg_list_O_1->insert(R_EAX);
05641         reg_list_O_1->insert(R_EBX);
05642         reg_list_O_1->insert(R_ECX);
05643         reg_list_O_1->insert(R_EDX);
05644         reg_list_O_1->insert(R_EDI);
05645         reg_list_O_1->insert(R_ESI);
05646         reg_list_O_1->insert(R_AX);
05647         reg_list_O_1->insert(R_BX);
05648         reg_list_O_1->insert(R_CX);
05649         reg_list_O_1->insert(R_DX);
05650         reg_list_O_1->insert(R_DI);
05651         reg_list_O_1->insert(R_SI);
05652         reg_list_O_1->insert(R_AL);
05653         reg_list_O_1->insert(R_AH);
05654         reg_list_O_1->insert(R_BL);
05655         reg_list_O_1->insert(R_BH);
05656         reg_list_O_1->insert(R_CL);
05657         reg_list_O_1->insert(R_CH);
05658         reg_list_O_1->insert(R_DL);
05659         reg_list_O_1->insert(R_DH);
05660         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05661         op_O_1->destroys_set(I_1);
05662         out_operands->push_back(op_O_1);
05663         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05664         dt_list_O_2->insert(DT_COND);
05665         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05666         reg_list_O_2->insert(R_COND);
05667         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05668         out_operands->push_back(op_O_2);
05669 
05670         //execution info
05671         einfo = execution_info::create(30);
05672 
05673         //properties
05674 
05675         //versions
05676         versions = set<ulint>::create();
05677         versions->insert(INSTRUCTION_OR__1);
05678         versions->insert(INSTRUCTION_OR__11);
05679         versions->insert(INSTRUCTION_OR__12);
05680         versions->insert(INSTRUCTION_OR__14);
05681 
05682 
05683         //return target pseudoinstruction
05684         return tm_instr::create(INSTRUCTION_OR__13,in_operands,out_operands,lstring("or $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
05685 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_OR__14 (  ) 

Definition at line 5687 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_OR__1, INSTRUCTION_OR__11, INSTRUCTION_OR__12, INSTRUCTION_OR__13, INSTRUCTION_OR__14, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05687                                                    {
05688         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05689         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05690         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05691         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05692         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05693         ptr<execution_info> einfo;
05694         ptr<set<ulint> > versions;
05695         
05696         //input operands
05697         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05698         dt_list_I_1->insert(DT_INT_8P);
05699         dt_list_I_1->insert(DT_INT_8U);
05700         dt_list_I_1->insert(DT_INT_8S);
05701         dt_list_I_1->insert(DT_INT_16U);
05702         dt_list_I_1->insert(DT_INT_16S);
05703         dt_list_I_1->insert(DT_INT_32U);
05704         dt_list_I_1->insert(DT_INT_32S);
05705         dt_list_I_1->insert(DT_BOOL);
05706         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
05707         in_operands->push_back(op_I_1);
05708         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05709         dt_list_I_2->insert(DT_INT_8P);
05710         dt_list_I_2->insert(DT_INT_8U);
05711         dt_list_I_2->insert(DT_INT_8S);
05712         dt_list_I_2->insert(DT_INT_16U);
05713         dt_list_I_2->insert(DT_INT_16S);
05714         dt_list_I_2->insert(DT_INT_32U);
05715         dt_list_I_2->insert(DT_INT_32S);
05716         dt_list_I_2->insert(DT_BOOL);
05717         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
05718         reg_list_I_2->insert(R_EAX);
05719         reg_list_I_2->insert(R_EBX);
05720         reg_list_I_2->insert(R_ECX);
05721         reg_list_I_2->insert(R_EDX);
05722         reg_list_I_2->insert(R_EDI);
05723         reg_list_I_2->insert(R_ESI);
05724         reg_list_I_2->insert(R_AX);
05725         reg_list_I_2->insert(R_BX);
05726         reg_list_I_2->insert(R_CX);
05727         reg_list_I_2->insert(R_DX);
05728         reg_list_I_2->insert(R_DI);
05729         reg_list_I_2->insert(R_SI);
05730         reg_list_I_2->insert(R_AL);
05731         reg_list_I_2->insert(R_AH);
05732         reg_list_I_2->insert(R_BL);
05733         reg_list_I_2->insert(R_BH);
05734         reg_list_I_2->insert(R_CL);
05735         reg_list_I_2->insert(R_CH);
05736         reg_list_I_2->insert(R_DL);
05737         reg_list_I_2->insert(R_DH);
05738         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
05739         op_I_2->destroyed_by_get()->push_back(O_1);
05740         in_operands->push_back(op_I_2);
05741 
05742         //output operands
05743         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05744         dt_list_O_1->insert(DT_INT_8P);
05745         dt_list_O_1->insert(DT_INT_8U);
05746         dt_list_O_1->insert(DT_INT_8S);
05747         dt_list_O_1->insert(DT_INT_16U);
05748         dt_list_O_1->insert(DT_INT_16S);
05749         dt_list_O_1->insert(DT_INT_32U);
05750         dt_list_O_1->insert(DT_INT_32S);
05751         dt_list_O_1->insert(DT_BOOL);
05752         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05753         reg_list_O_1->insert(R_EAX);
05754         reg_list_O_1->insert(R_EBX);
05755         reg_list_O_1->insert(R_ECX);
05756         reg_list_O_1->insert(R_EDX);
05757         reg_list_O_1->insert(R_EDI);
05758         reg_list_O_1->insert(R_ESI);
05759         reg_list_O_1->insert(R_AX);
05760         reg_list_O_1->insert(R_BX);
05761         reg_list_O_1->insert(R_CX);
05762         reg_list_O_1->insert(R_DX);
05763         reg_list_O_1->insert(R_DI);
05764         reg_list_O_1->insert(R_SI);
05765         reg_list_O_1->insert(R_AL);
05766         reg_list_O_1->insert(R_AH);
05767         reg_list_O_1->insert(R_BL);
05768         reg_list_O_1->insert(R_BH);
05769         reg_list_O_1->insert(R_CL);
05770         reg_list_O_1->insert(R_CH);
05771         reg_list_O_1->insert(R_DL);
05772         reg_list_O_1->insert(R_DH);
05773         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05774         op_O_1->destroys_set(I_2);
05775         out_operands->push_back(op_O_1);
05776         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05777         dt_list_O_2->insert(DT_COND);
05778         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05779         reg_list_O_2->insert(R_COND);
05780         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05781         out_operands->push_back(op_O_2);
05782 
05783         //execution info
05784         einfo = execution_info::create(30);
05785 
05786         //properties
05787 
05788         //versions
05789         versions = set<ulint>::create();
05790         versions->insert(INSTRUCTION_OR__1);
05791         versions->insert(INSTRUCTION_OR__11);
05792         versions->insert(INSTRUCTION_OR__12);
05793         versions->insert(INSTRUCTION_OR__13);
05794 
05795 
05796         //return target pseudoinstruction
05797         return tm_instr::create(INSTRUCTION_OR__14,in_operands,out_operands,lstring("or $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
05798 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_POP__1 (  ) 

Definition at line 8969 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_SYS, INSTRUCTION_POP__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, lestes::md::registers::R_ESP, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

08969                                                    {
08970         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08971         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08972         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08973         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08974         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08975         ptr<execution_info> einfo;
08976         ptr<set<ulint> > versions;
08977         
08978         //input operands
08979         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08980         dt_list_I_1->insert(DT_INT_32U);
08981         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08982         reg_list_I_1->insert(R_ESP);
08983         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08984         op_I_1->destroyed_by_get()->push_back(O_1);
08985         in_operands->push_back(op_I_1);
08986 
08987         //output operands
08988         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08989         dt_list_O_1->insert(DT_INT_32U);
08990         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08991         reg_list_O_1->insert(R_ESP);
08992         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08993         op_O_1->destroys_set(I_1);
08994         out_operands->push_back(op_O_1);
08995         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
08996         dt_list_O_2->insert(DT_INT_8P);
08997         dt_list_O_2->insert(DT_INT_8U);
08998         dt_list_O_2->insert(DT_INT_8S);
08999         dt_list_O_2->insert(DT_INT_16U);
09000         dt_list_O_2->insert(DT_INT_16S);
09001         dt_list_O_2->insert(DT_INT_32U);
09002         dt_list_O_2->insert(DT_INT_32S);
09003         dt_list_O_2->insert(DT_COND);
09004         dt_list_O_2->insert(DT_BOOL);
09005         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
09006         reg_list_O_2->insert(R_EAX);
09007         reg_list_O_2->insert(R_EBX);
09008         reg_list_O_2->insert(R_ECX);
09009         reg_list_O_2->insert(R_EDX);
09010         reg_list_O_2->insert(R_EDI);
09011         reg_list_O_2->insert(R_ESI);
09012         reg_list_O_2->insert(R_AX);
09013         reg_list_O_2->insert(R_BX);
09014         reg_list_O_2->insert(R_CX);
09015         reg_list_O_2->insert(R_DX);
09016         reg_list_O_2->insert(R_DI);
09017         reg_list_O_2->insert(R_SI);
09018         reg_list_O_2->insert(R_AL);
09019         reg_list_O_2->insert(R_AH);
09020         reg_list_O_2->insert(R_BL);
09021         reg_list_O_2->insert(R_BH);
09022         reg_list_O_2->insert(R_CL);
09023         reg_list_O_2->insert(R_CH);
09024         reg_list_O_2->insert(R_DL);
09025         reg_list_O_2->insert(R_DH);
09026         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
09027         out_operands->push_back(op_O_2);
09028 
09029         //execution info
09030         einfo = execution_info::create(15);
09031 
09032         //properties
09033 
09034         //versions
09035 
09036 
09037         //return target pseudoinstruction
09038         return tm_instr::create(INSTRUCTION_POP__1,in_operands,out_operands,lstring("pop $O_2"), props,versions,IF_SYS,einfo);
09039 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_PROLOGUE__1 (  ) 

Definition at line 9219 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, IF_SYS, INSTRUCTION_PROLOGUE__1, O_1, O_2, O_3, lestes::md::registers::R_EBX, lestes::md::registers::R_EDI, and lestes::md::registers::R_ESI.

Referenced by lestes::md::instructions::tm_instr::instance().

09219                                                         {
09220         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09221         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09222         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09223         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09224         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09225         ptr<execution_info> einfo;
09226         ptr<set<ulint> > versions;
09227         
09228         //input operands
09229 
09230         //output operands
09231         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
09232         dt_list_O_1->insert(DT_INT_8P);
09233         dt_list_O_1->insert(DT_INT_8U);
09234         dt_list_O_1->insert(DT_INT_8S);
09235         dt_list_O_1->insert(DT_INT_16U);
09236         dt_list_O_1->insert(DT_INT_16S);
09237         dt_list_O_1->insert(DT_INT_32U);
09238         dt_list_O_1->insert(DT_INT_32S);
09239         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
09240         reg_list_O_1->insert(R_EDI);
09241         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
09242         out_operands->push_back(op_O_1);
09243         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
09244         dt_list_O_2->insert(DT_INT_8P);
09245         dt_list_O_2->insert(DT_INT_8U);
09246         dt_list_O_2->insert(DT_INT_8S);
09247         dt_list_O_2->insert(DT_INT_16U);
09248         dt_list_O_2->insert(DT_INT_16S);
09249         dt_list_O_2->insert(DT_INT_32U);
09250         dt_list_O_2->insert(DT_INT_32S);
09251         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
09252         reg_list_O_2->insert(R_ESI);
09253         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
09254         out_operands->push_back(op_O_2);
09255         ptr<set<tm_data_type_base::id_type> > dt_list_O_3 = set<tm_data_type_base::id_type>::create();
09256         dt_list_O_3->insert(DT_INT_8P);
09257         dt_list_O_3->insert(DT_INT_8U);
09258         dt_list_O_3->insert(DT_INT_8S);
09259         dt_list_O_3->insert(DT_INT_16U);
09260         dt_list_O_3->insert(DT_INT_16S);
09261         dt_list_O_3->insert(DT_INT_32U);
09262         dt_list_O_3->insert(DT_INT_32S);
09263         ptr<set<tm_register_base::id_type> > reg_list_O_3 = set<tm_register_base::id_type>::create();
09264         reg_list_O_3->insert(R_EBX);
09265         ptr<tm_instr_op_reg> op_O_3 = tm_instr_op_reg::create(O_3, dt_list_O_3, reg_list_O_3);
09266         out_operands->push_back(op_O_3);
09267 
09268         //execution info
09269         einfo = execution_info::create(0);
09270 
09271         //properties
09272 
09273         //versions
09274 
09275 
09276         //return target pseudoinstruction
09277         return tm_instr::create(INSTRUCTION_PROLOGUE__1,in_operands,out_operands,lstring(""), props,versions,IF_SYS,einfo);
09278 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_PUSH__1 (  ) 

Definition at line 8801 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, I_1, I_2, IF_STORE, IF_SYS, INSTRUCTION_PUSH__1, INSTRUCTION_PUSH__2, INSTRUCTION_PUSH__3, O_1, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

08801                                                     {
08802         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08803         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08804         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08805         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08806         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08807         ptr<execution_info> einfo;
08808         ptr<set<ulint> > versions;
08809         
08810         //input operands
08811         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08812         dt_list_I_1->insert(DT_INT_32U);
08813         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08814         reg_list_I_1->insert(R_ESP);
08815         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08816         op_I_1->destroyed_by_get()->push_back(O_1);
08817         in_operands->push_back(op_I_1);
08818         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
08819         dt_list_I_2->insert(DT_INT_32U);
08820         dt_list_I_2->insert(DT_INT_32S);
08821         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
08822         in_operands->push_back(op_I_2);
08823 
08824         //output operands
08825         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08826         dt_list_O_1->insert(DT_INT_32U);
08827         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08828         reg_list_O_1->insert(R_ESP);
08829         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08830         op_O_1->destroys_set(I_1);
08831         out_operands->push_back(op_O_1);
08832 
08833         //execution info
08834         einfo = execution_info::create(15);
08835 
08836         //properties
08837 
08838         //versions
08839         versions = set<ulint>::create();
08840         versions->insert(INSTRUCTION_PUSH__2);
08841         versions->insert(INSTRUCTION_PUSH__3);
08842 
08843 
08844         //return target pseudoinstruction
08845         return tm_instr::create(INSTRUCTION_PUSH__1,in_operands,out_operands,lstring("push $TYPE_I_2 $I_2"), props,versions,IF_STORE | IF_SYS,einfo);
08846 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_PUSH__2 (  ) 

Definition at line 8848 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, I_1, I_2, IF_STORE, IF_SYS, INSTRUCTION_PUSH__1, INSTRUCTION_PUSH__2, INSTRUCTION_PUSH__3, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, lestes::md::registers::R_ESP, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

08848                                                     {
08849         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08850         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08851         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08852         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08853         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08854         ptr<execution_info> einfo;
08855         ptr<set<ulint> > versions;
08856         
08857         //input operands
08858         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08859         dt_list_I_1->insert(DT_INT_32U);
08860         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08861         reg_list_I_1->insert(R_ESP);
08862         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08863         op_I_1->destroyed_by_get()->push_back(O_1);
08864         in_operands->push_back(op_I_1);
08865         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
08866         dt_list_I_2->insert(DT_INT_32U);
08867         dt_list_I_2->insert(DT_INT_32S);
08868         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
08869         reg_list_I_2->insert(R_EAX);
08870         reg_list_I_2->insert(R_EBX);
08871         reg_list_I_2->insert(R_ECX);
08872         reg_list_I_2->insert(R_EDX);
08873         reg_list_I_2->insert(R_EDI);
08874         reg_list_I_2->insert(R_ESI);
08875         reg_list_I_2->insert(R_AX);
08876         reg_list_I_2->insert(R_BX);
08877         reg_list_I_2->insert(R_CX);
08878         reg_list_I_2->insert(R_DX);
08879         reg_list_I_2->insert(R_DI);
08880         reg_list_I_2->insert(R_SI);
08881         reg_list_I_2->insert(R_AL);
08882         reg_list_I_2->insert(R_AH);
08883         reg_list_I_2->insert(R_BL);
08884         reg_list_I_2->insert(R_BH);
08885         reg_list_I_2->insert(R_CL);
08886         reg_list_I_2->insert(R_CH);
08887         reg_list_I_2->insert(R_DL);
08888         reg_list_I_2->insert(R_DH);
08889         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
08890         in_operands->push_back(op_I_2);
08891 
08892         //output operands
08893         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08894         dt_list_O_1->insert(DT_INT_32U);
08895         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08896         reg_list_O_1->insert(R_ESP);
08897         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08898         op_O_1->destroys_set(I_1);
08899         out_operands->push_back(op_O_1);
08900 
08901         //execution info
08902         einfo = execution_info::create(15);
08903 
08904         //properties
08905 
08906         //versions
08907         versions = set<ulint>::create();
08908         versions->insert(INSTRUCTION_PUSH__1);
08909         versions->insert(INSTRUCTION_PUSH__3);
08910 
08911 
08912         //return target pseudoinstruction
08913         return tm_instr::create(INSTRUCTION_PUSH__2,in_operands,out_operands,lstring("push $I_2"), props,versions,IF_STORE | IF_SYS,einfo);
08914 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_PUSH__3 (  ) 

Definition at line 8916 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, IF_STORE, IF_SYS, INSTRUCTION_PUSH__1, INSTRUCTION_PUSH__2, INSTRUCTION_PUSH__3, O_1, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

08916                                                     {
08917         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08918         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08919         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08920         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08921         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08922         ptr<execution_info> einfo;
08923         ptr<set<ulint> > versions;
08924         
08925         //input operands
08926         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08927         dt_list_I_1->insert(DT_INT_32U);
08928         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08929         reg_list_I_1->insert(R_ESP);
08930         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08931         op_I_1->destroyed_by_get()->push_back(O_1);
08932         in_operands->push_back(op_I_1);
08933         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
08934         dt_list_I_2->insert(DT_INT_8P);
08935         dt_list_I_2->insert(DT_INT_8U);
08936         dt_list_I_2->insert(DT_INT_8S);
08937         dt_list_I_2->insert(DT_INT_16U);
08938         dt_list_I_2->insert(DT_INT_16S);
08939         dt_list_I_2->insert(DT_INT_32U);
08940         dt_list_I_2->insert(DT_INT_32S);
08941         dt_list_I_2->insert(DT_BOOL);
08942         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
08943         in_operands->push_back(op_I_2);
08944 
08945         //output operands
08946         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08947         dt_list_O_1->insert(DT_INT_32U);
08948         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08949         reg_list_O_1->insert(R_ESP);
08950         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08951         op_O_1->destroys_set(I_1);
08952         out_operands->push_back(op_O_1);
08953 
08954         //execution info
08955         einfo = execution_info::create(15);
08956 
08957         //properties
08958 
08959         //versions
08960         versions = set<ulint>::create();
08961         versions->insert(INSTRUCTION_PUSH__1);
08962         versions->insert(INSTRUCTION_PUSH__2);
08963 
08964 
08965         //return target pseudoinstruction
08966         return tm_instr::create(INSTRUCTION_PUSH__3,in_operands,out_operands,lstring("push DWORD $I_2"), props,versions,IF_STORE | IF_SYS,einfo);
08967 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_RET__1 (  ) 

Definition at line 9366 of file tm_instr.mdg.cc.

References IF_SYS, and INSTRUCTION_RET__1.

Referenced by lestes::md::instructions::tm_instr::instance().

09366                                                    {
09367         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
09368         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
09369         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
09370         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
09371         ptr<set<tm_data_type_base::id_type> > allowed_types; 
09372         ptr<execution_info> einfo;
09373         ptr<set<ulint> > versions;
09374         
09375         //input operands
09376 
09377         //output operands
09378 
09379         //execution info
09380         einfo = execution_info::create(80);
09381 
09382         //properties
09383 
09384         //versions
09385 
09386 
09387         //return target pseudoinstruction
09388         return tm_instr::create(INSTRUCTION_RET__1,in_operands,out_operands,lstring("ret"), props,versions,IF_SYS,einfo);
09389 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SAHF__1 (  ) 

Definition at line 890 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, I_1, INSTRUCTION_SAHF__1, O_1, lestes::md::registers::R_AH, and lestes::md::registers::R_COND.

Referenced by lestes::md::instructions::tm_instr::instance().

00890                                                     {
00891         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00892         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00893         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00894         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00895         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00896         ptr<execution_info> einfo;
00897         ptr<set<ulint> > versions;
00898         
00899         //input operands
00900         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00901         dt_list_I_1->insert(DT_COND);
00902         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00903         reg_list_I_1->insert(R_AH);
00904         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00905         in_operands->push_back(op_I_1);
00906 
00907         //output operands
00908         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00909         dt_list_O_1->insert(DT_COND);
00910         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00911         reg_list_O_1->insert(R_COND);
00912         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00913         out_operands->push_back(op_O_1);
00914 
00915         //execution info
00916         einfo = execution_info::create(10);
00917 
00918         //properties
00919 
00920         //versions
00921 
00922 
00923         //return target pseudoinstruction
00924         return tm_instr::create(INSTRUCTION_SAHF__1,in_operands,out_operands,lstring("sahf"), props,versions,0,einfo);
00925 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SAL__1 (  ) 

Definition at line 4337 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SAL__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04337                                                    {
04338         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04339         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04340         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04341         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04342         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04343         ptr<execution_info> einfo;
04344         ptr<set<ulint> > versions;
04345         
04346         //input operands
04347         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04348         dt_list_I_1->insert(DT_INT_8P);
04349         dt_list_I_1->insert(DT_INT_8U);
04350         dt_list_I_1->insert(DT_INT_8S);
04351         dt_list_I_1->insert(DT_INT_16U);
04352         dt_list_I_1->insert(DT_INT_16S);
04353         dt_list_I_1->insert(DT_INT_32U);
04354         dt_list_I_1->insert(DT_INT_32S);
04355         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04356         reg_list_I_1->insert(R_EAX);
04357         reg_list_I_1->insert(R_EBX);
04358         reg_list_I_1->insert(R_ECX);
04359         reg_list_I_1->insert(R_EDX);
04360         reg_list_I_1->insert(R_EDI);
04361         reg_list_I_1->insert(R_ESI);
04362         reg_list_I_1->insert(R_AX);
04363         reg_list_I_1->insert(R_BX);
04364         reg_list_I_1->insert(R_CX);
04365         reg_list_I_1->insert(R_DX);
04366         reg_list_I_1->insert(R_DI);
04367         reg_list_I_1->insert(R_SI);
04368         reg_list_I_1->insert(R_AL);
04369         reg_list_I_1->insert(R_AH);
04370         reg_list_I_1->insert(R_BL);
04371         reg_list_I_1->insert(R_BH);
04372         reg_list_I_1->insert(R_CL);
04373         reg_list_I_1->insert(R_CH);
04374         reg_list_I_1->insert(R_DL);
04375         reg_list_I_1->insert(R_DH);
04376         reg_list_I_1->erase(R_CL);
04377         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04378         op_I_1->destroyed_by_get()->push_back(O_1);
04379         in_operands->push_back(op_I_1);
04380         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04381         dt_list_I_2->insert(DT_INT_8P);
04382         dt_list_I_2->insert(DT_INT_8U);
04383         dt_list_I_2->insert(DT_INT_8S);
04384         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04385         reg_list_I_2->insert(R_CL);
04386         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04387         in_operands->push_back(op_I_2);
04388 
04389         //output operands
04390         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04391         dt_list_O_1->insert(DT_INT_8P);
04392         dt_list_O_1->insert(DT_INT_8U);
04393         dt_list_O_1->insert(DT_INT_8S);
04394         dt_list_O_1->insert(DT_INT_16U);
04395         dt_list_O_1->insert(DT_INT_16S);
04396         dt_list_O_1->insert(DT_INT_32U);
04397         dt_list_O_1->insert(DT_INT_32S);
04398         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04399         reg_list_O_1->insert(R_EAX);
04400         reg_list_O_1->insert(R_EBX);
04401         reg_list_O_1->insert(R_ECX);
04402         reg_list_O_1->insert(R_EDX);
04403         reg_list_O_1->insert(R_EDI);
04404         reg_list_O_1->insert(R_ESI);
04405         reg_list_O_1->insert(R_AX);
04406         reg_list_O_1->insert(R_BX);
04407         reg_list_O_1->insert(R_CX);
04408         reg_list_O_1->insert(R_DX);
04409         reg_list_O_1->insert(R_DI);
04410         reg_list_O_1->insert(R_SI);
04411         reg_list_O_1->insert(R_AL);
04412         reg_list_O_1->insert(R_AH);
04413         reg_list_O_1->insert(R_BL);
04414         reg_list_O_1->insert(R_BH);
04415         reg_list_O_1->insert(R_CL);
04416         reg_list_O_1->insert(R_CH);
04417         reg_list_O_1->insert(R_DL);
04418         reg_list_O_1->insert(R_DH);
04419         reg_list_O_1->erase(R_CL);
04420         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04421         op_O_1->destroys_set(I_1);
04422         out_operands->push_back(op_O_1);
04423         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04424         dt_list_O_2->insert(DT_COND);
04425         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04426         reg_list_O_2->insert(R_COND);
04427         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04428         out_operands->push_back(op_O_2);
04429 
04430         //execution info
04431         einfo = execution_info::create(10);
04432 
04433         //properties
04434 
04435         //versions
04436 
04437 
04438         //return target pseudoinstruction
04439         return tm_instr::create(INSTRUCTION_SAL__1,in_operands,out_operands,lstring("sal $I_1, $I_2"), props,versions,0,einfo);
04440 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SAR__1 (  ) 

Definition at line 4442 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SAR__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04442                                                    {
04443         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04444         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04445         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04446         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04447         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04448         ptr<execution_info> einfo;
04449         ptr<set<ulint> > versions;
04450         
04451         //input operands
04452         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04453         dt_list_I_1->insert(DT_INT_8P);
04454         dt_list_I_1->insert(DT_INT_8U);
04455         dt_list_I_1->insert(DT_INT_8S);
04456         dt_list_I_1->insert(DT_INT_16U);
04457         dt_list_I_1->insert(DT_INT_16S);
04458         dt_list_I_1->insert(DT_INT_32U);
04459         dt_list_I_1->insert(DT_INT_32S);
04460         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04461         reg_list_I_1->insert(R_EAX);
04462         reg_list_I_1->insert(R_EBX);
04463         reg_list_I_1->insert(R_ECX);
04464         reg_list_I_1->insert(R_EDX);
04465         reg_list_I_1->insert(R_EDI);
04466         reg_list_I_1->insert(R_ESI);
04467         reg_list_I_1->insert(R_AX);
04468         reg_list_I_1->insert(R_BX);
04469         reg_list_I_1->insert(R_CX);
04470         reg_list_I_1->insert(R_DX);
04471         reg_list_I_1->insert(R_DI);
04472         reg_list_I_1->insert(R_SI);
04473         reg_list_I_1->insert(R_AL);
04474         reg_list_I_1->insert(R_AH);
04475         reg_list_I_1->insert(R_BL);
04476         reg_list_I_1->insert(R_BH);
04477         reg_list_I_1->insert(R_CL);
04478         reg_list_I_1->insert(R_CH);
04479         reg_list_I_1->insert(R_DL);
04480         reg_list_I_1->insert(R_DH);
04481         reg_list_I_1->erase(R_CL);
04482         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04483         op_I_1->destroyed_by_get()->push_back(O_1);
04484         in_operands->push_back(op_I_1);
04485         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04486         dt_list_I_2->insert(DT_INT_8P);
04487         dt_list_I_2->insert(DT_INT_8U);
04488         dt_list_I_2->insert(DT_INT_8S);
04489         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04490         reg_list_I_2->insert(R_CL);
04491         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04492         in_operands->push_back(op_I_2);
04493 
04494         //output operands
04495         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04496         dt_list_O_1->insert(DT_INT_8P);
04497         dt_list_O_1->insert(DT_INT_8U);
04498         dt_list_O_1->insert(DT_INT_8S);
04499         dt_list_O_1->insert(DT_INT_16U);
04500         dt_list_O_1->insert(DT_INT_16S);
04501         dt_list_O_1->insert(DT_INT_32U);
04502         dt_list_O_1->insert(DT_INT_32S);
04503         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04504         reg_list_O_1->insert(R_EAX);
04505         reg_list_O_1->insert(R_EBX);
04506         reg_list_O_1->insert(R_ECX);
04507         reg_list_O_1->insert(R_EDX);
04508         reg_list_O_1->insert(R_EDI);
04509         reg_list_O_1->insert(R_ESI);
04510         reg_list_O_1->insert(R_AX);
04511         reg_list_O_1->insert(R_BX);
04512         reg_list_O_1->insert(R_CX);
04513         reg_list_O_1->insert(R_DX);
04514         reg_list_O_1->insert(R_DI);
04515         reg_list_O_1->insert(R_SI);
04516         reg_list_O_1->insert(R_AL);
04517         reg_list_O_1->insert(R_AH);
04518         reg_list_O_1->insert(R_BL);
04519         reg_list_O_1->insert(R_BH);
04520         reg_list_O_1->insert(R_CL);
04521         reg_list_O_1->insert(R_CH);
04522         reg_list_O_1->insert(R_DL);
04523         reg_list_O_1->insert(R_DH);
04524         reg_list_O_1->erase(R_CL);
04525         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04526         op_O_1->destroys_set(I_1);
04527         out_operands->push_back(op_O_1);
04528         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04529         dt_list_O_2->insert(DT_COND);
04530         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04531         reg_list_O_2->insert(R_COND);
04532         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04533         out_operands->push_back(op_O_2);
04534 
04535         //execution info
04536         einfo = execution_info::create(10);
04537 
04538         //properties
04539 
04540         //versions
04541 
04542 
04543         //return target pseudoinstruction
04544         return tm_instr::create(INSTRUCTION_SAR__1,in_operands,out_operands,lstring("sar $I_1, $I_2"), props,versions,0,einfo);
04545 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETA__1 (  ) 

Definition at line 8355 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETA__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08355                                                     {
08356         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08357         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08358         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08359         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08360         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08361         ptr<execution_info> einfo;
08362         ptr<set<ulint> > versions;
08363         
08364         //input operands
08365         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08366         dt_list_I_1->insert(DT_COND);
08367         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08368         reg_list_I_1->insert(R_COND);
08369         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08370         in_operands->push_back(op_I_1);
08371 
08372         //output operands
08373         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08374         dt_list_O_1->insert(DT_BOOL);
08375         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08376         reg_list_O_1->insert(R_AL);
08377         reg_list_O_1->insert(R_AH);
08378         reg_list_O_1->insert(R_BL);
08379         reg_list_O_1->insert(R_BH);
08380         reg_list_O_1->insert(R_CL);
08381         reg_list_O_1->insert(R_CH);
08382         reg_list_O_1->insert(R_DL);
08383         reg_list_O_1->insert(R_DH);
08384         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08385         out_operands->push_back(op_O_1);
08386 
08387         //execution info
08388         einfo = execution_info::create(50);
08389 
08390         //properties
08391         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08392 
08393         //versions
08394 
08395 
08396         //return target pseudoinstruction
08397         return tm_instr::create(INSTRUCTION_SETA__1,in_operands,out_operands,lstring("seta $O_1"), props,versions,0,einfo);
08398 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETB__1 (  ) 

Definition at line 8445 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETB__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08445                                                     {
08446         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08447         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08448         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08449         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08450         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08451         ptr<execution_info> einfo;
08452         ptr<set<ulint> > versions;
08453         
08454         //input operands
08455         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08456         dt_list_I_1->insert(DT_COND);
08457         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08458         reg_list_I_1->insert(R_COND);
08459         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08460         in_operands->push_back(op_I_1);
08461 
08462         //output operands
08463         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08464         dt_list_O_1->insert(DT_BOOL);
08465         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08466         reg_list_O_1->insert(R_AL);
08467         reg_list_O_1->insert(R_AH);
08468         reg_list_O_1->insert(R_BL);
08469         reg_list_O_1->insert(R_BH);
08470         reg_list_O_1->insert(R_CL);
08471         reg_list_O_1->insert(R_CH);
08472         reg_list_O_1->insert(R_DL);
08473         reg_list_O_1->insert(R_DH);
08474         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08475         out_operands->push_back(op_O_1);
08476 
08477         //execution info
08478         einfo = execution_info::create(50);
08479 
08480         //properties
08481         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08482 
08483         //versions
08484 
08485 
08486         //return target pseudoinstruction
08487         return tm_instr::create(INSTRUCTION_SETB__1,in_operands,out_operands,lstring("setb $O_1"), props,versions,0,einfo);
08488 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETE__1 (  ) 

Definition at line 8490 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETE__1, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08490                                                     {
08491         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08492         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08493         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08494         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08495         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08496         ptr<execution_info> einfo;
08497         ptr<set<ulint> > versions;
08498         
08499         //input operands
08500         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08501         dt_list_I_1->insert(DT_COND);
08502         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08503         reg_list_I_1->insert(R_COND);
08504         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08505         in_operands->push_back(op_I_1);
08506 
08507         //output operands
08508         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08509         dt_list_O_1->insert(DT_BOOL);
08510         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08511         reg_list_O_1->insert(R_AL);
08512         reg_list_O_1->insert(R_AH);
08513         reg_list_O_1->insert(R_BL);
08514         reg_list_O_1->insert(R_BH);
08515         reg_list_O_1->insert(R_CL);
08516         reg_list_O_1->insert(R_CH);
08517         reg_list_O_1->insert(R_DL);
08518         reg_list_O_1->insert(R_DH);
08519         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08520         out_operands->push_back(op_O_1);
08521 
08522         //execution info
08523         einfo = execution_info::create(50);
08524 
08525         //properties
08526 
08527         //versions
08528 
08529 
08530         //return target pseudoinstruction
08531         return tm_instr::create(INSTRUCTION_SETE__1,in_operands,out_operands,lstring("sete $O_1"), props,versions,0,einfo);
08532 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETG__1 (  ) 

Definition at line 8310 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETG__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08310                                                     {
08311         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08312         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08313         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08314         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08315         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08316         ptr<execution_info> einfo;
08317         ptr<set<ulint> > versions;
08318         
08319         //input operands
08320         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08321         dt_list_I_1->insert(DT_COND);
08322         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08323         reg_list_I_1->insert(R_COND);
08324         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08325         in_operands->push_back(op_I_1);
08326 
08327         //output operands
08328         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08329         dt_list_O_1->insert(DT_BOOL);
08330         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08331         reg_list_O_1->insert(R_AL);
08332         reg_list_O_1->insert(R_AH);
08333         reg_list_O_1->insert(R_BL);
08334         reg_list_O_1->insert(R_BH);
08335         reg_list_O_1->insert(R_CL);
08336         reg_list_O_1->insert(R_CH);
08337         reg_list_O_1->insert(R_DL);
08338         reg_list_O_1->insert(R_DH);
08339         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08340         out_operands->push_back(op_O_1);
08341 
08342         //execution info
08343         einfo = execution_info::create(50);
08344 
08345         //properties
08346         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08347 
08348         //versions
08349 
08350 
08351         //return target pseudoinstruction
08352         return tm_instr::create(INSTRUCTION_SETG__1,in_operands,out_operands,lstring("setg $O_1"), props,versions,0,einfo);
08353 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETL__1 (  ) 

Definition at line 8400 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETL__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08400                                                     {
08401         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08402         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08403         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08404         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08405         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08406         ptr<execution_info> einfo;
08407         ptr<set<ulint> > versions;
08408         
08409         //input operands
08410         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08411         dt_list_I_1->insert(DT_COND);
08412         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08413         reg_list_I_1->insert(R_COND);
08414         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08415         in_operands->push_back(op_I_1);
08416 
08417         //output operands
08418         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08419         dt_list_O_1->insert(DT_BOOL);
08420         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08421         reg_list_O_1->insert(R_AL);
08422         reg_list_O_1->insert(R_AH);
08423         reg_list_O_1->insert(R_BL);
08424         reg_list_O_1->insert(R_BH);
08425         reg_list_O_1->insert(R_CL);
08426         reg_list_O_1->insert(R_CH);
08427         reg_list_O_1->insert(R_DL);
08428         reg_list_O_1->insert(R_DH);
08429         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08430         out_operands->push_back(op_O_1);
08431 
08432         //execution info
08433         einfo = execution_info::create(50);
08434 
08435         //properties
08436         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08437 
08438         //versions
08439 
08440 
08441         //return target pseudoinstruction
08442         return tm_instr::create(INSTRUCTION_SETL__1,in_operands,out_operands,lstring("setl $O_1"), props,versions,0,einfo);
08443 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNA__1 (  ) 

Definition at line 8579 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNA__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08579                                                      {
08580         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08581         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08582         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08583         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08584         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08585         ptr<execution_info> einfo;
08586         ptr<set<ulint> > versions;
08587         
08588         //input operands
08589         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08590         dt_list_I_1->insert(DT_COND);
08591         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08592         reg_list_I_1->insert(R_COND);
08593         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08594         in_operands->push_back(op_I_1);
08595 
08596         //output operands
08597         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08598         dt_list_O_1->insert(DT_BOOL);
08599         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08600         reg_list_O_1->insert(R_AL);
08601         reg_list_O_1->insert(R_AH);
08602         reg_list_O_1->insert(R_BL);
08603         reg_list_O_1->insert(R_BH);
08604         reg_list_O_1->insert(R_CL);
08605         reg_list_O_1->insert(R_CH);
08606         reg_list_O_1->insert(R_DL);
08607         reg_list_O_1->insert(R_DH);
08608         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08609         out_operands->push_back(op_O_1);
08610 
08611         //execution info
08612         einfo = execution_info::create(50);
08613 
08614         //properties
08615         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"false"));
08616 
08617         //versions
08618 
08619 
08620         //return target pseudoinstruction
08621         return tm_instr::create(INSTRUCTION_SETNA__1,in_operands,out_operands,lstring("setna $O_1"), props,versions,0,einfo);
08622 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNB__1 (  ) 

Definition at line 8669 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNB__1, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08669                                                      {
08670         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08671         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08672         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08673         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08674         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08675         ptr<execution_info> einfo;
08676         ptr<set<ulint> > versions;
08677         
08678         //input operands
08679         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08680         dt_list_I_1->insert(DT_COND);
08681         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08682         reg_list_I_1->insert(R_COND);
08683         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08684         in_operands->push_back(op_I_1);
08685 
08686         //output operands
08687         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08688         dt_list_O_1->insert(DT_BOOL);
08689         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08690         reg_list_O_1->insert(R_AL);
08691         reg_list_O_1->insert(R_AH);
08692         reg_list_O_1->insert(R_BL);
08693         reg_list_O_1->insert(R_BH);
08694         reg_list_O_1->insert(R_CL);
08695         reg_list_O_1->insert(R_CH);
08696         reg_list_O_1->insert(R_DL);
08697         reg_list_O_1->insert(R_DH);
08698         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08699         out_operands->push_back(op_O_1);
08700 
08701         //execution info
08702         einfo = execution_info::create(50);
08703 
08704         //properties
08705 
08706         //versions
08707 
08708 
08709         //return target pseudoinstruction
08710         return tm_instr::create(INSTRUCTION_SETNB__1,in_operands,out_operands,lstring("setnb $O_1"), props,versions,0,einfo);
08711 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNE__1 (  ) 

Definition at line 8713 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNE__1, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08713                                                      {
08714         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08715         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08716         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08717         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08718         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08719         ptr<execution_info> einfo;
08720         ptr<set<ulint> > versions;
08721         
08722         //input operands
08723         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08724         dt_list_I_1->insert(DT_COND);
08725         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08726         reg_list_I_1->insert(R_COND);
08727         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08728         in_operands->push_back(op_I_1);
08729 
08730         //output operands
08731         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08732         dt_list_O_1->insert(DT_BOOL);
08733         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08734         reg_list_O_1->insert(R_AL);
08735         reg_list_O_1->insert(R_AH);
08736         reg_list_O_1->insert(R_BL);
08737         reg_list_O_1->insert(R_BH);
08738         reg_list_O_1->insert(R_CL);
08739         reg_list_O_1->insert(R_CH);
08740         reg_list_O_1->insert(R_DL);
08741         reg_list_O_1->insert(R_DH);
08742         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08743         out_operands->push_back(op_O_1);
08744 
08745         //execution info
08746         einfo = execution_info::create(50);
08747 
08748         //properties
08749 
08750         //versions
08751 
08752 
08753         //return target pseudoinstruction
08754         return tm_instr::create(INSTRUCTION_SETNE__1,in_operands,out_operands,lstring("setne $O_1"), props,versions,0,einfo);
08755 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNG__1 (  ) 

Definition at line 8534 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNG__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08534                                                      {
08535         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08536         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08537         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08538         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08539         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08540         ptr<execution_info> einfo;
08541         ptr<set<ulint> > versions;
08542         
08543         //input operands
08544         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08545         dt_list_I_1->insert(DT_COND);
08546         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08547         reg_list_I_1->insert(R_COND);
08548         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08549         in_operands->push_back(op_I_1);
08550 
08551         //output operands
08552         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08553         dt_list_O_1->insert(DT_BOOL);
08554         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08555         reg_list_O_1->insert(R_AL);
08556         reg_list_O_1->insert(R_AH);
08557         reg_list_O_1->insert(R_BL);
08558         reg_list_O_1->insert(R_BH);
08559         reg_list_O_1->insert(R_CL);
08560         reg_list_O_1->insert(R_CH);
08561         reg_list_O_1->insert(R_DL);
08562         reg_list_O_1->insert(R_DH);
08563         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08564         out_operands->push_back(op_O_1);
08565 
08566         //execution info
08567         einfo = execution_info::create(50);
08568 
08569         //properties
08570         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08571 
08572         //versions
08573 
08574 
08575         //return target pseudoinstruction
08576         return tm_instr::create(INSTRUCTION_SETNG__1,in_operands,out_operands,lstring("setng $O_1"), props,versions,0,einfo);
08577 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNL__1 (  ) 

Definition at line 8624 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNL__1, O_1, PROPERTY_TEST_SIGNED, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08624                                                      {
08625         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08626         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08627         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08628         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08629         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08630         ptr<execution_info> einfo;
08631         ptr<set<ulint> > versions;
08632         
08633         //input operands
08634         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08635         dt_list_I_1->insert(DT_COND);
08636         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08637         reg_list_I_1->insert(R_COND);
08638         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08639         in_operands->push_back(op_I_1);
08640 
08641         //output operands
08642         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08643         dt_list_O_1->insert(DT_BOOL);
08644         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08645         reg_list_O_1->insert(R_AL);
08646         reg_list_O_1->insert(R_AH);
08647         reg_list_O_1->insert(R_BL);
08648         reg_list_O_1->insert(R_BH);
08649         reg_list_O_1->insert(R_CL);
08650         reg_list_O_1->insert(R_CH);
08651         reg_list_O_1->insert(R_DL);
08652         reg_list_O_1->insert(R_DH);
08653         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08654         out_operands->push_back(op_O_1);
08655 
08656         //execution info
08657         einfo = execution_info::create(50);
08658 
08659         //properties
08660         props->insert(::std::pair<ulint, lstring>(PROPERTY_TEST_SIGNED,"true"));
08661 
08662         //versions
08663 
08664 
08665         //return target pseudoinstruction
08666         return tm_instr::create(INSTRUCTION_SETNL__1,in_operands,out_operands,lstring("setnl $O_1"), props,versions,0,einfo);
08667 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SETNZ__1 (  ) 

Definition at line 8757 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, I_1, INSTRUCTION_SETNZ__1, O_1, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_DH, and lestes::md::registers::R_DL.

Referenced by lestes::md::instructions::tm_instr::instance().

08757                                                      {
08758         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
08759         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
08760         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
08761         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
08762         ptr<set<tm_data_type_base::id_type> > allowed_types; 
08763         ptr<execution_info> einfo;
08764         ptr<set<ulint> > versions;
08765         
08766         //input operands
08767         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
08768         dt_list_I_1->insert(DT_COND);
08769         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
08770         reg_list_I_1->insert(R_COND);
08771         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
08772         in_operands->push_back(op_I_1);
08773 
08774         //output operands
08775         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
08776         dt_list_O_1->insert(DT_BOOL);
08777         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
08778         reg_list_O_1->insert(R_AL);
08779         reg_list_O_1->insert(R_AH);
08780         reg_list_O_1->insert(R_BL);
08781         reg_list_O_1->insert(R_BH);
08782         reg_list_O_1->insert(R_CL);
08783         reg_list_O_1->insert(R_CH);
08784         reg_list_O_1->insert(R_DL);
08785         reg_list_O_1->insert(R_DH);
08786         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
08787         out_operands->push_back(op_O_1);
08788 
08789         //execution info
08790         einfo = execution_info::create(50);
08791 
08792         //properties
08793 
08794         //versions
08795 
08796 
08797         //return target pseudoinstruction
08798         return tm_instr::create(INSTRUCTION_SETNZ__1,in_operands,out_operands,lstring("setnz $O_1"), props,versions,0,einfo);
08799 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SHL__1 (  ) 

Definition at line 4127 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SHL__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04127                                                    {
04128         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04129         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04130         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04131         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04132         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04133         ptr<execution_info> einfo;
04134         ptr<set<ulint> > versions;
04135         
04136         //input operands
04137         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04138         dt_list_I_1->insert(DT_INT_8P);
04139         dt_list_I_1->insert(DT_INT_8U);
04140         dt_list_I_1->insert(DT_INT_8S);
04141         dt_list_I_1->insert(DT_INT_16U);
04142         dt_list_I_1->insert(DT_INT_16S);
04143         dt_list_I_1->insert(DT_INT_32U);
04144         dt_list_I_1->insert(DT_INT_32S);
04145         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04146         reg_list_I_1->insert(R_EAX);
04147         reg_list_I_1->insert(R_EBX);
04148         reg_list_I_1->insert(R_ECX);
04149         reg_list_I_1->insert(R_EDX);
04150         reg_list_I_1->insert(R_EDI);
04151         reg_list_I_1->insert(R_ESI);
04152         reg_list_I_1->insert(R_AX);
04153         reg_list_I_1->insert(R_BX);
04154         reg_list_I_1->insert(R_CX);
04155         reg_list_I_1->insert(R_DX);
04156         reg_list_I_1->insert(R_DI);
04157         reg_list_I_1->insert(R_SI);
04158         reg_list_I_1->insert(R_AL);
04159         reg_list_I_1->insert(R_AH);
04160         reg_list_I_1->insert(R_BL);
04161         reg_list_I_1->insert(R_BH);
04162         reg_list_I_1->insert(R_CL);
04163         reg_list_I_1->insert(R_CH);
04164         reg_list_I_1->insert(R_DL);
04165         reg_list_I_1->insert(R_DH);
04166         reg_list_I_1->erase(R_CL);
04167         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04168         op_I_1->destroyed_by_get()->push_back(O_1);
04169         in_operands->push_back(op_I_1);
04170         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04171         dt_list_I_2->insert(DT_INT_8P);
04172         dt_list_I_2->insert(DT_INT_8U);
04173         dt_list_I_2->insert(DT_INT_8S);
04174         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04175         reg_list_I_2->insert(R_CL);
04176         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04177         in_operands->push_back(op_I_2);
04178 
04179         //output operands
04180         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04181         dt_list_O_1->insert(DT_INT_8P);
04182         dt_list_O_1->insert(DT_INT_8U);
04183         dt_list_O_1->insert(DT_INT_8S);
04184         dt_list_O_1->insert(DT_INT_16U);
04185         dt_list_O_1->insert(DT_INT_16S);
04186         dt_list_O_1->insert(DT_INT_32U);
04187         dt_list_O_1->insert(DT_INT_32S);
04188         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04189         reg_list_O_1->insert(R_EAX);
04190         reg_list_O_1->insert(R_EBX);
04191         reg_list_O_1->insert(R_ECX);
04192         reg_list_O_1->insert(R_EDX);
04193         reg_list_O_1->insert(R_EDI);
04194         reg_list_O_1->insert(R_ESI);
04195         reg_list_O_1->insert(R_AX);
04196         reg_list_O_1->insert(R_BX);
04197         reg_list_O_1->insert(R_CX);
04198         reg_list_O_1->insert(R_DX);
04199         reg_list_O_1->insert(R_DI);
04200         reg_list_O_1->insert(R_SI);
04201         reg_list_O_1->insert(R_AL);
04202         reg_list_O_1->insert(R_AH);
04203         reg_list_O_1->insert(R_BL);
04204         reg_list_O_1->insert(R_BH);
04205         reg_list_O_1->insert(R_CL);
04206         reg_list_O_1->insert(R_CH);
04207         reg_list_O_1->insert(R_DL);
04208         reg_list_O_1->insert(R_DH);
04209         reg_list_O_1->erase(R_CL);
04210         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04211         op_O_1->destroys_set(I_1);
04212         out_operands->push_back(op_O_1);
04213         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04214         dt_list_O_2->insert(DT_COND);
04215         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04216         reg_list_O_2->insert(R_COND);
04217         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04218         out_operands->push_back(op_O_2);
04219 
04220         //execution info
04221         einfo = execution_info::create(10);
04222 
04223         //properties
04224 
04225         //versions
04226 
04227 
04228         //return target pseudoinstruction
04229         return tm_instr::create(INSTRUCTION_SHL__1,in_operands,out_operands,lstring("shl $I_1, $I_2"), props,versions,0,einfo);
04230 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SHR__1 (  ) 

Definition at line 4232 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SHR__1, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

04232                                                    {
04233         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
04234         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
04235         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
04236         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
04237         ptr<set<tm_data_type_base::id_type> > allowed_types; 
04238         ptr<execution_info> einfo;
04239         ptr<set<ulint> > versions;
04240         
04241         //input operands
04242         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
04243         dt_list_I_1->insert(DT_INT_8P);
04244         dt_list_I_1->insert(DT_INT_8U);
04245         dt_list_I_1->insert(DT_INT_8S);
04246         dt_list_I_1->insert(DT_INT_16U);
04247         dt_list_I_1->insert(DT_INT_16S);
04248         dt_list_I_1->insert(DT_INT_32U);
04249         dt_list_I_1->insert(DT_INT_32S);
04250         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
04251         reg_list_I_1->insert(R_EAX);
04252         reg_list_I_1->insert(R_EBX);
04253         reg_list_I_1->insert(R_ECX);
04254         reg_list_I_1->insert(R_EDX);
04255         reg_list_I_1->insert(R_EDI);
04256         reg_list_I_1->insert(R_ESI);
04257         reg_list_I_1->insert(R_AX);
04258         reg_list_I_1->insert(R_BX);
04259         reg_list_I_1->insert(R_CX);
04260         reg_list_I_1->insert(R_DX);
04261         reg_list_I_1->insert(R_DI);
04262         reg_list_I_1->insert(R_SI);
04263         reg_list_I_1->insert(R_AL);
04264         reg_list_I_1->insert(R_AH);
04265         reg_list_I_1->insert(R_BL);
04266         reg_list_I_1->insert(R_BH);
04267         reg_list_I_1->insert(R_CL);
04268         reg_list_I_1->insert(R_CH);
04269         reg_list_I_1->insert(R_DL);
04270         reg_list_I_1->insert(R_DH);
04271         reg_list_I_1->erase(R_CL);
04272         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
04273         op_I_1->destroyed_by_get()->push_back(O_1);
04274         in_operands->push_back(op_I_1);
04275         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
04276         dt_list_I_2->insert(DT_INT_8P);
04277         dt_list_I_2->insert(DT_INT_8U);
04278         dt_list_I_2->insert(DT_INT_8S);
04279         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
04280         reg_list_I_2->insert(R_CL);
04281         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
04282         in_operands->push_back(op_I_2);
04283 
04284         //output operands
04285         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
04286         dt_list_O_1->insert(DT_INT_8P);
04287         dt_list_O_1->insert(DT_INT_8U);
04288         dt_list_O_1->insert(DT_INT_8S);
04289         dt_list_O_1->insert(DT_INT_16U);
04290         dt_list_O_1->insert(DT_INT_16S);
04291         dt_list_O_1->insert(DT_INT_32U);
04292         dt_list_O_1->insert(DT_INT_32S);
04293         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
04294         reg_list_O_1->insert(R_EAX);
04295         reg_list_O_1->insert(R_EBX);
04296         reg_list_O_1->insert(R_ECX);
04297         reg_list_O_1->insert(R_EDX);
04298         reg_list_O_1->insert(R_EDI);
04299         reg_list_O_1->insert(R_ESI);
04300         reg_list_O_1->insert(R_AX);
04301         reg_list_O_1->insert(R_BX);
04302         reg_list_O_1->insert(R_CX);
04303         reg_list_O_1->insert(R_DX);
04304         reg_list_O_1->insert(R_DI);
04305         reg_list_O_1->insert(R_SI);
04306         reg_list_O_1->insert(R_AL);
04307         reg_list_O_1->insert(R_AH);
04308         reg_list_O_1->insert(R_BL);
04309         reg_list_O_1->insert(R_BH);
04310         reg_list_O_1->insert(R_CL);
04311         reg_list_O_1->insert(R_CH);
04312         reg_list_O_1->insert(R_DL);
04313         reg_list_O_1->insert(R_DH);
04314         reg_list_O_1->erase(R_CL);
04315         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
04316         op_O_1->destroys_set(I_1);
04317         out_operands->push_back(op_O_1);
04318         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
04319         dt_list_O_2->insert(DT_COND);
04320         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
04321         reg_list_O_2->insert(R_COND);
04322         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
04323         out_operands->push_back(op_O_2);
04324 
04325         //execution info
04326         einfo = execution_info::create(10);
04327 
04328         //properties
04329 
04330         //versions
04331 
04332 
04333         //return target pseudoinstruction
04334         return tm_instr::create(INSTRUCTION_SHR__1,in_operands,out_operands,lstring("shr $I_1, $I_2"), props,versions,0,einfo);
04335 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SUB__1 (  ) 

Definition at line 1535 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SUB__1, INSTRUCTION_SUB__11, INSTRUCTION_SUB__12, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01535                                                    {
01536         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01537         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01538         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01539         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01540         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01541         ptr<execution_info> einfo;
01542         ptr<set<ulint> > versions;
01543         
01544         //input operands
01545         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01546         dt_list_I_1->insert(DT_INT_8P);
01547         dt_list_I_1->insert(DT_INT_8U);
01548         dt_list_I_1->insert(DT_INT_8S);
01549         dt_list_I_1->insert(DT_INT_16U);
01550         dt_list_I_1->insert(DT_INT_16S);
01551         dt_list_I_1->insert(DT_INT_32U);
01552         dt_list_I_1->insert(DT_INT_32S);
01553         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01554         reg_list_I_1->insert(R_EAX);
01555         reg_list_I_1->insert(R_EBX);
01556         reg_list_I_1->insert(R_ECX);
01557         reg_list_I_1->insert(R_EDX);
01558         reg_list_I_1->insert(R_EDI);
01559         reg_list_I_1->insert(R_ESI);
01560         reg_list_I_1->insert(R_AX);
01561         reg_list_I_1->insert(R_BX);
01562         reg_list_I_1->insert(R_CX);
01563         reg_list_I_1->insert(R_DX);
01564         reg_list_I_1->insert(R_DI);
01565         reg_list_I_1->insert(R_SI);
01566         reg_list_I_1->insert(R_AL);
01567         reg_list_I_1->insert(R_AH);
01568         reg_list_I_1->insert(R_BL);
01569         reg_list_I_1->insert(R_BH);
01570         reg_list_I_1->insert(R_CL);
01571         reg_list_I_1->insert(R_CH);
01572         reg_list_I_1->insert(R_DL);
01573         reg_list_I_1->insert(R_DH);
01574         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01575         op_I_1->destroyed_by_get()->push_back(O_1);
01576         in_operands->push_back(op_I_1);
01577         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01578         dt_list_I_2->insert(DT_INT_8P);
01579         dt_list_I_2->insert(DT_INT_8U);
01580         dt_list_I_2->insert(DT_INT_8S);
01581         dt_list_I_2->insert(DT_INT_16U);
01582         dt_list_I_2->insert(DT_INT_16S);
01583         dt_list_I_2->insert(DT_INT_32U);
01584         dt_list_I_2->insert(DT_INT_32S);
01585         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
01586         reg_list_I_2->insert(R_EAX);
01587         reg_list_I_2->insert(R_EBX);
01588         reg_list_I_2->insert(R_ECX);
01589         reg_list_I_2->insert(R_EDX);
01590         reg_list_I_2->insert(R_EDI);
01591         reg_list_I_2->insert(R_ESI);
01592         reg_list_I_2->insert(R_AX);
01593         reg_list_I_2->insert(R_BX);
01594         reg_list_I_2->insert(R_CX);
01595         reg_list_I_2->insert(R_DX);
01596         reg_list_I_2->insert(R_DI);
01597         reg_list_I_2->insert(R_SI);
01598         reg_list_I_2->insert(R_AL);
01599         reg_list_I_2->insert(R_AH);
01600         reg_list_I_2->insert(R_BL);
01601         reg_list_I_2->insert(R_BH);
01602         reg_list_I_2->insert(R_CL);
01603         reg_list_I_2->insert(R_CH);
01604         reg_list_I_2->insert(R_DL);
01605         reg_list_I_2->insert(R_DH);
01606         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
01607         in_operands->push_back(op_I_2);
01608 
01609         //output operands
01610         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01611         dt_list_O_1->insert(DT_INT_8P);
01612         dt_list_O_1->insert(DT_INT_8U);
01613         dt_list_O_1->insert(DT_INT_8S);
01614         dt_list_O_1->insert(DT_INT_16U);
01615         dt_list_O_1->insert(DT_INT_16S);
01616         dt_list_O_1->insert(DT_INT_32U);
01617         dt_list_O_1->insert(DT_INT_32S);
01618         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01619         reg_list_O_1->insert(R_EAX);
01620         reg_list_O_1->insert(R_EBX);
01621         reg_list_O_1->insert(R_ECX);
01622         reg_list_O_1->insert(R_EDX);
01623         reg_list_O_1->insert(R_EDI);
01624         reg_list_O_1->insert(R_ESI);
01625         reg_list_O_1->insert(R_AX);
01626         reg_list_O_1->insert(R_BX);
01627         reg_list_O_1->insert(R_CX);
01628         reg_list_O_1->insert(R_DX);
01629         reg_list_O_1->insert(R_DI);
01630         reg_list_O_1->insert(R_SI);
01631         reg_list_O_1->insert(R_AL);
01632         reg_list_O_1->insert(R_AH);
01633         reg_list_O_1->insert(R_BL);
01634         reg_list_O_1->insert(R_BH);
01635         reg_list_O_1->insert(R_CL);
01636         reg_list_O_1->insert(R_CH);
01637         reg_list_O_1->insert(R_DL);
01638         reg_list_O_1->insert(R_DH);
01639         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01640         op_O_1->destroys_set(I_1);
01641         out_operands->push_back(op_O_1);
01642         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01643         dt_list_O_2->insert(DT_COND);
01644         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01645         reg_list_O_2->insert(R_COND);
01646         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01647         out_operands->push_back(op_O_2);
01648 
01649         //execution info
01650         einfo = execution_info::create(10);
01651 
01652         //properties
01653 
01654         //versions
01655         versions = set<ulint>::create();
01656         versions->insert(INSTRUCTION_SUB__11);
01657         versions->insert(INSTRUCTION_SUB__12);
01658 
01659 
01660         //return target pseudoinstruction
01661         return tm_instr::create(INSTRUCTION_SUB__1,in_operands,out_operands,lstring("sub $O_1, $I_2"), props,versions,0,einfo);
01662 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SUB__11 (  ) 

Definition at line 1664 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SUB__1, INSTRUCTION_SUB__11, INSTRUCTION_SUB__12, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01664                                                     {
01665         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01666         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01667         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01668         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01669         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01670         ptr<execution_info> einfo;
01671         ptr<set<ulint> > versions;
01672         
01673         //input operands
01674         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01675         dt_list_I_1->insert(DT_INT_8P);
01676         dt_list_I_1->insert(DT_INT_8U);
01677         dt_list_I_1->insert(DT_INT_8S);
01678         dt_list_I_1->insert(DT_INT_16U);
01679         dt_list_I_1->insert(DT_INT_16S);
01680         dt_list_I_1->insert(DT_INT_32U);
01681         dt_list_I_1->insert(DT_INT_32S);
01682         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01683         reg_list_I_1->insert(R_EAX);
01684         reg_list_I_1->insert(R_EBX);
01685         reg_list_I_1->insert(R_ECX);
01686         reg_list_I_1->insert(R_EDX);
01687         reg_list_I_1->insert(R_EDI);
01688         reg_list_I_1->insert(R_ESI);
01689         reg_list_I_1->insert(R_AX);
01690         reg_list_I_1->insert(R_BX);
01691         reg_list_I_1->insert(R_CX);
01692         reg_list_I_1->insert(R_DX);
01693         reg_list_I_1->insert(R_DI);
01694         reg_list_I_1->insert(R_SI);
01695         reg_list_I_1->insert(R_AL);
01696         reg_list_I_1->insert(R_AH);
01697         reg_list_I_1->insert(R_BL);
01698         reg_list_I_1->insert(R_BH);
01699         reg_list_I_1->insert(R_CL);
01700         reg_list_I_1->insert(R_CH);
01701         reg_list_I_1->insert(R_DL);
01702         reg_list_I_1->insert(R_DH);
01703         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01704         op_I_1->destroyed_by_get()->push_back(O_1);
01705         in_operands->push_back(op_I_1);
01706         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01707         dt_list_I_2->insert(DT_INT_8P);
01708         dt_list_I_2->insert(DT_INT_8U);
01709         dt_list_I_2->insert(DT_INT_8S);
01710         dt_list_I_2->insert(DT_INT_16U);
01711         dt_list_I_2->insert(DT_INT_16S);
01712         dt_list_I_2->insert(DT_INT_32U);
01713         dt_list_I_2->insert(DT_INT_32S);
01714         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
01715         in_operands->push_back(op_I_2);
01716 
01717         //output operands
01718         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01719         dt_list_O_1->insert(DT_INT_8P);
01720         dt_list_O_1->insert(DT_INT_8U);
01721         dt_list_O_1->insert(DT_INT_8S);
01722         dt_list_O_1->insert(DT_INT_16U);
01723         dt_list_O_1->insert(DT_INT_16S);
01724         dt_list_O_1->insert(DT_INT_32U);
01725         dt_list_O_1->insert(DT_INT_32S);
01726         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01727         reg_list_O_1->insert(R_EAX);
01728         reg_list_O_1->insert(R_EBX);
01729         reg_list_O_1->insert(R_ECX);
01730         reg_list_O_1->insert(R_EDX);
01731         reg_list_O_1->insert(R_EDI);
01732         reg_list_O_1->insert(R_ESI);
01733         reg_list_O_1->insert(R_AX);
01734         reg_list_O_1->insert(R_BX);
01735         reg_list_O_1->insert(R_CX);
01736         reg_list_O_1->insert(R_DX);
01737         reg_list_O_1->insert(R_DI);
01738         reg_list_O_1->insert(R_SI);
01739         reg_list_O_1->insert(R_AL);
01740         reg_list_O_1->insert(R_AH);
01741         reg_list_O_1->insert(R_BL);
01742         reg_list_O_1->insert(R_BH);
01743         reg_list_O_1->insert(R_CL);
01744         reg_list_O_1->insert(R_CH);
01745         reg_list_O_1->insert(R_DL);
01746         reg_list_O_1->insert(R_DH);
01747         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01748         op_O_1->destroys_set(I_1);
01749         out_operands->push_back(op_O_1);
01750         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01751         dt_list_O_2->insert(DT_COND);
01752         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01753         reg_list_O_2->insert(R_COND);
01754         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01755         out_operands->push_back(op_O_2);
01756 
01757         //execution info
01758         einfo = execution_info::create(30);
01759 
01760         //properties
01761 
01762         //versions
01763         versions = set<ulint>::create();
01764         versions->insert(INSTRUCTION_SUB__1);
01765         versions->insert(INSTRUCTION_SUB__12);
01766 
01767 
01768         //return target pseudoinstruction
01769         return tm_instr::create(INSTRUCTION_SUB__11,in_operands,out_operands,lstring("sub $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
01770 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SUB__12 (  ) 

Definition at line 1772 of file tm_instr.mdg.cc.

References lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_SUB__1, INSTRUCTION_SUB__11, INSTRUCTION_SUB__12, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

01772                                                     {
01773         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
01774         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
01775         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
01776         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
01777         ptr<set<tm_data_type_base::id_type> > allowed_types; 
01778         ptr<execution_info> einfo;
01779         ptr<set<ulint> > versions;
01780         
01781         //input operands
01782         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
01783         dt_list_I_1->insert(DT_INT_8P);
01784         dt_list_I_1->insert(DT_INT_8U);
01785         dt_list_I_1->insert(DT_INT_8S);
01786         dt_list_I_1->insert(DT_INT_16U);
01787         dt_list_I_1->insert(DT_INT_16S);
01788         dt_list_I_1->insert(DT_INT_32U);
01789         dt_list_I_1->insert(DT_INT_32S);
01790         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
01791         reg_list_I_1->insert(R_EAX);
01792         reg_list_I_1->insert(R_EBX);
01793         reg_list_I_1->insert(R_ECX);
01794         reg_list_I_1->insert(R_EDX);
01795         reg_list_I_1->insert(R_EDI);
01796         reg_list_I_1->insert(R_ESI);
01797         reg_list_I_1->insert(R_AX);
01798         reg_list_I_1->insert(R_BX);
01799         reg_list_I_1->insert(R_CX);
01800         reg_list_I_1->insert(R_DX);
01801         reg_list_I_1->insert(R_DI);
01802         reg_list_I_1->insert(R_SI);
01803         reg_list_I_1->insert(R_AL);
01804         reg_list_I_1->insert(R_AH);
01805         reg_list_I_1->insert(R_BL);
01806         reg_list_I_1->insert(R_BH);
01807         reg_list_I_1->insert(R_CL);
01808         reg_list_I_1->insert(R_CH);
01809         reg_list_I_1->insert(R_DL);
01810         reg_list_I_1->insert(R_DH);
01811         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
01812         op_I_1->destroyed_by_get()->push_back(O_1);
01813         in_operands->push_back(op_I_1);
01814         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
01815         dt_list_I_2->insert(DT_INT_8P);
01816         dt_list_I_2->insert(DT_INT_8U);
01817         dt_list_I_2->insert(DT_INT_8S);
01818         dt_list_I_2->insert(DT_INT_16U);
01819         dt_list_I_2->insert(DT_INT_16S);
01820         dt_list_I_2->insert(DT_INT_32U);
01821         dt_list_I_2->insert(DT_INT_32S);
01822         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
01823         in_operands->push_back(op_I_2);
01824 
01825         //output operands
01826         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
01827         dt_list_O_1->insert(DT_INT_8P);
01828         dt_list_O_1->insert(DT_INT_8U);
01829         dt_list_O_1->insert(DT_INT_8S);
01830         dt_list_O_1->insert(DT_INT_16U);
01831         dt_list_O_1->insert(DT_INT_16S);
01832         dt_list_O_1->insert(DT_INT_32U);
01833         dt_list_O_1->insert(DT_INT_32S);
01834         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
01835         reg_list_O_1->insert(R_EAX);
01836         reg_list_O_1->insert(R_EBX);
01837         reg_list_O_1->insert(R_ECX);
01838         reg_list_O_1->insert(R_EDX);
01839         reg_list_O_1->insert(R_EDI);
01840         reg_list_O_1->insert(R_ESI);
01841         reg_list_O_1->insert(R_AX);
01842         reg_list_O_1->insert(R_BX);
01843         reg_list_O_1->insert(R_CX);
01844         reg_list_O_1->insert(R_DX);
01845         reg_list_O_1->insert(R_DI);
01846         reg_list_O_1->insert(R_SI);
01847         reg_list_O_1->insert(R_AL);
01848         reg_list_O_1->insert(R_AH);
01849         reg_list_O_1->insert(R_BL);
01850         reg_list_O_1->insert(R_BH);
01851         reg_list_O_1->insert(R_CL);
01852         reg_list_O_1->insert(R_CH);
01853         reg_list_O_1->insert(R_DL);
01854         reg_list_O_1->insert(R_DH);
01855         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
01856         op_O_1->destroys_set(I_1);
01857         out_operands->push_back(op_O_1);
01858         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
01859         dt_list_O_2->insert(DT_COND);
01860         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
01861         reg_list_O_2->insert(R_COND);
01862         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
01863         out_operands->push_back(op_O_2);
01864 
01865         //execution info
01866         einfo = execution_info::create(10);
01867 
01868         //properties
01869 
01870         //versions
01871         versions = set<ulint>::create();
01872         versions->insert(INSTRUCTION_SUB__1);
01873         versions->insert(INSTRUCTION_SUB__11);
01874 
01875 
01876         //return target pseudoinstruction
01877         return tm_instr::create(INSTRUCTION_SUB__12,in_operands,out_operands,lstring("sub $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
01878 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SYSMOV__10 (  ) 

Definition at line 788 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_STORE, INSTRUCTION_SYSMOV__10, INSTRUCTION_SYSMOV__11, INSTRUCTION_SYSMOV__9, O_1, lestes::md::registers::R_EBP, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

00788                                                        {
00789         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00790         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00791         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00792         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00793         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00794         ptr<execution_info> einfo;
00795         ptr<set<ulint> > versions;
00796         
00797         //input operands
00798         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00799         dt_list_I_1->insert(DT_INT_8P);
00800         dt_list_I_1->insert(DT_INT_8U);
00801         dt_list_I_1->insert(DT_INT_8S);
00802         dt_list_I_1->insert(DT_INT_16U);
00803         dt_list_I_1->insert(DT_INT_16S);
00804         dt_list_I_1->insert(DT_INT_32U);
00805         dt_list_I_1->insert(DT_INT_32S);
00806         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00807         reg_list_I_1->insert(R_ESP);
00808         reg_list_I_1->insert(R_EBP);
00809         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00810         in_operands->push_back(op_I_1);
00811 
00812         //output operands
00813         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00814         dt_list_O_1->insert(DT_INT_8P);
00815         dt_list_O_1->insert(DT_INT_8U);
00816         dt_list_O_1->insert(DT_INT_8S);
00817         dt_list_O_1->insert(DT_INT_16U);
00818         dt_list_O_1->insert(DT_INT_16S);
00819         dt_list_O_1->insert(DT_INT_32U);
00820         dt_list_O_1->insert(DT_INT_32S);
00821         ptr<tm_instr_op_mem> op_O_1 = tm_instr_op_mem::create(O_1, dt_list_O_1);
00822         out_operands->push_back(op_O_1);
00823 
00824         //execution info
00825         einfo = execution_info::create(30);
00826 
00827         //properties
00828 
00829         //versions
00830         versions = set<ulint>::create();
00831         versions->insert(INSTRUCTION_SYSMOV__9);
00832         versions->insert(INSTRUCTION_SYSMOV__11);
00833 
00834 
00835         //return target pseudoinstruction
00836         return tm_instr::create(INSTRUCTION_SYSMOV__10,in_operands,out_operands,lstring("mov $TYPE_O_1 $O_1, $I_1"), props,versions,IF_STORE,einfo);
00837 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SYSMOV__11 (  ) 

Definition at line 839 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_LOAD, INSTRUCTION_SYSMOV__10, INSTRUCTION_SYSMOV__11, INSTRUCTION_SYSMOV__9, O_1, lestes::md::registers::R_EBP, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

00839                                                        {
00840         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00841         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00842         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00843         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00844         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00845         ptr<execution_info> einfo;
00846         ptr<set<ulint> > versions;
00847         
00848         //input operands
00849         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00850         dt_list_I_1->insert(DT_INT_8P);
00851         dt_list_I_1->insert(DT_INT_8U);
00852         dt_list_I_1->insert(DT_INT_8S);
00853         dt_list_I_1->insert(DT_INT_16U);
00854         dt_list_I_1->insert(DT_INT_16S);
00855         dt_list_I_1->insert(DT_INT_32U);
00856         dt_list_I_1->insert(DT_INT_32S);
00857         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
00858         in_operands->push_back(op_I_1);
00859 
00860         //output operands
00861         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00862         dt_list_O_1->insert(DT_INT_8P);
00863         dt_list_O_1->insert(DT_INT_8U);
00864         dt_list_O_1->insert(DT_INT_8S);
00865         dt_list_O_1->insert(DT_INT_16U);
00866         dt_list_O_1->insert(DT_INT_16S);
00867         dt_list_O_1->insert(DT_INT_32U);
00868         dt_list_O_1->insert(DT_INT_32S);
00869         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00870         reg_list_O_1->insert(R_ESP);
00871         reg_list_O_1->insert(R_EBP);
00872         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00873         out_operands->push_back(op_O_1);
00874 
00875         //execution info
00876         einfo = execution_info::create(30);
00877 
00878         //properties
00879 
00880         //versions
00881         versions = set<ulint>::create();
00882         versions->insert(INSTRUCTION_SYSMOV__9);
00883         versions->insert(INSTRUCTION_SYSMOV__10);
00884 
00885 
00886         //return target pseudoinstruction
00887         return tm_instr::create(INSTRUCTION_SYSMOV__11,in_operands,out_operands,lstring("mov $O_1, $TYPE_I_1 $I_1"), props,versions,IF_LOAD,einfo);
00888 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_SYSMOV__9 (  ) 

Definition at line 734 of file tm_instr.mdg.cc.

References lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, IF_COPY, INSTRUCTION_SYSMOV__10, INSTRUCTION_SYSMOV__11, INSTRUCTION_SYSMOV__9, O_1, lestes::md::registers::R_EBP, and lestes::md::registers::R_ESP.

Referenced by lestes::md::instructions::tm_instr::instance().

00734                                                       {
00735         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
00736         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
00737         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
00738         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
00739         ptr<set<tm_data_type_base::id_type> > allowed_types; 
00740         ptr<execution_info> einfo;
00741         ptr<set<ulint> > versions;
00742         
00743         //input operands
00744         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
00745         dt_list_I_1->insert(DT_INT_8P);
00746         dt_list_I_1->insert(DT_INT_8U);
00747         dt_list_I_1->insert(DT_INT_8S);
00748         dt_list_I_1->insert(DT_INT_16U);
00749         dt_list_I_1->insert(DT_INT_16S);
00750         dt_list_I_1->insert(DT_INT_32U);
00751         dt_list_I_1->insert(DT_INT_32S);
00752         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
00753         reg_list_I_1->insert(R_ESP);
00754         reg_list_I_1->insert(R_EBP);
00755         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
00756         in_operands->push_back(op_I_1);
00757 
00758         //output operands
00759         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
00760         dt_list_O_1->insert(DT_INT_8P);
00761         dt_list_O_1->insert(DT_INT_8U);
00762         dt_list_O_1->insert(DT_INT_8S);
00763         dt_list_O_1->insert(DT_INT_16U);
00764         dt_list_O_1->insert(DT_INT_16S);
00765         dt_list_O_1->insert(DT_INT_32U);
00766         dt_list_O_1->insert(DT_INT_32S);
00767         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
00768         reg_list_O_1->insert(R_ESP);
00769         reg_list_O_1->insert(R_EBP);
00770         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
00771         out_operands->push_back(op_O_1);
00772 
00773         //execution info
00774         einfo = execution_info::create(10);
00775 
00776         //properties
00777 
00778         //versions
00779         versions = set<ulint>::create();
00780         versions->insert(INSTRUCTION_SYSMOV__10);
00781         versions->insert(INSTRUCTION_SYSMOV__11);
00782 
00783 
00784         //return target pseudoinstruction
00785         return tm_instr::create(INSTRUCTION_SYSMOV__9,in_operands,out_operands,lstring("mov $O_1, $I_1"), props,versions,IF_COPY,einfo);
00786 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__1 (  ) 

Definition at line 5800 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05800                                                    {
05801         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05802         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05803         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05804         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05805         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05806         ptr<execution_info> einfo;
05807         ptr<set<ulint> > versions;
05808         
05809         //input operands
05810         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05811         dt_list_I_1->insert(DT_INT_8P);
05812         dt_list_I_1->insert(DT_INT_8U);
05813         dt_list_I_1->insert(DT_INT_8S);
05814         dt_list_I_1->insert(DT_INT_16U);
05815         dt_list_I_1->insert(DT_INT_16S);
05816         dt_list_I_1->insert(DT_INT_32U);
05817         dt_list_I_1->insert(DT_INT_32S);
05818         dt_list_I_1->insert(DT_BOOL);
05819         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05820         reg_list_I_1->insert(R_EAX);
05821         reg_list_I_1->insert(R_EBX);
05822         reg_list_I_1->insert(R_ECX);
05823         reg_list_I_1->insert(R_EDX);
05824         reg_list_I_1->insert(R_EDI);
05825         reg_list_I_1->insert(R_ESI);
05826         reg_list_I_1->insert(R_AX);
05827         reg_list_I_1->insert(R_BX);
05828         reg_list_I_1->insert(R_CX);
05829         reg_list_I_1->insert(R_DX);
05830         reg_list_I_1->insert(R_DI);
05831         reg_list_I_1->insert(R_SI);
05832         reg_list_I_1->insert(R_AL);
05833         reg_list_I_1->insert(R_AH);
05834         reg_list_I_1->insert(R_BL);
05835         reg_list_I_1->insert(R_BH);
05836         reg_list_I_1->insert(R_CL);
05837         reg_list_I_1->insert(R_CH);
05838         reg_list_I_1->insert(R_DL);
05839         reg_list_I_1->insert(R_DH);
05840         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05841         op_I_1->destroyed_by_get()->push_back(O_1);
05842         in_operands->push_back(op_I_1);
05843         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05844         dt_list_I_2->insert(DT_INT_8P);
05845         dt_list_I_2->insert(DT_INT_8U);
05846         dt_list_I_2->insert(DT_INT_8S);
05847         dt_list_I_2->insert(DT_INT_16U);
05848         dt_list_I_2->insert(DT_INT_16S);
05849         dt_list_I_2->insert(DT_INT_32U);
05850         dt_list_I_2->insert(DT_INT_32S);
05851         dt_list_I_2->insert(DT_BOOL);
05852         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
05853         reg_list_I_2->insert(R_EAX);
05854         reg_list_I_2->insert(R_EBX);
05855         reg_list_I_2->insert(R_ECX);
05856         reg_list_I_2->insert(R_EDX);
05857         reg_list_I_2->insert(R_EDI);
05858         reg_list_I_2->insert(R_ESI);
05859         reg_list_I_2->insert(R_AX);
05860         reg_list_I_2->insert(R_BX);
05861         reg_list_I_2->insert(R_CX);
05862         reg_list_I_2->insert(R_DX);
05863         reg_list_I_2->insert(R_DI);
05864         reg_list_I_2->insert(R_SI);
05865         reg_list_I_2->insert(R_AL);
05866         reg_list_I_2->insert(R_AH);
05867         reg_list_I_2->insert(R_BL);
05868         reg_list_I_2->insert(R_BH);
05869         reg_list_I_2->insert(R_CL);
05870         reg_list_I_2->insert(R_CH);
05871         reg_list_I_2->insert(R_DL);
05872         reg_list_I_2->insert(R_DH);
05873         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
05874         in_operands->push_back(op_I_2);
05875 
05876         //output operands
05877         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05878         dt_list_O_1->insert(DT_INT_8P);
05879         dt_list_O_1->insert(DT_INT_8U);
05880         dt_list_O_1->insert(DT_INT_8S);
05881         dt_list_O_1->insert(DT_INT_16U);
05882         dt_list_O_1->insert(DT_INT_16S);
05883         dt_list_O_1->insert(DT_INT_32U);
05884         dt_list_O_1->insert(DT_INT_32S);
05885         dt_list_O_1->insert(DT_BOOL);
05886         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
05887         reg_list_O_1->insert(R_EAX);
05888         reg_list_O_1->insert(R_EBX);
05889         reg_list_O_1->insert(R_ECX);
05890         reg_list_O_1->insert(R_EDX);
05891         reg_list_O_1->insert(R_EDI);
05892         reg_list_O_1->insert(R_ESI);
05893         reg_list_O_1->insert(R_AX);
05894         reg_list_O_1->insert(R_BX);
05895         reg_list_O_1->insert(R_CX);
05896         reg_list_O_1->insert(R_DX);
05897         reg_list_O_1->insert(R_DI);
05898         reg_list_O_1->insert(R_SI);
05899         reg_list_O_1->insert(R_AL);
05900         reg_list_O_1->insert(R_AH);
05901         reg_list_O_1->insert(R_BL);
05902         reg_list_O_1->insert(R_BH);
05903         reg_list_O_1->insert(R_CL);
05904         reg_list_O_1->insert(R_CH);
05905         reg_list_O_1->insert(R_DL);
05906         reg_list_O_1->insert(R_DH);
05907         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
05908         op_O_1->destroys_set(I_1);
05909         out_operands->push_back(op_O_1);
05910         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
05911         dt_list_O_2->insert(DT_COND);
05912         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
05913         reg_list_O_2->insert(R_COND);
05914         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
05915         out_operands->push_back(op_O_2);
05916 
05917         //execution info
05918         einfo = execution_info::create(10);
05919 
05920         //properties
05921 
05922         //versions
05923         versions = set<ulint>::create();
05924         versions->insert(INSTRUCTION_XOR__11);
05925         versions->insert(INSTRUCTION_XOR__12);
05926         versions->insert(INSTRUCTION_XOR__13);
05927         versions->insert(INSTRUCTION_XOR__14);
05928         versions->insert(INSTRUCTION_XOR__2);
05929 
05930 
05931         //return target pseudoinstruction
05932         return tm_instr::create(INSTRUCTION_XOR__1,in_operands,out_operands,lstring("xor $O_1, $I_2"), props,versions,0,einfo);
05933 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__11 (  ) 

Definition at line 5935 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

05935                                                     {
05936         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
05937         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
05938         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
05939         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
05940         ptr<set<tm_data_type_base::id_type> > allowed_types; 
05941         ptr<execution_info> einfo;
05942         ptr<set<ulint> > versions;
05943         
05944         //input operands
05945         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
05946         dt_list_I_1->insert(DT_INT_8P);
05947         dt_list_I_1->insert(DT_INT_8U);
05948         dt_list_I_1->insert(DT_INT_8S);
05949         dt_list_I_1->insert(DT_INT_16U);
05950         dt_list_I_1->insert(DT_INT_16S);
05951         dt_list_I_1->insert(DT_INT_32U);
05952         dt_list_I_1->insert(DT_INT_32S);
05953         dt_list_I_1->insert(DT_BOOL);
05954         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
05955         reg_list_I_1->insert(R_EAX);
05956         reg_list_I_1->insert(R_EBX);
05957         reg_list_I_1->insert(R_ECX);
05958         reg_list_I_1->insert(R_EDX);
05959         reg_list_I_1->insert(R_EDI);
05960         reg_list_I_1->insert(R_ESI);
05961         reg_list_I_1->insert(R_AX);
05962         reg_list_I_1->insert(R_BX);
05963         reg_list_I_1->insert(R_CX);
05964         reg_list_I_1->insert(R_DX);
05965         reg_list_I_1->insert(R_DI);
05966         reg_list_I_1->insert(R_SI);
05967         reg_list_I_1->insert(R_AL);
05968         reg_list_I_1->insert(R_AH);
05969         reg_list_I_1->insert(R_BL);
05970         reg_list_I_1->insert(R_BH);
05971         reg_list_I_1->insert(R_CL);
05972         reg_list_I_1->insert(R_CH);
05973         reg_list_I_1->insert(R_DL);
05974         reg_list_I_1->insert(R_DH);
05975         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
05976         op_I_1->destroyed_by_get()->push_back(O_1);
05977         in_operands->push_back(op_I_1);
05978         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
05979         dt_list_I_2->insert(DT_INT_8P);
05980         dt_list_I_2->insert(DT_INT_8U);
05981         dt_list_I_2->insert(DT_INT_8S);
05982         dt_list_I_2->insert(DT_INT_16U);
05983         dt_list_I_2->insert(DT_INT_16S);
05984         dt_list_I_2->insert(DT_INT_32U);
05985         dt_list_I_2->insert(DT_INT_32S);
05986         dt_list_I_2->insert(DT_BOOL);
05987         ptr<tm_instr_op_imm> op_I_2 = tm_instr_op_imm::create(I_2, dt_list_I_2);
05988         in_operands->push_back(op_I_2);
05989 
05990         //output operands
05991         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
05992         dt_list_O_1->insert(DT_INT_8P);
05993         dt_list_O_1->insert(DT_INT_8U);
05994         dt_list_O_1->insert(DT_INT_8S);
05995         dt_list_O_1->insert(DT_INT_16U);
05996         dt_list_O_1->insert(DT_INT_16S);
05997         dt_list_O_1->insert(DT_INT_32U);
05998         dt_list_O_1->insert(DT_INT_32S);
05999         dt_list_O_1->insert(DT_BOOL);
06000         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06001         reg_list_O_1->insert(R_EAX);
06002         reg_list_O_1->insert(R_EBX);
06003         reg_list_O_1->insert(R_ECX);
06004         reg_list_O_1->insert(R_EDX);
06005         reg_list_O_1->insert(R_EDI);
06006         reg_list_O_1->insert(R_ESI);
06007         reg_list_O_1->insert(R_AX);
06008         reg_list_O_1->insert(R_BX);
06009         reg_list_O_1->insert(R_CX);
06010         reg_list_O_1->insert(R_DX);
06011         reg_list_O_1->insert(R_DI);
06012         reg_list_O_1->insert(R_SI);
06013         reg_list_O_1->insert(R_AL);
06014         reg_list_O_1->insert(R_AH);
06015         reg_list_O_1->insert(R_BL);
06016         reg_list_O_1->insert(R_BH);
06017         reg_list_O_1->insert(R_CL);
06018         reg_list_O_1->insert(R_CH);
06019         reg_list_O_1->insert(R_DL);
06020         reg_list_O_1->insert(R_DH);
06021         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06022         op_O_1->destroys_set(I_1);
06023         out_operands->push_back(op_O_1);
06024         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
06025         dt_list_O_2->insert(DT_COND);
06026         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
06027         reg_list_O_2->insert(R_COND);
06028         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
06029         out_operands->push_back(op_O_2);
06030 
06031         //execution info
06032         einfo = execution_info::create(10);
06033 
06034         //properties
06035 
06036         //versions
06037         versions = set<ulint>::create();
06038         versions->insert(INSTRUCTION_XOR__1);
06039         versions->insert(INSTRUCTION_XOR__12);
06040         versions->insert(INSTRUCTION_XOR__13);
06041         versions->insert(INSTRUCTION_XOR__14);
06042         versions->insert(INSTRUCTION_XOR__2);
06043 
06044 
06045         //return target pseudoinstruction
06046         return tm_instr::create(INSTRUCTION_XOR__11,in_operands,out_operands,lstring("xor $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
06047 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__12 (  ) 

Definition at line 6049 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06049                                                     {
06050         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06051         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06052         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06053         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06054         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06055         ptr<execution_info> einfo;
06056         ptr<set<ulint> > versions;
06057         
06058         //input operands
06059         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06060         dt_list_I_1->insert(DT_INT_8P);
06061         dt_list_I_1->insert(DT_INT_8U);
06062         dt_list_I_1->insert(DT_INT_8S);
06063         dt_list_I_1->insert(DT_INT_16U);
06064         dt_list_I_1->insert(DT_INT_16S);
06065         dt_list_I_1->insert(DT_INT_32U);
06066         dt_list_I_1->insert(DT_INT_32S);
06067         dt_list_I_1->insert(DT_BOOL);
06068         ptr<tm_instr_op_imm> op_I_1 = tm_instr_op_imm::create(I_1, dt_list_I_1);
06069         in_operands->push_back(op_I_1);
06070         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
06071         dt_list_I_2->insert(DT_INT_8P);
06072         dt_list_I_2->insert(DT_INT_8U);
06073         dt_list_I_2->insert(DT_INT_8S);
06074         dt_list_I_2->insert(DT_INT_16U);
06075         dt_list_I_2->insert(DT_INT_16S);
06076         dt_list_I_2->insert(DT_INT_32U);
06077         dt_list_I_2->insert(DT_INT_32S);
06078         dt_list_I_2->insert(DT_BOOL);
06079         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
06080         reg_list_I_2->insert(R_EAX);
06081         reg_list_I_2->insert(R_EBX);
06082         reg_list_I_2->insert(R_ECX);
06083         reg_list_I_2->insert(R_EDX);
06084         reg_list_I_2->insert(R_EDI);
06085         reg_list_I_2->insert(R_ESI);
06086         reg_list_I_2->insert(R_AX);
06087         reg_list_I_2->insert(R_BX);
06088         reg_list_I_2->insert(R_CX);
06089         reg_list_I_2->insert(R_DX);
06090         reg_list_I_2->insert(R_DI);
06091         reg_list_I_2->insert(R_SI);
06092         reg_list_I_2->insert(R_AL);
06093         reg_list_I_2->insert(R_AH);
06094         reg_list_I_2->insert(R_BL);
06095         reg_list_I_2->insert(R_BH);
06096         reg_list_I_2->insert(R_CL);
06097         reg_list_I_2->insert(R_CH);
06098         reg_list_I_2->insert(R_DL);
06099         reg_list_I_2->insert(R_DH);
06100         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
06101         op_I_2->destroyed_by_get()->push_back(O_1);
06102         in_operands->push_back(op_I_2);
06103 
06104         //output operands
06105         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06106         dt_list_O_1->insert(DT_INT_8P);
06107         dt_list_O_1->insert(DT_INT_8U);
06108         dt_list_O_1->insert(DT_INT_8S);
06109         dt_list_O_1->insert(DT_INT_16U);
06110         dt_list_O_1->insert(DT_INT_16S);
06111         dt_list_O_1->insert(DT_INT_32U);
06112         dt_list_O_1->insert(DT_INT_32S);
06113         dt_list_O_1->insert(DT_BOOL);
06114         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06115         reg_list_O_1->insert(R_EAX);
06116         reg_list_O_1->insert(R_EBX);
06117         reg_list_O_1->insert(R_ECX);
06118         reg_list_O_1->insert(R_EDX);
06119         reg_list_O_1->insert(R_EDI);
06120         reg_list_O_1->insert(R_ESI);
06121         reg_list_O_1->insert(R_AX);
06122         reg_list_O_1->insert(R_BX);
06123         reg_list_O_1->insert(R_CX);
06124         reg_list_O_1->insert(R_DX);
06125         reg_list_O_1->insert(R_DI);
06126         reg_list_O_1->insert(R_SI);
06127         reg_list_O_1->insert(R_AL);
06128         reg_list_O_1->insert(R_AH);
06129         reg_list_O_1->insert(R_BL);
06130         reg_list_O_1->insert(R_BH);
06131         reg_list_O_1->insert(R_CL);
06132         reg_list_O_1->insert(R_CH);
06133         reg_list_O_1->insert(R_DL);
06134         reg_list_O_1->insert(R_DH);
06135         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06136         op_O_1->destroys_set(I_2);
06137         out_operands->push_back(op_O_1);
06138         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
06139         dt_list_O_2->insert(DT_COND);
06140         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
06141         reg_list_O_2->insert(R_COND);
06142         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
06143         out_operands->push_back(op_O_2);
06144 
06145         //execution info
06146         einfo = execution_info::create(10);
06147 
06148         //properties
06149 
06150         //versions
06151         versions = set<ulint>::create();
06152         versions->insert(INSTRUCTION_XOR__1);
06153         versions->insert(INSTRUCTION_XOR__11);
06154         versions->insert(INSTRUCTION_XOR__13);
06155         versions->insert(INSTRUCTION_XOR__14);
06156         versions->insert(INSTRUCTION_XOR__2);
06157 
06158 
06159         //return target pseudoinstruction
06160         return tm_instr::create(INSTRUCTION_XOR__12,in_operands,out_operands,lstring("xor $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
06161 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__13 (  ) 

Definition at line 6163 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06163                                                     {
06164         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06165         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06166         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06167         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06168         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06169         ptr<execution_info> einfo;
06170         ptr<set<ulint> > versions;
06171         
06172         //input operands
06173         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06174         dt_list_I_1->insert(DT_INT_8P);
06175         dt_list_I_1->insert(DT_INT_8U);
06176         dt_list_I_1->insert(DT_INT_8S);
06177         dt_list_I_1->insert(DT_INT_16U);
06178         dt_list_I_1->insert(DT_INT_16S);
06179         dt_list_I_1->insert(DT_INT_32U);
06180         dt_list_I_1->insert(DT_INT_32S);
06181         dt_list_I_1->insert(DT_BOOL);
06182         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06183         reg_list_I_1->insert(R_EAX);
06184         reg_list_I_1->insert(R_EBX);
06185         reg_list_I_1->insert(R_ECX);
06186         reg_list_I_1->insert(R_EDX);
06187         reg_list_I_1->insert(R_EDI);
06188         reg_list_I_1->insert(R_ESI);
06189         reg_list_I_1->insert(R_AX);
06190         reg_list_I_1->insert(R_BX);
06191         reg_list_I_1->insert(R_CX);
06192         reg_list_I_1->insert(R_DX);
06193         reg_list_I_1->insert(R_DI);
06194         reg_list_I_1->insert(R_SI);
06195         reg_list_I_1->insert(R_AL);
06196         reg_list_I_1->insert(R_AH);
06197         reg_list_I_1->insert(R_BL);
06198         reg_list_I_1->insert(R_BH);
06199         reg_list_I_1->insert(R_CL);
06200         reg_list_I_1->insert(R_CH);
06201         reg_list_I_1->insert(R_DL);
06202         reg_list_I_1->insert(R_DH);
06203         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06204         op_I_1->destroyed_by_get()->push_back(O_1);
06205         in_operands->push_back(op_I_1);
06206         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
06207         dt_list_I_2->insert(DT_INT_8P);
06208         dt_list_I_2->insert(DT_INT_8U);
06209         dt_list_I_2->insert(DT_INT_8S);
06210         dt_list_I_2->insert(DT_INT_16U);
06211         dt_list_I_2->insert(DT_INT_16S);
06212         dt_list_I_2->insert(DT_INT_32U);
06213         dt_list_I_2->insert(DT_INT_32S);
06214         dt_list_I_2->insert(DT_BOOL);
06215         ptr<tm_instr_op_mem> op_I_2 = tm_instr_op_mem::create(I_2, dt_list_I_2);
06216         in_operands->push_back(op_I_2);
06217 
06218         //output operands
06219         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06220         dt_list_O_1->insert(DT_INT_8P);
06221         dt_list_O_1->insert(DT_INT_8U);
06222         dt_list_O_1->insert(DT_INT_8S);
06223         dt_list_O_1->insert(DT_INT_16U);
06224         dt_list_O_1->insert(DT_INT_16S);
06225         dt_list_O_1->insert(DT_INT_32U);
06226         dt_list_O_1->insert(DT_INT_32S);
06227         dt_list_O_1->insert(DT_BOOL);
06228         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06229         reg_list_O_1->insert(R_EAX);
06230         reg_list_O_1->insert(R_EBX);
06231         reg_list_O_1->insert(R_ECX);
06232         reg_list_O_1->insert(R_EDX);
06233         reg_list_O_1->insert(R_EDI);
06234         reg_list_O_1->insert(R_ESI);
06235         reg_list_O_1->insert(R_AX);
06236         reg_list_O_1->insert(R_BX);
06237         reg_list_O_1->insert(R_CX);
06238         reg_list_O_1->insert(R_DX);
06239         reg_list_O_1->insert(R_DI);
06240         reg_list_O_1->insert(R_SI);
06241         reg_list_O_1->insert(R_AL);
06242         reg_list_O_1->insert(R_AH);
06243         reg_list_O_1->insert(R_BL);
06244         reg_list_O_1->insert(R_BH);
06245         reg_list_O_1->insert(R_CL);
06246         reg_list_O_1->insert(R_CH);
06247         reg_list_O_1->insert(R_DL);
06248         reg_list_O_1->insert(R_DH);
06249         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06250         op_O_1->destroys_set(I_1);
06251         out_operands->push_back(op_O_1);
06252         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
06253         dt_list_O_2->insert(DT_COND);
06254         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
06255         reg_list_O_2->insert(R_COND);
06256         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
06257         out_operands->push_back(op_O_2);
06258 
06259         //execution info
06260         einfo = execution_info::create(30);
06261 
06262         //properties
06263 
06264         //versions
06265         versions = set<ulint>::create();
06266         versions->insert(INSTRUCTION_XOR__1);
06267         versions->insert(INSTRUCTION_XOR__11);
06268         versions->insert(INSTRUCTION_XOR__12);
06269         versions->insert(INSTRUCTION_XOR__14);
06270         versions->insert(INSTRUCTION_XOR__2);
06271 
06272 
06273         //return target pseudoinstruction
06274         return tm_instr::create(INSTRUCTION_XOR__13,in_operands,out_operands,lstring("xor $O_1, $TYPE_I_2 $I_2"), props,versions,0,einfo);
06275 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__14 (  ) 

Definition at line 6277 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, I_2, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06277                                                     {
06278         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06279         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06280         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06281         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06282         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06283         ptr<execution_info> einfo;
06284         ptr<set<ulint> > versions;
06285         
06286         //input operands
06287         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06288         dt_list_I_1->insert(DT_INT_8P);
06289         dt_list_I_1->insert(DT_INT_8U);
06290         dt_list_I_1->insert(DT_INT_8S);
06291         dt_list_I_1->insert(DT_INT_16U);
06292         dt_list_I_1->insert(DT_INT_16S);
06293         dt_list_I_1->insert(DT_INT_32U);
06294         dt_list_I_1->insert(DT_INT_32S);
06295         dt_list_I_1->insert(DT_BOOL);
06296         ptr<tm_instr_op_mem> op_I_1 = tm_instr_op_mem::create(I_1, dt_list_I_1);
06297         in_operands->push_back(op_I_1);
06298         ptr<set<tm_data_type_base::id_type> > dt_list_I_2 = set<tm_data_type_base::id_type>::create();
06299         dt_list_I_2->insert(DT_INT_8P);
06300         dt_list_I_2->insert(DT_INT_8U);
06301         dt_list_I_2->insert(DT_INT_8S);
06302         dt_list_I_2->insert(DT_INT_16U);
06303         dt_list_I_2->insert(DT_INT_16S);
06304         dt_list_I_2->insert(DT_INT_32U);
06305         dt_list_I_2->insert(DT_INT_32S);
06306         dt_list_I_2->insert(DT_BOOL);
06307         ptr<set<tm_register_base::id_type> > reg_list_I_2 = set<tm_register_base::id_type>::create();
06308         reg_list_I_2->insert(R_EAX);
06309         reg_list_I_2->insert(R_EBX);
06310         reg_list_I_2->insert(R_ECX);
06311         reg_list_I_2->insert(R_EDX);
06312         reg_list_I_2->insert(R_EDI);
06313         reg_list_I_2->insert(R_ESI);
06314         reg_list_I_2->insert(R_AX);
06315         reg_list_I_2->insert(R_BX);
06316         reg_list_I_2->insert(R_CX);
06317         reg_list_I_2->insert(R_DX);
06318         reg_list_I_2->insert(R_DI);
06319         reg_list_I_2->insert(R_SI);
06320         reg_list_I_2->insert(R_AL);
06321         reg_list_I_2->insert(R_AH);
06322         reg_list_I_2->insert(R_BL);
06323         reg_list_I_2->insert(R_BH);
06324         reg_list_I_2->insert(R_CL);
06325         reg_list_I_2->insert(R_CH);
06326         reg_list_I_2->insert(R_DL);
06327         reg_list_I_2->insert(R_DH);
06328         ptr<tm_instr_op_reg> op_I_2 = tm_instr_op_reg::create(I_2, dt_list_I_2, reg_list_I_2);
06329         op_I_2->destroyed_by_get()->push_back(O_1);
06330         in_operands->push_back(op_I_2);
06331 
06332         //output operands
06333         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06334         dt_list_O_1->insert(DT_INT_8P);
06335         dt_list_O_1->insert(DT_INT_8U);
06336         dt_list_O_1->insert(DT_INT_8S);
06337         dt_list_O_1->insert(DT_INT_16U);
06338         dt_list_O_1->insert(DT_INT_16S);
06339         dt_list_O_1->insert(DT_INT_32U);
06340         dt_list_O_1->insert(DT_INT_32S);
06341         dt_list_O_1->insert(DT_BOOL);
06342         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06343         reg_list_O_1->insert(R_EAX);
06344         reg_list_O_1->insert(R_EBX);
06345         reg_list_O_1->insert(R_ECX);
06346         reg_list_O_1->insert(R_EDX);
06347         reg_list_O_1->insert(R_EDI);
06348         reg_list_O_1->insert(R_ESI);
06349         reg_list_O_1->insert(R_AX);
06350         reg_list_O_1->insert(R_BX);
06351         reg_list_O_1->insert(R_CX);
06352         reg_list_O_1->insert(R_DX);
06353         reg_list_O_1->insert(R_DI);
06354         reg_list_O_1->insert(R_SI);
06355         reg_list_O_1->insert(R_AL);
06356         reg_list_O_1->insert(R_AH);
06357         reg_list_O_1->insert(R_BL);
06358         reg_list_O_1->insert(R_BH);
06359         reg_list_O_1->insert(R_CL);
06360         reg_list_O_1->insert(R_CH);
06361         reg_list_O_1->insert(R_DL);
06362         reg_list_O_1->insert(R_DH);
06363         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06364         op_O_1->destroys_set(I_2);
06365         out_operands->push_back(op_O_1);
06366         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
06367         dt_list_O_2->insert(DT_COND);
06368         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
06369         reg_list_O_2->insert(R_COND);
06370         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
06371         out_operands->push_back(op_O_2);
06372 
06373         //execution info
06374         einfo = execution_info::create(30);
06375 
06376         //properties
06377 
06378         //versions
06379         versions = set<ulint>::create();
06380         versions->insert(INSTRUCTION_XOR__1);
06381         versions->insert(INSTRUCTION_XOR__11);
06382         versions->insert(INSTRUCTION_XOR__12);
06383         versions->insert(INSTRUCTION_XOR__13);
06384         versions->insert(INSTRUCTION_XOR__2);
06385 
06386 
06387         //return target pseudoinstruction
06388         return tm_instr::create(INSTRUCTION_XOR__14,in_operands,out_operands,lstring("xor $O_1, $TYPE_I_1 $I_1"), props,versions,0,einfo);
06389 }

ptr<tm_instr> lestes::md::instructions::tm_instr_create_INSTRUCTION_XOR__2 (  ) 

Definition at line 6391 of file tm_instr.mdg.cc.

References lestes::md::types::DT_BOOL, lestes::md::types::DT_COND, lestes::md::types::DT_INT_16S, lestes::md::types::DT_INT_16U, lestes::md::types::DT_INT_32S, lestes::md::types::DT_INT_32U, lestes::md::types::DT_INT_8P, lestes::md::types::DT_INT_8S, lestes::md::types::DT_INT_8U, I_1, INSTRUCTION_XOR__1, INSTRUCTION_XOR__11, INSTRUCTION_XOR__12, INSTRUCTION_XOR__13, INSTRUCTION_XOR__14, INSTRUCTION_XOR__2, O_1, O_2, lestes::md::registers::R_AH, lestes::md::registers::R_AL, lestes::md::registers::R_AX, lestes::md::registers::R_BH, lestes::md::registers::R_BL, lestes::md::registers::R_BX, lestes::md::registers::R_CH, lestes::md::registers::R_CL, lestes::md::registers::R_COND, lestes::md::registers::R_CX, lestes::md::registers::R_DH, lestes::md::registers::R_DI, lestes::md::registers::R_DL, lestes::md::registers::R_DX, lestes::md::registers::R_EAX, lestes::md::registers::R_EBX, lestes::md::registers::R_ECX, lestes::md::registers::R_EDI, lestes::md::registers::R_EDX, lestes::md::registers::R_ESI, and lestes::md::registers::R_SI.

Referenced by lestes::md::instructions::tm_instr::instance().

06391                                                    {
06392         ptr<vector<srp<tm_instr_op_base> > > in_operands = vector<srp<tm_instr_op_base> >::create();
06393         ptr<vector<srp<tm_instr_op_base> > > out_operands = vector<srp<tm_instr_op_base> >::create();
06394         ptr<set<tm_register_base::id_type> > req_regs = set<tm_register_base::id_type>::create();
06395         ptr<map<ulint, lstring> > props = map<ulint, lstring>::create();
06396         ptr<set<tm_data_type_base::id_type> > allowed_types; 
06397         ptr<execution_info> einfo;
06398         ptr<set<ulint> > versions;
06399         
06400         //input operands
06401         ptr<set<tm_data_type_base::id_type> > dt_list_I_1 = set<tm_data_type_base::id_type>::create();
06402         dt_list_I_1->insert(DT_INT_8P);
06403         dt_list_I_1->insert(DT_INT_8U);
06404         dt_list_I_1->insert(DT_INT_8S);
06405         dt_list_I_1->insert(DT_INT_16U);
06406         dt_list_I_1->insert(DT_INT_16S);
06407         dt_list_I_1->insert(DT_INT_32U);
06408         dt_list_I_1->insert(DT_INT_32S);
06409         dt_list_I_1->insert(DT_BOOL);
06410         ptr<set<tm_register_base::id_type> > reg_list_I_1 = set<tm_register_base::id_type>::create();
06411         reg_list_I_1->insert(R_EAX);
06412         reg_list_I_1->insert(R_EBX);
06413         reg_list_I_1->insert(R_ECX);
06414         reg_list_I_1->insert(R_EDX);
06415         reg_list_I_1->insert(R_EDI);
06416         reg_list_I_1->insert(R_ESI);
06417         reg_list_I_1->insert(R_AX);
06418         reg_list_I_1->insert(R_BX);
06419         reg_list_I_1->insert(R_CX);
06420         reg_list_I_1->insert(R_DX);
06421         reg_list_I_1->insert(R_DI);
06422         reg_list_I_1->insert(R_SI);
06423         reg_list_I_1->insert(R_AL);
06424         reg_list_I_1->insert(R_AH);
06425         reg_list_I_1->insert(R_BL);
06426         reg_list_I_1->insert(R_BH);
06427         reg_list_I_1->insert(R_CL);
06428         reg_list_I_1->insert(R_CH);
06429         reg_list_I_1->insert(R_DL);
06430         reg_list_I_1->insert(R_DH);
06431         ptr<tm_instr_op_reg> op_I_1 = tm_instr_op_reg::create(I_1, dt_list_I_1, reg_list_I_1);
06432         op_I_1->destroyed_by_get()->push_back(O_1);
06433         in_operands->push_back(op_I_1);
06434 
06435         //output operands
06436         ptr<set<tm_data_type_base::id_type> > dt_list_O_1 = set<tm_data_type_base::id_type>::create();
06437         dt_list_O_1->insert(DT_INT_8P);
06438         dt_list_O_1->insert(DT_INT_8U);
06439         dt_list_O_1->insert(DT_INT_8S);
06440         dt_list_O_1->insert(DT_INT_16U);
06441         dt_list_O_1->insert(DT_INT_16S);
06442         dt_list_O_1->insert(DT_INT_32U);
06443         dt_list_O_1->insert(DT_INT_32S);
06444         dt_list_O_1->insert(DT_BOOL);
06445         ptr<set<tm_register_base::id_type> > reg_list_O_1 = set<tm_register_base::id_type>::create();
06446         reg_list_O_1->insert(R_EAX);
06447         reg_list_O_1->insert(R_EBX);
06448         reg_list_O_1->insert(R_ECX);
06449         reg_list_O_1->insert(R_EDX);
06450         reg_list_O_1->insert(R_EDI);
06451         reg_list_O_1->insert(R_ESI);
06452         reg_list_O_1->insert(R_AX);
06453         reg_list_O_1->insert(R_BX);
06454         reg_list_O_1->insert(R_CX);
06455         reg_list_O_1->insert(R_DX);
06456         reg_list_O_1->insert(R_DI);
06457         reg_list_O_1->insert(R_SI);
06458         reg_list_O_1->insert(R_AL);
06459         reg_list_O_1->insert(R_AH);
06460         reg_list_O_1->insert(R_BL);
06461         reg_list_O_1->insert(R_BH);
06462         reg_list_O_1->insert(R_CL);
06463         reg_list_O_1->insert(R_CH);
06464         reg_list_O_1->insert(R_DL);
06465         reg_list_O_1->insert(R_DH);
06466         ptr<tm_instr_op_reg> op_O_1 = tm_instr_op_reg::create(O_1, dt_list_O_1, reg_list_O_1);
06467         op_O_1->destroys_set(I_1);
06468         out_operands->push_back(op_O_1);
06469         ptr<set<tm_data_type_base::id_type> > dt_list_O_2 = set<tm_data_type_base::id_type>::create();
06470         dt_list_O_2->insert(DT_COND);
06471         ptr<set<tm_register_base::id_type> > reg_list_O_2 = set<tm_register_base::id_type>::create();
06472         reg_list_O_2->insert(R_COND);
06473         ptr<tm_instr_op_reg> op_O_2 = tm_instr_op_reg::create(O_2, dt_list_O_2, reg_list_O_2);
06474         out_operands->push_back(op_O_2);
06475 
06476         //execution info
06477         einfo = execution_info::create(10);
06478 
06479         //properties
06480 
06481         //versions
06482         versions = set<ulint>::create();
06483         versions->insert(INSTRUCTION_XOR__1);
06484         versions->insert(INSTRUCTION_XOR__11);
06485         versions->insert(INSTRUCTION_XOR__12);
06486         versions->insert(INSTRUCTION_XOR__13);
06487         versions->insert(INSTRUCTION_XOR__14);
06488 
06489 
06490         //return target pseudoinstruction
06491         return tm_instr::create(INSTRUCTION_XOR__2,in_operands,out_operands,lstring("xor $O_1, 0x1"), props,versions,0,einfo);
06492 }


Generated on Mon Feb 12 18:25:46 2007 for lestes by doxygen 1.5.1-20070107