Gloria Wang | 7913073 | 2010-02-08 14:41:04 -0800 | [diff] [blame^] | 1 | @ Tremolo library |
| 2 | @ Copyright (C) 2009 Robin Watts for Pinknoise Productions Ltd |
| 3 | |
| 4 | .text |
| 5 | |
| 6 | .global render_lineARM |
| 7 | |
| 8 | render_lineARM: |
| 9 | @ r0 = n |
| 10 | @ r1 = d |
| 11 | @ r2 = floor |
| 12 | @ r3 = base |
| 13 | @ <> = err |
| 14 | @ <> = adx |
| 15 | @ <> = ady |
| 16 | MOV r12,r13 |
| 17 | STMFD r13!,{r4-r6,r11,r14} |
| 18 | LDMFD r12,{r11,r12,r14} @ r11 = err |
| 19 | @ r12 = adx |
| 20 | @ r14 = ady |
| 21 | rl_loop: |
| 22 | LDR r4,[r1] @ r4 = *d |
| 23 | LDR r5,[r2],r3,LSL #2 @ r5 = *floor r2 = floor+base |
| 24 | SUBS r11,r11,r14 @ err -= ady |
| 25 | ADDLT r11,r11,r12 @ if (err < 0) err+=adx |
| 26 | SMULL r6, r5, r4, r5 @ (r6,r5) = *d * *floor |
| 27 | ADDLT r2, r2, #4 @ floor+=1 |
| 28 | MOVS r6, r6, LSR #15 |
| 29 | ADC r5, r6, r5, LSL #17 @ r5 = MULT31_SHIFT15 |
| 30 | STR r5,[r1],#4 |
| 31 | SUBS r0, r0, #1 |
| 32 | BGT rl_loop |
| 33 | |
| 34 | LDMFD r13!,{r4-r6,r11,PC} |
| 35 | |
| 36 | @ END |