summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPan Xiuli <xiuli.pan@intel.com>2015-11-24 15:51:40 +0800
committerYang Rong <rong.r.yang@intel.com>2015-11-24 16:58:48 +0800
commit6b13eaaa93b3e1089b17e7996624fa3017e8a60e (patch)
tree813e32f9d2e14b90352913ee7e39d8d4ddbca728
parente5aceb38782e076d61cd4fed4f363aace614dc47 (diff)
Backend: enable to choose notification register
There are 3 notification can be used by wait, so we should be able to choose which one we'd like to use. Also the 3 reg is n0.0 n0.1 and n0.2 so also change the function name. Signed-off-by: Pan Xiuli <xiuli.pan@intel.com> Reviewed-by: Yang Rong <rong.r.yang@intel.com>
-rw-r--r--backend/src/backend/gen_encoder.cpp4
-rw-r--r--backend/src/backend/gen_encoder.hpp2
-rw-r--r--backend/src/backend/gen_register.hpp4
3 files changed, 5 insertions, 5 deletions
diff --git a/backend/src/backend/gen_encoder.cpp b/backend/src/backend/gen_encoder.cpp
index b153a2cf..1ad4f012 100644
--- a/backend/src/backend/gen_encoder.cpp
+++ b/backend/src/backend/gen_encoder.cpp
@@ -994,9 +994,9 @@ namespace gbe
this->setSrc1(insn, src1);
}
- void GenEncoder::WAIT(void) {
+ void GenEncoder::WAIT(uint32_t n) {
GenNativeInstruction *insn = this->next(GEN_OPCODE_WAIT);
- GenRegister src = GenRegister::notification1();
+ GenRegister src = GenRegister::notification0(n);
this->setDst(insn, GenRegister::null());
this->setSrc0(insn, src);
this->setSrc1(insn, GenRegister::null());
diff --git a/backend/src/backend/gen_encoder.hpp b/backend/src/backend/gen_encoder.hpp
index e9945e8b..e4f5ff4a 100644
--- a/backend/src/backend/gen_encoder.hpp
+++ b/backend/src/backend/gen_encoder.hpp
@@ -162,7 +162,7 @@ namespace gbe
/*! No-op */
void NOP(void);
/*! Wait instruction (used for the barrier) */
- void WAIT(void);
+ void WAIT(uint32_t n = 0);
/*! Atomic instructions */
virtual void ATOMIC(GenRegister dst, uint32_t function, GenRegister src, GenRegister bti, uint32_t srcNum);
/*! Untyped read (upto 4 channels) */
diff --git a/backend/src/backend/gen_register.hpp b/backend/src/backend/gen_register.hpp
index 0a077f20..5c813be9 100644
--- a/backend/src/backend/gen_register.hpp
+++ b/backend/src/backend/gen_register.hpp
@@ -828,10 +828,10 @@ namespace gbe
GEN_HORIZONTAL_STRIDE_0);
}
- static INLINE GenRegister notification1(void) {
+ static INLINE GenRegister notification0(uint32_t subnr) {
return GenRegister(GEN_ARCHITECTURE_REGISTER_FILE,
GEN_ARF_NOTIFICATION_COUNT,
- 0,
+ subnr,
GEN_TYPE_UD,
GEN_VERTICAL_STRIDE_0,
GEN_WIDTH_1,