Skip to content

Commit 52225d2

Browse files
authored
[AMDGPU][NewPM] Port AMDGPUReserveWWMRegs to NPM (#123722)
1 parent fdc8e5a commit 52225d2

File tree

5 files changed

+57
-12
lines changed

5 files changed

+57
-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
@@ -99,6 +99,7 @@ FUNCTION_PASS_WITH_PARAMS(
9999
MACHINE_FUNCTION_PASS("amdgpu-insert-delay-alu", AMDGPUInsertDelayAluPass())
100100
MACHINE_FUNCTION_PASS("amdgpu-isel", AMDGPUISelDAGToDAGPass(*this))
101101
MACHINE_FUNCTION_PASS("amdgpu-pre-ra-long-branch-reg", GCNPreRALongBranchRegPass())
102+
MACHINE_FUNCTION_PASS("amdgpu-reserve-wwm-regs", AMDGPUReserveWWMRegsPass())
102103
MACHINE_FUNCTION_PASS("amdgpu-rewrite-partial-reg-uses", GCNRewritePartialRegUsesPass())
103104
MACHINE_FUNCTION_PASS("amdgpu-pre-ra-optimizations", GCNPreRAOptimizationsPass())
104105
MACHINE_FUNCTION_PASS("amdgpu-nsa-reassign", GCNNSAReassignPass())

llvm/lib/Target/AMDGPU/AMDGPUReserveWWMRegs.cpp

Lines changed: 26 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,34 @@ 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+
// TODO: This should abandon RegisterClassInfo once it is turned into an
74+
// analysis.
75+
return PreservedAnalyses::all();
76+
}
5877

59-
bool AMDGPUReserveWWMRegs::runOnMachineFunction(MachineFunction &MF) {
78+
bool AMDGPUReserveWWMRegs::run(MachineFunction &MF) {
6079
SIMachineFunctionInfo *MFI = MF.getInfo<SIMachineFunctionInfo>();
6180

6281
bool Changed = false;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
static bool isRequired() { return true; }
21+
};
22+
} // namespace llvm
23+
24+
#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"
@@ -528,7 +529,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
528529
initializeAMDGPURemoveIncompatibleFunctionsLegacyPass(*PR);
529530
initializeAMDGPULowerModuleLDSLegacyPass(*PR);
530531
initializeAMDGPULowerBufferFatPointersPass(*PR);
531-
initializeAMDGPUReserveWWMRegsPass(*PR);
532+
initializeAMDGPUReserveWWMRegsLegacyPass(*PR);
532533
initializeAMDGPURewriteOutArgumentsPass(*PR);
533534
initializeAMDGPURewriteUndefForPHILegacyPass(*PR);
534535
initializeAMDGPUUnifyMetadataPass(*PR);
@@ -1599,7 +1600,7 @@ bool GCNPassConfig::addRegAssignAndRewriteFast() {
15991600
addPass(createWWMRegAllocPass(false));
16001601

16011602
addPass(&SILowerWWMCopiesLegacyID);
1602-
addPass(&AMDGPUReserveWWMRegsID);
1603+
addPass(&AMDGPUReserveWWMRegsLegacyID);
16031604

16041605
// For allocating per-thread VGPRs.
16051606
addPass(createVGPRAllocPass(false));
@@ -1636,7 +1637,7 @@ bool GCNPassConfig::addRegAssignAndRewriteOptimized() {
16361637
addPass(createWWMRegAllocPass(true));
16371638
addPass(&SILowerWWMCopiesLegacyID);
16381639
addPass(createVirtRegRewriter(false));
1639-
addPass(&AMDGPUReserveWWMRegsID);
1640+
addPass(&AMDGPUReserveWWMRegsLegacyID);
16401641

16411642
// For allocating per-thread VGPRs.
16421643
addPass(createVGPRAllocPass(true));

0 commit comments

Comments
 (0)