Rockbox

  • Status Closed
  • Percent Complete
    0%
  • 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
Attached to Project: Rockbox
Opened by lostlogic - 2005-12-21
Last edited by lostlogic - 2006-01-25

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.

Closed by  lostlogic
2006-01-25 23:54
Reason for closing:  Accepted
Additional comments about closing:  

Logged In: YES
user_id=838556

Most of this is in current CVS, and the rest isn't really
worthwhile. Closing.

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.

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing