@
#include "config.h"
+#include "asm.S"
#ifndef HAVE_PLD
.macro pld reg
@ ----------------------------------------------------------------
.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]
.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]
.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]
.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]
.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]
.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]
.word 2b
.word 3b
.word 4b
+ .endfunc
@ ----------------------------------------------------------------
.macro RND_XY2_IT align
.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]
.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]
.word 0x01010101
.word 0xFCFCFCFC >> 2
.word 0x0F0F0F0F
+ .endfunc
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
.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
* 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
.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
* 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 */
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]
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
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
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
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
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
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
* 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 */
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] */
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] */
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] */
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] */
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
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
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