* Alpha optimized DSP utils
* Copyright (c) 2002 Falk Hueffner <falk@debian.org>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This file is part of FFmpeg.
*
- * This program is distributed in the hope that it will be useful,
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
*/
#include "regdef.h"
-#ifdef HAVE_AV_CONFIG_H
-#include "config.h"
-#endif
/* Some nicer register names. */
#define ta t10
#define tf a4
#define tg a3
#define th v0
-
+
.set noat
.set noreorder
.arch pca56
.frame sp, 0, ra
.prologue 0
-#ifdef HAVE_GPROF
+#if CONFIG_GPROF
lda AT, _mcount
jsr AT, (AT), _mcount
#endif
addq a1, a2, a1
nop
- ldq_u t4, 0(a1)
+ ldq_u t4, 0(a1)
ldq_u t5, 8(a1)
addq a1, a2, a1
nop
ldq t2, 0(a1)
addq a1, a2, a1
ldq t3, 0(a1)
- addq a1, a2, a1
- ldq t4, 0(a1)
- addq a1, a2, a1
- ldq t5, 0(a1)
- addq a1, a2, a1
-
- ldq t6, 0(a1)
- addq a1, a2, a1
- ldq t7, 0(a1)
+ addq a0, a2, t4
addq a1, a2, a1
+ addq t4, a2, t5
+ subq a3, 4, a3
- addq a0, a2, t8
stq t0, 0(a0)
- addq t8, a2, t9
- stq t1, 0(t8)
+ addq t5, a2, t6
+ stq t1, 0(t4)
+ addq t6, a2, a0
- addq t9, a2, ta
- stq t2, 0(t9)
- addq ta, a2, tb
- stq t3, 0(ta)
-
- addq tb, a2, tc
- stq t4, 0(tb)
- addq tc, a2, td
- stq t5, 0(tc)
-
- addq td, a2, te
- stq t6, 0(td)
- addq te, a2, a0
- stq t7, 0(te)
+ stq t2, 0(t5)
+ stq t3, 0(t6)
- subq a3, 8, a3
bne a3, $aligned
-
ret
.end put_pixels_axp_asm
/************************************************************************
- * void put_pixels_clamped_mvi_asm(const DCTELEM *block, uint8_t *pixels,
+ * void put_pixels_clamped_mvi_asm(const DCTELEM *block, uint8_t *pixels,
* int line_size)
*/
.align 6
.frame sp, 0, ra
.prologue 0
-#ifdef HAVE_GPROF
+#if CONFIG_GPROF
lda AT, _mcount
jsr AT, (AT), _mcount
#endif
addq a1, a2, ta
maxsw4 t3, zero, t3
minsw4 t0, t8, t0
-
+
minsw4 t1, t8, t1
minsw4 t2, t8, t2
minsw4 t3, t8, t3
pkwb t0, t0
-
+
pkwb t1, t1
pkwb t2, t2
pkwb t3, t3
stl t0, 0(a1)
-
+
stl t1, 4(a1)
addq ta, a2, a1
stl t2, 0(ta)
.end put_pixels_clamped_mvi_asm
/************************************************************************
- * void add_pixels_clamped_mvi_asm(const DCTELEM *block, uint8_t *pixels,
+ * void add_pixels_clamped_mvi_asm(const DCTELEM *block, uint8_t *pixels,
* int line_size)
*/
.align 6
.frame sp, 0, ra
.prologue 0
-#ifdef HAVE_GPROF
+#if CONFIG_GPROF
lda AT, _mcount
jsr AT, (AT), _mcount
#endif
bic t0, tg, t0 # 0 2
unpkbw t7, t7 # 2 0
and t3, tg, t5 # 1 1
- addq t0, t1, t0 # 0 3
+ addq t0, t1, t0 # 0 3
xor t0, t2, t0 # 0 4
unpkbw ta, ta # 3 0
and t6, tg, t8 # 2 1
maxsw4 t0, zero, t0 # 0 5
-
+
bic t3, tg, t3 # 1 2
bic t6, tg, t6 # 2 2
minsw4 t0, tf, t0 # 0 6
addq t3, t4, t3 # 1 3
-
+
pkwb t0, t0 # 0 7
xor t3, t5, t3 # 1 4
maxsw4 t3, zero, t3 # 1 5
maxsw4 t6, zero, t6 # 2 5
addq t9, ta, t9 # 3 3
- stl t0, 0(a1) # 0 8
+ stl t0, 0(a1) # 0 8
minsw4 t6, tf, t6 # 2 6
xor t9, tb, t9 # 3 4
maxsw4 t9, zero, t9 # 3 5
lda a0, 32(a0) # block += 16;
pkwb t3, t3 # 1 7
-
+
minsw4 t9, tf, t9 # 3 6
subq th, 2, th
pkwb t6, t6 # 2 7
stl t9, 4(te) # 3 8
bne th, 1b
- ret
+ ret
.end add_pixels_clamped_mvi_asm