mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 13:10:10 +01:00
i965/fs: Add some minimal backend-IR dumping.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
960ab06da0
commit
154ef07aa7
2 changed files with 92 additions and 0 deletions
|
|
@ -1935,6 +1935,95 @@ fs_visitor::remove_duplicate_mrf_writes()
|
|||
return progress;
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::dump_instruction(fs_inst *inst)
|
||||
{
|
||||
if (inst->opcode < ARRAY_SIZE(opcode_descs) &&
|
||||
opcode_descs[inst->opcode].name) {
|
||||
printf("%s", opcode_descs[inst->opcode].name);
|
||||
} else {
|
||||
printf("op%d", inst->opcode);
|
||||
}
|
||||
if (inst->saturate)
|
||||
printf(".sat");
|
||||
printf(" ");
|
||||
|
||||
switch (inst->dst.file) {
|
||||
case GRF:
|
||||
printf("vgrf%d", inst->dst.reg);
|
||||
if (inst->dst.reg_offset)
|
||||
printf("+%d", inst->dst.reg_offset);
|
||||
break;
|
||||
case MRF:
|
||||
printf("m%d", inst->dst.reg);
|
||||
break;
|
||||
case BAD_FILE:
|
||||
printf("(null)");
|
||||
break;
|
||||
case UNIFORM:
|
||||
printf("***u%d***", inst->dst.reg);
|
||||
break;
|
||||
default:
|
||||
printf("???");
|
||||
break;
|
||||
}
|
||||
printf(", ");
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (inst->src[i].negate)
|
||||
printf("-");
|
||||
if (inst->src[i].abs)
|
||||
printf("|");
|
||||
switch (inst->src[i].file) {
|
||||
case GRF:
|
||||
printf("vgrf%d", inst->src[i].reg);
|
||||
if (inst->src[i].reg_offset)
|
||||
printf("+%d", inst->src[i].reg_offset);
|
||||
break;
|
||||
case MRF:
|
||||
printf("***m%d***", inst->src[i].reg);
|
||||
break;
|
||||
case UNIFORM:
|
||||
printf("u%d", inst->src[i].reg);
|
||||
if (inst->src[i].reg_offset)
|
||||
printf(".%d", inst->src[i].reg_offset);
|
||||
break;
|
||||
case BAD_FILE:
|
||||
printf("(null)");
|
||||
break;
|
||||
default:
|
||||
printf("???");
|
||||
break;
|
||||
}
|
||||
if (inst->src[i].abs)
|
||||
printf("|");
|
||||
|
||||
if (i < 3)
|
||||
printf(", ");
|
||||
}
|
||||
|
||||
printf(" ");
|
||||
|
||||
if (inst->force_uncompressed)
|
||||
printf("1sthalf ");
|
||||
|
||||
if (inst->force_sechalf)
|
||||
printf("2ndhalf ");
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::dump_instructions()
|
||||
{
|
||||
int ip = 0;
|
||||
foreach_list(node, &this->instructions) {
|
||||
fs_inst *inst = (fs_inst *)node;
|
||||
printf("%d: ", ip++);
|
||||
dump_instruction(inst);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Possibly returns an instruction that set up @param reg.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -365,6 +365,9 @@ public:
|
|||
void setup_builtin_uniform_values(ir_variable *ir);
|
||||
int implied_mrf_writes(fs_inst *inst);
|
||||
|
||||
void dump_instructions();
|
||||
void dump_instruction(fs_inst *inst);
|
||||
|
||||
const struct gl_fragment_program *fp;
|
||||
struct brw_wm_compile *c;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue