Closed Bug 1407535 (Rabaldr-ARM64) Opened 2 years ago Closed 2 years ago

[meta] ARM64 support for wasm baseline (Rabaldr)

Categories

(Core :: JavaScript Engine: JIT, enhancement, P3)

ARM64
All
enhancement

Tracking

()

RESOLVED FIXED
Tracking Status
firefox58 --- wontfix
firefox59 --- wontfix
firefox60 --- affected

People

(Reporter: lth, Assigned: lth)

References

(Blocks 4 open bugs)

Details

(Keywords: meta, Whiteboard: [geckoview:crow])

Attachments

(4 obsolete files)

A fairly modest amount of effort is necessary to support WebAssembly on aarch64 with a baseline-only strategy.  At least the following work items:

* stubs for calling in and calling out
* interrupt / signal handling for OOB handling
* huge-memory support
* register assignment, architecture strategies, frame layouts, etc
* port the baseline compiler by instantiating its porting APIs, generalizing
* fill in many assembler macros that are now MOZ_CRASH, this includes some
  hard OOL cases (non-trivial amounts of logic)
* resolve the simulator situation wrt atomics (useless, last we looked)

The baseline compiler is becoming large enough that it is also time to refactor it a bit, so that work should happen first.
Depends on: 1336027
Depends on: 1214199
Depends on: 1313336
Depends on: 1216486
Depends on: 1409548
Attached file arm64-queue.bundle (obsolete) —
WIP.  Adds most of the ARM64 support to wasm baseline (all except some atomics support and two OOL cases).  Initial work on masm and other issues.
Depends on: 1430161
Depends on: 1431402
Attached patch arm64-rollup.patch (obsolete) — Splinter Review
Rollup patch - enough support to actually compile and run some code.  (An old Smalltalk joke holds that your engine works when it can execute "3+4" correctly.  This queue can do that.)
Assignee: nobody → lhansen
Attachment #8936114 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Depends on: 1435146
Depends on: 1435220
Depends on: 1435968
Work in progress.
Attachment #8944369 - Attachment is obsolete: true
Alias: Rebaldr
Whiteboard: [geckoview:crow]
Hardware: Other → ARM64
Alias: Rebaldr → Rabaldr
I have some stubs work left but won't do that until the stubs rewrite lands.
Alias: Rabaldr → Rabaldr-ARM64
Depends on: 1319203
Summary: [meta] Wasm: arm64 / aarch64 support for baseline (Rabaldr) → [meta] ARM64 support for wasm baseline (Rabaldr)
Depends on: 1436953
Depends on: 1436955
Depends on: 1437780
No longer depends on: 1435968
No longer depends on: 1435220
No longer depends on: 1336027
Depends on: 1438113
Attachment #8948668 - Attachment is obsolete: true
Blocks: 1438160
Depends on: 1438800
Depends on: 1437455
Depends on: 1430743
Depends on: 1439333
Depends on: 1439403
Depends on: 1439404
Blocks: Fennec-ARM64
Depends on: 1439570
Depends on: 1441142
No longer depends on: 1214199
Blocks: 1442534
Blocks: 1442536
Blocks: 1442540
Blocks: 1442544
Depends on: 1442583
Depends on: 1443082
Attachment #8950861 - Attachment is obsolete: true
No longer depends on: 1443082
No longer depends on: 1439570
Try run for final patch queue is green:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=fed7d260309c153fc78ec295297a601a37926319

Hardware testing is green.

Waiting on a couple of minor reviews; basically ready to land.
... and it runs my wasm raytracer demo on my Nexus 5X.  My work here is done.
No longer blocks: 1442536
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Depends on: 1521939
You need to log in before you can comment on or make changes to this bug.