This commit is contained in:
		@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * $Id: mem.c 163 2008-04-24 13:08:14Z baconevi $
 | 
			
		||||
 * $Id: mem.c 164 2008-04-24 13:21:17Z baconevi $
 | 
			
		||||
 *
 | 
			
		||||
 * {License}
 | 
			
		||||
 */
 | 
			
		||||
@ -29,15 +29,15 @@ void* ase_memcpy (void* dst, const void* src, ase_size_t n)
 | 
			
		||||
	ase_byte_t* d;
 | 
			
		||||
	ase_byte_t* s;
 | 
			
		||||
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_ulong_t) && IS_BOTH_ALIGNED(dst,src))
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_size_t) && IS_BOTH_ALIGNED(dst,src))
 | 
			
		||||
	{
 | 
			
		||||
		ase_ulong_t* du = (ase_ulong_t*)dst;
 | 
			
		||||
		ase_ulong_t* su = (ase_ulong_t*)src;
 | 
			
		||||
		ase_size_t* du = (ase_size_t*)dst;
 | 
			
		||||
		ase_size_t* su = (ase_size_t*)src;
 | 
			
		||||
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_ulong_t))
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_size_t))
 | 
			
		||||
		{
 | 
			
		||||
			*du++ = *su++;
 | 
			
		||||
			n -= ASE_SIZEOF(ase_ulong_t);
 | 
			
		||||
			n -= ASE_SIZEOF(ase_size_t);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		d = (ase_byte_t*)du;
 | 
			
		||||
@ -79,10 +79,9 @@ void* ase_memset (void* dst, int val, ase_size_t n)
 | 
			
		||||
	if (rem > 0)
 | 
			
		||||
	{
 | 
			
		||||
		ase_byte_t* d = (ase_byte_t*)dst;
 | 
			
		||||
		do
 | 
			
		||||
		{
 | 
			
		||||
			*d++ = (ase_byte_t)val;
 | 
			
		||||
		} while (n-- > 0 && ++rem <= ASE_SIZEOF(v16));
 | 
			
		||||
 | 
			
		||||
		do { *d++ = (ase_byte_t)val; } 
 | 
			
		||||
		while (n-- > 0 && ++rem <= ASE_SIZEOF(v16));
 | 
			
		||||
 | 
			
		||||
		vd = (vector unsigned char*)d;
 | 
			
		||||
	}
 | 
			
		||||
@ -104,33 +103,42 @@ void* ase_memset (void* dst, int val, ase_size_t n)
 | 
			
		||||
	
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
	ase_byte_t* d;
 | 
			
		||||
	ase_byte_t* d = (ase_byte_t*)dst;
 | 
			
		||||
	ase_size_t rem;
 | 
			
		||||
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_ulong_t) && IS_ALIGNED(dst))
 | 
			
		||||
	rem = IS_UNALIGNED(dst);
 | 
			
		||||
	if (rem > 0)
 | 
			
		||||
	{
 | 
			
		||||
		ase_ulong_t* u = (ase_ulong_t*)dst;
 | 
			
		||||
		ase_ulong_t uv = 0;
 | 
			
		||||
		d = (ase_byte_t*)dst;
 | 
			
		||||
		do { *d++ = (ase_byte_t)val; 
 | 
			
		||||
printf ("unaligned...\n");
 | 
			
		||||
} 
 | 
			
		||||
		while (n-- > 0 && ++rem <= ASE_SIZEOF(ase_size_t));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_size_t))
 | 
			
		||||
	{
 | 
			
		||||
		ase_size_t* u = d;
 | 
			
		||||
		ase_size_t uv = 0;
 | 
			
		||||
		int i;
 | 
			
		||||
 | 
			
		||||
		if (val != 0) 
 | 
			
		||||
		{
 | 
			
		||||
			for (i = 0; i < ASE_SIZEOF(ase_ulong_t); i++)
 | 
			
		||||
			for (i = 0; i < ASE_SIZEOF(ase_size_t); i++)
 | 
			
		||||
				uv = (uv << 8) | (ase_byte_t)val;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_ulong_t))
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_size_t))
 | 
			
		||||
		{
 | 
			
		||||
printf ("block...\n");
 | 
			
		||||
			*u++ = uv;
 | 
			
		||||
			n -= ASE_SIZEOF(ase_ulong_t);
 | 
			
		||||
			n -= ASE_SIZEOF(ase_size_t);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		d = (ase_byte_t*)u;
 | 
			
		||||
	}
 | 
			
		||||
	else 
 | 
			
		||||
	{
 | 
			
		||||
		d = (ase_byte_t*)dst;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
printf ("unaligned %lld...\n", (long long)n);
 | 
			
		||||
	while (n-- > 0) *d++ = (ase_byte_t)val;
 | 
			
		||||
	return dst;
 | 
			
		||||
 | 
			
		||||
@ -170,16 +178,16 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n)
 | 
			
		||||
	const ase_byte_t* b1;
 | 
			
		||||
	const ase_byte_t* b2;
 | 
			
		||||
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_ulong_t) && IS_BOTH_ALIGNED(s1,s2))
 | 
			
		||||
	if (n >= ASE_SIZEOF(ase_size_t) && IS_BOTH_ALIGNED(s1,s2))
 | 
			
		||||
	{
 | 
			
		||||
		const ase_ulong_t* u1 = (const ase_ulong_t*)s1;
 | 
			
		||||
		const ase_ulong_t* u2 = (const ase_ulong_t*)s2;
 | 
			
		||||
		const ase_size_t* u1 = (const ase_size_t*)s1;
 | 
			
		||||
		const ase_size_t* u2 = (const ase_size_t*)s2;
 | 
			
		||||
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_ulong_t))
 | 
			
		||||
		while (n >= ASE_SIZEOF(ase_size_t))
 | 
			
		||||
		{
 | 
			
		||||
			if (*u1 != *u2) break;
 | 
			
		||||
			u1++; u2++;
 | 
			
		||||
			n -= ASE_SIZEOF(ase_ulong_t);
 | 
			
		||||
			n -= ASE_SIZEOF(ase_size_t);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		b1 = (const ase_byte_t*)u1;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user