brw: Remove bblock_t parameters from various passes

These are either unused or can be trivially replaced by
a block stored in an instruction.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33815>
This commit is contained in:
Caio Oliveira 2025-02-28 00:06:24 -08:00 committed by Marge Bot
parent 8e2a7cb42d
commit 25875f5e79
7 changed files with 59 additions and 61 deletions

View file

@ -354,7 +354,7 @@ brw_lower_barycentrics(brw_shader &s)
* swizzles of the source, specified as \p swz0 and \p swz1.
*/
static bool
lower_derivative(brw_shader &s, bblock_t *block, brw_inst *inst,
lower_derivative(brw_shader &s, brw_inst *inst,
unsigned swz0, unsigned swz1)
{
const brw_builder ubld = brw_builder(inst).exec_all();
@ -386,19 +386,19 @@ brw_lower_derivatives(brw_shader &s)
foreach_block_and_inst(block, brw_inst, inst, s.cfg) {
if (inst->opcode == FS_OPCODE_DDX_COARSE)
progress |= lower_derivative(s, block, inst,
progress |= lower_derivative(s, inst,
BRW_SWIZZLE_XXXX, BRW_SWIZZLE_YYYY);
else if (inst->opcode == FS_OPCODE_DDX_FINE)
progress |= lower_derivative(s, block, inst,
progress |= lower_derivative(s, inst,
BRW_SWIZZLE_XXZZ, BRW_SWIZZLE_YYWW);
else if (inst->opcode == FS_OPCODE_DDY_COARSE)
progress |= lower_derivative(s, block, inst,
progress |= lower_derivative(s, inst,
BRW_SWIZZLE_XXXX, BRW_SWIZZLE_ZZZZ);
else if (inst->opcode == FS_OPCODE_DDY_FINE)
progress |= lower_derivative(s, block, inst,
progress |= lower_derivative(s, inst,
BRW_SWIZZLE_XYXY, BRW_SWIZZLE_ZWZW);
}
@ -778,7 +778,7 @@ brw_s0(enum brw_reg_type type, unsigned subnr)
}
static bool
brw_lower_send_gather_inst(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_send_gather_inst(brw_shader &s, brw_inst *inst)
{
const intel_device_info *devinfo = s.devinfo;
assert(devinfo->ver >= 30);
@ -837,7 +837,7 @@ brw_lower_send_gather(brw_shader &s)
foreach_block_and_inst(block, brw_inst, inst, s.cfg) {
if (inst->opcode == SHADER_OPCODE_SEND_GATHER)
progress |= brw_lower_send_gather_inst(s, block, inst);
progress |= brw_lower_send_gather_inst(s, inst);
}
if (progress)

View file

@ -137,7 +137,7 @@ factor_uint32(uint32_t x, unsigned *result_a, unsigned *result_b)
}
static void
brw_lower_mul_dword_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
brw_lower_mul_dword_inst(brw_shader &s, brw_inst *inst)
{
const intel_device_info *devinfo = s.devinfo;
const brw_builder ibld(inst);
@ -244,7 +244,7 @@ brw_lower_mul_dword_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
if (inst->src[1].abs || (inst->src[1].negate &&
source_mods_unsupported))
brw_lower_src_modifiers(s, block, inst, 1);
brw_lower_src_modifiers(s, inst, 1);
if (inst->src[1].file == IMM) {
unsigned a;
@ -298,7 +298,7 @@ brw_lower_mul_dword_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
}
static void
brw_lower_mul_qword_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
brw_lower_mul_qword_inst(brw_shader &s, brw_inst *inst)
{
const intel_device_info *devinfo = s.devinfo;
const brw_builder ibld(inst);
@ -367,7 +367,7 @@ brw_lower_mul_qword_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
}
static void
brw_lower_mulh_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
brw_lower_mulh_inst(brw_shader &s, brw_inst *inst)
{
const intel_device_info *devinfo = s.devinfo;
const brw_builder ibld(inst);
@ -382,7 +382,7 @@ brw_lower_mulh_inst(brw_shader &s, brw_inst *inst, bblock_t *block)
* mach (8) r5.0<1>:d r2.0<8;8,1>:d r3.0<8;8,1>:d"
*/
if (inst->src[1].negate || inst->src[1].abs)
brw_lower_src_modifiers(s, block, inst, 1);
brw_lower_src_modifiers(s, inst, 1);
/* Should have been lowered to 8-wide. */
assert(inst->exec_size <= brw_get_lowered_simd_width(&s, inst));
@ -430,7 +430,7 @@ brw_lower_integer_multiplication(brw_shader &s)
inst->src[0].type == BRW_TYPE_UQ) &&
(inst->src[1].type == BRW_TYPE_Q ||
inst->src[1].type == BRW_TYPE_UQ)) {
brw_lower_mul_qword_inst(s, inst, block);
brw_lower_mul_qword_inst(s, inst);
inst->remove();
progress = true;
} else if (!inst->dst.is_accumulator() &&
@ -438,12 +438,12 @@ brw_lower_integer_multiplication(brw_shader &s)
inst->dst.type == BRW_TYPE_UD) &&
(!devinfo->has_integer_dword_mul ||
devinfo->verx10 >= 125)) {
brw_lower_mul_dword_inst(s, inst, block);
brw_lower_mul_dword_inst(s, inst);
inst->remove();
progress = true;
}
} else if (inst->opcode == SHADER_OPCODE_MULH) {
brw_lower_mulh_inst(s, inst, block);
brw_lower_mulh_inst(s, inst);
inst->remove();
progress = true;
}

View file

@ -456,7 +456,7 @@ namespace {
}
bool
lower_instruction(brw_shader *v, bblock_t *block, brw_inst *inst);
lower_instruction(brw_shader *v, brw_inst *inst);
}
/**
@ -466,7 +466,7 @@ namespace {
* MOV instruction prior to the original instruction.
*/
bool
brw_lower_src_modifiers(brw_shader &s, bblock_t *block, brw_inst *inst, unsigned i)
brw_lower_src_modifiers(brw_shader &s, brw_inst *inst, unsigned i)
{
assert(inst->components_read(i) == 1);
assert(s.devinfo->has_integer_dword_mul ||
@ -478,7 +478,7 @@ brw_lower_src_modifiers(brw_shader &s, bblock_t *block, brw_inst *inst, unsigned
const brw_builder ibld(inst);
const brw_reg tmp = ibld.vgrf(get_exec_type(inst));
lower_instruction(&s, block, ibld.MOV(tmp, inst->src[i]));
lower_instruction(&s, ibld.MOV(tmp, inst->src[i]));
inst->src[i] = tmp;
return true;
@ -493,7 +493,7 @@ namespace {
* instruction.
*/
bool
lower_dst_modifiers(brw_shader *v, bblock_t *block, brw_inst *inst)
lower_dst_modifiers(brw_shader *v, brw_inst *inst)
{
const brw_builder ibld(inst);
const brw_reg_type type = get_exec_type(inst);
@ -511,7 +511,7 @@ namespace {
tmp = horiz_stride(tmp, stride);
/* Emit a MOV taking care of all the destination modifiers. */
brw_inst *mov = ibld.at(block, inst->next).MOV(inst->dst, tmp);
brw_inst *mov = ibld.at(inst->block, inst->next).MOV(inst->dst, tmp);
mov->saturate = inst->saturate;
if (!has_inconsistent_cmod(inst))
mov->conditional_mod = inst->conditional_mod;
@ -520,7 +520,7 @@ namespace {
mov->predicate_inverse = inst->predicate_inverse;
}
mov->flag_subreg = inst->flag_subreg;
lower_instruction(v, block, mov);
lower_instruction(v, mov);
/* Point the original instruction at the temporary, and clean up any
* destination modifiers.
@ -542,7 +542,7 @@ namespace {
* copies into a temporary with the same channel layout as the destination.
*/
bool
lower_src_region(brw_shader *v, bblock_t *block, brw_inst *inst, unsigned i)
lower_src_region(brw_shader *v, brw_inst *inst, unsigned i)
{
assert(inst->components_read(i) == 1);
const intel_device_info *devinfo = v->devinfo;
@ -582,7 +582,7 @@ namespace {
/* The copy isn't guaranteed to comply with all subdword integer
* regioning restrictions in some cases. Lower it recursively.
*/
lower_instruction(v, block, jnst);
lower_instruction(v, jnst);
}
}
@ -604,7 +604,7 @@ namespace {
* sources.
*/
bool
lower_dst_region(brw_shader *v, bblock_t *block, brw_inst *inst)
lower_dst_region(brw_shader *v, brw_inst *inst)
{
/* We cannot replace the result of an integer multiply which writes the
* accumulator because MUL+MACH pairs act on the accumulator as a 66-bit
@ -645,13 +645,13 @@ namespace {
}
for (unsigned j = 0; j < n; j++) {
brw_inst *jnst = ibld.at(block, inst->next).MOV(subscript(inst->dst, raw_type, j),
brw_inst *jnst = ibld.at(inst->block, inst->next).MOV(subscript(inst->dst, raw_type, j),
subscript(tmp, raw_type, j));
if (has_subdword_integer_region_restriction(v->devinfo, jnst)) {
/* The copy isn't guaranteed to comply with all subdword integer
* regioning restrictions in some cases. Lower it recursively.
*/
lower_instruction(v, block, jnst);
lower_instruction(v, jnst);
}
}
@ -679,7 +679,7 @@ namespace {
* where the execution type of an instruction is unsupported.
*/
bool
lower_exec_type(brw_shader *v, bblock_t *block, brw_inst *inst)
lower_exec_type(brw_shader *v, brw_inst *inst)
{
assert(inst->dst.type == get_exec_type(inst));
const unsigned mask = has_invalid_exec_type(v->devinfo, inst);
@ -713,7 +713,7 @@ namespace {
mov->predicate = inst->predicate;
mov->predicate_inverse = inst->predicate_inverse;
}
lower_instruction(v, block, mov);
lower_instruction(v, mov);
}
inst->remove();
@ -729,7 +729,7 @@ namespace {
* the general lowering in lower_src_modifiers or lower_src_region.
*/
void
lower_src_conversion(brw_shader *v, bblock_t *block, brw_inst *inst)
lower_src_conversion(brw_shader *v, brw_inst *inst)
{
const intel_device_info *devinfo = v->devinfo;
const brw_builder ibld = brw_builder(inst).scalar_group();
@ -758,7 +758,7 @@ namespace {
* instruction.
*/
bool
lower_instruction(brw_shader *v, bblock_t *block, brw_inst *inst)
lower_instruction(brw_shader *v, brw_inst *inst)
{
const intel_device_info *devinfo = v->devinfo;
bool progress = false;
@ -773,26 +773,26 @@ namespace {
return false;
if (has_invalid_dst_modifiers(devinfo, inst))
progress |= lower_dst_modifiers(v, block, inst);
progress |= lower_dst_modifiers(v, inst);
if (has_invalid_dst_region(devinfo, inst))
progress |= lower_dst_region(v, block, inst);
progress |= lower_dst_region(v, inst);
if (has_invalid_src_conversion(devinfo, inst)) {
lower_src_conversion(v, block, inst);
lower_src_conversion(v, inst);
progress = true;
}
for (unsigned i = 0; i < inst->sources; i++) {
if (has_invalid_src_modifiers(devinfo, inst, i))
progress |= brw_lower_src_modifiers(*v, block, inst, i);
progress |= brw_lower_src_modifiers(*v, inst, i);
if (has_invalid_src_region(devinfo, inst, i))
progress |= lower_src_region(v, block, inst, i);
progress |= lower_src_region(v, inst, i);
}
if (has_invalid_exec_type(devinfo, inst))
progress |= lower_exec_type(v, block, inst);
progress |= lower_exec_type(v, inst);
return progress;
}
@ -804,7 +804,7 @@ brw_lower_regioning(brw_shader &s)
bool progress = false;
foreach_block_and_inst_safe(block, brw_inst, inst, s.cfg)
progress |= lower_instruction(&s, block, inst);
progress |= lower_instruction(&s, inst);
if (progress)
s.invalidate_analysis(BRW_DEPENDENCY_INSTRUCTIONS |

View file

@ -249,7 +249,7 @@ brw_emit_scan(const brw_builder &bld, enum opcode opcode, const brw_reg &tmp,
}
static bool
brw_lower_reduce(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_reduce(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -301,7 +301,7 @@ brw_lower_reduce(brw_shader &s, bblock_t *block, brw_inst *inst)
}
static bool
brw_lower_scan(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_scan(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -486,7 +486,7 @@ brw_lower_quad_vote_gfx20(const brw_builder &bld, enum opcode opcode, brw_reg ds
}
static bool
brw_lower_vote(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_vote(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -516,7 +516,7 @@ brw_lower_vote(brw_shader &s, bblock_t *block, brw_inst *inst)
}
static bool
brw_lower_ballot(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_ballot(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -546,7 +546,7 @@ brw_lower_ballot(brw_shader &s, bblock_t *block, brw_inst *inst)
}
static bool
brw_lower_quad_swap(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_quad_swap(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -602,7 +602,7 @@ brw_lower_quad_swap(brw_shader &s, bblock_t *block, brw_inst *inst)
}
static bool
brw_lower_read_from_live_channel(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_read_from_live_channel(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -618,7 +618,7 @@ brw_lower_read_from_live_channel(brw_shader &s, bblock_t *block, brw_inst *inst)
}
static bool
brw_lower_read_from_channel(brw_shader &s, bblock_t *block, brw_inst *inst)
brw_lower_read_from_channel(brw_shader &s, brw_inst *inst)
{
const brw_builder bld(inst);
@ -658,34 +658,34 @@ brw_lower_subgroup_ops(brw_shader &s)
foreach_block_and_inst_safe(block, brw_inst, inst, s.cfg) {
switch (inst->opcode) {
case SHADER_OPCODE_REDUCE:
progress |= brw_lower_reduce(s, block, inst);
progress |= brw_lower_reduce(s, inst);
break;
case SHADER_OPCODE_INCLUSIVE_SCAN:
case SHADER_OPCODE_EXCLUSIVE_SCAN:
progress |= brw_lower_scan(s, block, inst);
progress |= brw_lower_scan(s, inst);
break;
case SHADER_OPCODE_VOTE_ANY:
case SHADER_OPCODE_VOTE_ALL:
case SHADER_OPCODE_VOTE_EQUAL:
progress |= brw_lower_vote(s, block, inst);
progress |= brw_lower_vote(s, inst);
break;
case SHADER_OPCODE_BALLOT:
progress |= brw_lower_ballot(s, block, inst);
progress |= brw_lower_ballot(s, inst);
break;
case SHADER_OPCODE_QUAD_SWAP:
progress |= brw_lower_quad_swap(s, block, inst);
progress |= brw_lower_quad_swap(s, inst);
break;
case SHADER_OPCODE_READ_FROM_LIVE_CHANNEL:
progress |= brw_lower_read_from_live_channel(s, block, inst);
progress |= brw_lower_read_from_live_channel(s, inst);
break;
case SHADER_OPCODE_READ_FROM_CHANNEL:
progress |= brw_lower_read_from_channel(s, block, inst);
progress |= brw_lower_read_from_channel(s, inst);
break;
default:

View file

@ -49,8 +49,7 @@
*/
static bool
cmod_propagate_cmp_to_add(const intel_device_info *devinfo, bblock_t *block,
brw_inst *inst)
cmod_propagate_cmp_to_add(const intel_device_info *devinfo, brw_inst *inst)
{
bool read_flag = false;
const unsigned flags_written = inst->flags_written(devinfo);
@ -166,8 +165,7 @@ cmod_propagate_cmp_to_add(const intel_device_info *devinfo, bblock_t *block,
* or.z.f0(8) g78<8,8,1> g76<8,8,1>UD g77<8,8,1>UD
*/
static bool
cmod_propagate_not(const intel_device_info *devinfo, bblock_t *block,
brw_inst *inst)
cmod_propagate_not(const intel_device_info *devinfo, brw_inst *inst)
{
const enum brw_conditional_mod cond = brw_negate_cmod(inst->conditional_mod);
bool read_flag = false;
@ -271,14 +269,14 @@ opt_cmod_propagation_local(const intel_device_info *devinfo, bblock_t *block)
*/
if (inst->opcode == BRW_OPCODE_CMP && !inst->src[1].is_zero()) {
if (brw_type_is_float(inst->src[0].type) &&
cmod_propagate_cmp_to_add(devinfo, block, inst))
cmod_propagate_cmp_to_add(devinfo, inst))
progress = true;
continue;
}
if (inst->opcode == BRW_OPCODE_NOT) {
progress = cmod_propagate_not(devinfo, block, inst) || progress;
progress = cmod_propagate_not(devinfo, inst) || progress;
continue;
}

View file

@ -97,7 +97,7 @@ is_coalesce_candidate(const brw_shader *v, const brw_inst *inst)
static bool
can_coalesce_vars(const intel_device_info *devinfo,
const brw_live_variables &live, const cfg_t *cfg,
const bblock_t *block, const brw_inst *inst,
const brw_inst *inst,
int dst_var, int src_var)
{
if (!live.vars_interfere(src_var, dst_var))
@ -176,7 +176,7 @@ can_coalesce_vars(const intel_device_info *devinfo,
/* See the big comment above */
if (regions_overlap(scan_inst->dst, scan_inst->size_written,
inst->src[0], inst->size_read(devinfo, 0))) {
if (seen_copy || scan_block != block ||
if (seen_copy || scan_block != inst->block ||
(scan_inst->force_writemask_all && !inst->force_writemask_all))
return false;
seen_src_write = true;
@ -302,7 +302,7 @@ brw_opt_register_coalesce(brw_shader &s)
dst_var[i] = live.var_from_vgrf[dst_reg] + dst_reg_offset[i];
src_var[i] = live.var_from_vgrf[src_reg] + i;
if (!can_coalesce_vars(devinfo, live, s.cfg, block, inst, dst_var[i], src_var[i]) ||
if (!can_coalesce_vars(devinfo, live, s.cfg, inst, dst_var[i], src_var[i]) ||
would_violate_eot_restriction(s, s.cfg, dst_reg, src_reg)) {
can_coalesce = false;
src_reg = ~0u;

View file

@ -312,7 +312,7 @@ bool brw_lower_send_descriptors(brw_shader &s);
bool brw_lower_send_gather(brw_shader &s);
bool brw_lower_sends_overlapping_payload(brw_shader &s);
bool brw_lower_simd_width(brw_shader &s);
bool brw_lower_src_modifiers(brw_shader &s, bblock_t *block, brw_inst *inst, unsigned i);
bool brw_lower_src_modifiers(brw_shader &s, brw_inst *inst, unsigned i);
bool brw_lower_sub_sat(brw_shader &s);
bool brw_lower_subgroup_ops(brw_shader &s);
bool brw_lower_uniform_pull_constant_loads(brw_shader &s);