mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 08:46:47 +08:00
RVV disable 64 bit elements and vcombine_v
Bug: 405451074 Change-Id: I8e4437be92934b3c367c94d867d7967c32747260 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/6385788 Reviewed-by: Wan-Teh Chang <wtc@google.com>
This commit is contained in:
parent
0c07032182
commit
5f284054cb
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: https://chromium.googlesource.com/libyuv/libyuv/
|
||||
Version: 1906
|
||||
Version: 1907
|
||||
License: BSD-3-Clause
|
||||
License File: LICENSE
|
||||
Shipped: yes
|
||||
|
||||
@ -895,36 +895,73 @@ extern "C" {
|
||||
#define HAS_RAWTOYJROW_LASX
|
||||
#endif
|
||||
|
||||
#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic >= 12000 && \
|
||||
!defined(LIBYUV_DISABLE_RVV)
|
||||
#define LIBYUV_DISABLE_RVV 1
|
||||
#endif
|
||||
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector)
|
||||
#if __riscv_v_intrinsic > 11000
|
||||
#if defined(__riscv_v_intrinsic) && __riscv_v_intrinsic > 11000
|
||||
// Since v0.12, TUPLE_TYPE is introduced for segment load and store.
|
||||
#define LIBYUV_RVV_HAS_TUPLE_TYPE
|
||||
// Since v0.12, VXRM(fixed-point rounding mode) is included in arguments of
|
||||
// fixed-point intrinsics.
|
||||
#define LIBYUV_RVV_HAS_VXRM_ARG
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define HAS_COPYROW_RVV
|
||||
#define HAS_AB64TOARGBROW_RVV
|
||||
// The following are available for RVV 1.2
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector)
|
||||
#define HAS_ABGRTOYJROW_RVV
|
||||
#define HAS_ABGRTOYROW_RVV
|
||||
#define HAS_AR64TOARGBROW_RVV
|
||||
#define HAS_AR64TOAB64ROW_RVV
|
||||
#define HAS_ARGBATTENUATEROW_RVV
|
||||
#define HAS_ARGBBLENDROW_RVV
|
||||
#define HAS_ARGBCOPYYTOALPHAROW_RVV
|
||||
#define HAS_ARGBEXTRACTALPHAROW_RVV
|
||||
#define HAS_ARGBTOAB64ROW_RVV
|
||||
#define HAS_ARGBTOABGRROW_RVV
|
||||
#define HAS_ARGBTOAR64ROW_RVV
|
||||
#define HAS_ARGBTOBGRAROW_RVV
|
||||
#define HAS_ARGBTORAWROW_RVV
|
||||
#define HAS_ARGBTORGB24ROW_RVV
|
||||
#define HAS_ARGBTORGBAROW_RVV
|
||||
#define HAS_ARGBTOYJROW_RVV
|
||||
#define HAS_ARGBTOYMATRIXROW_RVV
|
||||
#define HAS_ARGBTOYROW_RVV
|
||||
#define HAS_BGRATOYROW_RVV
|
||||
#define HAS_COPYROW_RVV
|
||||
#define HAS_INTERPOLATEROW_RVV
|
||||
#define HAS_RAWTOYJROW_RVV
|
||||
#define HAS_RAWTOYROW_RVV
|
||||
#define HAS_RGB24TOYJROW_RVV
|
||||
#define HAS_RGB24TOYROW_RVV
|
||||
#define HAS_RGBATOYJROW_RVV
|
||||
#define HAS_RGBATOYMATRIXROW_RVV
|
||||
#define HAS_RGBATOYROW_RVV
|
||||
#define HAS_RGBTOYMATRIXROW_RVV
|
||||
#define HAS_SPLITARGBROW_RVV
|
||||
#define HAS_SPLITRGBROW_RVV
|
||||
#define HAS_SPLITUVROW_RVV
|
||||
#define HAS_SPLITXRGBROW_RVV
|
||||
#endif
|
||||
|
||||
// The following are available for RVV 1.1
|
||||
// TODO(fbarchard): Port to RVV 1.2 (tuple)
|
||||
// missing support for vcreate_v:
|
||||
// __riscv_vcreate_v_u16m2x2
|
||||
// __riscv_vcreate_v_u16m2x4
|
||||
// __riscv_vcreate_v_u16m4x2
|
||||
// __riscv_vcreate_v_u8m1x3
|
||||
// __riscv_vcreate_v_u8m1x4
|
||||
// __riscv_vcreate_v_u8m2x2
|
||||
// __riscv_vcreate_v_u8m2x3
|
||||
// __riscv_vcreate_v_u8m2x4
|
||||
// __riscv_vcreate_v_u8m4x2
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
|
||||
!defined(LIBYUV_RVV_HAS_TUPLE_TYPE)
|
||||
#define HAS_AB64TOARGBROW_RVV
|
||||
#define HAS_AR64TOAB64ROW_RVV
|
||||
#define HAS_ARGBATTENUATEROW_RVV
|
||||
#define HAS_ARGBBLENDROW_RVV
|
||||
#define HAS_ARGBTOAB64ROW_RVV
|
||||
#define HAS_ARGBTOABGRROW_RVV
|
||||
#define HAS_ARGBTOBGRAROW_RVV
|
||||
#define HAS_ARGBTORAWROW_RVV
|
||||
#define HAS_ARGBTORGB24ROW_RVV
|
||||
#define HAS_ARGBTORGBAROW_RVV
|
||||
#define HAS_BLENDPLANEROW_RVV
|
||||
#define HAS_I400TOARGBROW_RVV
|
||||
#define HAS_I422ALPHATOARGBROW_RVV
|
||||
@ -934,7 +971,6 @@ extern "C" {
|
||||
#define HAS_I444ALPHATOARGBROW_RVV
|
||||
#define HAS_I444TOARGBROW_RVV
|
||||
#define HAS_I444TORGB24ROW_RVV
|
||||
#define HAS_INTERPOLATEROW_RVV
|
||||
#define HAS_J400TOARGBROW_RVV
|
||||
#define HAS_MERGEARGBROW_RVV
|
||||
#define HAS_MERGERGBROW_RVV
|
||||
@ -947,20 +983,8 @@ extern "C" {
|
||||
#define HAS_RAWTOARGBROW_RVV
|
||||
#define HAS_RAWTORGB24ROW_RVV
|
||||
#define HAS_RAWTORGBAROW_RVV
|
||||
#define HAS_RAWTOYJROW_RVV
|
||||
#define HAS_RAWTOYROW_RVV
|
||||
#define HAS_RGB24TOARGBROW_RVV
|
||||
#define HAS_RGB24TOYJROW_RVV
|
||||
#define HAS_RGB24TOYROW_RVV
|
||||
#define HAS_RGBATOARGBROW_RVV
|
||||
#define HAS_RGBATOYJROW_RVV
|
||||
#define HAS_RGBATOYMATRIXROW_RVV
|
||||
#define HAS_RGBATOYROW_RVV
|
||||
#define HAS_RGBTOYMATRIXROW_RVV
|
||||
#define HAS_SPLITARGBROW_RVV
|
||||
#define HAS_SPLITRGBROW_RVV
|
||||
#define HAS_SPLITUVROW_RVV
|
||||
#define HAS_SPLITXRGBROW_RVV
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
|
||||
|
||||
@ -162,39 +162,49 @@ extern "C" {
|
||||
#define HAS_SCALEROWDOWN34_LSX
|
||||
#endif
|
||||
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector)
|
||||
#define HAS_SCALEADDROW_RVV
|
||||
// TODO: Test ScaleARGBRowDownEven_RVV and enable it
|
||||
// #define HAS_SCALEARGBROWDOWNEVEN_RVV
|
||||
#if defined(__riscv_zve64x)
|
||||
// The following are available on RVV with 64 bit elements
|
||||
// TODO: Update compiler to support 64 bit
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
|
||||
defined(__riscv_zve64x)
|
||||
#define HAS_SCALEUVROWDOWN4_RVV
|
||||
#endif
|
||||
#define HAS_SCALEUVROWDOWNEVEN_RVV
|
||||
#if __riscv_v_intrinsic == 11000
|
||||
#define HAS_SCALEARGBFILTERCOLS_RVV
|
||||
#endif
|
||||
#define HAS_SCALEARGBROWDOWN2_RVV
|
||||
#endif
|
||||
|
||||
// The following are available on RVV 1.1
|
||||
// TODO: Port to RVV 1.2
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
|
||||
defined(__riscv_v_intrinsic) && __riscv_v_intrinsic == 11000
|
||||
#define HAS_SCALEROWDOWN34_0_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN34_1_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN38_2_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN38_3_BOX_RVV
|
||||
#define HAS_SCALEUVROWUP2_BILINEAR_RVV
|
||||
#define HAS_SCALEUVROWUP2_LINEAR_RVV
|
||||
#define HAS_SCALEROWDOWN34_RVV
|
||||
#define HAS_SCALEROWDOWN38_RVV
|
||||
#define HAS_SCALEROWUP2_BILINEAR_RVV
|
||||
#define HAS_SCALEROWUP2_LINEAR_RVV
|
||||
#endif
|
||||
|
||||
// The following are available on RVV
|
||||
#if !defined(LIBYUV_DISABLE_RVV) && defined(__riscv_vector) && \
|
||||
defined(__riscv_v_intrinsic) && __riscv_v_intrinsic == 11000
|
||||
#define HAS_SCALEARGBFILTERCOLS_RVV
|
||||
#define HAS_SCALEARGBROWDOWN2BOX_RVV
|
||||
#define HAS_SCALEARGBROWDOWN2LINEAR_RVV
|
||||
#define HAS_SCALEARGBROWDOWNEVENBOX_RVV
|
||||
#define HAS_SCALEROWDOWN2_RVV
|
||||
#define HAS_SCALEROWDOWN2BOX_RVV
|
||||
#define HAS_SCALEADDROW_RVV
|
||||
// TODO: Test ScaleARGBRowDownEven_RVV and enable it
|
||||
// #define HAS_SCALEARGBROWDOWNEVEN_RVV
|
||||
#define HAS_SCALEUVROWDOWNEVEN_RVV
|
||||
#define HAS_SCALEROWDOWN2_RVV
|
||||
#define HAS_SCALEROWDOWN2LINEAR_RVV
|
||||
#define HAS_SCALEROWDOWN34_0_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN34_1_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN34_RVV
|
||||
#define HAS_SCALEROWDOWN38_2_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN38_3_BOX_RVV
|
||||
#define HAS_SCALEROWDOWN38_RVV
|
||||
#define HAS_SCALEROWDOWN4_RVV
|
||||
#define HAS_SCALEROWDOWN4BOX_RVV
|
||||
#define HAS_SCALEROWUP2_BILINEAR_RVV
|
||||
#define HAS_SCALEROWUP2_LINEAR_RVV
|
||||
#define HAS_SCALEUVROWDOWN2_RVV
|
||||
#define HAS_SCALEUVROWDOWN2BOX_RVV
|
||||
#define HAS_SCALEUVROWDOWN2LINEAR_RVV
|
||||
#define HAS_SCALEUVROWUP2_BILINEAR_RVV
|
||||
#define HAS_SCALEUVROWUP2_LINEAR_RVV
|
||||
#endif
|
||||
|
||||
// Scale ARGB vertically with bilinear interpolation.
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 1906
|
||||
#define LIBYUV_VERSION 1907
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
@ -139,7 +139,9 @@ static void ScaleARGBDown2(int src_width,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBROWDOWN2_RVV)
|
||||
#if defined(HAS_SCALEARGBROWDOWN2_RVV) && \
|
||||
defined(HAS_SCALEARGBROWDOWN2LINEAR_RVV) && \
|
||||
defined(HAS_SCALEARGBROWDOWN2BOX_RVV)
|
||||
if (TestCpuFlag(kCpuHasRVV)) {
|
||||
ScaleARGBRowDown2 =
|
||||
filtering == kFilterNone
|
||||
@ -215,7 +217,7 @@ static int ScaleARGBDown4Box(int src_width,
|
||||
ScaleARGBRowDown2 = ScaleARGBRowDown2Box_SME;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEARGBROWDOWN2_RVV)
|
||||
#if defined(HAS_SCALEARGBROWDOWN2BOX_RVV)
|
||||
if (TestCpuFlag(kCpuHasRVV)) {
|
||||
ScaleARGBRowDown2 = ScaleARGBRowDown2Box_RVV;
|
||||
}
|
||||
|
||||
@ -95,6 +95,7 @@ void ScaleAddRow_RVV(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width) {
|
||||
#endif
|
||||
|
||||
#ifdef HAS_SCALEARGBROWDOWN2_RVV
|
||||
// TODO: Reimplement similar to linear with vlseg2 so u64 is not required
|
||||
void ScaleARGBRowDown2_RVV(const uint8_t* src_argb,
|
||||
ptrdiff_t src_stride,
|
||||
uint8_t* dst_argb,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user