Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v14.x]: deps: V8: Add Power9/10 to the supported list and enable related features #38508

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion common.gypi
Expand Up @@ -36,7 +36,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.63',
'v8_embedder_string': '-node.64',

##### V8 defaults for Node.js #####

Expand Down
11 changes: 10 additions & 1 deletion deps/v8/src/base/cpu.cc
Expand Up @@ -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()
Expand Down Expand Up @@ -646,7 +649,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;
Expand All @@ -667,6 +673,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;
Expand Down
1 change: 1 addition & 0 deletions deps/v8/src/base/cpu.h
Expand Up @@ -70,6 +70,7 @@ class V8_BASE_EXPORT CPU final {
PPC_POWER7,
PPC_POWER8,
PPC_POWER9,
PPC_POWER10,
PPC_G4,
PPC_G5,
PPC_PA6T
Expand Down
15 changes: 11 additions & 4 deletions deps/v8/src/codegen/ppc/assembler-ppc.cc
Expand Up @@ -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);
}
Expand Down