Mercurial > libavcodec.hg
comparison alpha/motion_est_mvi_asm.S @ 8625:6f1b210e58d1 libavcodec
Alpha: fix pix_abs16
author | mru |
---|---|
date | Sun, 18 Jan 2009 18:31:52 +0000 |
parents | 7a463923ecd1 |
children | 58c2da0a371b |
comparison
equal
deleted
inserted
replaced
8624:b1663f732e67 | 8625:6f1b210e58d1 |
---|---|
58 #if CONFIG_GPROF | 58 #if CONFIG_GPROF |
59 lda AT, _mcount | 59 lda AT, _mcount |
60 jsr AT, (AT), _mcount | 60 jsr AT, (AT), _mcount |
61 #endif | 61 #endif |
62 | 62 |
63 and a1, 7, t0 | 63 and a2, 7, t0 |
64 clr v0 | 64 clr v0 |
65 lda a3, 16 | |
66 beq t0, $aligned | 65 beq t0, $aligned |
67 .align 4 | 66 .align 4 |
68 $unaligned: | 67 $unaligned: |
69 /* Registers: | 68 /* Registers: |
70 line 0: | 69 line 0: |
84 tb: right lo | 83 tb: right lo |
85 tc: error left | 84 tc: error left |
86 td: error right */ | 85 td: error right */ |
87 | 86 |
88 /* load line 0 */ | 87 /* load line 0 */ |
89 ldq_u t0, 0(a1) # left_u | 88 ldq_u t0, 0(a2) # left_u |
90 ldq_u t1, 8(a1) # mid | 89 ldq_u t1, 8(a2) # mid |
91 ldq_u t2, 16(a1) # right_u | 90 ldq_u t2, 16(a2) # right_u |
92 ldq t3, 0(a0) # ref left | 91 ldq t3, 0(a1) # ref left |
93 ldq t4, 8(a0) # ref right | 92 ldq t4, 8(a1) # ref right |
94 addq a0, a2, a0 # pix1 | 93 addq a1, a3, a1 # pix1 |
95 addq a1, a2, a1 # pix2 | 94 addq a2, a3, a2 # pix2 |
96 /* load line 1 */ | 95 /* load line 1 */ |
97 ldq_u t5, 0(a1) # left_u | 96 ldq_u t5, 0(a2) # left_u |
98 ldq_u t6, 8(a1) # mid | 97 ldq_u t6, 8(a2) # mid |
99 ldq_u t7, 16(a1) # right_u | 98 ldq_u t7, 16(a2) # right_u |
100 ldq t8, 0(a0) # ref left | 99 ldq t8, 0(a1) # ref left |
101 ldq t9, 8(a0) # ref right | 100 ldq t9, 8(a1) # ref right |
102 addq a0, a2, a0 # pix1 | 101 addq a1, a3, a1 # pix1 |
103 addq a1, a2, a1 # pix2 | 102 addq a2, a3, a2 # pix2 |
104 /* calc line 0 */ | 103 /* calc line 0 */ |
105 extql t0, a1, t0 # left lo | 104 extql t0, a2, t0 # left lo |
106 extqh t1, a1, ta # left hi | 105 extqh t1, a2, ta # left hi |
107 extql t1, a1, tb # right lo | 106 extql t1, a2, tb # right lo |
108 or t0, ta, t0 # left | 107 or t0, ta, t0 # left |
109 extqh t2, a1, t2 # right hi | 108 extqh t2, a2, t2 # right hi |
110 perr t3, t0, tc # error left | 109 perr t3, t0, tc # error left |
111 or t2, tb, t2 # right | 110 or t2, tb, t2 # right |
112 perr t4, t2, td # error right | 111 perr t4, t2, td # error right |
113 addq v0, tc, v0 # add error left | 112 addq v0, tc, v0 # add error left |
114 addq v0, td, v0 # add error left | 113 addq v0, td, v0 # add error left |
115 /* calc line 1 */ | 114 /* calc line 1 */ |
116 extql t5, a1, t5 # left lo | 115 extql t5, a2, t5 # left lo |
117 extqh t6, a1, ta # left hi | 116 extqh t6, a2, ta # left hi |
118 extql t6, a1, tb # right lo | 117 extql t6, a2, tb # right lo |
119 or t5, ta, t5 # left | 118 or t5, ta, t5 # left |
120 extqh t7, a1, t7 # right hi | 119 extqh t7, a2, t7 # right hi |
121 perr t8, t5, tc # error left | 120 perr t8, t5, tc # error left |
122 or t7, tb, t7 # right | 121 or t7, tb, t7 # right |
123 perr t9, t7, td # error right | 122 perr t9, t7, td # error right |
124 addq v0, tc, v0 # add error left | 123 addq v0, tc, v0 # add error left |
125 addq v0, td, v0 # add error left | 124 addq v0, td, v0 # add error left |
126 /* loop */ | 125 /* loop */ |
127 subq a3, 2, a3 # h -= 2 | 126 subq a4, 2, a4 # h -= 2 |
128 bne a3, $unaligned | 127 bne a4, $unaligned |
129 ret | 128 ret |
130 | 129 |
131 .align 4 | 130 .align 4 |
132 $aligned: | 131 $aligned: |
133 /* load line 0 */ | 132 /* load line 0 */ |
134 ldq t0, 0(a1) # left | 133 ldq t0, 0(a2) # left |
135 ldq t1, 8(a1) # right | 134 ldq t1, 8(a2) # right |
136 addq a1, a2, a1 # pix2 | 135 addq a2, a3, a2 # pix2 |
137 ldq t2, 0(a0) # ref left | 136 ldq t2, 0(a1) # ref left |
138 ldq t3, 8(a0) # ref right | 137 ldq t3, 8(a1) # ref right |
139 addq a0, a2, a0 # pix1 | 138 addq a1, a3, a1 # pix1 |
140 /* load line 1 */ | 139 /* load line 1 */ |
141 ldq t4, 0(a1) # left | 140 ldq t4, 0(a2) # left |
142 ldq t5, 8(a1) # right | 141 ldq t5, 8(a2) # right |
143 addq a1, a2, a1 # pix2 | 142 addq a2, a3, a2 # pix2 |
144 ldq t6, 0(a0) # ref left | 143 ldq t6, 0(a1) # ref left |
145 ldq t7, 8(a0) # ref right | 144 ldq t7, 8(a1) # ref right |
146 addq a0, a2, a0 # pix1 | 145 addq a1, a3, a1 # pix1 |
147 /* load line 2 */ | 146 /* load line 2 */ |
148 ldq t8, 0(a1) # left | 147 ldq t8, 0(a2) # left |
149 ldq t9, 8(a1) # right | 148 ldq t9, 8(a2) # right |
150 addq a1, a2, a1 # pix2 | 149 addq a2, a3, a2 # pix2 |
151 ldq ta, 0(a0) # ref left | 150 ldq ta, 0(a1) # ref left |
152 ldq tb, 8(a0) # ref right | 151 ldq tb, 8(a1) # ref right |
153 addq a0, a2, a0 # pix1 | 152 addq a1, a3, a1 # pix1 |
154 /* load line 3 */ | 153 /* load line 3 */ |
155 ldq tc, 0(a1) # left | 154 ldq tc, 0(a2) # left |
156 ldq td, 8(a1) # right | 155 ldq td, 8(a2) # right |
157 addq a1, a2, a1 # pix2 | 156 addq a2, a3, a2 # pix2 |
158 ldq te, 0(a0) # ref left | 157 ldq te, 0(a1) # ref left |
159 ldq tf, 8(a0) # ref right | 158 ldq a0, 8(a1) # ref right |
160 /* calc line 0 */ | 159 /* calc line 0 */ |
161 perr t0, t2, t0 # error left | 160 perr t0, t2, t0 # error left |
162 addq a0, a2, a0 # pix1 | 161 addq a1, a3, a1 # pix1 |
163 perr t1, t3, t1 # error right | 162 perr t1, t3, t1 # error right |
164 addq v0, t0, v0 # add error left | 163 addq v0, t0, v0 # add error left |
165 /* calc line 1 */ | 164 /* calc line 1 */ |
166 perr t4, t6, t0 # error left | 165 perr t4, t6, t0 # error left |
167 addq v0, t1, v0 # add error right | 166 addq v0, t1, v0 # add error right |
173 perr t9, tb, t1 # error right | 172 perr t9, tb, t1 # error right |
174 addq v0, t0, v0 # add error left | 173 addq v0, t0, v0 # add error left |
175 /* calc line 3 */ | 174 /* calc line 3 */ |
176 perr tc, te, t0 # error left | 175 perr tc, te, t0 # error left |
177 addq v0, t1, v0 # add error right | 176 addq v0, t1, v0 # add error right |
178 perr td, tf, t1 # error right | 177 perr td, a0, t1 # error right |
179 addq v0, t0, v0 # add error left | 178 addq v0, t0, v0 # add error left |
180 addq v0, t1, v0 # add error right | 179 addq v0, t1, v0 # add error right |
181 /* loop */ | 180 /* loop */ |
182 subq a3, 4, a3 # h -= 4 | 181 subq a4, 4, a4 # h -= 4 |
183 bne a3, $aligned | 182 bne a4, $aligned |
184 ret | 183 ret |
185 .end pix_abs16x16_mvi_asm | 184 .end pix_abs16x16_mvi_asm |