summaryrefslogtreecommitdiff
path: root/assembler
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2012-10-22 16:13:51 -0400
committerDamien Lespiau <damien.lespiau@intel.com>2013-03-04 15:54:35 +0000
commit93f2a4fc93b70d37a207589800f66ab8be81bd6e (patch)
treee02950b6af166fdc6bf05332477fd2f5c2ebf04c /assembler
parent495c4e14e7417610bf75ca397450b4b8447e29a3 (diff)
Add the CRE enginee for HSW+
This is also for media encoding like VME, which can do the operation of check & refinement. Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Diffstat (limited to 'assembler')
-rw-r--r--assembler/src/brw_defines.h1
-rw-r--r--assembler/src/brw_structs.h8
-rw-r--r--assembler/src/gram.y17
-rw-r--r--assembler/src/lex.l1
4 files changed, 25 insertions, 2 deletions
diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h
index 471cef97..2ec8050c 100644
--- a/assembler/src/brw_defines.h
+++ b/assembler/src/brw_defines.h
@@ -730,6 +730,7 @@
#define BRW_MESSAGE_TARGET_VME 8
#define BRW_MESSAGE_TARGET_DP_CC 9 /* data port constant cache */
#define BRW_MESSAGE_TARGET_DP_DC 10 /* data port data cache */
+#define BRW_MESSAGE_TARGET_CRE 0x0d /* check & refinement enginee */
#define BRW_SAMPLER_RETURN_FORMAT_FLOAT32 0
#define BRW_SAMPLER_RETURN_FORMAT_UINT32 2
diff --git a/assembler/src/brw_structs.h b/assembler/src/brw_structs.h
index d93c39f3..3a3b1601 100644
--- a/assembler/src/brw_structs.h
+++ b/assembler/src/brw_structs.h
@@ -1550,7 +1550,13 @@ struct brw_instruction
GLuint pad0:4;
GLuint header_present:1;
} vme_gen6;
-
+ struct {
+ GLuint binding_table_index:8;
+ GLuint pad0:5;
+ GLuint message_type:2;
+ GLuint pad1:4;
+ GLuint header_present:1;
+ } cre_gen75;
struct {
GLuint pad:19;
GLuint header_present:1;
diff --git a/assembler/src/gram.y b/assembler/src/gram.y
index 8cb6bfab..fce603dd 100644
--- a/assembler/src/gram.y
+++ b/assembler/src/gram.y
@@ -154,7 +154,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
%token <integer> CALL RET
%token <integer> BRD BRC
-%token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER VME DATA_PORT
+%token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER VME DATA_PORT CRE
%token MSGLEN RETURNLEN
%token <integer> ALLOCATE USED COMPLETE TRANSPOSE INTERLEAVE
@@ -1428,6 +1428,21 @@ msgtarget: NULL_TOKEN
YYERROR;
}
}
+ | CRE LPAREN INTEGER COMMA INTEGER RPAREN
+ {
+ if (gen_level < 75) {
+ fprintf (stderr, "Below Gen7.5 donesn't have CRE function\n");
+ YYERROR;
+ }
+ $$.bits3.generic.msg_target =
+ BRW_MESSAGE_TARGET_CRE;
+
+ $$.bits2.send_gen5.sfid =
+ BRW_MESSAGE_TARGET_CRE;
+ $$.bits3.cre_gen75.binding_table_index = $3;
+ $$.bits3.cre_gen75.message_type = $5;
+ $$.bits3.generic_gen5.header_present = 1;
+ }
| DATA_PORT LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA
INTEGER COMMA INTEGER COMMA INTEGER RPAREN
diff --git a/assembler/src/lex.l b/assembler/src/lex.l
index 61b5d7a0..626042f6 100644
--- a/assembler/src/lex.l
+++ b/assembler/src/lex.l
@@ -153,6 +153,7 @@ yylval.integer = BRW_CHANNEL_W;
"urb" { return URB; }
"thread_spawner" { return THREAD_SPAWNER; }
"vme" { return VME; }
+"cre" { return CRE; }
"data_port" { return DATA_PORT; }
"allocate" { return ALLOCATE; }