Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Side by Side Diff: source/libvpx/vp9/common/x86/vp9_idct_ssse3.asm

Issue 290653003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 ; 1 ;
2 ; Copyright (c) 2014 The WebM project authors. All Rights Reserved. 2 ; Copyright (c) 2014 The WebM project authors. All Rights Reserved.
3 ; 3 ;
4 ; Use of this source code is governed by a BSD-style license 4 ; Use of this source code is governed by a BSD-style license
5 ; that can be found in the LICENSE file in the root of the source 5 ; that can be found in the LICENSE file in the root of the source
6 ; tree. An additional intellectual property rights grant can be found 6 ; tree. An additional intellectual property rights grant can be found
7 ; in the file PATENTS. All contributing project authors may 7 ; in the file PATENTS. All contributing project authors may
8 ; be found in the AUTHORS file in the root of the source tree. 8 ; be found in the AUTHORS file in the root of the source tree.
9 ; 9 ;
10 %include "third_party/x86inc/x86inc.asm" 10 %include "third_party/x86inc/x86inc.asm"
(...skipping 10 matching lines...) Expand all
21 21
22 %macro TRANSFORM_COEFFS 2 22 %macro TRANSFORM_COEFFS 2
23 pw_%1_%2: dw %1, %2, %1, %2, %1, %2, %1, %2 23 pw_%1_%2: dw %1, %2, %1, %2, %1, %2, %1, %2
24 pw_m%2_%1: dw -%2, %1, -%2, %1, -%2, %1, -%2, %1 24 pw_m%2_%1: dw -%2, %1, -%2, %1, -%2, %1, -%2, %1
25 %endmacro 25 %endmacro
26 26
27 TRANSFORM_COEFFS 6270, 15137 27 TRANSFORM_COEFFS 6270, 15137
28 TRANSFORM_COEFFS 3196, 16069 28 TRANSFORM_COEFFS 3196, 16069
29 TRANSFORM_COEFFS 13623, 9102 29 TRANSFORM_COEFFS 13623, 9102
30 30
31 %macro PAIR_PP_COEFFS 2
32 dpw_%1_%2: dw %1, %1, %1, %1, %2, %2, %2, %2
33 %endmacro
34
35 %macro PAIR_MP_COEFFS 2
36 dpw_m%1_%2: dw -%1, -%1, -%1, -%1, %2, %2, %2, %2
37 %endmacro
38
39 %macro PAIR_MM_COEFFS 2
40 dpw_m%1_m%2: dw -%1, -%1, -%1, -%1, -%2, -%2, -%2, -%2
41 %endmacro
42
43 PAIR_PP_COEFFS 30274, 12540
44 PAIR_PP_COEFFS 6392, 32138
45 PAIR_MP_COEFFS 18204, 27246
46
47 PAIR_PP_COEFFS 12540, 12540
48 PAIR_PP_COEFFS 30274, 30274
49 PAIR_PP_COEFFS 6392, 6392
50 PAIR_PP_COEFFS 32138, 32138
51 PAIR_MM_COEFFS 18204, 18204
52 PAIR_PP_COEFFS 27246, 27246
53
31 SECTION .text 54 SECTION .text
32 55
33 %if ARCH_X86_64 56 %if ARCH_X86_64
34 %macro SUM_SUB 3 57 %macro SUM_SUB 3
35 psubw m%3, m%1, m%2 58 psubw m%3, m%1, m%2
36 paddw m%1, m%2 59 paddw m%1, m%2
37 SWAP %2, %3 60 SWAP %2, %3
38 %endmacro 61 %endmacro
39 62
40 ; butterfly operation 63 ; butterfly operation
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 punpcklbw m%4, m%5 144 punpcklbw m%4, m%5
122 paddw m%3, m%1 145 paddw m%3, m%1
123 paddw m%4, m%2 146 paddw m%4, m%2
124 packuswb m%3, m%5 147 packuswb m%3, m%5
125 packuswb m%4, m%5 148 packuswb m%4, m%5
126 movh [outputq], m%3 149 movh [outputq], m%3
127 movh [outputq + strideq], m%4 150 movh [outputq + strideq], m%4
128 %endmacro 151 %endmacro
129 152
130 INIT_XMM ssse3 153 INIT_XMM ssse3
154 ; full inverse 8x8 2D-DCT transform
131 cglobal idct8x8_64_add, 3, 5, 13, input, output, stride 155 cglobal idct8x8_64_add, 3, 5, 13, input, output, stride
132 mova m8, [pd_8192] 156 mova m8, [pd_8192]
133 mova m11, [pw_16] 157 mova m11, [pw_16]
134 mova m12, [pw_11585x2] 158 mova m12, [pw_11585x2]
135 159
136 lea r3, [2 * strideq] 160 lea r3, [2 * strideq]
137 161
138 mova m0, [inputq + 0] 162 mova m0, [inputq + 0]
139 mova m1, [inputq + 16] 163 mova m1, [inputq + 16]
140 mova m2, [inputq + 32] 164 mova m2, [inputq + 32]
(...skipping 11 matching lines...) Expand all
152 pxor m12, m12 176 pxor m12, m12
153 ADD_STORE_8P_2X 0, 1, 9, 10, 12 177 ADD_STORE_8P_2X 0, 1, 9, 10, 12
154 lea outputq, [outputq + r3] 178 lea outputq, [outputq + r3]
155 ADD_STORE_8P_2X 2, 3, 9, 10, 12 179 ADD_STORE_8P_2X 2, 3, 9, 10, 12
156 lea outputq, [outputq + r3] 180 lea outputq, [outputq + r3]
157 ADD_STORE_8P_2X 4, 5, 9, 10, 12 181 ADD_STORE_8P_2X 4, 5, 9, 10, 12
158 lea outputq, [outputq + r3] 182 lea outputq, [outputq + r3]
159 ADD_STORE_8P_2X 6, 7, 9, 10, 12 183 ADD_STORE_8P_2X 6, 7, 9, 10, 12
160 184
161 RET 185 RET
186
187 ; inverse 8x8 2D-DCT transform with only first 10 coeffs non-zero
188 cglobal idct8x8_12_add, 3, 5, 13, input, output, stride
189 mova m8, [pd_8192]
190 mova m11, [pw_16]
191 mova m12, [pw_11585x2]
192
193 lea r3, [2 * strideq]
194
195 mova m0, [inputq + 0]
196 mova m1, [inputq + 16]
197 mova m2, [inputq + 32]
198 mova m3, [inputq + 48]
199
200 punpcklwd m0, m1
201 punpcklwd m2, m3
202 punpckhdq m9, m0, m2
203 punpckldq m0, m2
204 SWAP 2, 9
205
206 ; m0 -> [0], [0]
207 ; m1 -> [1], [1]
208 ; m2 -> [2], [2]
209 ; m3 -> [3], [3]
210 punpckhqdq m10, m0, m0
211 punpcklqdq m0, m0
212 punpckhqdq m9, m2, m2
213 punpcklqdq m2, m2
214 SWAP 1, 10
215 SWAP 3, 9
216
217 pmulhrsw m0, m12
218 pmulhrsw m2, [dpw_30274_12540]
219 pmulhrsw m1, [dpw_6392_32138]
220 pmulhrsw m3, [dpw_m18204_27246]
221
222 SUM_SUB 0, 2, 9
223 SUM_SUB 1, 3, 9
224
225 punpcklqdq m9, m3, m3
226 punpckhqdq m5, m3, m9
227
228 SUM_SUB 3, 5, 9
229 punpckhqdq m5, m3
230 pmulhrsw m5, m12
231
232 punpckhqdq m9, m1, m5
233 punpcklqdq m1, m5
234 SWAP 5, 9
235
236 SUM_SUB 0, 5, 9
237 SUM_SUB 2, 1, 9
238
239 punpckhqdq m3, m0, m0
240 punpckhqdq m4, m1, m1
241 punpckhqdq m6, m5, m5
242 punpckhqdq m7, m2, m2
243
244 punpcklwd m0, m3
245 punpcklwd m7, m2
246 punpcklwd m1, m4
247 punpcklwd m6, m5
248
249 punpckhdq m4, m0, m7
250 punpckldq m0, m7
251 punpckhdq m10, m1, m6
252 punpckldq m5, m1, m6
253
254 punpckhqdq m1, m0, m5
255 punpcklqdq m0, m5
256 punpckhqdq m3, m4, m10
257 punpcklqdq m2, m4, m10
258
259
260 pmulhrsw m0, m12
261 pmulhrsw m6, m2, [dpw_30274_30274]
262 pmulhrsw m4, m2, [dpw_12540_12540]
263
264 pmulhrsw m7, m1, [dpw_32138_32138]
265 pmulhrsw m1, [dpw_6392_6392]
266 pmulhrsw m5, m3, [dpw_m18204_m18204]
267 pmulhrsw m3, [dpw_27246_27246]
268
269 mova m2, m0
270 SUM_SUB 0, 6, 9
271 SUM_SUB 2, 4, 9
272 SUM_SUB 1, 5, 9
273 SUM_SUB 7, 3, 9
274
275 SUM_SUB 3, 5, 9
276 pmulhrsw m3, m12
277 pmulhrsw m5, m12
278
279 SUM_SUB 0, 7, 9
280 SUM_SUB 2, 3, 9
281 SUM_SUB 4, 5, 9
282 SUM_SUB 6, 1, 9
283
284 SWAP 3, 6
285 SWAP 1, 2
286 SWAP 2, 4
287
288
289 pxor m12, m12
290 ADD_STORE_8P_2X 0, 1, 9, 10, 12
291 lea outputq, [outputq + r3]
292 ADD_STORE_8P_2X 2, 3, 9, 10, 12
293 lea outputq, [outputq + r3]
294 ADD_STORE_8P_2X 4, 5, 9, 10, 12
295 lea outputq, [outputq + r3]
296 ADD_STORE_8P_2X 6, 7, 9, 10, 12
297
298 RET
299
162 %endif 300 %endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698