Originally committed as revision 15725 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
@@ -20,6 +20,7 @@ | |||
@ | |||
#include "config.h" | |||
#include "asm.S" | |||
#ifndef HAVE_PLD | |||
.macro pld reg | |||
@@ -79,8 +80,7 @@ | |||
@ ---------------------------------------------------------------- | |||
.align 8 | |||
.global put_pixels16_arm | |||
put_pixels16_arm: | |||
function put_pixels16_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -138,11 +138,11 @@ put_pixels16_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
@ ---------------------------------------------------------------- | |||
.align 8 | |||
.global put_pixels8_arm | |||
put_pixels8_arm: | |||
function put_pixels8_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -200,11 +200,11 @@ put_pixels8_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
@ ---------------------------------------------------------------- | |||
.align 8 | |||
.global put_pixels8_x2_arm | |||
put_pixels8_x2_arm: | |||
function put_pixels8_x2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -270,10 +270,10 @@ put_pixels8_x2_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
.align 8 | |||
.global put_no_rnd_pixels8_x2_arm | |||
put_no_rnd_pixels8_x2_arm: | |||
function put_no_rnd_pixels8_x2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -339,12 +339,12 @@ put_no_rnd_pixels8_x2_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
@ ---------------------------------------------------------------- | |||
.align 8 | |||
.global put_pixels8_y2_arm | |||
put_pixels8_y2_arm: | |||
function put_pixels8_y2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -450,10 +450,10 @@ put_pixels8_y2_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
.align 8 | |||
.global put_no_rnd_pixels8_y2_arm | |||
put_no_rnd_pixels8_y2_arm: | |||
function put_no_rnd_pixels8_y2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -558,6 +558,7 @@ put_no_rnd_pixels8_y2_arm: | |||
.word 2b | |||
.word 3b | |||
.word 4b | |||
.endfunc | |||
@ ---------------------------------------------------------------- | |||
.macro RND_XY2_IT align | |||
@@ -625,8 +626,7 @@ put_no_rnd_pixels8_y2_arm: | |||
.endm | |||
.align 8 | |||
.global put_pixels8_xy2_arm | |||
put_pixels8_xy2_arm: | |||
function put_pixels8_xy2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -659,10 +659,10 @@ put_pixels8_xy2_arm: | |||
.word 0x02020202 | |||
.word 0xFCFCFCFC >> 2 | |||
.word 0x0F0F0F0F | |||
.endfunc | |||
.align 8 | |||
.global put_no_rnd_pixels8_xy2_arm | |||
put_no_rnd_pixels8_xy2_arm: | |||
function put_no_rnd_pixels8_xy2_arm, export=1 | |||
@ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) | |||
@ block = word aligned, pixles = unaligned | |||
pld [r1] | |||
@@ -695,3 +695,4 @@ put_no_rnd_pixels8_xy2_arm: | |||
.word 0x01010101 | |||
.word 0xFCFCFCFC >> 2 | |||
.word 0x0F0F0F0F | |||
.endfunc |
@@ -24,6 +24,9 @@ | |||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
*/ | |||
#include "asm.S" | |||
#define FIX_0_298631336 2446 | |||
#define FIX_0_541196100 4433 | |||
#define FIX_0_765366865 6270 | |||
@@ -54,8 +57,7 @@ | |||
.text | |||
.align | |||
.global j_rev_dct_ARM | |||
j_rev_dct_ARM: | |||
function j_rev_dct_ARM, export=1 | |||
stmdb sp!, { r4 - r12, lr } @ all callee saved regs | |||
sub sp, sp, #4 @ reserve some space on the stack | |||
@@ -24,6 +24,8 @@ | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include "asm.S" | |||
/* useful constants for the algorithm, they are save in __constant_ptr__ at */ | |||
/* the end of the source code.*/ | |||
#define W1 22725 | |||
@@ -53,10 +55,8 @@ | |||
.text | |||
.align | |||
.global simple_idct_ARM | |||
simple_idct_ARM: | |||
function simple_idct_ARM, export=1 | |||
@@ void simple_idct_ARM(int16_t *block) | |||
@@ save stack for reg needed (take all of them), | |||
@@ R0-R3 are scratch regs, so no need to save them, but R0 contains the pointer to block | |||
@@ -21,6 +21,8 @@ | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include "asm.S" | |||
#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
@@ -41,10 +43,7 @@ w13: .long W13 | |||
w26: .long W26 | |||
w57: .long W57 | |||
.align | |||
.type idct_row_armv5te, %function | |||
.func idct_row_armv5te | |||
idct_row_armv5te: | |||
function idct_row_armv5te | |||
str lr, [sp, #-4]! | |||
ldrd v1, [a1, #8] | |||
@@ -262,10 +261,7 @@ row_dc_only: | |||
sub fp, fp, a4 | |||
.endm | |||
.align | |||
.type idct_col_armv5te, %function | |||
.func idct_col_armv5te | |||
idct_col_armv5te: | |||
function idct_col_armv5te | |||
str lr, [sp, #-4]! | |||
idct_col | |||
@@ -337,10 +333,7 @@ idct_col_armv5te: | |||
ldr pc, [sp], #4 | |||
.endfunc | |||
.align | |||
.type idct_col_put_armv5te, %function | |||
.func idct_col_put_armv5te | |||
idct_col_put_armv5te: | |||
function idct_col_put_armv5te | |||
str lr, [sp, #-4]! | |||
idct_col | |||
@@ -457,10 +450,7 @@ idct_col_put_armv5te: | |||
ldr pc, [sp], #4 | |||
.endfunc | |||
.align | |||
.type idct_col_add_armv5te, %function | |||
.func idct_col_add_armv5te | |||
idct_col_add_armv5te: | |||
function idct_col_add_armv5te | |||
str lr, [sp, #-4]! | |||
idct_col | |||
@@ -610,11 +600,7 @@ idct_col_add_armv5te: | |||
ldr pc, [sp], #4 | |||
.endfunc | |||
.align | |||
.global simple_idct_armv5te | |||
.type simple_idct_armv5te, %function | |||
.func simple_idct_armv5te | |||
simple_idct_armv5te: | |||
function simple_idct_armv5te, export=1 | |||
stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
bl idct_row_armv5te | |||
@@ -646,11 +632,7 @@ simple_idct_armv5te: | |||
ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | |||
.endfunc | |||
.align | |||
.global simple_idct_add_armv5te | |||
.type simple_idct_add_armv5te, %function | |||
.func simple_idct_add_armv5te | |||
simple_idct_add_armv5te: | |||
function simple_idct_add_armv5te, export=1 | |||
stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
mov a1, a3 | |||
@@ -685,11 +667,7 @@ simple_idct_add_armv5te: | |||
ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | |||
.endfunc | |||
.align | |||
.global simple_idct_put_armv5te | |||
.type simple_idct_put_armv5te, %function | |||
.func simple_idct_put_armv5te | |||
simple_idct_put_armv5te: | |||
function simple_idct_put_armv5te, export=1 | |||
stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
mov a1, a3 | |||
@@ -21,6 +21,8 @@ | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include "asm.S" | |||
#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | |||
@@ -190,10 +192,7 @@ w57: .long W57 | |||
a1 = source | |||
a2 = dest | |||
*/ | |||
.align | |||
.type idct_row_armv6, %function | |||
.func idct_row_armv6 | |||
idct_row_armv6: | |||
function idct_row_armv6 | |||
str lr, [sp, #-4]! | |||
ldr lr, [a1, #12] /* lr = row[7,5] */ | |||
@@ -245,10 +244,7 @@ idct_row_armv6: | |||
a1 = source | |||
a2 = dest | |||
*/ | |||
.align | |||
.type idct_col_armv6, %function | |||
.func idct_col_armv6 | |||
idct_col_armv6: | |||
function idct_col_armv6 | |||
stmfd sp!, {a2, lr} | |||
ldr a3, [a1] /* a3 = row[2,0] */ | |||
@@ -276,10 +272,7 @@ idct_col_armv6: | |||
a2 = dest | |||
a3 = line size | |||
*/ | |||
.align | |||
.type idct_col_put_armv6, %function | |||
.func idct_col_put_armv6 | |||
idct_col_put_armv6: | |||
function idct_col_put_armv6 | |||
stmfd sp!, {a2, a3, lr} | |||
ldr a3, [a1] /* a3 = row[2,0] */ | |||
@@ -309,10 +302,7 @@ idct_col_put_armv6: | |||
a2 = dest | |||
a3 = line size | |||
*/ | |||
.align | |||
.type idct_col_add_armv6, %function | |||
.func idct_col_add_armv6 | |||
idct_col_add_armv6: | |||
function idct_col_add_armv6 | |||
stmfd sp!, {a2, a3, lr} | |||
ldr a3, [a1] /* a3 = row[2,0] */ | |||
@@ -393,12 +383,8 @@ idct_col_add_armv6: | |||
sub a1, a1, #(16*7) | |||
.endm | |||
.align | |||
.global ff_simple_idct_armv6 | |||
.type ff_simple_idct_armv6, %function | |||
.func ff_simple_idct_armv6 | |||
/* void ff_simple_idct_armv6(DCTELEM *data); */ | |||
ff_simple_idct_armv6: | |||
function ff_simple_idct_armv6, export=1 | |||
stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
sub sp, sp, #128 | |||
@@ -412,12 +398,8 @@ ff_simple_idct_armv6: | |||
ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | |||
.endfunc | |||
.align | |||
.global ff_simple_idct_add_armv6 | |||
.type ff_simple_idct_add_armv6, %function | |||
.func ff_simple_idct_add_armv6 | |||
/* ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data); */ | |||
ff_simple_idct_add_armv6: | |||
function ff_simple_idct_add_armv6, export=1 | |||
stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
sub sp, sp, #128 | |||
@@ -433,12 +415,8 @@ ff_simple_idct_add_armv6: | |||
ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | |||
.endfunc | |||
.align | |||
.global ff_simple_idct_put_armv6 | |||
.type ff_simple_idct_put_armv6, %function | |||
.func ff_simple_idct_put_armv6 | |||
/* ff_simple_idct_put_armv6(uint8_t *dest, int line_size, DCTELEM *data); */ | |||
ff_simple_idct_put_armv6: | |||
function ff_simple_idct_put_armv6, export=1 | |||
stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | |||
sub sp, sp, #128 | |||