Merge pull request #22558 from hanliutong:signmask

Fix v_signmask for RISC-V Vector
pull/22570/head
Alexander Smorkalov 2 years ago committed by GitHub
commit a682f02f59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      modules/core/include/opencv2/core/hal/intrin_rvv_scalable.hpp
  2. 1
      modules/core/test/test_intrin_utils.hpp

@ -1618,7 +1618,7 @@ inline int v_signmask(const _Tpvec& a) \
{ \ { \
uint8_t ans[4] = {0}; \ uint8_t ans[4] = {0}; \
vsm(ans, vmslt(a, 0, VTraits<_Tpvec>::vlanes()), VTraits<_Tpvec>::vlanes()); \ vsm(ans, vmslt(a, 0, VTraits<_Tpvec>::vlanes()), VTraits<_Tpvec>::vlanes()); \
return *(reinterpret_cast<int*>(ans)); \ return *(reinterpret_cast<int*>(ans)) & (((__int128_t)1 << VTraits<_Tpvec>::vlanes()) - 1); \
} \ } \
inline int v_scan_forward(const _Tpvec& a) \ inline int v_scan_forward(const _Tpvec& a) \
{ \ { \

@ -1081,6 +1081,7 @@ template<typename R> struct TheTest
typedef typename VTraits<uint_reg>::lane_type uint_type; typedef typename VTraits<uint_reg>::lane_type uint_type;
Data<R> dataA, dataB(0), dataC, dataD(1), dataE(2); Data<R> dataA, dataB(0), dataC, dataD(1), dataE(2);
dataA[0] = std::numeric_limits<int_type>::max();
dataA[1] *= (LaneType)-1; dataA[1] *= (LaneType)-1;
union union
{ {

Loading…
Cancel
Save