- Status Closed
- Percent Complete
- Task Type Patches
- Category
- Assigned To No-one
- Operating System
- Severity Low
- Priority Very Low
- Reported Version
- Due in Version Undecided
-
Due Date
Undecided
- Votes
- Private
FS#2858 - Tremor optimizations
Here’s a new tremor optimization patch, now based off
of the latest that Lear has checked in.
This patch uses assembly versions of ++, –, and x=*y++
because GCC can’t figure its head from coldfire’s
instruction set and needs help.
It also converts things like:
x=y[z++];
into:
x=y[z];
z++;
because otherwise gcc moves the z to a temporary
register to use as an index, and then increments the
old, wasting a temp register, and a move instruction.
I also re-arranged the render_point and render_line
functions, render point reduced from 12ish to 6
instructions, and removed a jbsr to __divsi3 by using
the divs instruction, and similar numeric reduction in
length was achieved for render_line although the
percent reduction is less because it’s a larger
function. Both of these use inline assembly, #if’d.
It also moves a bunch of stuff around in IRAM. I’m not
sure how the dependencies all work out, but I am
posting profile runs to compare. Only doing the
assembly parts results in a speed change of 0.57%,
doing the whole set with the IRAM change is more than
5% faster, despite profiling an additional function.
2006-01-25 23:54
Reason for closing: Accepted
Additional comments about closing: Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407
Logged In: YES
user_id=838556
Most of this is in current CVS, and the rest
isn't really
worthwhile.
Closing.
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Hmm, there is one bad hunk in that patch that de-inlines
decode_packed_entry_number. I see no difference in
performance with or without that hunk, but probably better
to inline it than IRAM it.
Most of this is in current CVS, and the rest isn’t really
worthwhile. Closing.