On Fri, 21 Oct 2011 02:19:03 -0400, Manu <turkey...@gmail.com> wrote:
Naturally, as with all my posts, I'm not referring to x86 :)

Naturally, stating that upfront would drastically improve our understanding and 
weighting of your arguments. :)

L1 is rarely ~1 cycle access, there are even a few architectures that can't
write to L1 at all,

And I work on GPU, so I can understand that pain. Then again, I'm so much more 
conscious of my code in those situations. For example, the following are not 
all created equal:

for(uint i = 0;        i <  length; i++)
for( int i = 0;        i <  length; i++)
for(uint i = length-1; i >= 0;      i--)
for( int i = length-1; i >= 0;      i--)

and I've never come in contact with a compiler that can
do anything useful with the const keyword in C. That said __restrict is
fundamentally different than const, const suggests I can't change the
memory pointed at, when that is often exactly what I intend to do.

My point, was that there are C++ compilers that do do things (not) useful with 
const, that are in principal the exact same things that would happen to a 
__restrict object. And it caused lots of hard to find bugs. So I feel safe in 
saying that usage of __restrict should never be wide spread. It should only be 
used in well understood and controlled code hot spots.

It seems to be very hard to convince people who have never had to work on
these platforms that it's really important :/

One of the best ways to do that it to prove it with numbers, with real code 
that a consciousness embedded developer could be expected to write.

Reply via email to