diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index 173b70ce..1fdccd9f 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -607,6 +607,7 @@ #define BRW_OPCODE_LINE 89 #define BRW_OPCODE_PLN 90 #define BRW_OPCODE_MAD 91 +#define BRW_OPCODE_LRP 92 #define BRW_OPCODE_NOP 126 #define BRW_PREDICATE_NONE 0 diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 2c454390..6c96aba7 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 +%token MAD LRP %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 +trinaryop: MAD | LRP ; trinaryinstruction: diff --git a/assembler/src/lex.l b/assembler/src/lex.l index a3949a5b..a1246277 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -84,6 +84,7 @@ yylval.integer = BRW_CHANNEL_W; "lzd" { yylval.integer = BRW_OPCODE_LZD; return LZD; } "mad" { yylval.integer = BRW_OPCODE_MAD; return MAD; } +"lrp" { yylval.integer = BRW_OPCODE_LRP; return LRP; } "mul" { yylval.integer = BRW_OPCODE_MUL; return MUL; } "mac" { yylval.integer = BRW_OPCODE_MAC; return MAC; } "mach" { yylval.integer = BRW_OPCODE_MACH; return MACH; }