From e74cde76c104df82b120a7b13964cb786da8f565 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 22 May 2023 20:18:50 +0200 Subject: community -> extra --- extra/embree/PKGBUILD | 27 +++++++++++++++++++++++++++ extra/embree/embree-3.2.0-intrinsic.patch | 12 ++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 extra/embree/PKGBUILD create mode 100644 extra/embree/embree-3.2.0-intrinsic.patch (limited to 'extra/embree') diff --git a/extra/embree/PKGBUILD b/extra/embree/PKGBUILD new file mode 100644 index 00000000..522a3482 --- /dev/null +++ b/extra/embree/PKGBUILD @@ -0,0 +1,27 @@ +# avoid breakage in newer CPU ISAs, supporting SSE2 should be enough for +# 32-bit platforms +# for special use cases (like running Archlinux32 on 64-bit hardware) +# we can support up to SSE4.2 (everything above is too hard to fix). +# As Embree chooses the ISA at runtime, this is no problem for machines +# not having SSE4.2 +eval "$( + declare -f build | \ + sed ' + /cmake/s/-DEMBREE_MAX_ISA="AVX512SKX"/-DEMBREE_MAX_ISA="SSE4.2"/ + ' +)" + +# some 32-bit fixes around intrinsics where applied to WIN32 only, +# applying a counter-patch here +source+=('embree-3.2.0-intrinsic.patch') +sha256sums+=('7d5e44a034b02e14d7d37cd038d8c279d13d66b54a449c09e0687458f117723f') +eval "$( + { + declare -f prepare || \ + printf 'prepare() {\n}\n' + } \ + | sed ' + $i cd "$srcdir/$pkgname-$pkgver" \ + patch -Np1 -i "$srcdir/embree-3.2.0-intrinsic.patch" + ' +)" diff --git a/extra/embree/embree-3.2.0-intrinsic.patch b/extra/embree/embree-3.2.0-intrinsic.patch new file mode 100644 index 00000000..afb49357 --- /dev/null +++ b/extra/embree/embree-3.2.0-intrinsic.patch @@ -0,0 +1,12 @@ +diff -rauN embree-3.2.0/common/simd/vint4_sse2.h embree-3.2.0-intrinsic-patch/common/simd/vint4_sse2.h +--- embree-3.2.0/common/simd/vint4_sse2.h 2018-05-15 08:02:58.000000000 +0200 ++++ embree-3.2.0-intrinsic-patch/common/simd/vint4_sse2.h 2018-06-20 20:44:57.322042285 +0200 +@@ -455,7 +455,7 @@ + __forceinline int toScalar(const vint4& v) { return _mm_cvtsi128_si32(v); } + + __forceinline size_t toSizeT(const vint4& v) { +-#if defined(__WIN32__) && !defined(__X86_64__) // win32 workaround ++#if !defined(__X86_64__) // win32 workaround + return toScalar(v); + #else + return _mm_cvtsi128_si64(v); -- cgit v1.2.3-70-g09d2