mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 17:26:49 +08:00
Port ARGBToRGB565 from aarch64 neon to 32 bit
The 64 bit version of ARGBToRGB565 to 32 bit. 64 bit is using sri which shifts and inserts, saving some masking. The instruction is available for neon 32 bit as well. R=magjed@chromium.org, harryjin@google.com BUG=libyuv:571 Review URL: https://codereview.chromium.org/1724393002 .
This commit is contained in:
parent
ab0dfdd4ff
commit
ee99b85126
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: http://code.google.com/p/libyuv/
|
||||
Version: 1578
|
||||
Version: 1579
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 1578
|
||||
#define LIBYUV_VERSION 1579
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||
|
||||
@ -317,16 +317,11 @@ void I422ToRGB24Row_NEON(const uint8* src_y,
|
||||
}
|
||||
|
||||
#define ARGBTORGB565 \
|
||||
"vshr.u8 d20, d20, #3 \n" /* B */ \
|
||||
"vshr.u8 d21, d21, #2 \n" /* G */ \
|
||||
"vshr.u8 d22, d22, #3 \n" /* R */ \
|
||||
"vmovl.u8 q8, d20 \n" /* B */ \
|
||||
"vmovl.u8 q9, d21 \n" /* G */ \
|
||||
"vmovl.u8 q10, d22 \n" /* R */ \
|
||||
"vshl.u16 q9, q9, #5 \n" /* G */ \
|
||||
"vshl.u16 q10, q10, #11 \n" /* R */ \
|
||||
"vorr q0, q8, q9 \n" /* BG */ \
|
||||
"vorr q0, q0, q10 \n" /* BGR */
|
||||
"vshll.u8 q0, d22, #8 \n" /* R */ \
|
||||
"vshll.u8 q8, d21, #8 \n" /* G */ \
|
||||
"vshll.u8 q9, d20, #8 \n" /* B */ \
|
||||
"vsri.16 q0, q8, #5 \n" /* RG */ \
|
||||
"vsri.16 q0, q9, #11 \n" /* RGB */
|
||||
|
||||
void I422ToRGB565Row_NEON(const uint8* src_y,
|
||||
const uint8* src_u,
|
||||
@ -359,19 +354,13 @@ void I422ToRGB565Row_NEON(const uint8* src_y,
|
||||
}
|
||||
|
||||
#define ARGBTOARGB1555 \
|
||||
"vshr.u8 q10, q10, #3 \n" /* B */ \
|
||||
"vshr.u8 d22, d22, #3 \n" /* R */ \
|
||||
"vshr.u8 d23, d23, #7 \n" /* A */ \
|
||||
"vmovl.u8 q8, d20 \n" /* B */ \
|
||||
"vmovl.u8 q9, d21 \n" /* G */ \
|
||||
"vmovl.u8 q10, d22 \n" /* R */ \
|
||||
"vmovl.u8 q11, d23 \n" /* A */ \
|
||||
"vshl.u16 q9, q9, #5 \n" /* G */ \
|
||||
"vshl.u16 q10, q10, #10 \n" /* R */ \
|
||||
"vshl.u16 q11, q11, #15 \n" /* A */ \
|
||||
"vorr q0, q8, q9 \n" /* BG */ \
|
||||
"vorr q1, q10, q11 \n" /* RA */ \
|
||||
"vorr q0, q0, q1 \n" /* BGRA */
|
||||
"vshll.u8 q0, d23, #8 \n" /* A */ \
|
||||
"vshll.u8 q8, d22, #8 \n" /* R */ \
|
||||
"vshll.u8 q9, d21, #8 \n" /* G */ \
|
||||
"vshll.u8 q10, d20, #8 \n" /* B */ \
|
||||
"vsri.16 q0, q8, #1 \n" /* AR */ \
|
||||
"vsri.16 q0, q9, #6 \n" /* ARG */ \
|
||||
"vsri.16 q0, q10, #11 \n" /* ARGB */
|
||||
|
||||
void I422ToARGB1555Row_NEON(const uint8* src_y,
|
||||
const uint8* src_u,
|
||||
|
||||
@ -323,8 +323,8 @@ void I422ToRGB24Row_NEON(const uint8* src_y,
|
||||
|
||||
#define ARGBTORGB565 \
|
||||
"shll v0.8h, v22.8b, #8 \n" /* R */ \
|
||||
"shll v20.8h, v20.8b, #8 \n" /* B */ \
|
||||
"shll v21.8h, v21.8b, #8 \n" /* G */ \
|
||||
"shll v20.8h, v20.8b, #8 \n" /* B */ \
|
||||
"sri v0.8h, v21.8h, #5 \n" /* RG */ \
|
||||
"sri v0.8h, v20.8h, #11 \n" /* RGB */
|
||||
|
||||
@ -363,8 +363,8 @@ void I422ToRGB565Row_NEON(const uint8* src_y,
|
||||
#define ARGBTOARGB1555 \
|
||||
"shll v0.8h, v23.8b, #8 \n" /* A */ \
|
||||
"shll v22.8h, v22.8b, #8 \n" /* R */ \
|
||||
"shll v20.8h, v20.8b, #8 \n" /* B */ \
|
||||
"shll v21.8h, v21.8b, #8 \n" /* G */ \
|
||||
"shll v20.8h, v20.8b, #8 \n" /* B */ \
|
||||
"sri v0.8h, v22.8h, #1 \n" /* AR */ \
|
||||
"sri v0.8h, v21.8h, #6 \n" /* ARG */ \
|
||||
"sri v0.8h, v20.8h, #11 \n" /* ARGB */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user