Alexander Alekhin
6a7d1c15d3
core(ipp): skip huge input in flip()
...
- IPP/SSE4.2 works well
2019-10-14 18:26:19 +03:00
Sayed Adel
f2fe6f40c2
Merge pull request #15510 from seiko2plus:issue15506
...
* core: rework and optimize SIMD implementation of dotProd
- add new universal intrinsics v_dotprod[int32], v_dotprod_expand[u&int8, u&int16, int32], v_cvt_f64(int64)
- add a boolean param for all v_dotprod&_expand intrinsics that change the behavior of addition order between
pairs in some platforms in order to reach the maximum optimization when the sum among all lanes is what only matters
- fix clang build on ppc64le
- support wide universal intrinsics for dotProd_32s
- remove raw SIMD and activate universal intrinsics for dotProd_8
- implement SIMD optimization for dotProd_s16&u16
- extend performance test data types of dotprod
- fix GCC VSX workaround of vec_mule and vec_mulo (in little-endian it must be swapped)
- optimize v_mul_expand(int32) on VSX
* core: remove boolean param from v_dotprod&_expand and implement v_dotprod_fast&v_dotprod_expand_fast
this changes made depend on "terfendail" review
2019-10-07 22:01:35 +03:00
Alexander Alekhin
fcc69d5a60
core(test): fix check conditions
2019-09-22 11:28:41 +00:00
Vitaly Tuzov
d134ec54c5
Extend tests for v_check_any and v_check_all intrinsics
2019-08-28 14:53:31 +03:00
luz.paz
fcc7d8dd4e
Fix modules/ typos
...
Found using `codespell -q 3 -S ./3rdparty -L activ,amin,ang,atleast,childs,dof,endwhile,halfs,hist,iff,nd,od,uint`
backporting of commit: ec43292e1e
2019-08-16 17:34:29 +03:00
Alexander Alekhin
13ecd5bb25
Merge pull request #15122 from pmur:fast-math-improvements
2019-08-14 19:28:05 +00:00
Alexander Alekhin
32772a5436
3.4: backported changes from 'master' branch
2019-08-14 16:36:08 +03:00
Alexander Alekhin
15b8a8d935
build: eliminate warnings with Xcode 10.3
2019-08-13 15:06:13 +03:00
Paul E. Murphy
b2135be594
fast_math: add extra perf/unit tests
...
Add a basic sanity test to verify the rounding functions
work as expected.
Likewise, extend the rounding performance test to cover the
additional float -> int fast math functions.
2019-08-07 14:59:46 -05:00
Alexander Alekhin
4ea8526e9f
core(persistence): fix writeRaw() / readRaw() struct support
...
- writeRaw(): support structs
- readRaw(): 'len' is buffer limit in bytes (documentation is fixed)
2019-07-16 14:03:39 +03:00
Alexander Alekhin
c3b838b738
core(persistence): struct storage layout without alignment gaps
2019-07-15 21:37:20 +00:00
Alexander Alekhin
6d916c5bb4
Merge pull request #14440 from alalek:async_array
2019-06-08 20:57:15 +00:00
Vitaly Tuzov
3b015dfc7d
Merge pull request #14210 from terfendail:wui_512
...
AVX512 wide universal intrinsics (#14210 )
* Added implementation of 512-bit wide universal intrinsics(WIP)
* Added implementation of 512-bit wide universal intrinsics: implemented WUI vector types(WIP)
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented load/store
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented fp16 load/store
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented recombine and zip, implemented non-saturating and saturating arithmetics
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented bit operations
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented comparisons
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented lane shifts and reduction
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented absolute values
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented rounding and cast to float
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented LUT
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented type extension/narrowing and matrix operations
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented load_deinterleave for 2 and 3 channels images
* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented load_deinterleave for 2- and implemented for 4-channel images
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented store_interleave
* Added implementation of 512-bit wide universal intrinsics(WIP): implemented signmask and checks
* Added implementation of 512-bit wide universal intrinsics(WIP): build fixes
* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented popcount in case AVX512_BITALG is unavailable
* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented zip
* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented rotate for s8 and s16
* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented interleave/deinterleave for s8 and s16
* Added implementation of 512-bit wide universal intrinsics(WIP): updated v512_set macros
* Added implementation of 512-bit wide universal intrinsics(WIP): fix for GCC wrong _mm512_abs_pd definition
* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_zip to avoid AVX512_VBMI intrinsics
* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_invsqrt to avoid AVX512_ER intrinsics
* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_rotate, v_popcount and interleave/deinterleave for U8 to avoid AVX512_VBMI intrinsics
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed integral image SIMD part
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed warnings
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed load_deinterleave for u8 and u16
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed v_invsqrt accuracy for f64
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed interleave/deinterleave for u32 and u64
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed interleave_pairs, interleave_quads and pack_triplets
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed rotate_left
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed rotate_left/right, part 2
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed 512-wide universal intrinsics based resize
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed findContours by avoiding use of uint64 dependent 512-wide v_signmask()
* Added implementation of 512-bit wide universal intrinsics(WIP): fixed trailing whitespaces
* Added implementation of 512-bit wide universal intrinsics(WIP): reworked specific intrinsic sets dependent parts to check availability of intrinsics based on CPU feature group defines
* Added implementation of 512-bit wide universal intrinsics(WIP):Updated AVX512 implementation of v_popcount to avoid AVX512VPOPCNTDQ intrinsics if unavailable.
* Added implementation of 512-bit wide universal intrinsics(WIP): Fixed universal intrinsics data initialisation, v_mul_wrap, v_floor, v_ceil and v_signmask.
* Added implementation of 512-bit wide universal intrinsics(WIP): Removed hasSIMD512()
* Added implementation of 512-bit wide universal intrinsics(WIP): Fixes for gcc build
* Added implementation of 512-bit wide universal intrinsics(WIP): Reworked v_signmask, v_check_any() and v_check_all() implementation.
2019-06-03 18:05:35 +03:00
Vitaly Tuzov
723165f878
fix for AVX2 version of v_reduce_min intrinsic
2019-05-31 16:14:54 +03:00
Vitaly Tuzov
f0fb91f2d4
Fixed v_signmask implementation for AVX2, updated universal intrinsics tests.
2019-05-24 19:34:54 +03:00
Alexander Alekhin
9340af1a8a
core: Async API / AsyncArray
2019-05-18 19:32:23 +00:00
Vitaly Tuzov
1220dd4877
Updated v_popcount description, reference implementation and test.
2019-05-14 18:59:40 +03:00
Vitaly Tuzov
18d10d6b86
Fixed v_reduce_sad intrinsics implementation and added tests
2019-04-24 14:53:59 +03:00
Alexander Alekhin
d6b82dcd65
Merge pull request #14162 from alalek:eliminate_coverity_scan_issues
...
core: eliminate coverity scan issues (#14162 )
* core(hal): avoid using of r,g,b,a parameters in interleave/deinterleave
- static analysis tools blame on possible parameters reordering
- align AVX parameters with corresponding SSE/NEO/VSX/cpp code
* core: avoid "i,j" parameters in Matx methods
- static analysis tools blame on possible parameters reordering
* core: resolve coverity scan issues
2019-03-27 15:48:00 +03:00
Alexander Alekhin
93a402d0f2
core: fix Core_EigenNonSymmetric.convergence test
2019-03-19 15:18:43 +03:00
Alexander Alekhin
a7c4ee9ae1
core: add iterations limit check in eigenNonSymmetric()
2019-03-18 17:49:17 +03:00
Alexander Alekhin
7366eebebb
core: fix condition in OutputArray::create(allowTransposed=True)
2019-03-05 16:26:59 +03:00
berak
20afae5a14
core: fix mat matx multiplication
2019-02-28 14:22:54 +01:00
Alexander Alekhin
dc5e69b4d4
Revert "Merge pull request #13586 from eightco:Core_bugfix3"
...
This reverts commit 3721c8bb06
except changes in modules/dnn/test/test_tf_importer.cpp
2019-01-18 18:29:12 +03:00
Lee Jaehwan
3721c8bb06
Merge pull request #13586 from eightco:Core_bugfix3
...
* Add Operator override for multi-channel Mat with literal constant.
* simple test
* Operator overloading channel constraint for primitive types
* fix some test for #13586
2019-01-17 17:23:09 +03:00
Lee Jaehwan
71aee662bd
Merge pull request #13544 from eightco:bugfix
...
Fix a bug in cv :: merge when array of 3-channel mat is input (#13544 )
* Mat merge function bug fix - Bug fix of merge function of 3-channel vector <Mat> of 3 or 4 matrices
* Add Core_merge test for opencv#13544
* fixups
2019-01-04 15:10:50 +03:00
Vitaly Tuzov
cd169941f2
Added test for addition of Mat and Matx
2018-12-25 19:22:04 +03:00
Alexander Alekhin
f605898bae
core: fix eigen2cv() - don't change fixed type of 'dst'
2018-12-16 06:43:08 +00:00
1over
b6367f5821
fixed operator- for Rect
2018-11-20 00:48:17 +01:00
Alexander Alekhin
2fa9bd221d
core: add utils::findDataFile() / samples::findFile()
2018-11-16 00:25:06 +00:00
Dmitry Kurtaev
6c76c8f881
Add a test for FileNode::keys()
2018-11-12 13:38:18 +03:00
Alexander Alekhin
96ee83898d
core(test): extend divideByZero test
...
to verify SIMD code path
2018-11-10 22:17:19 +00:00
Alexander Alekhin
596ada51f3
Merge pull request #13080 from alalek:issue_13078
2018-11-09 13:20:27 +00:00
Alexander Alekhin
5059523937
core: fix processing of vector-rows
2018-11-08 20:04:22 +03:00
Sayed Adel
93ffebc273
core: reimplement SIMD arithmetic, logic and comparison operations into wide universal intrinsics
...
- initialize arithmetic dispatcher
- add new universal intrinsic v_absdiffs
- add new universal intrinsic v_pack_b
- add accumulate version of universal intrinsic v_round
- fix sse/avx2:uint8 multiplication overflow
- reimplement arithmetic, logic and comparison operations into wide universal intrinsics
with full support for all types
- reimplement IPP arithmetic, logic and comparison operations in a sperate file arithm_ipp.hpp
- avoid scalar multiplication if scaling factor eq 1 and use integer multiplication
- move C arithmetic operations to precomp.hpp and delete [arithm_simd|arithm_core].hpp
- add compatibility with new opencv4 divide policy
2018-10-30 12:48:31 +02:00
maver1
e397434cb6
Merge pull request #12877 from maver1:3.4
...
* Updated ICV packages and IPP integration
* core(test): minMaxIdx IPP regression test
* core(ipp): workaround minMaxIdx problem
* core(ipp): workaround meanStdDev() CV_32FC3 buffer overrun
* Returned semicolon after CV_INSTRUMENT_REGION_IPP()
2018-10-24 15:02:53 +03:00
Michał Janiszewski
c8e6ce304f
Catch exceptions by const-reference
...
Exceptions caught by value incur needless cost in C++, most of them can
be caught by const-reference, especially as nearly none are actually
used. This could allow compiler generate a slightly more efficient code.
2018-10-16 22:43:54 +02:00
Alexander Alekhin
72eccb7694
Merge pull request #12825 from alalek:issue_8413_3.4
2018-10-15 14:23:21 +00:00
Alexander Alekhin
1cc3f7abbb
Merge pull request #12516 from seiko2plus:changeUnvMultiply16
2018-10-15 12:07:40 +00:00
Alexander Alekhin
5677a683a5
core(test): zero values divide test (3.x)
2018-10-14 02:23:17 +00:00
Sayed Adel
5771fd693d
Change behaviour of 16-bit multiply operator
...
- redefine 16-bit multiply operator to perform saturating multiply
instead of non-saturating multiply
- implement 8-bit multiply operator to perform saturating multiply
- implement v_mul_wrap() for 8-bit, 16-bit non-saturating multiply
- improve performance of v_mul_hi() for VSX
- update intrin tests with new changes
- replace unv 16-bit multiplication operator with v_mul_wrap due behavior changes
- Several improvements depend on vpisarev review
* initial forward declarations for universal intrinsics
* move emulating SSE intrinsics into separate file
* implement v_mul_expand for 8-bit
* reimplement saturating multiply using v_mul_expand + v_pack
* map v_expand, v_load_expand, v_load_expand_q to sse4.1
* fix overflow avx2::v_pack(uint32)
* implement two universal intrinsics v_expand_low and v_expand_high
2018-10-11 04:35:39 +02:00
Vitaly Tuzov
1ff11c84ab
Fixed meanStdDev() implementation for the case input matrix has more than 4 channels
2018-10-11 04:30:33 +02:00
Alexander Alekhin
48e8e76a34
fix build warnings
2018-09-27 16:31:31 +03:00
Dmitry Kurtaev
24ab751547
Merge pull request #12565 from dkurt:dnn_non_intel_gpu
...
* Remove isIntel check from deep learning layers
* Remove fp16->fp32 fallbacks where it's not necessary
* Fix Kernel::run to prevent localsize > globalsize
2018-09-26 16:27:00 +03:00
Vitaly Tuzov
2f929376ec
Fixed meanStdDev() implementation for the case input matrix has more than 4 channels
2018-09-10 20:05:45 +03:00
Hamdi Sahloul
a39e0daacf
Utilize CV_UNUSED macro
2018-09-07 20:33:52 +09:00
Alexander Alekhin
f1f15841d7
Merge pull request #11630 from alalek:c_api_eliminate_constructors
2018-09-06 20:07:16 +00:00
Vadim Pisarevsky
80b62a41c6
Merge pull request #12411 from vpisarev:wide_convert
...
* rewrote Mat::convertTo() and convertScaleAbs() to wide universal intrinsics; added always-available and SIMD-optimized FP16<=>FP32 conversion
* fixed compile warnings
* fix some more compile errors
* slightly relaxed accuracy threshold for int->float conversion (since we now do it using single-precision arithmetics, not double-precision)
* fixed compile errors on iOS, Android and in the baseline C++ version (intrin_cpp.hpp)
* trying to fix ARM-neon builds
* trying to fix ARM-neon builds
* trying to fix ARM-neon builds
* trying to fix ARM-neon builds
2018-09-06 19:36:59 +03:00
Alexander Alekhin
8a3c394d6a
don't use constructors for C API structures
2018-09-06 14:34:16 +03:00
Alexander Alekhin
a0f86479e0
core: wrap custom types via _RawArray (raw() call)
...
- support passing of `std::vector<KeyPoint>` via InputArray
2018-09-03 18:41:48 +00:00