Merge pull request #30152 from tandede:fix/armv7-gemm-fp64-guard

core: guard FP64 GEMM SIMD paths on ARMv7 🤖🤖🤖
This commit is contained in:
Alexander Smorkalov
2026-10-06 10:13:31 +03:00
committed by GitHub

View File

@@ -620,17 +620,13 @@ GEMMSingleMul( const T* a_data, size_t a_step,
{
WT s0(0);
k = 0;
#if CV_SIMD
#if CV_SIMD_64F
if( sizeof(WT) == sizeof(double) )
{
#if CV_SIMD_64F
if( sizeof(T) == sizeof(double) )
s0 = (WT)simdDotProduct((const double*)a_data, (const double*)b_data, n, k);
else if( sizeof(T) == sizeof(float) )
s0 = (WT)simdDotProduct_f32f64((const float*)a_data, (const float*)b_data, n, k);
else
#endif
s0 = (WT)simdDotProduct((const float*)a_data, (const float*)b_data, n, k);
}
else
#endif
@@ -674,10 +670,9 @@ GEMMSingleMul( const T* a_data, size_t a_step,
}
j = 0;
#if CV_SIMD
#if CV_SIMD_64F
if( sizeof(WT) == sizeof(double) )
{
#if CV_SIMD_64F
if( sizeof(T) == sizeof(double) )
simdGEMM_kj((const double*)a_data, (const double*)_b_data, b_step,
(const double*)_c_data, c_step1,
@@ -686,11 +681,6 @@ GEMMSingleMul( const T* a_data, size_t a_step,
simdGEMM_kj_f32f64((const float*)a_data, (const float*)_b_data, b_step,
(const float*)_c_data, c_step1,
(float*)d_data, n, m, alpha, beta, j);
else
#endif
simdGEMM_kj((const float*)a_data, (const float*)_b_data, b_step,
(const float*)_c_data, c_step1,
(float*)d_data, n, m, alpha, beta, j);
}
#endif
c_data = _c_data + j * c_step1;
@@ -954,17 +944,13 @@ GEMMBlockMul( const T* a_data, size_t a_step,
{
WT s0 = do_acc ? d_data[j] : WT(0);
k = 0;
#if CV_SIMD
#if CV_SIMD_64F
if( sizeof(WT) == sizeof(double) )
{
#if CV_SIMD_64F
if( sizeof(T) == sizeof(double) )
s0 += (WT)simdDotProduct((const double*)a_data, (const double*)b_data, n, k);
else if( sizeof(T) == sizeof(float) )
s0 += (WT)simdDotProduct_f32f64((const float*)a_data, (const float*)b_data, n, k);
else
#endif
s0 += (WT)simdDotProduct((const float*)a_data, (const float*)b_data, n, k);
}
else
#endif