[Bf-blender-cvs] [192b5e9cfb1] functions: simplify usage of construct builders
Jacques Lucke
noreply at git.blender.org
Mon May 13 10:16:41 CEST 2019
Commit: 192b5e9cfb14128fe6dae91f85169ed02a87ba1f
Author: Jacques Lucke
Date: Thu May 9 12:29:00 2019 +0200
Branches: functions
https://developer.blender.org/rB192b5e9cfb14128fe6dae91f85169ed02a87ba1f
simplify usage of construct builders
===================================================================
M source/blender/functions/backends/llvm/builder.cpp
M source/blender/functions/backends/llvm/builder.hpp
M source/blender/functions/functions/auto_vectorization.cpp
===================================================================
diff --git a/source/blender/functions/backends/llvm/builder.cpp b/source/blender/functions/backends/llvm/builder.cpp
index ca73fd2365c..9db78fef568 100644
--- a/source/blender/functions/backends/llvm/builder.cpp
+++ b/source/blender/functions/backends/llvm/builder.cpp
@@ -135,14 +135,14 @@ IRConstruct_ForLoop CodeBuilder::CreateForLoop(std::string name)
return IRConstruct_ForLoop(entry_builder, condition_builder, body_builder);
}
-llvm::BasicBlock *IRConstruct_ForLoop::finalize(llvm::Value *condition)
+void IRConstruct_ForLoop::finalize(CodeBuilder &after_builder, llvm::Value *condition)
{
m_entry.CreateBr(m_condition_entry);
m_body.CreateBr(m_condition_entry);
auto after_block = m_entry.NewBlockInFunction("After Loop");
m_condition.CreateCondBr(condition, m_body_entry, after_block);
- return after_block;
+ after_builder.SetInsertPoint(after_block);
}
/* Iterations Loop
@@ -161,7 +161,7 @@ IRConstruct_IterationsLoop CodeBuilder::CreateNIterationsLoop(llvm::Value *itera
return IRConstruct_IterationsLoop(loop, iterations, current_iteration);
}
-llvm::BasicBlock *IRConstruct_IterationsLoop::finalize()
+void IRConstruct_IterationsLoop::finalize(CodeBuilder &after_builder)
{
CodeBuilder &entry_builder = m_loop.entry_builder();
CodeBuilder &condition_builder = m_loop.condition_builder();
@@ -171,7 +171,7 @@ llvm::BasicBlock *IRConstruct_IterationsLoop::finalize()
m_current_iteration->addIncoming(entry_builder.getInt32(0), entry_builder.GetInsertBlock());
m_current_iteration->addIncoming(next_iteration, body_builder.GetInsertBlock());
llvm::Value *condition = condition_builder.CreateICmpULT(m_current_iteration, m_iterations);
- return m_loop.finalize(condition);
+ m_loop.finalize(after_builder, condition);
}
/* If Then Else
@@ -185,12 +185,12 @@ IRConstruct_IfThenElse CodeBuilder::CreateIfThenElse(llvm::Value *condition, std
return IRConstruct_IfThenElse(CodeBuilder(then_block), CodeBuilder(else_block));
}
-llvm::BasicBlock *IRConstruct_IfThenElse::finalize()
+void IRConstruct_IfThenElse::finalize(CodeBuilder &after_builder)
{
auto after_block = m_then_builder.NewBlockInFunction("After If");
m_then_builder.CreateBr(after_block);
m_else_builder.CreateBr(after_block);
- return after_block;
+ after_builder.SetInsertPoint(after_block);
}
} /* namespace FN */
diff --git a/source/blender/functions/backends/llvm/builder.hpp b/source/blender/functions/backends/llvm/builder.hpp
index 54921e52742..6649a1726be 100644
--- a/source/blender/functions/backends/llvm/builder.hpp
+++ b/source/blender/functions/backends/llvm/builder.hpp
@@ -464,7 +464,7 @@ class IRConstruct_ForLoop {
return m_body;
}
- llvm::BasicBlock *finalize(llvm::Value *condition);
+ void finalize(CodeBuilder &after_builder, llvm::Value *condition);
};
class IRConstruct_IterationsLoop {
@@ -491,7 +491,7 @@ class IRConstruct_IterationsLoop {
return m_current_iteration;
}
- llvm::BasicBlock *finalize();
+ void finalize(CodeBuilder &after_builder);
};
class IRConstruct_IfThenElse {
@@ -515,7 +515,7 @@ class IRConstruct_IfThenElse {
return m_else_builder;
}
- llvm::BasicBlock *finalize();
+ void finalize(CodeBuilder &after_builder);
};
} /* namespace FN */
diff --git a/source/blender/functions/functions/auto_vectorization.cpp b/source/blender/functions/functions/auto_vectorization.cpp
index 7e6cd9e1d17..7840e805652 100644
--- a/source/blender/functions/functions/auto_vectorization.cpp
+++ b/source/blender/functions/functions/auto_vectorization.cpp
@@ -86,7 +86,7 @@ class AutoVectorizationGen : public LLVMBuildIRBody {
this->store_computed_values_in_output_lists(
body_builder, main_outputs, output_data_pointers, iteration);
- builder.SetInsertPoint(loop.finalize());
+ loop.finalize(builder);
this->free_input_lists(builder, interface);
}
More information about the Bf-blender-cvs
mailing list