struct ir3_register *src_reg = src->regs[1];
unsigned new_flags = reg->flags;
+ if (src_reg->flags & IR3_REG_ARRAY)
+ return false;
+
combine_flags(&new_flags, src);
if (!ir3_valid_flags(instr, n, new_flags)) {
return true;
}
- if ((src_reg->flags & IR3_REG_RELATIV) &&
- !conflicts(instr->address, reg->instr->address)) {
- src_reg = ir3_reg_clone(instr->block->shader, src_reg);
- src_reg->flags = new_flags;
- instr->regs[n+1] = src_reg;
- ir3_instr_set_address(instr, reg->instr->address);
-
- return true;
- }
-
/* NOTE: seems we can only do immed integers, so don't
* need to care about float. But we do need to handle
* abs/neg *before* checking that the immediate requires