From c3f1e0a732c4cbdca32544fefb887496f7b3f0c4 Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Fri, 14 Sep 2012 08:20:13 +0800 Subject: [PATCH] Supporting addc instruction The addc instruction performs component-wise addition of src0 and src1 and stores the results in dst; it also stores the carry into acc. --- assembler/src/brw_defines.h | 1 + assembler/src/gram.y | 2 ++ assembler/src/lex.l | 1 + 3 files changed, 4 insertions(+) diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index aaaa5200..519cf861 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -599,6 +599,7 @@ #define BRW_OPCODE_MAC 72 #define BRW_OPCODE_MACH 73 #define BRW_OPCODE_LZD 74 +#define BRW_OPCODE_ADDC 78 #define BRW_OPCODE_SAD2 80 #define BRW_OPCODE_SADA2 81 #define BRW_OPCODE_DP4 84 diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 7af5bd51..f3f3a60f 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -115,6 +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 SEND NOP JMPI IF IFF WHILE ELSE BREAK CONT HALT MSAVE %token PUSH MREST POP WAIT DO ENDIF ILLEGAL %token MATH_INST @@ -491,6 +492,7 @@ binaryaccinstruction: ; binaryaccop: AVG | ADD | SEL | AND | OR | XOR | SHR | SHL | ASR | CMP | CMPN | PLN + | ADDC ; trinaryop: MAD | LRP | BFE | BFI2 diff --git a/assembler/src/lex.l b/assembler/src/lex.l index 2c80e710..b1620334 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -100,6 +100,7 @@ yylval.integer = BRW_CHANNEL_W; "avg" { yylval.integer = BRW_OPCODE_AVG; return AVG; } "add" { yylval.integer = BRW_OPCODE_ADD; return ADD; } +"addc" { yylval.integer = BRW_OPCODE_ADDC; return ADDC; } "sel" { yylval.integer = BRW_OPCODE_SEL; return SEL; } "and" { yylval.integer = BRW_OPCODE_AND; return AND; } "or" { yylval.integer = BRW_OPCODE_OR; return OR; }