blob: 0855dd32a43cd57a557dde29b5f49346eebb9666 [file] [log] [blame] [edit]
//=- ActivityAnalysisPrinter.h - Printer utility pass for Activity Analysis =//
//
// Enzyme Project
//
// Part of the Enzyme Project, under the Apache License v2.0 with LLVM
// Exceptions. See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// If using this code in an academic setting, please cite the following:
// @incollection{enzymeNeurips,
// title = {Instead of Rewriting Foreign Code for Machine Learning,
// Automatically Synthesize Fast Gradients},
// author = {Moses, William S. and Churavy, Valentin},
// booktitle = {Advances in Neural Information Processing Systems 33},
// year = {2020},
// note = {To appear in},
// }
//
//===----------------------------------------------------------------------===//
//
// This file contains a utility LLVM pass for printing derived Activity Analysis
// results of a given function.
//
//===----------------------------------------------------------------------===//
#ifndef ENZYME_ACTIVITY_ANALYSIS_PRINTER_H
#define ENZYME_ACTIVITY_ANALYSIS_PRINTER_H
#include <llvm/Config/llvm-config.h>
#include "llvm/IR/PassManager.h"
#include "llvm/Passes/PassPlugin.h"
namespace llvm {
class FunctionPass;
}
class ActivityAnalysisPrinterNewPM final
: public llvm::AnalysisInfoMixin<ActivityAnalysisPrinterNewPM> {
friend struct llvm::AnalysisInfoMixin<ActivityAnalysisPrinterNewPM>;
private:
static llvm::AnalysisKey Key;
public:
using Result = llvm::PreservedAnalyses;
ActivityAnalysisPrinterNewPM() {}
Result run(llvm::Function &M, llvm::FunctionAnalysisManager &MAM);
static bool isRequired() { return true; }
};
#endif // ENZYME_ACTIVITY_ANALYSIS_PRINTER_H