[Mesa-dev] [PATCH 2/6] nir: Turn bcsel of +/- 1.0 and 0.0 into b2f sequences.

Eric Anholt eric at anholt.net
Wed Aug 10 17:53:00 UTC 2016


Kenneth Graunke <kenneth at whitecape.org> writes:

> On Haswell (GL 3.3):
>
> total instructions in shared programs: 6208759 -> 6203860 (-0.08%)
> instructions in affected programs: 856541 -> 851642 (-0.57%)
> helped: 3157
> HURT: 113
> LOST:   7
> GAINED: 15
>
> On Broadwell (GL 4.4):
>
> total instructions in shared programs: 11637854 -> 11632016 (-0.05%)
> instructions in affected programs: 1055693 -> 1049855 (-0.55%)
> helped: 3900
> HURT: 176
> LOST:   1
> GAINED: 18
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/compiler/nir/nir_opt_algebraic.py | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
> index 1cf614c..4e9896f 100644
> --- a/src/compiler/nir/nir_opt_algebraic.py
> +++ b/src/compiler/nir/nir_opt_algebraic.py
> @@ -251,6 +251,10 @@ optimizations = [
>     (('ieq', 'a at bool', False), ('inot', 'a')),
>     (('bcsel', a, True, False), ('ine', a, 0)),
>     (('bcsel', a, False, True), ('ieq', a, 0)),
> +   (('bcsel at 32', a, 1.0, 0.0), ('b2f', ('ine', a, 0))),
> +   (('bcsel at 32', a, 0.0, 1.0), ('b2f', ('ieq', a, 0))),
> +   (('bcsel at 32', a, -1.0, -0.0), ('fneg', ('b2f', ('ine', a, 0)))),
> +   (('bcsel at 32', a, -0.0, -1.0), ('fneg', ('b2f', ('ieq', a, 0)))),

Isn't bcsel's first arg guaranteed to be 0 or ~0?  I thought that was
how nir's bcsel (and b2f) worked.  If not, it would be good to see this
documented.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160810/ba208257/attachment-0001.sig>


More information about the mesa-dev mailing list