Add basic inline code path for memory.copy and memory.fill
Categories
(Core :: JavaScript: WebAssembly, enhancement, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox72 | --- | fixed |
People
(Reporter: rhunt, Assigned: rhunt)
References
Details
Attachments
(2 files)
Bug 1591047 improved the performance of our OOL path for memory.copy and memory.fill. This bug will track adding a basic inline code path.
This path may not use SIMD as it looks like it may be easiest to use only GPR's to start with.
Assignee | ||
Comment 1•6 years ago
|
||
Patch with baseline/ion inlines paths for memory.copy (with constant length) and memory.fill (with constant length and value) [1]. It uses up to 64bit registers, but no SIMD.
[1] https://treeherder.mozilla.org/#/jobs?repo=try&revision=6d9326058070ea27921b26837ad9c2b8516e10e0
Assignee | ||
Comment 2•6 years ago
|
||
Assignee | ||
Comment 3•6 years ago
|
||
This commit adds an inline code path for memory.copy/fill for Ion and Baseline
for all platforms. To keep things simple, I reused the plain wasm load/store
codegen with integer types up to 64bits. A future commit can add SIMD support
as needed.
A copy with constant length is reduced to a series of loads (from low-to-high)
onto the value stack (for baseline), or onto a stack of definitions (for ion).
Then a series of stores are emitted (from high-to-low) from the value stack or
temp definition stack.
A fill with constant length and value is reduced to a series of stores (from
high-to-low). The stores use the widest transfer width as possible, and the
value is splatted as appropriate to fill the whole integer.
Depends on D50380
Updated•6 years ago
|
Updated•6 years ago
|
Updated•6 years ago
|
Updated•6 years ago
|
Assignee | ||
Comment 4•6 years ago
|
||
Comment 6•6 years ago
|
||
Backed out for SM bustage at WasmBaselineCompile.cpp
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=276238068&repo=autoland&lineNumber=3218
Backout: https://hg.mozilla.org/integration/autoland/rev/109f738f08cbf047a751bef8fda45f4d053b4278
Assignee | ||
Comment 7•6 years ago
|
||
I need to stop skimping on try runs. Missed no-jit compile error from not adding an entry to MacroAssembler-none.
Comment 9•6 years ago
|
||
Backed out for build bustages at WasmBaselineCompile.cpp
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=276303965&repo=autoland&lineNumber=3399
Backout: https://hg.mozilla.org/integration/autoland/rev/f6aa348ba29ac0d8310d5ea7a447828dc22f0543
Assignee | ||
Comment 10•6 years ago
|
||
Comment 11•6 years ago
|
||
Comment 12•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/26c65691696b
https://hg.mozilla.org/mozilla-central/rev/c06659c20d41
Description
•