50 llvm::SmallVector<mlir::Value, 2> outs;
53 for (
auto act : uop.getActivity()) {
54 auto iattr = cast<ActivityAttr>(act);
55 auto act_val = iattr.getValue();
57 if constexpr (!filterGrad) {
58 outs.push_back(uop.getInputs()[in_idx]);
63 if (act_val == Activity::enzyme_dup ||
64 act_val == Activity::enzyme_dupnoneed) {
66 if constexpr (filterGrad && includeShadows) {
67 outs.push_back(uop.getInputs()[in_idx]);
76 if constexpr ((std::is_same_v<SourceOp, AutoDiffOp> ||
77 std::is_same_v<SourceOp, AutoDiffRegionOp>) &&
78 filterGrad && includeDifferentialReturns) {
80 if (in_idx != uop.getInputs().size()) {
81 for (
auto act : uop.getRetActivity()) {
82 auto iattr = cast<ActivityAttr>(act);
83 auto act_val = iattr.getValue();
85 if (act_val == Activity::enzyme_active ||
86 act_val == Activity::enzyme_activenoneed) {
87 outs.push_back(uop.getInputs()[in_idx]);