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

Side by Side Diff: source/row_neon64.cc

Issue 1724393002: Port ARGBToRGB565 from aarch64 neon to 32 bit (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: fix green shift to 6 in 1555 Created 4 years, 10 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
« no previous file with comments | « source/row_neon.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2014 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 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 [kUVBiasBGR]"r"(&yuvconstants->kUVBiasBGR), 316 [kUVBiasBGR]"r"(&yuvconstants->kUVBiasBGR),
317 [kYToRgb]"r"(&yuvconstants->kYToRgb) 317 [kYToRgb]"r"(&yuvconstants->kYToRgb)
318 : "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v20", 318 : "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v20",
319 "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30" 319 "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30"
320 ); 320 );
321 } 321 }
322 #endif // HAS_I422TORGB24ROW_NEON 322 #endif // HAS_I422TORGB24ROW_NEON
323 323
324 #define ARGBTORGB565 \ 324 #define ARGBTORGB565 \
325 "shll v0.8h, v22.8b, #8 \n" /* R */ \ 325 "shll v0.8h, v22.8b, #8 \n" /* R */ \
326 "shll v21.8h, v21.8b, #8 \n" /* G */ \
326 "shll v20.8h, v20.8b, #8 \n" /* B */ \ 327 "shll v20.8h, v20.8b, #8 \n" /* B */ \
327 "shll v21.8h, v21.8b, #8 \n" /* G */ \
328 "sri v0.8h, v21.8h, #5 \n" /* RG */ \ 328 "sri v0.8h, v21.8h, #5 \n" /* RG */ \
329 "sri v0.8h, v20.8h, #11 \n" /* RGB */ 329 "sri v0.8h, v20.8h, #11 \n" /* RGB */
330 330
331 #ifdef HAS_I422TORGB565ROW_NEON 331 #ifdef HAS_I422TORGB565ROW_NEON
332 void I422ToRGB565Row_NEON(const uint8* src_y, 332 void I422ToRGB565Row_NEON(const uint8* src_y,
333 const uint8* src_u, 333 const uint8* src_u,
334 const uint8* src_v, 334 const uint8* src_v,
335 uint8* dst_rgb565, 335 uint8* dst_rgb565,
336 const struct YuvConstants* yuvconstants, 336 const struct YuvConstants* yuvconstants,
337 int width) { 337 int width) {
(...skipping 18 matching lines...) Expand all
356 [kYToRgb]"r"(&yuvconstants->kYToRgb) 356 [kYToRgb]"r"(&yuvconstants->kYToRgb)
357 : "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v20", 357 : "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v20",
358 "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30" 358 "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30"
359 ); 359 );
360 } 360 }
361 #endif // HAS_I422TORGB565ROW_NEON 361 #endif // HAS_I422TORGB565ROW_NEON
362 362
363 #define ARGBTOARGB1555 \ 363 #define ARGBTOARGB1555 \
364 "shll v0.8h, v23.8b, #8 \n" /* A */ \ 364 "shll v0.8h, v23.8b, #8 \n" /* A */ \
365 "shll v22.8h, v22.8b, #8 \n" /* R */ \ 365 "shll v22.8h, v22.8b, #8 \n" /* R */ \
366 "shll v21.8h, v21.8b, #8 \n" /* G */ \
366 "shll v20.8h, v20.8b, #8 \n" /* B */ \ 367 "shll v20.8h, v20.8b, #8 \n" /* B */ \
367 "shll v21.8h, v21.8b, #8 \n" /* G */ \
368 "sri v0.8h, v22.8h, #1 \n" /* AR */ \ 368 "sri v0.8h, v22.8h, #1 \n" /* AR */ \
369 "sri v0.8h, v21.8h, #6 \n" /* ARG */ \ 369 "sri v0.8h, v21.8h, #6 \n" /* ARG */ \
370 "sri v0.8h, v20.8h, #11 \n" /* ARGB */ 370 "sri v0.8h, v20.8h, #11 \n" /* ARGB */
371 371
372 #ifdef HAS_I422TOARGB1555ROW_NEON 372 #ifdef HAS_I422TOARGB1555ROW_NEON
373 void I422ToARGB1555Row_NEON(const uint8* src_y, 373 void I422ToARGB1555Row_NEON(const uint8* src_y,
374 const uint8* src_u, 374 const uint8* src_u,
375 const uint8* src_v, 375 const uint8* src_v,
376 uint8* dst_argb1555, 376 uint8* dst_argb1555,
377 const struct YuvConstants* yuvconstants, 377 const struct YuvConstants* yuvconstants,
(...skipping 2574 matching lines...) Expand 10 before | Expand all | Expand 10 after
2952 : "cc", "memory", "v0", "v1", "v2", "v3" // Clobber List 2952 : "cc", "memory", "v0", "v1", "v2", "v3" // Clobber List
2953 ); 2953 );
2954 } 2954 }
2955 #endif // HAS_SOBELYROW_NEON 2955 #endif // HAS_SOBELYROW_NEON
2956 #endif // !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__) 2956 #endif // !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
2957 2957
2958 #ifdef __cplusplus 2958 #ifdef __cplusplus
2959 } // extern "C" 2959 } // extern "C"
2960 } // namespace libyuv 2960 } // namespace libyuv
2961 #endif 2961 #endif
OLDNEW
« no previous file with comments | « source/row_neon.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698