OPC(7, OPC_BAR, bar),
OPC(7, OPC_FENCE, fence),
+ OPC(7, OPC_LOCK, lock),
+ OPC(7, OPC_UNLOCK, unlock),
/* clang-format on */
#undef OPC
};
OPC_DCINV = _OPC(7, 5),
OPC_DCFLU = _OPC(7, 6),
+ OPC_LOCK = _OPC(7, 7),
+ OPC_UNLOCK = _OPC(7, 8),
+
/* meta instructions (category 8): */
#define OPC_META 8
/* placeholder instr to mark shader inputs: */
"dccln.all" return TOKEN(T_OP_DCCLN);
"dcinv.all" return TOKEN(T_OP_DCINV);
"dcflu.all" return TOKEN(T_OP_DCFLU);
+"lock" return TOKEN(T_OP_LOCK);
+"unlock" return TOKEN(T_OP_UNLOCK);
"f16" return TOKEN(T_TYPE_F16);
"f32" return TOKEN(T_TYPE_F32);
%token <tok> T_OP_DCCLN
%token <tok> T_OP_DCINV
%token <tok> T_OP_DCFLU
+%token <tok> T_OP_LOCK
+%token <tok> T_OP_UNLOCK
%token <u64> T_RAW
| cat7_data_cache
| T_OP_SLEEP { new_instr(OPC_SLEEP); }
| T_OP_ICINV { new_instr(OPC_ICINV); }
+| T_OP_LOCK { new_instr(OPC_LOCK); }
+| T_OP_UNLOCK { new_instr(OPC_UNLOCK); }
raw_instr: T_RAW {new_instr(OPC_META_RAW)->raw.value = $1;}
#define INSTR_4XX(i, d, ...) { .gpu_id = 420, .instr = #i, .expected = d, __VA_ARGS__ }
#define INSTR_5XX(i, d, ...) { .gpu_id = 540, .instr = #i, .expected = d, __VA_ARGS__ }
#define INSTR_6XX(i, d, ...) { .gpu_id = 630, .instr = #i, .expected = d, __VA_ARGS__ }
+#define INSTR_7XX(i, d, ...) { .gpu_id = 730, .instr = #i, .expected = d, __VA_ARGS__ }
/* clang-format on */
static const struct test {
INSTR_6XX(e1080000_00000000, "sleep.l"),
INSTR_6XX(e2080000_00000000, "dccln.all"),
+ INSTR_7XX(e3c20000_00000000, "lock"),
+
INSTR_6XX(ffffffff_ffffffff, "raw 0xFFFFFFFFFFFFFFFF"),
/* clang-format on */
};
<pattern low="55" high="58">0110</pattern>
</bitset>
+<bitset name="lock" extends="#instruction-cat7">
+ <doc>
+ Are met at the end of compute shader:
+ (sy)(jp)lock;
+ unlock;
+ end ;
+ </doc>
+ <gen min="700"/>
+ <display>
+ {SY}{JP}{NAME}
+ </display>
+ <pattern low="45" high="54">1000010000</pattern>
+ <pattern low="55" high="58">0111</pattern>
+</bitset>
+
+<bitset name="unlock" extends="#instruction-cat7">
+ <gen min="700"/>
+ <display>
+ {SY}{JP}{NAME}
+ </display>
+ <pattern low="45" high="54">1001010000</pattern>
+ <pattern low="55" high="58">0111</pattern>
+</bitset>
+
</isa>
\ No newline at end of file