freedreno/ir3/parser: Add new cat0 instructions
Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8175>
This commit is contained in:
parent
2dc6458563
commit
0b36044d4f
|
@ -115,6 +115,12 @@ static int parse_reg(const char *str)
|
|||
/* category 0: */
|
||||
"nop" return TOKEN(T_OP_NOP);
|
||||
"br" return TOKEN(T_OP_BR);
|
||||
"brao" return TOKEN(T_OP_BRAO);
|
||||
"braa" return TOKEN(T_OP_BRAA);
|
||||
"brac" return TOKEN(T_OP_BRAC);
|
||||
"bany" return TOKEN(T_OP_BANY);
|
||||
"ball" return TOKEN(T_OP_BALL);
|
||||
"brax" return TOKEN(T_OP_BRAX);
|
||||
"jump" return TOKEN(T_OP_JUMP);
|
||||
"call" return TOKEN(T_OP_CALL);
|
||||
"ret" return TOKEN(T_OP_RET);
|
||||
|
@ -125,6 +131,18 @@ static int parse_reg(const char *str)
|
|||
"chmask" return TOKEN(T_OP_CHMASK);
|
||||
"chsh" return TOKEN(T_OP_CHSH);
|
||||
"flow_rev" return TOKEN(T_OP_FLOW_REV);
|
||||
"bkt" return TOKEN(T_OP_BKT);
|
||||
"stks" return TOKEN(T_OP_STKS);
|
||||
"stkr" return TOKEN(T_OP_STKR);
|
||||
"xset" return TOKEN(T_OP_XSET);
|
||||
"xclr" return TOKEN(T_OP_XCLR);
|
||||
"getone" return TOKEN(T_OP_GETONE);
|
||||
"dbg" return TOKEN(T_OP_DBG);
|
||||
"shps" return TOKEN(T_OP_SHPS);
|
||||
"shpe" return TOKEN(T_OP_SHPE);
|
||||
"predt" return TOKEN(T_OP_PREDT);
|
||||
"predf" return TOKEN(T_OP_PREDF);
|
||||
"prede" return TOKEN(T_OP_PREDE);
|
||||
|
||||
/* category 1: */
|
||||
"mova" return TOKEN(T_OP_MOVA);
|
||||
|
|
|
@ -284,6 +284,12 @@ static void print_token(FILE *file, int type, YYSTYPE value)
|
|||
/* category 0: */
|
||||
%token <tok> T_OP_NOP
|
||||
%token <tok> T_OP_BR
|
||||
%token <tok> T_OP_BRAO
|
||||
%token <tok> T_OP_BRAA
|
||||
%token <tok> T_OP_BRAC
|
||||
%token <tok> T_OP_BANY
|
||||
%token <tok> T_OP_BALL
|
||||
%token <tok> T_OP_BRAX
|
||||
%token <tok> T_OP_JUMP
|
||||
%token <tok> T_OP_CALL
|
||||
%token <tok> T_OP_RET
|
||||
|
@ -294,6 +300,18 @@ static void print_token(FILE *file, int type, YYSTYPE value)
|
|||
%token <tok> T_OP_CHMASK
|
||||
%token <tok> T_OP_CHSH
|
||||
%token <tok> T_OP_FLOW_REV
|
||||
%token <tok> T_OP_BKT
|
||||
%token <tok> T_OP_STKS
|
||||
%token <tok> T_OP_STKR
|
||||
%token <tok> T_OP_XSET
|
||||
%token <tok> T_OP_XCLR
|
||||
%token <tok> T_OP_GETONE
|
||||
%token <tok> T_OP_DBG
|
||||
%token <tok> T_OP_SHPS
|
||||
%token <tok> T_OP_SHPE
|
||||
%token <tok> T_OP_PREDT
|
||||
%token <tok> T_OP_PREDF
|
||||
%token <tok> T_OP_PREDE
|
||||
|
||||
/* category 1: */
|
||||
%token <tok> T_OP_MOVA
|
||||
|
@ -589,10 +607,19 @@ instr: iflags cat0_instr
|
|||
cat0_src1: '!' T_P0 { instr->cat0.inv1 = true; instr->cat0.comp1 = $2 >> 1; }
|
||||
| T_P0 { instr->cat0.comp1 = $1 >> 1; }
|
||||
|
||||
cat0_src2: '!' T_P0 { instr->cat0.inv2 = true; instr->cat0.comp2 = $2 >> 1; }
|
||||
| T_P0 { instr->cat0.comp2 = $1 >> 1; }
|
||||
|
||||
cat0_immed: '#' integer { instr->cat0.immed = $2; }
|
||||
|
||||
cat0_instr: T_OP_NOP { new_instr(OPC_NOP); }
|
||||
| T_OP_BR { new_instr(OPC_B); } cat0_src1 ',' cat0_immed
|
||||
| T_OP_BR { new_instr(OPC_B)->cat0.brtype = BRANCH_PLAIN; } cat0_src1 ',' cat0_immed
|
||||
| T_OP_BRAO { new_instr(OPC_B)->cat0.brtype = BRANCH_OR; } cat0_src1 ',' cat0_src2 ',' cat0_immed
|
||||
| T_OP_BRAA { new_instr(OPC_B)->cat0.brtype = BRANCH_AND; } cat0_src1 ',' cat0_src2 ',' cat0_immed
|
||||
| T_OP_BRAC '.' integer { new_instr(OPC_B)->cat0.brtype = BRANCH_CONST; instr->cat0.idx = $3; } cat0_immed
|
||||
| T_OP_BANY { new_instr(OPC_B)->cat0.brtype = BRANCH_ANY; } cat0_src1 ',' cat0_immed
|
||||
| T_OP_BALL { new_instr(OPC_B)->cat0.brtype = BRANCH_ALL; } cat0_src1 ',' cat0_immed
|
||||
| T_OP_BRAX { new_instr(OPC_B)->cat0.brtype = BRANCH_X; } cat0_immed
|
||||
| T_OP_JUMP { new_instr(OPC_JUMP); } cat0_immed
|
||||
| T_OP_CALL { new_instr(OPC_CALL); } cat0_immed
|
||||
| T_OP_RET { new_instr(OPC_RET); }
|
||||
|
@ -603,6 +630,18 @@ cat0_instr: T_OP_NOP { new_instr(OPC_NOP); }
|
|||
| T_OP_CHMASK { new_instr(OPC_CHMASK); }
|
||||
| T_OP_CHSH { new_instr(OPC_CHSH); }
|
||||
| T_OP_FLOW_REV { new_instr(OPC_FLOW_REV); }
|
||||
| T_OP_BKT { new_instr(OPC_BKT); } cat0_immed
|
||||
| T_OP_STKS { new_instr(OPC_STKS); }
|
||||
| T_OP_STKR { new_instr(OPC_STKR); }
|
||||
| T_OP_XSET { new_instr(OPC_XSET); }
|
||||
| T_OP_XCLR { new_instr(OPC_XCLR); }
|
||||
| T_OP_GETONE { new_instr(OPC_GETONE); } cat0_immed
|
||||
| T_OP_DBG { new_instr(OPC_DBG); }
|
||||
| T_OP_SHPS { new_instr(OPC_SHPS); } cat0_immed
|
||||
| T_OP_SHPE { new_instr(OPC_SHPE); }
|
||||
| T_OP_PREDT { new_instr(OPC_PREDT); } cat0_src1
|
||||
| T_OP_PREDF { new_instr(OPC_PREDF); } cat0_src1
|
||||
| T_OP_PREDE { new_instr(OPC_PREDE); }
|
||||
|
||||
cat1_opc: T_OP_MOVA {
|
||||
new_instr(OPC_MOV);
|
||||
|
|
Loading…
Reference in New Issue