Index: src/cmd/8a/a.y |
=================================================================== |
--- a/src/cmd/8a/a.y |
+++ b/src/cmd/8a/a.y |
@@ -54,7 +54,7 @@ |
%left '*' '/' '%' |
%token <lval> LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4 |
%token <lval> LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPES LTYPEM LTYPEI LTYPEG LTYPEXC |
-%token <lval> LCONST LFP LPC LSB |
+%token <lval> LTYPEX LCONST LFP LPC LSB |
%token <lval> LBREG LLREG LSREG LFREG LXREG |
%token <dval> LFCONST |
%token <sval> LSCONST LSP |
@@ -63,7 +63,7 @@ |
%type <con2> con2 |
%type <gen> mem imm imm2 reg nam rel rem rim rom omem nmem |
%type <gen2> nonnon nonrel nonrem rimnon rimrem remrim |
-%type <gen2> spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 |
+%type <gen2> spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 |
%% |
prog: |
| prog |
@@ -117,6 +117,7 @@ |
| LTYPEI spec7 { outcode($1, &$2); } |
| LTYPEG spec8 { outcode($1, &$2); } |
| LTYPEXC spec9 { outcode($1, &$2); } |
+| LTYPEX spec10 { outcode($1, &$2); } |
nonnon: |
{ |
@@ -296,6 +297,16 @@ |
$$.to.offset = $5; |
} |
+spec10: /* PINSRD */ |
+ imm ',' rem ',' reg |
+ { |
+ $$.from = $3; |
+ $$.to = $5; |
+ if($1.type != D_CONST) |
+ yyerror("illegal constant"); |
+ $$.to.offset = $1.offset; |
+ } |
+ |
rem: |
reg |
| mem |