Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
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: v8/v8@530080c

PR-URL: #38509
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Ash Cripps <acripps@redhat.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
  • Loading branch information
Milad Fa authored and richardlau committed Jul 5, 2021
commit ca90848ffa28e3db8f6b6ae32828c04c0011f95f
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -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 #####

Expand Down
11 changes: 10 additions & 1 deletion deps/v8/src/base/cpu.cc
Original file line number Diff line number Diff line change
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 @@ -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;
Expand All @@ -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;
Expand Down
1 change: 1 addition & 0 deletions deps/v8/src/base/cpu.h
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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