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

Side by Side Diff: source/row_any.cc

Issue 2454433003: Add MSA optimized I422AlphaToARGBRow_MSA and I422ToRGB24Row_MSA functions (Closed)
Patch Set: Created 4 years, 1 month 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 #ifdef HAS_I422ALPHATOARGBROW_SSSE3 47 #ifdef HAS_I422ALPHATOARGBROW_SSSE3
48 ANY41C(I422AlphaToARGBRow_Any_SSSE3, I422AlphaToARGBRow_SSSE3, 1, 0, 4, 7) 48 ANY41C(I422AlphaToARGBRow_Any_SSSE3, I422AlphaToARGBRow_SSSE3, 1, 0, 4, 7)
49 #endif 49 #endif
50 #ifdef HAS_I422ALPHATOARGBROW_AVX2 50 #ifdef HAS_I422ALPHATOARGBROW_AVX2
51 ANY41C(I422AlphaToARGBRow_Any_AVX2, I422AlphaToARGBRow_AVX2, 1, 0, 4, 15) 51 ANY41C(I422AlphaToARGBRow_Any_AVX2, I422AlphaToARGBRow_AVX2, 1, 0, 4, 15)
52 #endif 52 #endif
53 #ifdef HAS_I422ALPHATOARGBROW_NEON 53 #ifdef HAS_I422ALPHATOARGBROW_NEON
54 ANY41C(I422AlphaToARGBRow_Any_NEON, I422AlphaToARGBRow_NEON, 1, 0, 4, 7) 54 ANY41C(I422AlphaToARGBRow_Any_NEON, I422AlphaToARGBRow_NEON, 1, 0, 4, 7)
55 #endif 55 #endif
56 #ifdef HAS_I422ALPHATOARGBROW_MSA
57 ANY41C(I422AlphaToARGBRow_Any_MSA, I422AlphaToARGBRow_MSA, 1, 0, 4, 7)
58 #endif
56 #undef ANY41C 59 #undef ANY41C
57 60
58 // Any 3 planes to 1. 61 // Any 3 planes to 1.
59 #define ANY31(NAMEANY, ANY_SIMD, UVSHIFT, DUVSHIFT, BPP, MASK) \ 62 #define ANY31(NAMEANY, ANY_SIMD, UVSHIFT, DUVSHIFT, BPP, MASK) \
60 void NAMEANY(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, \ 63 void NAMEANY(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, \
61 uint8* dst_ptr, int width) { \ 64 uint8* dst_ptr, int width) { \
62 SIMD_ALIGNED(uint8 temp[64 * 4]); \ 65 SIMD_ALIGNED(uint8 temp[64 * 4]); \
63 memset(temp, 0, 64 * 3); /* for YUY2 and msan */ \ 66 memset(temp, 0, 64 * 3); /* for YUY2 and msan */ \
64 int r = width & MASK; \ 67 int r = width & MASK; \
65 int n = width & ~MASK; \ 68 int n = width & ~MASK; \
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 ANY31C(I422ToARGBRow_Any_NEON, I422ToARGBRow_NEON, 1, 0, 4, 7) 164 ANY31C(I422ToARGBRow_Any_NEON, I422ToARGBRow_NEON, 1, 0, 4, 7)
162 ANY31C(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, 1, 0, 4, 7) 165 ANY31C(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, 1, 0, 4, 7)
163 ANY31C(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, 1, 0, 3, 7) 166 ANY31C(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, 1, 0, 3, 7)
164 ANY31C(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, 1, 0, 2, 7) 167 ANY31C(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, 1, 0, 2, 7)
165 ANY31C(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, 1, 0, 2, 7) 168 ANY31C(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, 1, 0, 2, 7)
166 ANY31C(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, 1, 0, 2, 7) 169 ANY31C(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, 1, 0, 2, 7)
167 #endif 170 #endif
168 #ifdef HAS_I422TOARGBROW_MSA 171 #ifdef HAS_I422TOARGBROW_MSA
169 ANY31C(I422ToARGBRow_Any_MSA, I422ToARGBRow_MSA, 1, 0, 4, 7) 172 ANY31C(I422ToARGBRow_Any_MSA, I422ToARGBRow_MSA, 1, 0, 4, 7)
170 ANY31C(I422ToRGBARow_Any_MSA, I422ToRGBARow_MSA, 1, 0, 4, 7) 173 ANY31C(I422ToRGBARow_Any_MSA, I422ToRGBARow_MSA, 1, 0, 4, 7)
174 ANY31C(I422ToRGB24Row_Any_MSA, I422ToRGB24Row_MSA, 1, 0, 3, 15)
171 #endif 175 #endif
172 #undef ANY31C 176 #undef ANY31C
173 177
174 // Any 2 planes to 1. 178 // Any 2 planes to 1.
175 #define ANY21(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \ 179 #define ANY21(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \
176 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, \ 180 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, \
177 uint8* dst_ptr, int width) { \ 181 uint8* dst_ptr, int width) { \
178 SIMD_ALIGNED(uint8 temp[64 * 3]); \ 182 SIMD_ALIGNED(uint8 temp[64 * 3]); \
179 memset(temp, 0, 64 * 2); /* for msan */ \ 183 memset(temp, 0, 64 * 2); /* for msan */ \
180 int r = width & MASK; \ 184 int r = width & MASK; \
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 #endif 867 #endif
864 #ifdef HAS_UYVYTOUVROW_MSA 868 #ifdef HAS_UYVYTOUVROW_MSA
865 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31) 869 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31)
866 #endif 870 #endif
867 #undef ANY12S 871 #undef ANY12S
868 872
869 #ifdef __cplusplus 873 #ifdef __cplusplus
870 } // extern "C" 874 } // extern "C"
871 } // namespace libyuv 875 } // namespace libyuv
872 #endif 876 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698