[Mesa-dev] [PATCH 2/2] nir: Optimize a + neg(a)

Ian Romanick idr at freedesktop.org
Wed Mar 11 15:07:33 PDT 2015


On 03/10/2015 05:05 PM, Jason Ekstrand wrote:
> 
> 
> On Tue, Mar 10, 2015 at 4:50 PM, Matt Turner <mattst88 at gmail.com
> <mailto:mattst88 at gmail.com>> wrote:
> 
>     On Tue, Mar 10, 2015 at 4:20 PM, Ian Romanick <idr at freedesktop.org
>     <mailto:idr at freedesktop.org>> wrote:
>     > On 02/28/2015 12:19 PM, Matt Turner wrote:
>     >> On Sat, Feb 28, 2015 at 11:47 AM, Thomas Helland
>     >> <thomashelland90 at gmail.com <mailto:thomashelland90 at gmail.com>> wrote:
>     >>> On Feb 28, 2015 8:39 PM, "Jason Ekstrand" <jason at jlekstrand.net <mailto:jason at jlekstrand.net>> wrote:
>     >>>>
>     >>>> Both patches are
>     >>>>
>     >>>> Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com <mailto:jason.ekstrand at intel.com>>
>     >>>
>     >>> Could you commit them?
>     >>> I don't have commit access.
>     >>
>     >> I'd like to wait a few days to see if there are any comments about the
>     >> floating-point optimizations. If not, I'll commit them. (The integer
>     >> parts are surely fine)
>     >
>     > Hmm... does the GLSL spec say anything about integer overflow?  For
>     > large values, (a*b)+(a*c) can produce dramatically different results
>     > than a*(b+c).
> 
>     It says (in 4.1.3 Integers)
> 
>     """
>     Addition, subtraction, and shift operations resulting in overflow or
>     underflow will not cause any exception, nor will they saturate, rather
>     they will “wrap” to yield the low-order 32 bits of the result.
>     Division and multiplication operations resulting in overflow or
>     underflow will not cause any exception but will result in an undefined
>     value.
>     """
> 
>     More thinking required?
> 
> 
> Actually.... Assuming that everything's 32-bit, it's 100% ok.  A fun and
> somewhat surprising fact about modular arithmetic is that it is that
> multiplication is still distributive.  Yes, it can wrap around, but it
> will always wrap around "the same way".

Now that I think about it some more, that does seem obviously true.

> --Jason



More information about the mesa-dev mailing list