diff options
author | Daniel Schürmann <daniel@schuermann.dev> | 2021-01-15 18:54:01 +0100 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2021-01-26 09:18:44 -0800 |
commit | bd506cb19ca1f48d44c16a4f2ccf49218ec1f2ed (patch) | |
tree | 82f99d2d06f8239c034ad13e1dffeb271648f7a3 | |
parent | 215266234b56498c77b813513f3736928630f749 (diff) |
aco/optimizer: don't copy-prop logical phis
This is dangerous w.r.t. LCSSA-phis.
Totals from 746 (0.54% of 139391) affected shaders (Navi10):
CodeSize: 8592160 -> 8568156 (-0.28%); split: -0.30%, +0.02%
MaxWaves: 5172 -> 5171 (-0.02%); split: +0.02%, -0.04%
Instrs: 1653949 -> 1648489 (-0.33%); split: -0.36%, +0.03%
Cycles: 49474892 -> 49329224 (-0.29%); split: -0.33%, +0.03%
VMEM: 137574 -> 137421 (-0.11%); split: +0.18%, -0.29%
SMEM: 42391 -> 42439 (+0.11%); split: +0.12%, -0.01%
VClause: 26946 -> 26943 (-0.01%)
Copies: 130902 -> 126176 (-3.61%); split: -4.05%, +0.43%
Branches: 54891 -> 54556 (-0.61%); split: -0.64%, +0.03%
PreVGPRs: 53941 -> 53939 (-0.00%)
This has a slight effect on RA due to affinity changes.
Cc: 20.3
Cc: 21.0
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8260>
(cherry picked from commit cd870d1b6aa43daa65f1e6c9763e5bdd7139acc9)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/amd/compiler/aco_optimizer.cpp | 1 |
2 files changed, 1 insertions, 2 deletions
diff --git a/.pick_status.json b/.pick_status.json index f1e9cb540de..be5712f8e84 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2506,7 +2506,7 @@ "description": "aco/optimizer: don't copy-prop logical phis", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 7258f3a793d..04676516bbc 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -1389,7 +1389,6 @@ void label_instruction(opt_ctx &ctx, Block& block, aco_ptr<Instruction>& instr) instr->operands[1].isTemp() && ctx.info[instr->operands[1].tempId()].is_vcc()) ctx.info[instr->definitions[0].tempId()].set_temp(ctx.info[instr->operands[1].tempId()].temp); break; - case aco_opcode::p_phi: case aco_opcode::p_linear_phi: { /* lower_bool_phis() can create phis like this */ bool all_same_temp = instr->operands[0].isTemp(); |