OLD | NEW |
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 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 #endif | 248 #endif |
249 #ifdef HAS_ARGBSUBTRACTROW_MSA | 249 #ifdef HAS_ARGBSUBTRACTROW_MSA |
250 ANY21(ARGBSubtractRow_Any_MSA, ARGBSubtractRow_MSA, 0, 4, 4, 4, 7) | 250 ANY21(ARGBSubtractRow_Any_MSA, ARGBSubtractRow_MSA, 0, 4, 4, 4, 7) |
251 #endif | 251 #endif |
252 #ifdef HAS_SOBELROW_SSE2 | 252 #ifdef HAS_SOBELROW_SSE2 |
253 ANY21(SobelRow_Any_SSE2, SobelRow_SSE2, 0, 1, 1, 4, 15) | 253 ANY21(SobelRow_Any_SSE2, SobelRow_SSE2, 0, 1, 1, 4, 15) |
254 #endif | 254 #endif |
255 #ifdef HAS_SOBELROW_NEON | 255 #ifdef HAS_SOBELROW_NEON |
256 ANY21(SobelRow_Any_NEON, SobelRow_NEON, 0, 1, 1, 4, 7) | 256 ANY21(SobelRow_Any_NEON, SobelRow_NEON, 0, 1, 1, 4, 7) |
257 #endif | 257 #endif |
| 258 #ifdef HAS_SOBELROW_MSA |
| 259 ANY21(SobelRow_Any_MSA, SobelRow_MSA, 0, 1, 1, 4, 15) |
| 260 #endif |
258 #ifdef HAS_SOBELTOPLANEROW_SSE2 | 261 #ifdef HAS_SOBELTOPLANEROW_SSE2 |
259 ANY21(SobelToPlaneRow_Any_SSE2, SobelToPlaneRow_SSE2, 0, 1, 1, 1, 15) | 262 ANY21(SobelToPlaneRow_Any_SSE2, SobelToPlaneRow_SSE2, 0, 1, 1, 1, 15) |
260 #endif | 263 #endif |
261 #ifdef HAS_SOBELTOPLANEROW_NEON | 264 #ifdef HAS_SOBELTOPLANEROW_NEON |
262 ANY21(SobelToPlaneRow_Any_NEON, SobelToPlaneRow_NEON, 0, 1, 1, 1, 15) | 265 ANY21(SobelToPlaneRow_Any_NEON, SobelToPlaneRow_NEON, 0, 1, 1, 1, 15) |
263 #endif | 266 #endif |
| 267 #ifdef HAS_SOBELTOPLANEROW_MSA |
| 268 ANY21(SobelToPlaneRow_Any_MSA, SobelToPlaneRow_MSA, 0, 1, 1, 1, 31) |
| 269 #endif |
264 #ifdef HAS_SOBELXYROW_SSE2 | 270 #ifdef HAS_SOBELXYROW_SSE2 |
265 ANY21(SobelXYRow_Any_SSE2, SobelXYRow_SSE2, 0, 1, 1, 4, 15) | 271 ANY21(SobelXYRow_Any_SSE2, SobelXYRow_SSE2, 0, 1, 1, 4, 15) |
266 #endif | 272 #endif |
267 #ifdef HAS_SOBELXYROW_NEON | 273 #ifdef HAS_SOBELXYROW_NEON |
268 ANY21(SobelXYRow_Any_NEON, SobelXYRow_NEON, 0, 1, 1, 4, 7) | 274 ANY21(SobelXYRow_Any_NEON, SobelXYRow_NEON, 0, 1, 1, 4, 7) |
269 #endif | 275 #endif |
| 276 #ifdef HAS_SOBELXYROW_MSA |
| 277 ANY21(SobelXYRow_Any_MSA, SobelXYRow_MSA, 0, 1, 1, 4, 15) |
| 278 #endif |
270 #undef ANY21 | 279 #undef ANY21 |
271 | 280 |
272 // Any 2 planes to 1 with yuvconstants | 281 // Any 2 planes to 1 with yuvconstants |
273 #define ANY21C(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \ | 282 #define ANY21C(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \ |
274 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, uint8* dst_ptr, \ | 283 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, uint8* dst_ptr, \ |
275 const struct YuvConstants* yuvconstants, int width) { \ | 284 const struct YuvConstants* yuvconstants, int width) { \ |
276 SIMD_ALIGNED(uint8 temp[64 * 3]); \ | 285 SIMD_ALIGNED(uint8 temp[64 * 3]); \ |
277 memset(temp, 0, 64 * 2); /* for msan */ \ | 286 memset(temp, 0, 64 * 2); /* for msan */ \ |
278 int r = width & MASK; \ | 287 int r = width & MASK; \ |
279 int n = width & ~MASK; \ | 288 int n = width & ~MASK; \ |
(...skipping 13 matching lines...) Expand all Loading... |
293 #endif | 302 #endif |
294 #ifdef HAS_NV12TOARGBROW_AVX2 | 303 #ifdef HAS_NV12TOARGBROW_AVX2 |
295 ANY21C(NV12ToARGBRow_Any_AVX2, NV12ToARGBRow_AVX2, 1, 1, 2, 4, 15) | 304 ANY21C(NV12ToARGBRow_Any_AVX2, NV12ToARGBRow_AVX2, 1, 1, 2, 4, 15) |
296 #endif | 305 #endif |
297 #ifdef HAS_NV12TOARGBROW_NEON | 306 #ifdef HAS_NV12TOARGBROW_NEON |
298 ANY21C(NV12ToARGBRow_Any_NEON, NV12ToARGBRow_NEON, 1, 1, 2, 4, 7) | 307 ANY21C(NV12ToARGBRow_Any_NEON, NV12ToARGBRow_NEON, 1, 1, 2, 4, 7) |
299 #endif | 308 #endif |
300 #ifdef HAS_NV12TOARGBROW_DSPR2 | 309 #ifdef HAS_NV12TOARGBROW_DSPR2 |
301 ANY21C(NV12ToARGBRow_Any_DSPR2, NV12ToARGBRow_DSPR2, 1, 1, 2, 4, 7) | 310 ANY21C(NV12ToARGBRow_Any_DSPR2, NV12ToARGBRow_DSPR2, 1, 1, 2, 4, 7) |
302 #endif | 311 #endif |
| 312 #ifdef HAS_NV12TOARGBROW_MSA |
| 313 ANY21C(NV12ToARGBRow_Any_MSA, NV12ToARGBRow_MSA, 1, 1, 2, 4, 7) |
| 314 #endif |
303 #ifdef HAS_NV21TOARGBROW_SSSE3 | 315 #ifdef HAS_NV21TOARGBROW_SSSE3 |
304 ANY21C(NV21ToARGBRow_Any_SSSE3, NV21ToARGBRow_SSSE3, 1, 1, 2, 4, 7) | 316 ANY21C(NV21ToARGBRow_Any_SSSE3, NV21ToARGBRow_SSSE3, 1, 1, 2, 4, 7) |
305 #endif | 317 #endif |
306 #ifdef HAS_NV21TOARGBROW_AVX2 | 318 #ifdef HAS_NV21TOARGBROW_AVX2 |
307 ANY21C(NV21ToARGBRow_Any_AVX2, NV21ToARGBRow_AVX2, 1, 1, 2, 4, 15) | 319 ANY21C(NV21ToARGBRow_Any_AVX2, NV21ToARGBRow_AVX2, 1, 1, 2, 4, 15) |
308 #endif | 320 #endif |
309 #ifdef HAS_NV21TOARGBROW_NEON | 321 #ifdef HAS_NV21TOARGBROW_NEON |
310 ANY21C(NV21ToARGBRow_Any_NEON, NV21ToARGBRow_NEON, 1, 1, 2, 4, 7) | 322 ANY21C(NV21ToARGBRow_Any_NEON, NV21ToARGBRow_NEON, 1, 1, 2, 4, 7) |
311 #endif | 323 #endif |
| 324 #ifdef HAS_NV21TOARGBROW_MSA |
| 325 ANY21C(NV21ToARGBRow_Any_MSA, NV21ToARGBRow_MSA, 1, 1, 2, 4, 7) |
| 326 #endif |
312 #ifdef HAS_NV12TORGB565ROW_SSSE3 | 327 #ifdef HAS_NV12TORGB565ROW_SSSE3 |
313 ANY21C(NV12ToRGB565Row_Any_SSSE3, NV12ToRGB565Row_SSSE3, 1, 1, 2, 2, 7) | 328 ANY21C(NV12ToRGB565Row_Any_SSSE3, NV12ToRGB565Row_SSSE3, 1, 1, 2, 2, 7) |
314 #endif | 329 #endif |
315 #ifdef HAS_NV12TORGB565ROW_AVX2 | 330 #ifdef HAS_NV12TORGB565ROW_AVX2 |
316 ANY21C(NV12ToRGB565Row_Any_AVX2, NV12ToRGB565Row_AVX2, 1, 1, 2, 2, 15) | 331 ANY21C(NV12ToRGB565Row_Any_AVX2, NV12ToRGB565Row_AVX2, 1, 1, 2, 2, 15) |
317 #endif | 332 #endif |
318 #ifdef HAS_NV12TORGB565ROW_NEON | 333 #ifdef HAS_NV12TORGB565ROW_NEON |
319 ANY21C(NV12ToRGB565Row_Any_NEON, NV12ToRGB565Row_NEON, 1, 1, 2, 2, 7) | 334 ANY21C(NV12ToRGB565Row_Any_NEON, NV12ToRGB565Row_NEON, 1, 1, 2, 2, 7) |
320 #endif | 335 #endif |
| 336 #ifdef HAS_NV12TORGB565ROW_MSA |
| 337 ANY21C(NV12ToRGB565Row_Any_MSA, NV12ToRGB565Row_MSA, 1, 1, 2, 2, 7) |
| 338 #endif |
321 #undef ANY21C | 339 #undef ANY21C |
322 | 340 |
323 // Any 1 to 1. | 341 // Any 1 to 1. |
324 #define ANY11(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, BPP, MASK) \ | 342 #define ANY11(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, BPP, MASK) \ |
325 void NAMEANY(const uint8* src_ptr, uint8* dst_ptr, int width) { \ | 343 void NAMEANY(const uint8* src_ptr, uint8* dst_ptr, int width) { \ |
326 SIMD_ALIGNED(uint8 temp[128 * 2]); \ | 344 SIMD_ALIGNED(uint8 temp[128 * 2]); \ |
327 memset(temp, 0, 128); /* for YUY2 and msan */ \ | 345 memset(temp, 0, 128); /* for YUY2 and msan */ \ |
328 int r = width & MASK; \ | 346 int r = width & MASK; \ |
329 int n = width & ~MASK; \ | 347 int n = width & ~MASK; \ |
330 if (n > 0) { \ | 348 if (n > 0) { \ |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 #endif | 1011 #endif |
994 #ifdef HAS_UYVYTOUVROW_MSA | 1012 #ifdef HAS_UYVYTOUVROW_MSA |
995 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31) | 1013 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31) |
996 #endif | 1014 #endif |
997 #undef ANY12S | 1015 #undef ANY12S |
998 | 1016 |
999 #ifdef __cplusplus | 1017 #ifdef __cplusplus |
1000 } // extern "C" | 1018 } // extern "C" |
1001 } // namespace libyuv | 1019 } // namespace libyuv |
1002 #endif | 1020 #endif |
OLD | NEW |