20 auto compilation_functions = {world.
sym(
"_compile"), world.
sym(
"_default_compile"), world.
sym(
"_core_compile"),
21 world.
sym(
"_fallback_compile")};
22 const Def* compilation =
nullptr;
23 for (
auto compilation_function : compilation_functions) {
24 if (
auto compilation_ = world.
external(compilation_function)) {
25 if (!compilation) compilation = compilation_;
31 for (
auto [_, def] : externals) {
32 if (
auto lam = def->isa<
Lam>(); lam && lam->num_doms() == 0) {
33 if (lam->codom()->sym().view() ==
"%compile.Pipeline") {
34 if (!compilation) compilation = lam;
39 assert(compilation &&
"no compilation function found");
46 world.DLOG(
"compilation using {} : {}", compilation, compilation->
type());
53 auto pipeline = compilation->as<
Lam>()->body();
57 auto pipeline_axiom = ax->as<
Axiom>();
58 auto pipeline_flags = pipeline_axiom->
flags();
59 world.DLOG(
"Building pipeline");
60 if (
auto pass = world.
driver().
pass(pipeline_flags))
61 (*pass)(world, pipe_builder, pipeline);
63 error(
"pipeline_axiom not found in passes");
65 world.DLOG(
"Executing pipeline");
std::pair< const Def *, std::vector< const Def * > > collect_args(const Def *def)
Helper function to cope with the fact that normalizers take all arguments and not only its axiom argu...