On Thursday 12 December 2013 Dec 19:06:20 Pau Garcia i Quiles wrote:
> On Wed, Dec 11, 2013 at 10:21 AM, Simon Hausmann
> <simon.hausm...@digia.com>wrote:
> 
> 
> > > The other option for 5.2 would be to do runtime detection of SSE2 and
> > > enable/disable the JIT according to that.
> >
> > I think the main issue with run-time detection is that we need -msse2
> > -mfpmath=sse in order to get reliable math results (no 80-bit temps) that
> > match with our test expectations, when using the interpreter or non-inline
> > math functions.
> >
> 
> I have not looked into the actual code, I know everybody hates dlopen and I
> haven't even though about the performance implications but, what about this?
> 
> - Move "maybe-SSE2" code to a separate library
> - Compile that library twice, one with SSE2 (-msse2 -mfmath=sse), the other
> without SSE2
> - Ship both versions of the library: libwhatever_sse2.so,
> libwhatever_i486.so
> - On runtime, check for SSE2 and load the appropriate version
> 
> The same approach could be used in other parts of Qt, or even for having
> SSE2, SSE2, etc versions of that library/plugin
>

In Krita, we use Vc to abstract away all this stuff -- we code our 
vectorization optimizations using Vc and then Vc takes care to select the best 
alternative run-time. I don't know how well it would fit with Qt, but I'm very 
glad with it:

http://code.compeng.uni-frankfurt.de/projects/vc

For Krita 2.8, we added support for AVX2, but that's still in a separate branch.

-- 
Boudewijn Rempt
http://www.valdyas.org, http://www.krita.org, http://www.boudewijnrempt.nl

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

Reply via email to