diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index 1fdccd9f..aaaa5200 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -568,6 +568,8 @@ #define BRW_OPCODE_ASR 12 #define BRW_OPCODE_CMP 16 #define BRW_OPCODE_CMPN 17 +#define BRW_OPCODE_BFE 24 +#define BRW_OPCODE_BFI2 26 #define BRW_OPCODE_JMPI 32 #define BRW_OPCODE_IF 34 #define BRW_OPCODE_IFF 35 diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 6c96aba7..7af5bd51 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -118,7 +118,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg, %token SEND NOP JMPI IF IFF WHILE ELSE BREAK CONT HALT MSAVE %token PUSH MREST POP WAIT DO ENDIF ILLEGAL %token MATH_INST -%token MAD LRP +%token MAD LRP BFE BFI2 %token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER VME DATA_PORT @@ -493,7 +493,7 @@ binaryaccinstruction: binaryaccop: AVG | ADD | SEL | AND | OR | XOR | SHR | SHL | ASR | CMP | CMPN | PLN ; -trinaryop: MAD | LRP +trinaryop: MAD | LRP | BFE | BFI2 ; trinaryinstruction: diff --git a/assembler/src/lex.l b/assembler/src/lex.l index a1246277..2c80e710 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -85,6 +85,8 @@ 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; } +"bfi2" { yylval.integer = BRW_OPCODE_BFI2; return BFI2; } "mul" { yylval.integer = BRW_OPCODE_MUL; return MUL; } "mac" { yylval.integer = BRW_OPCODE_MAC; return MAC; } "mach" { yylval.integer = BRW_OPCODE_MACH; return MACH; }