Closed Bug 1694093 Opened 4 years ago Closed 4 years ago

Ion/arm64: rework lowering of basic operations (eg, integer add) to remove x86-style tied-register constraints

Categories

(Core :: JavaScript Engine: JIT, enhancement, P2)

ARM64
All
enhancement

Tracking

()

RESOLVED DUPLICATE of bug 1710024

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.

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.

See Also: → 1687630
Severity: -- → N/A
Priority: -- → P2
See Also: → 1710024

Probably subsumed by bug 1710024 but we'll leave it open for now.

All information in this bug has been folded into bug 1710024.

Assignee: nobody → lhansen
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.