Supporting instruction "reverse bits"
authorHomer Hsing <homer.xing@intel.com>
Fri, 14 Sep 2012 00:32:12 +0000 (08:32 +0800)
committerDamien Lespiau <damien.lespiau@intel.com>
Mon, 4 Mar 2013 15:54:31 +0000 (15:54 +0000)
The bfrev instruction component-wise reverses all the bits in src0
and stores the results in dst.

assembler/src/brw_defines.h
assembler/src/gram.y
assembler/src/lex.l

index 7c5c29f..9b7d871 100644 (file)
 #define BRW_OPCODE_ASR        12
 #define BRW_OPCODE_CMP        16
 #define BRW_OPCODE_CMPN       17
+#define BRW_OPCODE_BFREV      23
 #define BRW_OPCODE_BFE        24
 #define BRW_OPCODE_BFI1       25
 #define BRW_OPCODE_BFI2       26
index a0c65f3..44f5476 100644 (file)
@@ -115,7 +115,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
 %token <integer> MOV FRC RNDU RNDD RNDE RNDZ NOT LZD
 %token <integer> MUL MAC MACH LINE SAD2 SADA2 DP4 DPH DP3 DP2
 %token <integer> AVG ADD SEL AND OR XOR SHR SHL ASR CMP CMPN PLN
-%token <integer> ADDC BFI1
+%token <integer> ADDC BFI1 BFREV
 %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
@@ -417,7 +417,7 @@ unaryinstruction:
                }
 ;
 
-unaryop:       MOV | FRC | RNDU | RNDD | RNDE | RNDZ | NOT | LZD
+unaryop:       MOV | FRC | RNDU | RNDD | RNDE | RNDZ | NOT | LZD | BFREV
 ;
 
 binaryinstruction:
index 681ce48..16c464a 100644 (file)
@@ -88,6 +88,7 @@ yylval.integer = BRW_CHANNEL_W;
 "bfe" { yylval.integer = BRW_OPCODE_BFE; return BFE; }
 "bfi1" { yylval.integer = BRW_OPCODE_BFI1; return BFI1; }
 "bfi2" { yylval.integer = BRW_OPCODE_BFI2; return BFI2; }
+"bfrev" { yylval.integer = BRW_OPCODE_BFREV; return BFREV; }
 "mul" { yylval.integer = BRW_OPCODE_MUL; return MUL; }
 "mac" { yylval.integer = BRW_OPCODE_MAC; return MAC; }
 "mach" { yylval.integer = BRW_OPCODE_MACH; return MACH; }