OpenVDB  12.1.0
Namespaces | Functions
LegacyIR.h File Reference

Legacy IR utilities for LLVM_VERSION_MAJOR <= 15. More...

#include <llvm/Config/llvm-config.h>
#include "Types.h"
#include "Utils.h"
#include <openvdb/version.h>
#include <openvdb/util/Assert.h>
#include <llvm/IR/IRBuilder.h>

Go to the source code of this file.

Namespaces

 openvdb
 
 openvdb::v12_1
 
 openvdb::v12_1::ax
 
 openvdb::v12_1::ax::codegen
 

Functions

auto ir_load (llvm::IRBuilder<> &B, llvm::Value *ptr, const char *Name="")
 
auto ir_gep (llvm::IRBuilder<> &B, llvm::Value *ptr, llvm::ArrayRef< llvm::Value * > IdxList, const char *Name="")
 
auto ir_constgep2_64 (llvm::IRBuilder<> &B, llvm::Value *ptr, uint64_t Idx0, uint64_t Idx1, const char *Name="")
 
auto ir_constinboundsgep2_64 (llvm::IRBuilder<> &B, llvm::Value *ptr, uint64_t Idx0, uint64_t Idx1, const char *Name="")
 
llvm::Type * getBaseContainedType (llvm::Type *const type)
 Return the base llvm value which is being pointed to through any number of layered pointers. More...
 
llvm::Value * arrayCast (llvm::Value *ptrToArray, llvm::Type *targetElementType, llvm::IRBuilder<> &builder)
 Casts an array to another array of equal size but of a different element type. Both source and target array element types must be scalar types. The source array llvm Value should be a pointer to the array to cast. More...
 
llvm::Value * arrayIndexUnpack (llvm::Value *ptrToArray, const int16_t index, llvm::IRBuilder<> &builder)
 Unpack a particular element of an array and return a pointer to that element The provided llvm Value is expected to be a pointer to an array. More...
 
void arrayUnpack (llvm::Value *ptrToArray, std::vector< llvm::Value * > &values, llvm::IRBuilder<> &builder, const bool loadElements=false)
 Unpack an array type into llvm Values which represent all its elements The provided llvm Value is expected to be a pointer to an array If loadElements is true, values will store loaded llvm values instead of pointers to the array elements. More...
 
void array3Unpack (llvm::Value *ptrToArray, llvm::Value *&value1, llvm::Value *&value2, llvm::Value *&value3, llvm::IRBuilder<> &builder)
 Unpack the first three elements of an array. The provided llvm Value is expected to be a pointer to an array. More...
 
llvm::Value * array3Pack (llvm::Value *value1, llvm::Value *value2, llvm::Value *value3, llvm::IRBuilder<> &builder)
 Pack three values into a new array and return a pointer to the newly allocated array. If the values are of a mismatching type, the highets order type is uses, as defined by typePrecedence. All llvm values are expected to a be a loaded scalar type. More...
 
llvm::Value * arrayPack (llvm::Value *value, llvm::IRBuilder<> &builder, const size_t size=3)
 Pack a loaded llvm scalar value into a new array of a specified size and return a pointer to the newly allocated array. Each element of the new array will have the value of the given scalar. More...
 
llvm::Value * arrayPack (const std::vector< llvm::Value * > &values, llvm::IRBuilder<> &builder)
 Pack a vector of loaded llvm scalar values into a new array of equal size and return a pointer to the newly allocated array. More...
 
llvm::Value * arrayPackCast (std::vector< llvm::Value * > &values, llvm::IRBuilder<> &builder)
 Pack a vector of loaded llvm scalar values into a new array of equal size and return a pointer to the newly allocated array. arrayPackCast first checks all the contained types in values and casts all types to the highest order type present. All llvm values in values are expected to be loaded scalar types. More...
 
llvm::Value * scalarToMatrix (llvm::Value *scalar, llvm::IRBuilder<> &builder, const size_t dim=3)
 

Detailed Description

Legacy IR utilities for LLVM_VERSION_MAJOR <= 15.

Authors
Nick Avramoussis