|
Enzyme main
|
#include <llvm/Config/llvm-config.h>#include <memory>#include "SCEV/ScalarEvolution.h"#include "SCEV/ScalarEvolutionExpander.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/MapVector.h"#include <optional>#include "llvm/ADT/Optional.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/Passes/PassBuilder.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Function.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/InstrTypes.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/MDBuilder.h"#include "llvm/IR/Metadata.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Analysis/BasicAliasAnalysis.h"#include "llvm/Analysis/GlobalsModRef.h"#include "llvm/Analysis/InlineAdvisor.h"#include "llvm/Analysis/InlineCost.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/IR/AbstractCallSite.h"#include "llvm/Support/CommandLine.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include "llvm/Transforms/Utils/Cloning.h"#include "ActivityAnalysis.h"#include "DiffeGradientUtils.h"#include "EnzymeLogic.h"#include "GradientUtils.h"#include "PassUtils.h"#include "TraceInterface.h"#include "TraceUtils.h"#include "Utils.h"#include "InstructionBatcher.h"#include "llvm/Transforms/Utils.h"#include "llvm/Transforms/IPO/Attributor.h"#include "llvm/Transforms/IPO/OpenMPOpt.h"#include "llvm/Transforms/Utils/Mem2Reg.h"#include "CApi.h"#include <llvm-c/Core.h>#include <llvm-c/Types.h>#include "llvm/IR/LegacyPassManager.h"#include "llvm/Passes/PassPlugin.h"#include "ActivityAnalysisPrinter.h"#include "JLInstSimplify.h"#include "PreserveNVVM.h"#include "SimpleGVN.h"#include "TypeAnalysis/TypeAnalysisPrinter.h"#include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h"#include "llvm/Transforms/IPO/AlwaysInliner.h"#include "llvm/Transforms/IPO/CalledValuePropagation.h"#include "llvm/Transforms/IPO/ConstantMerge.h"#include "llvm/Transforms/IPO/CrossDSOCFI.h"#include "llvm/Transforms/IPO/DeadArgumentElimination.h"#include "llvm/Transforms/IPO/FunctionAttrs.h"#include "llvm/Transforms/IPO/GlobalDCE.h"#include "llvm/Transforms/IPO/GlobalOpt.h"#include "llvm/Transforms/IPO/GlobalSplit.h"#include "llvm/Transforms/IPO/InferFunctionAttrs.h"#include "llvm/Transforms/IPO/SCCP.h"#include "llvm/Transforms/InstCombine/InstCombine.h"#include "llvm/Transforms/Scalar/CallSiteSplitting.h"#include "llvm/Transforms/Scalar/EarlyCSE.h"#include "llvm/Transforms/Scalar/Float2Int.h"#include "llvm/Transforms/Scalar/GVN.h"#include "llvm/Transforms/Scalar/LoopDeletion.h"#include "llvm/Transforms/Scalar/LoopRotation.h"#include "llvm/Transforms/Scalar/LoopUnrollPass.h"#include "llvm/Transforms/Scalar/SROA.h"#include "llvm/Transforms/IPO/ArgumentPromotion.h"#include "llvm/Transforms/Scalar/ConstraintElimination.h"#include "llvm/Transforms/Scalar/DeadStoreElimination.h"#include "llvm/Transforms/Scalar/JumpThreading.h"#include "llvm/Transforms/Scalar/MemCpyOptimizer.h"#include "llvm/Transforms/Scalar/NewGVN.h"#include "llvm/Transforms/Scalar/TailRecursionElimination.h"#include "llvm/Transforms/Scalar/IndVarSimplify.h"#include "llvm/Transforms/Scalar/LICM.h"#include "llvm/Transforms/Scalar/LoopFlatten.h"#include "llvm/Transforms/Scalar/MergedLoadStoreMotion.h"#include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h"#include "llvm/Transforms/Scalar/LowerMatrixIntrinsics.h"Go to the source code of this file.
Classes | |
| class | EnzymeNewPM |
Namespaces | |
| namespace | llvm |
Macros | |
| #define | DEBUG_TYPE "lower-enzyme-intrinsic" |
| #define | addAttribute addAttributeAtIndex |
| #define | getAttribute getAttributeAtIndex |
| #define | EnableLoopFlatten false |
| #define | EagerlyInvalidateAnalyses false |
| #define | RunNewGVN false |
| #define | EnableConstraintElimination true |
| #define | UseInlineAdvisor InliningAdvisorMode::Default |
| #define | EnableMemProfContextDisambiguation false |
| #define | EnableMatrix false |
| #define | EnableModuleInliner false |
Functions | |
| llvm::cl::opt< bool > | EnzymeEnable ("enzyme-enable", cl::init(true), cl::Hidden, cl::desc("Run the Enzyme pass")) |
| llvm::cl::opt< bool > | EnzymePostOpt ("enzyme-postopt", cl::init(false), cl::Hidden, cl::desc("Run enzymepostprocessing optimizations")) |
| llvm::cl::opt< bool > | EnzymeAttributor ("enzyme-attributor", cl::init(false), cl::Hidden, cl::desc("Run attributor post Enzyme")) |
| llvm::cl::opt< bool > | EnzymeOMPOpt ("enzyme-omp-opt", cl::init(false), cl::Hidden, cl::desc("Whether to enable openmp opt")) |
| llvm::cl::opt< bool > | EnzymeDetectReadThrow ("enzyme-detect-readthrow", cl::init(true), cl::Hidden, cl::desc("Run preprocessing detect readonly or throw optimization")) |
| llvm::cl::opt< std::string > | EnzymeTruncateAll ("enzyme-truncate-all", cl::init(""), cl::Hidden, cl::desc("Truncate all floating point operations. " "E.g. \"64to32\" or \"64to<exponent_width>-<significand_width>\".")) |
| static RegisterPass< EnzymeOldPM > | X ("enzyme", "Enzyme Pass") |
| ModulePass * | createEnzymePass (bool PostOpt) |
| void | AddEnzymePass (LLVMPassManagerRef PM) |
| static InlineParams | getInlineParamsFromOptLevel (OptimizationLevel Level) |
| void | augmentPassBuilder (llvm::PassBuilder &PB) |
| bool | registerFixupJuliaPass (llvm::StringRef Name, llvm::ModulePassManager &MPM) |
| void | registerEnzymeAndPassPipeline (llvm::PassBuilder &PB, bool augment=false) |
| void | registerEnzyme (llvm::PassBuilder &PB) |
| ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK | llvmGetPassPluginInfo () |
Variables | |
| cl::opt< unsigned > | llvm::SetLicmMssaNoAccForPromotionCap |
| cl::opt< unsigned > | llvm::SetLicmMssaOptCap |
| #define addAttribute addAttributeAtIndex |
Definition at line 124 of file Enzyme.cpp.
| #define DEBUG_TYPE "lower-enzyme-intrinsic" |
Definition at line 98 of file Enzyme.cpp.
| #define EagerlyInvalidateAnalyses false |
Definition at line 3138 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define EnableConstraintElimination true |
Definition at line 3140 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define EnableLoopFlatten false |
Definition at line 3137 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define EnableMatrix false |
Definition at line 3144 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define EnableMemProfContextDisambiguation false |
Definition at line 3142 of file Enzyme.cpp.
| #define EnableModuleInliner false |
Definition at line 3145 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define getAttribute getAttributeAtIndex |
Definition at line 125 of file Enzyme.cpp.
| #define RunNewGVN false |
Definition at line 3139 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| #define UseInlineAdvisor InliningAdvisorMode::Default |
Definition at line 3141 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| void AddEnzymePass | ( | LLVMPassManagerRef | PM | ) |
Definition at line 3050 of file Enzyme.cpp.
References createEnzymePass().
| void augmentPassBuilder | ( | llvm::PassBuilder & | PB | ) |
Definition at line 3148 of file Enzyme.cpp.
References EagerlyInvalidateAnalyses, EnableConstraintElimination, EnableLoopFlatten, EnableMatrix, EnableModuleInliner, EnzymeEnable, getInlineParamsFromOptLevel(), loadPass(), RunNewGVN, llvm::SetLicmMssaNoAccForPromotionCap, llvm::SetLicmMssaOptCap, and UseInlineAdvisor.
Referenced by registerEnzymeAndPassPipeline().
| ModulePass * createEnzymePass | ( | bool | PostOpt | ) |
Definition at line 3043 of file Enzyme.cpp.
Referenced by AddEnzymePass(), and loadPass().
| llvm::cl::opt< bool > EnzymeAttributor | ( | "enzyme-attributor" | , |
| cl::init(false) | , | ||
| cl::Hidden | , | ||
| cl::desc("Run attributor post Enzyme") | ) |
| llvm::cl::opt< bool > EnzymeDetectReadThrow | ( | "enzyme-detect-readthrow" | , |
| cl::init(true) | , | ||
| cl::Hidden | , | ||
| cl::desc("Run preprocessing detect readonly or throw optimization") | ) |
| llvm::cl::opt< bool > EnzymeEnable | ( | "enzyme-enable" | , |
| cl::init(true) | , | ||
| cl::Hidden | , | ||
| cl::desc("Run the Enzyme pass") | ) |
| llvm::cl::opt< bool > EnzymeOMPOpt | ( | "enzyme-omp-opt" | , |
| cl::init(false) | , | ||
| cl::Hidden | , | ||
| cl::desc("Whether to enable openmp opt") | ) |
| llvm::cl::opt< bool > EnzymePostOpt | ( | "enzyme-postopt" | , |
| cl::init(false) | , | ||
| cl::Hidden | , | ||
| cl::desc("Run enzymepostprocessing optimizations") | ) |
| llvm::cl::opt< std::string > EnzymeTruncateAll | ( | "enzyme-truncate-all" | , |
| cl::init("") | , | ||
| cl::Hidden | , | ||
| cl::desc("Truncate all floating point operations. " "E.g. \"64to32\" or \"64to<exponent_width>-<significand_width>\".") | ) |
|
static |
Definition at line 3124 of file Enzyme.cpp.
Referenced by augmentPassBuilder().
| ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK llvmGetPassPluginInfo | ( | ) |
Definition at line 3548 of file Enzyme.cpp.
References registerEnzyme().
| void registerEnzyme | ( | llvm::PassBuilder & | PB | ) |
Definition at line 3539 of file Enzyme.cpp.
References registerEnzymeAndPassPipeline().
Referenced by EnzymePlugin::EnzymePlugin(), llvmGetPassPluginInfo(), and main().
| void registerEnzymeAndPassPipeline | ( | llvm::PassBuilder & | PB, |
| bool | augment = false ) |
Definition at line 3491 of file Enzyme.cpp.
References augmentPassBuilder(), and registerFixupJuliaPass().
Referenced by registerEnzyme().
| bool registerFixupJuliaPass | ( | llvm::StringRef | Name, |
| llvm::ModulePassManager & | MPM ) |
Referenced by registerEnzymeAndPassPipeline().
|
static |