diff options
Diffstat (limited to 'backend/src/backend/gen_insn_selection.hpp')
-rw-r--r-- | backend/src/backend/gen_insn_selection.hpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/backend/src/backend/gen_insn_selection.hpp b/backend/src/backend/gen_insn_selection.hpp index aa433883..664a9fad 100644 --- a/backend/src/backend/gen_insn_selection.hpp +++ b/backend/src/backend/gen_insn_selection.hpp @@ -96,8 +96,8 @@ namespace gbe const GenRegister &src(uint32_t srcID) const { return regs[dstNum+srcID]; } /*! Set debug infomation to selection */ void setDBGInfo(DebugInfo in) { DBGInfo = in; } - /*! No more than 40 sources (40 sources are used by vme for payload passing and setting) */ - enum { MAX_SRC_NUM = 40 }; + /*! No more than 64 sources (48 sources are used by vme for payload passing and setting) */ + enum { MAX_SRC_NUM = 64 }; /*! No more than 17 destinations (17 used by image block read8) */ enum { MAX_DST_NUM = 17 }; /*! State of the instruction (extra fields neeed for the encoding) */ @@ -143,6 +143,10 @@ namespace gbe uint16_t vme_search_path_lut:3; uint16_t lut_sub:2; }; + struct { + uint16_t ime_bti:8; + uint16_t ime_msg_type:2; + }; uint32_t barrierType; uint32_t waitType; bool longjmp; @@ -172,7 +176,7 @@ namespace gbe /*! Number of destinations */ uint8_t dstNum:5; /*! Number of sources */ - uint8_t srcNum:6; + uint8_t srcNum:7; /*! To store various indices */ uint32_t index; /*! For BRC/IF to store the UIP */ @@ -192,6 +196,7 @@ namespace gbe case SEL_OP_DWORD_GATHER: return extra.function; case SEL_OP_SAMPLE: return extra.rdbti; case SEL_OP_VME: return extra.vme_bti; + case SEL_OP_IME: return extra.ime_bti; case SEL_OP_TYPED_WRITE: return extra.bti; default: GBE_ASSERT(0); @@ -209,6 +214,7 @@ namespace gbe case SEL_OP_DWORD_GATHER: extra.function = bti; return; case SEL_OP_SAMPLE: extra.rdbti = bti; return; case SEL_OP_VME: extra.vme_bti = bti; return; + case SEL_OP_IME: extra.ime_bti = bti; return; case SEL_OP_TYPED_WRITE: extra.bti = bti; return; default: GBE_ASSERT(0); |