From 55d81c4ce7ee5ec79fcaacf2c22d42580b49cf82 Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Fri, 8 Oct 2010 13:53:22 +0800 Subject: [PATCH] add AccWrCtrl flag on Sandybridge Signed-off-by: Xiang, Haihao --- assembler/src/brw_defines.h | 3 +++ assembler/src/brw_structs.h | 3 ++- assembler/src/gram.y | 6 +++++- assembler/src/lex.l | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index 7812d721..4921d348 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -552,6 +552,9 @@ #define BRW_MASK_ENABLE 0 #define BRW_MASK_DISABLE 1 +#define BRW_ACCWRCTRL_NONE 0 +#define BRW_ACCWRCTRL_ACCWRCTRL 1 + #define BRW_OPCODE_MOV 1 #define BRW_OPCODE_SEL 2 #define BRW_OPCODE_NOT 4 diff --git a/assembler/src/brw_structs.h b/assembler/src/brw_structs.h index 32a52df5..515d2aa5 100644 --- a/assembler/src/brw_structs.h +++ b/assembler/src/brw_structs.h @@ -1054,7 +1054,8 @@ struct brw_instruction GLuint predicate_inverse:1; /* 0x00100000 */ GLuint execution_size:3; /* 0x00e00000 */ GLuint destreg__conditionalmod:4; /* destreg - send, conditionalmod - others */ - GLuint pad0:2; /* 0x30000000 */ + GLuint acc_wr_control:1; /* 0x10000000 */ + GLuint pad0:1; /* 0x20000000 */ GLuint debug_control:1; /* 0x40000000 */ GLuint saturate:1; /* 0x80000000 */ } header; diff --git a/assembler/src/gram.y b/assembler/src/gram.y index f57e97cb..fcbbd814 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -88,7 +88,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg, %token TYPE_VF TYPE_HF TYPE_V TYPE_F %token ALIGN1 ALIGN16 SECHALF COMPR SWITCH ATOMIC NODDCHK NODDCLR -%token MASK_DISABLE BREAKPOINT EOT +%token MASK_DISABLE BREAKPOINT ACCWRCTRL EOT %token SEQ ANY2H ALL2H ANY4H ALL4H ANY8H ALL8H ANY16H ALL16H ANYV ALLV %token ZERO EQUAL NOT_ZERO NOT_EQUAL GREATER GREATER_EQUAL LESS LESS_EQUAL @@ -1605,6 +1605,9 @@ instoption_list: case BREAKPOINT: $$.header.debug_control = BRW_DEBUG_BREAKPOINT; break; + case ACCWRCTRL: + $$.header.acc_wr_control = BRW_ACCWRCTRL_ACCWRCTRL; + break; case EOT: /* XXX: EOT shouldn't be an instoption, I don't think */ $$.bits3.generic.end_of_thread = 1; @@ -1627,6 +1630,7 @@ instoption: ALIGN1 { $$ = ALIGN1; } | NODDCLR { $$ = NODDCLR; } | MASK_DISABLE { $$ = MASK_DISABLE; } | BREAKPOINT { $$ = BREAKPOINT; } + | ACCWRCTRL { $$ = ACCWRCTRL; } | EOT { $$ = EOT; } ; diff --git a/assembler/src/lex.l b/assembler/src/lex.l index 8d7a4f0d..ead12af5 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -269,6 +269,7 @@ extern char *input_filename; "mask_disable" { return MASK_DISABLE; } "nomask" { return MASK_DISABLE; } "breakpoint" { return BREAKPOINT; } +"accwrctrl" { return ACCWRCTRL; } "EOT" { return EOT; } /* extended math functions */