Closed
Bug 1735481
Opened 3 years ago
Closed 3 years ago
Spurious zero constant generated into register for addressing expression in 64-bit memories
Categories
(Core :: JavaScript: WebAssembly, enhancement, P3)
Tracking
()
RESOLVED
FIXED
95 Branch
Tracking | Status | |
---|---|---|
firefox95 | --- | fixed |
People
(Reporter: lth, Assigned: lth)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
Test case:
var mod = new WebAssembly.Module(wasmTextToBinary(
`(module
(memory i64 1)
(func (result i32)
(i32.load (i64.const 16))))`));
wasmDis(mod)
Output with --wasm-compiler=ion --wasm-memory64:
00000010 55 push %rbp
00000011 48 8b ec mov %rsp, %rbp
00000014 33 c0 xor %eax, %eax
00000016 41 8b 44 07 10 movl 0x10(%r15,%rax,1), %eax
0000001B 5d pop %rbp
0000001C c3 ret
Instead of generating a zero with the xor and then using Base+Index addressing, we could have used a simple Address here (base+constant) and generated movl 0x10(%r15)
as we do for 32-bit memories, and as we do for arm64 for that matter.
Assignee | ||
Comment 1•3 years ago
|
||
Currently a test case that fails because there's an interesting
wrinkle in code generation (or more likely a missing optimization
somewhere before code generation).
Depends on D127064
Assignee | ||
Comment 2•3 years ago
|
||
For addressing expressions we want to special-case zero. Now that
pointers can be 64-bit values, recognize also 64-bit zeroes.
Depends on D127064
Updated•3 years ago
|
Attachment #9245689 -
Attachment description: WIP: Bug 1735481 - Memory64 - Optimize m64 code, WIP → WIP: Bug 1735481 - Memory64 - White-box tests for m64 bce
Updated•3 years ago
|
Attachment #9245725 -
Attachment description: WIP: Bug 1735481 - Memory64 - Make useRegisterOrZero work for i64 values. → Bug 1735481 - Memory64 - Make useRegisterOrZero work for i64 values.
Updated•3 years ago
|
Attachment #9245725 -
Attachment description: Bug 1735481 - Memory64 - Make useRegisterOrZero work for i64 values. → Bug 1735481 - Memory64 - Make useRegisterOrZero work for i64 values. r?jseward
Updated•3 years ago
|
Attachment #9245689 -
Attachment description: WIP: Bug 1735481 - Memory64 - White-box tests for m64 bce → Bug 1735481 - Memory64 - White-box tests for m64 bce. r?jseward
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/320b7d0b5790 Memory64 - Make useRegisterOrZero work for i64 values. r=jseward https://hg.mozilla.org/integration/autoland/rev/d7d3cda7b6be Memory64 - White-box tests for m64 bce. r=jseward
Comment 4•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/320b7d0b5790
https://hg.mozilla.org/mozilla-central/rev/d7d3cda7b6be
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
status-firefox95:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → 95 Branch
You need to log in
before you can comment on or make changes to this bug.
Description
•