mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
FilterRows_NEON - remove unused function - same as InterpolateRow_NEON
- Bump version to 1872 - Add scale_rvv to build files Bug: libyuv:956 Change-Id: Ib9e9fd840a0774bd35bcdcca55a2596f33272383 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4608519 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
This commit is contained in:
parent
873eaa3bbf
commit
2a5d7e2fbc
@ -72,6 +72,7 @@ cc_library {
|
|||||||
"source/scale_neon.cc",
|
"source/scale_neon.cc",
|
||||||
"source/scale_neon64.cc",
|
"source/scale_neon64.cc",
|
||||||
"source/scale_rgb.cc",
|
"source/scale_rgb.cc",
|
||||||
|
"source/scale_rvv.cc",
|
||||||
"source/scale_uv.cc",
|
"source/scale_uv.cc",
|
||||||
"source/video_common.cc",
|
"source/video_common.cc",
|
||||||
],
|
],
|
||||||
|
|||||||
1
BUILD.gn
1
BUILD.gn
@ -142,6 +142,7 @@ static_library("libyuv_internal") {
|
|||||||
"source/scale_common.cc",
|
"source/scale_common.cc",
|
||||||
"source/scale_gcc.cc",
|
"source/scale_gcc.cc",
|
||||||
"source/scale_rgb.cc",
|
"source/scale_rgb.cc",
|
||||||
|
"source/scale_rvv.cc",
|
||||||
"source/scale_uv.cc",
|
"source/scale_uv.cc",
|
||||||
"source/scale_win.cc",
|
"source/scale_win.cc",
|
||||||
"source/video_common.cc",
|
"source/video_common.cc",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: http://code.google.com/p/libyuv/
|
URL: http://code.google.com/p/libyuv/
|
||||||
Version: 1871
|
Version: 1872
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,6 @@
|
|||||||
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
||||||
#define INCLUDE_LIBYUV_VERSION_H_
|
#define INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|
||||||
#define LIBYUV_VERSION 1871
|
#define LIBYUV_VERSION 1872
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_
|
#endif // INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|||||||
@ -1118,101 +1118,6 @@ void ScaleFilterCols_NEON(uint8_t* dst_ptr,
|
|||||||
|
|
||||||
#undef LOAD2_DATA8_LANE
|
#undef LOAD2_DATA8_LANE
|
||||||
|
|
||||||
// 16x2 -> 16x1
|
|
||||||
void ScaleFilterRows_NEON(uint8_t* dst_ptr,
|
|
||||||
const uint8_t* src_ptr,
|
|
||||||
ptrdiff_t src_stride,
|
|
||||||
int dst_width,
|
|
||||||
int source_y_fraction) {
|
|
||||||
int y_fraction = 256 - source_y_fraction;
|
|
||||||
asm volatile(
|
|
||||||
"cmp %w4, #0 \n"
|
|
||||||
"b.eq 100f \n"
|
|
||||||
"add %2, %2, %1 \n"
|
|
||||||
"cmp %w4, #64 \n"
|
|
||||||
"b.eq 75f \n"
|
|
||||||
"cmp %w4, #128 \n"
|
|
||||||
"b.eq 50f \n"
|
|
||||||
"cmp %w4, #192 \n"
|
|
||||||
"b.eq 25f \n"
|
|
||||||
|
|
||||||
"dup v5.8b, %w4 \n"
|
|
||||||
"dup v4.8b, %w5 \n"
|
|
||||||
// General purpose row blend.
|
|
||||||
"1: \n"
|
|
||||||
"ld1 {v0.16b}, [%1], #16 \n"
|
|
||||||
"ld1 {v1.16b}, [%2], #16 \n"
|
|
||||||
"subs %w3, %w3, #16 \n"
|
|
||||||
"umull v6.8h, v0.8b, v4.8b \n"
|
|
||||||
"umull2 v7.8h, v0.16b, v4.16b \n"
|
|
||||||
"prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead
|
|
||||||
"umlal v6.8h, v1.8b, v5.8b \n"
|
|
||||||
"umlal2 v7.8h, v1.16b, v5.16b \n"
|
|
||||||
"prfm pldl1keep, [%2, 448] \n"
|
|
||||||
"rshrn v0.8b, v6.8h, #8 \n"
|
|
||||||
"rshrn2 v0.16b, v7.8h, #8 \n"
|
|
||||||
"st1 {v0.16b}, [%0], #16 \n"
|
|
||||||
"b.gt 1b \n"
|
|
||||||
"b 99f \n"
|
|
||||||
|
|
||||||
// Blend 25 / 75.
|
|
||||||
"25: \n"
|
|
||||||
"ld1 {v0.16b}, [%1], #16 \n"
|
|
||||||
"ld1 {v1.16b}, [%2], #16 \n"
|
|
||||||
"subs %w3, %w3, #16 \n"
|
|
||||||
"urhadd v0.16b, v0.16b, v1.16b \n"
|
|
||||||
"prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead
|
|
||||||
"urhadd v0.16b, v0.16b, v1.16b \n"
|
|
||||||
"prfm pldl1keep, [%2, 448] \n"
|
|
||||||
"st1 {v0.16b}, [%0], #16 \n"
|
|
||||||
"b.gt 25b \n"
|
|
||||||
"b 99f \n"
|
|
||||||
|
|
||||||
// Blend 50 / 50.
|
|
||||||
"50: \n"
|
|
||||||
"ld1 {v0.16b}, [%1], #16 \n"
|
|
||||||
"ld1 {v1.16b}, [%2], #16 \n"
|
|
||||||
"subs %w3, %w3, #16 \n"
|
|
||||||
"prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead
|
|
||||||
"urhadd v0.16b, v0.16b, v1.16b \n"
|
|
||||||
"prfm pldl1keep, [%2, 448] \n"
|
|
||||||
"st1 {v0.16b}, [%0], #16 \n"
|
|
||||||
"b.gt 50b \n"
|
|
||||||
"b 99f \n"
|
|
||||||
|
|
||||||
// Blend 75 / 25.
|
|
||||||
"75: \n"
|
|
||||||
"ld1 {v1.16b}, [%1], #16 \n"
|
|
||||||
"ld1 {v0.16b}, [%2], #16 \n"
|
|
||||||
"subs %w3, %w3, #16 \n"
|
|
||||||
"urhadd v0.16b, v0.16b, v1.16b \n"
|
|
||||||
"prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead
|
|
||||||
"urhadd v0.16b, v0.16b, v1.16b \n"
|
|
||||||
"prfm pldl1keep, [%2, 448] \n"
|
|
||||||
"st1 {v0.16b}, [%0], #16 \n"
|
|
||||||
"b.gt 75b \n"
|
|
||||||
"b 99f \n"
|
|
||||||
|
|
||||||
// Blend 100 / 0 - Copy row unchanged.
|
|
||||||
"100: \n"
|
|
||||||
"ld1 {v0.16b}, [%1], #16 \n"
|
|
||||||
"subs %w3, %w3, #16 \n"
|
|
||||||
"prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead
|
|
||||||
"st1 {v0.16b}, [%0], #16 \n"
|
|
||||||
"b.gt 100b \n"
|
|
||||||
|
|
||||||
"99: \n"
|
|
||||||
"st1 {v0.b}[15], [%0] \n"
|
|
||||||
: "+r"(dst_ptr), // %0
|
|
||||||
"+r"(src_ptr), // %1
|
|
||||||
"+r"(src_stride), // %2
|
|
||||||
"+r"(dst_width), // %3
|
|
||||||
"+r"(source_y_fraction), // %4
|
|
||||||
"+r"(y_fraction) // %5
|
|
||||||
:
|
|
||||||
: "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "memory", "cc");
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
|
void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
|
||||||
ptrdiff_t src_stride,
|
ptrdiff_t src_stride,
|
||||||
uint8_t* dst,
|
uint8_t* dst,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user