|
Enzyme main
|
Classes | |
| struct | InterleaveSplit |
| Where the primals stop and the shadows start. More... | |
| struct | MarkerInfo |
Enumerations | |
| enum class | MarkerRole { Activity , Interleave , CallFlag , Modifier } |
| What a marker does to the call it appears in. More... | |
Functions | |
| std::optional< MarkerInfo > | lookupEnzymeMarker (llvm::StringRef name) |
The one description of the __enzyme_* argument markers. | |
| bool | markerActivityTakesShadow (DIFFE_TYPE a) |
| Whether an activity is one that a shadow goes with. | |
| template<typename MarkerAtFn > | |
| InterleaveSplit | findEnzymeInterleave (unsigned first, unsigned count, MarkerAtFn markerAt) |
Find enzyme_interleave among the operands, which has to be done before walking them: it says where the shadows are, and the walk needs that from the first argument on. | |
|
strong |
What a marker does to the call it appears in.
Definition at line 34 of file EnzymeCallMarkers.h.
| InterleaveSplit enzyme_markers::findEnzymeInterleave | ( | unsigned | first, |
| unsigned | count, | ||
| MarkerAtFn | markerAt ) |
Find enzyme_interleave among the operands, which has to be done before walking them: it says where the shadows are, and the walk needs that from the first argument on.
markerAt(i) gives the marker name operand i reads, if it reads one.
Definition at line 147 of file EnzymeCallMarkers.h.
|
inline |
The one description of the __enzyme_* argument markers.
Returns nothing for a name this does not know – callers report that as the error it is rather than carrying on, since guessing at an unknown marker is how an argument gets read as a marker.
Definition at line 77 of file EnzymeCallMarkers.h.
References Activity, CallFlag, CONSTANT, DUP_ARG, DUP_NONEED, Interleave, Modifier, and OUT_DIFF.
|
inline |
Whether an activity is one that a shadow goes with.
Definition at line 128 of file EnzymeCallMarkers.h.
References DUP_ARG, and DUP_NONEED.