summaryrefslogtreecommitdiff
path: root/assembler
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2014-01-23 13:26:10 +0800
committerDamien Lespiau <damien.lespiau@intel.com>2014-09-30 12:21:03 +0100
commite48666947df43814b89c4280e2c2208274628542 (patch)
treee2afbeb14b1fe248bede10a6b2aa8eab954de61b /assembler
parent504f5594e7f2e78ec828a3b30bbb749a3bc91472 (diff)
assembler/skl: update read(...)
READ(...) is used for Render Target read and Media Block read. But there is no sampler cache agent on gen9. At the same time two message types don't share the same cache agent any more. So a parameter is needed for cache agent. The 2th parameter of read(...) is not used for gen6/gen7/gen8. Hence it is reused as cache agent for SKL as that on ILK. Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Diffstat (limited to 'assembler')
-rw-r--r--assembler/gram.y22
1 files changed, 21 insertions, 1 deletions
diff --git a/assembler/gram.y b/assembler/gram.y
index e56533d7..157ce793 100644
--- a/assembler/gram.y
+++ b/assembler/gram.y
@@ -1609,7 +1609,27 @@ msgtarget: NULL_TOKEN
| READ LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA
INTEGER RPAREN
{
- if (IS_GENp(8)) {
+ if (IS_GENp(9)) {
+ if ($5 != 0 &&
+ $5 != GEN6_SFID_DATAPORT_RENDER_CACHE &&
+ $5 != GEN7_SFID_DATAPORT_DATA_CACHE &&
+ $5 != HSW_SFID_DATAPORT_DATA_CACHE1 &&
+ $5 != SKL_SFID_DATAPORT_DCR0 &&
+ $5 != SKL_SFID_DATAPORT_DATA_CACHE2) {
+ error (&@9, "error: wrong cache type\n");
+ }
+
+ if ($5 == 0)
+ gen8_set_sfid(GEN8(&$$), HSW_SFID_DATAPORT_DATA_CACHE1);
+ else
+ gen8_set_sfid(GEN8(&$$), $5);
+
+ gen8_set_header_present(GEN8(&$$), 1);
+ gen8_set_dp_binding_table_index(GEN8(&$$), $3);
+ gen8_set_dp_message_control(GEN8(&$$), $7);
+ gen8_set_dp_message_type(GEN8(&$$), $9);
+ gen8_set_dp_category(GEN8(&$$), 0);
+ } else if (IS_GENp(8)) {
gen8_set_sfid(GEN8(&$$), GEN6_SFID_DATAPORT_SAMPLER_CACHE);
gen8_set_header_present(GEN8(&$$), 1);
gen8_set_dp_binding_table_index(GEN8(&$$), $3);