summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300/compiler/radeon_program_print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r300/compiler/radeon_program_print.c')
-rw-r--r--src/gallium/drivers/r300/compiler/radeon_program_print.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/compiler/radeon_program_print.c b/src/gallium/drivers/r300/compiler/radeon_program_print.c
index 390d131..38713a9 100644
--- a/src/gallium/drivers/r300/compiler/radeon_program_print.c
+++ b/src/gallium/drivers/r300/compiler/radeon_program_print.c
@@ -56,6 +56,38 @@ static const char * presubtract_op_to_string(rc_presubtract_op op)
}
}
+static void print_omod_op(FILE * f, rc_omod_op op)
+{
+ const char * omod_str;
+
+ switch(op) {
+ case RC_OMOD_MUL_1:
+ case RC_OMOD_DISABLE:
+ return;
+ case RC_OMOD_MUL_2:
+ omod_str = "* 2";
+ break;
+ case RC_OMOD_MUL_4:
+ omod_str = "* 4";
+ break;
+ case RC_OMOD_MUL_8:
+ omod_str = "* 8";
+ break;
+ case RC_OMOD_DIV_2:
+ omod_str = "/ 2";
+ break;
+ case RC_OMOD_DIV_4:
+ omod_str = "/ 4";
+ break;
+ case RC_OMOD_DIV_8:
+ omod_str = "/ 8";
+ break;
+ default:
+ return;
+ }
+ fprintf(f, " %s", omod_str);
+}
+
static void rc_print_comparefunc(FILE * f, const char * lhs, rc_compare_func func, const char * rhs)
{
if (func == RC_COMPARE_FUNC_NEVER) {
@@ -248,6 +280,7 @@ static void rc_print_normal_instruction(FILE * f, struct rc_instruction * inst,
if (opcode->HasDstReg) {
fprintf(f, " ");
rc_print_dst_register(f, inst->U.I.DstReg);
+ print_omod_op(f, inst->U.I.Omod);
if (opcode->NumSrcRegs)
fprintf(f, ",");
}
@@ -337,6 +370,8 @@ static void rc_print_pair_instruction(FILE * f, struct rc_instruction * fullinst
if (inst->WriteALUResult == RC_ALURESULT_X)
fprintf(f, " aluresult");
+ print_omod_op(f, inst->RGB.Omod);
+
for(unsigned int arg = 0; arg < opcode->NumSrcRegs; ++arg) {
const char* abs = inst->RGB.Arg[arg].Abs ? "|" : "";
const char* neg = inst->RGB.Arg[arg].Negate ? "-" : "";
@@ -370,6 +405,8 @@ static void rc_print_pair_instruction(FILE * f, struct rc_instruction * fullinst
if (inst->WriteALUResult == RC_ALURESULT_W)
fprintf(f, " aluresult");
+ print_omod_op(f, inst->Alpha.Omod);
+
for(unsigned int arg = 0; arg < opcode->NumSrcRegs; ++arg) {
const char* abs = inst->Alpha.Arg[arg].Abs ? "|" : "";
const char* neg = inst->Alpha.Arg[arg].Negate ? "-" : "";