Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Re: Possible optimizations for coldfire

Re: Possible optimizations for coldfire

From: Jens Arnold <arnold-j_at_t-online.de>
Date: 2006-04-20

On 19.04.2006, Jens Arnold wrote:

> On 19.04.2006, RaeNye wrote:

> ...

>> 3. GNU's memcpy() and memset() are not using all possible
>> registers (i.e. movem.l does only 16 bytes writes instead of
>> the possible 48). It also spends so much time on alignment
>> (which is not necessary for movem.l, IIRC).

> Rockbox' memcpy() and memset() for coldfire are not gnu - they
> are our own, coded by me. There are numerous reasons why they
> are designed as they are designed.

> ...

P.S.: If you manage to handle 48 (or even 32) bytes in one
movem.l cycle in memcpy() - congratulations. You would need 12
(or 8) free registers in addition to the loop & alignment stuff.
Plus, you can't shift address registers, so you'd need some
extra register swapping.

Just another hint: Freeing up registers for use in memcpy also
has a penalty - 2 longword stack accesses per register: quite
noticeable slowdown. Not all thread stacks are in IRAM.

Regards, Jens
Received on Thu Apr 20 01:10:29 2006


Page was last modified "Jan 10 2012" The Rockbox Crew
aaa