summaryrefslogtreecommitdiff
path: root/assembler/gram.y
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2006-08-25 11:05:10 -0700
committerDamien Lespiau <damien.lespiau@intel.com>2013-03-04 15:54:22 +0000
commitf914c6ace23dbfb0edc2988dddd655a61529771f (patch)
treebe933903c59869e1a296ba60249fd8f479a416b2 /assembler/gram.y
parent569990bf6b6f1d95ffa88981d0afe8b16626e4be (diff)
Add many more opcodes.
Diffstat (limited to 'assembler/gram.y')
-rw-r--r--assembler/gram.y31
1 files changed, 20 insertions, 11 deletions
diff --git a/assembler/gram.y b/assembler/gram.y
index 7ed2f41b..1dea59d4 100644
--- a/assembler/gram.y
+++ b/assembler/gram.y
@@ -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! */