mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 20:50:09 +01:00
brw/nir: Treat load_const as convergent
opt_combine_constants goes to great effort to pack 8 constants into a single register, this can't have much effect. There is a lot of fossil-db variation among platforms, but the results are generally positive. v2: Fix for Xe2. shader-db: Lunar Lake total instructions in shared programs: 18095100 -> 18092845 (-0.01%) instructions in affected programs: 158931 -> 156676 (-1.42%) helped: 423 / HURT: 0 total cycles in shared programs: 921523326 -> 921522784 (<.01%) cycles in affected programs: 7522774 -> 7522232 (<.01%) helped: 225 / HURT: 228 LOST: 1 GAINED: 7 Meteor Lake and all older Intel platforms had similar results. (Meteor Lake shown) total instructions in shared programs: 19820211 -> 19820303 (<.01%) instructions in affected programs: 53087 -> 53179 (0.17%) helped: 135 / HURT: 1 total cycles in shared programs: 906380523 -> 906383031 (<.01%) cycles in affected programs: 1402315 -> 1404823 (0.18%) helped: 156 / HURT: 100 LOST: 1 GAINED: 16 fossil-db: Lunar Lake Totals: Instrs: 141876801 -> 141783010 (-0.07%); split: -0.07%, +0.00% Subgroup size: 10994624 -> 10994704 (+0.00%) Cycle count: 22173441950 -> 22172949188 (-0.00%); split: -0.01%, +0.01% Spill count: 69850 -> 69890 (+0.06%); split: -0.00%, +0.06% Fill count: 129285 -> 128877 (-0.32%) Max live registers: 48047900 -> 48043650 (-0.01%); split: -0.01%, +0.00% Totals from 29837 (5.41% of 551396) affected shaders: Instrs: 7842512 -> 7748721 (-1.20%); split: -1.23%, +0.03% Subgroup size: 940320 -> 940400 (+0.01%) Cycle count: 3444846368 -> 3444353606 (-0.01%); split: -0.09%, +0.08% Spill count: 23358 -> 23398 (+0.17%); split: -0.01%, +0.18% Fill count: 52296 -> 51888 (-0.78%) Max live registers: 3183481 -> 3179231 (-0.13%); split: -0.16%, +0.03% Meteor Lake Totals: Instrs: 152709353 -> 152666543 (-0.03%); split: -0.03%, +0.00% Cycle count: 17397176906 -> 17397668904 (+0.00%); split: -0.00%, +0.01% Fill count: 147896 -> 147893 (-0.00%) Max live registers: 31862891 -> 31861888 (-0.00%); split: -0.00%, +0.00% Max dispatch width: 5559664 -> 5561776 (+0.04%); split: +0.08%, -0.04% Totals from 20913 (3.30% of 633046) affected shaders: Instrs: 6676676 -> 6633866 (-0.64%); split: -0.64%, +0.00% Cycle count: 1498330125 -> 1498822123 (+0.03%); split: -0.06%, +0.09% Fill count: 41010 -> 41007 (-0.01%) Max live registers: 1799295 -> 1798292 (-0.06%); split: -0.06%, +0.00% Max dispatch width: 12880 -> 14992 (+16.40%); split: +33.29%, -16.89% DG2 and Tiger Lake had similar results. (DG2 shown) Totals: Instrs: 152730878 -> 152688139 (-0.03%); split: -0.03%, +0.00% Cycle count: 17394835605 -> 17394179808 (-0.00%); split: -0.01%, +0.00% Max live registers: 31862843 -> 31861840 (-0.00%); split: -0.00%, +0.00% Max dispatch width: 5559664 -> 5561776 (+0.04%); split: +0.08%, -0.04% Totals from 20912 (3.30% of 633046) affected shaders: Instrs: 6563021 -> 6520282 (-0.65%); split: -0.65%, +0.00% Cycle count: 1201999616 -> 1201343819 (-0.05%); split: -0.08%, +0.03% Max live registers: 1798392 -> 1797389 (-0.06%); split: -0.06%, +0.00% Max dispatch width: 12872 -> 14984 (+16.41%); split: +33.31%, -16.90% Ice Lake Totals: Instrs: 151914872 -> 151868108 (-0.03%) Cycle count: 15262958696 -> 15262665082 (-0.00%); split: -0.00%, +0.00% Max live registers: 32194225 -> 32193192 (-0.00%); split: -0.00%, +0.00% Max dispatch width: 5650880 -> 5650608 (-0.00%); split: +0.02%, -0.03% Totals from 22192 (3.48% of 637223) affected shaders: Instrs: 6419739 -> 6372975 (-0.73%) Cycle count: 184733818 -> 184440204 (-0.16%); split: -0.36%, +0.20% Max live registers: 1989950 -> 1988917 (-0.05%); split: -0.05%, +0.00% Max dispatch width: 5744 -> 5472 (-4.74%); split: +23.40%, -28.13% Skylake Totals: Instrs: 141027379 -> 140811741 (-0.15%) Cycle count: 14817704293 -> 14817418611 (-0.00%); split: -0.01%, +0.01% Max live registers: 31628796 -> 31627791 (-0.00%); split: -0.00%, +0.00% Max dispatch width: 5535176 -> 5539880 (+0.08%); split: +0.14%, -0.06% Totals from 22218 (3.53% of 628840) affected shaders: Instrs: 5944856 -> 5729218 (-3.63%) Cycle count: 182845101 -> 182559419 (-0.16%); split: -0.60%, +0.44% Max live registers: 1974576 -> 1973571 (-0.05%); split: -0.07%, +0.02% Max dispatch width: 16912 -> 21616 (+27.81%); split: +46.93%, -19.11% Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29884>
This commit is contained in:
parent
d0f1a94e3d
commit
341e5117ec
1 changed files with 4 additions and 6 deletions
|
|
@ -1807,12 +1807,14 @@ fs_nir_emit_load_const(nir_to_brw_state &ntb,
|
|||
nir_load_const_instr *instr)
|
||||
{
|
||||
const intel_device_info *devinfo = ntb.devinfo;
|
||||
const fs_builder &bld = ntb.bld;
|
||||
const fs_builder &bld = ntb.bld.scalar_group();
|
||||
|
||||
const brw_reg_type reg_type =
|
||||
brw_type_with_size(BRW_TYPE_D, instr->def.bit_size);
|
||||
brw_reg reg = bld.vgrf(reg_type, instr->def.num_components);
|
||||
|
||||
reg.is_scalar = true;
|
||||
|
||||
brw_reg comps[NIR_MAX_VEC_COMPONENTS];
|
||||
|
||||
switch (instr->def.bit_size) {
|
||||
|
|
@ -4814,11 +4816,7 @@ try_rebuild_source(nir_to_brw_state &ntb, const brw::fs_builder &bld,
|
|||
nir_instr *instr = def->parent_instr;
|
||||
switch (instr->type) {
|
||||
case nir_instr_type_load_const: {
|
||||
nir_load_const_instr *load_const =
|
||||
nir_instr_as_load_const(instr);
|
||||
ubld.MOV(brw_imm_d(load_const->value[0].i32),
|
||||
&ntb.resource_insts[def->index]);
|
||||
break;
|
||||
unreachable("load_const should already be is_scalar");
|
||||
}
|
||||
|
||||
case nir_instr_type_alu: {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue