i965/fs: Handle zero-size allocations in fs_builder::vgrf().
This will be handy to avoid some ugly ternary operators in the next patch, like: fs_reg reg = (size == 0 ? null_reg_ud() : vgrf(..., size)); Because a zero-size register allocation is guaranteed not to ever be read or written we can just return the null register. Another possibility would be to actually allocate a zero-size VGRF what would involve defining a zero-size register class in the register allocator and a considerable amount of churn. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
3352724dfa
commit
03846696ce
|
@ -160,10 +160,13 @@ namespace brw {
|
|||
dst_reg
|
||||
vgrf(enum brw_reg_type type, unsigned n = 1) const
|
||||
{
|
||||
return dst_reg(GRF, shader->alloc.allocate(
|
||||
DIV_ROUND_UP(n * type_sz(type) * dispatch_width(),
|
||||
REG_SIZE)),
|
||||
type);
|
||||
if (n > 0)
|
||||
return dst_reg(GRF, shader->alloc.allocate(
|
||||
DIV_ROUND_UP(n * type_sz(type) * dispatch_width(),
|
||||
REG_SIZE)),
|
||||
type);
|
||||
else
|
||||
return retype(null_reg_ud(), type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue