aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2015-02-14 02:18:55 +0800
committerChia-I Wu <[email protected]>2015-02-14 06:52:36 +0800
commitdb362983d17ea1403e6121ce80f05df141a11aa5 (patch)
treeef6f94d3f1ea8db9746abaabdfd9a01c1790aa82 /src/gallium
parent5fc0dd8953012c5f4864b40d89983f6d44985dc1 (diff)
ilo: cleanup ISA DW0 decoding
Add disasm_inst_decode_dw0_opcode_gen6() to decode the opcode. Simplify branch_ctrl/acc_wr_ctrl decoding.
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/ilo/shader/toy_compiler_disasm.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
index 14347366dc0..76b269938ab 100644
--- a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
+++ b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
@@ -184,7 +184,7 @@ static const struct {
};
static void
-disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
+disasm_inst_decode_dw0_opcode_gen6(struct disasm_inst *inst, uint32_t dw0)
{
ILO_DEV_ASSERT(inst->dev, 6, 8);
@@ -218,6 +218,14 @@ disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
default:
break;
}
+}
+
+static void
+disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
+{
+ ILO_DEV_ASSERT(inst->dev, 6, 8);
+
+ disasm_inst_decode_dw0_opcode_gen6(inst, dw0);
inst->access_mode = GEN_EXTRACT(dw0, GEN6_INST_ACCESSMODE);
@@ -250,19 +258,17 @@ disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
break;
}
- if (ilo_dev_gen(inst->dev) >= ILO_GEN(8)) {
- switch (inst->opcode) {
- case GEN6_OPCODE_IF:
- case GEN6_OPCODE_ELSE:
- case GEN8_OPCODE_GOTO:
+ switch (inst->opcode) {
+ case GEN6_OPCODE_IF:
+ case GEN6_OPCODE_ELSE:
+ case GEN8_OPCODE_GOTO:
+ if (ilo_dev_gen(inst->dev) >= ILO_GEN(8)) {
inst->branch_ctrl = (bool) (dw0 & GEN8_INST_BRANCHCTRL);
break;
- default:
- inst->acc_wr_ctrl = (bool) (dw0 & GEN6_INST_ACCWRCTRL);
- break;
}
- } else {
+ default:
inst->acc_wr_ctrl = (bool) (dw0 & GEN6_INST_ACCWRCTRL);
+ break;
}
inst->cmpt_ctrl = (bool) (dw0 & GEN6_INST_CMPTCTRL);