[Mesa-dev] [PATCH v2 14/15] i965/fs_inst: Get rid of the effective_width field
Jason Ekstrand
jason at jlekstrand.net
Tue May 5 18:28:17 PDT 2015
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 <kenneth at whitecape.org>
---
src/mesa/drivers/dri/i965/brw_fs.cpp | 25 ----------------------
.../drivers/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 d0a3bdd..3bf5866 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 d926c1d..c0f0119 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 1e3d2b4..f3dfe79 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;
};
--
2.3.6
More information about the mesa-dev
mailing list