51 llvm::SmallVector<mlir::Value, 2> outs;
54 for (
auto act : uop.getActivity()) {
55 auto iattr = cast<ActivityAttr>(act);
56 auto act_val = iattr.getValue();
58 if constexpr (!filterGrad) {
59 outs.push_back(uop.getInputs()[in_idx]);
64 if (act_val == Activity::enzyme_dup ||
65 act_val == Activity::enzyme_dupnoneed) {
67 if constexpr (filterGrad && includeShadows) {
68 outs.push_back(uop.getInputs()[in_idx]);
77 if constexpr ((std::is_same_v<SourceOp, AutoDiffOp> ||
78 std::is_same_v<SourceOp, AutoDiffRegionOp>) &&
79 filterGrad && includeDifferentialReturns) {
81 if (in_idx != uop.getInputs().size()) {
82 for (
auto act : uop.getRetActivity()) {
83 auto iattr = cast<ActivityAttr>(act);
84 auto act_val = iattr.getValue();
86 if (act_val == Activity::enzyme_active ||
87 act_val == Activity::enzyme_activenoneed) {
88 outs.push_back(uop.getInputs()[in_idx]);