Random ARM64 fixes
Categories
(Core :: JavaScript: WebAssembly, defect, P3)
Tracking
()
People
(Reporter: lth, Assigned: lth)
References
Details
Attachments
(8 files, 1 obsolete file)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
Various fixes for bugs and poor code I've come across while investigating bug 1678097.
Assignee | ||
Comment 1•4 years ago
|
||
branchTestPtr can be optimized in the manner of branchTest32, using CBZ/CBNZ
when the inputs are the same and we're testing for zero/nonzero.
Also tidy up the logic of branchTest32 to make it slightly easier to understand.
Assignee | ||
Comment 2•4 years ago
|
||
This is not a functional change but allows switches to be emitted for wasm:
wasm disallows the use of an ImmPtr for movePatchablePtr but allows ImmWord,
this is in order to guard against embedded pointers in the serializable
machine code. For a patchable word that will always be patched after
code is deserialized, we can use ImmWord, as we do on other platforms.
Depends on D97770
Assignee | ||
Comment 3•4 years ago
|
||
Every operation that updates the SP must be sure to sync the SP. Various
addToStackPtr APIs did not do this.
Depends on D97771
Assignee | ||
Comment 4•4 years ago
|
||
ARM64 inherited the wasmLoad / wasmStore API from ARM and MIPS wherein
the ptr register is clobberable by the macroassembler, so as to avoid
allocating a temp register. On ARM64 there are several temp registers,
so this is not necessary, and we can generate better code (from Ion)
by not clobbering.
Depends on D97771
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d84189f9e733 Optimize branchTestPtr on ARM64. r=nbp https://hg.mozilla.org/integration/autoland/rev/f49a0516ef05 Placeholder for patchable label on ARM64 must be ImmWord, not ImmPtr. r=nbp https://hg.mozilla.org/integration/autoland/rev/10cf061462ef Don't clobber ptr register for ARM64 load/store. r=nbp
Comment 6•4 years ago
|
||
bugherder |
Assignee | ||
Comment 7•4 years ago
|
||
Depends on D100025
Assignee | ||
Comment 8•4 years ago
|
||
Depends on D100112
Assignee | ||
Comment 9•4 years ago
|
||
Depends on D100113
Assignee | ||
Comment 10•4 years ago
|
||
Depends on D100114
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 11•4 years ago
|
||
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/afb6bb63b47b Fix ARM64 NegD and NegF output register. r=nbp https://hg.mozilla.org/integration/autoland/rev/812fbada4509 Add env var to trace execution of ARM64 SIM. r=nbp https://hg.mozilla.org/integration/autoland/rev/8a7adcf1b8cf Add missing ARM64 porting APIs. r=nbp https://hg.mozilla.org/integration/autoland/rev/e21ef34b502a ARM64 UDivConstantI must Lsr, not Asr. r=nbp
Comment 12•4 years ago
|
||
bugherder |
Assignee | ||
Updated•4 years ago
|
Updated•4 years ago
|
Comment 13•4 years ago
|
||
Comment on attachment 9189168 [details]
Bug 1678542 - Always sync the SP (WIP)
Revision D97772 was moved to bug 1678097. Setting attachment 9189168 [details] to obsolete.
Assignee | ||
Comment 14•4 years ago
|
||
This was supposed to have landed with the bugfix. The bug
was that NegD and NegF chose their output register to be
their input register always, ignoring the output register
selected by the register allocator.
Depends on D100655
Comment 15•4 years ago
|
||
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/2443007f889a test case for NegD bug. r=nbp
Comment 16•4 years ago
|
||
bugherder |
Description
•