forked from len0rd/rockbox
Shorten innerloop by one instruction.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8542 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
0ecd0b0fc2
commit
3495e75719
1 changed files with 5 additions and 6 deletions
11
apps/eq_cf.S
11
apps/eq_cf.S
|
|
@ -40,14 +40,13 @@ eq_filter:
|
|||
where y[] is output and x[] is input. This is performed out of order
|
||||
to do parallel load of input value.
|
||||
*/
|
||||
mac.l %a1, %d0, (%a6), %d4, %acc0 | acc = b1*x[i - 1], x[i] -> d4
|
||||
mac.l %a2, %d1, %acc0 | acc += b2*x[i - 2]
|
||||
mac.l %a0, %d4, %acc0 | acc += b0*x[i]
|
||||
mac.l %a2, %d1, %acc0 | acc = b2*x[i - 2]
|
||||
move.l %d0, %d1 | fix input history
|
||||
mac.l %a1, %d0, (%a6), %d0, %acc0 | acc += b1*x[i - 1], x[i] -> d0
|
||||
mac.l %a0, %d0, %acc0 | acc += b0*x[i]
|
||||
mac.l %a3, %d2, %acc0 | acc += a1*y[i - 1]
|
||||
mac.l %a4, %d3, %acc0 | acc += a2*y[i - 2]
|
||||
move.l %d0, %d1 | fix history
|
||||
move.l %d4, %d0
|
||||
move.l %d2, %d3
|
||||
move.l %d2, %d3 | fix output history
|
||||
movclr.l %acc0, %d2 | fetch and write result
|
||||
asl.l %d7, %d2 | restore fixed point format
|
||||
move.l %d2, (%a6)+ | save result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue