5
#ifndef CV__SIMD_FORWARD
6
#error "Need to pre-define forward width"
14CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN
17
#if CV__SIMD_FORWARD == 1024
19
#error "1024-long ops not implemented yet"
20
#elif CV__SIMD_FORWARD == 512
22
#define __CV_VX(fun) v512_##fun
23
#define __CV_V_UINT8 v_uint8x64
24
#define __CV_V_INT8 v_int8x64
25
#define __CV_V_UINT16 v_uint16x32
26
#define __CV_V_INT16 v_int16x32
27
#define __CV_V_UINT32 v_uint32x16
28
#define __CV_V_INT32 v_int32x16
29
#define __CV_V_UINT64 v_uint64x8
30
#define __CV_V_INT64 v_int64x8
31
#define __CV_V_FLOAT32 v_float32x16
32
#define __CV_V_FLOAT64 v_float64x8
43
#elif CV__SIMD_FORWARD == 256
45
#define __CV_VX(fun) v256_##fun
46
#define __CV_V_UINT8 v_uint8x32
47
#define __CV_V_INT8 v_int8x32
48
#define __CV_V_UINT16 v_uint16x16
49
#define __CV_V_INT16 v_int16x16
50
#define __CV_V_UINT32 v_uint32x8
51
#define __CV_V_INT32 v_int32x8
52
#define __CV_V_UINT64 v_uint64x4
53
#define __CV_V_INT64 v_int64x4
54
#define __CV_V_FLOAT32 v_float32x8
55
#define __CV_V_FLOAT64 v_float64x4
68
#define __CV_VX(fun) v_##fun
69
#define __CV_V_UINT8 v_uint8x16
70
#define __CV_V_INT8 v_int8x16
71
#define __CV_V_UINT16 v_uint16x8
72
#define __CV_V_INT16 v_int16x8
73
#define __CV_V_UINT32 v_uint32x4
74
#define __CV_V_INT32 v_int32x4
75
#define __CV_V_UINT64 v_uint64x2
76
#define __CV_V_INT64 v_int64x2
77
#define __CV_V_FLOAT32 v_float32x4
78
#define __CV_V_FLOAT64 v_float64x2
94
void
v_expand(
const
__CV_V_UINT8&, __CV_V_UINT16&, __CV_V_UINT16&);
95
void
v_expand(
const
__CV_V_INT8&, __CV_V_INT16&, __CV_V_INT16&);
96
void
v_expand(
const
__CV_V_UINT16&, __CV_V_UINT32&, __CV_V_UINT32&);
97
void
v_expand(
const
__CV_V_INT16&, __CV_V_INT32&, __CV_V_INT32&);
98
void
v_expand(
const
__CV_V_UINT32&, __CV_V_UINT64&, __CV_V_UINT64&);
99
void
v_expand(
const
__CV_V_INT32&, __CV_V_INT64&, __CV_V_INT64&);
115__CV_V_UINT16 __CV_VX(load_expand)(
const
uchar*);
116__CV_V_INT16 __CV_VX(load_expand)(
const
schar*);
117__CV_V_UINT32 __CV_VX(load_expand)(
const
ushort*);
118__CV_V_INT32 __CV_VX(load_expand)(
const
short*);
119__CV_V_UINT64 __CV_VX(load_expand)(
const
uint*);
120__CV_V_INT64 __CV_VX(load_expand)(
const
int*);
122__CV_V_UINT32 __CV_VX(load_expand_q)(
const
uchar*);
123__CV_V_INT32 __CV_VX(load_expand_q)(
const
schar*);
126__CV_V_UINT8 v_pack(
const
__CV_V_UINT16&,
const
__CV_V_UINT16&);
127__CV_V_INT8 v_pack(
const
__CV_V_INT16&,
const
__CV_V_INT16&);
128__CV_V_UINT16 v_pack(
const
__CV_V_UINT32&,
const
__CV_V_UINT32&);
129__CV_V_INT16 v_pack(
const
__CV_V_INT32&,
const
__CV_V_INT32&);
131__CV_V_UINT32 v_pack(
const
__CV_V_UINT64&,
const
__CV_V_UINT64&);
132__CV_V_INT32 v_pack(
const
__CV_V_INT64&,
const
__CV_V_INT64&);
134__CV_V_UINT8 v_pack_u(
const
__CV_V_INT16&,
const
__CV_V_INT16&);
135__CV_V_UINT16 v_pack_u(
const
__CV_V_INT32&,
const
__CV_V_INT32&);
141
template<
typename
Tvec>
142Tvec v_mul_wrap(
const
Tvec& a,
const
Tvec& b);
144__CV_V_UINT8 v_mul_wrap(
const
__CV_V_UINT8&,
const
__CV_V_UINT8&);
145__CV_V_INT8 v_mul_wrap(
const
__CV_V_INT8&,
const
__CV_V_INT8&);
146__CV_V_UINT16 v_mul_wrap(
const
__CV_V_UINT16&,
const
__CV_V_UINT16&);
147__CV_V_INT16 v_mul_wrap(
const
__CV_V_INT16&,
const
__CV_V_INT16&);
152
template<
typename
Tvec,
typename
Twvec>
153
void
v_mul_expand(
const
Tvec& a,
const
Tvec& b, Twvec& c, Twvec& d);
155
void
v_mul_expand(
const
__CV_V_UINT8&,
const
__CV_V_UINT8&, __CV_V_UINT16&, __CV_V_UINT16&);
156
void
v_mul_expand(
const
__CV_V_INT8&,
const
__CV_V_INT8&, __CV_V_INT16&, __CV_V_INT16&);
157
void
v_mul_expand(
const
__CV_V_UINT16&,
const
__CV_V_UINT16&, __CV_V_UINT32&, __CV_V_UINT32&);
158
void
v_mul_expand(
const
__CV_V_INT16&,
const
__CV_V_INT16&, __CV_V_INT32&, __CV_V_INT32&);
159
void
v_mul_expand(
const
__CV_V_UINT32&,
const
__CV_V_UINT32&, __CV_V_UINT64&, __CV_V_UINT64&);
160
void
v_mul_expand(
const
__CV_V_INT32&,
const
__CV_V_INT32&, __CV_V_INT64&, __CV_V_INT64&);
164__CV_V_FLOAT32
v_cvt_f32(
const
__CV_V_INT32& a);
165__CV_V_FLOAT32
v_cvt_f32(
const
__CV_V_FLOAT64& a);
166__CV_V_FLOAT32
v_cvt_f32(
const
__CV_V_FLOAT64& a,
const
__CV_V_FLOAT64& b);
167__CV_V_FLOAT64
v_cvt_f64(
const
__CV_V_INT32& a);
169__CV_V_FLOAT64
v_cvt_f64(
const
__CV_V_FLOAT32& a);
171__CV_V_FLOAT64
v_cvt_f64(
const
__CV_V_INT64& a);
174
#undef CV__SIMD_FORWARD
184
#undef __CV_V_FLOAT32
185
#undef __CV_V_FLOAT64
187CV_CPU_OPTIMIZATION_HAL_NAMESPACE_END
v_reg< schar, 16 > v_int8x16
Sixteen 8-bit signed integer values
Definition:
intrin_cpp.hpp:490
v_reg< uchar, 16 > v_uint8x16
Sixteen 8-bit unsigned integer values
Definition:
intrin_cpp.hpp:488
v_reg< int64, 2 > v_int64x2
Two 64-bit signed integer values
Definition:
intrin_cpp.hpp:506
v_reg< ushort, 8 > v_uint16x8
Eight 16-bit unsigned integer values
Definition:
intrin_cpp.hpp:492
v_reg< int, 4 > v_int32x4
Four 32-bit signed integer values
Definition:
intrin_cpp.hpp:498
v_reg< unsigned, 4 > v_uint32x4
Four 32-bit unsigned integer values
Definition:
intrin_cpp.hpp:496
CV_INLINE v_reg< double,(n/2)> v_cvt_f64_high(const v_reg< int, n > &a)
Convert to double high part of vector
Definition:
intrin_cpp.hpp:2587
void 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
Definition:
intrin_cpp.hpp:1219
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > v_expand_low(const v_reg< _Tp, n > &a)
Expand lower values to the wider pack type
Definition:
intrin_cpp.hpp:1499
CV_INLINE v_reg< double, n/2 > v_cvt_f64(const v_reg< int, n > &a)
Convert lower half to double
Definition:
intrin_cpp.hpp:2576
void 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
Definition:
intrin_cpp.hpp:1477
v_reg< uint64, 2 > v_uint64x2
Two 64-bit unsigned integer values
Definition:
intrin_cpp.hpp:504
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > v_expand_high(const v_reg< _Tp, n > &a)
Expand higher values to the wider pack type
Definition:
intrin_cpp.hpp:1518
v_reg< float, 4 > v_float32x4
Four 32-bit floating point values (single precision)
Definition:
intrin_cpp.hpp:500
v_reg< float, n > v_cvt_f32(const v_reg< int, n > &a)
Convert to float
Definition:
intrin_cpp.hpp:2537
v_reg< short, 8 > v_int16x8
Eight 16-bit signed integer values
Definition:
intrin_cpp.hpp:494
v_reg< double, 2 > v_float64x2
Two 64-bit floating point values (double precision)
Definition:
intrin_cpp.hpp:502
"black box" representation of the file storage associated with a file on disk.
Definition:
aruco.hpp:75