OpenCV  4.1.0
Open Source Computer Vision
Classes | Namespaces | Macros | Enumerations
intrin.hpp File Reference
#include <cmath>
#include <float.h>
#include <stdlib.h>
#include "opencv2/core/cvdef.h"
#include "opencv2/core/hal/intrin_forward.hpp"
#include "opencv2/core/hal/intrin_sse_em.hpp"
#include "opencv2/core/hal/intrin_sse.hpp"

Classes

struct  cv::V_TypeTraits< _Tp >
 
struct  cv::V_TypeTraits< double >
 
struct  cv::V_TypeTraits< float >
 
struct  cv::V_TypeTraits< int64 >
 
struct  cv::V_TypeTraits< schar >
 
struct  cv::V_TypeTraits< short >
 
struct  cv::V_TypeTraits< uchar >
 
struct  cv::V_TypeTraits< uint64 >
 
struct  cv::V_TypeTraits< unsigned >
 
struct  cv::V_TypeTraits< ushort >
 

Namespaces

namespace  cv
 "black box" representation of the file storage associated with a file on disk.
 
namespace  cv::hal
 

Macros

#define CV_DEF_REG_TRAITS(prefix, _reg, lane_type, suffix, _u_reg, _w_reg, _q_reg, _int_reg, _round_reg)
 
#define CV_INTRIN_DEF_TYPE_TRAITS(type, int_type_, uint_type_, abs_type_, w_type_, q_type_, sum_type_, nlanes128_)
 
#define CV_INTRIN_DEFINE_WIDE_INTRIN(typ, vtyp, short_typ, prefix, loadsfx)
 
#define CV_INTRIN_DEFINE_WIDE_INTRIN_ALL_TYPES(prefix)
 
#define CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(typ, vtyp, short_typ, wtyp, qtyp, prefix, loadsfx)
 
#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(typ, wtyp, prefix)   inline wtyp vx_load_expand(const typ* ptr) { return prefix##_load_expand(ptr); }
 
#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND_Q(typ, qtyp, prefix)   inline qtyp vx_load_expand_q(const typ* ptr) { return prefix##_load_expand_q(ptr); }
 
#define CV_INTRIN_DEFINE_WIDE_LUT_QUAD(typ, vtyp, prefix)   inline vtyp vx_lut_quads(const typ* ptr, const int* idx) { return prefix##_lut_quads(ptr, idx); }
 
#define CV_SIMD   0
 
#define CV_SIMD128   0
 
#define CV_SIMD128_64F   0
 
#define CV_SIMD128_FP16   0
 
#define CV_SIMD256   0
 
#define CV_SIMD256_64F   0
 
#define CV_SIMD256_FP16   0
 
#define CV_SIMD512   0
 
#define CV_SIMD512_64F   0
 
#define CV_SIMD512_FP16   0
 
#define CV_SIMD_64F   0
 
#define CV_SIMD_FP16   0
 
#define OPENCV_HAL_1ST(a, b)   (a)
 
#define OPENCV_HAL_ADD(a, b)   ((a) + (b))
 
#define OPENCV_HAL_AND(a, b)   ((a) & (b))
 
#define OPENCV_HAL_NOP(a)   (a)
 

Enumerations

enum  cv::hal::StoreMode {
  cv::hal::STORE_UNALIGNED = 0,
  cv::hal::STORE_ALIGNED = 1,
  cv::hal::STORE_ALIGNED_NOCACHE = 2
}
 

Macro Definition Documentation

