|
VapourSynth-llvmexpr
|
#include <llvmexpr/codegen/llvm/IRGeneratorBase.hpp>


Public Member Functions | |
| IRGeneratorBase (const std::vector< Token > &tokens_in, const VSVideoInfo *out_vi, const std::vector< const VSVideoInfo * > &in_vi, int width_in, int height_in, bool mirror, const std::map< std::pair< int, std::string >, int > &p_map, const analysis::ExpressionAnalysisResults &analysis_results_in, llvm::LLVMContext &context_ref, llvm::Module &module_ref, llvm::IRBuilder<> &builder_ref, MathLibraryManager &math_mgr, std::string func_name_in, int approx_math_in) | |
| virtual | ~IRGeneratorBase ()=default |
| IRGeneratorBase (const IRGeneratorBase &)=delete | |
| IRGeneratorBase & | operator= (const IRGeneratorBase &)=delete |
| IRGeneratorBase (IRGeneratorBase &&)=delete | |
| IRGeneratorBase & | operator= (IRGeneratorBase &&)=delete |
| void | generate () |
Protected Member Functions | |
| virtual void | defineFunctionSignature ()=0 |
| virtual void | generateLoops ()=0 |
| llvm::AllocaInst * | createAllocaInEntry (llvm::Type *type, const std::string &name) |
| template<typename... Args> | |
| llvm::Value * | createIntrinsicCall (llvm::Intrinsic::ID intrinsic_id, Args... args) |
| void | assumeAligned (llvm::Value *ptr_value, unsigned alignment) |
| template<typename MemInstT> | |
| void | setMemoryInstAttrs (MemInstT *inst, unsigned alignment, int rwptr_index) |
| llvm::Value * | getFinalCoord (llvm::Value *coord, llvm::Value *max_dim, bool use_mirror) |
| llvm::Value * | generateLoadFromRowPtr (llvm::Value *row_ptr, int clip_idx, llvm::Value *x, int rel_x, bool use_mirror, bool no_x_bounds_check) |
| void | addLoopMetadata (llvm::BranchInst *loop_br) |
| llvm::Value * | generatePixelLoad (int clip_idx, llvm::Value *x, llvm::Value *y, bool mirror) |
| void | generatePixelStore (llvm::Value *value_to_store, llvm::Value *x, llvm::Value *y) |
| void | generateIRFromTokens (llvm::Value *x, llvm::Value *y, llvm::Value *x_fp, llvm::Value *y_fp, bool no_x_bounds_check) |
| bool | processCommonToken (const Token &token, std::vector< llvm::Value * > &rpn_stack, llvm::Type *float_ty, llvm::Type *i32_ty, bool use_approx_math) |
| virtual bool | processModeSpecificToken (const Token &token, std::vector< llvm::Value * > &rpn_stack, llvm::Value *x, llvm::Value *y, llvm::Value *x_fp, llvm::Value *y_fp, bool no_x_bounds_check)=0 |
| virtual void | finalizeAndStoreResult (llvm::Value *result_val, llvm::Value *x, llvm::Value *y)=0 |
Protected Attributes | |
| const std::vector< Token > & | tokens |
| const VSVideoInfo * | vo |
| const std::vector< const VSVideoInfo * > & | vi |
| int | num_inputs |
| int | width |
| int | height |
| bool | mirror_boundary |
| const std::map< std::pair< int, std::string >, int > & | prop_map |
| const analysis::ExpressionAnalysisResults & | analysis_results |
| std::string | func_name |
| int | approx_math |
| llvm::LLVMContext & | context |
| llvm::Module & | module |
| llvm::IRBuilder & | builder |
| MathLibraryManager & | math_manager |
| llvm::Function * | func |
| llvm::Value * | rwptrs_arg |
| llvm::Value * | strides_arg |
| llvm::Value * | props_arg |
| std::vector< llvm::Value * > | preloaded_base_ptrs |
| std::vector< llvm::Value * > | preloaded_strides |
| llvm::MDNode * | alias_scope_domain |
| std::vector< llvm::MDNode * > | alias_scopes |
| std::vector< llvm::MDNode * > | alias_scope_lists |
| std::vector< llvm::MDNode * > | noalias_scope_lists |
| std::map< analysis::RelYAccess, llvm::Value * > | row_ptr_cache |
Copyright (C) 2025 yuygfgg
This file is part of Vapoursynth-llvmexpr.
Vapoursynth-llvmexpr is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Vapoursynth-llvmexpr is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Vapoursynth-llvmexpr. If not, see https://www.gnu.org/licenses/.
Definition at line 38 of file IRGeneratorBase.hpp.
| IRGeneratorBase::IRGeneratorBase | ( | const std::vector< Token > & | tokens_in, |
| const VSVideoInfo * | out_vi, | ||
| const std::vector< const VSVideoInfo * > & | in_vi, | ||
| int | width_in, | ||
| int | height_in, | ||
| bool | mirror, | ||
| const std::map< std::pair< int, std::string >, int > & | p_map, | ||
| const analysis::ExpressionAnalysisResults & | analysis_results_in, | ||
| llvm::LLVMContext & | context_ref, | ||
| llvm::Module & | module_ref, | ||
| llvm::IRBuilder<> & | builder_ref, | ||
| MathLibraryManager & | math_mgr, | ||
| std::string | func_name_in, | ||
| int | approx_math_in ) |
Definition at line 37 of file IRGeneratorBase.cpp.
References alias_scope_domain, analysis_results, approx_math, builder, context, func, func_name, height, math_manager, mirror_boundary, module, num_inputs, prop_map, props_arg, rwptrs_arg, strides_arg, tokens, vi, vo, and width.
Referenced by ExprIRGenerator::ExprIRGenerator(), IRGeneratorBase(), IRGeneratorBase(), operator=(), operator=(), and SingleExprIRGenerator::SingleExprIRGenerator().
|
virtualdefault |
|
delete |
References IRGeneratorBase().
|
delete |
References IRGeneratorBase().
|
protected |
Definition at line 174 of file IRGeneratorBase.cpp.
References context.
Referenced by ExprIRGenerator::generateLoops().
|
protected |
Definition at line 67 of file IRGeneratorBase.cpp.
References builder, and module.
Referenced by generateLoadFromRowPtr(), ExprIRGenerator::generateLoops(), and generatePixelStore().
|
protected |
Definition at line 60 of file IRGeneratorBase.cpp.
References func.
Referenced by generateIRFromTokens(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 149 of file IRGeneratorBase.hpp.
References builder, and module.
Referenced by generatePixelStore(), and processCommonToken().
|
protectedpure virtual |
Implemented in ExprIRGenerator, and SingleExprIRGenerator.
Referenced by generate().
|
protectedpure virtual |
Implemented in ExprIRGenerator, and SingleExprIRGenerator.
Referenced by generateIRFromTokens().
| void IRGeneratorBase::generate | ( | ) |
Definition at line 54 of file IRGeneratorBase.cpp.
References defineFunctionSignature(), and generateLoops().
|
protected |
Definition at line 808 of file IRGeneratorBase.cpp.
References analysis_results, approx_math, builder, context, createAllocaInEntry(), finalizeAndStoreResult(), generatePixelStore(), processCommonToken(), processModeSpecificToken(), tokens, VarLoad, and VarStore.
Referenced by SingleExprIRGenerator::generateLoops().
|
protected |
Definition at line 118 of file IRGeneratorBase.cpp.
References ALIGNMENT, assumeAligned(), builder, getFinalCoord(), setMemoryInstAttrs(), vi, and width.
Referenced by generatePixelLoad(), and ExprIRGenerator::processModeSpecificToken().
|
protectedpure virtual |
Implemented in ExprIRGenerator, and SingleExprIRGenerator.
Referenced by generate().
|
protected |
Definition at line 217 of file IRGeneratorBase.cpp.
References builder, generateLoadFromRowPtr(), getFinalCoord(), height, preloaded_base_ptrs, preloaded_strides, and width.
Referenced by ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 233 of file IRGeneratorBase.cpp.
References ALIGNMENT, assumeAligned(), builder, createIntrinsicCall(), preloaded_base_ptrs, preloaded_strides, setMemoryInstAttrs(), and vo.
Referenced by ExprIRGenerator::finalizeAndStoreResult(), generateIRFromTokens(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 79 of file IRGeneratorBase.cpp.
References builder, and module.
Referenced by generateLoadFromRowPtr(), ExprIRGenerator::generateLoops(), and generatePixelLoad().
|
delete |
References IRGeneratorBase().
|
delete |
References IRGeneratorBase().
|
protected |
Definition at line 294 of file IRGeneratorBase.cpp.
References Abs, Acos, Add, And, ArgmaxN, ArgminN, ArgsortN, Asin, Atan, Atan2, Bitand, Bitnot, Bitor, Bitxor, builder, Ceil, Clamp, Clip, ConstantHeight, ConstantN, ConstantPi, ConstantWidth, Copysign, Cos, Cosh, createIntrinsicCall(), Div, Drop, Dup, Eq, Exp, Exp2, Floor, Fma, Ge, get_sorting_network(), Gt, height, Jump, LabelDef, Le, Log, Log10, Log2, Lt, math_manager, Max, Min, Mod, module, Mul, Neg, Not, Number, Or, Token::payload, Pow, props_arg, Round, Sgn, Sin, Sinh, SortN, Sqrt, Sub, Swap, Tan, Tanh, Ternary, Trunc, Token::type, width, and Xor.
Referenced by generateIRFromTokens().
|
protectedpure virtual |
Implemented in ExprIRGenerator, and SingleExprIRGenerator.
Referenced by generateIRFromTokens().
|
protected |
Definition at line 161 of file IRGeneratorBase.hpp.
References alias_scope_lists, and noalias_scope_lists.
Referenced by generateLoadFromRowPtr(), and generatePixelStore().
|
protected |
Definition at line 87 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 89 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), and setMemoryInstAttrs().
|
protected |
Definition at line 88 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops().
|
protected |
Definition at line 70 of file IRGeneratorBase.hpp.
Referenced by generateIRFromTokens(), ExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 72 of file IRGeneratorBase.hpp.
Referenced by generateIRFromTokens(), and IRGeneratorBase().
|
protected |
Definition at line 76 of file IRGeneratorBase.hpp.
Referenced by assumeAligned(), createIntrinsicCall(), SingleExprIRGenerator::defineFunctionSignature(), ExprIRGenerator::finalizeAndStoreResult(), generateIRFromTokens(), generateLoadFromRowPtr(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), generatePixelLoad(), generatePixelStore(), getFinalCoord(), IRGeneratorBase(), processCommonToken(), ExprIRGenerator::processModeSpecificToken(), and SingleExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 74 of file IRGeneratorBase.hpp.
Referenced by addLoopMetadata(), ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), ExprIRGenerator::finalizeAndStoreResult(), generateIRFromTokens(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), IRGeneratorBase(), and SingleExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 79 of file IRGeneratorBase.hpp.
Referenced by createAllocaInEntry(), ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 71 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), and IRGeneratorBase().
|
protected |
Definition at line 67 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), generatePixelLoad(), IRGeneratorBase(), processCommonToken(), and SingleExprIRGenerator::SingleExprIRGenerator().
|
protected |
Definition at line 77 of file IRGeneratorBase.hpp.
Referenced by IRGeneratorBase(), and processCommonToken().
|
protected |
Definition at line 68 of file IRGeneratorBase.hpp.
Referenced by IRGeneratorBase(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 75 of file IRGeneratorBase.hpp.
Referenced by assumeAligned(), createIntrinsicCall(), ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), getFinalCoord(), IRGeneratorBase(), processCommonToken(), ExprIRGenerator::processModeSpecificToken(), and SingleExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 90 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), and setMemoryInstAttrs().
|
protected |
Definition at line 65 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 84 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), generatePixelLoad(), and generatePixelStore().
|
protected |
Definition at line 85 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), generatePixelLoad(), and generatePixelStore().
|
protected |
Definition at line 69 of file IRGeneratorBase.hpp.
Referenced by SingleExprIRGenerator::generateLoops(), IRGeneratorBase(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 82 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::generateLoops(), IRGeneratorBase(), processCommonToken(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 92 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::generateLoops(), and ExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 80 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 81 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::defineFunctionSignature(), SingleExprIRGenerator::defineFunctionSignature(), ExprIRGenerator::generateLoops(), SingleExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 62 of file IRGeneratorBase.hpp.
Referenced by ExprIRGenerator::finalizeAndStoreResult(), generateIRFromTokens(), SingleExprIRGenerator::generateLoops(), and IRGeneratorBase().
|
protected |
Definition at line 64 of file IRGeneratorBase.hpp.
Referenced by generateLoadFromRowPtr(), IRGeneratorBase(), and SingleExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 63 of file IRGeneratorBase.hpp.
Referenced by SingleExprIRGenerator::generateLoops(), generatePixelStore(), IRGeneratorBase(), and SingleExprIRGenerator::processModeSpecificToken().
|
protected |
Definition at line 66 of file IRGeneratorBase.hpp.
Referenced by generateLoadFromRowPtr(), ExprIRGenerator::generateLoops(), generatePixelLoad(), IRGeneratorBase(), processCommonToken(), and SingleExprIRGenerator::SingleExprIRGenerator().