diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index dc13b8e1..7c5c29fe 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -569,6 +569,7 @@ #define BRW_OPCODE_CMP 16 #define BRW_OPCODE_CMPN 17 #define BRW_OPCODE_BFE 24 +#define BRW_OPCODE_BFI1 25 #define BRW_OPCODE_BFI2 26 #define BRW_OPCODE_JMPI 32 #define BRW_OPCODE_IF 34 diff --git a/assembler/src/gram.y b/assembler/src/gram.y index f3f3a60f..a0c65f3a 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -115,7 +115,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg, %token MOV FRC RNDU RNDD RNDE RNDZ NOT LZD %token MUL MAC MACH LINE SAD2 SADA2 DP4 DPH DP3 DP2 %token AVG ADD SEL AND OR XOR SHR SHL ASR CMP CMPN PLN -%token ADDC +%token ADDC BFI1 %token SEND NOP JMPI IF IFF WHILE ELSE BREAK CONT HALT MSAVE %token PUSH MREST POP WAIT DO ENDIF ILLEGAL %token MATH_INST @@ -492,7 +492,7 @@ binaryaccinstruction: ; binaryaccop: AVG | ADD | SEL | AND | OR | XOR | SHR | SHL | ASR | CMP | CMPN | PLN - | ADDC + | ADDC | BFI1 ; trinaryop: MAD | LRP | BFE | BFI2 diff --git a/assembler/src/lex.l b/assembler/src/lex.l index b1620334..681ce48f 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -86,6 +86,7 @@ yylval.integer = BRW_CHANNEL_W; "mad" { yylval.integer = BRW_OPCODE_MAD; return MAD; } "lrp" { yylval.integer = BRW_OPCODE_LRP; return LRP; } "bfe" { yylval.integer = BRW_OPCODE_BFE; return BFE; } +"bfi1" { yylval.integer = BRW_OPCODE_BFI1; return BFI1; } "bfi2" { yylval.integer = BRW_OPCODE_BFI2; return BFI2; } "mul" { yylval.integer = BRW_OPCODE_MUL; return MUL; } "mac" { yylval.integer = BRW_OPCODE_MAC; return MAC; }