From ec033330df10086fa44629154ab9e581fbf29872 Mon Sep 17 00:00:00 2001 From: Sayed Adel Date: Wed, 29 Jan 2020 14:20:55 +0200 Subject: [PATCH] core:vsx workaround for the unexpected results of `vec_vbpermq` in gcc4.9 --- modules/core/include/opencv2/core/vsx_utils.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/core/include/opencv2/core/vsx_utils.hpp b/modules/core/include/opencv2/core/vsx_utils.hpp index bcc97fe529..08ae890175 100644 --- a/modules/core/include/opencv2/core/vsx_utils.hpp +++ b/modules/core/include/opencv2/core/vsx_utils.hpp @@ -233,6 +233,10 @@ VSX_FINLINE(rt) fnm(const rg& a, const rg& b) \ #if __GNUG__ < 5 // vec_xxpermdi in gcc4 missing little-endian supports just like clang # define vec_permi(a, b, c) vec_xxpermdi(b, a, (3 ^ (((c) & 1) << 1 | (c) >> 1))) +// same as vec_xxpermdi +# undef vec_vbpermq + VSX_IMPL_2VRG(vec_udword2, vec_uchar16, vbpermq, vec_vbpermq) + VSX_IMPL_2VRG(vec_dword2, vec_char16, vbpermq, vec_vbpermq) #else # define vec_permi vec_xxpermdi #endif // __GNUG__ < 5