Open
Bug 1746596
Opened 3 years ago
Updated 3 years ago
Ion, x64, windows: Regalloc: redundant move in a simple fixed-register case
Categories
(Core :: JavaScript Engine: JIT, enhancement, P3)
Tracking
()
NEW
People
(Reporter: jseward, Unassigned)
References
(Blocks 2 open bugs)
Details
Following the landing of bug 1716580, this input
(module
(func (export "f")
(param $p1 i32) (param $p2 i32)
(param $p3 i32) (param $p4 i32)
(result i32)
(select (local.get $p3)
(local.get $p4)
(i32.eq (local.get $p1) (local.get $p2)))
)
)
on Windows produces the following (omitting prologue/epilogue):
mov %r8d, %ebx
mov %ebx, %eax
cmp %edx, %ecx
cmovnz %r9d, %eax'
So the first mov
is redundant, or at least, the first and second moves could
be merged. Something is fishy with coalescing in Ion's RA, probably. Even
more fishyer is the fact that on Linux, there is no equivalent redundant move.
This was observed with the test case cmpSel32vs64
in
tests/wasm/binop-x64-ion-codegen.js.
Updated•3 years ago
|
Blocks: sm-regalloc
You need to log in
before you can comment on or make changes to this bug.
Description
•