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

Side by Side Diff: source/convert_from_argb.cc

Issue 2421843002: Add MSA optimized ARGB4444ToI420 and ARGB4444ToARGB functions (Closed)
Patch Set: Incorporated review comments Created 4 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2012 The LibYuv 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
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 } 82 }
83 #endif 83 #endif
84 #if defined(HAS_ARGBTOYROW_NEON) 84 #if defined(HAS_ARGBTOYROW_NEON)
85 if (TestCpuFlag(kCpuHasNEON)) { 85 if (TestCpuFlag(kCpuHasNEON)) {
86 ARGBToYRow = ARGBToYRow_Any_NEON; 86 ARGBToYRow = ARGBToYRow_Any_NEON;
87 if (IS_ALIGNED(width, 8)) { 87 if (IS_ALIGNED(width, 8)) {
88 ARGBToYRow = ARGBToYRow_NEON; 88 ARGBToYRow = ARGBToYRow_NEON;
89 } 89 }
90 } 90 }
91 #endif 91 #endif
92 #if defined(HAS_ARGBTOYROW_MSA)
93 if (TestCpuFlag(kCpuHasMSA)) {
94 ARGBToYRow = ARGBToYRow_Any_MSA;
95 if (IS_ALIGNED(width, 16)) {
96 ARGBToYRow = ARGBToYRow_MSA;
97 }
98 }
99 #endif
92 100
93 for (y = 0; y < height; ++y) { 101 for (y = 0; y < height; ++y) {
94 ARGBToUV444Row(src_argb, dst_u, dst_v, width); 102 ARGBToUV444Row(src_argb, dst_u, dst_v, width);
95 ARGBToYRow(src_argb, dst_y, width); 103 ARGBToYRow(src_argb, dst_y, width);
96 src_argb += src_stride_argb; 104 src_argb += src_stride_argb;
97 dst_y += dst_stride_y; 105 dst_y += dst_stride_y;
98 dst_u += dst_stride_u; 106 dst_u += dst_stride_u;
99 dst_v += dst_stride_v; 107 dst_v += dst_stride_v;
100 } 108 }
101 return 0; 109 return 0;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 } 170 }
163 #endif 171 #endif
164 #if defined(HAS_ARGBTOUVROW_NEON) 172 #if defined(HAS_ARGBTOUVROW_NEON)
165 if (TestCpuFlag(kCpuHasNEON)) { 173 if (TestCpuFlag(kCpuHasNEON)) {
166 ARGBToUVRow = ARGBToUVRow_Any_NEON; 174 ARGBToUVRow = ARGBToUVRow_Any_NEON;
167 if (IS_ALIGNED(width, 16)) { 175 if (IS_ALIGNED(width, 16)) {
168 ARGBToUVRow = ARGBToUVRow_NEON; 176 ARGBToUVRow = ARGBToUVRow_NEON;
169 } 177 }
170 } 178 }
171 #endif 179 #endif
180 #if defined(HAS_ARGBTOYROW_MSA)
181 if (TestCpuFlag(kCpuHasMSA)) {
182 ARGBToYRow = ARGBToYRow_Any_MSA;
183 if (IS_ALIGNED(width, 16)) {
184 ARGBToYRow = ARGBToYRow_MSA;
185 }
186 }
187 #endif
188 #if defined(HAS_ARGBTOUVROW_MSA)
189 if (TestCpuFlag(kCpuHasMSA)) {
190 ARGBToUVRow = ARGBToUVRow_Any_MSA;
191 if (IS_ALIGNED(width, 32)) {
192 ARGBToUVRow = ARGBToUVRow_MSA;
193 }
194 }
195 #endif
172 196
173 for (y = 0; y < height; ++y) { 197 for (y = 0; y < height; ++y) {
174 ARGBToUVRow(src_argb, 0, dst_u, dst_v, width); 198 ARGBToUVRow(src_argb, 0, dst_u, dst_v, width);
175 ARGBToYRow(src_argb, dst_y, width); 199 ARGBToYRow(src_argb, dst_y, width);
176 src_argb += src_stride_argb; 200 src_argb += src_stride_argb;
177 dst_y += dst_stride_y; 201 dst_y += dst_stride_y;
178 dst_u += dst_stride_u; 202 dst_u += dst_stride_u;
179 dst_v += dst_stride_v; 203 dst_v += dst_stride_v;
180 } 204 }
181 return 0; 205 return 0;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 } 258 }
235 #endif 259 #endif
236 #if defined(HAS_ARGBTOUVROW_NEON) 260 #if defined(HAS_ARGBTOUVROW_NEON)
237 if (TestCpuFlag(kCpuHasNEON)) { 261 if (TestCpuFlag(kCpuHasNEON)) {
238 ARGBToUVRow = ARGBToUVRow_Any_NEON; 262 ARGBToUVRow = ARGBToUVRow_Any_NEON;
239 if (IS_ALIGNED(width, 16)) { 263 if (IS_ALIGNED(width, 16)) {
240 ARGBToUVRow = ARGBToUVRow_NEON; 264 ARGBToUVRow = ARGBToUVRow_NEON;
241 } 265 }
242 } 266 }
243 #endif 267 #endif
268 #if defined(HAS_ARGBTOYROW_MSA)
269 if (TestCpuFlag(kCpuHasMSA)) {
270 ARGBToYRow = ARGBToYRow_Any_MSA;
271 if (IS_ALIGNED(width, 16)) {
272 ARGBToYRow = ARGBToYRow_MSA;
273 }
274 }
275 #endif
276 #if defined(HAS_ARGBTOUVROW_MSA)
277 if (TestCpuFlag(kCpuHasMSA)) {
278 ARGBToUVRow = ARGBToUVRow_Any_MSA;
279 if (IS_ALIGNED(width, 32)) {
280 ARGBToUVRow = ARGBToUVRow_MSA;
281 }
282 }
283 #endif
244 #if defined(HAS_MERGEUVROW_SSE2) 284 #if defined(HAS_MERGEUVROW_SSE2)
245 if (TestCpuFlag(kCpuHasSSE2)) { 285 if (TestCpuFlag(kCpuHasSSE2)) {
246 MergeUVRow_ = MergeUVRow_Any_SSE2; 286 MergeUVRow_ = MergeUVRow_Any_SSE2;
247 if (IS_ALIGNED(halfwidth, 16)) { 287 if (IS_ALIGNED(halfwidth, 16)) {
248 MergeUVRow_ = MergeUVRow_SSE2; 288 MergeUVRow_ = MergeUVRow_SSE2;
249 } 289 }
250 } 290 }
251 #endif 291 #endif
252 #if defined(HAS_MERGEUVROW_AVX2) 292 #if defined(HAS_MERGEUVROW_AVX2)
253 if (TestCpuFlag(kCpuHasAVX2)) { 293 if (TestCpuFlag(kCpuHasAVX2)) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } 383 }
344 #endif 384 #endif
345 #if defined(HAS_ARGBTOUVROW_NEON) 385 #if defined(HAS_ARGBTOUVROW_NEON)
346 if (TestCpuFlag(kCpuHasNEON)) { 386 if (TestCpuFlag(kCpuHasNEON)) {
347 ARGBToUVRow = ARGBToUVRow_Any_NEON; 387 ARGBToUVRow = ARGBToUVRow_Any_NEON;
348 if (IS_ALIGNED(width, 16)) { 388 if (IS_ALIGNED(width, 16)) {
349 ARGBToUVRow = ARGBToUVRow_NEON; 389 ARGBToUVRow = ARGBToUVRow_NEON;
350 } 390 }
351 } 391 }
352 #endif 392 #endif
393 #if defined(HAS_ARGBTOYROW_MSA)
394 if (TestCpuFlag(kCpuHasMSA)) {
395 ARGBToYRow = ARGBToYRow_Any_MSA;
396 if (IS_ALIGNED(width, 16)) {
397 ARGBToYRow = ARGBToYRow_MSA;
398 }
399 }
400 #endif
401 #if defined(HAS_ARGBTOUVROW_MSA)
402 if (TestCpuFlag(kCpuHasMSA)) {
403 ARGBToUVRow = ARGBToUVRow_Any_MSA;
404 if (IS_ALIGNED(width, 32)) {
405 ARGBToUVRow = ARGBToUVRow_MSA;
406 }
407 }
408 #endif
353 #if defined(HAS_MERGEUVROW_SSE2) 409 #if defined(HAS_MERGEUVROW_SSE2)
354 if (TestCpuFlag(kCpuHasSSE2)) { 410 if (TestCpuFlag(kCpuHasSSE2)) {
355 MergeUVRow_ = MergeUVRow_Any_SSE2; 411 MergeUVRow_ = MergeUVRow_Any_SSE2;
356 if (IS_ALIGNED(halfwidth, 16)) { 412 if (IS_ALIGNED(halfwidth, 16)) {
357 MergeUVRow_ = MergeUVRow_SSE2; 413 MergeUVRow_ = MergeUVRow_SSE2;
358 } 414 }
359 } 415 }
360 #endif 416 #endif
361 #if defined(HAS_MERGEUVROW_AVX2) 417 #if defined(HAS_MERGEUVROW_AVX2)
362 if (TestCpuFlag(kCpuHasAVX2)) { 418 if (TestCpuFlag(kCpuHasAVX2)) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 } 513 }
458 #endif 514 #endif
459 #if defined(HAS_ARGBTOUVROW_NEON) 515 #if defined(HAS_ARGBTOUVROW_NEON)
460 if (TestCpuFlag(kCpuHasNEON)) { 516 if (TestCpuFlag(kCpuHasNEON)) {
461 ARGBToUVRow = ARGBToUVRow_Any_NEON; 517 ARGBToUVRow = ARGBToUVRow_Any_NEON;
462 if (IS_ALIGNED(width, 16)) { 518 if (IS_ALIGNED(width, 16)) {
463 ARGBToUVRow = ARGBToUVRow_NEON; 519 ARGBToUVRow = ARGBToUVRow_NEON;
464 } 520 }
465 } 521 }
466 #endif 522 #endif
523 #if defined(HAS_ARGBTOYROW_MSA)
524 if (TestCpuFlag(kCpuHasMSA)) {
525 ARGBToYRow = ARGBToYRow_Any_MSA;
526 if (IS_ALIGNED(width, 16)) {
527 ARGBToYRow = ARGBToYRow_MSA;
528 }
529 }
530 #endif
531 #if defined(HAS_ARGBTOUVROW_MSA)
532 if (TestCpuFlag(kCpuHasMSA)) {
533 ARGBToUVRow = ARGBToUVRow_Any_MSA;
534 if (IS_ALIGNED(width, 32)) {
535 ARGBToUVRow = ARGBToUVRow_MSA;
536 }
537 }
538 #endif
467 #if defined(HAS_I422TOYUY2ROW_SSE2) 539 #if defined(HAS_I422TOYUY2ROW_SSE2)
468 if (TestCpuFlag(kCpuHasSSE2)) { 540 if (TestCpuFlag(kCpuHasSSE2)) {
469 I422ToYUY2Row = I422ToYUY2Row_Any_SSE2; 541 I422ToYUY2Row = I422ToYUY2Row_Any_SSE2;
470 if (IS_ALIGNED(width, 16)) { 542 if (IS_ALIGNED(width, 16)) {
471 I422ToYUY2Row = I422ToYUY2Row_SSE2; 543 I422ToYUY2Row = I422ToYUY2Row_SSE2;
472 } 544 }
473 } 545 }
474 #endif 546 #endif
475 #if defined(HAS_I422TOYUY2ROW_NEON) 547 #if defined(HAS_I422TOYUY2ROW_NEON)
476 if (TestCpuFlag(kCpuHasNEON)) { 548 if (TestCpuFlag(kCpuHasNEON)) {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 } 639 }
568 #endif 640 #endif
569 #if defined(HAS_ARGBTOUVROW_NEON) 641 #if defined(HAS_ARGBTOUVROW_NEON)
570 if (TestCpuFlag(kCpuHasNEON)) { 642 if (TestCpuFlag(kCpuHasNEON)) {
571 ARGBToUVRow = ARGBToUVRow_Any_NEON; 643 ARGBToUVRow = ARGBToUVRow_Any_NEON;
572 if (IS_ALIGNED(width, 16)) { 644 if (IS_ALIGNED(width, 16)) {
573 ARGBToUVRow = ARGBToUVRow_NEON; 645 ARGBToUVRow = ARGBToUVRow_NEON;
574 } 646 }
575 } 647 }
576 #endif 648 #endif
649 #if defined(HAS_ARGBTOYROW_MSA)
650 if (TestCpuFlag(kCpuHasMSA)) {
651 ARGBToYRow = ARGBToYRow_Any_MSA;
652 if (IS_ALIGNED(width, 16)) {
653 ARGBToYRow = ARGBToYRow_MSA;
654 }
655 }
656 #endif
657 #if defined(HAS_ARGBTOUVROW_MSA)
658 if (TestCpuFlag(kCpuHasMSA)) {
659 ARGBToUVRow = ARGBToUVRow_Any_MSA;
660 if (IS_ALIGNED(width, 32)) {
661 ARGBToUVRow = ARGBToUVRow_MSA;
662 }
663 }
664 #endif
577 #if defined(HAS_I422TOUYVYROW_SSE2) 665 #if defined(HAS_I422TOUYVYROW_SSE2)
578 if (TestCpuFlag(kCpuHasSSE2)) { 666 if (TestCpuFlag(kCpuHasSSE2)) {
579 I422ToUYVYRow = I422ToUYVYRow_Any_SSE2; 667 I422ToUYVYRow = I422ToUYVYRow_Any_SSE2;
580 if (IS_ALIGNED(width, 16)) { 668 if (IS_ALIGNED(width, 16)) {
581 I422ToUYVYRow = I422ToUYVYRow_SSE2; 669 I422ToUYVYRow = I422ToUYVYRow_SSE2;
582 } 670 }
583 } 671 }
584 #endif 672 #endif
585 #if defined(HAS_I422TOUYVYROW_NEON) 673 #if defined(HAS_I422TOUYVYROW_NEON)
586 if (TestCpuFlag(kCpuHasNEON)) { 674 if (TestCpuFlag(kCpuHasNEON)) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 } 746 }
659 #endif 747 #endif
660 #if defined(HAS_ARGBTOYROW_NEON) 748 #if defined(HAS_ARGBTOYROW_NEON)
661 if (TestCpuFlag(kCpuHasNEON)) { 749 if (TestCpuFlag(kCpuHasNEON)) {
662 ARGBToYRow = ARGBToYRow_Any_NEON; 750 ARGBToYRow = ARGBToYRow_Any_NEON;
663 if (IS_ALIGNED(width, 8)) { 751 if (IS_ALIGNED(width, 8)) {
664 ARGBToYRow = ARGBToYRow_NEON; 752 ARGBToYRow = ARGBToYRow_NEON;
665 } 753 }
666 } 754 }
667 #endif 755 #endif
756 #if defined(HAS_ARGBTOYROW_MSA)
757 if (TestCpuFlag(kCpuHasMSA)) {
758 ARGBToYRow = ARGBToYRow_Any_MSA;
759 if (IS_ALIGNED(width, 16)) {
760 ARGBToYRow = ARGBToYRow_MSA;
761 }
762 }
763 #endif
668 764
669 for (y = 0; y < height; ++y) { 765 for (y = 0; y < height; ++y) {
670 ARGBToYRow(src_argb, dst_y, width); 766 ARGBToYRow(src_argb, dst_y, width);
671 src_argb += src_stride_argb; 767 src_argb += src_stride_argb;
672 dst_y += dst_stride_y; 768 dst_y += dst_stride_y;
673 } 769 }
674 return 0; 770 return 0;
675 } 771 }
676 772
677 // Shuffle table for converting ARGB to RGBA. 773 // Shuffle table for converting ARGB to RGBA.
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 src_argb += src_stride_argb; 1316 src_argb += src_stride_argb;
1221 dst_yj += dst_stride_yj; 1317 dst_yj += dst_stride_yj;
1222 } 1318 }
1223 return 0; 1319 return 0;
1224 } 1320 }
1225 1321
1226 #ifdef __cplusplus 1322 #ifdef __cplusplus
1227 } // extern "C" 1323 } // extern "C"
1228 } // namespace libyuv 1324 } // namespace libyuv
1229 #endif 1325 #endif
OLDNEW
« no previous file with comments | « source/convert_argb.cc ('k') | source/row_any.cc » ('j') | source/row_msa.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698