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;
137namespace codegen_internal {
157 using ComputeGenerator::traverse;
158 using ComputeGenerator::visit;
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:39
std::shared_ptr< AttributeRegistry > Ptr
Definition AttributeRegistry.h:41
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 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:1874
A Tree is the highest concrete (non-abstract) node in the entire AX AST hierarchy....
Definition AST.h:562
Templated function traits which provides compile-time index access to the types of the function signa...
Definition Types.h:279
The second volume kernel, responsible for providing the core layer of SIMD optimisations by invoking ...
Definition VolumeComputeGenerator.h:81
static const std::array< std::string, N_ARGS > & argumentKeys()
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
static const std::array< std::string, N_ARGS > & argumentKeys()
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
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 char * getDefaultName()
Visitor object which will generate llvm IR for a syntax tree. This provides the majority of the code ...
Definition ComputeGenerator.h:87
Visitor object which will generate llvm IR for a syntax tree which has been generated from AX that ta...
Definition VolumeComputeGenerator.h:143
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:212