|
Enzyme main
|
#include "llvm-c/Core.h"#include "llvm-c/DataTypes.h"#include "llvm-c/Target.h"#include <stddef.h>

Go to the source code of this file.
Classes | |
| struct | IntList |
| struct | CDataPair |
| struct | CFnTypeInfo |
Typedefs | |
| typedef struct EnzymeOpaqueTypeAnalysis * | EnzymeTypeAnalysisRef |
| typedef struct EnzymeOpaqueLogic * | EnzymeLogicRef |
| typedef struct EnzymeOpaqueAugmentedReturn * | EnzymeAugmentedReturnPtr |
| typedef struct EnzymeOpaqueTraceInterface * | EnzymeTraceInterfaceRef |
| typedef struct EnzymeTypeTree * | CTypeTreeRef |
| typedef uint8_t(* | CustomRuleType) (int, CTypeTreeRef, CTypeTreeRef *, struct IntList *, size_t, LLVMValueRef, void *) |
| typedef LLVMValueRef(* | CustomShadowAlloc) (LLVMBuilderRef, LLVMValueRef, size_t, LLVMValueRef *, GradientUtils *) |
| typedef LLVMValueRef(* | CustomShadowFree) (LLVMBuilderRef, LLVMValueRef) |
| typedef uint8_t(* | CustomFunctionForward) (LLVMBuilderRef, LLVMValueRef, GradientUtils *, LLVMValueRef *, LLVMValueRef *) |
| typedef uint8_t(* | CustomFunctionDiffUse) (LLVMValueRef, const GradientUtils *, LLVMValueRef, uint8_t, CDerivativeMode, uint8_t *) |
| typedef uint8_t(* | CustomAugmentedFunctionForward) (LLVMBuilderRef, LLVMValueRef, GradientUtils *, LLVMValueRef *, LLVMValueRef *, LLVMValueRef *) |
| typedef void(* | CustomFunctionReverse) (LLVMBuilderRef, LLVMValueRef, DiffeGradientUtils *, LLVMValueRef) |
Enumerations | |
| enum | CConcreteType { DT_Anything = 0 , DT_Integer = 1 , DT_Pointer = 2 , DT_Half = 3 , DT_Float = 4 , DT_Double = 5 , DT_Unknown = 6 , DT_X86_FP80 = 7 , DT_BFloat16 = 8 , DT_FP128 = 9 } |
| enum | CValueType { VT_None = 0 , VT_Primal = 1 , VT_Shadow = 2 , VT_Both = VT_Primal | VT_Shadow } |
| enum | CDIFFE_TYPE { DFT_OUT_DIFF = 0 , DFT_DUP_ARG = 1 , DFT_CONSTANT = 2 , DFT_DUP_NONEED = 3 } |
| enum | CBATCH_TYPE { BT_SCALAR = 0 , BT_VECTOR = 1 } |
| enum | CDerivativeMode { DEM_ForwardMode = 0 , DEM_ReverseModePrimal = 1 , DEM_ReverseModeGradient = 2 , DEM_ReverseModeCombined = 3 , DEM_ForwardModeSplit = 4 , DEM_ForwardModeError = 5 } |
| enum | CProbProgMode { DEM_Trace = 0 , DEM_Condition = 1 } |
Functions | |
| CTypeTreeRef | EnzymeNewTypeTree () |
| CTypeTreeRef | EnzymeNewTypeTreeCT (CConcreteType, LLVMContextRef ctx) |
| CTypeTreeRef | EnzymeNewTypeTreeTR (CTypeTreeRef) |
| void | EnzymeFreeTypeTree (CTypeTreeRef CTT) |
| uint8_t | EnzymeSetTypeTree (CTypeTreeRef dst, CTypeTreeRef src) |
| uint8_t | EnzymeMergeTypeTree (CTypeTreeRef dst, CTypeTreeRef src) |
| void | EnzymeTypeTreeOnlyEq (CTypeTreeRef dst, int64_t x) |
| void | EnzymeTypeTreeData0Eq (CTypeTreeRef dst) |
| void | EnzymeTypeTreeShiftIndiciesEq (CTypeTreeRef dst, const char *datalayout, int64_t offset, int64_t maxSize, uint64_t addOffset) |
| void | EnzymeTypeTreeInsertEq (CTypeTreeRef dst, const int64_t *indices, size_t len, CConcreteType ct, LLVMContextRef ctx) |
| const char * | EnzymeTypeTreeToString (CTypeTreeRef src) |
| void | EnzymeTypeTreeToStringFree (const char *cstr) |
| void | EnzymeSetCLBool (void *, uint8_t) |
| void | EnzymeSetCLInteger (void *, int64_t) |
| void | EnzymeSetCLString (void *, const char *) |
| EnzymeTypeAnalysisRef | CreateTypeAnalysis (EnzymeLogicRef Log, char **customRuleNames, CustomRuleType *customRules, size_t numRules) |
| void | ClearTypeAnalysis (EnzymeTypeAnalysisRef) |
| void | FreeTypeAnalysis (EnzymeTypeAnalysisRef) |
| EnzymeLogicRef | EnzymeTypeAnalysisGetLogic (EnzymeTypeAnalysisRef TAR) |
| EnzymeTypeAnalysisRef | EnzymeGetTypeAnalysisFromTypeAnalyzer (void *TAR) |
| EnzymeTraceInterfaceRef | FindEnzymeStaticTraceInterface (LLVMModuleRef M) |
| EnzymeTraceInterfaceRef | CreateEnzymeStaticTraceInterface (LLVMContextRef C, LLVMValueRef getTraceFunction, LLVMValueRef getChoiceFunction, LLVMValueRef insertCallFunction, LLVMValueRef insertChoiceFunction, LLVMValueRef insertArgumentFunction, LLVMValueRef insertReturnFunction, LLVMValueRef insertFunctionFunction, LLVMValueRef insertChoiceGradientFunction, LLVMValueRef insertArgumentGradientFunction, LLVMValueRef newTraceFunction, LLVMValueRef freeTraceFunction, LLVMValueRef hasCallFunction, LLVMValueRef hasChoiceFunction) |
| EnzymeTraceInterfaceRef | CreateEnzymeDynamicTraceInterface (LLVMValueRef interface, LLVMValueRef F) |
| EnzymeLogicRef | CreateEnzymeLogic (uint8_t PostOpt) |
| void | ClearEnzymeLogic (EnzymeLogicRef) |
| void | FreeEnzymeLogic (EnzymeLogicRef) |
| void | EnzymeLogicSetExternalContext (EnzymeLogicRef, void *ExternalContext) |
| void * | EnzymeLogicGetExternalContext (EnzymeLogicRef) |
| void | EnzymeExtractReturnInfo (EnzymeAugmentedReturnPtr ret, int64_t *data, uint8_t *existed, size_t len) |
| LLVMValueRef | EnzymeExtractFunctionFromAugmentation (EnzymeAugmentedReturnPtr ret) |
| LLVMTypeRef | EnzymeExtractTapeTypeFromAugmentation (EnzymeAugmentedReturnPtr ret) |
| void | EnzymeRegisterAllocationHandler (char *Name, CustomShadowAlloc AHandle, CustomShadowFree FHandle) |
| LLVMValueRef | EnzymeCreateForwardDiff (EnzymeLogicRef Logic, LLVMValueRef request_req, LLVMBuilderRef request_ip, LLVMValueRef todiff, CDIFFE_TYPE retType, CDIFFE_TYPE *constant_args, size_t constant_args_size, EnzymeTypeAnalysisRef TA, uint8_t returnValue, CDerivativeMode mode, uint8_t freeMemory, uint8_t runtimeActivity, uint8_t strongZero, unsigned width, LLVMTypeRef additionalArg, CFnTypeInfo typeInfo, uint8_t subsequent_calls_may_write, uint8_t *_overwritten_args, size_t overwritten_args_size, EnzymeAugmentedReturnPtr augmented) |
| LLVMValueRef | EnzymeCreatePrimalAndGradient (EnzymeLogicRef Logic, LLVMValueRef request_req, LLVMBuilderRef request_ip, LLVMValueRef todiff, CDIFFE_TYPE retType, CDIFFE_TYPE *constant_args, size_t constant_args_size, EnzymeTypeAnalysisRef TA, uint8_t returnValue, uint8_t dretUsed, CDerivativeMode mode, uint8_t runtimeActivity, uint8_t strongZero, unsigned width, uint8_t freeMemory, LLVMTypeRef additionalArg, uint8_t forceAnonymousTape, CFnTypeInfo typeInfo, uint8_t subsequent_calls_may_write, uint8_t *_overwritten_args, size_t overwritten_args_size, EnzymeAugmentedReturnPtr augmented, uint8_t AtomicAdd) |
| void | EnzymeRegisterCallHandler (const char *Name, CustomAugmentedFunctionForward FwdHandle, CustomFunctionReverse RevHandle) |
| LLVMValueRef | EnzymeGradientUtilsNewFromOriginal (GradientUtils *gutils, LLVMValueRef val) |
| void * | EnzymeGradientUtilsGetExternalContext (GradientUtils *gutils) |
| uint8_t | EnzymeGradientUtilsGetAtomicAdd (GradientUtils *gutils) |
| typedef struct EnzymeTypeTree* CTypeTreeRef |
| typedef uint8_t(* CustomAugmentedFunctionForward) (LLVMBuilderRef, LLVMValueRef, GradientUtils *, LLVMValueRef *, LLVMValueRef *, LLVMValueRef *) |
| typedef uint8_t(* CustomFunctionDiffUse) (LLVMValueRef, const GradientUtils *, LLVMValueRef, uint8_t, CDerivativeMode, uint8_t *) |
| typedef uint8_t(* CustomFunctionForward) (LLVMBuilderRef, LLVMValueRef, GradientUtils *, LLVMValueRef *, LLVMValueRef *) |
| typedef void(* CustomFunctionReverse) (LLVMBuilderRef, LLVMValueRef, DiffeGradientUtils *, LLVMValueRef) |
| typedef uint8_t(* CustomRuleType) (int, CTypeTreeRef, CTypeTreeRef *, struct IntList *, size_t, LLVMValueRef, void *) |
| typedef LLVMValueRef(* CustomShadowAlloc) (LLVMBuilderRef, LLVMValueRef, size_t, LLVMValueRef *, GradientUtils *) |
| typedef LLVMValueRef(* CustomShadowFree) (LLVMBuilderRef, LLVMValueRef) |
| typedef struct EnzymeOpaqueAugmentedReturn* EnzymeAugmentedReturnPtr |
| typedef struct EnzymeOpaqueLogic* EnzymeLogicRef |
| typedef struct EnzymeOpaqueTraceInterface* EnzymeTraceInterfaceRef |
| typedef struct EnzymeOpaqueTypeAnalysis* EnzymeTypeAnalysisRef |
| enum CBATCH_TYPE |
| enum CConcreteType |
| enum CDerivativeMode |
| enum CDIFFE_TYPE |
| enum CProbProgMode |
| enum CValueType |
| void ClearEnzymeLogic | ( | EnzymeLogicRef | Ref | ) |
| void ClearTypeAnalysis | ( | EnzymeTypeAnalysisRef | TAR | ) |
Definition at line 312 of file CApi.cpp.
References TypeAnalysis::clear(), and eunwrap().
| EnzymeTraceInterfaceRef CreateEnzymeDynamicTraceInterface | ( | LLVMValueRef | interface, |
| LLVMValueRef | F ) |
| EnzymeLogicRef CreateEnzymeLogic | ( | uint8_t | PostOpt | ) |
| EnzymeTraceInterfaceRef CreateEnzymeStaticTraceInterface | ( | LLVMContextRef | C, |
| LLVMValueRef | getTraceFunction, | ||
| LLVMValueRef | getChoiceFunction, | ||
| LLVMValueRef | insertCallFunction, | ||
| LLVMValueRef | insertChoiceFunction, | ||
| LLVMValueRef | insertArgumentFunction, | ||
| LLVMValueRef | insertReturnFunction, | ||
| LLVMValueRef | insertFunctionFunction, | ||
| LLVMValueRef | insertChoiceGradientFunction, | ||
| LLVMValueRef | insertArgumentGradientFunction, | ||
| LLVMValueRef | newTraceFunction, | ||
| LLVMValueRef | freeTraceFunction, | ||
| LLVMValueRef | hasCallFunction, | ||
| LLVMValueRef | hasChoiceFunction ) |
| EnzymeTypeAnalysisRef CreateTypeAnalysis | ( | EnzymeLogicRef | Log, |
| char ** | customRuleNames, | ||
| CustomRuleType * | customRules, | ||
| size_t | numRules ) |
Definition at line 274 of file CApi.cpp.
References TypeAnalysis::CustomRules, IntList::data, eunwrap(), and IntList::size.
| LLVMValueRef EnzymeCreateForwardDiff | ( | EnzymeLogicRef | Logic, |
| LLVMValueRef | request_req, | ||
| LLVMBuilderRef | request_ip, | ||
| LLVMValueRef | todiff, | ||
| CDIFFE_TYPE | retType, | ||
| CDIFFE_TYPE * | constant_args, | ||
| size_t | constant_args_size, | ||
| EnzymeTypeAnalysisRef | TA, | ||
| uint8_t | returnValue, | ||
| CDerivativeMode | mode, | ||
| uint8_t | freeMemory, | ||
| uint8_t | runtimeActivity, | ||
| uint8_t | strongZero, | ||
| unsigned | width, | ||
| LLVMTypeRef | additionalArg, | ||
| CFnTypeInfo | typeInfo, | ||
| uint8_t | subsequent_calls_may_write, | ||
| uint8_t * | _overwritten_args, | ||
| size_t | overwritten_args_size, | ||
| EnzymeAugmentedReturnPtr | augmented ) |
| LLVMValueRef EnzymeCreatePrimalAndGradient | ( | EnzymeLogicRef | Logic, |
| LLVMValueRef | request_req, | ||
| LLVMBuilderRef | request_ip, | ||
| LLVMValueRef | todiff, | ||
| CDIFFE_TYPE | retType, | ||
| CDIFFE_TYPE * | constant_args, | ||
| size_t | constant_args_size, | ||
| EnzymeTypeAnalysisRef | TA, | ||
| uint8_t | returnValue, | ||
| uint8_t | dretUsed, | ||
| CDerivativeMode | mode, | ||
| uint8_t | runtimeActivity, | ||
| uint8_t | strongZero, | ||
| unsigned | width, | ||
| uint8_t | freeMemory, | ||
| LLVMTypeRef | additionalArg, | ||
| uint8_t | forceAnonymousTape, | ||
| CFnTypeInfo | typeInfo, | ||
| uint8_t | subsequent_calls_may_write, | ||
| uint8_t * | _overwritten_args, | ||
| size_t | overwritten_args_size, | ||
| EnzymeAugmentedReturnPtr | augmented, | ||
| uint8_t | AtomicAdd ) |
| LLVMValueRef EnzymeExtractFunctionFromAugmentation | ( | EnzymeAugmentedReturnPtr | ret | ) |
| void EnzymeExtractReturnInfo | ( | EnzymeAugmentedReturnPtr | ret, |
| int64_t * | data, | ||
| uint8_t * | existed, | ||
| size_t | len ) |
Definition at line 825 of file CApi.cpp.
References DifferentialReturn, Return, and Tape.
| LLVMTypeRef EnzymeExtractTapeTypeFromAugmentation | ( | EnzymeAugmentedReturnPtr | ret | ) |
| void EnzymeFreeTypeTree | ( | CTypeTreeRef | CTT | ) |
| EnzymeTypeAnalysisRef EnzymeGetTypeAnalysisFromTypeAnalyzer | ( | void * | TAR | ) |
Definition at line 333 of file CApi.cpp.
References TypeAnalyzer::interprocedural.
| uint8_t EnzymeGradientUtilsGetAtomicAdd | ( | GradientUtils * | gutils | ) |
Definition at line 431 of file CApi.cpp.
References GradientUtils::AtomicAdd.
| void * EnzymeGradientUtilsGetExternalContext | ( | GradientUtils * | gutils | ) |
Definition at line 423 of file CApi.cpp.
References EnzymeLogic::ExternalContext, and GradientUtils::Logic.
| LLVMValueRef EnzymeGradientUtilsNewFromOriginal | ( | GradientUtils * | gutils, |
| LLVMValueRef | val ) |
Definition at line 448 of file CApi.cpp.
References GradientUtils::getNewFromOriginal().
| void * EnzymeLogicGetExternalContext | ( | EnzymeLogicRef | Ref | ) |
| void EnzymeLogicSetExternalContext | ( | EnzymeLogicRef | Ref, |
| void * | ExternalContext ) |
| uint8_t EnzymeMergeTypeTree | ( | CTypeTreeRef | dst, |
| CTypeTreeRef | src ) |
| CTypeTreeRef EnzymeNewTypeTree | ( | ) |
| CTypeTreeRef EnzymeNewTypeTreeCT | ( | CConcreteType | CT, |
| LLVMContextRef | ctx ) |
| CTypeTreeRef EnzymeNewTypeTreeTR | ( | CTypeTreeRef | CTR | ) |
| void EnzymeRegisterAllocationHandler | ( | char * | Name, |
| CustomShadowAlloc | AHandle, | ||
| CustomShadowFree | FHandle ) |
Definition at line 352 of file CApi.cpp.
References Args, shadowErasers, and shadowHandlers.
| void EnzymeRegisterCallHandler | ( | const char * | Name, |
| CustomAugmentedFunctionForward | FwdHandle, | ||
| CustomFunctionReverse | RevHandle ) |
Definition at line 370 of file CApi.cpp.
References customCallHandlers.
| uint8_t EnzymeSetTypeTree | ( | CTypeTreeRef | dst, |
| CTypeTreeRef | src ) |
| EnzymeLogicRef EnzymeTypeAnalysisGetLogic | ( | EnzymeTypeAnalysisRef | TAR | ) |
Definition at line 319 of file CApi.cpp.
References TypeAnalysis::Logic.
| void EnzymeTypeTreeData0Eq | ( | CTypeTreeRef | dst | ) |
| void EnzymeTypeTreeInsertEq | ( | CTypeTreeRef | dst, |
| const int64_t * | indices, | ||
| size_t | len, | ||
| CConcreteType | ct, | ||
| LLVMContextRef | ctx ) |
| void EnzymeTypeTreeOnlyEq | ( | CTypeTreeRef | dst, |
| int64_t | x ) |
| void EnzymeTypeTreeShiftIndiciesEq | ( | CTypeTreeRef | dst, |
| const char * | datalayout, | ||
| int64_t | offset, | ||
| int64_t | maxSize, | ||
| uint64_t | addOffset ) |
| const char * EnzymeTypeTreeToString | ( | CTypeTreeRef | src | ) |
| EnzymeTraceInterfaceRef FindEnzymeStaticTraceInterface | ( | LLVMModuleRef | M | ) |
| void FreeEnzymeLogic | ( | EnzymeLogicRef | Ref | ) |
| void FreeTypeAnalysis | ( | EnzymeTypeAnalysisRef | TAR | ) |