IPF-specific inspection API
[INS: Instruction Object]


Enumerations

enum  LEVEL_BASE::CATEGORY_IPF {
  CATEGORY_INVALID,
  CATEGORY_MEMORY_FENCE,
  CATEGORY_LOAD,
  CATEGORY_STORE,
  CATEGORY_FETCH,
  CATEGORY_FETCHADD,
  CATEGORY_CMPXCHG,
  CATEGORY_XCHG,
  CATEGORY_BRANCH,
  CATEGORY_CBRANCH,
  CATEGORY_JUMP,
  CATEGORY_CJUMP,
  CATEGORY_CHECK,
  CATEGORY_RFI,
  CATEGORY_BREAK,
  CATEGORY_CALL_SIDE_EFFECTS,
  CATEGORY_RET_SIDE_EFFECTS,
  CATEGORY_BRANCH_PREDICT,
  CATEGORY_JUMP_PREDICT,
  CATEGORY_RSE_CONTROL,
  CATEGORY_NOP,
  CATEGORY_HINT,
  CATEGORY_MOVL,
  CATEGORY_INT_OP,
  CATEGORY_VEC_OP,
  CATEGORY_ADDL,
  CATEGORY_ADDS,
  CATEGORY_INT_CMP,
  CATEGORY_INT_PCMP,
  CATEGORY_FLT_CMP,
  CATEGORY_FLT_PCMP,
  CATEGORY_TEST,
  CATEGORY_ALLOC,
  CATEGORY_GET_FR,
  CATEGORY_SET_FR,
  CATEGORY_SET_AR,
  CATEGORY_GET_AR,
  CATEGORY_GET_BR,
  CATEGORY_SET_BR,
  CATEGORY_GET_PR,
  CATEGORY_SET_PR,
  CATEGORY_IP2GR,
  CATEGORY_SET_CR,
  CATEGORY_GET_CR,
  CATEGORY_SET_MR,
  CATEGORY_GET_MR,
  CATEGORY_GET_PSR,
  CATEGORY_SET_PSR,
  CATEGORY_GET_MASK,
  CATEGORY_SET_MASK,
  CATEGORY_PURGE_TRANSLATION_CACHE,
  CATEGORY_TRANSLATION,
  CATEGORY_INT_DEP,
  CATEGORY_INT_EXT,
  CATEGORY_SHIFT,
  CATEGORY_FLT_SQRT,
  CATEGORY_FLT_DIV,
  CATEGORY_CLEAR_RRB,
  CATEGORY_COVER,
  CATEGORY_EPC,
  CATEGORY_BSW,
  CATEGORY_BMISC,
  CATEGORY_MMISC,
  CATEGORY_FLT_OP,
  CATEGORY_FLT_CVT,
  CATEGORY_FLT_STATUS,
  CATEGORY_FLT_CLASS,
  CATEGORY_FLT_MULACC,
  CATEGORY_FLT_SELECT,
  CATEGORY_VMSW,
  CATEGORY_LAST
}
enum  LEVEL_BASE::PREDICATE_IPF {
  PREDICATE_PR0 = REG_PBASE + 0,
  PREDICATE_PR1 = REG_PBASE + 1,
  PREDICATE_PR2 = REG_PBASE + 2,
  PREDICATE_PR3 = REG_PBASE + 3,
  PREDICATE_PR4 = REG_PBASE + 4,
  PREDICATE_PR5 = REG_PBASE + 5,
  PREDICATE_PR6 = REG_PBASE + 6,
  PREDICATE_PR7 = REG_PBASE + 7,
  PREDICATE_PR8 = REG_PBASE + 8,
  PREDICATE_PR9 = REG_PBASE + 9,
  PREDICATE_PR15 = REG_PBASE + 15,
  PREDICATE_PR63 = REG_PBASE + 63,
  LEVEL_BASE::PREDICATE_ALWAYS_TRUE,
  PREDICATE_ALWAYS_TRUE = PREDICATE_PR0,
  PREDICATE_INVALID,
  PREDICATE_INVALID,
  PREDICATE_LAST,
  PREDICATE_LAST
}
enum  LEVEL_BASE::FCLASS_FLAGS {
  FCLASS_NAT = 0x4000000,
  FCLASS_QNAN = 0x2000000,
  FCLASS_SNAN = 0x1000000,
  FCLASS_POS = 0x200000000,
  FCLASS_NEG = 0x400000000,
  FCLASS_ZERO = 0x600100000,
  FCLASS_UNORM = 0x600200000,
  FCLASS_NORM = 0x600400000,
  FCLASS_INF = 0x600800000
}
enum  LEVEL_BASE::TYPE_CMP {
  TYPE_CMP_INVALID,
  TYPE_CMP_LT,
  TYPE_CMP_LTU,
  TYPE_CMP_LE,
  TYPE_CMP_EQ,
  TYPE_CMP_NE,
  TYPE_CMP_GT,
  TYPE_CMP_GE,
  TYPE_CMP_Z,
  TYPE_CMP_NZ,
  TYPE_CMP_UNORD,
  TYPE_CMP_LAST
}
enum  LEVEL_BASE::TYPE_BWH {
  TYPE_BWH_INVALID,
  TYPE_BWH_SPNT,
  TYPE_BWH_SPTK,
  TYPE_BWH_DPNT,
  TYPE_BWH_DPTK,
  TYPE_BWH_LAST
}
enum  LEVEL_BASE::TYPE_PH {
  TYPE_PH_INVALID,
  TYPE_PH_FEW,
  TYPE_PH_MANY,
  TYPE_PH_LAST
}
enum  LEVEL_BASE::TYPE_BRA {
  TYPE_BRA_INVALID,
  TYPE_BRA_COND,
  TYPE_BRA_WEXIT,
  TYPE_BRA_WTOP,
  TYPE_BRA_CEXIT,
  TYPE_BRA_CTOP,
  TYPE_BRA_CLOOP,
  TYPE_BRA_CALL,
  TYPE_BRA_CALL_PSEUDO,
  TYPE_BRA_RET_PSEUDO,
  TYPE_BRA_IA,
  TYPE_BRA_RET,
  TYPE_BRA_LAST
}
enum  LEVEL_BASE::TYPE_CHK {
  TYPE_CHK_INVALID,
  TYPE_CHK_NAT,
  TYPE_CHK_ALAT,
  TYPE_CHK_FPFLAGS,
  TYPE_CHK_LAST
}
enum  LEVEL_BASE::TYPE_MEM {
  TYPE_MEM_INVALID,
  TYPE_MEM_NORMAL,
  TYPE_MEM_S,
  TYPE_MEM_A,
  TYPE_MEM_SA,
  TYPE_MEM_BIAS,
  TYPE_MEM_ACQ,
  TYPE_MEM_FILL,
  TYPE_MEM_CCLR,
  TYPE_MEM_CNC,
  TYPE_MEM_CCLRACQ,
  TYPE_MEM_REL,
  TYPE_MEM_SPILL,
  TYPE_MEM_EXCL,
  TYPE_MEM_FAULT,
  TYPE_MEM_FAULTEXCL,
  TYPE_MEM_LAST
}
enum  LEVEL_BASE::TYPE_MEMHINT {
  TYPE_MEMHINT_INVALID,
  TYPE_MEMHINT_NORMAL,
  TYPE_MEMHINT_NT1,
  TYPE_MEMHINT_NT2,
  TYPE_MEMHINT_NTA,
  TYPE_MEMHINT_LAST
}
enum  LEVEL_BASE::TYPE_PRED {
  TYPE_PRED_INVALID,
  TYPE_PRED_NORMAL,
  TYPE_PRED_UNC,
  TYPE_PRED_AND,
  TYPE_PRED_OR,
  TYPE_PRED_ORANDCM,
  TYPE_PRED_LAST
}
enum  LEVEL_BASE::TYPE_SIZE {
  TYPE_SIZE_INVALID,
  TYPE_SIZE_1,
  TYPE_SIZE_2,
  TYPE_SIZE_4,
  TYPE_SIZE_8,
  TYPE_SIZE_16,
  TYPE_SIZE_FS,
  TYPE_SIZE_FD,
  TYPE_SIZE_F8,
  TYPE_SIZE_FE,
  TYPE_SIZE_FF,
  TYPE_SIZE_FPS,
  TYPE_SIZE_FPD,
  TYPE_SIZE_FP8,
  TYPE_SIZE_F,
  TYPE_SIZE_LAST
}
enum  LEVEL_CORE::INS_PROP_IPF {
  INS_PROP_IPF_LOAD_SPECULATIVE = 1000,
  INS_PROP_IPF_LOAD_CHECK,
  INS_PROP_IPF_LOAD_ADVANCED,
  INS_PROP_IPF_LOAD_ORDERED,
  INS_PROP_IPF_LOAD_BIASED
}

