[Issue 7413] Vector literals don't work

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed May 2 15:11:06 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=7413



--- Comment #15 from Don <clugdbug at yahoo.com.au> 2012-05-02 15:12:18 PDT ---
(In reply to comment #14)
> (In reply to comment #13)
> > (In reply to comment #12)
> > > (In reply to comment #11)
> > > > Haven't done the special case optimizations for constant loading.
> > > 
> > > No problem, I'm using GDC anyway which might detect those in the back end.
> > > 
> > > An efficient implementation would certainly use at least an xor for 0
> > > initialisation, and the other tricks will get different mileage depending on
> > > the length of the pipeline surrounding. Not accessing memory is always better
> > > if there are pipeline cycles to soak up the latency.
> > 
> > The -1 trick is always worth doing, I think. Agner Fog has a nice list in his
> > optimisation manuals, but the only ones _always_ worth doing are the 0 and -1
> > integer cases, and the 0.0 floating point case (also using xor).
> 
> If the compiler knows anything about the pipeline around the code, it should be
> able to make the best choice about the others.

My guess is that it's pretty rare that the alternative sequences are favoured
just on the basis of the pipeline, since MOVDQA only uses a load port, and
nothing else. Especially on Sandy Bridge or AMD, where there are two load
ports.
So I doubt there's much benefit to be had.

By contrast, if there's _any_ chance of a cache miss, they'd be a huge win, but
unfortunately that's far beyond the compiler's capabilities.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list