mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
core: remove raw SSE2/NEON implementation from convert.cpp (#9831)
* remove raw SSE2/NEON implementation from convert.cpp * remove raw implementation from Cvt_SIMD * remove raw implementation from cvtScale_SIMD * remove raw implementation from cvtScaleAbs_SIMD * remove duplicated implementation cvt_<float, short> * remove duplicated implementation cvtScale_<short, short, float> * add "from double" version of Cvt_SIMD * modify the condition of test ConvertScaleAbs * Update convert.cpp fixed crash in cvtScaleAbs(8s=>8u) * fixed compile error on Win32 * fixed several test failures because of accuracy loss in cvtScale(int=>int) * fixed NEON implementation of v_cvt_f64(int=>double) intrinsic * another attempt to fix test failures * keep trying to fix the test failures and just introduced compile warnings * fixed one remaining test (subtractScalar)
This commit is contained in:
parent
6cedc82799
commit
ca1a0a1108
@ -80,16 +80,18 @@ PERF_TEST_P(Size_MatType, absdiff, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: absdiff can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() absdiff(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, absdiffScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
@ -102,16 +104,18 @@ PERF_TEST_P(Size_MatType, absdiffScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: absdiff can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() absdiff(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, add, TYPICAL_MATS_CORE_ARITHM)
|
||||
@ -125,16 +129,18 @@ PERF_TEST_P(Size_MatType, add, TYPICAL_MATS_CORE_ARITHM)
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
declare.time(50);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: add can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() add(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, addScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
@ -147,16 +153,18 @@ PERF_TEST_P(Size_MatType, addScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: add can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() add(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, subtract, TYPICAL_MATS_CORE_ARITHM)
|
||||
@ -169,16 +177,18 @@ PERF_TEST_P(Size_MatType, subtract, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: subtract can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() subtract(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, subtractScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
@ -191,16 +201,18 @@ PERF_TEST_P(Size_MatType, subtractScalar, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
||||
declare.in(a, b, WARMUP_RNG).out(c);
|
||||
|
||||
double eps = 1e-8;
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: subtract can be without saturation on 32S
|
||||
a /= 2;
|
||||
b /= 2;
|
||||
eps = 1;
|
||||
}
|
||||
|
||||
TEST_CYCLE() subtract(a, b, c);
|
||||
|
||||
SANITY_CHECK(c, 1e-8);
|
||||
SANITY_CHECK(c, eps);
|
||||
}
|
||||
|
||||
PERF_TEST_P(Size_MatType, multiply, TYPICAL_MATS_CORE_ARITHM)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -806,6 +806,11 @@ struct ConvertScaleAbsOp : public BaseElemWiseOp
|
||||
{
|
||||
cvtest::add(src[0], alpha, Mat(), 0, Scalar::all(gamma[0]), dst, CV_8UC(src[0].channels()), true);
|
||||
}
|
||||
int getRandomType(RNG& rng)
|
||||
{
|
||||
return cvtest::randomType(rng, _OutputArray::DEPTH_MASK_ALL, 1,
|
||||
ninputs > 1 ? ARITHM_MAX_CHANNELS : 4);
|
||||
}
|
||||
double getMaxErr(int)
|
||||
{
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user