Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 47f30a0

Browse files
committed
Merge pull request #22278 from hanliutong:fix
2 parents a42b355 + 3e3b53f commit 47f30a0

File tree

5 files changed

+157
-377
lines changed

5 files changed

+157
-377
lines changed

modules/core/include/opencv2/core/hal/intrin.hpp

Lines changed: 5 additions & 227 deletions
Original file line numberDiff line numberDiff line change
@@ -695,237 +695,15 @@ namespace CV__SIMD_NAMESPACE {
695695
/** @brief SIMD processing state cleanup call */
696696
inline void vx_cleanup() { VXPREFIX(_cleanup)(); }
697697

698-
#if CV_SIMD
698+
#if !CV_SIMD_SCALABLE
699699
// Compatibility layer
700-
#define CV_SIMD_SCALABLE 0
701-
#define CV_SIMD_SCALABLE_64F 0
702700

703-
template <class T>
704-
struct VTraits;
705-
#if CV_SIMD512 && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 512)
706-
template <>
707-
struct VTraits<v_uint8>
708-
{
709-
static inline int vlanes() { return v_uint8::nlanes; }
710-
enum { nlanes = 64, max_nlanes = nlanes };
711-
using lane_type = uchar;
712-
};
713-
template <>
714-
struct VTraits<v_int8>
715-
{
716-
static inline int vlanes() { return v_int8::nlanes; }
717-
enum { nlanes = 64, max_nlanes = nlanes };
718-
using lane_type = schar;
719-
};
720-
template <>
721-
struct VTraits<v_uint16>
722-
{
723-
static inline int vlanes() { return v_uint16::nlanes; }
724-
enum { nlanes = 32, max_nlanes = nlanes };
725-
using lane_type = ushort;
726-
};
727-
template <>
728-
struct VTraits<v_int16>
729-
{
730-
static inline int vlanes() { return v_int16::nlanes; }
731-
enum { nlanes = 32, max_nlanes = nlanes };
732-
using lane_type = short;
733-
};
734-
template <>
735-
struct VTraits<v_uint32>
736-
{
737-
static inline int vlanes() { return v_uint32::nlanes; }
738-
enum { nlanes = 16, max_nlanes = nlanes };
739-
using lane_type = uint;
740-
};
741-
template <>
742-
struct VTraits<v_int32>
743-
{
744-
static inline int vlanes() { return v_int32::nlanes; }
745-
enum { nlanes = 16, max_nlanes = nlanes };
746-
using lane_type = int;
701+
template<typename T> struct VTraits {
702+
static inline int vlanes() { return T::nlanes; }
703+
enum { nlanes = T::nlanes, max_nlanes = T::nlanes };
704+
using lane_type = typename T::lane_type;
747705
};
748706

749-
template <>
750-
struct VTraits<v_float32>
751-
{
752-
static inline int vlanes() { return v_float32::nlanes; }
753-
enum { nlanes = 16, max_nlanes = nlanes };
754-
using lane_type = float;
755-
};
756-
template <>
757-
struct VTraits<v_uint64>
758-
{
759-
static inline int vlanes() { return v_uint64::nlanes; }
760-
enum { nlanes = 8, max_nlanes = nlanes };
761-
using lane_type = uint64;
762-
};
763-
template <>
764-
struct VTraits<v_int64>
765-
{
766-
static inline int vlanes() { return v_int64::nlanes; }
767-
enum { nlanes = 8, max_nlanes = nlanes };
768-
using lane_type = int64;
769-
};
770-
#if CV_SIMD_64F
771-
template <>
772-
struct VTraits<v_float64>
773-
{
774-
static inline int vlanes() { return v_float64::nlanes; }
775-
enum { nlanes = 8, max_nlanes = nlanes };
776-
using lane_type = double;
777-
};
778-
#endif
779-
#elif CV_SIMD256 && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 256)
780-
template <>
781-
struct VTraits<v_uint8>
782-
{
783-
static inline int vlanes() { return v_uint8::nlanes; }
784-
enum { nlanes = 32, max_nlanes = nlanes };
785-
using lane_type = uchar;
786-
};
787-
template <>
788-
struct VTraits<v_int8>
789-
{
790-
static inline int vlanes() { return v_int8::nlanes; }
791-
enum { nlanes = 32, max_nlanes = nlanes };
792-
using lane_type = schar;
793-
};
794-
template <>
795-
struct VTraits<v_uint16>
796-
{
797-
static inline int vlanes() { return v_uint16::nlanes; }
798-
enum { nlanes = 16, max_nlanes = nlanes };
799-
using lane_type = ushort;
800-
};
801-
template <>
802-
struct VTraits<v_int16>
803-
{
804-
static inline int vlanes() { return v_int16::nlanes; }
805-
enum { nlanes = 16, max_nlanes = nlanes };
806-
using lane_type = short;
807-
};
808-
template <>
809-
struct VTraits<v_uint32>
810-
{
811-
static inline int vlanes() { return v_uint32::nlanes; }
812-
enum { nlanes = 8, max_nlanes = nlanes };
813-
using lane_type = uint;
814-
};
815-
template <>
816-
struct VTraits<v_int32>
817-
{
818-
static inline int vlanes() { return v_int32::nlanes; }
819-
enum { nlanes = 8, max_nlanes = nlanes };
820-
using lane_type = int;
821-
};
822-
823-
template <>
824-
struct VTraits<v_float32>
825-
{
826-
static inline int vlanes() { return v_float32::nlanes; }
827-
enum { nlanes = 8, max_nlanes = nlanes };
828-
using lane_type = float;
829-
};
830-
template <>
831-
struct VTraits<v_uint64>
832-
{
833-
static inline int vlanes() { return v_uint64::nlanes; }
834-
enum { nlanes = 4, max_nlanes = nlanes };
835-
using lane_type = uint64;
836-
};
837-
template <>
838-
struct VTraits<v_int64>
839-
{
840-
static inline int vlanes() { return v_int64::nlanes; }
841-
enum { nlanes = 4, max_nlanes = nlanes };
842-
using lane_type = int64;
843-
};
844-
#if CV_SIMD_64F
845-
template <>
846-
struct VTraits<v_float64>
847-
{
848-
static inline int vlanes() { return v_float64::nlanes; }
849-
enum { nlanes = 4, max_nlanes = nlanes };
850-
using lane_type = double;
851-
};
852-
#endif
853-
#elif CV_SIMD128 && (!defined(CV__SIMD_FORCE_WIDTH) || CV__SIMD_FORCE_WIDTH == 128)
854-
template <>
855-
struct VTraits<v_uint8>
856-
{
857-
static inline int vlanes() { return v_uint8::nlanes; }
858-
enum { nlanes = 16, max_nlanes = nlanes };
859-
using lane_type = uchar;
860-
};
861-
template <>
862-
struct VTraits<v_int8>
863-
{
864-
static inline int vlanes() { return v_int8::nlanes; }
865-
enum { nlanes = 16, max_nlanes = nlanes };
866-
using lane_type = schar;
867-
};
868-
template <>
869-
struct VTraits<v_uint16>
870-
{
871-
static inline int vlanes() { return v_uint16::nlanes; }
872-
enum { nlanes = 8, max_nlanes = nlanes };
873-
using lane_type = ushort;
874-
};
875-
template <>
876-
struct VTraits<v_int16>
877-
{
878-
static inline int vlanes() { return v_int16::nlanes; }
879-
enum { nlanes = 8, max_nlanes = nlanes };
880-
using lane_type = short;
881-
};
882-
template <>
883-
struct VTraits<v_uint32>
884-
{
885-
static inline int vlanes() { return v_uint32::nlanes; }
886-
enum { nlanes = 4, max_nlanes = nlanes };
887-
using lane_type = uint;
888-
};
889-
template <>
890-
struct VTraits<v_int32>
891-
{
892-
static inline int vlanes() { return v_int32::nlanes; }
893-
enum { nlanes = 4, max_nlanes = nlanes };
894-
using lane_type = int;
895-
};
896-
897-
template <>
898-
struct VTraits<v_float32>
899-
{
900-
static inline int vlanes() { return v_float32::nlanes; }
901-
enum { nlanes = 4, max_nlanes = nlanes };
902-
using lane_type = float;
903-
};
904-
template <>
905-
struct VTraits<v_uint64>
906-
{
907-
static inline int vlanes() { return v_uint64::nlanes; }
908-
enum { nlanes = 2, max_nlanes = nlanes };
909-
using lane_type = uint64;
910-
};
911-
template <>
912-
struct VTraits<v_int64>
913-
{
914-
static inline int vlanes() { return v_int64::nlanes; }
915-
enum { nlanes = 2, max_nlanes = nlanes };
916-
using lane_type = int64;
917-
};
918-
#if CV_SIMD_64F
919-
template <>
920-
struct VTraits<v_float64>
921-
{
922-
static inline int vlanes() { return v_float64::nlanes; }
923-
enum { nlanes = 2, max_nlanes = nlanes };
924-
using lane_type = double;
925-
};
926-
#endif
927-
#endif
928-
929707
#define OPENCV_HAL_WRAP_BIN_OP_ADDSUB(_Tpvec) \
930708
inline _Tpvec v_add(const _Tpvec& a, const _Tpvec& b) \
931709
{ \

modules/core/include/opencv2/core/hal/intrin_cpp.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include <limits>
4949
#include <cstring>
5050
#include <algorithm>
51+
#include "opencv2/core/utility.hpp"
5152
#include "opencv2/core/saturate.hpp"
5253

5354
//! @cond IGNORED

modules/core/include/opencv2/core/saturate.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#define OPENCV_CORE_SATURATE_HPP
4747

4848
#include "opencv2/core/cvdef.h"
49+
#include <climits>
4950
#include "opencv2/core/fast_math.hpp"
5051

5152
namespace cv

0 commit comments

Comments
 (0)