forked from nodejs/nodejs24
Compare commits
1 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 018f9b40a7 |
@@ -1,32 +1,32 @@
|
||||
31f3d065bb84f069e522e55d0d3035bd364cba5d8a22233ff68005d281e8bb78 node-v24.12.0-aix-ppc64.tar.gz
|
||||
24b03834da0c49f8cf1f22dea7da8ccb65dc705c37a10c0622bfd839c904d6f2 node-v24.12.0-arm64.msi
|
||||
319f221adc5e44ff0ed57e8a441b2284f02b8dc6fc87b8eb92a6a93643fd8080 node-v24.12.0-darwin-arm64.tar.gz
|
||||
4db2a7842267d4d99e35284289b241c43465b08a28ece4fcb6a9460ce7e4c68c node-v24.12.0-darwin-arm64.tar.xz
|
||||
b82ea4c62fd08e250cab59d625e75d77cc5b0a3d60c6698ebee4545c88a169c5 node-v24.12.0-darwin-x64.tar.gz
|
||||
1e4d54f706e0a3613d6415ffe2ccdfd4095d3483971dbbaa4ff909fac5fc211c node-v24.12.0-darwin-x64.tar.xz
|
||||
af120bedced0f62cf6506503347e165032b50274383e0dcc6d216c8d32260172 node-v24.12.0-headers.tar.gz
|
||||
a432e8935507a98ec0fc4c93b48199e83b4bec5b8db7e0caedf058be0c5631bf node-v24.12.0-headers.tar.xz
|
||||
9b2a2eeb98a8eb37361224e2a1d060300ad2dd143af58dfdb16de785df0f1228 node-v24.12.0-linux-arm64.tar.gz
|
||||
a06d42807fb500f7459e5f3fa6cb431447352826ee6f07e14adfeec58a1b3210 node-v24.12.0-linux-arm64.tar.xz
|
||||
66ec79b4d64f4109aedf822108715d0b6097118df9159c2f6321477da4ea17aa node-v24.12.0-linux-ppc64le.tar.gz
|
||||
3a18221623530a35c35611786b33cedef8b84b5d4c683b01ba6341b15043bf97 node-v24.12.0-linux-ppc64le.tar.xz
|
||||
8dc960a2555db1aa77fd131c25be571b9f7844bc8b278e78732b9f580fe7d580 node-v24.12.0-linux-s390x.tar.gz
|
||||
b9038c2c6b51970cd09cc2bee81dd7e0fb7130823d940cec498c4686b204e4ed node-v24.12.0-linux-s390x.tar.xz
|
||||
6159227e0af7d7c3c6bb2fa900452b04a6cb8841a702a79acc613209d70b04d0 node-v24.12.0-linux-x64.tar.gz
|
||||
bdebee276e58d0ef5448f3d5ac12c67daa963dd5e0a9bb621a53d1cefbc852fd node-v24.12.0-linux-x64.tar.xz
|
||||
b1659be3795c70073d72f5c3fb5834f080fec445a72e2f30a7796f65d6ba686c node-v24.12.0.pkg
|
||||
ad24a1f29e55c9539228f2c51a032da279188b681c4dc019cced7f82a0fcdd8d node-v24.12.0.tar.gz
|
||||
6d3e891a016b90f6c6a19ea5cbc9c90c57eef9198670ba93f04fa82af02574ae node-v24.12.0.tar.xz
|
||||
52f6d601c145f886434ed42533626571b388d3ad8d98dad16c310bc09a7ed86e node-v24.12.0-win-arm64.7z
|
||||
b05e7e066f813d35ad3cd9c24eedaee074c012ac7e00071297608fdd2e948ae3 node-v24.12.0-win-arm64.zip
|
||||
8d41356abf5cb62404f311f131b7937f45aaeda5c15d060dc281c2ece817cdce node-v24.12.0-win-x64.7z
|
||||
9c125f61ae947b52e779095830f9cac267846a043ef7192183c84016aaad2812 node-v24.12.0-win-x64.zip
|
||||
e3a50a907b6c71d9f3cb7571980cf3070ec0fadc6fb2a55516d5ff95083990f3 node-v24.12.0-x64.msi
|
||||
986eb1e1d19222f7df4798df657bcc114c41c0d11b8344f03a1bf55a20772efc win-arm64/node.exe
|
||||
ac21e9af08a4d54b057d800c03bc95322946952b8daa811cada98bfb66a8ce8f node-v24.13.0-aix-ppc64.tar.gz
|
||||
9ef67a1cc2b64de38bdd6139d7967699915312df37e9b176277631165e39798d node-v24.13.0-arm64.msi
|
||||
d595961e563fcae057d4a0fb992f175a54d97fcc4a14dc2d474d92ddeea3b9f8 node-v24.13.0-darwin-arm64.tar.gz
|
||||
c59a517e9147f25c6167426875a571432f1478c1d7ee7ecc10baa46b0d0e8545 node-v24.13.0-darwin-arm64.tar.xz
|
||||
6f03c1b48ddbe1b129a6f8038be08e0899f05f17185b4d3e4350180ab669a7f3 node-v24.13.0-darwin-x64.tar.gz
|
||||
4ca0a48233f091a2a69ec28dd58e59f394a1b2d4f052b6c6b10f760377fe266f node-v24.13.0-darwin-x64.tar.xz
|
||||
f5589e2b4b962af05381a31d11c3c9b004daf8bd63c95c0e1a406600daa8ae88 node-v24.13.0-headers.tar.gz
|
||||
9344eddda6621e46d77b26f1b93db25a52592f9eb199f300440fe3c30802f186 node-v24.13.0-headers.tar.xz
|
||||
0f6d40b94c6a2eb6b4c240ffc8b9fd3ada7ab044c177dd413c06e1ef9a63f081 node-v24.13.0-linux-arm64.tar.gz
|
||||
aa881151bd0f9f154a0424dd60a72e9ce10672619121658c278a24327ef46831 node-v24.13.0-linux-arm64.tar.xz
|
||||
18011930b182a1c5b49d2326191fdba58270bdf7b45b8c7df855ef31931b148a node-v24.13.0-linux-ppc64le.tar.gz
|
||||
babe8c72871c751ed288fc1a1aeb2a95d830f732e43d9e4ab0cf137e3273eb8e node-v24.13.0-linux-ppc64le.tar.xz
|
||||
5744610b624f2e82ae1ca279d8ece7b8ca466437239533d2d033565303bc1d39 node-v24.13.0-linux-s390x.tar.gz
|
||||
75f6f780442b7b98a357fd9cf6e383c3d22a8efe9ed4ee1d54ea68ff16889904 node-v24.13.0-linux-s390x.tar.xz
|
||||
6223aad1a81f9d1e7b682c59d12e2de233f7b4c37475cd40d1c89c42b737ffa8 node-v24.13.0-linux-x64.tar.gz
|
||||
e798599612f4bb71333a3397ab0d095fd62214e115aea45aa858a145fc72d67e node-v24.13.0-linux-x64.tar.xz
|
||||
b62d61eb92a1fdcc3fc4951fc087f206eb6f46d088bd9a6630892f4eb5203d13 node-v24.13.0.pkg
|
||||
54cb58921b4ce2831c6690ee823a3d39cfbf2b75f4e556c4c2bde90f3d8fd1ca node-v24.13.0.tar.gz
|
||||
320fe909cbb347dcf516201e4964ef177b8138df9a7f810d0d54950481b3158b node-v24.13.0.tar.xz
|
||||
724fcf1a20ea345cc38fb970044a6f1617a1dc47e477ee5a92fe8b243b95700a node-v24.13.0-win-arm64.7z
|
||||
92b9f9b0c0c123e11e4afc535f0ec19cd987465eea506427553a49971364158a node-v24.13.0-win-arm64.zip
|
||||
04d3619e21c07a84043accbacc73256431c6adbea65d4c026c6eb22ff6fd453a node-v24.13.0-win-x64.7z
|
||||
ca2742695be8de44027d71b3f53a4bdb36009b95575fe1ae6f7f0b5ce091cb88 node-v24.13.0-win-x64.zip
|
||||
1a5f0cd914386f3be2fbaf03ad9fff808a588ce50d2e155f338fad5530575f18 node-v24.13.0-x64.msi
|
||||
91e25b2ef61ee30a9e6afce0f336b4d55d688c3717244e496fa11d69fc3a1717 win-arm64/node.exe
|
||||
afef88b389be8ac30974d2cf69de26001f95f1e9efe1811f2e8467c4cdfe05d0 win-arm64/node.lib
|
||||
74b1851395227ee43a7eb08cc98928234a835c23e9652508637e9cba9ada2b1e win-arm64/node_pdb.7z
|
||||
3de5ee60cc482a316aae5ee19ecc9cb78b382b3b1b6b5ab794e0b8b7f905aa67 win-arm64/node_pdb.zip
|
||||
2ffe3acc0458fdde999f50d11809bbe7c9b7ef204dcf17094e325d26ace101d8 win-x64/node.exe
|
||||
4e3e5e11d6c60e66f65e1292bf524afeb6293f3d96ffdfbbe6756287be307e78 win-arm64/node_pdb.7z
|
||||
087c7cf72188ce884288ddcd818f799f76e20ee1a1536d624e3f5baea1313c05 win-arm64/node_pdb.zip
|
||||
d14ba95cdce1ef7dc9ad3ac74949ca5db38b27378ee30f30a23cf26f9e875a11 win-x64/node.exe
|
||||
be205f2934c17fbd56ce6cdfcfbeb2f6a85061d5141e7a58eba240a8477a12fd win-x64/node.lib
|
||||
f39ab85c97d4df4822e5b38000120daffbf3ffcb35f291d1472a96eac1f3e70b win-x64/node_pdb.7z
|
||||
44e003eba00abbcc93554169979aa466dc78e70bdb6c1bde8552a2b5ca463853 win-x64/node_pdb.zip
|
||||
1120267174deb5e7661e5b9b0a291e55c1937155e1dedd85018cb83eb48f466c win-x64/node_pdb.7z
|
||||
e96ce3ea96ff4067f7cbeece8fe11a06f925676e956859a86e7421d325080eb1 win-x64/node_pdb.zip
|
||||
|
||||
Binary file not shown.
BIN
node-v24.12.0.tar.xz
LFS
BIN
node-v24.12.0.tar.xz
LFS
Binary file not shown.
BIN
node-v24.13.0.tar.xz
LFS
Normal file
BIN
node-v24.13.0.tar.xz
LFS
Normal file
Binary file not shown.
@@ -1,8 +1,13 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 1 13:23:35 UTC 2026 - Hillwood Yang <hillwood@opensuse.org>
|
||||
Thu Jan 15 14:18:29 UTC 2026 - Adam Majer <adam.majer@suse.de>
|
||||
|
||||
- Add v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch, fix build
|
||||
on ppc64le
|
||||
- Update to 24.13.0:
|
||||
* add TLSSocket default error handler (bsc#1256573, CVE-2025-59465)
|
||||
* disable futimes when permission model is enabled (bsc#1256571, CVE-2025-55132)
|
||||
* require full read and write to symlink APIs (bsc#1256569, CVE-2025-55130)
|
||||
* rethrow stack overflow exceptions in async_hooks (bsc#1256574, CVE-2025-59466)
|
||||
* refactor unsafe buffer creation to remove zero-fill toggle (bsc#1256570, CVE-2025-55131)
|
||||
* route callback exceptions through error handlers (bsc#1256576, CVE-2026-21637)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 15 14:24:24 UTC 2025 - Adam Majer <adam.majer@suse.de>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package nodejs24
|
||||
#
|
||||
# Copyright (c) 2026 SUSE LLC and contributors
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -15,13 +15,26 @@
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# TODO: this needs reworking into different format. After 10 years,
|
||||
# we can modernize the specfile
|
||||
|
||||
###########################################################
|
||||
#
|
||||
# WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
|
||||
#
|
||||
# This spec file is generated from a template hosted at
|
||||
# https://github.com/AdamMajer/nodejs-packaging
|
||||
#
|
||||
###########################################################
|
||||
|
||||
# Fedora doesn't have rpm-config-SUSE which provides
|
||||
# ext_man in /usr/lib/rpm/macros.d/macros.obs
|
||||
%if 0%{?fedora_version}
|
||||
%define ext_man .gz
|
||||
%endif
|
||||
|
||||
Name: nodejs24
|
||||
Version: 24.12.0
|
||||
Version: 24.13.0
|
||||
Release: 0
|
||||
|
||||
# Double DWZ memory limits
|
||||
@@ -124,8 +137,8 @@ Source1: https://nodejs.org/dist/v%{version}/SHASUMS256.txt
|
||||
Source2: https://nodejs.org/dist/v%{version}/SHASUMS256.txt.sig
|
||||
Source3: nodejs.keyring
|
||||
|
||||
# Only required to run unit tests in NodeJS 10+
|
||||
Source10: update_npm_tarball.sh
|
||||
# Only required to run unit tests in NodeJS 10+
|
||||
Source10: update_npm_tarball.sh
|
||||
Source11: node_modules.tar.xz
|
||||
Source20: bash_output_helper.bash
|
||||
Source21: README.md
|
||||
@@ -135,7 +148,6 @@ Patch3: fix_ci_tests.patch
|
||||
Patch4: v8_nameclash.patch
|
||||
Patch5: icu_781.patch
|
||||
Patch6: npm-path-normalization.patch
|
||||
Patch7: v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch
|
||||
|
||||
## Patches specific to SUSE and openSUSE
|
||||
# PATCH-FIX-OPENSUSE -- set correct path for dtrace if it is built
|
||||
@@ -151,12 +163,13 @@ Patch104: npm_search_paths.patch
|
||||
|
||||
Patch120: flaky_test_rerun.patch
|
||||
|
||||
|
||||
# Use versioned binaries and paths
|
||||
Patch200: versioned.patch
|
||||
|
||||
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: pkg-config
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: procps
|
||||
BuildRequires: xz
|
||||
BuildRequires: zlib-devel
|
||||
@@ -167,8 +180,8 @@ BuildRequires: config(netcfg)
|
||||
|
||||
# Compiler selection
|
||||
%if 0%{?suse_version} == 1500
|
||||
BuildRequires: gcc13-PIE
|
||||
BuildRequires: gcc13-c++
|
||||
BuildRequires: gcc13-PIE
|
||||
%define forced_gcc_version 13
|
||||
%endif
|
||||
# compiler selection
|
||||
@@ -178,6 +191,7 @@ BuildRequires: gcc13-c++
|
||||
BuildRequires: gcc-c++
|
||||
%endif
|
||||
|
||||
|
||||
# Python dependencies
|
||||
%if 0%{?suse_version}
|
||||
%if %{?suse_version} == 1500
|
||||
@@ -193,8 +207,8 @@ BuildRequires: python3
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} >= 1500
|
||||
BuildRequires: group(nobody)
|
||||
BuildRequires: user(nobody)
|
||||
BuildRequires: group(nobody)
|
||||
%endif
|
||||
|
||||
# shared openssl
|
||||
@@ -209,10 +223,11 @@ BuildRequires: openssl >= %{openssl_req_ver}
|
||||
BuildRequires: (libopenssl1_1-hmac if libopenssl-1_1-devel)
|
||||
BuildRequires: (libopenssl3-hmac if libopenssl-3-devel)
|
||||
%else
|
||||
BuildRequires: libopenssl1_1-hmac
|
||||
BuildRequires: openssl-1_1 >= %{openssl_req_ver}
|
||||
BuildRequires: libopenssl1_1-hmac
|
||||
%endif
|
||||
|
||||
|
||||
# /suse_version
|
||||
%endif
|
||||
|
||||
@@ -302,8 +317,8 @@ ExclusiveArch: not_buildable
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Provides: bundled(libuv) = 1.51.0
|
||||
Provides: bundled(uvwasi) = 0.0.23
|
||||
Provides: bundled(libuv) = 1.51.0
|
||||
Provides: bundled(v8) = 13.6.233.17
|
||||
%if %{with intree_brotli}
|
||||
Provides: bundled(brotli) = 1.1.0
|
||||
@@ -311,6 +326,7 @@ Provides: bundled(brotli) = 1.1.0
|
||||
BuildRequires: pkgconfig(libbrotlidec)
|
||||
%endif
|
||||
|
||||
|
||||
Provides: bundled(llhttp) = 9.3.0
|
||||
Provides: bundled(ngtcp2) = 1.11.0
|
||||
|
||||
@@ -336,8 +352,8 @@ provided by npm.
|
||||
Summary: Development headers for NodeJS 24.x
|
||||
Group: Development/Languages/NodeJS
|
||||
Provides: nodejs-devel = %{version}
|
||||
Requires: %{name} = %{version}
|
||||
Requires: npm24 = %{version}
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description devel
|
||||
This package provides development headers for Node.js needed for creation
|
||||
@@ -354,12 +370,12 @@ Requires: nodejs-common
|
||||
Requires: nodejs24 = %{version}
|
||||
Provides: nodejs-npm = %{version}
|
||||
Obsoletes: nodejs-npm < 4.0.0
|
||||
Provides: npm = %{version}
|
||||
Provides: npm(npm) = 11.6.2
|
||||
Provides: npm = %{version}
|
||||
%if 0%{?suse_version} >= 1500
|
||||
%if %{node_version_number} >= 10
|
||||
Requires: group(nobody)
|
||||
Requires: user(nobody)
|
||||
Requires: group(nobody)
|
||||
%endif
|
||||
%endif
|
||||
Provides: bundled(node-abbrev) = 3.0.1
|
||||
@@ -573,6 +589,8 @@ find -name \*~ -print0 -delete
|
||||
# abnormalities from patching
|
||||
find \( -name \*.js.orig -or -name \*.md.orig -or -name \*.1.orig \) -delete
|
||||
|
||||
|
||||
|
||||
%build
|
||||
# normalize shebang
|
||||
%if %{node_version_number} >= 12
|
||||
@@ -970,7 +988,6 @@ update-alternatives --remove corepack-default %{_bindir}/corepack%{node_version_
|
||||
%endif
|
||||
|
||||
%else
|
||||
|
||||
%pre
|
||||
# remove files that are no longer owned but provided by update-alternatives
|
||||
if ! [ -L %{_mandir}/man1/node.1%{ext_man} ]; then
|
||||
|
||||
@@ -1,265 +0,0 @@
|
||||
From 4208b7849eeee5c2aa76d692e2624bd80422057d Mon Sep 17 00:00:00 2001
|
||||
From: John Platts <john_platts@hotmail.com>
|
||||
Date: Fri, 17 Jan 2025 12:16:49 -0600
|
||||
Subject: [PATCH] v8(highway): Fix for GCC 15 compiler error on PPC8/PPC9/PPC10
|
||||
|
||||
Signed-off-by: rpm-build <rpm-build>
|
||||
---
|
||||
.../highway/src/hwy/ops/ppc_vsx-inl.h | 167 +++++++++++-------
|
||||
1 file changed, 103 insertions(+), 64 deletions(-)
|
||||
|
||||
diff --git a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||||
index d216c54..73e736e 100644
|
||||
--- a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||||
+++ b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h
|
||||
@@ -3701,16 +3701,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) {
|
||||
#endif
|
||||
}
|
||||
|
||||
+template <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<int64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspsxds(VF32 vf32) {
|
||||
+ using VI64 = VFromD<Repartition<int64_t, DFromV<VF32>>>;
|
||||
+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \
|
||||
+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)
|
||||
+ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with
|
||||
+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10)
|
||||
+ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN
|
||||
+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64
|
||||
+ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VI64{vec_signedo(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN
|
||||
+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64
|
||||
+ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VI64{vec_signede(vf32.raw)};
|
||||
+#else
|
||||
+ // Inline assembly fallback for older versions of Clang that do not have the
|
||||
+ // __builtin_vsx_xvcvspsxds intrinsic
|
||||
+ __vector signed long long raw_result;
|
||||
+ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :);
|
||||
+ return VI64{raw_result};
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+template <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<uint64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspuxds(VF32 vf32) {
|
||||
+ using VU64 = VFromD<Repartition<uint64_t, DFromV<VF32>>>;
|
||||
+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \
|
||||
+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)
|
||||
+ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with
|
||||
+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10)
|
||||
+ return VU64{reinterpret_cast<__vector unsigned long long>(
|
||||
+ __builtin_vsx_xvcvspuxds(vf32.raw))};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN
|
||||
+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64
|
||||
+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VU64{vec_unsignedo(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN
|
||||
+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64
|
||||
+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VU64{vec_unsignede(vf32.raw)};
|
||||
+#else
|
||||
+ // Inline assembly fallback for older versions of Clang that do not have the
|
||||
+ // __builtin_vsx_xvcvspuxds intrinsic
|
||||
+ __vector unsigned long long raw_result;
|
||||
+ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :);
|
||||
+ return VU64{raw_result};
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
} // namespace detail
|
||||
#endif // !HWY_S390X_HAVE_Z14
|
||||
|
||||
template <class D, HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw;
|
||||
- return VFromD<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(di64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteTo(df64, v));
|
||||
@@ -3719,12 +3776,11 @@ HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> v) {
|
||||
|
||||
template <class D, HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D du64, VFromD<Rebind<float, D>> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw;
|
||||
- return VFromD<decltype(du64)>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(raw_v))};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(du64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspuxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteTo(df64, v));
|
||||
@@ -3829,12 +3885,10 @@ HWY_API VFromD<D> PromoteUpperTo(D df64, Vec128<uint32_t> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ (void)di64;
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteUpperTo(df64, v));
|
||||
@@ -3843,13 +3897,10 @@ HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D du64, Vec128<float> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(du64)>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(raw_v))};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ (void)du64;
|
||||
+ return detail::VsxXvcvspuxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteUpperTo(df64, v));
|
||||
@@ -3937,20 +3988,18 @@ HWY_INLINE VFromD<D> PromoteEvenTo(hwy::SignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes
|
||||
- // on little-endian PPC, and the vec_sld operation below will shift the even
|
||||
+ // VsxXvcvspsxds expects the source values to be in the odd lanes on
|
||||
+ // little-endian PPC, and the Shuffle2103 operation below will shift the even
|
||||
// lanes of normalized_v into the odd lanes.
|
||||
- return VFromD<D>{
|
||||
- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))};
|
||||
+ return VsxXvcvspsxds(Shuffle2103(normalized_v));
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC.
|
||||
- return VFromD<D>{__builtin_vsx_xvcvspsxds(normalized_v.raw)};
|
||||
+ // VsxXvcvspsxds expects the source values to be in the even lanes on
|
||||
+ // big-endian PPC.
|
||||
+ return VsxXvcvspsxds(normalized_v);
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -3965,22 +4014,18 @@ HWY_INLINE VFromD<D> PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes
|
||||
- // on little-endian PPC, and the vec_sld operation below will shift the even
|
||||
- // lanes of normalized_v into the odd lanes.
|
||||
- return VFromD<D>{
|
||||
- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds(
|
||||
- vec_sld(normalized_v.raw, normalized_v.raw, 4)))};
|
||||
+ // VsxXvcvspuxds expects the source values to be in the odd lanes
|
||||
+ // on little-endian PPC, and the Shuffle2103 operation below will shift the
|
||||
+ // even lanes of normalized_v into the odd lanes.
|
||||
+ return VsxXvcvspuxds(Shuffle2103(normalized_v));
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes
|
||||
+ // VsxXvcvspuxds expects the source values to be in the even lanes
|
||||
// on big-endian PPC.
|
||||
- return VFromD<D>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(normalized_v.raw))};
|
||||
+ return VsxXvcvspuxds(normalized_v);
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4022,20 +4067,18 @@ HWY_INLINE VFromD<D> PromoteOddTo(hwy::SignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes
|
||||
+ // VsxXvcvspsxds expects the source values to be in the odd lanes
|
||||
// on little-endian PPC
|
||||
- return VFromD<D>{__builtin_vsx_xvcvspsxds(normalized_v.raw)};
|
||||
+ return VsxXvcvspsxds(normalized_v);
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes
|
||||
- // of normalized_v into the even lanes.
|
||||
- return VFromD<D>{
|
||||
- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))};
|
||||
+ // VsxXvcvspsxds expects the source values to be in the even lanes
|
||||
+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd
|
||||
+ // lanes of normalized_v into the even lanes.
|
||||
+ return VsxXvcvspsxds(Shuffle0321(normalized_v));
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4050,22 +4093,18 @@ HWY_INLINE VFromD<D> PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes
|
||||
+ // VsxXvcvspuxds expects the source values to be in the odd lanes
|
||||
// on little-endian PPC
|
||||
- return VFromD<D>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(normalized_v.raw))};
|
||||
+ return VsxXvcvspuxds(normalized_v);
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes
|
||||
- // of normalized_v into the even lanes.
|
||||
- return VFromD<D>{
|
||||
- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds(
|
||||
- vec_sld(normalized_v.raw, normalized_v.raw, 4)))};
|
||||
+ // VsxXvcvspuxds expects the source values to be in the even lanes
|
||||
+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd
|
||||
+ // lanes of normalized_v into the even lanes.
|
||||
+ return VsxXvcvspuxds(Shuffle0321(normalized_v));
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
--
|
||||
2.50.0
|
||||
|
||||
Reference in New Issue
Block a user