Esempio n. 1
0
/*           from  to    eq            verify          reg           gen             fu  */    \
_OE( _UnPP(  M,    R,    NONE ),       V_NO,           RG_##reg,     G_LOAD_ADDR,    FU_ALU ), \
_OE( _Un(    M,    M,    NONE ),       V_NO,           RG_##reg,     R_MOVRESTEMP,   FU_NO ),  \
_OE( _Un(    M,    ANY,  NONE ),       V_NO,           RG_##reg##_NEED,G_UNKNOWN,    FU_NO ),  \
_OE( _Un(    ANY,  ANY,  NONE ),       V_NO,           RG_##reg,     R_FORCEOP1MEM,  FU_NO ),  \
_OE( _Un(    ANY,  ANY,  NONE ),       V_NO,           RG_,          G_UNKNOWN,      FU_NO ),  \
};

LOAD_TABLE( LoadAddr2, WORD );
LOAD_TABLE( LoadAddr8, QWORD );

static  opcode_entry    LoadAddr4[] = {
/*************************************/
/*           from  to    eq            verify          reg           gen             fu  */
_OE( _Un(    M,    ANY,  NONE ),       V_OFFSETZERO,   RG_DWORD,     R_MOVEINDEX,    FU_NO ),
_OE( _UnPP(  M,    R,    NONE ),       V_NO,           RG_DWORD,     G_LOAD_ADDR,    FU_ALU ),
_OE( _Un(    M,    M,    NONE ),       V_NO,           RG_DWORD,     R_MOVRESTEMP,   FU_NO ),
_OE( _Un(    M,    ANY,  NONE ),       V_NO,           RG_DWORD_NEED,G_UNKNOWN,      FU_NO ),
_OE( _Un(    ANY,  ANY,  NONE ),       V_NO,           RG_DWORD,     R_FORCEOP1MEM,  FU_NO ),
_OE( _Un(    ANY,  ANY,  NONE ),       V_NO,           RG_,          G_UNKNOWN,      FU_NO ),
};

opcode_entry    Conv[] = {
/************************/
/*           from  to    eq            verify          reg           gen             fu  */
_OE( _Un(    ANY,  ANY, NONE ),        V_NO,           RG_,          R_DOCVT,        FU_NO ),
};

opcode_entry    NegF[] = {
/************************/
/*           from  to    eq            verify          reg           gen             fu  */
Esempio n. 2
0
*
* Description:  Reduction tables for x87 instructions.
*
****************************************************************************/


#include "cgstd.h"
#include "coderep.h"
#include "model.h"
#include "pattern.h"
#include "regset.h"


opcode_entry    Move87L[] = {
/*       op    res   eq        verify       gen            reg          fu*/
{_UnPP(  R|M|U,R|M|U,EQ_R1 ),  V_NO,        G_NO,          RG_,         FU_NO},
{_UnPP(  ANY,  ANY,  NONE ),   V_NO,        G_UNKNOWN,     RG_8087_NEED,FU_NO},
};

opcode_entry    Move87D[] = {
/***********************************/
/*       op    res   eq        verify       gen            reg          fu*/
{_UnPP(  R|M|U,R|M|U,EQ_R1 ),  V_NO,        G_NO,          RG_,         FU_NO},
{_UnPP(  M,    M,    NONE  ),  V_SAME_LOCN, G_NO,          RG_,         FU_NO},
#if _TARGET & _TARG_80386
{_UnPP(  M,    M,    NONE  ),  V_SAME_TYPE, R_SPLITMOVE,   RG_,         FU_NO},
{_UnPP(  M|C,  R,    NONE  ),  V_NO,        R_SPLITMOVE,   RG_8,        FU_NO},
{_UnPP(  R,    M,    NONE  ),  V_NO,        R_SPLITMOVE,   RG_8,        FU_NO},
{_UnPP(  C,    M,    NONE  ),  V_SAME_TYPE, R_SPLITMOVE,   RG_8,        FU_NO},
#else
{_UnPP(  M,    M,    NONE  ),  V_SAME_TYPE, R_SPLIT8,      RG_,         FU_NO},
Esempio n. 3
0
/********************************/                                                      \
/*       op    res   eq          verify          gen             reg fu*/               \
_UnPP(  M,    R,    NONE ),     V_NO,           G_LOAD_ADDR,    RG_##reg,FU_ALU,                \
_Un(    M,    M,    NONE ),     V_NO,           R_MOVRESTEMP,   RG_##reg,FU_NO,         \
_Un(    M,    ANY,  NONE ),     V_NO,           G_UNKNOWN,      RG_##reg##_NEED,FU_NO,  \
_Un(    ANY,  ANY,  NONE ),     V_NO,           R_FORCEOP1MEM,  RG_##reg,FU_NO,         \
};

LOAD_TABLE( LoadAddr2, WORD );
LOAD_TABLE( LoadAddr8, QWORD );

static  opcode_entry    LoadAddr4[] = {
/*************************************/
/*       op    res   eq          verify          gen             reg fu*/
_Un(    M,    ANY,  NONE ),     V_OFFSETZERO,   R_MOVEINDEX,    RG_DWORD,FU_NO,
_UnPP(  M,    R,    NONE ),     V_NO,           G_LOAD_ADDR,    RG_DWORD,FU_ALU,
_Un(    M,    M,    NONE ),     V_NO,           R_MOVRESTEMP,   RG_DWORD,FU_NO,
_Un(    M,    ANY,  NONE ),     V_NO,           G_UNKNOWN,      RG_DWORD_NEED,FU_NO,
_Un(    ANY,  ANY,  NONE ),     V_NO,           R_FORCEOP1MEM,  RG_DWORD,FU_NO,
};

opcode_entry    Conv[] = {
/************************/
/*       op1   res  eq             verify          gen           reg      fu */
_Un(     ANY,  ANY, NONE ),        V_NO,           R_DOCVT,      RG_,     FU_NO,
};

opcode_entry    NegF[] = {
/************************/
/*       op1   res   eq            verify          gen           reg      fu */
_Un(    R,    R,    NONE ),        V_NO,           G_UNARY,      RG_FLOAT,FU_NO,