diff options
author | Akshat Oke <Akshat.Oke@amd.com> | 2025-02-27 10:33:59 +0000 |
---|---|---|
committer | Akshat Oke <Akshat.Oke@amd.com> | 2025-03-11 06:40:15 +0000 |
commit | 93d1bf72016d7ad4c8c5200fd5e38f68921513df (patch) | |
tree | f8928c042c7d3bcf50a360f807f328877d81767d | |
parent | 4f727bc8f5892c2782b28890bdf67fcf5a80d107 (diff) | |
download | llvm-93d1bf72016d7ad4c8c5200fd5e38f68921513df.zip llvm-93d1bf72016d7ad4c8c5200fd5e38f68921513df.tar.gz llvm-93d1bf72016d7ad4c8c5200fd5e38f68921513df.tar.bz2 |
add test
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 106 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h | 4 | ||||
-rw-r--r-- | llvm/test/tools/llc/new-pm/regalloc-amdgpu.mir | 5 |
3 files changed, 7 insertions, 108 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index cbbfcc6..6860b22 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -2165,97 +2165,6 @@ static const char NPMRegAllocOptNotSupportedMessage[] = "-wwm-regalloc-npm, " "and -vgpr-regalloc-npm"; -// void AMDGPUCodeGenPassBuilder::addSGPRRegAlloc(AddMachinePass &addPass, -// RegAllocType RAType, RegAllocFilterFunc FilterFunc, bool Optimized) const { -// RegAllocType RAType = RegAllocTypeNPM; -// if (RAType == RegAllocType::Default) { -// RAType = Optimized ? RegAllocType::Greedy : RegAllocType::Fast; -// } - -// if (RAType == RegAllocType::Greedy) { -// addPass(RAGreedyPass({onlyAllocateSGPRs, "sgpr"})); -// return; -// } - -// if (RAType == RegAllocType::Fast) { -// addPass(RegAllocFastPass({onlyAllocateSGPRs, "sgpr", false})); -// return; -// } -// report_fatal_error("Unsupported SGPR regalloc type", false); -// } - -// template<typename RegAllocPass> -// void AMDGPUCodeGenPassBuilder::addRegAllocOfType(AddMachinePass &addPass, -// RegAllocPass::Options Options) { -// addPass(RegAllocPass(Options)); -// } - -// this is the final method -// template<typename RegAllocPass> -// void AMDGPUCodeGenPassBuilder::addRegAllocOfType(AddMachinePass &addPass, -// RegAllocPhase Phase) { -// #define RA_OPTIONS(FilterFunc, Name, ClearVirtRegs) \ -// [&]() { \ -// if constexpr (std::is_same_v<RegAllocPass, RegAllocFastPass>) { \ -// return RegAllocFastPass::Options{FilterFunc, Name, ClearVirtRegs}; \ -// } else { \ -// return typename RegAllocPass::Options{FilterFunc, Name}; \ -// } \ -// }() - -// typename RegAllocPass::Options Options; -// RegAllocType RAType; - -// switch (Phase) { -// case RegAllocPhase::SGPR: -// Options = RA_OPTIONS(onlyAllocateSGPRs, "sgpr", false); -// RAType = SGPRRegAllocTypeNPM; -// break; -// case RegAllocPhase::WWM: -// Options = RA_OPTIONS(onlyAllocateWWMRegs, "wwm", false); -// RAType = WWMRegAllocTypeNPM; -// break; -// case RegAllocPhase::VGPR: -// Options = RA_OPTIONS(onlyAllocateVGPRs, "vgpr", true); -// RAType = VGPRRegAllocTypeNPM; -// break; -// }; - -// switch(RAType) { -// case RegAllocType::Greedy: -// addPass(RAGreedyPass(Options)); -// return; -// case RegAllocType::Fast: -// addPass(RegAllocFastPass(Options)); -// return; -// case RegAllocType::Unset: -// addPass(RegAllocPass(Options)); -// } -// #undef RA_OPTIONS -// } - -// template<typename RegAllocPass> -// void AMDGPUCodeGenPassBuilder::addRegAlloc(AddMachinePass &addPass, -// RegAllocPhase Phase) { -// RegAllocType RAType; -// switch(Phase) { -// case RegAllocPhase::SGPR: -// RAType = SGPRRegAllocTypeNPM; -// break; -// case RegAllocPhase::WWM: -// RAType = WWMRegAllocTypeNPM; -// break; -// case RegAllocPhase::VGPR: -// RAType = VGPRRegAllocTypeNPM; -// break; -// } -// switch (RAType) { -// case RegAllocType::Greedy: -// addRegAllocOfType(addPass, Phase); -// } -// addRegAllocOfType<RegAllocPass>(addPass, Phase); -// } - template <typename RegAllocPassT> typename RegAllocPassT::Options AMDGPUCodeGenPassBuilder::getRAOptionsForPhase(RegAllocPhase Phase) const { @@ -2276,18 +2185,6 @@ AMDGPUCodeGenPassBuilder::getRAOptionsForPhase(RegAllocPhase Phase) const { case RegAllocPhase::VGPR: return RA_OPTIONS(onlyAllocateVGPRs, "vgpr", true); } - // static_assert(std::is_same_v<PhaseT, SGPRPhase> || - // std::is_same_v<PhaseT, WWMPhase> || - // std::is_same_v<PhaseT, VGPRPhase>, - // "Unsupported phase type"); - - // if constexpr(std::is_same_v<PhaseT, SGPRPhase>) { - // return RA_OPTIONS(onlyAllocateSGPRs, "sgpr", false); - // } else if constexpr(std::is_same_v<PhaseT, WWMPhase>) { - // return RA_OPTIONS(onlyAllocateWWMRegs, "wwm", false); - // } else if constexpr(std::is_same_v<PhaseT, VGPRPhase>) { - // return RA_OPTIONS(onlyAllocateVGPRs, "vgpr", true); - // } #undef RA_OPTIONS } @@ -2318,10 +2215,11 @@ void AMDGPUCodeGenPassBuilder::addRegAlloc(AddMachinePass &addPass, addPass(RegAllocFastPass(getRAOptionsForPhase<RegAllocFastPass>(Phase))); return; case RegAllocType::Unset: + case RegAllocType::Default: addPass(RegAllocPassT(getRAOptionsForPhase<RegAllocPassT>(Phase))); return; default: - report_fatal_error("Unsupported regalloc type", false); + report_fatal_error("Unsupported regalloc type for AMDGPU", false); } } diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h index dffb53b..ab9220d5 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h @@ -194,10 +194,6 @@ public: void addStraightLineScalarOptimizationPasses(AddIRPass &) const; private: - // /// Dummy structs to represent different phases of register allocation. - // struct SGPRPhase{}; - // struct VGPRPhase{}; - // struct WWMPhase{}; enum class RegAllocPhase { SGPR, VGPR, WWM }; template <typename RegAllocPassT> diff --git a/llvm/test/tools/llc/new-pm/regalloc-amdgpu.mir b/llvm/test/tools/llc/new-pm/regalloc-amdgpu.mir index 07f2d35..2398dc8 100644 --- a/llvm/test/tools/llc/new-pm/regalloc-amdgpu.mir +++ b/llvm/test/tools/llc/new-pm/regalloc-amdgpu.mir @@ -2,11 +2,16 @@ # RUN: llc -mtriple=amdgcn --passes='regallocfast<filter=sgpr>,regallocfast<filter=wwm>,regallocfast<filter=vgpr>' --print-pipeline-passes --filetype=null %s | FileCheck %s --check-prefix=PASS # RUN: not llc -mtriple=amdgcn --passes='regallocfast<filter=bad-filter>' --print-pipeline-passes --filetype=null %s 2>&1 | FileCheck %s --check-prefix=BAD-FILTER +# RUN: llc -mtriple=amdgcn -enable-new-pm -sgpr-regalloc-npm=greedy -vgpr-regalloc-npm=fast -print-pipeline-passes %s | FileCheck %s --check-prefix=NPM-PASS + + # PASS: regallocfast<filter=sgpr> # PASS: regallocfast<filter=wwm> # PASS: regallocfast<filter=vgpr> # BAD-FILTER: invalid regallocfast register filter 'bad-filter' +# NPM-PASS: greedy<sgpr> +# NPM-PASS: regallocfast<filter=vgpr> --- name: f ... |