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
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