SIMD/intrinsincs questions
Walter Bright
newshound1 at digitalmars.com
Tue Nov 10 02:14:28 PST 2009
Don wrote:
> The bad news: The DMD back-end is a state-of-the-art backend from the
> late 90's. Despite its age, its treatment of integer operations is, in
> general, still quite respectable.
Modern compilers don't do much better. The point of diminishing returns
was clearly reached.
> However, it _never_ generates SSE
> instructions. Ever. However, array operations _are_ detected, and they
> become to calls to library functions which use SSE if available. That's
> not bad for moderately large arrays -- 200 elements or so -- but of
> course it's completely non-optimal for short arrays.
>
> The good news: Now that static arrays are passed by value, introducing
> inline SSE support for short arrays suddenly makes a lot of sense --
> there can be a big performance benefit for a small backend change; it
> could be done without introducing SSE anywhere else. Most importantly,
> it doesn't require any auto-vectorisation support.
What the library functions also do is have a runtime switch based on the
capabilities of the processor, switching to operations tailored to that
processor. To generate the code directly, assuming the existence of SSE,
is to mean the code will only run on modern chips. Whether or not this
is a problem depends on your application.
More information about the Digitalmars-d
mailing list