summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/brw_defines.h1
-rw-r--r--src/brw_structs.h8
-rw-r--r--src/gram.y17
-rw-r--r--src/lex.l1
4 files changed, 25 insertions, 2 deletions
diff --git a/src/brw_defines.h b/src/brw_defines.h
index 471cef9..2ec8050 100644
--- a/src/brw_defines.h
+++ b/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/src/brw_structs.h b/src/brw_structs.h
index d93c39f..3a3b160 100644
--- a/src/brw_structs.h
+++ b/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/src/gram.y b/src/gram.y
index 8cb6bfa..fce603d 100644
--- a/src/gram.y
+++ b/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/src/lex.l b/src/lex.l
index 61b5d7a..626042f 100644
--- a/src/lex.l
+++ b/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; }