<div dir="ltr">Currently AMDGPU is the last target which injects passes into the pipeline but hasn't been updated to work with the new pass manager.<div><br></div><div>Recently there was added support for the NPM's equivalent of TargetMachine::adjustPassManager(). (<a href="https://bugs.llvm.org/show_bug.cgi?id=47244">Bug</a>, <a href="https://reviews.llvm.org/D88138">Phab</a>). <a href="https://github.com/llvm/llvm-project/blob/99f79cbf31cc6ccdfa1aed253a64c5e8012f4ef7/llvm/lib/Target/BPF/BPFTargetMachine.cpp#L126">BPF</a> and Hexagon have their NPM equivalents implemented already, but <a href="https://github.com/llvm/llvm-project/blob/99f79cbf31cc6ccdfa1aed253a64c5e8012f4ef7/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp#L420">AMDGPU has a lot of custom passes added by adjustPassManager</a> and hasn't been updated to work with the NPM.</div><div><br></div><div>Could the maintainers of AMDGPU port the necessary passes to the new pass manager add them to AMDGPUTargetMachine::registerPassBuilderCallbacks()? I'm happy to provide any guidance if necessary. <a href="https://reviews.llvm.org/D91990">Here's</a> an example of porting a pass and adding it to the pipeline.</div></div>