brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · d814ded Raw
40 lines · c
1//===- AMDGPUSplitModule.h -------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9//===----------------------------------------------------------------------===//10 11#ifndef LLVM_TARGET_AMDGPUSPLITMODULE_H12#define LLVM_TARGET_AMDGPUSPLITMODULE_H13 14#include "llvm/ADT/STLFunctionalExtras.h"15#include "llvm/IR/PassManager.h"16#include <memory>17 18namespace llvm {19 20/// Splits the module M into N linkable partitions. The function ModuleCallback21/// is called N times passing each individual partition as the MPart argument.22class AMDGPUSplitModulePass : public PassInfoMixin<AMDGPUSplitModulePass> {23public:24  using ModuleCreationCallback =25      function_ref<void(std::unique_ptr<Module> MPart)>;26 27  AMDGPUSplitModulePass(unsigned N, ModuleCreationCallback ModuleCallback)28      : N(N), ModuleCallback(ModuleCallback) {}29 30  PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);31 32private:33  unsigned N;34  ModuleCreationCallback ModuleCallback;35};36 37} // end namespace llvm38 39#endif // LLVM_TARGET_AMDGPUSPLITMODULE_H40