6#include "mlir/IR/Dominance.h"
7#include "mlir/IR/IRMapping.h"
8#include "mlir/IR/Matchers.h"
9#include "mlir/IR/SymbolTable.h"
10#include "mlir/Interfaces/FunctionInterfaces.h"
11#include "llvm/ADT/BreadthFirstIterator.h"
14#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
16#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
17#include "mlir/Dialect/Func/IR/FuncOps.h"
29 unsigned width, mlir::Type additionalArg,
30 llvm::ArrayRef<bool> returnPrimals,
31 llvm::ArrayRef<bool> returnShadows,
32 llvm::ArrayRef<DIFFE_TYPE> ReturnActivity,
33 llvm::ArrayRef<DIFFE_TYPE> ArgActivity);
35void cloneInto(Region *src, Region *dest, Region::iterator destPos,
36 IRMapping &mapper, std::map<Operation *, Operation *> &opMap);
38void cloneInto(Region *src, Region *dest, IRMapping &mapper,
39 std::map<mlir::Operation *, mlir::Operation *> &opMap);
41Operation *
clone(Operation *src, IRMapping &mapper,
42 Operation::CloneOptions options,
43 std::map<Operation *, Operation *> &opMap);
47 IRMapping &ptrInputs, ArrayRef<DIFFE_TYPE> ArgActivity,
48 SmallPtrSetImpl<mlir::Value> &constants,
49 SmallPtrSetImpl<mlir::Value> &nonconstants,
50 SmallPtrSetImpl<mlir::Value> &returnvals,
51 const std::vector<bool> &returnPrimals,
52 const std::vector<bool> &returnShadows, ArrayRef<DIFFE_TYPE> ReturnActivity,
53 Twine name, IRMapping &VMap, std::map<Operation *, Operation *> &OpMap,
54 mlir::Type additionalArg);
Type getShadowType(Type type, unsigned width=1)
FunctionOpInterface CloneFunctionWithReturns(DerivativeMode mode, unsigned width, FunctionOpInterface F, IRMapping &ptrInputs, ArrayRef< DIFFE_TYPE > ArgActivity, SmallPtrSetImpl< mlir::Value > &constants, SmallPtrSetImpl< mlir::Value > &nonconstants, SmallPtrSetImpl< mlir::Value > &returnvals, const std::vector< bool > &returnPrimals, const std::vector< bool > &returnShadows, ArrayRef< DIFFE_TYPE > ReturnActivity, Twine name, IRMapping &VMap, std::map< Operation *, Operation * > &OpMap, mlir::Type additionalArg)
void cloneInto(Region *src, Region *dest, Region::iterator destPos, IRMapping &mapper, std::map< Operation *, Operation * > &opMap)
Clone this region into 'dest' before the given position in 'dest'.
Operation * clone(Operation *src, IRMapping &mapper, Operation::CloneOptions options, std::map< Operation *, Operation * > &opMap)
mlir::FunctionType getFunctionTypeForClone(mlir::FunctionType FTy, DerivativeMode mode, unsigned width, mlir::Type additionalArg, llvm::ArrayRef< bool > returnPrimals, llvm::ArrayRef< bool > returnShadows, llvm::ArrayRef< DIFFE_TYPE > ReturnActivity, llvm::ArrayRef< DIFFE_TYPE > ArgActivity)