From f309838365cf233674c416b31686668380674732 Mon Sep 17 00:00:00 2001 From: Milad Fa Date: Sun, 2 May 2021 23:07:55 -0400 Subject: [PATCH 1/2] deps: V8: Add Power9/10 to the supported list and enable related features --- common.gypi | 2 +- deps/v8/src/base/cpu.cc | 11 ++++++++++- deps/v8/src/base/cpu.h | 1 + deps/v8/src/codegen/ppc/assembler-ppc.cc | 15 +++++++++++---- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/common.gypi b/common.gypi index aa4279d93ca35c..7aa60e1f18dc79 100644 --- a/common.gypi +++ b/common.gypi @@ -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 ##### diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc index bbdae525e30b39..776fdaf8be6cdd 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 // sysconf() @@ -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; @@ -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; diff --git a/deps/v8/src/base/cpu.h b/deps/v8/src/base/cpu.h index 4b4becfa204937..a3410b19f2744d 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 b9f09e23f23c5c..0431baf993e62f 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); } From e0d4d9da0fae6e66bc4f61332e47161281c8b08e Mon Sep 17 00:00:00 2001 From: Milad Fa Date: Sun, 2 May 2021 23:13:49 -0400 Subject: [PATCH 2/2] fix indentation --- deps/v8/src/base/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/v8/src/base/cpu.h b/deps/v8/src/base/cpu.h index a3410b19f2744d..98688a3cd38d6d 100644 --- a/deps/v8/src/base/cpu.h +++ b/deps/v8/src/base/cpu.h @@ -70,7 +70,7 @@ class V8_BASE_EXPORT CPU final { PPC_POWER7, PPC_POWER8, PPC_POWER9, -PPC_POWER10, + PPC_POWER10, PPC_G4, PPC_G5, PPC_PA6T