On Thu, Jul 7, 2016 at 12:57 PM, Erik Faye-Lund <kusmab...@gmail.com> wrote:
> On Thu, Jul 7, 2016 at 2:12 AM, Eric Anholt <e...@anholt.net> wrote:
>> This was appearing in vc4 VS/CS in mupen64, due to vertex attrib lowering
>> producing some constants that were getting compared.
>>
>> total instructions in shared programs: 112276 -> 112198 (-0.07%)
>> instructions in affected programs:     2239 -> 2161 (-3.48%)
>> total estimated cycles in shared programs: 283102 -> 283038 (-0.02%)
>> estimated cycles in affected programs:     2365 -> 2301 (-2.71%)
>> ---
>>  src/compiler/nir/nir_opt_algebraic.py | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/src/compiler/nir/nir_opt_algebraic.py 
>> b/src/compiler/nir/nir_opt_algebraic.py
>> index fd228017c54e..7d04ef941b73 100644
>> --- a/src/compiler/nir/nir_opt_algebraic.py
>> +++ b/src/compiler/nir/nir_opt_algebraic.py
>> @@ -197,6 +197,7 @@ optimizations = [
>>     (('iand', a, 0), 0),
>>     (('ior', a, a), a),
>>     (('ior', a, 0), a),
>> +   (('ior', a, True), True),
>
> Is it guaranteed that evaluating 'a' doesn't have side-effects at this point?

Yes, since "a" is just an arbitrary SSA value being matched. The
short-circuiting behavior of || and && is handled very early on,
during the AST -> GLSL IR translation, by turning them into if
statements.

> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to