diff options
author | Matt Turner <mattst88@gmail.com> | 2013-11-25 22:17:29 -0800 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2013-12-04 20:05:43 -0800 |
commit | a85f1b7adf1023667fea090242ba448d935eaa67 (patch) | |
tree | 32bb8c9acffa48b447db32b523c6c4a7a343684b | |
parent | 942151af300e067f72572cd8785fa3526132570c (diff) |
i965/vec4: Add support for printing HW_REGs in dump_instruction().
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index fed6e6182b7..551f0a211d2 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1118,6 +1118,33 @@ vec4_visitor::dump_instruction(backend_instruction *be_inst) case MRF: printf("m%d", inst->dst.reg); break; + case HW_REG: + if (inst->dst.fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE) { + switch (inst->dst.fixed_hw_reg.nr) { + case BRW_ARF_NULL: + printf("null"); + break; + case BRW_ARF_ADDRESS: + printf("a0.%d", inst->dst.fixed_hw_reg.subnr); + break; + case BRW_ARF_ACCUMULATOR: + printf("acc%d", inst->dst.fixed_hw_reg.subnr); + break; + case BRW_ARF_FLAG: + printf("f%d.%d", inst->dst.fixed_hw_reg.nr & 0xf, + inst->dst.fixed_hw_reg.subnr); + break; + default: + printf("arf%d.%d", inst->dst.fixed_hw_reg.nr & 0xf, + inst->dst.fixed_hw_reg.subnr); + break; + } + } else { + printf("hw_reg%d", inst->dst.fixed_hw_reg.nr); + } + if (inst->dst.fixed_hw_reg.subnr) + printf("+%d", inst->dst.fixed_hw_reg.subnr); + break; case BAD_FILE: printf("(null)"); break; @@ -1165,6 +1192,39 @@ vec4_visitor::dump_instruction(backend_instruction *be_inst) break; } break; + case HW_REG: + if (inst->src[i].fixed_hw_reg.negate) + printf("-"); + if (inst->src[i].fixed_hw_reg.abs) + printf("|"); + if (inst->src[i].fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE) { + switch (inst->src[i].fixed_hw_reg.nr) { + case BRW_ARF_NULL: + printf("null"); + break; + case BRW_ARF_ADDRESS: + printf("a0.%d", inst->src[i].fixed_hw_reg.subnr); + break; + case BRW_ARF_ACCUMULATOR: + printf("acc%d", inst->src[i].fixed_hw_reg.subnr); + break; + case BRW_ARF_FLAG: + printf("f%d.%d", inst->src[i].fixed_hw_reg.nr & 0xf, + inst->src[i].fixed_hw_reg.subnr); + break; + default: + printf("arf%d.%d", inst->src[i].fixed_hw_reg.nr & 0xf, + inst->src[i].fixed_hw_reg.subnr); + break; + } + } else { + printf("hw_reg%d", inst->src[i].fixed_hw_reg.nr); + } + if (inst->src[i].fixed_hw_reg.subnr) + printf("+%d", inst->src[i].fixed_hw_reg.subnr); + if (inst->src[i].fixed_hw_reg.abs) + printf("|"); + break; case BAD_FILE: printf("(null)"); break; |