mirror of
https://github.com/opencv/opencv.git
synced 2026-11-09 18:04:29 -06:00
Merge pull request #30152 from tandede:fix/armv7-gemm-fp64-guard
core: guard FP64 GEMM SIMD paths on ARMv7 🤖🤖🤖
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user