mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 22:44:02 +08:00
Merge pull request #10761 from seiko2plus:issue10753
This commit is contained in:
commit
83761d5f8e
@ -47,6 +47,10 @@
|
||||
|
||||
#include "opencv2/core/cvdef.h"
|
||||
|
||||
#ifndef SKIP_INCLUDES
|
||||
# include <assert.h>
|
||||
#endif
|
||||
|
||||
//! @addtogroup core_utils_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_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
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user