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


Public Member Functions | |
| SingleExprIRGenerator (const std::vector< Token > &tokens_in, const VSVideoInfo *out_vi, const std::vector< const VSVideoInfo * > &in_vi, bool mirror, const std::map< std::pair< int, std::string >, int > &p_map, const std::vector< std::string > &output_props, 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) | |
| Public Member Functions inherited from 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) | |
| virtual | ~IRGeneratorBase ()=default |
| IRGeneratorBase (const IRGeneratorBase &)=delete | |
| IRGeneratorBase & | operator= (const IRGeneratorBase &)=delete |
| IRGeneratorBase (IRGeneratorBase &&)=delete | |
| IRGeneratorBase & | operator= (IRGeneratorBase &&)=delete |
| void | generate () |
Protected Member Functions | |
| void | defineFunctionSignature () override |
| void | generateLoops () override |
| 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) override |
| void | finalizeAndStoreResult (llvm::Value *result_val, llvm::Value *x, llvm::Value *y) override |
| Protected Member Functions inherited from IRGeneratorBase | |
| 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) |
Additional Inherited Members | |
| Protected Attributes inherited from IRGeneratorBase | |
| 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 25 of file SingleExprIRGenerator.hpp.
| SingleExprIRGenerator::SingleExprIRGenerator | ( | const std::vector< Token > & | tokens_in, |
| const VSVideoInfo * | out_vi, | ||
| const std::vector< const VSVideoInfo * > & | in_vi, | ||
| bool | mirror, | ||
| const std::map< std::pair< int, std::string >, int > & | p_map, | ||
| const std::vector< std::string > & | output_props, | ||
| 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 ) |
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 30 of file SingleExprIRGenerator.cpp.
References IRGeneratorBase::height, IRGeneratorBase::IRGeneratorBase(), and IRGeneratorBase::width.
|
overrideprotectedvirtual |
Implements IRGeneratorBase.
Definition at line 50 of file SingleExprIRGenerator.cpp.
References IRGeneratorBase::builder, IRGeneratorBase::context, IRGeneratorBase::func, IRGeneratorBase::func_name, IRGeneratorBase::module, IRGeneratorBase::props_arg, IRGeneratorBase::rwptrs_arg, and IRGeneratorBase::strides_arg.
|
overrideprotectedvirtual |
Implements IRGeneratorBase.
Definition at line 538 of file SingleExprIRGenerator.cpp.
|
overrideprotectedvirtual |
Implements IRGeneratorBase.
Definition at line 96 of file SingleExprIRGenerator.cpp.
References IRGeneratorBase::builder, IRGeneratorBase::context, IRGeneratorBase::createAllocaInEntry(), IRGeneratorBase::func, IRGeneratorBase::generateIRFromTokens(), IRGeneratorBase::num_inputs, IRGeneratorBase::prop_map, IRGeneratorBase::props_arg, IRGeneratorBase::rwptrs_arg, IRGeneratorBase::strides_arg, IRGeneratorBase::tokens, and IRGeneratorBase::vo.
|
overrideprotectedvirtual |
Implements IRGeneratorBase.
Definition at line 289 of file SingleExprIRGenerator.cpp.
References ArrayAllocDyn, ArrayAllocStatic, ArrayLoad, ArrayStore, IRGeneratorBase::builder, ClipAbsPlane, ConstantClipHeight, ConstantClipPlaneHeight, ConstantClipPlaneWidth, ConstantClipWidth, ConstantPlaneHeight, ConstantPlaneWidth, IRGeneratorBase::context, Delete, IRGeneratorBase::module, Token::payload, PropAccess, PropExists, PropStore, StoreAbsPlane, Token::type, IRGeneratorBase::vi, and IRGeneratorBase::vo.