Enable metadata for specifying activity of insts/globals
diff --git a/enzyme/Enzyme/ActivityAnalysis.cpp b/enzyme/Enzyme/ActivityAnalysis.cpp index 8ce7dba..13e9366 100644 --- a/enzyme/Enzyme/ActivityAnalysis.cpp +++ b/enzyme/Enzyme/ActivityAnalysis.cpp
@@ -704,6 +704,19 @@ return true; } + if (hasMetadata(I, "enzyme_active") || hasMetadata(I, "enzyme_active_inst")) { + if (EnzymePrintActivity) + llvm::errs() << "forced active " << *I << "\n"; + ActiveInstructions.insert(I); + return false; + } + if (hasMetadata(I, "enzyme_inactive") || + hasMetadata(I, "enzyme_inactive_inst")) { + if (EnzymePrintActivity) + llvm::errs() << "forced inactive " << *I << "\n"; + InsertConstantInstruction(TR, I); + return true; + } if (auto CI = dyn_cast<CallInst>(I)) { if (CI->hasFnAttr("enzyme_active") || CI->hasFnAttr("enzyme_active_inst")) { if (EnzymePrintActivity) @@ -1236,6 +1249,38 @@ return false; } + if (auto I = dyn_cast<Instruction>(Val)) { + if (hasMetadata(I, "enzyme_active") || + hasMetadata(I, "enzyme_active_val")) { + if (EnzymePrintActivity) + llvm::errs() << "forced active val " << *Val << "\n"; + ActiveValues.insert(Val); + return false; + } + if (hasMetadata(I, "enzyme_inactive") || + hasMetadata(I, "enzyme_inactive_val")) { + if (EnzymePrintActivity) + llvm::errs() << "forced inactive val " << *Val << "\n"; + InsertConstantValue(TR, Val); + return true; + } + } + if (auto I = dyn_cast<GlobalObject>(Val)) { + if (hasMetadata(I, "enzyme_active") || + hasMetadata(I, "enzyme_active_val")) { + if (EnzymePrintActivity) + llvm::errs() << "forced active val " << *Val << "\n"; + ActiveValues.insert(Val); + return false; + } + if (hasMetadata(I, "enzyme_inactive") || + hasMetadata(I, "enzyme_inactive_val")) { + if (EnzymePrintActivity) + llvm::errs() << "forced inactive val " << *Val << "\n"; + InsertConstantValue(TR, Val); + return true; + } + } if (auto CI = dyn_cast<CallInst>(Val)) { if (CI->hasFnAttr("enzyme_active") || CI->hasFnAttr("enzyme_active_val")) { if (EnzymePrintActivity)