Rockbox mail archiveSubject: Re: Possible optimizations for coldfire
Re: Possible optimizations for coldfire
From: Jens Arnold <arnold-j_at_t-online.de>
Date: Thu, 20 Apr 2006 01:08:52 +0200
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.
Received on 2006-04-20
Page was last modified "Sat May 23 08:12:40 2020" The Rockbox Crew