| 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 |