summaryrefslogtreecommitdiff
path: root/src/amd/compiler/aco_print_ir.cpp
diff options
context:
space:
mode:
authorRhys Perry <pendingchaos02@gmail.com>2022-06-17 13:53:08 +0100
committerMarge Bot <emma+marge@anholt.net>2022-09-26 14:49:56 +0000
commitaadb7aef01913c24ab37b3409496649470ff66f4 (patch)
tree33a5cfd0883bcdebebdbc81ebeccd8d3dca3f725 /src/amd/compiler/aco_print_ir.cpp
parent55cd74d468fe7834c3da63864bf3099cdf98c57f (diff)
downloadmesa-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.cpp18
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)