The package rpms/opencv.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/opencv.git/commit/?id=78aebdcfef7....
Change:
-%ifarch ppc64le
Thanks.
Full change:
============
commit cf9c4d33e87fdbe13eee1079043374d15b723ca5
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Wed Jan 29 08:34:31 2020 +0100
Add changelog
diff --git a/opencv.spec b/opencv.spec
index 0151f31..15caa99 100644
--- a/opencv.spec
+++ b/opencv.spec
@@ -60,7 +60,7 @@
Name: opencv
Version: 4.2.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Collection of algorithms for computer vision
# This is normal three clause BSD.
License: BSD
@@ -468,6 +468,9 @@ popd
%{_libdir}/libopencv_xphoto.so.%{abiver}*
%changelog
+* Wed Jan 29 2020 Nicolas Chauvet <kwizart(a)gmail.com> - 4.2.0-2
+- Backport patch for ppc64le
+
* Tue Dec 31 2019 Nicolas Chauvet <kwizart(a)gmail.com> - 4.2.0-1
- Update to 4.2.0
commit cbd19933e6622ddda684115c7f4abaac6fd11191
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Wed Jan 29 08:33:29 2020 +0100
Backport patch for ppc64le
diff --git a/bd531bd82852808f7fa403e3ee159bd62b1c08cc.patch
b/bd531bd82852808f7fa403e3ee159bd62b1c08cc.patch
new file mode 100644
index 0000000..e83aae3
--- /dev/null
+++ b/bd531bd82852808f7fa403e3ee159bd62b1c08cc.patch
@@ -0,0 +1,128 @@
+From bd531bd82852808f7fa403e3ee159bd62b1c08cc Mon Sep 17 00:00:00 2001
+From: Sayed Adel <seiko(a)imavr.com>
+Date: Tue, 28 Jan 2020 15:16:48 +0200
+Subject: [PATCH] core:vsx fix inline asm constraints
+
+ generalize constraints to 'wa' for VSX registers
+---
+ cmake/checks/cpu_vsx_asm.cpp | 2 +-
+ .../include/opencv2/core/hal/intrin_vsx.hpp | 4 +-
+ .../core/include/opencv2/core/vsx_utils.hpp | 50 ++++++++-----------
+ 3 files changed, 25 insertions(+), 31 deletions(-)
+
+diff --git a/cmake/checks/cpu_vsx_asm.cpp b/cmake/checks/cpu_vsx_asm.cpp
+index bb4c25507e3..9c1bf7a946a 100644
+--- a/cmake/checks/cpu_vsx_asm.cpp
++++ b/cmake/checks/cpu_vsx_asm.cpp
+@@ -16,6 +16,6 @@ int main()
+ {
+ __vector float vf;
+ __vector signed int vi;
+- __asm__ __volatile__ ("xvcvsxwsp %x0,%x1" : "=wf" (vf) :
"wa" (vi));
++ __asm__ __volatile__ ("xvcvsxwsp %x0,%x1" : "=wa" (vf) :
"wa" (vi));
+ return 0;
+ }
+\ No newline at end of file
+diff --git a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
+index bda1d8558f8..6e8b439182f 100644
+--- a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
++++ b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
+@@ -1338,7 +1338,7 @@ inline v_float32x4 v_load_expand(const float16_t* ptr)
+ return v_float32x4(vec_extract_fp_from_shorth(vf16));
+ #elif CV_VSX3 && !defined(CV_COMPILER_VSX_BROKEN_ASM)
+ vec_float4 vf32;
+- __asm__ __volatile__ ("xvcvhpsp %x0,%x1" : "=wf" (vf32) :
"wa" (vec_mergeh(vf16, vf16)));
++ __asm__ __volatile__ ("xvcvhpsp %x0,%x1" : "=wa" (vf32) :
"wa" (vec_mergeh(vf16, vf16)));
+ return v_float32x4(vf32);
+ #else
+ const vec_int4 z = vec_int4_z, delta = vec_int4_sp(0x38000000);
+@@ -1363,7 +1363,7 @@ inline void v_pack_store(float16_t* ptr, const v_float32x4& v)
+ // fixme: Is there any builtin op or intrinsic that cover "xvcvsphp"?
+ #if CV_VSX3 && !defined(CV_COMPILER_VSX_BROKEN_ASM)
+ vec_ushort8 vf16;
+- __asm__ __volatile__ ("xvcvsphp %x0,%x1" : "=wa" (vf16) :
"wf" (v.val));
++ __asm__ __volatile__ ("xvcvsphp %x0,%x1" : "=wa" (vf16) :
"wa" (v.val));
+ vec_st_l8(vec_mergesqe(vf16, vf16), ptr);
+ #else
+ const vec_int4 signmask = vec_int4_sp(0x80000000);
+diff --git a/modules/core/include/opencv2/core/vsx_utils.hpp
b/modules/core/include/opencv2/core/vsx_utils.hpp
+index d7c71406072..bcc97fe5297 100644
+--- a/modules/core/include/opencv2/core/vsx_utils.hpp
++++ b/modules/core/include/opencv2/core/vsx_utils.hpp
+@@ -110,9 +110,9 @@ VSX_FINLINE(rt) fnm(const rg& a, const rg& b) { return fn2(a,
b); }
+ #if defined(__GNUG__) && !defined(__clang__)
+
+ // inline asm helper
+-#define VSX_IMPL_1RG(rt, rto, rg, rgo, opc, fnm) \
+-VSX_FINLINE(rt) fnm(const rg& a) \
+-{ rt rs; __asm__ __volatile__(#opc" %x0,%x1" : "="#rto (rs) : #rgo
(a)); return rs; }
++#define VSX_IMPL_1RG(rt, rg, opc, fnm) \
++VSX_FINLINE(rt) fnm(const rg& a) \
++{ rt rs; __asm__ __volatile__(#opc" %x0,%x1" : "=wa" (rs) :
"wa" (a)); return rs; }
+
+ #define VSX_IMPL_1VRG(rt, rg, opc, fnm) \
+ VSX_FINLINE(rt) fnm(const rg& a) \
+@@ -257,44 +257,38 @@ VSX_REDIRECT_1RG(vec_float4, vec_double2, vec_cvfo,
__builtin_vsx_xvcvdpsp)
+ VSX_REDIRECT_1RG(vec_double2, vec_float4, vec_cvfo, __builtin_vsx_xvcvspdp)
+
+ // converts word and doubleword to double-precision
+-#ifdef vec_ctd
+-# undef vec_ctd
+-#endif
+-VSX_IMPL_1RG(vec_double2, wd, vec_int4, wa, xvcvsxwdp, vec_ctdo)
+-VSX_IMPL_1RG(vec_double2, wd, vec_uint4, wa, xvcvuxwdp, vec_ctdo)
+-VSX_IMPL_1RG(vec_double2, wd, vec_dword2, wi, xvcvsxddp, vec_ctd)
+-VSX_IMPL_1RG(vec_double2, wd, vec_udword2, wi, xvcvuxddp, vec_ctd)
++#undef vec_ctd
++VSX_IMPL_1RG(vec_double2, vec_int4, xvcvsxwdp, vec_ctdo)
++VSX_IMPL_1RG(vec_double2, vec_uint4, xvcvuxwdp, vec_ctdo)
++VSX_IMPL_1RG(vec_double2, vec_dword2, xvcvsxddp, vec_ctd)
++VSX_IMPL_1RG(vec_double2, vec_udword2, xvcvuxddp, vec_ctd)
+
+ // converts word and doubleword to single-precision
+ #undef vec_ctf
+-VSX_IMPL_1RG(vec_float4, wf, vec_int4, wa, xvcvsxwsp, vec_ctf)
+-VSX_IMPL_1RG(vec_float4, wf, vec_uint4, wa, xvcvuxwsp, vec_ctf)
+-VSX_IMPL_1RG(vec_float4, wf, vec_dword2, wi, xvcvsxdsp, vec_ctfo)
+-VSX_IMPL_1RG(vec_float4, wf, vec_udword2, wi, xvcvuxdsp, vec_ctfo)
++VSX_IMPL_1RG(vec_float4, vec_int4, xvcvsxwsp, vec_ctf)
++VSX_IMPL_1RG(vec_float4, vec_uint4, xvcvuxwsp, vec_ctf)
++VSX_IMPL_1RG(vec_float4, vec_dword2, xvcvsxdsp, vec_ctfo)
++VSX_IMPL_1RG(vec_float4, vec_udword2, xvcvuxdsp, vec_ctfo)
+
+ // converts single and double precision to signed word
+ #undef vec_cts
+-VSX_IMPL_1RG(vec_int4, wa, vec_double2, wd, xvcvdpsxws, vec_ctso)
+-VSX_IMPL_1RG(vec_int4, wa, vec_float4, wf, xvcvspsxws, vec_cts)
++VSX_IMPL_1RG(vec_int4, vec_double2, xvcvdpsxws, vec_ctso)
++VSX_IMPL_1RG(vec_int4, vec_float4, xvcvspsxws, vec_cts)
+
+ // converts single and double precision to unsigned word
+ #undef vec_ctu
+-VSX_IMPL_1RG(vec_uint4, wa, vec_double2, wd, xvcvdpuxws, vec_ctuo)
+-VSX_IMPL_1RG(vec_uint4, wa, vec_float4, wf, xvcvspuxws, vec_ctu)
++VSX_IMPL_1RG(vec_uint4, vec_double2, xvcvdpuxws, vec_ctuo)
++VSX_IMPL_1RG(vec_uint4, vec_float4, xvcvspuxws, vec_ctu)
+
+ // converts single and double precision to signed doubleword
+-#ifdef vec_ctsl
+-# undef vec_ctsl
+-#endif
+-VSX_IMPL_1RG(vec_dword2, wi, vec_double2, wd, xvcvdpsxds, vec_ctsl)
+-VSX_IMPL_1RG(vec_dword2, wi, vec_float4, wf, xvcvspsxds, vec_ctslo)
++#undef vec_ctsl
++VSX_IMPL_1RG(vec_dword2, vec_double2, xvcvdpsxds, vec_ctsl)
++VSX_IMPL_1RG(vec_dword2, vec_float4, xvcvspsxds, vec_ctslo)
+
+ // converts single and double precision to unsigned doubleword
+-#ifdef vec_ctul
+-# undef vec_ctul
+-#endif
+-VSX_IMPL_1RG(vec_udword2, wi, vec_double2, wd, xvcvdpuxds, vec_ctul)
+-VSX_IMPL_1RG(vec_udword2, wi, vec_float4, wf, xvcvspuxds, vec_ctulo)
++#undef vec_ctul
++VSX_IMPL_1RG(vec_udword2, vec_double2, xvcvdpuxds, vec_ctul)
++VSX_IMPL_1RG(vec_udword2, vec_float4, xvcvspuxds, vec_ctulo)
+
+ // just in case if GCC doesn't define it
+ #ifndef vec_xl
diff --git a/opencv.spec b/opencv.spec
index 036ba89..0151f31 100644
--- a/opencv.spec
+++ b/opencv.spec
@@ -77,6 +77,7 @@ Source4: b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip
Patch0: opencv-4.1.0-install_3rdparty_licenses.patch
Patch1:
https://github.com/opencv/opencv/commit/fb3a334bbee3535d508af6510d9903d26...
+Patch2:
https://github.com/opencv/opencv/commit/bd531bd82852808f7fa403e3ee159bd62...
BuildRequires: gcc-c++
BuildRequires: libtool
commit 78aebdcfef7a03a0fea4030b4ecef7d6ede8c1ae
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Wed Jan 29 08:32:36 2020 +0100
Revert "Disable intrinsincs for ppc64le"
This reverts commit dcd968ae9973755bd9d772328cfcffae00d473c9.
diff --git a/opencv.spec b/opencv.spec
index d304a83..036ba89 100644
--- a/opencv.spec
+++ b/opencv.spec
@@ -291,9 +291,6 @@ popd
%ifarch x86_64 %{ix86}
-DCPU_BASELINE=SSE2 \
%endif
-%ifarch ppc64le
- -DCV_ENABLE_INTRINSICS=OFF \
-%endif
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DCMAKE_BUILD_TYPE=ReleaseWithDebInfo \
%{?with_java: -DBUILD_opencv_java=ON \