summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilad Fa <mfarazma@redhat.com>2021-05-02 23:26:03 -0400
committerRichard Lau <rlau@redhat.com>2021-07-23 11:41:14 +0100
commit93a1a3c5aede43e2ade63d48ada343f7e08d2b0d (patch)
treeaba4972fac42a957c3fcb05ee4083123a3938a21
parent499e56babe2565fa6f13cb3001d8da8c81255bee (diff)
downloadnode-new-93a1a3c5aede43e2ade63d48ada343f7e08d2b0d.tar.gz
deps: V8: cherry-pick 530080c44af2
Original commit message: ``` PPC: Add Power10 to the supported list and enable related features This CL adds Power10 recognition to Linux, AIX as well as IBMi. Enabled features include: MODULO FPR_GPR_MOV SIMD LWSYNC ISELECT VSX Change-Id: Ifc337e6497a3efe9697bcf03063a2b94471f96e9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2855041 Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Junliang Yan <junyan@redhat.com> Reviewed-by: Vasili Skurydzin <vasili.skurydzin@ibm.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#74279} ``` Refs: https://github.com/v8/v8/commit/530080c44af254646a3cc3f364aac26b1b5ac10c PR-URL: https://github.com/nodejs/node/pull/38509 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Ash Cripps <acripps@redhat.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
-rw-r--r--common.gypi2
-rw-r--r--deps/v8/src/base/cpu.cc11
-rw-r--r--deps/v8/src/base/cpu.h1
-rw-r--r--deps/v8/src/codegen/ppc/assembler-ppc.cc15
4 files changed, 23 insertions, 6 deletions
diff --git a/common.gypi b/common.gypi
index a6556a4cb7..102a1facd4 100644
--- a/common.gypi
+++ b/common.gypi
@@ -34,7 +34,7 @@
# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
- 'v8_embedder_string': '-node.46',
+ 'v8_embedder_string': '-node.47',
##### V8 defaults for Node.js #####
diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc
index 6ab0ffee29..0b1514b575 100644
--- a/deps/v8/src/base/cpu.cc
+++ b/deps/v8/src/base/cpu.cc
@@ -27,6 +27,9 @@
#ifndef POWER_9
#define POWER_9 0x20000
#endif
+#ifndef POWER_10
+#define POWER_10 0x40000
+#endif
#endif
#if V8_OS_POSIX
#include <unistd.h> // sysconf()
@@ -639,7 +642,10 @@ CPU::CPU()
part_ = -1;
if (auxv_cpu_type) {
- if (strcmp(auxv_cpu_type, "power9") == 0) {
+ if (strcmp(auxv_cpu_type, "power10") == 0) {
+ part_ = PPC_POWER10;
+ }
+ else if (strcmp(auxv_cpu_type, "power9") == 0) {
part_ = PPC_POWER9;
} else if (strcmp(auxv_cpu_type, "power8") == 0) {
part_ = PPC_POWER8;
@@ -660,6 +666,9 @@ CPU::CPU()
#elif V8_OS_AIX
switch (_system_configuration.implementation) {
+ case POWER_10:
+ part_ = PPC_POWER10;
+ break;
case POWER_9:
part_ = PPC_POWER9;
break;
diff --git a/deps/v8/src/base/cpu.h b/deps/v8/src/base/cpu.h
index 4b4becfa20..98688a3cd3 100644
--- a/deps/v8/src/base/cpu.h
+++ b/deps/v8/src/base/cpu.h
@@ -70,6 +70,7 @@ class V8_BASE_EXPORT CPU final {
PPC_POWER7,
PPC_POWER8,
PPC_POWER9,
+ PPC_POWER10,
PPC_G4,
PPC_G5,
PPC_PA6T
diff --git a/deps/v8/src/codegen/ppc/assembler-ppc.cc b/deps/v8/src/codegen/ppc/assembler-ppc.cc
index 2877f16895..fa28d4ec50 100644
--- a/deps/v8/src/codegen/ppc/assembler-ppc.cc
+++ b/deps/v8/src/codegen/ppc/assembler-ppc.cc
@@ -67,21 +67,28 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
#ifndef USE_SIMULATOR
// Probe for additional features at runtime.
base::CPU cpu;
- if (cpu.part() == base::CPU::PPC_POWER9) {
+ if (cpu.part() == base::CPU::PPC_POWER9 ||
+ cpu.part() == base::CPU::PPC_POWER10) {
supported_ |= (1u << MODULO);
}
#if V8_TARGET_ARCH_PPC64
- if (cpu.part() == base::CPU::PPC_POWER8) {
+ if (cpu.part() == base::CPU::PPC_POWER8 ||
+ cpu.part() == base::CPU::PPC_POWER9 ||
+ cpu.part() == base::CPU::PPC_POWER10) {
supported_ |= (1u << FPR_GPR_MOV);
}
#endif
if (cpu.part() == base::CPU::PPC_POWER6 ||
cpu.part() == base::CPU::PPC_POWER7 ||
- cpu.part() == base::CPU::PPC_POWER8) {
+ cpu.part() == base::CPU::PPC_POWER8 ||
+ cpu.part() == base::CPU::PPC_POWER9 ||
+ cpu.part() == base::CPU::PPC_POWER10) {
supported_ |= (1u << LWSYNC);
}
if (cpu.part() == base::CPU::PPC_POWER7 ||
- cpu.part() == base::CPU::PPC_POWER8) {
+ cpu.part() == base::CPU::PPC_POWER8 ||
+ cpu.part() == base::CPU::PPC_POWER9 ||
+ cpu.part() == base::CPU::PPC_POWER10) {
supported_ |= (1u << ISELECT);
supported_ |= (1u << VSX);
}