InnerFnTypeImproved Compiler::gen_node()

in src/core/compile.cpp [2351:2376]


InnerFnTypeImproved Compiler::gen_node(LoopTree::TreeRef ref) const {
  auto node_ref = lt.node(ref);
  const auto &node = lt.ir.node(node_ref);
  switch (node.op()) {
    case Operation::read:
    case Operation::view:
    case Operation::write:
      return gen_mem_node(ref);
    case Operation::add:
    case Operation::subtract:
    case Operation::multiply:
    case Operation::divide:
    case Operation::max:
      return gen_binary_node(ref);
    case Operation::exp:
    case Operation::sqrt:
    case Operation::reciprocal:
    case Operation::negate:
      return gen_unary_node(ref);
    default:
      ASSERT(0) << "Cannot generate node: " << lt.ir.dump(node_ref);
      return [=](const std::vector<void *> &memory, int indices[MAX_DEPTH]) {
        ASSERT(0);
      };
  }
}