[Development] State of x86 SIMD in Qt

lars.knoll at nokia.com lars.knoll at nokia.com
Tue Jan 3 12:00:33 CET 2012


On 12/29/11 8:48 PM, "ext Thiago Macieira" <thiago.macieira at intel.com>
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




More information about the Development mailing list