Merge pull request #26396 from hanliutong:rvv-fp16-m2

Use LMUL=2 in the RISC-V Vector (RVV) FP16 part. (5.x)
This commit is contained in:
Alexander Smorkalov 2024-11-02 13:30:31 +03:00 committed by GitHub
commit 55105719dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 432 additions and 472 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1595,7 +1595,10 @@ transform_16u( const ushort* src, ushort* dst, const float* m, int len, int scn,
static void static void
transform_32f( const float* src, float* dst, const float* m, int len, int scn, int dcn ) transform_32f( const float* src, float* dst, const float* m, int len, int scn, int dcn )
{ {
#if (CV_SIMD || CV_SIMD_SCALABLE) && !defined(__aarch64__) && !defined(_M_ARM64) // Disabled for RISC-V Vector (scalable), because of:
// 1. v_matmuladd for RVV is 128-bit only but not scalable, this will fail the test `Core_Transform.accuracy`.
// 2. Both gcc and clang can autovectorize this, with better performance than using Universal intrinsic.
#if (CV_SIMD || CV_SIMD_SCALABLE) && !defined(__aarch64__) && !defined(_M_ARM64) && !(CV_TRY_RVV && CV_RVV)
int x = 0; int x = 0;
if( scn == 3 && dcn == 3 ) if( scn == 3 && dcn == 3 )
{ {