mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 01:46:14 +00:00
Add many more opcodes.
This commit is contained in:
parent
569990bf6b
commit
f914c6ace2
@ -562,6 +562,7 @@
|
||||
#define BRW_OPCODE_RSL 11
|
||||
#define BRW_OPCODE_ASR 12
|
||||
#define BRW_OPCODE_CMP 16
|
||||
#define BRW_OPCODE_CMPN 17
|
||||
#define BRW_OPCODE_JMPI 32
|
||||
#define BRW_OPCODE_IF 34
|
||||
#define BRW_OPCODE_IFF 35
|
||||
|
@ -66,11 +66,13 @@
|
||||
%token <integer> GENREG MSGREG ACCREG ADDRESSREG
|
||||
%token FLAGREG CONTROLREG IPREG
|
||||
|
||||
%token MOV
|
||||
%token MUL MAC MACH LINE SAD2 SADA2 DP4 DPH DP3 DP2
|
||||
%token ADD
|
||||
%token SEND NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER
|
||||
%token NOP
|
||||
%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
|
||||
%token <integer> SEND NOP JMPI IF IFF WHILE SEND ELSE BREAK CONT HALT MSAVE
|
||||
%token <integer> PUSH MREST POP WAIT DO ENDIF ILLEGAL
|
||||
|
||||
%token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER
|
||||
|
||||
%token MSGLEN RETURNLEN
|
||||
%token <integer> ALLOCATE USED COMPLETE TRANSPOSE INTERLEAVE
|
||||
@ -161,7 +163,7 @@ unaryinstruction:
|
||||
}
|
||||
;
|
||||
|
||||
unaryop: MOV { $$ = BRW_OPCODE_MOV; }
|
||||
unaryop: MOV | FRC | RNDU | RNDD | RNDE | RNDZ | NOT | LZD
|
||||
;
|
||||
|
||||
binaryinstruction:
|
||||
@ -180,8 +182,7 @@ binaryinstruction:
|
||||
}
|
||||
;
|
||||
|
||||
binaryop: MUL { $$ = BRW_OPCODE_MUL; }
|
||||
| MAC { $$ = BRW_OPCODE_MAC; }
|
||||
binaryop: MUL | MAC | MACH | LINE | SAD2 | SADA2 | DP4 | DPH | DP3 | DP2
|
||||
|
||||
binaryaccinstruction:
|
||||
predicate binaryaccop conditionalmodifier saturate execsize
|
||||
@ -199,7 +200,7 @@ binaryaccinstruction:
|
||||
}
|
||||
;
|
||||
|
||||
binaryaccop: ADD { $$ = BRW_OPCODE_ADD; }
|
||||
binaryaccop: AVG | ADD | SEL | AND | OR | XOR | SHR | SHL | ASR | CMP | CMPN
|
||||
;
|
||||
|
||||
triinstruction: sendinstruction
|
||||
@ -217,7 +218,7 @@ sendinstruction: predicate SEND execsize INTEGER post_dst payload msgtarget
|
||||
* implicitly loaded if non-null.
|
||||
*/
|
||||
bzero(&$$, sizeof($$));
|
||||
$$.header.opcode = BRW_OPCODE_SEND;
|
||||
$$.header.opcode = $2;
|
||||
$$.header.execution_size = $3;
|
||||
$$.header.destreg__conditionalmod = $4; /* msg reg index */
|
||||
set_instruction_dest(&$$, &$5);
|
||||
@ -231,10 +232,18 @@ sendinstruction: predicate SEND execsize INTEGER post_dst payload msgtarget
|
||||
$12.bits3.generic.end_of_thread;
|
||||
}
|
||||
|
||||
branchloopop: IF | IFF | WHILE
|
||||
;
|
||||
|
||||
breakop: BREAK | CONT | WAIT
|
||||
|
||||
maskpushop: MSAVE | PUSH
|
||||
;
|
||||
|
||||
specialinstruction: NOP
|
||||
{
|
||||
bzero(&$$, sizeof($$));
|
||||
$$.header.opcode = BRW_OPCODE_NOP;
|
||||
$$.header.opcode = $1;
|
||||
}
|
||||
|
||||
/* XXX! */
|
||||
|
@ -27,24 +27,58 @@ int saved_state = INITIAL;
|
||||
"null" { return NULL_TOKEN; }
|
||||
|
||||
/* opcodes */
|
||||
"mov" { return MOV; }
|
||||
"mov" { yylval.integer = BRW_OPCODE_MOV; return MOV; }
|
||||
"frc" { yylval.integer = BRW_OPCODE_FRC; return FRC; }
|
||||
"rndu" { yylval.integer = BRW_OPCODE_RNDU; return RNDU; }
|
||||
"rndd" { yylval.integer = BRW_OPCODE_RNDD; return RNDD; }
|
||||
"rnde" { yylval.integer = BRW_OPCODE_RNDE; return RNDE; }
|
||||
"rndz" { yylval.integer = BRW_OPCODE_RNDZ; return RNDZ; }
|
||||
"not" { yylval.integer = BRW_OPCODE_NOT; return NOT; }
|
||||
"lzd" { yylval.integer = BRW_OPCODE_LZD; return LZD; }
|
||||
|
||||
"mul" { return MUL; }
|
||||
"mac" { return MAC; }
|
||||
"mach" { return MACH; }
|
||||
"line" { return LINE; }
|
||||
"sad2" { return SAD2; }
|
||||
"sada2" { return SADA2; }
|
||||
"dp4" { return DP4; }
|
||||
"dph" { return DPH; }
|
||||
"dp3" { return DP3; }
|
||||
"dp2" { return DP2; }
|
||||
"mul" { yylval.integer = BRW_OPCODE_MUL; return MUL; }
|
||||
"mac" { yylval.integer = BRW_OPCODE_MAC; return MAC; }
|
||||
"mach" { yylval.integer = BRW_OPCODE_MACH; return MACH; }
|
||||
"line" { yylval.integer = BRW_OPCODE_LINE; return LINE; }
|
||||
"sad2" { yylval.integer = BRW_OPCODE_SAD2; return SAD2; }
|
||||
"sada2" { yylval.integer = BRW_OPCODE_SADA2; return SADA2; }
|
||||
"dp4" { yylval.integer = BRW_OPCODE_DP4; return DP4; }
|
||||
"dph" { yylval.integer = BRW_OPCODE_DPH; return DPH; }
|
||||
"dp3" { yylval.integer = BRW_OPCODE_DP3; return DP3; }
|
||||
"dp2" { yylval.integer = BRW_OPCODE_DP2; return DP2; }
|
||||
|
||||
"add" { return ADD; }
|
||||
"avg" { yylval.integer = BRW_OPCODE_AVG; return AVG; }
|
||||
"add" { yylval.integer = BRW_OPCODE_ADD; return ADD; }
|
||||
"sel" { yylval.integer = BRW_OPCODE_SEL; return SEL; }
|
||||
"and" { yylval.integer = BRW_OPCODE_AND; return AND; }
|
||||
"or" { yylval.integer = BRW_OPCODE_OR; return OR; }
|
||||
"xor" { yylval.integer = BRW_OPCODE_XOR; return XOR; }
|
||||
"shr" { yylval.integer = BRW_OPCODE_SHR; return SHR; }
|
||||
"shl" { yylval.integer = BRW_OPCODE_SHL; return SHL; }
|
||||
"asr" { yylval.integer = BRW_OPCODE_ASR; return ASR; }
|
||||
"cmp" { yylval.integer = BRW_OPCODE_CMP; return CMP; }
|
||||
"cmpn" { yylval.integer = BRW_OPCODE_CMPN; return CMPN; }
|
||||
|
||||
"nop" { return NOP; }
|
||||
"send" { yylval.integer = BRW_OPCODE_SEND; return SEND; }
|
||||
"nop" { yylval.integer = BRW_OPCODE_NOP; return NOP; }
|
||||
"jmpi" { yylval.integer = BRW_OPCODE_JMPI; return JMPI; }
|
||||
"if" { yylval.integer = BRW_OPCODE_IF; return IF; }
|
||||
"iff" { yylval.integer = BRW_OPCODE_IFF; return IFF; }
|
||||
"while" { yylval.integer = BRW_OPCODE_NOP; return NOP; }
|
||||
"send" { yylval.integer = BRW_OPCODE_SEND; return SEND; }
|
||||
"else" { yylval.integer = BRW_OPCODE_ELSE; return ELSE; }
|
||||
"break" { yylval.integer = BRW_OPCODE_BREAK; return BREAK; }
|
||||
"cont" { yylval.integer = BRW_OPCODE_CONTINUE; return CONT; }
|
||||
"halt" { yylval.integer = BRW_OPCODE_HALT; return HALT; }
|
||||
"msave" { yylval.integer = BRW_OPCODE_MSAVE; return MSAVE; }
|
||||
"push" { yylval.integer = BRW_OPCODE_PUSH; return PUSH; }
|
||||
"mrest" { yylval.integer = BRW_OPCODE_MRESTORE; return MREST; }
|
||||
"pop" { yylval.integer = BRW_OPCODE_POP; return POP; }
|
||||
"wait" { yylval.integer = BRW_OPCODE_WAIT; return WAIT; }
|
||||
"do" { yylval.integer = BRW_OPCODE_DO; return DO; }
|
||||
"endif" { yylval.integer = BRW_OPCODE_ENDIF; return ENDIF; }
|
||||
|
||||
"send" { return SEND; }
|
||||
/* send argument tokens */
|
||||
"mlen" { return MSGLEN; }
|
||||
"rlen" { return RETURNLEN; }
|
||||
"math" { return MATH; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user