diff options
author | Rhys Perry <pendingchaos02@gmail.com> | 2022-06-17 13:53:08 +0100 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-09-26 14:49:56 +0000 |
commit | aadb7aef01913c24ab37b3409496649470ff66f4 (patch) | |
tree | 33a5cfd0883bcdebebdbc81ebeccd8d3dca3f725 /src/amd/compiler/aco_print_ir.cpp | |
parent | 55cd74d468fe7834c3da63864bf3099cdf98c57f (diff) | |
download | mesa-aadb7aef01913c24ab37b3409496649470ff66f4.tar.gz |
aco: add VINTERP instruction format
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17333>
Diffstat (limited to 'src/amd/compiler/aco_print_ir.cpp')
-rw-r--r-- | src/amd/compiler/aco_print_ir.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/amd/compiler/aco_print_ir.cpp b/src/amd/compiler/aco_print_ir.cpp index 76e6f0297e9..7b2dece0ce1 100644 --- a/src/amd/compiler/aco_print_ir.cpp +++ b/src/amd/compiler/aco_print_ir.cpp @@ -347,6 +347,12 @@ print_instr_format_specific(const Instruction* instr, FILE* output) print_sync(smem.sync, output); break; } + case Format::VINTERP_INREG: { + const VINTERP_inreg_instruction& vinterp = instr->vinterp_inreg(); + if (vinterp.wait_exp != 7) + fprintf(output, " wait_exp:%u", vinterp.wait_exp); + break; + } case Format::VINTRP: { const VINTRP_instruction& vintrp = instr->vintrp(); fprintf(output, " attr%d.%c", vintrp.attribute, "xyzw"[vintrp.component]); @@ -655,6 +661,12 @@ print_instr_format_specific(const Instruction* instr, FILE* output) default: break; } } + } else if (instr->isVINTERP_INREG()) { + const VINTERP_inreg_instruction& vinterp = instr->vinterp_inreg(); + if (vinterp.clamp) + fprintf(output, " clamp"); + if (vinterp.opsel & (1 << 3)) + fprintf(output, " opsel_hi"); } } @@ -714,6 +726,12 @@ aco_print_instr(const Instruction* instr, FILE* output, unsigned flags) f2f32[i] = vop3p.opsel_hi & (1 << i); opsel[i] = f2f32[i] && (vop3p.opsel_lo & (1 << i)); } + } else if (instr->isVINTERP_INREG()) { + const VINTERP_inreg_instruction& vinterp = instr->vinterp_inreg(); + for (unsigned i = 0; i < MIN2(num_operands, 3); ++i) { + neg[i] = vinterp.neg[i]; + opsel[i] = vinterp.opsel & (1 << i); + } } for (unsigned i = 0; i < num_operands; ++i) { if (i) |