@@ -631,107 +631,26 @@ void AMDGPUTargetMachine::registerDefaultAliasAnalyses(AAManager &AAM) {
631
631
AAM.registerFunctionAnalysis <AMDGPUAA>();
632
632
}
633
633
634
+ static Expected<ScanOptions>
635
+ parseAMDGPUAtomicOptimizerStrategy (StringRef Params) {
636
+ if (Params.empty ())
637
+ return ScanOptions::Iterative;
638
+ Params.consume_front (" strategy=" );
639
+ auto Result = StringSwitch<std::optional<ScanOptions>>(Params)
640
+ .Case (" dpp" , ScanOptions::DPP)
641
+ .Cases (" iterative" , " " , ScanOptions::Iterative)
642
+ .Case (" none" , ScanOptions::None)
643
+ .Default (std::nullopt);
644
+ if (Result)
645
+ return *Result;
646
+ return make_error<StringError>(" invalid parameter" , inconvertibleErrorCode ());
647
+ }
648
+
634
649
void AMDGPUTargetMachine::registerPassBuilderCallbacks (
635
650
PassBuilder &PB, bool PopulateClassToPassNames) {
636
- PB.registerPipelineParsingCallback (
637
- [this ](StringRef PassName, ModulePassManager &PM,
638
- ArrayRef<PassBuilder::PipelineElement>) {
639
- if (PassName == " amdgpu-attributor" ) {
640
- PM.addPass (AMDGPUAttributorPass (*this ));
641
- return true ;
642
- }
643
- if (PassName == " amdgpu-unify-metadata" ) {
644
- PM.addPass (AMDGPUUnifyMetadataPass ());
645
- return true ;
646
- }
647
- if (PassName == " amdgpu-printf-runtime-binding" ) {
648
- PM.addPass (AMDGPUPrintfRuntimeBindingPass ());
649
- return true ;
650
- }
651
- if (PassName == " amdgpu-always-inline" ) {
652
- PM.addPass (AMDGPUAlwaysInlinePass ());
653
- return true ;
654
- }
655
- if (PassName == " amdgpu-lower-module-lds" ) {
656
- PM.addPass (AMDGPULowerModuleLDSPass (*this ));
657
- return true ;
658
- }
659
- if (PassName == " amdgpu-lower-buffer-fat-pointers" ) {
660
- PM.addPass (AMDGPULowerBufferFatPointersPass (*this ));
661
- return true ;
662
- }
663
- if (PassName == " amdgpu-lower-ctor-dtor" ) {
664
- PM.addPass (AMDGPUCtorDtorLoweringPass ());
665
- return true ;
666
- }
667
- return false ;
668
- });
669
- PB.registerPipelineParsingCallback (
670
- [this ](StringRef PassName, FunctionPassManager &PM,
671
- ArrayRef<PassBuilder::PipelineElement>) {
672
- if (PassName == " amdgpu-simplifylib" ) {
673
- PM.addPass (AMDGPUSimplifyLibCallsPass ());
674
- return true ;
675
- }
676
- if (PassName == " amdgpu-image-intrinsic-opt" ) {
677
- PM.addPass (AMDGPUImageIntrinsicOptimizerPass (*this ));
678
- return true ;
679
- }
680
- if (PassName == " amdgpu-usenative" ) {
681
- PM.addPass (AMDGPUUseNativeCallsPass ());
682
- return true ;
683
- }
684
- if (PassName == " amdgpu-promote-alloca" ) {
685
- PM.addPass (AMDGPUPromoteAllocaPass (*this ));
686
- return true ;
687
- }
688
- if (PassName == " amdgpu-promote-alloca-to-vector" ) {
689
- PM.addPass (AMDGPUPromoteAllocaToVectorPass (*this ));
690
- return true ;
691
- }
692
- if (PassName == " amdgpu-lower-kernel-attributes" ) {
693
- PM.addPass (AMDGPULowerKernelAttributesPass ());
694
- return true ;
695
- }
696
- if (PassName == " amdgpu-promote-kernel-arguments" ) {
697
- PM.addPass (AMDGPUPromoteKernelArgumentsPass ());
698
- return true ;
699
- }
700
- if (PassName == " amdgpu-unify-divergent-exit-nodes" ) {
701
- PM.addPass (AMDGPUUnifyDivergentExitNodesPass ());
702
- return true ;
703
- }
704
- if (PassName == " amdgpu-atomic-optimizer" ) {
705
- PM.addPass (
706
- AMDGPUAtomicOptimizerPass (*this , AMDGPUAtomicOptimizerStrategy));
707
- return true ;
708
- }
709
- if (PassName == " amdgpu-codegenprepare" ) {
710
- PM.addPass (AMDGPUCodeGenPreparePass (*this ));
711
- return true ;
712
- }
713
- if (PassName == " amdgpu-lower-kernel-arguments" ) {
714
- PM.addPass (AMDGPULowerKernelArgumentsPass (*this ));
715
- return true ;
716
- }
717
- if (PassName == " amdgpu-rewrite-undef-for-phi" ) {
718
- PM.addPass (AMDGPURewriteUndefForPHIPass ());
719
- return true ;
720
- }
721
- return false ;
722
- });
723
-
724
- PB.registerAnalysisRegistrationCallback ([](FunctionAnalysisManager &FAM) {
725
- FAM.registerPass ([&] { return AMDGPUAA (); });
726
- });
727
651
728
- PB.registerParseAACallback ([](StringRef AAName, AAManager &AAM) {
729
- if (AAName == " amdgpu-aa" ) {
730
- AAM.registerFunctionAnalysis <AMDGPUAA>();
731
- return true ;
732
- }
733
- return false ;
734
- });
652
+ #define GET_PASS_REGISTRY " AMDGPUPassRegistry.def"
653
+ #include " llvm/Passes/TargetPassRegistry.inc"
735
654
736
655
PB.registerPipelineStartEPCallback (
737
656
[](ModulePassManager &PM, OptimizationLevel Level) {
0 commit comments