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

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

Issue 23600008: libvpx: Pull from upstream (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 3 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) 2010 The WebM project authors. All Rights Reserved. 2 ; Copyright (c) 2010 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 10
11 %include "third_party/x86inc/x86inc.asm" 11 %include "third_party/x86inc/x86inc.asm"
12 12
13 SECTION_RODATA
14
15 pb_1: times 16 db 1
16 pw_2: times 8 dw 2
17 pb_7m1: times 8 db 7, -1
18 pb_15: times 16 db 15
19
20 sh_b01234577: db 0, 1, 2, 3, 4, 5, 7, 7
21 sh_b12345677: db 1, 2, 3, 4, 5, 6, 7, 7
22 sh_b23456777: db 2, 3, 4, 5, 6, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0
23 sh_b0123456777777777: db 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7
24 sh_b1234567777777777: db 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
25 sh_b2345677777777777: db 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
26 sh_b2w01234577: db 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 7, -1, 7, -1
27 sh_b2w12345677: db 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 7, -1
28 sh_b2w23456777: db 2, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 7, -1, 7, -1
29 sh_b2w01234567: db 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1
30 sh_b2w12345678: db 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1
31 sh_b2w23456789: db 2, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1
32 sh_b2w89abcdef: db 8, -1, 9, -1, 10, -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, -1
33 sh_b2w9abcdeff: db 9, -1, 10, -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, -1, 15, -1
34 sh_b2wabcdefff: db 10, -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, -1, 15, -1, 15, - 1
35 sh_b123456789abcdeff: db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15
36 sh_b23456789abcdefff: db 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15
37
13 SECTION .text 38 SECTION .text
14 39
15 INIT_MMX ssse3 40 INIT_MMX ssse3
16 cglobal h_predictor_4x4, 2, 4, 3, dst, stride, line, left 41 cglobal h_predictor_4x4, 2, 4, 3, dst, stride, line, left
17 movifnidn leftq, leftmp 42 movifnidn leftq, leftmp
18 add leftq, 4 43 add leftq, 4
19 mov lineq, -2 44 mov lineq, -2
20 pxor m0, m0 45 pxor m0, m0
21 .loop: 46 .loop:
22 movd m1, [leftq+lineq*2 ] 47 movd m1, [leftq+lineq*2 ]
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 pshufb m1, m0 103 pshufb m1, m0
79 pshufb m2, m0 104 pshufb m2, m0
80 mova [dstq ], m1 105 mova [dstq ], m1
81 mova [dstq +16], m1 106 mova [dstq +16], m1
82 mova [dstq+strideq ], m2 107 mova [dstq+strideq ], m2
83 mova [dstq+strideq+16], m2 108 mova [dstq+strideq+16], m2
84 lea dstq, [dstq+strideq*2] 109 lea dstq, [dstq+strideq*2]
85 inc lineq 110 inc lineq
86 jnz .loop 111 jnz .loop
87 REP_RET 112 REP_RET
113
114 INIT_MMX ssse3
115 cglobal d45_predictor_4x4, 3, 3, 4, dst, stride, above
116 movq m0, [aboveq]
117 pshufb m2, m0, [sh_b23456777]
118 pshufb m1, m0, [sh_b01234577]
119 pshufb m0, [sh_b12345677]
120 pavgb m3, m2, m1
121 pxor m2, m1
122 pand m2, [pb_1]
123 psubb m3, m2
124 pavgb m0, m3
125
126 ; store 4 lines
127 movd [dstq ], m0
128 psrlq m0, 8
129 movd [dstq+strideq], m0
130 lea dstq, [dstq+strideq*2]
131 psrlq m0, 8
132 movd [dstq ], m0
133 psrlq m0, 8
134 movd [dstq+strideq], m0
135 RET
136
137 INIT_MMX ssse3
138 cglobal d45_predictor_8x8, 3, 3, 4, dst, stride, above
139 movq m0, [aboveq]
140 mova m1, [sh_b12345677]
141 DEFINE_ARGS dst, stride, stride3, line
142 lea stride3q, [strideq*3]
143 pshufb m2, m0, [sh_b23456777]
144 pavgb m3, m2, m0
145 pxor m2, m0
146 pshufb m0, m1
147 pand m2, [pb_1]
148 psubb m3, m2
149 pavgb m0, m3
150
151 ; store 4 lines
152 movq [dstq ], m0
153 pshufb m0, m1
154 movq [dstq+strideq ], m0
155 pshufb m0, m1
156 movq [dstq+strideq*2], m0
157 pshufb m0, m1
158 movq [dstq+stride3q ], m0
159 pshufb m0, m1
160 lea dstq, [dstq+strideq*4]
161
162 ; store next 4 lines
163 movq [dstq ], m0
164 pshufb m0, m1
165 movq [dstq+strideq ], m0
166 pshufb m0, m1
167 movq [dstq+strideq*2], m0
168 pshufb m0, m1
169 movq [dstq+stride3q ], m0
170 RET
171
172 INIT_XMM ssse3
173 cglobal d45_predictor_16x16, 3, 5, 4, dst, stride, above, dst8, line
174 mova m0, [aboveq]
175 DEFINE_ARGS dst, stride, stride3, dst8, line
176 lea stride3q, [strideq*3]
177 lea dst8q, [dstq+strideq*8]
178 mova m1, [sh_b123456789abcdeff]
179 pshufb m2, m0, [sh_b23456789abcdefff]
180 pavgb m3, m2, m0
181 pxor m2, m0
182 pshufb m0, m1
183 pand m2, [pb_1]
184 psubb m3, m2
185 pavgb m0, m3
186
187 ; first 4 lines and first half of 3rd 4 lines
188 mov lined, 2
189 .loop:
190 mova [dstq ], m0
191 movhps [dst8q ], m0
192 pshufb m0, m1
193 mova [dstq +strideq ], m0
194 movhps [dst8q+strideq ], m0
195 pshufb m0, m1
196 mova [dstq +strideq*2 ], m0
197 movhps [dst8q+strideq*2 ], m0
198 pshufb m0, m1
199 mova [dstq +stride3q ], m0
200 movhps [dst8q+stride3q ], m0
201 pshufb m0, m1
202 lea dstq, [dstq +strideq*4]
203 lea dst8q, [dst8q+strideq*4]
204 dec lined
205 jnz .loop
206
207 ; bottom-right 8x8 block
208 movhps [dstq +8], m0
209 movhps [dstq+strideq +8], m0
210 movhps [dstq+strideq*2+8], m0
211 movhps [dstq+stride3q +8], m0
212 lea dstq, [dstq+strideq*4]
213 movhps [dstq +8], m0
214 movhps [dstq+strideq +8], m0
215 movhps [dstq+strideq*2+8], m0
216 movhps [dstq+stride3q +8], m0
217 RET
218
219 INIT_XMM ssse3
220 cglobal d45_predictor_32x32, 3, 5, 7, dst, stride, above, dst16, line
221 mova m0, [aboveq]
222 mova m4, [aboveq+16]
223 DEFINE_ARGS dst, stride, stride3, dst16, line
224 lea stride3q, [strideq*3]
225 lea dst16q, [dstq +strideq*8]
226 lea dst16q, [dst16q+strideq*8]
227 mova m1, [sh_b123456789abcdeff]
228 pshufb m2, m4, [sh_b23456789abcdefff]
229 pavgb m3, m2, m4
230 pxor m2, m4
231 palignr m5, m4, m0, 1
232 palignr m6, m4, m0, 2
233 pshufb m4, m1
234 pand m2, [pb_1]
235 psubb m3, m2
236 pavgb m4, m3
237 pavgb m3, m0, m6
238 pxor m0, m6
239 pand m0, [pb_1]
240 psubb m3, m0
241 pavgb m5, m3
242
243 ; write 4x4 lines (and the first half of the second 4x4 lines)
244 mov lined, 4
245 .loop:
246 mova [dstq ], m5
247 mova [dstq +16], m4
248 mova [dst16q ], m4
249 palignr m3, m4, m5, 1
250 pshufb m4, m1
251 mova [dstq +strideq ], m3
252 mova [dstq +strideq +16], m4
253 mova [dst16q+strideq ], m4
254 palignr m5, m4, m3, 1
255 pshufb m4, m1
256 mova [dstq +strideq*2 ], m5
257 mova [dstq +strideq*2+16], m4
258 mova [dst16q+strideq*2 ], m4
259 palignr m3, m4, m5, 1
260 pshufb m4, m1
261 mova [dstq +stride3q ], m3
262 mova [dstq +stride3q +16], m4
263 mova [dst16q+stride3q ], m4
264 palignr m5, m4, m3, 1
265 pshufb m4, m1
266 lea dstq, [dstq +strideq*4]
267 lea dst16q, [dst16q+strideq*4]
268 dec lined
269 jnz .loop
270
271 ; write second half of second 4x4 lines
272 mova [dstq +16], m4
273 mova [dstq +strideq +16], m4
274 mova [dstq +strideq*2+16], m4
275 mova [dstq +stride3q +16], m4
276 lea dstq, [dstq +strideq*4]
277 mova [dstq +16], m4
278 mova [dstq +strideq +16], m4
279 mova [dstq +strideq*2+16], m4
280 mova [dstq +stride3q +16], m4
281 lea dstq, [dstq +strideq*4]
282 mova [dstq +16], m4
283 mova [dstq +strideq +16], m4
284 mova [dstq +strideq*2+16], m4
285 mova [dstq +stride3q +16], m4
286 lea dstq, [dstq +strideq*4]
287 mova [dstq +16], m4
288 mova [dstq +strideq +16], m4
289 mova [dstq +strideq*2+16], m4
290 mova [dstq +stride3q +16], m4
291 RET
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c ('k') | source/libvpx/vp9/decoder/vp9_dboolhuff.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698