On Sun, Feb 9, 2025 at 11:12 PM Yi Zhao via lists.openembedded.org
<yi.zhao=eng.windriver....@lists.openembedded.org> wrote:
>
> Backport a patch to fix build for ppc64:
> modules/core/include/opencv2/core/hal/intrin_vsx.hpp:265:75: error: expected 
> primary-expression before 'v'
>   265 | template <> inline _Tpvec v_setall_(_Tp v) { return 
> v_setall_##suffix(_Tp v); }       \
>       |
>
> Also fix QA issue:
> ERROR: QA Issue: File 
> /usr/src/debug/opencv/4.11.0/modules/core/arithm.vsx3.cpp in package 
> opencv-src contains reference to TMPDIR [buildpaths]
> ERROR: QA Issue: File 
> /usr/src/debug/opencv/4.11.0/modules/core/convert.vsx3.cpp in package 
> opencv-src contains reference to TMPDIR [buildpaths]
>
> Signed-off-by: Yi Zhao <yi.z...@windriver.com>
> ---
>  ...-fixed-VSX-intrinsics-implementation.patch | 61 +++++++++++++++++++
>  .../recipes-support/opencv/opencv_4.11.0.bb   |  7 +++
>  2 files changed, 68 insertions(+)
>  create mode 100644 
> meta-oe/recipes-support/opencv/opencv/0001-core-fixed-VSX-intrinsics-implementation.patch
>
> diff --git 
> a/meta-oe/recipes-support/opencv/opencv/0001-core-fixed-VSX-intrinsics-implementation.patch
>  
> b/meta-oe/recipes-support/opencv/opencv/0001-core-fixed-VSX-intrinsics-implementation.patch
> new file mode 100644
> index 0000000000..9fc89e4244
> --- /dev/null
> +++ 
> b/meta-oe/recipes-support/opencv/opencv/0001-core-fixed-VSX-intrinsics-implementation.patch
> @@ -0,0 +1,61 @@
> +From 97f3f390661f2fd1168336820b89eb4383ce8528 Mon Sep 17 00:00:00 2001
> +From: Maksim Shabunin <maksim.shabu...@gmail.com>
> +Date: Fri, 10 Jan 2025 18:34:11 +0300
> +Subject: [PATCH] core: fixed VSX intrinsics implementation
> +
> +Upstream-Status: Backport
> +[https://github.com/opencv/opencv/commit/97f3f390661f2fd1168336820b89eb4383ce8528]
> +
> +Signed-off-by: Yi Zhao <yi.z...@windriver.com>
> +---
> + modules/core/include/opencv2/core/hal/intrin_vsx.hpp | 10 +++++-----
> + 1 file changed, 5 insertions(+), 5 deletions(-)
> +
> +diff --git a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp 
> b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
> +index 2157e1e870..0a0915a22f 100644
> +--- a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
> ++++ b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
> +@@ -262,7 +262,7 @@ OPENCV_HAL_IMPL_VSX_EXTRACT_N(v_float64x2, double)
> + inline _Tpvec v_setzero_##suffix() { return _Tpvec(vec_splats((_Tp)0)); }   
>           \
> + inline _Tpvec v_setall_##suffix(_Tp v) { return 
> _Tpvec(vec_splats((_Tp)v));}          \
> + template <> inline _Tpvec v_setzero_() { return v_setzero_##suffix(); }     
>           \
> +-template <> inline _Tpvec v_setall_(_Tp v) { return v_setall_##suffix(_Tp 
> v); }       \
> ++template <> inline _Tpvec v_setall_(_Tp v) { return v_setall_##suffix(v); } 
>       \
> + template<typename _Tpvec0> inline _Tpvec v_reinterpret_as_##suffix(const 
> _Tpvec0 &a)  \
> + { return _Tpvec((cast)a.val); }
> +
> +@@ -650,11 +650,11 @@ OPENCV_HAL_IMPL_VSX_SELECT(v_float64x2, vec_bdword2_c)
> + #define OPENCV_HAL_IMPL_VSX_INT_CMP_OP(_Tpvec)                 \
> + inline _Tpvec v_eq(const _Tpvec& a, const _Tpvec& b)           \
> + { return _Tpvec(vec_cmpeq(a.val, b.val)); }                    \
> +-inline _Tpvec V_ne(const _Tpvec& a, const _Tpvec& b)           \
> ++inline _Tpvec v_ne(const _Tpvec& a, const _Tpvec& b)           \
> + { return _Tpvec(vec_cmpne(a.val, b.val)); }                    \
> + inline _Tpvec v_lt(const _Tpvec& a, const _Tpvec& b)           \
> + { return _Tpvec(vec_cmplt(a.val, b.val)); }                    \
> +-inline _Tpvec V_gt(const _Tpvec& a, const _Tpvec& b)           \
> ++inline _Tpvec v_gt(const _Tpvec& a, const _Tpvec& b)           \
> + { return _Tpvec(vec_cmpgt(a.val, b.val)); }                    \
> + inline _Tpvec v_le(const _Tpvec& a, const _Tpvec& b)           \
> + { return _Tpvec(vec_cmple(a.val, b.val)); }                    \
> +@@ -1507,7 +1507,7 @@ inline v_float64x2 v_dotprod_expand(const v_int32x4& 
> a, const v_int32x4& b, cons
> + inline v_int32x4 v_dotprod_fast(const v_int16x8& a, const v_int16x8& b)
> + { return v_dotprod(a, b); }
> + inline v_int32x4 v_dotprod_fast(const v_int16x8& a, const v_int16x8& b, 
> const v_int32x4& c)
> +-{ return v_int32x4(vec_msum(a.val, b.val, vec_int4_z)) + c; }
> ++{ return v_add(v_int32x4(vec_msum(a.val, b.val, vec_int4_z)), c); }
> + // 32 >> 64
> + inline v_int64x2 v_dotprod_fast(const v_int32x4& a, const v_int32x4& b)
> + { return v_dotprod(a, b); }
> +@@ -1518,7 +1518,7 @@ inline v_int64x2 v_dotprod_fast(const v_int32x4& a, 
> const v_int32x4& b, const v_
> + inline v_uint32x4 v_dotprod_expand_fast(const v_uint8x16& a, const 
> v_uint8x16& b)
> + { return v_dotprod_expand(a, b); }
> + inline v_uint32x4 v_dotprod_expand_fast(const v_uint8x16& a, const 
> v_uint8x16& b, const v_uint32x4& c)
> +-{ return v_uint32x4(vec_msum(a.val, b.val, vec_uint4_z)) + c; }
> ++{ return v_add(v_uint32x4(vec_msum(a.val, b.val, vec_uint4_z)), c); }
> +
> + inline v_int32x4 v_dotprod_expand_fast(const v_int8x16& a, const v_int8x16& 
> b)
> + {
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-support/opencv/opencv_4.11.0.bb 
> b/meta-oe/recipes-support/opencv/opencv_4.11.0.bb
> index 07b3a9d9e6..1613b6a3ed 100644
> --- a/meta-oe/recipes-support/opencv/opencv_4.11.0.bb
> +++ b/meta-oe/recipes-support/opencv/opencv_4.11.0.bb
> @@ -31,6 +31,7 @@ SRC_URI = 
> "git://github.com/opencv/opencv.git;name=opencv;branch=4.x;protocol=ht
>             file://download.patch \
>             file://0001-Make-ts-module-external.patch \
>             file://0008-Do-not-embed-build-directory-in-binaries.patch \
> +           file://0001-core-fixed-VSX-intrinsics-implementation.patch \
>             "
>  SRC_URI:append:riscv64 = " 
> file://0001-Use-Os-to-compile-tinyxml2.cpp.patch;patchdir=contrib"
>
> @@ -208,4 +209,10 @@ do_install:append() {
>      if [ -f ${D}${bindir}/setup_vars_opencv4.sh ]; then
>          rm -rf ${D}${bindir}/setup_vars_opencv4.sh
>      fi
> +
> +    for fn in arithm.vsx3.cpp convert.vsx3.cpp; do
> +        if [ -f ${B}/modules/core/$fn ]; then
> +            sed -i -e 's,${S},/usr/src/debug/${PN}/${PV},g' 
> ${B}/modules/core/$fn
> +        fi

Do we know why the absolute paths are being emitted ?

>  }
> --
> 2.25.1
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#115408): 
https://lists.openembedded.org/g/openembedded-devel/message/115408
Mute This Topic: https://lists.openembedded.org/mt/111098421/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to