[vsipl++] [patch] Vector assignment, sarsim bits
Mark Mitchell
mark at codesourcery.com
Fri Sep 23 20:35:59 UTC 2005
Jules Bergmann wrote:
> A bunch of misc things collected over the past few weeks to optimize and
> parallel sarsim.
>
> Perhaps the most substantial bit, I changed the Vector assignment
> operators (+=, -=, etc) to go through the same dispatch as 'operator=',
> so that 'A += B' gets evaluated as 'A = A + B'. This throws away the
> knowledge that it is an update expression, but it lets it get evaluated
> by IPP when possible. In the long term, we may want to add special
> dispatch for operator assignment so we don't throw this knowledge away.
>
> Thoughts?
We do the same thing in the compiler; "i += j" is treated exactly like
"i = i + j". If there are special operations for update you want to
apply them in both cases, i.e., you want to optimize "i = i + j" and "i
= j + i" if the user happens to right it that way. So, first you turn
"i += j" into "i = i + j"; then you (later) look for the update case.
In VSIPL++, you could do that at runtime-dispatch time. In a compiler,
there's generally very little runtime dispatch; these things are decided
up front. That does suggest that, in the long run, you may want to do
compile-time dispatch for the += case if you have a library that
specially supports that case. But, you'll probably want to do the
runtime dispatch anyhow, and that will get you most of the bang.
So, I think your strategy makes sense.
--
Mark Mitchell
CodeSourcery, LLC
mark at codesourcery.com
(916) 791-8304
More information about the vsipl++
mailing list