[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

arch/alpha/lib/memcpy.c v2.3.34



I was looking at some Alpha code in the arch/alpha/lib directory
and noticed that prefetching was not being utilised. Does anyone have 
a performance testsuite which would exercise this change? 
It would be great if someone could point me to any doc for the __asm__ macro
as I haven't understood the various possibilities to fix the hardcoded register
$17 below.

 static inline void __memcpy_aligned_up (unsigned long d, unsigned long s,
					long n)
{
	unsigned long block=1;
	ALIGN_DEST_TO8_UP(d,s,n);
	__asm__("ldl $31,256($17)");
	n -= 8;
	while (n >= 0) {
		unsigned long tmp;
		__asm__("ldq %0,%1":"=r" (tmp):"m" (*(unsigned long *) s));
		n -= 8;
		s += 8;
		*(unsigned long *) d = tmp;
		block += 1;
		if(block == 32) { block=1; __asm__("ldl $31,256($17)"); }
		d += 8;
	}
	n += 8;
	DO_REST_ALIGNED_UP(d,s,n);
}

Thanks for any help in understanding how to code my 21264.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index] []