From b1ef3bc209f2b4beece1bc84a7a01df3e80b653a Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Fri, 14 Sep 2012 09:02:01 +0800 Subject: [PATCH] Supporting integer subtraction with borrow subb: subtract unsigned integer src1 from src0. store the result in dst and store the borrow (0 or 1) as a 32-bit value in acc. --- assembler/src/brw_defines.h | 1 + assembler/src/gram.y | 4 ++-- assembler/src/lex.l | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index 0eb035d..765d7c7 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -607,6 +607,7 @@ #define BRW_OPCODE_FBL 76 #define BRW_OPCODE_CBIT 77 #define BRW_OPCODE_ADDC 78 +#define BRW_OPCODE_SUBB 79 #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 87e5c0c..21bc05f 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -119,7 +119,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 BFE BFI2 +%token MAD LRP BFE BFI2 SUBB %token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER VME DATA_PORT @@ -455,7 +455,7 @@ binaryinstruction: } ; -binaryop: MUL | MAC | MACH | LINE | SAD2 | SADA2 | DP4 | DPH | DP3 | DP2 +binaryop: MUL | MAC | MACH | LINE | SAD2 | SADA2 | DP4 | DPH | DP3 | DP2 | SUBB ; binaryaccinstruction: diff --git a/assembler/src/lex.l b/assembler/src/lex.l index cb56915..f789212 100644 --- a/assembler/src/lex.l +++ b/assembler/src/lex.l @@ -117,6 +117,7 @@ yylval.integer = BRW_CHANNEL_W; "asr" { yylval.integer = BRW_OPCODE_ASR; return ASR; } "cmp" { yylval.integer = BRW_OPCODE_CMP; return CMP; } "cmpn" { yylval.integer = BRW_OPCODE_CMPN; return CMPN; } +"subb" { yylval.integer = BRW_OPCODE_SUBB; return SUBB; } "send" { yylval.integer = BRW_OPCODE_SEND; return SEND; } "nop" { yylval.integer = BRW_OPCODE_NOP; return NOP; } -- 2.7.4