11 auto compilation_functions = {world.
sym(
"_compile"), world.
sym(
"_default_compile"), world.
sym(
"_core_compile"),
12 world.
sym(
"_fallback_compile")};
13 const Def* compilation =
nullptr;
14 for (
auto compilation_function : compilation_functions) {
15 if (
auto compilation_ = world.
external(compilation_function)) {
16 if (!compilation) compilation = compilation_;
23 if (
auto lam = def->isa<
Lam>(); lam && lam->num_doms() == 0) {
24 if (lam->codom()->sym().view() ==
"%compile.Pipeline") {
25 if (!compilation) compilation = lam;
30 assert(compilation &&
"no compilation function found");
37 world.DLOG(
"compilation using {} : {}", compilation, compilation->
type());
44 auto pipeline = compilation->as<
Lam>()->body();
48 auto pipeline_axiom = ax->as<
Axiom>();
49 auto pipeline_flags = pipeline_axiom->
flags();
50 world.DLOG(
"Building pipeline");
51 if (
auto pass = world.
driver().
pass(pipeline_flags))
52 (*pass)(world, pipe_builder, pipeline);
54 error(
"pipeline_axiom not found in passes");
56 world.DLOG(
"Executing pipeline");