![]() |
![]() |
![]() |
Orc Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
enum OrcSSERegister; enum OrcTargetSSEFlags; #define ORC_SSE_SHUF (a,b,c,d) void orc_sse_emit_0f (OrcCompiler *p, const char *insn_name, int code, int src, int dest); void orc_sse_emit_660f (OrcCompiler *p, const char *insn_name, int code, int src, int dest); void orc_sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code, int src, int dest); void orc_sse_emit_f30f (OrcCompiler *p, const char *insn_name, int code, int src, int dest); void orc_sse_emit_loadib (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadil (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadiw (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadpb (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadpl (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadpq (OrcCompiler *p, int reg, int value); void orc_sse_emit_loadpw (OrcCompiler *p, int reg, int value); void orc_sse_emit_pshufd (OrcCompiler *p, int shuf, int src, int dest); void orc_sse_emit_pshuflw (OrcCompiler *p, int shuf, int src, int dest); void orc_sse_emit_shiftimm (OrcCompiler *p, const char *insn_name, int code, int modrm_code, int shift, int reg); unsigned int orc_sse_get_cpu_flags (void); void orc_sse_init (void);
typedef enum { X86_XMM0 = ORC_VEC_REG_BASE, X86_XMM1, X86_XMM2, X86_XMM3, X86_XMM4, X86_XMM5, X86_XMM6, X86_XMM7, X86_XMM8, X86_XMM9, X86_XMM10, X86_XMM11, X86_XMM12, X86_XMM13, X86_XMM14, X86_XMM15 }OrcSSERegister;
typedef enum { ORC_TARGET_SSE_SSE2 = (1<<0), ORC_TARGET_SSE_SSE3 = (1<<1), ORC_TARGET_SSE_SSSE3 = (1<<2), ORC_TARGET_SSE_SSE4_1 = (1<<3), ORC_TARGET_SSE_SSE4_2 = (1<<4), ORC_TARGET_SSE_SSE4A = (1<<5), ORC_TARGET_SSE_SSE5 = (1<<6), ORC_TARGET_SSE_FRAME_POINTER = (1<<7), ORC_TARGET_SSE_SHORT_JUMPS = (1<<8), ORC_TARGET_SSE_64BIT = (1<<9) }OrcTargetSSEFlags;
#define ORC_SSE_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0))
|
|
|
|
|
|
|
void orc_sse_emit_0f (OrcCompiler *p, const char *insn_name, int code, int src, int dest);
|
|
|
|
|
|
|
|
|
void orc_sse_emit_660f (OrcCompiler *p, const char *insn_name, int code, int src, int dest);
|
|
|
|
|
|
|
|
|
void orc_sse_emit_f20f (OrcCompiler *p, const char *insn_name, int code, int src, int dest);
|
|
|
|
|
|
|
|
|
void orc_sse_emit_f30f (OrcCompiler *p, const char *insn_name, int code, int src, int dest);
|
|
|
|
|
|
|
|
|
void orc_sse_emit_loadib (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadil (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadiw (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadpb (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadpl (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadpq (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_loadpw (OrcCompiler *p, int reg, int value);
|
|
|
|
|
void orc_sse_emit_pshufd (OrcCompiler *p, int shuf, int src, int dest);
|
|
|
|
|
|
|
void orc_sse_emit_pshuflw (OrcCompiler *p, int shuf, int src, int dest);
|
|
|
|
|
|
|
void orc_sse_emit_shiftimm (OrcCompiler *p, const char *insn_name, int code, int modrm_code, int shift, int reg);
|
|
|
|
|
|
|
|
|
|
|