Mercurial > libavcodec.hg
comparison arm/simple_idct_neon.S @ 11443:361a5fcb4393 libavcodec
ARM: set size of asm functions in object files
author | mru |
---|---|
date | Tue, 09 Mar 2010 16:17:56 +0000 |
parents | be725249ea67 |
children | 17a110bfdeb6 |
comparison
equal
deleted
inserted
replaced
11442:fe32d9ba1c86 | 11443:361a5fcb4393 |
---|---|
75 pld [r3] | 75 pld [r3] |
76 pld [r3, r1] | 76 pld [r3, r1] |
77 add r3, r3, r1, lsl #1 | 77 add r3, r3, r1, lsl #1 |
78 pld [r3] | 78 pld [r3] |
79 pld [r3, r1] | 79 pld [r3, r1] |
80 .endfunc | 80 endfunc |
81 | 81 |
82 function idct_row4_neon | 82 function idct_row4_neon |
83 vmov.i32 q15, #(1<<(ROW_SHIFT-1)) | 83 vmov.i32 q15, #(1<<(ROW_SHIFT-1)) |
84 vld1.64 {d2-d5}, [r2,:128]! | 84 vld1.64 {d2-d5}, [r2,:128]! |
85 vmlal.s16 q15, d2, w4 /* q15 += W4 * col[0] */ | 85 vmlal.s16 q15, d2, w4 /* q15 += W4 * col[0] */ |
145 | 145 |
146 vst1.64 {d2-d5}, [r2,:128]! | 146 vst1.64 {d2-d5}, [r2,:128]! |
147 vst1.64 {d6-d9}, [r2,:128]! | 147 vst1.64 {d6-d9}, [r2,:128]! |
148 | 148 |
149 bx lr | 149 bx lr |
150 .endfunc | 150 endfunc |
151 | 151 |
152 function idct_col4_neon | 152 function idct_col4_neon |
153 mov ip, #16 | 153 mov ip, #16 |
154 vld1.64 {d2}, [r2,:64], ip /* d2 = col[0] */ | 154 vld1.64 {d2}, [r2,:64], ip /* d2 = col[0] */ |
155 vdup.16 d30, w4c | 155 vdup.16 d30, w4c |
216 vsubhn.i32 d8, q12, q10 | 216 vsubhn.i32 d8, q12, q10 |
217 vsubhn.i32 d7, q13, q5 | 217 vsubhn.i32 d7, q13, q5 |
218 vsubhn.i32 d6, q14, q6 | 218 vsubhn.i32 d6, q14, q6 |
219 | 219 |
220 bx lr | 220 bx lr |
221 .endfunc | 221 endfunc |
222 | 222 |
223 .align 6 | 223 .align 6 |
224 | 224 |
225 function idct_col4_st8_neon | 225 function idct_col4_st8_neon |
226 vqshrun.s16 d2, q1, #COL_SHIFT-16 | 226 vqshrun.s16 d2, q1, #COL_SHIFT-16 |
235 vst1.32 {d4[1]}, [r0,:32], r1 | 235 vst1.32 {d4[1]}, [r0,:32], r1 |
236 vst1.32 {d5[0]}, [r0,:32], r1 | 236 vst1.32 {d5[0]}, [r0,:32], r1 |
237 vst1.32 {d5[1]}, [r0,:32], r1 | 237 vst1.32 {d5[1]}, [r0,:32], r1 |
238 | 238 |
239 bx lr | 239 bx lr |
240 .endfunc | 240 endfunc |
241 | 241 |
242 .section .rodata | 242 .section .rodata |
243 .align 4 | 243 .align 4 |
244 idct_coeff_neon: | 244 idct_coeff_neon: |
245 .short W1, W2, W3, W4, W5, W6, W7, W4c | 245 .short W1, W2, W3, W4, W5, W6, W7, W4c |
273 add r2, r2, #-120 | 273 add r2, r2, #-120 |
274 bl idct_col4_neon | 274 bl idct_col4_neon |
275 bl idct_col4_st8_neon | 275 bl idct_col4_st8_neon |
276 | 276 |
277 idct_end | 277 idct_end |
278 .endfunc | 278 endfunc |
279 | 279 |
280 .align 6 | 280 .align 6 |
281 | 281 |
282 function idct_col4_add8_neon | 282 function idct_col4_add8_neon |
283 mov ip, r0 | 283 mov ip, r0 |
310 vst1.32 {d4[1]}, [ip,:32], r1 | 310 vst1.32 {d4[1]}, [ip,:32], r1 |
311 vst1.32 {d5[0]}, [ip,:32], r1 | 311 vst1.32 {d5[0]}, [ip,:32], r1 |
312 vst1.32 {d5[1]}, [ip,:32], r1 | 312 vst1.32 {d5[1]}, [ip,:32], r1 |
313 | 313 |
314 bx lr | 314 bx lr |
315 .endfunc | 315 endfunc |
316 | 316 |
317 /* void ff_simple_idct_add_neon(uint8_t *dst, int line_size, DCTELEM *data); */ | 317 /* void ff_simple_idct_add_neon(uint8_t *dst, int line_size, DCTELEM *data); */ |
318 function ff_simple_idct_add_neon, export=1 | 318 function ff_simple_idct_add_neon, export=1 |
319 idct_start r2 | 319 idct_start r2 |
320 | 320 |
328 add r2, r2, #-120 | 328 add r2, r2, #-120 |
329 bl idct_col4_neon | 329 bl idct_col4_neon |
330 bl idct_col4_add8_neon | 330 bl idct_col4_add8_neon |
331 | 331 |
332 idct_end | 332 idct_end |
333 .endfunc | 333 endfunc |
334 | 334 |
335 .align 6 | 335 .align 6 |
336 | 336 |
337 function idct_col4_st16_neon | 337 function idct_col4_st16_neon |
338 mov ip, #16 | 338 mov ip, #16 |
349 vst1.64 {d7}, [r2,:64], ip | 349 vst1.64 {d7}, [r2,:64], ip |
350 vst1.64 {d8}, [r2,:64], ip | 350 vst1.64 {d8}, [r2,:64], ip |
351 vst1.64 {d9}, [r2,:64], ip | 351 vst1.64 {d9}, [r2,:64], ip |
352 | 352 |
353 bx lr | 353 bx lr |
354 .endfunc | 354 endfunc |
355 | 355 |
356 /* void ff_simple_idct_neon(DCTELEM *data); */ | 356 /* void ff_simple_idct_neon(DCTELEM *data); */ |
357 function ff_simple_idct_neon, export=1 | 357 function ff_simple_idct_neon, export=1 |
358 idct_start r0 | 358 idct_start r0 |
359 | 359 |
368 bl idct_col4_neon | 368 bl idct_col4_neon |
369 add r2, r2, #-128 | 369 add r2, r2, #-128 |
370 bl idct_col4_st16_neon | 370 bl idct_col4_st16_neon |
371 | 371 |
372 idct_end | 372 idct_end |
373 .endfunc | 373 endfunc |