#include <limits>
#include <cstring>
#include <algorithm>
#include "opencv2/core/utility.hpp"
#include "opencv2/core/saturate.hpp"
Classes | |
struct | cv::v_reg< _Tp, n > |
Namespaces | |
namespace | cv |
"black box" representation of the file storage associated with a file on disk. | |
Macros | |
#define | OPENCV_HAL_IMPL_ARITHM_OP(func, bin_op, cast_op, _Tp2) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_INIT_VAL(_Tpvec, _Tp, prefix, suffix) inline _Tpvec prefix##_setall_##suffix(_Tp val) { return _Tpvec::all(val); } |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_INIT_ZERO(_Tpvec, prefix, suffix) inline _Tpvec prefix##_setzero_##suffix() { return _Tpvec::zero(); } |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_PACK(_Tp, _Tpn, pack_suffix, cast) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_PACK_STORE(_Tp, _Tpn, pack_suffix, cast) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_REINTERPRET(_Tp, suffix) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_RSHIFTR(_Tp) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_RSHR_PACK(_Tp, _Tpn, pack_suffix, cast) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(_Tp, _Tpn, pack_suffix, cast) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_SHIFTL(_Tp) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_C_SHIFTR(_Tp) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_CMP_OP(cmp_op) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_MATH_FUNC(func, cfunc, _Tp2) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_MINMAX_FUNC(func, cfunc) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_REDUCE_MINMAX_FUNC(func, cfunc) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(suffix, opA, opB) |
Helper macro. | |
#define | OPENCV_HAL_IMPL_SHIFT_OP(shift_op) |
Helper macro. | |
Typedefs | |
typedef v_reg< float, 16 > | cv::v_float32x16 |
Sixteen 32-bit floating point values (single precision) | |
typedef v_reg< float, 4 > | cv::v_float32x4 |
Four 32-bit floating point values (single precision) | |
typedef v_reg< float, 8 > | cv::v_float32x8 |
Eight 32-bit floating point values (single precision) | |
typedef v_reg< double, 2 > | cv::v_float64x2 |
Two 64-bit floating point values (double precision) | |
typedef v_reg< double, 4 > | cv::v_float64x4 |
Four 64-bit floating point values (double precision) | |
typedef v_reg< double, 8 > | cv::v_float64x8 |
Eight 64-bit floating point values (double precision) | |
typedef v_reg< short, 16 > | cv::v_int16x16 |
Sixteen 16-bit signed integer values. | |
typedef v_reg< short, 32 > | cv::v_int16x32 |
Thirty two 16-bit signed integer values. | |
typedef v_reg< short, 8 > | cv::v_int16x8 |
Eight 16-bit signed integer values. | |
typedef v_reg< int, 16 > | cv::v_int32x16 |
Sixteen 32-bit signed integer values. | |
typedef v_reg< int, 4 > | cv::v_int32x4 |
Four 32-bit signed integer values. | |
typedef v_reg< int, 8 > | cv::v_int32x8 |
Eight 32-bit signed integer values. | |
typedef v_reg< int64, 2 > | cv::v_int64x2 |
Two 64-bit signed integer values. | |
typedef v_reg< int64, 4 > | cv::v_int64x4 |
Four 64-bit signed integer values. | |
typedef v_reg< int64, 8 > | cv::v_int64x8 |
Eight 64-bit signed integer values. | |
typedef v_reg< schar, 16 > | cv::v_int8x16 |
Sixteen 8-bit signed integer values. | |
typedef v_reg< schar, 32 > | cv::v_int8x32 |
Thirty two 8-bit signed integer values. | |
typedef v_reg< schar, 64 > | cv::v_int8x64 |
Sixty four 8-bit signed integer values. | |
typedef v_reg< ushort, 16 > | cv::v_uint16x16 |
Sixteen 16-bit unsigned integer values. | |
typedef v_reg< ushort, 32 > | cv::v_uint16x32 |
Thirty two 16-bit unsigned integer values. | |
typedef v_reg< ushort, 8 > | cv::v_uint16x8 |
Eight 16-bit unsigned integer values. | |
typedef v_reg< unsigned, 16 > | cv::v_uint32x16 |
Sixteen 32-bit unsigned integer values. | |
typedef v_reg< unsigned, 4 > | cv::v_uint32x4 |
Four 32-bit unsigned integer values. | |
typedef v_reg< unsigned, 8 > | cv::v_uint32x8 |
Eight 32-bit unsigned integer values. | |
typedef v_reg< uint64, 2 > | cv::v_uint64x2 |
Two 64-bit unsigned integer values. | |
typedef v_reg< uint64, 4 > | cv::v_uint64x4 |
Four 64-bit unsigned integer values. | |
typedef v_reg< uint64, 8 > | cv::v_uint64x8 |
Eight 64-bit unsigned integer values. | |
typedef v_reg< uchar, 16 > | cv::v_uint8x16 |
Sixteen 8-bit unsigned integer values. | |
typedef v_reg< uchar, 32 > | cv::v_uint8x32 |
Thirty two 8-bit unsigned integer values. | |
typedef v_reg< uchar, 64 > | cv::v_uint8x64 |
Sixty four 8-bit unsigned integer values. | |
Enumerations | |
enum | { cv::simd128_width = 16 , cv::simd256_width = 32 , cv::simd512_width = 64 , cv::simdmax_width = simd512_width } |
Functions | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator!= (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Not equal comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator& (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Bitwise AND. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator&= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator* (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Multiply values. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator*= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator+ (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Add values. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator+= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator- (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Subtract values. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator-= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator/ (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Divide values. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator/= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator< (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Less-than comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator<< (const v_reg< _Tp, n > &a, int imm) |
Bitwise shift left. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator<= (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Less-than or equal comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator== (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Equal comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator> (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Greater-than comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator>= (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Greater-than or equal comparison. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator>> (const v_reg< _Tp, n > &a, int imm) |
Bitwise shift right. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator^ (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Bitwise XOR. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator^= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator| (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Bitwise OR. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > & | cv::operator|= (v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::operator~ (const v_reg< _Tp, n > &a) |
Bitwise NOT. | |
void | cv::v256_cleanup () |
template<typename _Tp > | |
v_reg< _Tp, simd256_width/sizeof(_Tp)> | cv::v256_load (const _Tp *ptr) |
Load 256-bit length register contents from memory. | |
template<typename _Tp > | |
v_reg< _Tp, simd256_width/sizeof(_Tp)> | cv::v256_load_aligned (const _Tp *ptr) |
Load register contents from memory (aligned) | |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::w_type, simd256_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> | cv::v256_load_expand (const _Tp *ptr) |
Load register contents from memory with double expand. | |
v_reg< float, simd256_width/sizeof(float)> | cv::v256_load_expand (const float16_t *ptr) |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::q_type, simd256_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> | cv::v256_load_expand_q (const _Tp *ptr) |
Load register contents from memory with quad expand. | |
template<typename _Tp > | |
v_reg< _Tp, simd256_width/sizeof(_Tp)> | cv::v256_load_halves (const _Tp *loptr, const _Tp *hiptr) |
Load register contents from two memory blocks. | |
template<typename _Tp > | |
v_reg< _Tp, simd256_width/sizeof(_Tp)> | cv::v256_load_low (const _Tp *ptr) |
Load 128-bits of data to lower part (high part is undefined). | |
void | cv::v512_cleanup () |
template<typename _Tp > | |
v_reg< _Tp, simd512_width/sizeof(_Tp)> | cv::v512_load (const _Tp *ptr) |
Load 512-bit length register contents from memory. | |
template<typename _Tp > | |
v_reg< _Tp, simd512_width/sizeof(_Tp)> | cv::v512_load_aligned (const _Tp *ptr) |
Load register contents from memory (aligned) | |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::w_type, simd512_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> | cv::v512_load_expand (const _Tp *ptr) |
Load register contents from memory with double expand. | |
v_reg< float, simd512_width/sizeof(float)> | cv::v512_load_expand (const float16_t *ptr) |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::q_type, simd512_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> | cv::v512_load_expand_q (const _Tp *ptr) |
Load register contents from memory with quad expand. | |
template<typename _Tp > | |
v_reg< _Tp, simd512_width/sizeof(_Tp)> | cv::v512_load_halves (const _Tp *loptr, const _Tp *hiptr) |
Load register contents from two memory blocks. | |
template<typename _Tp > | |
v_reg< _Tp, simd512_width/sizeof(_Tp)> | cv::v512_load_low (const _Tp *ptr) |
Load 256-bits of data to lower part (high part is undefined). | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > | cv::v_abs (const v_reg< _Tp, n > &a) |
Absolute value of elements. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > | cv::v_absdiff (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Absolute difference. | |
template<int n> | |
v_reg< double, n > | cv::v_absdiff (const v_reg< double, n > &a, const v_reg< double, n > &b) |
template<int n> | |
v_reg< float, n > | cv::v_absdiff (const v_reg< float, n > &a, const v_reg< float, n > &b) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_absdiffs (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Saturating absolute difference. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_add_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Add values without saturation. | |
template<int i, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_broadcast_element (const v_reg< _Tp, n > &a) |
Broadcast i-th element of vector. | |
template<int n> | |
v_reg< int, n *2 > | cv::v_ceil (const v_reg< double, n > &a) |
template<int n> | |
v_reg< int, n > | cv::v_ceil (const v_reg< float, n > &a) |
Ceil elements. | |
template<typename _Tp , int n> | |
bool | cv::v_check_all (const v_reg< _Tp, n > &a) |
Check if all packed values are less than zero. | |
template<typename _Tp , int n> | |
bool | cv::v_check_any (const v_reg< _Tp, n > &a) |
Check if any of packed values is less than zero. | |
void | cv::v_cleanup () |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_combine_high (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Combine vector from last elements of two vectors. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_combine_low (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Combine vector from first elements of two vectors. | |
template<int n> | |
v_reg< float, n *2 > | cv::v_cvt_f32 (const v_reg< double, n > &a) |
Convert lower half to float. | |
template<int n> | |
v_reg< float, n *2 > | cv::v_cvt_f32 (const v_reg< double, n > &a, const v_reg< double, n > &b) |
Convert to float. | |
template<int n> | |
v_reg< float, n > | cv::v_cvt_f32 (const v_reg< int, n > &a) |
Convert to float. | |
template<int n> | |
v_reg< double,(n/2)> | cv::v_cvt_f64 (const v_reg< float, n > &a) |
Convert lower half to double. | |
template<int n> | |
v_reg< double, n/2 > | cv::v_cvt_f64 (const v_reg< int, n > &a) |
Convert lower half to double. | |
template<int n> | |
v_reg< double, n > | cv::v_cvt_f64 (const v_reg< int64, n > &a) |
Convert to double. | |
template<int n> | |
v_reg< double,(n/2)> | cv::v_cvt_f64_high (const v_reg< float, n > &a) |
Convert to double high part of vector. | |
template<int n> | |
v_reg< double,(n/2)> | cv::v_cvt_f64_high (const v_reg< int, n > &a) |
Convert to double high part of vector. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_dotprod (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Dot product of elements. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_dotprod (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c) |
Dot product of elements. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > | cv::v_dotprod_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Dot product of elements and expand. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > | cv::v_dotprod_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > &c) |
Dot product of elements. | |
template<int n> | |
v_reg< double, n/2 > | cv::v_dotprod_expand (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int n> | |
v_reg< double, n/2 > | cv::v_dotprod_expand (const v_reg< int, n > &a, const v_reg< int, n > &b, const v_reg< double, n/2 > &c) |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > | cv::v_dotprod_expand_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Fast Dot product of elements and expand. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > | cv::v_dotprod_expand_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > &c) |
Fast Dot product of elements. | |
template<int n> | |
v_reg< double, n/2 > | cv::v_dotprod_expand_fast (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int n> | |
v_reg< double, n/2 > | cv::v_dotprod_expand_fast (const v_reg< int, n > &a, const v_reg< int, n > &b, const v_reg< double, n/2 > &c) |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_dotprod_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Fast Dot product of elements. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_dotprod_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c) |
Fast Dot product of elements. | |
template<typename _Tp , int n> | |
void | cv::v_expand (const v_reg< _Tp, n > &a, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &b0, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &b1) |
Expand values to the wider pack type. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_expand_high (const v_reg< _Tp, n > &a) |
Expand higher values to the wider pack type. | |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > | cv::v_expand_low (const v_reg< _Tp, n > &a) |
Expand lower values to the wider pack type. | |
template<int s, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_extract (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Vector extract. | |
template<int s, typename _Tp , int n> | |
_Tp | cv::v_extract_n (const v_reg< _Tp, n > &v) |
Vector extract. | |
template<int n> | |
v_reg< int, n *2 > | cv::v_floor (const v_reg< double, n > &a) |
template<int n> | |
v_reg< int, n > | cv::v_floor (const v_reg< float, n > &a) |
Floor elements. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_fma (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c) |
Multiply and add. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_interleave_pairs (const v_reg< _Tp, n > &vec) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_interleave_quads (const v_reg< _Tp, n > &vec) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_invsqrt (const v_reg< _Tp, n > &a) |
Inversed square root. | |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_load (const _Tp *ptr) |
Load register contents from memory. | |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_load_aligned (const _Tp *ptr) |
Load register contents from memory (aligned) | |
template<typename _Tp , int n> | |
void | cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b) |
Load and deinterleave (2 channels) | |
template<typename _Tp , int n> | |
void | cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b, v_reg< _Tp, n > &c) |
Load and deinterleave (3 channels) | |
template<typename _Tp , int n> | |
void | cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b, v_reg< _Tp, n > &c, v_reg< _Tp, n > &d) |
Load and deinterleave (4 channels) | |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::w_type, simd128_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> | cv::v_load_expand (const _Tp *ptr) |
Load register contents from memory with double expand. | |
v_reg< float, simd128_width/sizeof(float)> | cv::v_load_expand (const float16_t *ptr) |
template<typename _Tp > | |
v_reg< typename V_TypeTraits< _Tp >::q_type, simd128_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> | cv::v_load_expand_q (const _Tp *ptr) |
Load register contents from memory with quad expand. | |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_load_halves (const _Tp *loptr, const _Tp *hiptr) |
Load register contents from two memory blocks. | |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_load_low (const _Tp *ptr) |
Load 64-bits of data to lower part (high part is undefined). | |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_lut (const _Tp *tab, const int *idx) |
template<int n> | |
v_reg< double, n/2 > | cv::v_lut (const double *tab, const v_reg< int, n > &idx) |
template<int n> | |
v_reg< float, n > | cv::v_lut (const float *tab, const v_reg< int, n > &idx) |
template<int n> | |
v_reg< int, n > | cv::v_lut (const int *tab, const v_reg< int, n > &idx) |
template<int n> | |
v_reg< unsigned, n > | cv::v_lut (const unsigned *tab, const v_reg< int, n > &idx) |
template<int n> | |
void | cv::v_lut_deinterleave (const double *tab, const v_reg< int, n *2 > &idx, v_reg< double, n > &x, v_reg< double, n > &y) |
template<int n> | |
void | cv::v_lut_deinterleave (const float *tab, const v_reg< int, n > &idx, v_reg< float, n > &x, v_reg< float, n > &y) |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_lut_pairs (const _Tp *tab, const int *idx) |
template<typename _Tp > | |
v_reg< _Tp, simd128_width/sizeof(_Tp)> | cv::v_lut_quads (const _Tp *tab, const int *idx) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_magnitude (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Magnitude. | |
template<int n> | |
v_reg< float, n > | cv::v_matmul (const v_reg< float, n > &v, const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d) |
Matrix multiplication. | |
template<int n> | |
v_reg< float, n > | cv::v_matmuladd (const v_reg< float, n > &v, const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d) |
Matrix multiplication and add. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_max (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Choose max values for each pair. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_min (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Choose min values for each pair. | |
template<typename _Tp , int n> | |
void | cv::v_mul_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &d) |
Multiply and expand. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_mul_hi (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Multiply and extract high part. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_mul_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Multiply values without saturation. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_muladd (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c) |
A synonym for v_fma. | |
template<int n> | |
v_reg< double, n > | cv::v_not_nan (const v_reg< double, n > &a) |
template<int n> | |
v_reg< float, n > | cv::v_not_nan (const v_reg< float, n > &a) |
template<int n> | |
void | cv::v_pack_store (float16_t *ptr, const v_reg< float, n > &v) |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_pack_triplets (const v_reg< _Tp, n > &vec) |
template<typename _Tp , int n> | |
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > | cv::v_popcount (const v_reg< _Tp, n > &a) |
Count the 1 bits in the vector lanes and return result as corresponding unsigned type. | |
template<typename _Tp , int n> | |
void | cv::v_recombine (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, v_reg< _Tp, n > &low, v_reg< _Tp, n > &high) |
Combine two vectors from lower and higher parts of two other vectors. | |
template<typename _Tp , int n> | |
_Tp | cv::v_reduce_max (const v_reg< _Tp, n > &a) |
Find one max value. | |
template<typename _Tp , int n> | |
_Tp | cv::v_reduce_min (const v_reg< _Tp, n > &a) |
Find one min value. | |
template<typename _Tp , int n> | |
V_TypeTraits< typenameV_TypeTraits< _Tp >::abs_type >::sum_type | cv::v_reduce_sad (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Sum absolute differences of values. | |
template<typename _Tp , int n> | |
V_TypeTraits< _Tp >::sum_type | cv::v_reduce_sum (const v_reg< _Tp, n > &a) |
Sum packed values. | |
template<int n> | |
v_reg< float, n > | cv::v_reduce_sum4 (const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d) |
Sums all elements of each input vector, returns the vector of sums. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_reverse (const v_reg< _Tp, n > &a) |
Vector reverse order. | |
template<int imm, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_rotate_left (const v_reg< _Tp, n > &a) |
Element shift left among vector. | |
template<int imm, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_rotate_left (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<int imm, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_rotate_right (const v_reg< _Tp, n > &a) |
Element shift right among vector. | |
template<int imm, typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_rotate_right (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
template<int n> | |
v_reg< int, n *2 > | cv::v_round (const v_reg< double, n > &a) |
template<int n> | |
v_reg< int, n *2 > | cv::v_round (const v_reg< double, n > &a, const v_reg< double, n > &b) |
template<int n> | |
v_reg< int, n > | cv::v_round (const v_reg< float, n > &a) |
Round elements. | |
template<typename _Tp , int n> | |
int | cv::v_scan_forward (const v_reg< _Tp, n > &a) |
Get first negative lane index. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_select (const v_reg< _Tp, n > &mask, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Per-element select (blend operation) | |
template<typename _Tp , int n> | |
int | cv::v_signmask (const v_reg< _Tp, n > &a) |
Get negative values mask. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_sqr_magnitude (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Square of the magnitude. | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_sqrt (const v_reg< _Tp, n > &a) |
Square root of elements. | |
template<typename _Tp , int n> | |
void | cv::v_store (_Tp *ptr, const v_reg< _Tp, n > &a) |
Store data to memory. | |
template<typename _Tp , int n> | |
void | cv::v_store (_Tp *ptr, const v_reg< _Tp, n > &a, hal::StoreMode) |
template<typename _Tp , int n> | |
void | cv::v_store_aligned (_Tp *ptr, const v_reg< _Tp, n > &a) |
Store data to memory (aligned) | |
template<typename _Tp , int n> | |
void | cv::v_store_aligned (_Tp *ptr, const v_reg< _Tp, n > &a, hal::StoreMode) |
template<typename _Tp , int n> | |
void | cv::v_store_aligned_nocache (_Tp *ptr, const v_reg< _Tp, n > &a) |
template<typename _Tp , int n> | |
void | cv::v_store_high (_Tp *ptr, const v_reg< _Tp, n > &a) |
Store data to memory (higher half) | |
template<typename _Tp , int n> | |
void | cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c, const v_reg< _Tp, n > &d, hal::StoreMode=hal::STORE_UNALIGNED) |
Interleave and store (4 channels) | |
template<typename _Tp , int n> | |
void | cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c, hal::StoreMode=hal::STORE_UNALIGNED) |
Interleave and store (3 channels) | |
template<typename _Tp , int n> | |
void | cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, hal::StoreMode=hal::STORE_UNALIGNED) |
Interleave and store (2 channels) | |
template<typename _Tp , int n> | |
void | cv::v_store_low (_Tp *ptr, const v_reg< _Tp, n > &a) |
Store data to memory (lower half) | |
template<typename _Tp , int n> | |
v_reg< _Tp, n > | cv::v_sub_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b) |
Subtract values without saturation. | |
template<typename _Tp , int n> | |
void | cv::v_transpose4x4 (v_reg< _Tp, n > &a0, const v_reg< _Tp, n > &a1, const v_reg< _Tp, n > &a2, const v_reg< _Tp, n > &a3, v_reg< _Tp, n > &b0, v_reg< _Tp, n > &b1, v_reg< _Tp, n > &b2, v_reg< _Tp, n > &b3) |
Transpose 4x4 matrix. | |
template<int n> | |
v_reg< int, n *2 > | cv::v_trunc (const v_reg< double, n > &a) |
template<int n> | |
v_reg< int, n > | cv::v_trunc (const v_reg< float, n > &a) |
Truncate elements. | |
template<typename _Tp , int n> | |
void | cv::v_zip (const v_reg< _Tp, n > &a0, const v_reg< _Tp, n > &a1, v_reg< _Tp, n > &b0, v_reg< _Tp, n > &b1) |
Interleave two vectors. | |
Init with zero | |
Create new vector with zero elements | |
v_float32x8 | cv::v256_setzero_f32 () |
v_float64x4 | cv::v256_setzero_f64 () |
v_int16x16 | cv::v256_setzero_s16 () |
v_int32x8 | cv::v256_setzero_s32 () |
v_int64x4 | cv::v256_setzero_s64 () |
v_int8x32 | cv::v256_setzero_s8 () |
v_uint16x16 | cv::v256_setzero_u16 () |
v_uint32x8 | cv::v256_setzero_u32 () |
v_uint64x4 | cv::v256_setzero_u64 () |
v_uint8x32 | cv::v256_setzero_u8 () |
v_float32x16 | cv::v512_setzero_f32 () |
v_float64x8 | cv::v512_setzero_f64 () |
v_int16x32 | cv::v512_setzero_s16 () |
v_int32x16 | cv::v512_setzero_s32 () |
v_int64x8 | cv::v512_setzero_s64 () |
v_int8x64 | cv::v512_setzero_s8 () |
v_uint16x32 | cv::v512_setzero_u16 () |
v_uint32x16 | cv::v512_setzero_u32 () |
v_uint64x8 | cv::v512_setzero_u64 () |
v_uint8x64 | cv::v512_setzero_u8 () |
v_float32x4 | cv::v_setzero_f32 () |
v_float64x2 | cv::v_setzero_f64 () |
v_int16x8 | cv::v_setzero_s16 () |
v_int32x4 | cv::v_setzero_s32 () |
v_int64x2 | cv::v_setzero_s64 () |
v_int8x16 | cv::v_setzero_s8 () |
v_uint16x8 | cv::v_setzero_u16 () |
v_uint32x4 | cv::v_setzero_u32 () |
v_uint64x2 | cv::v_setzero_u64 () |
v_uint8x16 | cv::v_setzero_u8 () |
Init with value | |
Create new vector with elements set to a specific value | |
v_float32x8 | cv::v256_setall_f32 (float val) |
v_float64x4 | cv::v256_setall_f64 (double val) |
v_int16x16 | cv::v256_setall_s16 (short val) |
v_int32x8 | cv::v256_setall_s32 (int val) |
v_int64x4 | cv::v256_setall_s64 (int64 val) |
v_int8x32 | cv::v256_setall_s8 (schar val) |
v_uint16x16 | cv::v256_setall_u16 (ushort val) |
v_uint32x8 | cv::v256_setall_u32 (unsigned val) |
v_uint64x4 | cv::v256_setall_u64 (uint64 val) |
v_uint8x32 | cv::v256_setall_u8 (uchar val) |
v_float32x16 | cv::v512_setall_f32 (float val) |
v_float64x8 | cv::v512_setall_f64 (double val) |
v_int16x32 | cv::v512_setall_s16 (short val) |
v_int32x16 | cv::v512_setall_s32 (int val) |
v_int64x8 | cv::v512_setall_s64 (int64 val) |
v_int8x64 | cv::v512_setall_s8 (schar val) |
v_uint16x32 | cv::v512_setall_u16 (ushort val) |
v_uint32x16 | cv::v512_setall_u32 (unsigned val) |
v_uint64x8 | cv::v512_setall_u64 (uint64 val) |
v_uint8x64 | cv::v512_setall_u8 (uchar val) |
v_float32x4 | cv::v_setall_f32 (float val) |
v_float64x2 | cv::v_setall_f64 (double val) |
v_int16x8 | cv::v_setall_s16 (short val) |
v_int32x4 | cv::v_setall_s32 (int val) |
v_int64x2 | cv::v_setall_s64 (int64 val) |
v_int8x16 | cv::v_setall_s8 (schar val) |
v_uint16x8 | cv::v_setall_u16 (ushort val) |
v_uint32x4 | cv::v_setall_u32 (unsigned val) |
v_uint64x2 | cv::v_setall_u64 (uint64 val) |
v_uint8x16 | cv::v_setall_u8 (uchar val) |
Reinterpret | |
Convert vector to different type without modifying underlying data. | |
template<typename _Tp0 , int n0> | |
v_reg< float, n0 *sizeof(_Tp0)/sizeof(float)> | cv::v_reinterpret_as_f32 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< double, n0 *sizeof(_Tp0)/sizeof(double)> | cv::v_reinterpret_as_f64 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< short, n0 *sizeof(_Tp0)/sizeof(short)> | cv::v_reinterpret_as_s16 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< int, n0 *sizeof(_Tp0)/sizeof(int)> | cv::v_reinterpret_as_s32 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< int64, n0 *sizeof(_Tp0)/sizeof(int64)> | cv::v_reinterpret_as_s64 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< schar, n0 *sizeof(_Tp0)/sizeof(schar)> | cv::v_reinterpret_as_s8 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< ushort, n0 *sizeof(_Tp0)/sizeof(ushort)> | cv::v_reinterpret_as_u16 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< unsigned, n0 *sizeof(_Tp0)/sizeof(unsigned)> | cv::v_reinterpret_as_u32 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< uint64, n0 *sizeof(_Tp0)/sizeof(uint64)> | cv::v_reinterpret_as_u64 (const v_reg< _Tp0, n0 > &a) |
template<typename _Tp0 , int n0> | |
v_reg< uchar, n0 *sizeof(_Tp0)/sizeof(uchar)> | cv::v_reinterpret_as_u8 (const v_reg< _Tp0, n0 > &a) |
Left shift | |
Shift left | |
template<int shift, int n> | |
v_reg< int, n > | cv::v_shl (const v_reg< int, n > &a) |
template<int shift, int n> | |
v_reg< int64, n > | cv::v_shl (const v_reg< int64, n > &a) |
template<int shift, int n> | |
v_reg< short, n > | cv::v_shl (const v_reg< short, n > &a) |
template<int shift, int n> | |
v_reg< uint64, n > | cv::v_shl (const v_reg< uint64, n > &a) |
template<int shift, int n> | |
v_reg< unsigned, n > | cv::v_shl (const v_reg< unsigned, n > &a) |
template<int shift, int n> | |
v_reg< ushort, n > | cv::v_shl (const v_reg< ushort, n > &a) |
Right shift | |
Shift right | |
template<int shift, int n> | |
v_reg< int, n > | cv::v_shr (const v_reg< int, n > &a) |
template<int shift, int n> | |
v_reg< int64, n > | cv::v_shr (const v_reg< int64, n > &a) |
template<int shift, int n> | |
v_reg< short, n > | cv::v_shr (const v_reg< short, n > &a) |
template<int shift, int n> | |
v_reg< uint64, n > | cv::v_shr (const v_reg< uint64, n > &a) |
template<int shift, int n> | |
v_reg< unsigned, n > | cv::v_shr (const v_reg< unsigned, n > &a) |
template<int shift, int n> | |
v_reg< ushort, n > | cv::v_shr (const v_reg< ushort, n > &a) |
Rounding shift | |
Rounding shift right | |
template<int shift, int n> | |
v_reg< int, n > | cv::v_rshr (const v_reg< int, n > &a) |
template<int shift, int n> | |
v_reg< int64, n > | cv::v_rshr (const v_reg< int64, n > &a) |
template<int shift, int n> | |
v_reg< short, n > | cv::v_rshr (const v_reg< short, n > &a) |
template<int shift, int n> | |
v_reg< uint64, n > | cv::v_rshr (const v_reg< uint64, n > &a) |
template<int shift, int n> | |
v_reg< unsigned, n > | cv::v_rshr (const v_reg< unsigned, n > &a) |
template<int shift, int n> | |
v_reg< ushort, n > | cv::v_rshr (const v_reg< ushort, n > &a) |
Pack | |
Pack values from two vectors to one Return vector type have twice more elements than input vector types. Variant with u suffix also converts to corresponding unsigned type.
| |
template<int n> | |
v_reg< short, 2 *n > | cv::v_pack (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int n> | |
v_reg< int, 2 *n > | cv::v_pack (const v_reg< int64, n > &a, const v_reg< int64, n > &b) |
template<int n> | |
v_reg< schar, 2 *n > | cv::v_pack (const v_reg< short, n > &a, const v_reg< short, n > &b) |
template<int n> | |
v_reg< unsigned, 2 *n > | cv::v_pack (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b) |
template<int n> | |
v_reg< ushort, 2 *n > | cv::v_pack (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b) |
template<int n> | |
v_reg< uchar, 2 *n > | cv::v_pack (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b) |
template<int n> | |
v_reg< ushort, 2 *n > | cv::v_pack_u (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int n> | |
v_reg< uchar, 2 *n > | cv::v_pack_u (const v_reg< short, n > &a, const v_reg< short, n > &b) |
Pack with rounding shift | |
Pack values from two vectors to one with rounding shift Values from the input vectors will be shifted right by n bits with rounding, converted to narrower type and returned in the result vector. Variant with u suffix converts to unsigned type.
| |
template<int shift, int n> | |
v_reg< short, 2 *n > | cv::v_rshr_pack (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int shift, int n> | |
v_reg< int, 2 *n > | cv::v_rshr_pack (const v_reg< int64, n > &a, const v_reg< int64, n > &b) |
template<int shift, int n> | |
v_reg< schar, 2 *n > | cv::v_rshr_pack (const v_reg< short, n > &a, const v_reg< short, n > &b) |
template<int shift, int n> | |
v_reg< unsigned, 2 *n > | cv::v_rshr_pack (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b) |
template<int shift, int n> | |
v_reg< ushort, 2 *n > | cv::v_rshr_pack (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b) |
template<int shift, int n> | |
v_reg< uchar, 2 *n > | cv::v_rshr_pack (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b) |
template<int shift, int n> | |
v_reg< ushort, 2 *n > | cv::v_rshr_pack_u (const v_reg< int, n > &a, const v_reg< int, n > &b) |
template<int shift, int n> | |
v_reg< uchar, 2 *n > | cv::v_rshr_pack_u (const v_reg< short, n > &a, const v_reg< short, n > &b) |
Pack and store | |
Store values from the input vector into memory with pack Values will be stored into memory with conversion to narrower type. Variant with u suffix converts to corresponding unsigned type.
| |
template<int n> | |
void | cv::v_pack_store (int *ptr, const v_reg< int64, n > &a) |
template<int n> | |
void | cv::v_pack_store (schar *ptr, const v_reg< short, n > &a) |
template<int n> | |
void | cv::v_pack_store (short *ptr, const v_reg< int, n > &a) |
template<int n> | |
void | cv::v_pack_store (uchar *ptr, const v_reg< ushort, n > &a) |
template<int n> | |
void | cv::v_pack_store (unsigned *ptr, const v_reg< uint64, n > &a) |
template<int n> | |
void | cv::v_pack_store (ushort *ptr, const v_reg< unsigned, n > &a) |
template<int n> | |
void | cv::v_pack_u_store (uchar *ptr, const v_reg< short, n > &a) |
template<int n> | |
void | cv::v_pack_u_store (ushort *ptr, const v_reg< int, n > &a) |
Pack and store with rounding shift | |
Store values from the input vector into memory with pack Values will be shifted n bits right with rounding, converted to narrower type and stored into memory. Variant with u suffix converts to unsigned type.
| |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (int *ptr, const v_reg< int64, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (schar *ptr, const v_reg< short, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (short *ptr, const v_reg< int, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (uchar *ptr, const v_reg< ushort, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (unsigned *ptr, const v_reg< uint64, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_store (ushort *ptr, const v_reg< unsigned, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_u_store (uchar *ptr, const v_reg< short, n > &a) |
template<int shift, int n> | |
void | cv::v_rshr_pack_u_store (ushort *ptr, const v_reg< int, n > &a) |
Pack boolean values | |
Pack boolean values from multiple vectors to one unsigned 8-bit integer vector
| |
template<int n> | |
v_reg< uchar, 8 *n > | cv::v_pack_b (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b, const v_reg< uint64, n > &c, const v_reg< uint64, n > &d, const v_reg< uint64, n > &e, const v_reg< uint64, n > &f, const v_reg< uint64, n > &g, const v_reg< uint64, n > &h) |
template<int n> | |
v_reg< uchar, 4 *n > | cv::v_pack_b (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b, const v_reg< unsigned, n > &c, const v_reg< unsigned, n > &d) |
template<int n> | |
v_reg< uchar, 2 *n > | cv::v_pack_b (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b) |
! For 16-bit boolean values | |
Variables | |
static const unsigned char | cv::popCountTable [] |