[Bf-blender-cvs] [5ab0eca7c6a] functions: fgraph ir builder prefers precompiled ir if available
Jacques Lucke
noreply at git.blender.org
Sun Mar 10 16:28:52 CET 2019
Commit: 5ab0eca7c6a99d27d89916bf4e84522b8f922c2e
Author: Jacques Lucke
Date: Sun Mar 10 16:21:24 2019 +0100
Branches: functions
https://developer.blender.org/rB5ab0eca7c6a99d27d89916bf4e84522b8f922c2e
fgraph ir builder prefers precompiled ir if available
===================================================================
M source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
===================================================================
diff --git a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
index c795dd1477a..b0a83c3185d 100644
--- a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
+++ b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
@@ -28,8 +28,6 @@ namespace FN {
derive_LLVMBuildIRBody_from_TupleCallBody(fn);
continue;
}
- /* TODO: Find easy check to see which nodes
- * will need to be executed. */
}
m_required_sockets = this->find_required_sockets();
std::cout << "Required Sockets: " << m_required_sockets.size() << std::endl;
@@ -110,10 +108,7 @@ namespace FN {
input_values.append(values.lookup(input));
}
- LLVMValues output_values;
- auto *body = node->function()->body<LLVMBuildIRBody>();
- BLI_assert(body);
- body->build_ir(builder, input_values, output_values);
+ LLVMValues output_values = this->build_node_ir(builder, node, input_values);
for (uint i = 0; i < output_values.size(); i++) {
Socket output = node->output(i);
@@ -173,6 +168,27 @@ namespace FN {
}
}
}
+
+ LLVMValues build_node_ir(
+ llvm::IRBuilder<> &builder,
+ Node *node,
+ LLVMValues &input_values) const
+ {
+ LLVMValues output_values;
+ SharedFunction &fn = node->function();
+ if (fn->has_body<LLVMCompiledBody>()) {
+ auto *body = fn->body<LLVMCompiledBody>();
+ body->build_ir(builder, input_values, output_values);
+ }
+ else if (fn->has_body<LLVMBuildIRBody>()) {
+ auto *body = fn->body<LLVMBuildIRBody>();
+ body->build_ir(builder, input_values, output_values);
+ }
+ else {
+ BLI_assert(false);
+ }
+ return output_values;
+ }
};
void fgraph_add_LLVMBuildIRBody(
More information about the Bf-blender-cvs
mailing list