Supporting instruction "reverse bits"

The bfrev instruction component-wise reverses all the bits in src0
and stores the results in dst.
This commit is contained in:
Homer Hsing 2012-09-14 08:32:12 +08:00 committed by Damien Lespiau
parent 4d6337dfaf
commit d4f48a7271
3 changed files with 4 additions and 2 deletions

View File

@ -568,6 +568,7 @@
#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

View 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:

View 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; }