Functions

TYPE_MEM LEVEL_CORE::INS_MemType (INS ins)
TYPE_PRED LEVEL_CORE::INS_PredType (INS ins)
TYPE_BRA LEVEL_CORE::INS_BraType (INS ins)
TYPE_CHK LEVEL_CORE::INS_ChkType (INS ins)
TYPE_SIZE LEVEL_CORE::INS_SizeType (INS ins)

Detailed Description

Itanium-specific functions to examine an instruction.

Enumeration Type Documentation

enum LEVEL_BASE::CATEGORY_IPF
 

Instruction Category abstraction for IPF.

enum LEVEL_BASE::FCLASS_FLAGS
 

Options for fclass instruction. See the manual for the meaning of these mnemonics.

To generate these literal values, I wrote an example in the assembler and got the immediate value from pin.log.

enum LEVEL_CORE::INS_PROP_IPF
 

IPF properties

enum LEVEL_BASE::PREDICATE_IPF
 

Predicate abstraction for IPF.

Enumerator:
PREDICATE_ALWAYS_TRUE  No predication on IA32.

enum LEVEL_BASE::TYPE_BRA
 

x

enum LEVEL_BASE::TYPE_BWH
 

x

enum LEVEL_BASE::TYPE_CHK
 

x

enum LEVEL_BASE::TYPE_CMP
 

x

enum LEVEL_BASE::TYPE_MEM
 

x

enum LEVEL_BASE::TYPE_MEMHINT
 

x

enum LEVEL_BASE::TYPE_PH
 

x

enum LEVEL_BASE::TYPE_PRED
 

x

enum LEVEL_BASE::TYPE_SIZE
 

x


Function Documentation

TYPE_BRA LEVEL_CORE::INS_BraType INS  ins  ) 
 

Branch type of ins, from RawInsTab

TYPE_CHK LEVEL_CORE::INS_ChkType INS  ins  ) 
 

Branch type of ins, from RawInsTab

TYPE_MEM LEVEL_CORE::INS_MemType INS  ins  ) 
 

Memory type of ins, from RawInsTab

TYPE_PRED LEVEL_CORE::INS_PredType INS  ins  ) 
 

Predicate type of ins, from RawInsTab

TYPE_SIZE LEVEL_CORE::INS_SizeType INS  ins  ) 
 

Size type of ins, from RawInsTab


Generated on Tue Jan 16 00:09:08 2007 for Pin by  doxygen 1.4.6