Enzyme main
Loading...
Searching...
No Matches
EnzymeCallMarkers.h File Reference
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include <optional>
Include dependency graph for EnzymeCallMarkers.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  enzyme_markers::MarkerInfo
 
struct  enzyme_markers::InterleaveSplit
 Where the primals stop and the shadows start. More...
 

Namespaces

namespace  enzyme_markers
 

Enumerations

enum class  enzyme_markers::MarkerRole { enzyme_markers::Activity , enzyme_markers::Interleave , enzyme_markers::CallFlag , enzyme_markers::Modifier }
 What a marker does to the call it appears in. More...
 
enum class  DIFFE_TYPE { OUT_DIFF = 0 , DUP_ARG = 1 , CONSTANT = 2 , DUP_NONEED = 3 }
 Potential differentiable argument classifications. More...
 

Functions

std::optional< MarkerInfo > enzyme_markers::lookupEnzymeMarker (llvm::StringRef name)
 The one description of the __enzyme_* argument markers.
 
bool enzyme_markers::markerActivityTakesShadow (DIFFE_TYPE a)
 Whether an activity is one that a shadow goes with.
 
template<typename MarkerAtFn >
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.
 

Enumeration Type Documentation

◆ DIFFE_TYPE

enum class DIFFE_TYPE
strong

Potential differentiable argument classifications.

Enumerator
OUT_DIFF 
DUP_ARG 
CONSTANT 
DUP_NONEED 

Definition at line 50 of file EnzymeCallMarkers.h.