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>
This commit is contained in:
Zhao Yakui 2014-01-23 13:26:10 +08:00 committed by Damien Lespiau
parent 504f5594e7
commit e48666947d

View File

@ -1609,7 +1609,27 @@ msgtarget: NULL_TOKEN
| READ LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA | READ LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA
INTEGER RPAREN 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_sfid(GEN8(&$$), GEN6_SFID_DATAPORT_SAMPLER_CACHE);
gen8_set_header_present(GEN8(&$$), 1); gen8_set_header_present(GEN8(&$$), 1);
gen8_set_dp_binding_table_index(GEN8(&$$), $3); gen8_set_dp_binding_table_index(GEN8(&$$), $3);