Skip to content

Build new instruction selector / machine-code emission backend #1174

@cfallin

Description

@cfallin

This issue will track progress on our new instruction selector / machine-code emission work, which has been ongoing (in design and initial implementation).

The scope of the work is:

  • Build a new instruction selector, to replace the recipes and meta-DSL system that adds encodings to existing Cranelift IR instructions.
  • Develop a low-level encoding of machine instructions, with virtual registers prior to register allocation (an "IR" of sorts)
  • Interface the above to a new register allocator infrastructure, minira
  • Develop the binary-encoding pass that emits into a CodeSink from the above representation

As discussed among @sunfishcode, @julian-seward1, @bnjbvr, and others, we want to do this work in order to clean up the story for a new machine backend, as recipes had become difficult to write and maintain.

The system will be co-developed with an initial backend for ARM64 using the new interfaces.

Metadata

Metadata

Assignees

No one assigned

    Labels

    craneliftIssues related to the Cranelift code generator

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions