Skip to content

Commit d1ac5e2

Browse files
committed
[AMDGPU][NewPM] Port AMDGPUReserveWWMRegs to NPM
1 parent 0f9e913 commit d1ac5e2

File tree

5 files changed

+54
-12
lines changed

5 files changed

+54
-12
lines changed

llvm/lib/Target/AMDGPU/AMDGPU.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ struct AMDGPULowerBufferFatPointersPass
156156
const TargetMachine &TM;
157157
};
158158

159-
void initializeAMDGPUReserveWWMRegsPass(PassRegistry &);
160-
extern char &AMDGPUReserveWWMRegsID;
159+
void initializeAMDGPUReserveWWMRegsLegacyPass(PassRegistry &);
160+
extern char &AMDGPUReserveWWMRegsLegacyID;
161161

162162
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &);
163163
extern char &AMDGPURewriteOutArgumentsID;

llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ FUNCTION_PASS_WITH_PARAMS(
9797
#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
9898
#endif
9999
MACHINE_FUNCTION_PASS("amdgpu-isel", AMDGPUISelDAGToDAGPass(*this))
100+
MACHINE_FUNCTION_PASS("amdgpu-reserve-wwm-regs", AMDGPUReserveWWMRegsPass())
100101
MACHINE_FUNCTION_PASS("si-fix-sgpr-copies", SIFixSGPRCopiesPass())
101102
MACHINE_FUNCTION_PASS("si-i1-copies", SILowerI1CopiesPass())
102103
MACHINE_FUNCTION_PASS("si-fold-operands", SIFoldOperandsPass());

llvm/lib/Target/AMDGPU/AMDGPUReserveWWMRegs.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
//
1515
//===----------------------------------------------------------------------===//
1616

17+
#include "AMDGPUReserveWWMRegs.h"
1718
#include "AMDGPU.h"
1819
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
1920
#include "SIMachineFunctionInfo.h"
@@ -27,12 +28,12 @@ using namespace llvm;
2728

2829
namespace {
2930

30-
class AMDGPUReserveWWMRegs : public MachineFunctionPass {
31+
class AMDGPUReserveWWMRegsLegacy : public MachineFunctionPass {
3132
public:
3233
static char ID;
3334

34-
AMDGPUReserveWWMRegs() : MachineFunctionPass(ID) {
35-
initializeAMDGPUReserveWWMRegsPass(*PassRegistry::getPassRegistry());
35+
AMDGPUReserveWWMRegsLegacy() : MachineFunctionPass(ID) {
36+
initializeAMDGPUReserveWWMRegsLegacyPass(*PassRegistry::getPassRegistry());
3637
}
3738

3839
bool runOnMachineFunction(MachineFunction &MF) override;
@@ -47,16 +48,32 @@ class AMDGPUReserveWWMRegs : public MachineFunctionPass {
4748
}
4849
};
4950

51+
class AMDGPUReserveWWMRegs {
52+
public:
53+
bool run(MachineFunction &MF);
54+
};
55+
5056
} // End anonymous namespace.
5157

52-
INITIALIZE_PASS(AMDGPUReserveWWMRegs, DEBUG_TYPE,
58+
INITIALIZE_PASS(AMDGPUReserveWWMRegsLegacy, DEBUG_TYPE,
5359
"AMDGPU Reserve WWM Registers", false, false)
5460

55-
char AMDGPUReserveWWMRegs::ID = 0;
61+
char AMDGPUReserveWWMRegsLegacy::ID = 0;
62+
63+
char &llvm::AMDGPUReserveWWMRegsLegacyID = AMDGPUReserveWWMRegsLegacy::ID;
5664

57-
char &llvm::AMDGPUReserveWWMRegsID = AMDGPUReserveWWMRegs::ID;
65+
bool AMDGPUReserveWWMRegsLegacy::runOnMachineFunction(MachineFunction &MF) {
66+
return AMDGPUReserveWWMRegs().run(MF);
67+
}
68+
69+
PreservedAnalyses
70+
AMDGPUReserveWWMRegsPass::run(MachineFunction &MF,
71+
MachineFunctionAnalysisManager &) {
72+
AMDGPUReserveWWMRegs().run(MF);
73+
return PreservedAnalyses::all();
74+
}
5875

59-
bool AMDGPUReserveWWMRegs::runOnMachineFunction(MachineFunction &MF) {
76+
bool AMDGPUReserveWWMRegs::run(MachineFunction &MF) {
6077
SIMachineFunctionInfo *MFI = MF.getInfo<SIMachineFunctionInfo>();
6178

6279
bool Changed = false;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//===- AMDGPUReserveWWMRegs.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-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPURESERVEWWMREGS_H
10+
#define LLVM_LIB_TARGET_AMDGPU_AMDGPURESERVEWWMREGS_H
11+
12+
#include "llvm/CodeGen/MachinePassManager.h"
13+
14+
namespace llvm {
15+
class AMDGPUReserveWWMRegsPass
16+
: public PassInfoMixin<AMDGPUReserveWWMRegsPass> {
17+
public:
18+
PreservedAnalyses run(MachineFunction &MF,
19+
MachineFunctionAnalysisManager &MFAM);
20+
};
21+
} // namespace llvm
22+
23+
#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPURESERVEWWMREGS_H

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "AMDGPUOpenCLEnqueuedBlockLowering.h"
2626
#include "AMDGPUPerfHintAnalysis.h"
2727
#include "AMDGPURemoveIncompatibleFunctions.h"
28+
#include "AMDGPUReserveWWMRegs.h"
2829
#include "AMDGPUSplitModule.h"
2930
#include "AMDGPUTargetObjectFile.h"
3031
#include "AMDGPUTargetTransformInfo.h"
@@ -515,7 +516,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
515516
initializeAMDGPURemoveIncompatibleFunctionsLegacyPass(*PR);
516517
initializeAMDGPULowerModuleLDSLegacyPass(*PR);
517518
initializeAMDGPULowerBufferFatPointersPass(*PR);
518-
initializeAMDGPUReserveWWMRegsPass(*PR);
519+
initializeAMDGPUReserveWWMRegsLegacyPass(*PR);
519520
initializeAMDGPURewriteOutArgumentsPass(*PR);
520521
initializeAMDGPURewriteUndefForPHILegacyPass(*PR);
521522
initializeAMDGPUUnifyMetadataPass(*PR);
@@ -1582,7 +1583,7 @@ bool GCNPassConfig::addRegAssignAndRewriteFast() {
15821583
addPass(createWWMRegAllocPass(false));
15831584

15841585
addPass(&SILowerWWMCopiesID);
1585-
addPass(&AMDGPUReserveWWMRegsID);
1586+
addPass(&AMDGPUReserveWWMRegsLegacyID);
15861587

15871588
// For allocating per-thread VGPRs.
15881589
addPass(createVGPRAllocPass(false));
@@ -1619,7 +1620,7 @@ bool GCNPassConfig::addRegAssignAndRewriteOptimized() {
16191620
addPass(createWWMRegAllocPass(true));
16201621
addPass(&SILowerWWMCopiesID);
16211622
addPass(createVirtRegRewriter(false));
1622-
addPass(&AMDGPUReserveWWMRegsID);
1623+
addPass(&AMDGPUReserveWWMRegsLegacyID);
16231624

16241625
// For allocating per-thread VGPRs.
16251626
addPass(createVGPRAllocPass(true));

0 commit comments

Comments
 (0)