From 7a75b55a01d355090d186357896e3cb141b9775e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 1 Apr 2015 18:15:42 -0700 Subject: [PATCH] i965/fs_inst: Get rid of the effective_width field The effective_width field was an ill-concieved hack to get around issues in the LOAD_PAYLOAD instruction. Now that the LOAD_PAYLOAD instruction is far more sane, this field can die. Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs.cpp | 25 ------------------- .../dri/i965/brw_fs_copy_propagation.cpp | 7 +++--- src/mesa/drivers/dri/i965/brw_ir_fs.h | 8 ------ 3 files changed, 3 insertions(+), 37 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index d0a3bdd9264..3bf58668601 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -90,31 +90,6 @@ fs_inst::init(enum opcode opcode, uint8_t exec_size, const fs_reg &dst, } assert(this->exec_size != 0); - for (unsigned i = 0; i < sources; ++i) { - switch (this->src[i].file) { - case BAD_FILE: - this->src[i].effective_width = 8; - break; - case GRF: - case HW_REG: - case ATTR: - assert(this->src[i].width > 0); - if (this->src[i].width == 1) { - this->src[i].effective_width = this->exec_size; - } else { - this->src[i].effective_width = this->src[i].width; - } - break; - case IMM: - case UNIFORM: - this->src[i].effective_width = this->exec_size; - break; - default: - unreachable("Invalid source register file"); - } - } - this->dst.effective_width = this->exec_size; - this->conditional_mod = BRW_CONDITIONAL_NONE; /* This will be the case for almost all instructions. */ diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index d926c1d0f21..c0f01190611 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -475,7 +475,6 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry) continue; fs_reg val = entry->src; - val.effective_width = inst->src[i].effective_width; val.type = inst->src[i].type; if (inst->src[i].abs) { @@ -699,13 +698,13 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block, inst->dst.file == GRF) { int offset = 0; for (int i = 0; i < inst->sources; i++) { - int regs_written = ((inst->src[i].effective_width * - type_sz(inst->src[i].type)) + 31) / 32; + int effective_width = i < inst->header_size ? 8 : inst->exec_size; + int regs_written = effective_width / 8; if (inst->src[i].file == GRF) { acp_entry *entry = ralloc(copy_prop_ctx, acp_entry); entry->dst = inst->dst; entry->dst.reg_offset = offset; - entry->dst.width = inst->src[i].effective_width; + entry->dst.width = effective_width; entry->src = inst->src[i]; entry->regs_written = regs_written; entry->opcode = inst->opcode; diff --git a/src/mesa/drivers/dri/i965/brw_ir_fs.h b/src/mesa/drivers/dri/i965/brw_ir_fs.h index 1e3d2b4a315..f3dfe790f34 100644 --- a/src/mesa/drivers/dri/i965/brw_ir_fs.h +++ b/src/mesa/drivers/dri/i965/brw_ir_fs.h @@ -68,14 +68,6 @@ public: */ uint8_t width; - /** - * Returns the effective register width when used as a source in the - * given instruction. Registers such as uniforms and immediates - * effectively take on the width of the instruction in which they are - * used. - */ - uint8_t effective_width; - /** Register region horizontal stride */ uint8_t stride; };