Totals from 61 (0.04% of 150170) affected shaders: (GFX10.3)
CodeSize:
1087732 ->
1087380 (-0.03%); split: -0.22%, +0.18%
Instrs: 192343 -> 192205 (-0.07%); split: -0.16%, +0.09%
Latency:
7231670 ->
7148073 (-1.16%); split: -1.19%, +0.04%
InvThroughput:
3436715 ->
3394926 (-1.22%); split: -1.25%, +0.04%
VClause: 4831 -> 4833 (+0.04%)
Copies: 50130 -> 49934 (-0.39%); split: -0.67%, +0.28%
Branches: 5945 -> 5948 (+0.05%)
PreSGPRs: 3486 -> 3472 (-0.40%)
PreVGPRs: 5154 -> 5152 (-0.04%)
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11678>
if (!op.isTemp())
continue;
ssa_info& info = ctx.info[op.tempId()];
+ if (!info.is_extract())
+ continue;
+ /* if there are that many uses, there are likely better combinations */
+ // TODO: delay applying extract to a point where we know better
+ if (ctx.uses[op.tempId()] > 4) {
+ info.label &= ~label_extract;
+ continue;
+ }
if (info.is_extract() &&
(info.instr->operands[0].getTemp().type() == RegType::vgpr ||
instr->operands[i].getTemp().type() == RegType::sgpr) &&