[Development] QTBUG-30440: restricting the SIMD files

Knoll Lars Lars.Knoll at digia.com
Tue Aug 20 08:24:01 CEST 2013



On 20.08.13 03:54, "Thiago Macieira" <thiago.macieira at intel.com> wrote:

>On quinta-feira, 15 de agosto de 2013 08:06:19, Thiago Macieira wrote:
>> > I'd agree that option (4) is the cleanest solution. Have you checked
>>how
>> > much we'd need to change to implement it?
>> 
>> No, not yet.
>> 
>> I don't think it will be too hard because those routines are still
>>fairly 
>> limited. I will look into this soon.
>
>Ok, just checked.
>
>- We use many typedefs and constants from qglobal.h (Q_CC_xx, quint32,
>etc.)
>
>- All of them depend on qsimd_p.h to get the right intrinsics #includes
>
>-  Also, qmath.h is used.
>
>- We use a lot of some base classes like QRect, QRectF, QMatrix,
>QTransform. 
>  The latter three are especially a problem because they do
>floating-point. 
>
>- The helpers access internal structures defined elsewhere, like
>QClipData, 
>  QRasterBuffer
>
>- There are a few C++ template classes for facilitating work (e.g.
>  QRadialFetchSimd).
>
>In all, this will be hard work.
>
>I don't want to include qglobal.h because that's where qRound comes from.
>That 
>automatically excludes each and every Qt header.
>
>I can probably make the helpers #include "../../corelib/tools/qsimd_p.h",
>make 
>qsimd_p.h include only qconfig.h and qcompilerdetection.h.
>
>But the rest is going to be quite difficult...

So we're still lacking a proper solution.

A slightly hacky solution might be to force inlining of inline methods in
these files. With gcc, we could achieve that by defining inline to
__attribute__((always_inline)) on the top of the file that's being
compiled.

Cheers,
Lars




More information about the Development mailing list