annotate alpha/motion_est_mvi_asm.S @ 10345:294c444866f7 libavcodec

Make avcodec_open set codec_id and codec_type if they haven't been set. This fixes the API breakage introduced by the check that avctx codec id and type match the opened codec and should make (almost?) all applications work again.
author reimar
date Thu, 01 Oct 2009 15:54:55 +0000
parents 6f1b210e58d1
children 58c2da0a371b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
1 /*
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
2 * Alpha optimized DSP utils
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
3 * Copyright (c) 2002 Falk Hueffner <falk@debian.org>
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
4 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
5 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
6 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
3130
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
9 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
11 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3130
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
15 * Lesser General Public License for more details.
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
16 *
3130
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3130
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3130
9361d38a3af0 Change license header to LGPL for consistency.
mellum
parents: 2967
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
20 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
21
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
22 #include "regdef.h"
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
23
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
24 /* Some nicer register names. */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
25 #define ta t10
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
26 #define tb t11
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
27 #define tc t12
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
28 #define td AT
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
29 /* Danger: these overlap with the argument list and the return value */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
30 #define te a5
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
31 #define tf a4
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
32 #define tg a3
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
33 #define th v0
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2122
diff changeset
34
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
35 .set noat
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
36 .set noreorder
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
37 .arch pca56
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
38 .text
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
39
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
40 /*****************************************************************************
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
41 * int pix_abs16x16_mvi_asm(uint8_t *pix1, uint8_t *pix2, int line_size)
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
42 *
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
43 * This code is written with a pca56 in mind. For ev6, one should
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
44 * really take the increased latency of 3 cycles for MVI instructions
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
45 * into account.
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
46 *
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
47 * It is important to keep the loading and first use of a register as
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
48 * far apart as possible, because if a register is accessed before it
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
49 * has been fetched from memory, the CPU will stall.
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
50 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
51 .align 4
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
52 .globl pix_abs16x16_mvi_asm
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
53 .ent pix_abs16x16_mvi_asm
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
54 pix_abs16x16_mvi_asm:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
55 .frame sp, 0, ra, 0
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
56 .prologue 0
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
57
8590
7a463923ecd1 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 4512
diff changeset
58 #if CONFIG_GPROF
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
59 lda AT, _mcount
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
60 jsr AT, (AT), _mcount
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
61 #endif
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
62
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
63 and a2, 7, t0
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
64 clr v0
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
65 beq t0, $aligned
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
66 .align 4
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
67 $unaligned:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
68 /* Registers:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
69 line 0:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
70 t0: left_u -> left lo -> left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
71 t1: mid
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
72 t2: right_u -> right hi -> right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
73 t3: ref left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
74 t4: ref right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
75 line 1:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
76 t5: left_u -> left lo -> left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
77 t6: mid
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
78 t7: right_u -> right hi -> right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
79 t8: ref left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
80 t9: ref right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
81 temp:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
82 ta: left hi
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
83 tb: right lo
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
84 tc: error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
85 td: error right */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
86
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
87 /* load line 0 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
88 ldq_u t0, 0(a2) # left_u
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
89 ldq_u t1, 8(a2) # mid
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
90 ldq_u t2, 16(a2) # right_u
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
91 ldq t3, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
92 ldq t4, 8(a1) # ref right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
93 addq a1, a3, a1 # pix1
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
94 addq a2, a3, a2 # pix2
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2122
diff changeset
95 /* load line 1 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
96 ldq_u t5, 0(a2) # left_u
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
97 ldq_u t6, 8(a2) # mid
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
98 ldq_u t7, 16(a2) # right_u
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
99 ldq t8, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
100 ldq t9, 8(a1) # ref right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
101 addq a1, a3, a1 # pix1
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
102 addq a2, a3, a2 # pix2
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
103 /* calc line 0 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
104 extql t0, a2, t0 # left lo
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
105 extqh t1, a2, ta # left hi
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
106 extql t1, a2, tb # right lo
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
107 or t0, ta, t0 # left
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
108 extqh t2, a2, t2 # right hi
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
109 perr t3, t0, tc # error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
110 or t2, tb, t2 # right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
111 perr t4, t2, td # error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
112 addq v0, tc, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
113 addq v0, td, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
114 /* calc line 1 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
115 extql t5, a2, t5 # left lo
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
116 extqh t6, a2, ta # left hi
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
117 extql t6, a2, tb # right lo
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
118 or t5, ta, t5 # left
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
119 extqh t7, a2, t7 # right hi
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
120 perr t8, t5, tc # error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
121 or t7, tb, t7 # right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
122 perr t9, t7, td # error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
123 addq v0, tc, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
124 addq v0, td, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
125 /* loop */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
126 subq a4, 2, a4 # h -= 2
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
127 bne a4, $unaligned
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
128 ret
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
129
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
130 .align 4
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
131 $aligned:
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
132 /* load line 0 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
133 ldq t0, 0(a2) # left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
134 ldq t1, 8(a2) # right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
135 addq a2, a3, a2 # pix2
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
136 ldq t2, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
137 ldq t3, 8(a1) # ref right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
138 addq a1, a3, a1 # pix1
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
139 /* load line 1 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
140 ldq t4, 0(a2) # left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
141 ldq t5, 8(a2) # right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
142 addq a2, a3, a2 # pix2
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
143 ldq t6, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
144 ldq t7, 8(a1) # ref right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
145 addq a1, a3, a1 # pix1
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
146 /* load line 2 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
147 ldq t8, 0(a2) # left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
148 ldq t9, 8(a2) # right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
149 addq a2, a3, a2 # pix2
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
150 ldq ta, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
151 ldq tb, 8(a1) # ref right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
152 addq a1, a3, a1 # pix1
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
153 /* load line 3 */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
154 ldq tc, 0(a2) # left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
155 ldq td, 8(a2) # right
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
156 addq a2, a3, a2 # pix2
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
157 ldq te, 0(a1) # ref left
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
158 ldq a0, 8(a1) # ref right
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
159 /* calc line 0 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
160 perr t0, t2, t0 # error left
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
161 addq a1, a3, a1 # pix1
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
162 perr t1, t3, t1 # error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
163 addq v0, t0, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
164 /* calc line 1 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
165 perr t4, t6, t0 # error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
166 addq v0, t1, v0 # add error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
167 perr t5, t7, t1 # error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
168 addq v0, t0, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
169 /* calc line 2 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
170 perr t8, ta, t0 # error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
171 addq v0, t1, v0 # add error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
172 perr t9, tb, t1 # error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
173 addq v0, t0, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
174 /* calc line 3 */
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
175 perr tc, te, t0 # error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
176 addq v0, t1, v0 # add error right
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
177 perr td, a0, t1 # error right
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
178 addq v0, t0, v0 # add error left
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
179 addq v0, t1, v0 # add error right
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
180 /* loop */
8625
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
181 subq a4, 4, a4 # h -= 4
6f1b210e58d1 Alpha: fix pix_abs16
mru
parents: 8590
diff changeset
182 bne a4, $aligned
705
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
183 ret
107a56aa74f5 Add Alpha assembly for pix_abs16x16. Optimized for pca56, no large win
mellum
parents:
diff changeset
184 .end pix_abs16x16_mvi_asm