On domingo, 10 de novembro de 2013 13:27:11, Christoph Feck wrote:
> > Additional benefits of this change are:
> >  a) all FP math done in Qt will be done using SSE instead of the
> > 
> > slower x87 stack
> 
> Note that x87 math has higher precision, because it computes with 80
> bits internally before rounding final results, but I doubt it has any
> impact on the computations that Qt does.

Actually, it does. The fact that the x87 stack computes intermediaries with 
higher precision is a source of problems. Sometimes, calculations yield 
different results depending on when a value was spilled from register to 
memory.

In particular, for the JS interpreter case, using SSE registers means we 
*always* use double precision, yielding proper IEEE 754 operations required by 
the ECMAScript standard. Using x87 would introduce errors.

> 
> >  b) the drawhelpers will be unconditionally enabled
> >  
> >  c) the SSE2-based code for the Latin1 and UTF-8 codecs will be
> > 
> > unconditionally enabled
> 
> I have seen crashes ending in Qt SSE2 helper functions, probably
> because they access more data than needed due to the SIMD nature of
> the instructions. This can cause access violations on page boundaries.
> Has the Qt SSE2 code been audited for avoiding these?

The code was written to avoid that. I think the only code that reads beyond 
the end of the buffer is the SSSE3 one using PALIGNR. However, PALIGNR is used 
because we are doing two aligned loads. Aligned loads never cross page 
boundaries.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to