summaryrefslogtreecommitdiff
path: root/backend/src/backend/gen_insn_selection.hpp
diff options
context:
space:
mode:
authorChuanbo Weng <chuanbo.weng@intel.com>2017-06-14 00:54:13 +0800
committerYang Rong <rong.r.yang@intel.com>2017-07-12 18:29:19 +0800
commit9cb7ff4c285d892616595e5a43793f4d1408eca4 (patch)
tree335679b4a0e2fb166ae5bb0517a871cde6071529 /backend/src/backend/gen_insn_selection.hpp
parent4933bf9212c9721ca2b0e615097ed2b53fec51c3 (diff)
downloadbeignet-9cb7ff4c285d892616595e5a43793f4d1408eca4.tar.gz
Implement extension cl_intel_device_side_avc_motion_estimation.
This patch mainly contains: 1. built-in function __gen_ocl_ime implementation. 2. Lots of built-in functions of cl_intel_device_side_avc_motion_estimation are implemented. 3. This extension is required to run in simd16 mode. v2: move the utests to seprate patches one by one; as all the utests has extension function check, no need to put them in stand alone utest; uncomment the self test; fix extension check logic issue, should be && instead of ||. Signed-off-by: Chuanbo Weng <chuanbo.weng@intel.com> Signed-off-by: Xionghu Luo <xionghu.luo@intel.com> Reviewed-by: Yang Rong <rong.r.yang@intel.com>
Diffstat (limited to 'backend/src/backend/gen_insn_selection.hpp')
-rw-r--r--backend/src/backend/gen_insn_selection.hpp12
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);