Supporting integer subtraction with borrow
authorHomer Hsing <homer.xing@intel.com>
Fri, 14 Sep 2012 01:02:01 +0000 (09:02 +0800)
committerDamien Lespiau <damien.lespiau@intel.com>
Mon, 4 Mar 2013 15:54:31 +0000 (15:54 +0000)
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
assembler/src/gram.y
assembler/src/lex.l

index 0eb035d..765d7c7 100644 (file)
 #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
index 87e5c0c..21bc05f 100644 (file)
@@ -119,7 +119,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
 %token <integer> SEND NOP JMPI IF IFF WHILE ELSE BREAK CONT HALT MSAVE
 %token <integer> PUSH MREST POP WAIT DO ENDIF ILLEGAL
 %token <integer> MATH_INST
-%token <integer> MAD LRP BFE BFI2
+%token <integer> 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:
index cb56915..f789212 100644 (file)
@@ -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; }