summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunyan He <junyan.he@linux.intel.com>2015-12-01 16:10:28 +0800
committerYang Rong <rong.r.yang@intel.com>2015-12-14 15:11:01 +0800
commit1bdab2377bb0597bb92a8006233f49c8341e5ea3 (patch)
tree2e8ac8cbd2a11a931e6b3ba5976a01ef1dcb6928
parent1236620cc6b5ad5687132e22ff888070e75332eb (diff)
Backend: Add sr0 reg helper function.
sr0 is used to specify the state reigster where we can get the state of each EU thread. Signed-off-by: Junyan He <junyan.he@linux.intel.com> Reviewed-by: Yang Rong <rong.r.yang@intel.com>
-rw-r--r--backend/src/backend/gen75_context.cpp8
-rw-r--r--backend/src/backend/gen_register.hpp10
2 files changed, 11 insertions, 7 deletions
diff --git a/backend/src/backend/gen75_context.cpp b/backend/src/backend/gen75_context.cpp
index 7d407c36..fa8b0295 100644
--- a/backend/src/backend/gen75_context.cpp
+++ b/backend/src/backend/gen75_context.cpp
@@ -44,13 +44,7 @@ namespace gbe
p->push();
p->curr.execWidth = 1;
p->curr.predicate = GEN_PREDICATE_NONE;
- GenRegister sr0 = GenRegister(GEN_ARCHITECTURE_REGISTER_FILE,
- GEN_ARF_STATE,
- 1,
- GEN_TYPE_UD,
- GEN_VERTICAL_STRIDE_8,
- GEN_WIDTH_8,
- GEN_HORIZONTAL_STRIDE_1);
+ GenRegister sr0 = GenRegister::sr(0, 1);
p->SHR(sr0, slm_index, GenRegister::immud(16));
p->pop();
}
diff --git a/backend/src/backend/gen_register.hpp b/backend/src/backend/gen_register.hpp
index 5c813be9..aa0744b3 100644
--- a/backend/src/backend/gen_register.hpp
+++ b/backend/src/backend/gen_register.hpp
@@ -828,6 +828,16 @@ namespace gbe
GEN_HORIZONTAL_STRIDE_0);
}
+ static INLINE GenRegister sr(uint32_t nr, uint32_t subnr = 0) {
+ return GenRegister(GEN_ARCHITECTURE_REGISTER_FILE,
+ GEN_ARF_STATE | nr,
+ subnr,
+ GEN_TYPE_UD,
+ GEN_VERTICAL_STRIDE_8,
+ GEN_WIDTH_8,
+ GEN_HORIZONTAL_STRIDE_1);
+ }
+
static INLINE GenRegister notification0(uint32_t subnr) {
return GenRegister(GEN_ARCHITECTURE_REGISTER_FILE,
GEN_ARF_NOTIFICATION_COUNT,