#define CV_DEF_REG_TRAITS (   prefix,
  _reg,
  lane_type,
  suffix,
  _u_reg,
  _w_reg,
  _q_reg,
  _int_reg,
  _round_reg 
)
Value:
template<> struct V_RegTraits<_reg> \
{ \
typedef _reg reg; \
typedef _u_reg u_reg; \
typedef _w_reg w_reg; \
typedef _q_reg q_reg; \
typedef _int_reg int_reg; \
typedef _round_reg round_reg; \
}
#define CV_INTRIN_DEF_TYPE_TRAITS (   type,
  int_type_,
  uint_type_,
  abs_type_,
  w_type_,
  q_type_,
  sum_type_,
  nlanes128_ 
)
Value:
template<> struct V_TypeTraits<type> \
{ \
typedef type value_type; \
typedef int_type_ int_type; \
typedef abs_type_ abs_type; \
typedef uint_type_ uint_type; \
typedef w_type_ w_type; \
typedef q_type_ q_type; \
typedef sum_type_ sum_type; \
enum { nlanes128 = nlanes128_ }; \
\
static inline int_type reinterpret_int(type x) \
{ \
union { type l; int_type i; } v; \
v.l = x; \
return v.i; \
} \
\
static inline type reinterpret_from_int(int_type x) \
{ \
union { type l; int_type i; } v; \
v.i = x; \
return v.l; \
} \
}
#define CV_INTRIN_DEFINE_WIDE_INTRIN (   typ,
  vtyp,
  short_typ,
  prefix,
  loadsfx 
)
Value:
inline vtyp vx_setall_##short_typ(typ v) { return prefix##_setall_##short_typ(v); } \
inline vtyp vx_setzero_##short_typ() { return prefix##_setzero_##short_typ(); } \
inline vtyp vx_##loadsfx(const typ* ptr) { return prefix##_##loadsfx(ptr); } \
inline vtyp vx_##loadsfx##_aligned(const typ* ptr) { return prefix##_##loadsfx##_aligned(ptr); } \
inline vtyp vx_##loadsfx##_low(const typ* ptr) { return prefix##_##loadsfx##_low(ptr); } \
inline vtyp vx_##loadsfx##_halves(const typ* ptr0, const typ* ptr1) { return prefix##_##loadsfx##_halves(ptr0, ptr1); } \
inline void vx_store(typ* ptr, const vtyp& v) { return v_store(ptr, v); } \
inline void vx_store_aligned(typ* ptr, const vtyp& v) { return v_store_aligned(ptr, v); } \
inline vtyp vx_lut(const typ* ptr, const int* idx) { return prefix##_lut(ptr, idx); } \
inline vtyp vx_lut_pairs(const typ* ptr, const int* idx) { return prefix##_lut_pairs(ptr, idx); }
#define CV_INTRIN_DEFINE_WIDE_INTRIN_ALL_TYPES (   prefix)
Value:
CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(uchar, v_uint8, u8, v_uint16, v_uint32, prefix, load) \
CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND(schar, v_int8, s8, v_int16, v_int32, prefix, load) \
CV_INTRIN_DEFINE_WIDE_INTRIN(ushort, v_uint16, u16, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(ushort, v_uint16, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(ushort, v_uint32, prefix) \
CV_INTRIN_DEFINE_WIDE_INTRIN(short, v_int16, s16, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(short, v_int16, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(short, v_int32, prefix) \
CV_INTRIN_DEFINE_WIDE_INTRIN(int, v_int32, s32, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(int, v_int32, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(int, v_int64, prefix) \
CV_INTRIN_DEFINE_WIDE_INTRIN(unsigned, v_uint32, u32, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(unsigned, v_uint32, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(unsigned, v_uint64, prefix) \
CV_INTRIN_DEFINE_WIDE_INTRIN(float, v_float32, f32, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(float, v_float32, prefix) \
CV_INTRIN_DEFINE_WIDE_INTRIN(int64, v_int64, s64, prefix, load) \
CV_INTRIN_DEFINE_WIDE_INTRIN(uint64, v_uint64, u64, prefix, load) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(float16_t, v_float32, prefix)
#define CV_INTRIN_DEFINE_WIDE_INTRIN_WITH_EXPAND (   typ,
  vtyp,
  short_typ,
  wtyp,
  qtyp,
  prefix,
  loadsfx 
)
Value:
CV_INTRIN_DEFINE_WIDE_INTRIN(typ, vtyp, short_typ, prefix, loadsfx) \
CV_INTRIN_DEFINE_WIDE_LUT_QUAD(typ, vtyp, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND(typ, wtyp, prefix) \
CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND_Q(typ, qtyp, prefix)
#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND (   typ,
  wtyp,
  prefix 
)    inline wtyp vx_load_expand(const typ* ptr) { return prefix##_load_expand(ptr); }
#define CV_INTRIN_DEFINE_WIDE_LOAD_EXPAND_Q (   typ,
  qtyp,
  prefix 
)    inline qtyp vx_load_expand_q(const typ* ptr) { return prefix##_load_expand_q(ptr); }
#define CV_INTRIN_DEFINE_WIDE_LUT_QUAD (   typ,
  vtyp,
  prefix 
)    inline vtyp vx_lut_quads(const typ* ptr, const int* idx) { return prefix##_lut_quads(ptr, idx); }
#define CV_SIMD   0
#define CV_SIMD128   0
#define CV_SIMD128_64F   0
#define CV_SIMD128_FP16   0
#define CV_SIMD256   0
#define CV_SIMD256_64F   0
#define CV_SIMD256_FP16   0
#define CV_SIMD512   0
#define CV_SIMD512_64F   0
#define CV_SIMD512_FP16   0
#define CV_SIMD_64F   0
#define CV_SIMD_FP16   0
#define OPENCV_HAL_1ST (   a,
 
)    (a)
#define OPENCV_HAL_ADD (   a,
 
)    ((a) + (b))
#define OPENCV_HAL_AND (   a,
 
)    ((a) & (b))
#define OPENCV_HAL_NOP (   a)    (a)