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