summaryrefslogtreecommitdiff
path: root/libre/iceweasel/fix-i686-xsimd-incomplete.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libre/iceweasel/fix-i686-xsimd-incomplete.patch')
-rw-r--r--libre/iceweasel/fix-i686-xsimd-incomplete.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/libre/iceweasel/fix-i686-xsimd-incomplete.patch b/libre/iceweasel/fix-i686-xsimd-incomplete.patch
new file mode 100644
index 000000000..c0df0054b
--- /dev/null
+++ b/libre/iceweasel/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 <class Arch>
+ int32_t FirstNon8Bit(const char16_t* str, const char16_t* end) {
+- const uint32_t numUnicharsPerVector = xsimd::batch<int16_t, Arch>::size;
+ using p = Non8BitParameters<sizeof(size_t)>;
+ 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<int16_t, Arch> vectmask(static_cast<int16_t>(shortMask));
+- for (; i < vectWalkEnd; i += numUnicharsPerVector) {
+- const auto vect = xsimd::batch<int16_t, Arch>::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;