SpiderMonkey JIT with full WASM support for Power ISA (ppc64le)

I’ve been working on extending the JIT for 64-bit little endian Power ISA by Cameron Kaiser ( SpiderMonkey JIT for Power ISA (ppc64le) ) with notable changes:

  • Support ESR 153 and latest trunk codes (as of July 8 2026)
  • Full WebAssembly support
  • WASM SIMD
  • JSPI
  • Additional Optimization for POWER10
  • ARM64-based host simulator for ppc64le

Is the stack-direction the same as x86?

Yes.

Is the code for a little-endian architecture?

Yes.

How is this architecture different from x64 or ARM64?

(copied from SpiderMonkey JIT for Power ISA (ppc64le) ):
ppc64le’s main differences from x64 are that it uses a link register, it has up to eight independent condition codes plus other condition codes in special purpose registers, it does not have strict store ordering, and it is a fixed-length instruction word (even Power10, which has “double” instructions, still aligns to a 32-bit word). Like MIPS, there is a limited displacement for branches and offsets.

ppc64le’s main differences from ARM64 is that it has up to eight independent condition codes plus other condition codes in special purpose registers, and that the link register is not a GPR (it’s a special purpose register), which requires it to be transferred and pushed separately.

Additionally, the standard ABI for Power ISA requires a linkage area of no less than 32 bytes on the top of the stack for the callee to store the link register, condition register, stack pointer and TOC register. This is dealt with in the port by pulling down dummy frames as necessary at ABI-Ion and ABI-Wasm edges (otherwise things like the Wasm Frame would get walloped, since it sits on top of the stack).

Do you expect that changes will be needed to the design or architecture of the JITs to support this architecture? Or would you be ok without JIT support?

Not substantially. There are small point adjustments that are required, as there are for all the other existing architectures, but no massive surgery is needed to introduce the Power ISA port.

Any other comments regarding the technical impact of porting to this architecture.

I deliberately leave the support for PPC64 Big Endian out of this draft.

Who will be the contact person(s) of this project?

Me, Trung Le, 8 at tle dawt tle dawt id dawt com
Cameron Kaiser, ckaiser at floodgap dawt com

Do the contact person(s) have dedicated time to maintain the port?

Yes.

Do you have a plan for testing the port (continuous integration or similar)

Currently community members test the JIT by Fedora / ArchPOWER / Chimera / Debian.

There is a JIT copr project with Fedora’s port maintainer.

The jit-test and jstests offers sufficient coverage.

Any other comments about maintenance?

As above, I’ve been working on this port with the support from Raptor Computing System, Oregon State University and the PPC Linux community (Fedora, Arch, Chimera and Debian).

How commonly used is the architecture you are targeting?

64-bit Power ISA is still a significant server architecture, and Raptor POWER9 systems are currently the most powerful machines that have FSF Respects Your Freedom certification which has led to a growing workstation community.

Furthermore IBM is still continuing investing in POWER architecture with commercial offerings of Power10 and soon Power11.

What use cases does SpiderMonkey running on this port open up which were closed before?

Full JIT with WASM support improved JS application perf dramatically. This would open up lots of improvements for projects like GNOME Javascript (gjs)

What use case(s) does this open for Firefox?

(copied from SpiderMonkey JIT for Power ISA (ppc64le) ):
Greater performance and additional support for a documented open computing platform consistent with Mozilla’s core mission.

Is there a business case for this port for Mozilla or Firefox?

(copied from SpiderMonkey JIT for Power ISA (ppc64le) ):
There is for SpiderMonkey, as Power ISA’s presence in server and HPC systems may make it a JIT-enabled version competitive with V8 for server-side applications.

Any other comments regarding impacts the port may have more broadly?

Do you have any further information you’d like us to know?

As mentioned earlier, this port does NOT support PPC64 Big Endian. The submission for BE support will come after this port.

I maintain a GitHub Pull Request of the work at Add PPC64 JIT support for latest upstream codes by runlevel5 · Pull Request #1 · runlevel5/firefox-ppc64 · GitHub

Trung Lê