core:ppc Fix compile issue with Eigen

pull/10761/head
Sayed Adel 7 years ago
parent f57630d92b
commit 534dcbe017
  1. 25
      modules/core/include/opencv2/core/vsx_utils.hpp

@ -47,6 +47,10 @@
#include "opencv2/core/cvdef.h" #include "opencv2/core/cvdef.h"
#ifndef SKIP_INCLUDES
# include <assert.h>
#endif
//! @addtogroup core_utils_vsx //! @addtogroup core_utils_vsx
//! @{ //! @{
#if CV_VSX #if CV_VSX
@ -520,6 +524,27 @@ VSX_IMPL_CONV_EVEN_2_4(vec_float4, vec_udword2, vec_ctf, vec_ctfo)
VSX_IMPL_CONV_EVEN_2_4(vec_int4, vec_double2, vec_cts, vec_ctso) VSX_IMPL_CONV_EVEN_2_4(vec_int4, vec_double2, vec_cts, vec_ctso)
VSX_IMPL_CONV_EVEN_2_4(vec_uint4, vec_double2, vec_ctu, vec_ctuo) VSX_IMPL_CONV_EVEN_2_4(vec_uint4, vec_double2, vec_ctu, vec_ctuo)
// Only for Eigen!
/*
* changing behavior of conversion intrinsics for gcc has effect on Eigen
* so we redfine old behavior again only on gcc, clang
*/
#if !defined(__clang__) || __clang_major__ > 4
// ignoring second arg since Eigen only truncates toward zero
# define VSX_IMPL_CONV_2VARIANT(rt, rg, fnm, fn2) \
VSX_FINLINE(rt) fnm(const rg& a, int only_truncate) \
{ \
assert(only_truncate == 0); \
(void)only_truncate; \
return fn2(a); \
}
VSX_IMPL_CONV_2VARIANT(vec_int4, vec_float4, vec_cts, vec_cts)
VSX_IMPL_CONV_2VARIANT(vec_float4, vec_int4, vec_ctf, vec_ctf)
// define vec_cts for converting double precision to signed doubleword
// which isn't combitable with xlc but its okay since Eigen only use it for gcc
VSX_IMPL_CONV_2VARIANT(vec_dword2, vec_double2, vec_cts, vec_ctsl)
#endif // Eigen
#endif // Common GCC, CLANG compatibility #endif // Common GCC, CLANG compatibility
/* /*

Loading…
Cancel
Save