intel/elk: Add ELK_MAX_MRF_ALL for static allocating arrays
Replace usage of variable length arrays. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Antonio Ospite <None> Reviewed-by: Kenneth Graunke <None> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32916>
This commit is contained in:
@@ -3022,7 +3022,7 @@ elk_fs_visitor::emit_repclear_shader()
|
||||
bool
|
||||
elk_fs_visitor::remove_duplicate_mrf_writes()
|
||||
{
|
||||
elk_fs_inst *last_mrf_move[ELK_MAX_MRF(devinfo->ver)];
|
||||
elk_fs_inst *last_mrf_move[ELK_MAX_MRF_ALL];
|
||||
bool progress = false;
|
||||
|
||||
/* Need to update the MRF tracking for compressed instructions. */
|
||||
@@ -3067,7 +3067,7 @@ elk_fs_visitor::remove_duplicate_mrf_writes()
|
||||
}
|
||||
|
||||
/* Clear out any MRF move records whose sources got overwritten. */
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(last_mrf_move); i++) {
|
||||
for (unsigned i = 0; i < ELK_MAX_MRF(devinfo->ver); i++) {
|
||||
if (last_mrf_move[i] &&
|
||||
regions_overlap(inst->dst, inst->size_written,
|
||||
last_mrf_move[i]->src[0],
|
||||
@@ -3182,8 +3182,8 @@ elk_fs_visitor::insert_gfx4_pre_send_dependency_workarounds(elk_bblock_t *block,
|
||||
{
|
||||
int write_len = regs_written(inst);
|
||||
int first_write_grf = inst->dst.nr;
|
||||
bool needs_dep[ELK_MAX_MRF(devinfo->ver)];
|
||||
assert(write_len < (int)sizeof(needs_dep) - 1);
|
||||
bool needs_dep[ELK_MAX_MRF_ALL];
|
||||
assert(write_len < ELK_MAX_MRF(devinfo->ver) - 1);
|
||||
|
||||
memset(needs_dep, false, sizeof(needs_dep));
|
||||
memset(needs_dep, true, write_len);
|
||||
@@ -3253,8 +3253,8 @@ elk_fs_visitor::insert_gfx4_post_send_dependency_workarounds(elk_bblock_t *block
|
||||
{
|
||||
int write_len = regs_written(inst);
|
||||
unsigned first_write_grf = inst->dst.nr;
|
||||
bool needs_dep[ELK_MAX_MRF(devinfo->ver)];
|
||||
assert(write_len < (int)sizeof(needs_dep) - 1);
|
||||
bool needs_dep[ELK_MAX_MRF_ALL];
|
||||
assert(write_len < ELK_MAX_MRF(devinfo->ver) - 1);
|
||||
|
||||
memset(needs_dep, false, sizeof(needs_dep));
|
||||
memset(needs_dep, true, write_len);
|
||||
|
@@ -983,7 +983,8 @@ elk_fs_reg_alloc::spill_reg(unsigned spill_reg)
|
||||
* SIMD16 mode, because we'd stomp the FB writes.
|
||||
*/
|
||||
if (!fs->spilled_any_registers) {
|
||||
bool mrf_used[ELK_MAX_MRF(devinfo->ver)];
|
||||
bool mrf_used[ELK_MAX_MRF_ALL];
|
||||
assert(ARRAY_SIZE(mrf_used) <= ELK_MAX_MRF(devinfo->ver));
|
||||
get_used_mrfs(fs, mrf_used);
|
||||
|
||||
for (int i = spill_base_mrf(fs); i < ELK_MAX_MRF(devinfo->ver); i++) {
|
||||
|
@@ -82,6 +82,7 @@ struct intel_device_info;
|
||||
|
||||
/** Number of message register file registers */
|
||||
#define ELK_MAX_MRF(gen) (gen == 6 ? 24 : 16)
|
||||
#define ELK_MAX_MRF_ALL 24
|
||||
|
||||
#define ELK_SWIZZLE4(a,b,c,d) (((a)<<0) | ((b)<<2) | ((c)<<4) | ((d)<<6))
|
||||
#define ELK_GET_SWZ(swz, idx) (((swz) >> ((idx)*2)) & 0x3)
|
||||
|
@@ -1203,7 +1203,7 @@ elk_fs_instruction_scheduler::calculate_deps()
|
||||
* After register allocation, reg_offsets are gone and we track individual
|
||||
* GRF registers.
|
||||
*/
|
||||
elk_schedule_node *last_mrf_write[ELK_MAX_MRF(v->devinfo->ver)];
|
||||
elk_schedule_node *last_mrf_write[ELK_MAX_MRF_ALL];
|
||||
elk_schedule_node *last_conditional_mod[8] = {};
|
||||
elk_schedule_node *last_accumulator_write = NULL;
|
||||
/* Fixed HW registers are assumed to be separate from the virtual
|
||||
@@ -1470,7 +1470,7 @@ elk_fs_instruction_scheduler::calculate_deps()
|
||||
void
|
||||
elk_vec4_instruction_scheduler::calculate_deps()
|
||||
{
|
||||
elk_schedule_node *last_mrf_write[ELK_MAX_MRF(v->devinfo->ver)];
|
||||
elk_schedule_node *last_mrf_write[ELK_MAX_MRF_ALL];
|
||||
elk_schedule_node *last_conditional_mod = NULL;
|
||||
elk_schedule_node *last_accumulator_write = NULL;
|
||||
/* Fixed HW registers are assumed to be separate from the virtual
|
||||
|
Reference in New Issue
Block a user