[Bf-blender-cvs] [e8e0e7bc699] functions: rename SimpleLLVMTypeInfo to PackedLLVMTypeInfo
Jacques Lucke
noreply at git.blender.org
Tue Apr 30 13:59:18 CEST 2019
Commit: e8e0e7bc69977c41110688ebe3401c8bc2b990b6
Author: Jacques Lucke
Date: Tue Apr 30 12:48:44 2019 +0200
Branches: functions
https://developer.blender.org/rBe8e0e7bc69977c41110688ebe3401c8bc2b990b6
rename SimpleLLVMTypeInfo to PackedLLVMTypeInfo
===================================================================
M source/blender/functions/backends/llvm/llvm_types.cpp
M source/blender/functions/backends/llvm/llvm_types.hpp
M source/blender/functions/types/numeric.cpp
===================================================================
diff --git a/source/blender/functions/backends/llvm/llvm_types.cpp b/source/blender/functions/backends/llvm/llvm_types.cpp
index e825b4cbbb0..117276f5602 100644
--- a/source/blender/functions/backends/llvm/llvm_types.cpp
+++ b/source/blender/functions/backends/llvm/llvm_types.cpp
@@ -37,14 +37,14 @@ void TrivialLLVMTypeInfo::build_store_ir__relocate(CodeBuilder &builder,
return this->build_store_ir__copy(builder, value, address);
}
-/******************** SimpleLLVMTypeInfo ********************/
+/******************** PackedLLVMTypeInfo ********************/
-llvm::Type *SimpleLLVMTypeInfo::get_type(llvm::LLVMContext &context) const
+llvm::Type *PackedLLVMTypeInfo::get_type(llvm::LLVMContext &context) const
{
return m_create_func(context);
}
-void SimpleLLVMTypeInfo::build_store_ir__copy(CodeBuilder &builder,
+void PackedLLVMTypeInfo::build_store_ir__copy(CodeBuilder &builder,
llvm::Value *value,
llvm::Value *address) const
{
@@ -53,7 +53,7 @@ void SimpleLLVMTypeInfo::build_store_ir__copy(CodeBuilder &builder,
builder.CreateStore(value, addr);
}
-llvm::Value *SimpleLLVMTypeInfo::build_load_ir__copy(CodeBuilder &builder,
+llvm::Value *PackedLLVMTypeInfo::build_load_ir__copy(CodeBuilder &builder,
llvm::Value *address) const
{
llvm::Type *type = this->get_type(builder.getContext());
diff --git a/source/blender/functions/backends/llvm/llvm_types.hpp b/source/blender/functions/backends/llvm/llvm_types.hpp
index 9bd58291048..a0dc2b00c55 100644
--- a/source/blender/functions/backends/llvm/llvm_types.hpp
+++ b/source/blender/functions/backends/llvm/llvm_types.hpp
@@ -29,6 +29,10 @@ class LLVMTypeInfo : public TypeExtension {
llvm::Value *address) const = 0;
};
+/* Trivial: The type could be copied with memcpy
+ * and freeing the type does nothing.
+ * Subclasses still have to implement functions to
+ * store and load this type from memory. */
class TrivialLLVMTypeInfo : public LLVMTypeInfo {
public:
llvm::Value *build_copy_ir(CodeBuilder &builder, llvm::Value *value) const override;
@@ -39,13 +43,17 @@ class TrivialLLVMTypeInfo : public LLVMTypeInfo {
llvm::Value *build_load_ir__relocate(CodeBuilder &builder, llvm::Value *address) const override;
};
-class SimpleLLVMTypeInfo : public TrivialLLVMTypeInfo {
+/* Packed: The memory layout in llvm matches
+ * the layout used in the rest of the C/C++ code.
+ * That means, that no special load/store functions
+ * have to be written. */
+class PackedLLVMTypeInfo : public TrivialLLVMTypeInfo {
private:
typedef std::function<llvm::Type *(llvm::LLVMContext &context)> CreateFunc;
CreateFunc m_create_func;
public:
- SimpleLLVMTypeInfo(CreateFunc create_func) : m_create_func(create_func)
+ PackedLLVMTypeInfo(CreateFunc create_func) : m_create_func(create_func)
{
}
diff --git a/source/blender/functions/types/numeric.cpp b/source/blender/functions/types/numeric.cpp
index 4169dc2eeed..eb7d58a546d 100644
--- a/source/blender/functions/types/numeric.cpp
+++ b/source/blender/functions/types/numeric.cpp
@@ -11,7 +11,7 @@ LAZY_INIT_REF__NO_ARG(SharedType, GET_TYPE_float)
{
SharedType type = SharedType::New("Float");
type->extend(new CPPTypeInfoForType<float>());
- type->extend(new SimpleLLVMTypeInfo(
+ type->extend(new PackedLLVMTypeInfo(
[](llvm::LLVMContext &context) { return llvm::Type::getFloatTy(context); }));
return type;
}
@@ -20,7 +20,7 @@ LAZY_INIT_REF__NO_ARG(SharedType, GET_TYPE_int32)
{
SharedType type = SharedType::New("Int32");
type->extend(new CPPTypeInfoForType<int32_t>());
- type->extend(new SimpleLLVMTypeInfo(
+ type->extend(new PackedLLVMTypeInfo(
[](llvm::LLVMContext &context) { return llvm::Type::getIntNTy(context, 32); }));
return type;
}
@@ -29,7 +29,7 @@ LAZY_INIT_REF__NO_ARG(SharedType, GET_TYPE_fvec3)
{
SharedType type = SharedType::New("FVec3");
type->extend(new CPPTypeInfoForType<Vector>());
- type->extend(new SimpleLLVMTypeInfo([](llvm::LLVMContext &context) {
+ type->extend(new PackedLLVMTypeInfo([](llvm::LLVMContext &context) {
llvm::Type *base = llvm::Type::getFloatTy(context);
return llvm::StructType::get(context, {base, base, base}, true);
}));
More information about the Bf-blender-cvs
mailing list