On 12/29/11 8:48 PM, "ext Thiago Macieira" <[email protected]> wrote:
> >I'm thinking the whole architecture might need to change: > >gcc $ make .obj/release-shared/qdrawhelper.o |& grep -c LOOP\ VECTORIZED >112 > >icc $ make .obj/release-shared/qdrawhelper.o |& grep -c LOOP\ WAS\ >VECTORIZED >107 > >This file alone has a lot of vectorisation possibilities, for things I >doubt >we'll ever even consider writing vector code using intrinsics. Yet there >are >probably big performance improvements possible. I recommend then the >following >actions, instead of what I had recommended before: > >1) Drop the MMX code and the 3dNow! extensions now > >2) Compile qdrawhelper.cpp once, normally, no change to compiler flags > >3) If the compiler flags from the user do not already include -msse2, >compile >it *again* with -msse2; the same applies for -mfpu=neon on ARM. > >4) If the compiler flags don't already include -mavx, do it *again* with >-mavx. > >5) Select a few operations that might benefit from SSE3 or SSSE3 >implementations on top of the SSE2 ones (my guess is it's only >blend_argb32_on_argb32) > The main problem with this approach will be to get the build system to do what you want it to do. But otherwise it sounds fine. >On Thursday, 29 de December de 2011 17.00.09, Thiago Macieira wrote: >> 1) Drop the MMX code and the 3dNow! extensions now > >Report. These are the functions being dropped and their impact: > >[where XXX is mmx, sse, mmx3dnow and sse3dnow, YYY are composition modes] > >- qt_blend_color_argb_XXX >Impect: none, qt_blend_color_argb in qdrawhelper.cpp is vectorised > >- qt_blend_rgb32_on_rgb32_XXX >Impact: none, there's qt_blend_rgb32_on_rgb32_sse2 > >- qt_blend_argb32_on_argb32_XXX >Impact: none, there's a function in SSE2 and SSSE3 > >- comp_func_solid_YYY<XXX> >- comp_func_YYY<XXX> >- rasterop_solid_YYY<XXX>: >Impact: none, the qdrawhelper.cpp functions are vectorised; some of the >comp_func functions have SSE2 specialised implementations. Ok, let's drop MMX and 3dNow then :) > >Someone should benchmark the SSE2 handwritten code with the vectorised >code by >the compiler. Agree. Cheers, Lars _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
