Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2022-01-02 18:00:33 +0300
committerJacques Lucke <jacques@blender.org>2022-01-02 18:00:33 +0300
commit077debe17fb8c30b1b5e7387f9f9e94758b5b30a (patch)
tree7c0ba57f1b10052966b8ac1241b31d1a58486744
parent33d6b09d3d658bacd530524397e4265c08f61f86 (diff)
fix function generation
-rw-r--r--source/blender/functions/intern/llvm.cc15
1 files changed, 6 insertions, 9 deletions
diff --git a/source/blender/functions/intern/llvm.cc b/source/blender/functions/intern/llvm.cc
index 9c6ef8341ba..d59bba52417 100644
--- a/source/blender/functions/intern/llvm.cc
+++ b/source/blender/functions/intern/llvm.cc
@@ -61,9 +61,9 @@ static llvm::Function &create_add_loop_function(llvm::Module &module)
llvm::Value *array_size_v = function.getArg(3);
llvm::BasicBlock *entry_bb = llvm::BasicBlock::Create(context, "entry", &function);
- llvm::BasicBlock *loop_entry_bb = llvm::BasicBlock::Create(context, "loop_entry");
- llvm::BasicBlock *loop_body_bb = llvm::BasicBlock::Create(context, "loop_body");
- llvm::BasicBlock *loop_end_bb = llvm::BasicBlock::Create(context, "loop_end");
+ llvm::BasicBlock *loop_entry_bb = llvm::BasicBlock::Create(context, "loop_entry", &function);
+ llvm::BasicBlock *loop_body_bb = llvm::BasicBlock::Create(context, "loop_body", &function);
+ llvm::BasicBlock *loop_end_bb = llvm::BasicBlock::Create(context, "loop_end", &function);
builder.SetInsertPoint(entry_bb);
builder.CreateBr(loop_entry_bb);
@@ -74,22 +74,19 @@ static llvm::Function &create_add_loop_function(llvm::Module &module)
llvm::Value *is_less_than_v = builder.CreateICmpSLT(index_v, array_size_v);
builder.CreateCondBr(is_less_than_v, loop_body_bb, loop_end_bb);
- std::cout << "1\n";
builder.SetInsertPoint(loop_body_bb);
- std::cout << "2\n";
llvm::Value *load_ptr_v = builder.CreateGEP(src_array_ptr_v, index_v);
- std::cout << "3\n";
llvm::Value *store_ptr_v = builder.CreateGEP(dst_array_ptr_v, index_v);
- std::cout << "4\n";
llvm::Value *value_from_array_v = builder.CreateLoad(builder.getFloatTy(), load_ptr_v);
- std::cout << "5\n";
- llvm::Value *new_value_v = builder.CreateAdd(value_from_array_v, src_value_v);
+ llvm::Value *new_value_v = builder.CreateFAdd(value_from_array_v, src_value_v);
builder.CreateStore(new_value_v, store_ptr_v);
llvm::Value *next_index_v = builder.CreateAdd(index_v, builder.getInt64(1));
index_v->addIncoming(next_index_v, loop_body_bb);
+ builder.CreateBr(loop_entry_bb);
builder.SetInsertPoint(loop_end_bb);
builder.CreateRetVoid();
+
return function;
}