[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