From b5bd72a494367c8be09989235503bbdbc018cd81 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 18 Apr 2023 18:42:04 +0200 Subject: extra/firefox: added patch from Parabola for i686 SIMD removal --- extra/firefox/PKGBUILD | 11 ++++++++++ extra/firefox/fix-i686-xsimd-incomplete.patch | 29 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 extra/firefox/fix-i686-xsimd-incomplete.patch (limited to 'extra/firefox') diff --git a/extra/firefox/PKGBUILD b/extra/firefox/PKGBUILD index b5dc7982..172abdf7 100644 --- a/extra/firefox/PKGBUILD +++ b/extra/firefox/PKGBUILD @@ -248,3 +248,14 @@ eval "$( $ i patch -p1 -i "$srcdir/fix-i686-build-moz-1792159.patch" ' )" + +# from Parabola (thanks go to bill-auger) +source+=('fix-i686-xsimd-incomplete.patch') +sha256sums+=('c3ce181fbb0142055aa6dd17f3cda2ba6a1e54d7a689a8c6e9cce76aa40e6544') +b2sums+=('3e6fd4cebe0fd4c250ccf5b04e12b93e5f4cc2d139301316c987cc07a57b4b6b49b830d745520a82f5ac59da8d17f728a3ecce4dccf21804a2d6a256a6f76472') +eval "$( + declare -f prepare | \ + sed ' + $ i patch -p1 -i "$srcdir/fix-i686-xsimd-incomplete.patch" + ' +)" diff --git a/extra/firefox/fix-i686-xsimd-incomplete.patch b/extra/firefox/fix-i686-xsimd-incomplete.patch new file mode 100644 index 00000000..c0df0054 --- /dev/null +++ b/extra/firefox/fix-i686-xsimd-incomplete.patch @@ -0,0 +1,29 @@ +diff --git a/dom/base/nsTextFragmentGeneric.h b/dom/base/nsTextFragmentGeneric.h +index 10e16fcfaa..87d9e0d075 100644 +--- a/dom/base/nsTextFragmentGeneric.h ++++ b/dom/base/nsTextFragmentGeneric.h +@@ -13,7 +13,6 @@ namespace mozilla { + + template + int32_t FirstNon8Bit(const char16_t* str, const char16_t* end) { +- const uint32_t numUnicharsPerVector = xsimd::batch::size; + using p = Non8BitParameters; + const size_t mask = p::mask(); + const uint32_t numUnicharsPerWord = p::numUnicharsPerWord(); +@@ -28,16 +27,6 @@ int32_t FirstNon8Bit(const char16_t* str, const char16_t* end) { + if (str[i] > 255) return i; + } + +- // Check one batch at a time. +- const int32_t vectWalkEnd = +- ((len - i) / numUnicharsPerVector) * numUnicharsPerVector; +- const uint16_t shortMask = 0xff00; +- xsimd::batch vectmask(static_cast(shortMask)); +- for (; i < vectWalkEnd; i += numUnicharsPerVector) { +- const auto vect = xsimd::batch::load_aligned(str + i); +- if (xsimd::any((vect & vectmask) != 0)) return i; +- } +- + // Check one word at a time. + const int32_t wordWalkEnd = + ((len - i) / numUnicharsPerWord) * numUnicharsPerWord; -- cgit v1.2.3-70-g09d2