mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
broadcom/compiler: make some dump functions return strings instead of printf
This will give better flexibility on how and where the dumps will be done. Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40434>
This commit is contained in:
parent
d22ab89805
commit
1e82e72039
8 changed files with 182 additions and 155 deletions
|
|
@ -1205,8 +1205,8 @@ void ntq_flush_tmu(struct v3d_compile *c);
|
|||
void vir_emit_thrsw(struct v3d_compile *c);
|
||||
|
||||
void vir_dump(struct v3d_compile *c);
|
||||
void vir_dump_inst(struct v3d_compile *c, struct qinst *inst);
|
||||
void vir_dump_uniform(enum quniform_contents contents, uint32_t data);
|
||||
char *vir_dump_inst(struct v3d_compile *c, struct qinst *inst);
|
||||
char *vir_dump_uniform(enum quniform_contents contents, uint32_t data);
|
||||
|
||||
void vir_validate(struct v3d_compile *c);
|
||||
|
||||
|
|
|
|||
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "broadcom/common/v3d_device_info.h"
|
||||
#include "v3d_compiler.h"
|
||||
#include "util/log.h"
|
||||
|
||||
/* Prints a human-readable description of the uniform reference. */
|
||||
void
|
||||
/* Returns a human-readable description of the uniform reference. */
|
||||
char *
|
||||
vir_dump_uniform(enum quniform_contents contents,
|
||||
uint32_t data)
|
||||
{
|
||||
|
|
@ -41,130 +42,131 @@ vir_dump_uniform(enum quniform_contents contents,
|
|||
|
||||
switch (contents) {
|
||||
case QUNIFORM_CONSTANT:
|
||||
fprintf(stderr, "0x%08x / %f", data, uif(data));
|
||||
return ralloc_asprintf(NULL, "0x%08x / %f", data, uif(data));
|
||||
break;
|
||||
|
||||
case QUNIFORM_UNIFORM:
|
||||
fprintf(stderr, "push[%d]", data);
|
||||
return ralloc_asprintf(NULL, "push[%d]", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_TEXTURE_CONFIG_P1:
|
||||
fprintf(stderr, "tex[%d].p1", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].p1", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_TMU_CONFIG_P0:
|
||||
fprintf(stderr, "tex[%d].p0 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
return ralloc_asprintf(NULL, "tex[%d].p0 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
break;
|
||||
|
||||
case QUNIFORM_TMU_CONFIG_P1:
|
||||
fprintf(stderr, "tex[%d].p1 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
return ralloc_asprintf(NULL, "tex[%d].p1 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
break;
|
||||
|
||||
case QUNIFORM_IMAGE_TMU_CONFIG_P0:
|
||||
fprintf(stderr, "img[%d].p0 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
return ralloc_asprintf(NULL, "img[%d].p0 | 0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
break;
|
||||
|
||||
case QUNIFORM_TEXTURE_WIDTH:
|
||||
fprintf(stderr, "tex[%d].width", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].width", data);
|
||||
break;
|
||||
case QUNIFORM_TEXTURE_HEIGHT:
|
||||
fprintf(stderr, "tex[%d].height", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].height", data);
|
||||
break;
|
||||
case QUNIFORM_TEXTURE_DEPTH:
|
||||
fprintf(stderr, "tex[%d].depth", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].depth", data);
|
||||
break;
|
||||
case QUNIFORM_TEXTURE_ARRAY_SIZE:
|
||||
fprintf(stderr, "tex[%d].array_size", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].array_size", data);
|
||||
break;
|
||||
case QUNIFORM_TEXTURE_LEVELS:
|
||||
fprintf(stderr, "tex[%d].levels", data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].levels", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_IMAGE_WIDTH:
|
||||
fprintf(stderr, "img[%d].width", data);
|
||||
return ralloc_asprintf(NULL, "img[%d].width", data);
|
||||
break;
|
||||
case QUNIFORM_IMAGE_HEIGHT:
|
||||
fprintf(stderr, "img[%d].height", data);
|
||||
return ralloc_asprintf(NULL, "img[%d].height", data);
|
||||
break;
|
||||
case QUNIFORM_IMAGE_DEPTH:
|
||||
fprintf(stderr, "img[%d].depth", data);
|
||||
return ralloc_asprintf(NULL, "img[%d].depth", data);
|
||||
break;
|
||||
case QUNIFORM_IMAGE_ARRAY_SIZE:
|
||||
fprintf(stderr, "img[%d].array_size", data);
|
||||
return ralloc_asprintf(NULL, "img[%d].array_size", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_SPILL_OFFSET:
|
||||
fprintf(stderr, "spill_offset");
|
||||
return ralloc_asprintf(NULL, "spill_offset");
|
||||
break;
|
||||
|
||||
case QUNIFORM_SPILL_SIZE_PER_THREAD:
|
||||
fprintf(stderr, "spill_size_per_thread");
|
||||
return ralloc_asprintf(NULL, "spill_size_per_thread");
|
||||
break;
|
||||
|
||||
case QUNIFORM_UBO_ADDR:
|
||||
fprintf(stderr, "ubo[%d]+0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
return ralloc_asprintf(NULL, "ubo[%d]+0x%x",
|
||||
v3d_unit_data_get_unit(data),
|
||||
v3d_unit_data_get_offset(data));
|
||||
break;
|
||||
|
||||
case QUNIFORM_SSBO_OFFSET:
|
||||
fprintf(stderr, "ssbo[%d]", data);
|
||||
return ralloc_asprintf(NULL, "ssbo[%d]", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_GET_SSBO_SIZE:
|
||||
fprintf(stderr, "ssbo_size[%d]", data);
|
||||
return ralloc_asprintf(NULL, "ssbo_size[%d]", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_GET_UBO_SIZE:
|
||||
fprintf(stderr, "ubo_size[%d]", data);
|
||||
return ralloc_asprintf(NULL, "ubo_size[%d]", data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_NUM_WORK_GROUPS:
|
||||
fprintf(stderr, "num_wg.%c", data < 3 ? "xyz"[data] : '?');
|
||||
return ralloc_asprintf(NULL, "num_wg.%c", data < 3 ? "xyz"[data] : '?');
|
||||
break;
|
||||
|
||||
default:
|
||||
if (quniform_contents_is_texture_p0(contents)) {
|
||||
fprintf(stderr, "tex[%d].p0: 0x%08x",
|
||||
contents - QUNIFORM_TEXTURE_CONFIG_P0_0,
|
||||
data);
|
||||
return ralloc_asprintf(NULL, "tex[%d].p0: 0x%08x",
|
||||
contents - QUNIFORM_TEXTURE_CONFIG_P0_0,
|
||||
data);
|
||||
} else if (contents < ARRAY_SIZE(quniform_names) &&
|
||||
quniform_names[contents]) {
|
||||
fprintf(stderr, "%s",
|
||||
quniform_names[contents]);
|
||||
return ralloc_asprintf(NULL, "%s",
|
||||
quniform_names[contents]);
|
||||
} else {
|
||||
fprintf(stderr, "%d / 0x%08x", contents, data);
|
||||
return ralloc_asprintf(NULL, "%d / 0x%08x", contents, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
vir_print_reg(struct v3d_compile *c, const struct qinst *inst,
|
||||
struct qreg reg)
|
||||
static char *
|
||||
vir_dump_reg(struct v3d_compile *c, const struct qinst *inst,
|
||||
struct qreg reg)
|
||||
{
|
||||
switch (reg.file) {
|
||||
|
||||
case QFILE_NULL:
|
||||
fprintf(stderr, "null");
|
||||
return ralloc_asprintf(c, "null");
|
||||
break;
|
||||
|
||||
case QFILE_LOAD_IMM:
|
||||
fprintf(stderr, "0x%08x (%f)", reg.index, uif(reg.index));
|
||||
return ralloc_asprintf(c, "0x%08x (%f)",
|
||||
reg.index, uif(reg.index));
|
||||
break;
|
||||
|
||||
case QFILE_REG:
|
||||
fprintf(stderr, "rf%d", reg.index);
|
||||
return ralloc_asprintf(c, "rf%d", reg.index);
|
||||
break;
|
||||
|
||||
case QFILE_MAGIC:
|
||||
fprintf(stderr, "%s",
|
||||
v3d_qpu_magic_waddr_name(c->devinfo, reg.index));
|
||||
return ralloc_asprintf(c, "%s",
|
||||
v3d_qpu_magic_waddr_name(c->devinfo, reg.index));
|
||||
break;
|
||||
|
||||
case QFILE_SMALL_IMM: {
|
||||
|
|
@ -176,169 +178,194 @@ vir_print_reg(struct v3d_compile *c, const struct qinst *inst,
|
|||
|
||||
int8_t *p = (int8_t *)&inst->qpu.raddr_b;
|
||||
if (*p >= -16 && *p <= 15)
|
||||
fprintf(stderr, "%d", unpacked);
|
||||
return ralloc_asprintf(c, "%d", unpacked);
|
||||
else
|
||||
fprintf(stderr, "%f", uif(unpacked));
|
||||
return ralloc_asprintf(c, "%f", uif(unpacked));
|
||||
break;
|
||||
}
|
||||
|
||||
case QFILE_TEMP:
|
||||
fprintf(stderr, "t%d", reg.index);
|
||||
return ralloc_asprintf(c, "t%d", reg.index);
|
||||
break;
|
||||
}
|
||||
|
||||
return ralloc_strdup(c, "");
|
||||
}
|
||||
|
||||
static void
|
||||
static char *
|
||||
vir_dump_sig_addr(const struct v3d_device_info *devinfo,
|
||||
const struct v3d_qpu_instr *instr)
|
||||
{
|
||||
if (!instr->sig_magic)
|
||||
fprintf(stderr, ".rf%d", instr->sig_addr);
|
||||
return ralloc_asprintf(NULL, "rf%d", instr->sig_addr);
|
||||
else {
|
||||
const char *name =
|
||||
v3d_qpu_magic_waddr_name(devinfo, instr->sig_addr);
|
||||
if (name)
|
||||
fprintf(stderr, ".%s", name);
|
||||
return ralloc_asprintf(NULL, "%s", name);
|
||||
else
|
||||
fprintf(stderr, ".UNKNOWN%d", instr->sig_addr);
|
||||
return ralloc_asprintf(NULL, "UNKNOWN%d", instr->sig_addr);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
static char *
|
||||
vir_dump_sig(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
struct v3d_qpu_sig *sig = &inst->qpu.sig;
|
||||
char *dump_sig = ralloc_strdup(c, "");
|
||||
char *dump_sig_addr = NULL;
|
||||
|
||||
if (sig->ldvary || sig->ldtmu || sig->ldtlb ||
|
||||
sig->ldtlbu || sig->ldunifrf || sig->ldunifarf)
|
||||
dump_sig_addr = vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
|
||||
if (sig->thrsw)
|
||||
fprintf(stderr, "; thrsw");
|
||||
ralloc_asprintf_append(&dump_sig, "; thrsw");
|
||||
if (sig->ldvary) {
|
||||
fprintf(stderr, "; ldvary");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldvary.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->ldvpm)
|
||||
fprintf(stderr, "; ldvpm");
|
||||
ralloc_asprintf_append(&dump_sig, "; ldvpm");
|
||||
if (sig->ldtmu) {
|
||||
fprintf(stderr, "; ldtmu");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldtmu.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->ldtlb) {
|
||||
fprintf(stderr, "; ldtlb");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldtlb.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->ldtlbu) {
|
||||
fprintf(stderr, "; ldtlbu");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldtlbu.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->ldunif)
|
||||
fprintf(stderr, "; ldunif");
|
||||
ralloc_asprintf_append(&dump_sig, "; ldunif");
|
||||
if (sig->ldunifrf) {
|
||||
fprintf(stderr, "; ldunifrf");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldunifrf.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->ldunifa)
|
||||
fprintf(stderr, "; ldunifa");
|
||||
ralloc_asprintf_append(&dump_sig, "; ldunifa");
|
||||
if (sig->ldunifarf) {
|
||||
fprintf(stderr, "; ldunifarf");
|
||||
vir_dump_sig_addr(c->devinfo, &inst->qpu);
|
||||
ralloc_asprintf_append(&dump_sig, "; ldunifarf.%s",
|
||||
dump_sig_addr);
|
||||
}
|
||||
if (sig->wrtmuc)
|
||||
fprintf(stderr, "; wrtmuc");
|
||||
ralloc_asprintf_append(&dump_sig, "; wrtmuc");
|
||||
|
||||
if (dump_sig_addr)
|
||||
ralloc_free(dump_sig_addr);
|
||||
|
||||
return dump_sig;
|
||||
}
|
||||
|
||||
static void
|
||||
static char *
|
||||
vir_dump_alu(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
struct v3d_qpu_instr *instr = &inst->qpu;
|
||||
int nsrc = vir_get_nsrc(inst);
|
||||
enum v3d_qpu_input_unpack unpack[2];
|
||||
char *dump_alu;
|
||||
char *dump_reg;
|
||||
|
||||
if (inst->qpu.alu.add.op != V3D_QPU_A_NOP) {
|
||||
fprintf(stderr, "%s", v3d_qpu_add_op_name(instr->alu.add.op));
|
||||
fprintf(stderr, "%s", v3d_qpu_cond_name(instr->flags.ac));
|
||||
fprintf(stderr, "%s", v3d_qpu_pf_name(instr->flags.apf));
|
||||
fprintf(stderr, "%s", v3d_qpu_uf_name(instr->flags.auf));
|
||||
fprintf(stderr, " ");
|
||||
|
||||
vir_print_reg(c, inst, inst->dst);
|
||||
fprintf(stderr, "%s", v3d_qpu_pack_name(instr->alu.add.output_pack));
|
||||
dump_reg = vir_dump_reg(c, inst, inst->dst);
|
||||
dump_alu =
|
||||
ralloc_asprintf(c, "%s%s%s%s %s%s",
|
||||
v3d_qpu_add_op_name(instr->alu.add.op),
|
||||
v3d_qpu_cond_name(instr->flags.ac),
|
||||
v3d_qpu_pf_name(instr->flags.apf),
|
||||
v3d_qpu_uf_name(instr->flags.auf),
|
||||
dump_reg,
|
||||
v3d_qpu_pack_name(instr->alu.add.output_pack));
|
||||
|
||||
unpack[0] = instr->alu.add.a.unpack;
|
||||
unpack[1] = instr->alu.add.b.unpack;
|
||||
} else {
|
||||
fprintf(stderr, "%s", v3d_qpu_mul_op_name(instr->alu.mul.op));
|
||||
fprintf(stderr, "%s", v3d_qpu_cond_name(instr->flags.mc));
|
||||
fprintf(stderr, "%s", v3d_qpu_pf_name(instr->flags.mpf));
|
||||
fprintf(stderr, "%s", v3d_qpu_uf_name(instr->flags.muf));
|
||||
fprintf(stderr, " ");
|
||||
|
||||
vir_print_reg(c, inst, inst->dst);
|
||||
fprintf(stderr, "%s", v3d_qpu_pack_name(instr->alu.mul.output_pack));
|
||||
dump_reg = vir_dump_reg(c, inst, inst->dst);
|
||||
dump_alu =
|
||||
ralloc_asprintf(c, "%s%s%s%s %s%s",
|
||||
v3d_qpu_mul_op_name(instr->alu.mul.op),
|
||||
v3d_qpu_cond_name(instr->flags.mc),
|
||||
v3d_qpu_pf_name(instr->flags.mpf),
|
||||
v3d_qpu_uf_name(instr->flags.muf),
|
||||
dump_reg,
|
||||
v3d_qpu_pack_name(instr->alu.mul.output_pack));
|
||||
|
||||
unpack[0] = instr->alu.mul.a.unpack;
|
||||
unpack[1] = instr->alu.mul.b.unpack;
|
||||
}
|
||||
|
||||
for (int i = 0; i < nsrc; i++) {
|
||||
fprintf(stderr, ", ");
|
||||
vir_print_reg(c, inst, inst->src[i]);
|
||||
fprintf(stderr, "%s", v3d_qpu_unpack_name(unpack[i]));
|
||||
dump_reg = vir_dump_reg(c, inst, inst->src[i]);
|
||||
ralloc_asprintf_append(&dump_alu, ", %s%s",
|
||||
dump_reg,
|
||||
v3d_qpu_unpack_name(unpack[i]));
|
||||
}
|
||||
|
||||
vir_dump_sig(c, inst);
|
||||
char *dump_sig = vir_dump_sig(c, inst);
|
||||
ralloc_asprintf_append(&dump_alu, "%s", dump_sig);
|
||||
|
||||
return dump_alu;
|
||||
}
|
||||
|
||||
void
|
||||
char *
|
||||
vir_dump_inst(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
struct v3d_qpu_instr *instr = &inst->qpu;
|
||||
char *dump_inst = NULL;
|
||||
|
||||
switch (inst->qpu.type) {
|
||||
case V3D_QPU_INSTR_TYPE_ALU:
|
||||
vir_dump_alu(c, inst);
|
||||
dump_inst = vir_dump_alu(c, inst);
|
||||
break;
|
||||
case V3D_QPU_INSTR_TYPE_BRANCH:
|
||||
fprintf(stderr, "b");
|
||||
if (instr->branch.ub)
|
||||
fprintf(stderr, "u");
|
||||
|
||||
fprintf(stderr, "%s",
|
||||
v3d_qpu_branch_cond_name(instr->branch.cond));
|
||||
fprintf(stderr, "%s", v3d_qpu_msfign_name(instr->branch.msfign));
|
||||
dump_inst =
|
||||
ralloc_asprintf(c, "b%s%s%s",
|
||||
instr->branch.ub ? "u" : "",
|
||||
v3d_qpu_branch_cond_name(instr->branch.cond),
|
||||
v3d_qpu_msfign_name(instr->branch.msfign));
|
||||
|
||||
switch (instr->branch.bdi) {
|
||||
case V3D_QPU_BRANCH_DEST_ABS:
|
||||
fprintf(stderr, " zero_addr+0x%08x", instr->branch.offset);
|
||||
ralloc_asprintf_append(&dump_inst,
|
||||
" zero_addr+0x%08x",
|
||||
instr->branch.offset);
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_REL:
|
||||
fprintf(stderr, " %d", instr->branch.offset);
|
||||
ralloc_asprintf_append(&dump_inst, " %d",
|
||||
instr->branch.offset);
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_LINK_REG:
|
||||
fprintf(stderr, " lri");
|
||||
ralloc_asprintf_append(&dump_inst, " lri");
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_REGFILE:
|
||||
fprintf(stderr, " rf%d", instr->branch.raddr_a);
|
||||
ralloc_asprintf_append(&dump_inst, " rf%d",
|
||||
instr->branch.raddr_a);
|
||||
break;
|
||||
}
|
||||
|
||||
if (instr->branch.ub) {
|
||||
switch (instr->branch.bdu) {
|
||||
case V3D_QPU_BRANCH_DEST_ABS:
|
||||
fprintf(stderr, ", a:unif");
|
||||
ralloc_asprintf_append(&dump_inst, ", a:unif");
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_REL:
|
||||
fprintf(stderr, ", r:unif");
|
||||
ralloc_asprintf_append(&dump_inst, ", r:unif");
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_LINK_REG:
|
||||
fprintf(stderr, ", lri");
|
||||
ralloc_asprintf_append(&dump_inst, ", lri");
|
||||
break;
|
||||
|
||||
case V3D_QPU_BRANCH_DEST_REGFILE:
|
||||
fprintf(stderr, ", rf%d", instr->branch.raddr_a);
|
||||
ralloc_asprintf_append(&dump_inst, ", rf%d",
|
||||
instr->branch.raddr_a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -346,11 +373,13 @@ vir_dump_inst(struct v3d_compile *c, struct qinst *inst)
|
|||
}
|
||||
|
||||
if (vir_has_uniform(inst)) {
|
||||
fprintf(stderr, " (");
|
||||
vir_dump_uniform(c->uniform_contents[inst->uniform],
|
||||
c->uniform_data[inst->uniform]);
|
||||
fprintf(stderr, ")");
|
||||
char *dump_uniform = vir_dump_uniform(c->uniform_contents[inst->uniform],
|
||||
c->uniform_data[inst->uniform]);
|
||||
ralloc_asprintf_append(&dump_inst, " (%s)", dump_uniform);
|
||||
ralloc_free(dump_uniform);
|
||||
}
|
||||
|
||||
return dump_inst;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -415,8 +444,8 @@ vir_dump(struct v3d_compile *c)
|
|||
fprintf(stderr, " ");
|
||||
}
|
||||
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "%s\n", dump_inst);
|
||||
ip++;
|
||||
}
|
||||
if (block->successors[1]) {
|
||||
|
|
|
|||
|
|
@ -219,9 +219,8 @@ try_copy_prop(struct v3d_compile *c, struct qinst *inst, struct qinst **movs)
|
|||
}
|
||||
|
||||
if (debug) {
|
||||
fprintf(stderr, "Copy propagate: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "Copy propagate: %s\n", dump_inst);
|
||||
}
|
||||
|
||||
inst->src[i] = mov->src[0];
|
||||
|
|
@ -232,9 +231,8 @@ try_copy_prop(struct v3d_compile *c, struct qinst *inst, struct qinst **movs)
|
|||
}
|
||||
|
||||
if (debug) {
|
||||
fprintf(stderr, "to: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "to: %s\n", dump_inst);
|
||||
}
|
||||
|
||||
progress = true;
|
||||
|
|
|
|||
|
|
@ -43,9 +43,8 @@ static void
|
|||
dce(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
if (debug) {
|
||||
fprintf(stderr, "Removing: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "Removing: %s\n", dump_inst);
|
||||
}
|
||||
assert(!v3d_qpu_writes_flags(&inst->qpu));
|
||||
vir_remove_instruction(c, inst);
|
||||
|
|
@ -65,10 +64,10 @@ static void
|
|||
vir_dce_flags(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
if (debug) {
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr,
|
||||
"Removing flags write from: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
"Removing flags write from: %s\n",
|
||||
dump_inst);
|
||||
}
|
||||
|
||||
assert(inst->qpu.type == V3D_QPU_INSTR_TYPE_ALU);
|
||||
|
|
@ -248,10 +247,10 @@ vir_opt_dead_code(struct v3d_compile *c)
|
|||
if (inst->dst.file == QFILE_TEMP &&
|
||||
can_write_to_null(c, inst)) {
|
||||
if (debug) {
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr,
|
||||
"Removing dst from: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
"Removing dst from: %s\n",
|
||||
dump_inst);
|
||||
}
|
||||
c->defs[inst->dst.index] = NULL;
|
||||
inst->dst.file = QFILE_NULL;
|
||||
|
|
|
|||
|
|
@ -36,10 +36,10 @@ static void
|
|||
vir_dce_pf(struct v3d_compile *c, struct qinst *inst)
|
||||
{
|
||||
if (debug) {
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr,
|
||||
"Removing flags write from: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
"Removing flags write from: %s\n",
|
||||
dump_inst);
|
||||
}
|
||||
|
||||
assert(inst->qpu.type == V3D_QPU_INSTR_TYPE_ALU);
|
||||
|
|
|
|||
|
|
@ -116,9 +116,10 @@ vir_opt_small_immediates(struct v3d_compile *c)
|
|||
continue;
|
||||
|
||||
if (debug) {
|
||||
fprintf(stderr, "opt_small_immediate() from: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "opt_small_immediate() from: %s\n",
|
||||
dump_inst);
|
||||
ralloc_free(dump_inst);
|
||||
}
|
||||
inst->qpu.sig.small_imm_a = new_sig.small_imm_a;
|
||||
inst->qpu.sig.small_imm_b = new_sig.small_imm_b;
|
||||
|
|
@ -129,9 +130,9 @@ vir_opt_small_immediates(struct v3d_compile *c)
|
|||
inst->src[i].file = QFILE_SMALL_IMM;
|
||||
inst->src[i].index = imm;
|
||||
if (debug) {
|
||||
fprintf(stderr, "to: ");
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "to: %s\n", dump_inst);
|
||||
ralloc_free(dump_inst);
|
||||
}
|
||||
progress = true;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -264,9 +264,8 @@ v3d_generate_code_block(struct v3d_compile *c,
|
|||
{
|
||||
vir_for_each_inst_safe(qinst, block) {
|
||||
#if 0
|
||||
fprintf(stderr, "translating qinst to qpu: ");
|
||||
vir_dump_inst(c, qinst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, qinst);
|
||||
fprintf(stderr, "translating qinst to qpu: %s\n");
|
||||
#endif
|
||||
|
||||
if (vir_has_uniform(qinst))
|
||||
|
|
@ -448,10 +447,10 @@ v3d_dump_qpu(struct v3d_compile *c)
|
|||
fprintf(stderr, "0x%016"PRIx64" %s", c->qpu_insts[i], str);
|
||||
|
||||
if (reads_uniform(c->devinfo, c->qpu_insts[i])) {
|
||||
fprintf(stderr, " (");
|
||||
vir_dump_uniform(c->uniform_contents[next_uniform],
|
||||
c->uniform_data[next_uniform]);
|
||||
fprintf(stderr, ")");
|
||||
char *str = vir_dump_uniform(c->uniform_contents[next_uniform],
|
||||
c->uniform_data[next_uniform]);
|
||||
fprintf(stderr, " (%s)", str);
|
||||
ralloc_free(str);
|
||||
next_uniform++;
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
|
|
@ -483,9 +482,9 @@ v3d_vir_to_qpu(struct v3d_compile *c, struct qpu_reg *temp_registers)
|
|||
bool ok = v3d_qpu_instr_pack(c->devinfo, &inst->qpu,
|
||||
&c->qpu_insts[i++]);
|
||||
if (!ok) {
|
||||
fprintf(stderr, "Failed to pack instruction %d:\n", i);
|
||||
vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
char *dump_inst = vir_dump_inst(c, inst);
|
||||
fprintf(stderr, "Failed to pack instruction %d:\n%s\n", i,
|
||||
dump_inst);
|
||||
c->compilation_result = V3D_COMPILATION_FAILED;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -417,11 +417,12 @@ v3d_write_uniforms(struct v3d_context *v3d, struct v3d_job *job,
|
|||
}
|
||||
#if 0
|
||||
uint32_t written_val = *((uint32_t *)uniforms - 1);
|
||||
fprintf(stderr, "shader %p[%d]: 0x%08x / 0x%08x (%f) ",
|
||||
char *str = vir_dump_uniform(uinfo->contents[i], data);
|
||||
fprintf(stderr, "shader %p[%d]: 0x%08x / 0x%08x (%f) %s\n",
|
||||
shader, i, __gen_address_offset(&uniform_stream) + i * 4,
|
||||
written_val, uif(written_val));
|
||||
vir_dump_uniform(uinfo->contents[i], data);
|
||||
fprintf(stderr, "\n");
|
||||
written_val, uif(written_val),
|
||||
str);
|
||||
ralloc_free(str);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue