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]