diff options
author | Rob Clark <[email protected]> | 2017-10-30 19:24:59 -0400 |
---|---|---|
committer | Rob Clark <[email protected]> | 2017-11-12 12:28:59 -0500 |
commit | 6da513007474ddee48edf256e435a0fa7a65335d (patch) | |
tree | b9627059f5b8055f60d7c2c4d2eae737471c0a86 /src/gallium/drivers/freedreno/ir3/disasm-a3xx.c | |
parent | 33f5f63b8fc157fa2fd2a142783f31db987c9d55 (diff) |
freedreno/ir3: add cat7 instructions
Needed for memory and execution barriers.
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/ir3/disasm-a3xx.c')
-rw-r--r-- | src/gallium/drivers/freedreno/ir3/disasm-a3xx.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c b/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c index 4685ed6deae..96b34649c37 100644 --- a/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c +++ b/src/gallium/drivers/freedreno/ir3/disasm-a3xx.c @@ -714,6 +714,23 @@ static void print_instr_cat6(instr_t *instr) } } +static void print_instr_cat7(instr_t *instr) +{ + instr_cat7_t *cat7 = &instr->cat7; + + if (cat7->g) + printf(".g"); + if (cat7->l) + printf(".l"); + + if (_OPC(7, cat7->opc) == OPC_FENCE) { + if (cat7->r) + printf(".r"); + if (cat7->w) + printf(".w"); + } +} + /* size of largest OPC field of all the instruction categories: */ #define NOPC_BITS 6 @@ -879,6 +896,8 @@ static const struct opc_info { OPC(6, OPC_LDC, ldc), OPC(6, OPC_LDLV, ldlv), + OPC(7, OPC_BAR, bar), + OPC(7, OPC_FENCE, fence), #undef OPC }; @@ -909,7 +928,7 @@ static void print_instr(uint32_t *dwords, int level, int n) if (instr->sync) printf("(sy)"); - if (instr->ss && (instr->opc_cat <= 4)) + if (instr->ss && ((instr->opc_cat <= 4) || (instr->opc_cat == 7))) printf("(ss)"); if (instr->jmp_tgt) printf("(jp)"); |