Mesa (master): intel/compiler: Treat b32csel as potentially producing a Boolean result for resolve analysis
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 6 00:19:09 UTC 2019
Module: Mesa
Branch: master
Commit: 1c30d26d89c52b253062522d4ea488c22a83a7ab
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c30d26d89c52b253062522d4ea488c22a83a7ab
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Tue Jun 4 12:16:55 2019 -0700
intel/compiler: Treat b32csel as potentially producing a Boolean result for resolve analysis
If the 2nd and 3rd source are both Boolean values, we can potentially
avoid a resolve by only resolving the result of the b32csel.
No changes on any Gen6+ Intel platform.
v2: Use ?: instead of cast from bool to unsigned. Suggested by Caio.
Iron Lake
total instructions in shared programs: 8142729 -> 8142677 (<.01%)
instructions in affected programs: 12890 -> 12838 (-0.40%)
helped: 26
HURT: 0
helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
helped stats (rel) min: 0.25% max: 0.74% x̄: 0.45% x̃: 0.38%
95% mean confidence interval for instructions value: -2.00 -2.00
95% mean confidence interval for instructions %-change: -0.52% -0.39%
Instructions are helped.
total cycles in shared programs: 188549632 -> 188549394 (<.01%)
cycles in affected programs: 60754 -> 60516 (-0.39%)
helped: 25
HURT: 1
helped stats (abs) min: 2 max: 26 x̄: 9.92 x̃: 8
helped stats (rel) min: 0.07% max: 2.23% x̄: 0.59% x̃: 0.27%
HURT stats (abs) min: 10 max: 10 x̄: 10.00 x̃: 10
HURT stats (rel) min: 0.70% max: 0.70% x̄: 0.70% x̃: 0.70%
95% mean confidence interval for cycles value: -12.91 -5.40
95% mean confidence interval for cycles %-change: -0.84% -0.23%
Cycles are helped.
GM45
total instructions in shared programs: 5013119 -> 5013093 (<.01%)
instructions in affected programs: 6764 -> 6738 (-0.38%)
helped: 13
HURT: 0
helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
helped stats (rel) min: 0.24% max: 0.68% x̄: 0.43% x̃: 0.36%
95% mean confidence interval for instructions value: -2.00 -2.00
95% mean confidence interval for instructions %-change: -0.52% -0.34%
Instructions are helped.
total cycles in shared programs: 128977804 -> 128977700 (<.01%)
cycles in affected programs: 37738 -> 37634 (-0.28%)
helped: 13
HURT: 0
helped stats (abs) min: 8 max: 8 x̄: 8.00 x̃: 8
helped stats (rel) min: 0.18% max: 0.46% x̄: 0.30% x̃: 0.26%
95% mean confidence interval for cycles value: -8.00 -8.00
95% mean confidence interval for cycles %-change: -0.36% -0.24%
Cycles are helped.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
---
src/intel/compiler/brw_nir_analyze_boolean_resolves.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/intel/compiler/brw_nir_analyze_boolean_resolves.c b/src/intel/compiler/brw_nir_analyze_boolean_resolves.c
index f298590c470..63d094168b9 100644
--- a/src/intel/compiler/brw_nir_analyze_boolean_resolves.c
+++ b/src/intel/compiler/brw_nir_analyze_boolean_resolves.c
@@ -137,11 +137,13 @@ analyze_boolean_resolves_block(nir_block *block)
resolve_status = get_resolve_status_for_src(&alu->src[0].src);
break;
+ case nir_op_b32csel:
case nir_op_iand:
case nir_op_ior:
case nir_op_ixor: {
- uint8_t src0_status = get_resolve_status_for_src(&alu->src[0].src);
- uint8_t src1_status = get_resolve_status_for_src(&alu->src[1].src);
+ const unsigned first = alu->op == nir_op_b32csel ? 1 : 0;
+ uint8_t src0_status = get_resolve_status_for_src(&alu->src[first + 0].src);
+ uint8_t src1_status = get_resolve_status_for_src(&alu->src[first + 1].src);
if (src0_status == src1_status) {
resolve_status = src0_status;
More information about the mesa-commit
mailing list