12#ifndef OPENVDB_AX_VOLUME_COMPUTE_GENERATOR_HAS_BEEN_INCLUDED
13#define OPENVDB_AX_VOLUME_COMPUTE_GENERATOR_HAS_BEEN_INCLUDED
20#include <openvdb/version.h>
48 void(
const void*
const,
58 static const size_t N_ARGS = FunctionTraitsT::N_ARGS;
84 void(
const void*
const,
95 static const size_t N_ARGS = FunctionTraitsT::N_ARGS;
120 void(
const void*
const,
121 const int32_t (*)[3],
128 static const size_t N_ARGS = FunctionTraitsT::N_ARGS;
164 llvm::Value* accessorHandleFromToken(
const std::string&);
165 void getAccessorValue(
const std::string&, llvm::Value*);
These classes contain lists of expected attributes and volumes which are populated by compiler during...
The core visitor framework for code generation.
Contains frameworks for creating custom AX functions which can be registered within the FunctionRegis...
This class stores a list of access names, types and their dependency connections.
Definition AttributeRegistry.h:40
std::shared_ptr< AttributeRegistry > Ptr
Definition AttributeRegistry.h:42
Logger for collecting errors and warnings that occur during AX compilation.
Definition Logger.h:58
The function registry which is used for function code generation. Each time a function is visited wit...
Definition FunctionRegistry.h:36
Definition ComputeGenerator.h:67
Definition Exceptions.h:13
Options that control how functions behave.
Definition CompilerOptions.h:25
Attributes represent any access to a primitive value, typically associated with the '@' symbol syntax...
Definition AST.h:1875
A Tree is the highest concrete (non-abstract) node in the entire AX AST hierarchy....
Definition AST.h:563
Templated function traits which provides compile-time index access to the types of the function signa...
Definition Types.h:280
The second volume kernel, responsible for providing the core layer of SIMD optimisations by invoking ...
Definition VolumeComputeGenerator.h:81
codegen::FunctionTraits< Signature > FunctionTraitsT
Definition VolumeComputeGenerator.h:94
static const std::array< std::string, N_ARGS > & argumentKeys()
static const size_t N_ARGS
Definition VolumeComputeGenerator.h:95
static const char * getDefaultName()
void(const void *const, const int32_t(*)[3], void *, uint64_t *, int64_t, uint64_t, void **, const void *const *, int64_t) Signature
Definition VolumeComputeGenerator.h:83
The third volume kernel, providing an agnostic way to modify a single tile value without passing thro...
Definition VolumeComputeGenerator.h:117
codegen::FunctionTraits< Signature > FunctionTraitsT
Definition VolumeComputeGenerator.h:127
static const std::array< std::string, N_ARGS > & argumentKeys()
static const size_t N_ARGS
Definition VolumeComputeGenerator.h:128
void(const void *const, const int32_t(*)[3], void **, const void *const *, int64_t, void *) Signature
Definition VolumeComputeGenerator.h:119
static const char * getDefaultName()
The primary volume kernel. This function holds the generated body of AX programs.
Definition VolumeComputeGenerator.h:45
codegen::FunctionTraits< Signature > FunctionTraitsT
Definition VolumeComputeGenerator.h:57
static const std::array< std::string, N_ARGS > & argumentKeys()
void(const void *const, const int32_t(*)[3], void *, bool, int64_t, void **, const void *const *, int64_t) Signature
Definition VolumeComputeGenerator.h:47
static const size_t N_ARGS
Definition VolumeComputeGenerator.h:58
static const char * getDefaultName()
ComputeGenerator(llvm::Module &module, const FunctionOptions &options, FunctionRegistry &functionRegistry, Logger &logger)
bool traverse(const ast::Block *block)
Custom traversal of scoped blocks.
Definition ComputeGenerator.h:111
virtual bool visit(const ast::CommaOperator *)
Visitor methods for all AST nodes which implement IR generation.
AttributeRegistry::Ptr generate(const ast::Tree &node)
VolumeComputeGenerator(llvm::Module &module, const FunctionOptions &options, FunctionRegistry &functionRegistry, Logger &logger)
Constructor.
~VolumeComputeGenerator() override=default
bool visit(const ast::Attribute *) override
Visitor methods for all AST nodes which implement IR generation.
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218