Skip to content

Commit 610f41d

Browse files
committed
[SYCL] Port local accessor pass to the new PM
1 parent 8ebf3cf commit 610f41d

File tree

4 files changed

+216
-186
lines changed

4 files changed

+216
-186
lines changed

llvm/include/llvm/SYCLLowerIR/LocalAccessorToSharedMemory.h

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,41 @@
1818
#define LLVM_SYCL_LOCALACCESSORTOSHAREDMEMORY_H
1919

2020
#include "llvm/IR/Module.h"
21-
#include "llvm/Pass.h"
21+
#include "llvm/IR/PassManager.h"
22+
#include "llvm/SYCLLowerIR/TargetHelpers.h"
2223

2324
namespace llvm {
2425

25-
ModulePass *createLocalAccessorToSharedMemoryPass();
26+
class ModulePass;
27+
class PassRegistry;
28+
29+
class LocalAccessorToSharedMemoryPass
30+
: public PassInfoMixin<LocalAccessorToSharedMemoryPass> {
31+
private:
32+
using KernelPayload = TargetHelpers::KernelPayload;
33+
using ArchType = TargetHelpers::ArchType;
34+
35+
public:
36+
explicit LocalAccessorToSharedMemoryPass() {}
37+
38+
PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
39+
static StringRef getPassName() {
40+
return "SYCL Local Accessor to Shared Memory";
41+
}
42+
43+
private:
44+
Function *processKernel(Module &M, Function *F);
45+
void postProcessKernels(
46+
SmallVectorImpl<std::pair<Function *, KernelPayload>> &NewToOldKernels);
47+
48+
private:
49+
// The value for NVVM's ADDRESS_SPACE_SHARED and AMD's LOCAL_ADDRESS happen to
50+
// be 3.
51+
const unsigned SharedASValue = 3;
52+
};
53+
54+
ModulePass *createLocalAccessorToSharedMemoryPassLegacy();
55+
void initializeLocalAccessorToSharedMemoryLegacyPass(PassRegistry &);
2656

2757
} // end namespace llvm
2858

0 commit comments

Comments
 (0)