Mercurial > libavcodec.hg
comparison armv4l/simple_idct_armv6.S @ 4457:99e960878498 libavcodec
remove redundant loads
author | mru |
---|---|
date | Thu, 01 Feb 2007 22:44:42 +0000 |
parents | c66326f1f635 |
children | 9efb3639d7fe |
comparison
equal
deleted
inserted
replaced
4456:33f181383a21 | 4457:99e960878498 |
---|---|
49 | 49 |
50 /* | 50 /* |
51 Compute partial IDCT of single row. | 51 Compute partial IDCT of single row. |
52 shift = left-shift amount | 52 shift = left-shift amount |
53 a1 = source address | 53 a1 = source address |
54 a3 = row[2,0] | |
55 a4 = row[3,1] | |
54 | 56 |
55 Output in registers v1--v8 | 57 Output in registers v1--v8 |
56 */ | 58 */ |
57 .macro idct_row shift | 59 .macro idct_row shift |
58 ldr a3, [a1] /* a3 = row[2,0] */ | |
59 ldr ip, [pc, #(w42-.-8)] /* ip = W4 | (W2 << 16) */ | 60 ldr ip, [pc, #(w42-.-8)] /* ip = W4 | (W2 << 16) */ |
60 ldr lr, [pc, #(w46-.-8)] /* lr = W4 | (W6 << 16) */ | 61 ldr lr, [pc, #(w46-.-8)] /* lr = W4 | (W6 << 16) */ |
61 ldr a4, [a1, #8] /* a4 = row[3,1] */ | |
62 mov a2, #(1<<(\shift-1)) | 62 mov a2, #(1<<(\shift-1)) |
63 smlad v1, a3, ip, a2 | 63 smlad v1, a3, ip, a2 |
64 smlsd v4, a3, ip, a2 | 64 smlsd v4, a3, ip, a2 |
65 ldr ip, [pc, #(w13-.-8)] /* ip = W1 | (W3 << 16) */ | 65 ldr ip, [pc, #(w13-.-8)] /* ip = W1 | (W3 << 16) */ |
66 ldr v7, [pc, #(w57-.-8)] /* v7 = W5 | (W7 << 16) */ | 66 ldr v7, [pc, #(w57-.-8)] /* v7 = W5 | (W7 << 16) */ |
246 .align | 246 .align |
247 .func idct_col_armv6 | 247 .func idct_col_armv6 |
248 idct_col_armv6: | 248 idct_col_armv6: |
249 stmfd sp!, {a2, lr} | 249 stmfd sp!, {a2, lr} |
250 | 250 |
251 ldr a3, [a1] /* a3 = row[2,0] */ | |
252 ldr a4, [a1, #8] /* a4 = row[3,1] */ | |
251 idct_row COL_SHIFT | 253 idct_row COL_SHIFT |
252 ldr a2, [sp], #4 | 254 ldr a2, [sp], #4 |
253 idct_finish_shift COL_SHIFT | 255 idct_finish_shift COL_SHIFT |
254 | 256 |
255 strh v1, [a2] | 257 strh v1, [a2] |
273 .align | 275 .align |
274 .func idct_col_put_armv6 | 276 .func idct_col_put_armv6 |
275 idct_col_put_armv6: | 277 idct_col_put_armv6: |
276 stmfd sp!, {a2, a3, lr} | 278 stmfd sp!, {a2, a3, lr} |
277 | 279 |
280 ldr a3, [a1] /* a3 = row[2,0] */ | |
281 ldr a4, [a1, #8] /* a4 = row[3,1] */ | |
278 idct_row COL_SHIFT | 282 idct_row COL_SHIFT |
279 ldmfd sp!, {a2, a3} | 283 ldmfd sp!, {a2, a3} |
280 idct_finish_shift_sat COL_SHIFT | 284 idct_finish_shift_sat COL_SHIFT |
281 | 285 |
282 strb v1, [a2], a3 | 286 strb v1, [a2], a3 |
302 .align | 306 .align |
303 .func idct_col_add_armv6 | 307 .func idct_col_add_armv6 |
304 idct_col_add_armv6: | 308 idct_col_add_armv6: |
305 stmfd sp!, {a2, a3, lr} | 309 stmfd sp!, {a2, a3, lr} |
306 | 310 |
311 ldr a3, [a1] /* a3 = row[2,0] */ | |
312 ldr a4, [a1, #8] /* a4 = row[3,1] */ | |
307 idct_row COL_SHIFT | 313 idct_row COL_SHIFT |
308 ldmfd sp!, {a2, a3} | 314 ldmfd sp!, {a2, a3} |
309 idct_finish | 315 idct_finish |
310 | 316 |
311 ldrb a4, [a2] | 317 ldrb a4, [a2] |