MMX

MMX — code generation for MMX

Synopsis

enum                OrcMMXRegister;
enum                OrcTargetMMXFlags;
#define             ORC_MMX_SHUF                        (a,
                                                         b,
                                                         c,
                                                         d)
void                orc_mmx_emit_0f                     (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);
void                orc_mmx_emit_660f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);
void                orc_mmx_emit_f20f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);
void                orc_mmx_emit_f30f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);
void                orc_mmx_emit_loadib                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadil                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadiw                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadpb                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadpl                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadpq                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_loadpw                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);
void                orc_mmx_emit_pshufw                 (OrcCompiler *p,
                                                         int shuf,
                                                         int src,
                                                         int dest);
void                orc_mmx_emit_shiftimm               (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int modrm_code,
                                                         int shift,
                                                         int reg);
unsigned int        orc_mmx_get_cpu_flags               (void);
void                orc_mmx_init                        (void);

Description

Details

enum OrcMMXRegister

typedef enum {
  X86_MM0 = ORC_VEC_REG_BASE,
  X86_MM1,
  X86_MM2,
  X86_MM3,
  X86_MM4,
  X86_MM5,
  X86_MM6,
  X86_MM7
} OrcMMXRegister;


enum OrcTargetMMXFlags

typedef enum {
  ORC_TARGET_MMX_MMX = (1<<0),
  ORC_TARGET_MMX_MMXEXT = (1<<1),
  ORC_TARGET_MMX_3DNOW = (1<<2),
  ORC_TARGET_MMX_3DNOWEXT = (1<<3),
  ORC_TARGET_MMX_SSSE3 = (1<<4),
  ORC_TARGET_MMX_SSE4_1 = (1<<5),
  ORC_TARGET_MMX_SSE4_2 = (1<<6),
  ORC_TARGET_MMX_FRAME_POINTER = (1<<7),
  ORC_TARGET_MMX_SHORT_JUMPS = (1<<8),
  ORC_TARGET_MMX_64BIT = (1<<9)
} OrcTargetMMXFlags;


ORC_MMX_SHUF()

#define ORC_MMX_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0))


orc_mmx_emit_0f ()

void                orc_mmx_emit_0f                     (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);


orc_mmx_emit_660f ()

void                orc_mmx_emit_660f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);


orc_mmx_emit_f20f ()

void                orc_mmx_emit_f20f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);


orc_mmx_emit_f30f ()

void                orc_mmx_emit_f30f                   (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int src,
                                                         int dest);


orc_mmx_emit_loadib ()

void                orc_mmx_emit_loadib                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadil ()

void                orc_mmx_emit_loadil                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadiw ()

void                orc_mmx_emit_loadiw                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadpb ()

void                orc_mmx_emit_loadpb                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadpl ()

void                orc_mmx_emit_loadpl                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadpq ()

void                orc_mmx_emit_loadpq                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_loadpw ()

void                orc_mmx_emit_loadpw                 (OrcCompiler *p,
                                                         int reg,
                                                         int value);


orc_mmx_emit_pshufw ()

void                orc_mmx_emit_pshufw                 (OrcCompiler *p,
                                                         int shuf,
                                                         int src,
                                                         int dest);


orc_mmx_emit_shiftimm ()

void                orc_mmx_emit_shiftimm               (OrcCompiler *p,
                                                         const char *insn_name,
                                                         int code,
                                                         int modrm_code,
                                                         int shift,
                                                         int reg);


orc_mmx_get_cpu_flags ()

unsigned int        orc_mmx_get_cpu_flags               (void);


orc_mmx_init ()

void                orc_mmx_init                        (void);