summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schürmann <daniel@schuermann.dev>2021-01-15 18:54:01 +0100
committerDylan Baker <dylan.c.baker@intel.com>2021-01-26 09:18:44 -0800
commitbd506cb19ca1f48d44c16a4f2ccf49218ec1f2ed (patch)
tree82f99d2d06f8239c034ad13e1dffeb271648f7a3
parent215266234b56498c77b813513f3736928630f749 (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.json2
-rw-r--r--src/amd/compiler/aco_optimizer.cpp1
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();