MilkIR-to-MachV lowering
Dependencies
///|
fn readme_call_conv() -> @abi.CallConventionLayout {
{
context_arg: { index: 0, class: Int },
user_arg_gprs: [{ index: 1, class: Int }, { index: 2, class: Int }],
arg_fprs: [],
ret_gprs: [{ index: 0, class: Int }],
ret_fprs: [],
}
}
///|
test "lower a leaf MilkIR function to AArch64 MachV" {
let builder = @milkir.FunctionBuilder::FunctionBuilder("leaf")
builder.return_([])
let config = @lower.LoweringConfig(AArch64).with_embedding_abi(
EmbeddingABI(readme_call_conv()),
)
let lowered = @lower.lower_core_function_with_config(
builder.get_function(),
config,
)
inspect(lowered.get_name(), content="leaf")
inspect(lowered.get_blocks().length(), content="1")
inspect(lowered.has_calls(), content="false")
}///|
test "optimize an explicitly targeted MachV function" {
let builder = @milkir.FunctionBuilder::FunctionBuilder("empty_return")
builder.return_([])
let config = @lower.LoweringConfig(AMD64).with_embedding_abi(
EmbeddingABI(readme_call_conv()),
)
let lowered = @lower.lower_core_function_with_config(
builder.get_function(),
config,
)
@lower.optimize_machv(lowered, isa=AMD64)
inspect(lowered.get_blocks().length(), content="1")
inspect(lowered.print().contains("return"), content="true")
}MilkIR-to-MachV lowering
Dependencies