[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