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 <kenneth@whitecape.org>
This commit is contained in:
parent
41868bb682
commit
7a75b55a01
|
@ -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. */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue