Ion/arm64: rework lowering of basic operations (eg, integer add) to remove x86-style tied-register constraints
Categories
(Core :: JavaScript Engine: JIT, enhancement, P2)
Tracking
()
People
(Reporter: jseward, Assigned: lth)
References
Details
There are various places in the new(ish) arm64 Ion port where Ion's x86-only origins overly constrain arm64 instruction selection. In particular, various basic integer operations have 2-operand LIR nodes and have the assertion that the output register is the same as the left argument. This is necessary to make x86_{32,64} work, but unnecessarily constrains register allocation on arm64 and all other similarly-afflicted 3-operand targets, including arm32 and MIPS.
For example, the arm64 implementations of CodeGenerator::visitAddI64
,
CodeGenerator::visitWasmSelect
and CodeGenerator::visitWasmSelectI64
. There may well be others.
Fixing this may require adding new LIR nodes for such operations, that have 3 operands instead of 2, and translating MIR to those instead of the 2-operand versions when generating code for arm64 targets.
This would potentially give improved instruction selection for both JS and wasm.
Assignee | ||
Comment 1•4 years ago
|
||
Also see 1687630 which was filed to track some of the same issues, though it is currently more focussed on lower-level instruction selection issues.
Updated•4 years ago
|
Assignee | ||
Comment 2•4 years ago
|
||
Probably subsumed by bug 1710024 but we'll leave it open for now.
Assignee | ||
Comment 3•4 years ago
|
||
All information in this bug has been folded into bug 1710024.
Description
•