summaryrefslogtreecommitdiff
path: root/www-client/chromium/files/chromium-104-v8-neon.patch
diff options
context:
space:
mode:
Diffstat (limited to 'www-client/chromium/files/chromium-104-v8-neon.patch')
-rw-r--r--www-client/chromium/files/chromium-104-v8-neon.patch72
1 files changed, 0 insertions, 72 deletions
diff --git a/www-client/chromium/files/chromium-104-v8-neon.patch b/www-client/chromium/files/chromium-104-v8-neon.patch
deleted file mode 100644
index ee573f8862e6..000000000000
--- a/www-client/chromium/files/chromium-104-v8-neon.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0fc6592cf8867f0cd6d8d41b43392fb52d359649 Mon Sep 17 00:00:00 2001
-From: Jose Dapena Paz <jdapena@igalia.com>
-Date: Tue, 07 Jun 2022 15:44:35 +0200
-Subject: [PATCH] GCC: fix compilation of NEON64 extract_first_nonzero_index
-
-GCC fails to compile extract_first_nonzero_index because of the
-signedness type mismatch in the NEON intrinsics.
-
-Bug: chromium:819294
-Change-Id: I9b73e5fa1d5fbf161740ab1b5d77f5c494369dfa
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3693709
-Reviewed-by: Toon Verwaest <verwaest@chromium.org>
-Commit-Queue: José Dapena Paz <jdapena@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#81063}
----
-
-diff --git a/v8/src/objects/simd.cc b/v8/src/objects/simd.cc
-index d3cedfe..0a73b9c 100644
---- a/v8/src/objects/simd.cc
-+++ b/v8/src/objects/simd.cc
-@@ -95,24 +95,21 @@
- }
-
- template <>
--inline int extract_first_nonzero_index(int32x4_t v) {
-- int32x4_t mask = {4, 3, 2, 1};
-+inline int extract_first_nonzero_index(uint32x4_t v) {
-+ uint32x4_t mask = {4, 3, 2, 1};
- mask = vandq_u32(mask, v);
- return 4 - vmaxvq_u32(mask);
- }
-
- template <>
--inline int extract_first_nonzero_index(int64x2_t v) {
-- int32x4_t mask = {2, 0, 1, 0}; // Could also be {2,2,1,1} or {0,2,0,1}
-- mask = vandq_u32(mask, vreinterpretq_s32_s64(v));
-+inline int extract_first_nonzero_index(uint64x2_t v) {
-+ uint32x4_t mask = {2, 0, 1, 0}; // Could also be {2,2,1,1} or {0,2,0,1}
-+ mask = vandq_u32(mask, vreinterpretq_u32_u64(v));
- return 2 - vmaxvq_u32(mask);
- }
-
--template <>
--inline int extract_first_nonzero_index(float64x2_t v) {
-- int32x4_t mask = {2, 0, 1, 0}; // Could also be {2,2,1,1} or {0,2,0,1}
-- mask = vandq_u32(mask, vreinterpretq_s32_f64(v));
-- return 2 - vmaxvq_u32(mask);
-+inline int32_t reinterpret_vmaxvq_u64(uint64x2_t v) {
-+ return vmaxvq_u32(vreinterpretq_u32_u64(v));
- }
- #endif
-
-@@ -204,14 +201,14 @@
- }
- #elif defined(NEON64)
- if constexpr (std::is_same<T, uint32_t>::value) {
-- VECTORIZED_LOOP_Neon(int32x4_t, int32x4_t, vdupq_n_u32, vceqq_u32,
-+ VECTORIZED_LOOP_Neon(uint32x4_t, uint32x4_t, vdupq_n_u32, vceqq_u32,
- vmaxvq_u32)
- } else if constexpr (std::is_same<T, uint64_t>::value) {
-- VECTORIZED_LOOP_Neon(int64x2_t, int64x2_t, vdupq_n_u64, vceqq_u64,
-- vmaxvq_u32)
-+ VECTORIZED_LOOP_Neon(uint64x2_t, uint64x2_t, vdupq_n_u64, vceqq_u64,
-+ reinterpret_vmaxvq_u64)
- } else if constexpr (std::is_same<T, double>::value) {
-- VECTORIZED_LOOP_Neon(float64x2_t, float64x2_t, vdupq_n_f64, vceqq_f64,
-- vmaxvq_f64)
-+ VECTORIZED_LOOP_Neon(float64x2_t, uint64x2_t, vdupq_n_f64, vceqq_f64,
-+ reinterpret_vmaxvq_u64)
- }
- #else
- UNREACHABLE();