intel/compiler: Return 1 for immediates in regs_read
Previously, we were returning 2 whenever the source was a Q type. As far as I can tell, the only reason why this hasn't blown up before is that it was only ever used for VGRFs until the SWSB pass landed which uses it for everything. This wasn't a problem because Q types generally aren't a thing on TGL. However, they are for a small handful of instructions. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7329>
This commit is contained in:
parent
178820212b
commit
4c8cbe9b13
|
@ -451,13 +451,15 @@ regs_written(const fs_inst *inst)
|
|||
* Return the number of dataflow registers read by the instruction (either
|
||||
* fully or partially) counted from 'floor(reg_offset(inst->src[i]) /
|
||||
* register_size)'. The somewhat arbitrary register size unit is 4B for the
|
||||
* UNIFORM and IMM files and 32B for all other files.
|
||||
* UNIFORM files and 32B for all other files.
|
||||
*/
|
||||
inline unsigned
|
||||
regs_read(const fs_inst *inst, unsigned i)
|
||||
{
|
||||
const unsigned reg_size =
|
||||
inst->src[i].file == UNIFORM || inst->src[i].file == IMM ? 4 : REG_SIZE;
|
||||
if (inst->src[i].file == IMM)
|
||||
return 1;
|
||||
|
||||
const unsigned reg_size = inst->src[i].file == UNIFORM ? 4 : REG_SIZE;
|
||||
return DIV_ROUND_UP(reg_offset(inst->src[i]) % reg_size +
|
||||
inst->size_read(i) -
|
||||
MIN2(inst->size_read(i), reg_padding(inst->src[i])),
|
||||
|
|
Loading…
Reference in New Issue