Commit 5e2cee57 authored by Danylo Piliaiev's avatar Danylo Piliaiev 💬 Committed by Marge Bot

freedreno/ir3/parser: add cat7 support

Signed-off-by: Danylo Piliaiev's avatarDanylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <!8420>
parent f8fe2ca6
Pipeline #256471 waiting for manual action with stages
......@@ -335,6 +335,10 @@ static int parse_w(const char *str)
"getspid" return TOKEN(T_OP_GETSPID);
"getwid" return TOKEN(T_OP_GETWID);
/* category 7: */
"bar" return TOKEN(T_OP_BAR);
"fence" return TOKEN(T_OP_FENCE);
"f16" return TOKEN(T_TYPE_F16);
"f32" return TOKEN(T_TYPE_F32);
"u16" return TOKEN(T_TYPE_U16);
......@@ -386,6 +390,7 @@ static int parse_w(const char *str)
"hc" return TOKEN(T_HC);
"hr" return TOKEN(T_HR);
"g" return 'g';
"w" return 'w';
"l" return 'l';
"<" return '<';
">" return '>';
......
......@@ -515,6 +515,10 @@ static void print_token(FILE *file, int type, YYSTYPE value)
%token <tok> T_OP_GETSPID
%token <tok> T_OP_GETWID
/* category 7: */
%token <tok> T_OP_BAR
%token <tok> T_OP_FENCE
/* type qualifiers: */
%token <tok> T_TYPE_F16
%token <tok> T_TYPE_F32
......@@ -666,6 +670,7 @@ instr: iflags cat0_instr
| iflags cat4_instr
| iflags cat5_instr { fixup_cat5_s2en(); }
| iflags cat6_instr
| iflags cat7_instr
cat0_src1: '!' T_P0 { instr->cat0.inv1 = true; instr->cat0.comp1 = $2 >> 1; }
| T_P0 { instr->cat0.comp1 = $1 >> 1; }
......@@ -1037,6 +1042,19 @@ cat6_instr: cat6_load
| cat6_bindless_ibo
| cat6_todo
cat7_scope: '.' 'w' { instr->cat7.w = true; }
| '.' 'r' { instr->cat7.r = true; }
| '.' 'l' { instr->cat7.l = true; }
| '.' 'g' { instr->cat7.g = true; }
cat7_scopes:
| cat7_scope cat7_scopes
cat7_barrier: T_OP_BAR { new_instr(OPC_BAR); } cat7_scopes
| T_OP_FENCE { new_instr(OPC_FENCE); } cat7_scopes
cat7_instr: cat7_barrier
reg: T_REGISTER { $$ = new_reg($1, 0); }
| T_A0 { $$ = new_reg((61 << 3), IR3_REG_HALF); }
| T_A1 { $$ = new_reg((61 << 3) + 1, IR3_REG_HALF); }
......
......@@ -308,6 +308,13 @@ static const struct test {
/* Custom test since we've never seen the blob emit these. */
INSTR_6XX(c0260004_00490000, "getspid.u32 r1.x"),
INSTR_6XX(c0260005_00494000, "getwid.u32 r1.y"),
/* cat7 */
/* dEQP-VK.compute.basic.ssbo_local_barrier_single_invocation */
INSTR_6XX(e0fa0000_00000000, "fence.g.l.r.w"),
INSTR_6XX(e09a0000_00000000, "fence.r.w"),
INSTR_6XX(f0420000_00000000, "(sy)bar.g"),
};
static void
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment