[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