[llvm] e94698b - [AMDGPU][GISel][NPM] Complete Global ISel pipeline (#222552)

via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 16 01:14:06 PDT 2026


Author: Vikram Hegde
Date: 2026-09-16T13:44:00+05:30
New Revision: e94698b83a74e6ee40438898b17bc49cbd47fcf5

URL: https://github.com/llvm/llvm-project/commit/e94698b83a74e6ee40438898b17bc49cbd47fcf5
DIFF: https://github.com/llvm/llvm-project/commit/e94698b83a74e6ee40438898b17bc49cbd47fcf5.diff

LOG: [AMDGPU][GISel][NPM] Complete Global ISel pipeline (#222552)

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
    llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index b8a1e4a656fd8..fc567e0f306ed 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -168,6 +168,13 @@ class AMDGPUCodeGenPassBuilder : public CodeGenPassBuilder {
   void addAsmPrinter(PassManagerWrapper &PMW) override;
   void addAsmPrinterEnd(PassManagerWrapper &PMW) override;
   Error addInstSelector(PassManagerWrapper &PMW) override;
+  Error addIRTranslator(PassManagerWrapper &PMW) override;
+  void addPreLegalizeMachineIR(PassManagerWrapper &PMW) override;
+  Error addLegalizeMachineIR(PassManagerWrapper &PMW) override;
+  void addPreRegBankSelect(PassManagerWrapper &PMW) override;
+  Error addRegBankSelect(PassManagerWrapper &PMW) override;
+  void addPreGlobalInstructionSelect(PassManagerWrapper &PMW) override;
+  Error addGlobalInstructionSelect(PassManagerWrapper &PMW) override;
   void addPreRewrite(PassManagerWrapper &PMW) override;
   void addMachineSSAOptimization(PassManagerWrapper &PMW) override;
   void addPostRegAlloc(PassManagerWrapper &PMW) override;
@@ -2534,6 +2541,45 @@ Error AMDGPUCodeGenPassBuilder::addInstSelector(PassManagerWrapper &PMW) {
   return Error::success();
 }
 
+Error AMDGPUCodeGenPassBuilder::addIRTranslator(PassManagerWrapper &PMW) {
+  addMachineFunctionPass(IRTranslatorPass(getOptLevel()), PMW);
+  return Error::success();
+}
+
+void AMDGPUCodeGenPassBuilder::addPreLegalizeMachineIR(
+    PassManagerWrapper &PMW) {
+  addMachineFunctionPass(AMDGPUPreLegalizerCombinerPass(), PMW);
+  addMachineFunctionPass(LocalizerPass(), PMW);
+}
+
+Error AMDGPUCodeGenPassBuilder::addLegalizeMachineIR(PassManagerWrapper &PMW) {
+  addMachineFunctionPass(LegalizerPass(), PMW);
+  return Error::success();
+}
+
+void AMDGPUCodeGenPassBuilder::addPreRegBankSelect(PassManagerWrapper &PMW) {
+  addMachineFunctionPass(AMDGPUPostLegalizerCombinerPass(), PMW);
+  addMachineFunctionPass(AMDGPUGlobalISelDivergenceLoweringPass(), PMW);
+}
+
+Error AMDGPUCodeGenPassBuilder::addRegBankSelect(PassManagerWrapper &PMW) {
+  addMachineFunctionPass(AMDGPURegBankSelectPass(), PMW);
+  addMachineFunctionPass(AMDGPURegBankLegalizePass(), PMW);
+  return Error::success();
+}
+
+void AMDGPUCodeGenPassBuilder::addPreGlobalInstructionSelect(
+    PassManagerWrapper &PMW) {
+  bool IsOptLevelNone = getOptLevel() == CodeGenOptLevel::None;
+  addMachineFunctionPass(AMDGPURegBankCombinerPass(IsOptLevelNone), PMW);
+}
+
+Error AMDGPUCodeGenPassBuilder::addGlobalInstructionSelect(
+    PassManagerWrapper &PMW) {
+  addMachineFunctionPass(InstructionSelectPass(getOptLevel()), PMW);
+  return Error::success();
+}
+
 void AMDGPUCodeGenPassBuilder::addPreRewrite(PassManagerWrapper &PMW) {
   if (EnableRegReassign) {
     addMachineFunctionPass(GCNNSAReassignPass(), PMW);

diff  --git a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
index 89f72e559ba52..e41b8ec122b5b 100644
--- a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
+++ b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
@@ -1,484 +1,987 @@
-; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -O0 -print-pipeline-passes=tree < %s 2>&1 \
-; RUN:   | FileCheck -check-prefix=GCN-O0 %s
+; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -O0 -global-isel=0 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O0-SDAG %s
 
-; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -print-pipeline-passes=tree < %s 2>&1 \
-; RUN:   | FileCheck -check-prefix=GCN-O2 %s
+; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -O0 -global-isel=1 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O0-GISEL %s
 
-; RUN: llc -O3 -enable-new-pm -mtriple=amdgpu7.00--amdhsa -print-pipeline-passes=tree < %s 2>&1 \
-; RUN:   | FileCheck -check-prefix=GCN-O3 %s
+; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -global-isel=0 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O2-SDAG %s
 
-; GCN-O0: require<MachineModuleAnalysis>
-; GCN-O0-NEXT: require<profile-summary>
-; GCN-O0-NEXT: require<collector-metadata>
-; GCN-O0-NEXT: require<runtime-libcall-info>
-; GCN-O0-NEXT: require<libcall-lowering-info>
-; GCN-O0-NEXT: pre-isel-intrinsic-lowering
-; GCN-O0-NEXT: function
-; GCN-O0-NEXT:   expand-ir-insts<O0>
-; GCN-O0-NEXT: amdgpu-remove-incompatible-functions
-; GCN-O0-NEXT: amdgpu-printf-runtime-binding
-; GCN-O0-NEXT: amdgpu-lower-ctor-dtor
-; GCN-O0-NEXT: function
-; GCN-O0-NEXT:   amdgpu-uniform-intrinsic-combine
-; GCN-O0-NEXT: expand-variadics
-; GCN-O0-NEXT: amdgpu-always-inline
-; GCN-O0-NEXT: always-inline
-; GCN-O0-NEXT: amdgpu-export-kernel-runtime-handles
-; GCN-O0-NEXT: amdgpu-lower-exec-sync
-; GCN-O0-NEXT: amdgpu-sw-lower-lds
-; GCN-O0-NEXT: amdgpu-lower-module-lds
-; GCN-O0-NEXT: function
-; GCN-O0-NEXT:   atomic-expand
-; GCN-O0-NEXT:   verify
-; GCN-O0-NEXT:   unreachableblockelim
-; GCN-O0-NEXT:   ee-instrument<post-inline>
-; GCN-O0-NEXT:   scalarize-masked-mem-intrin
-; GCN-O0-NEXT:   expand-reductions
-; GCN-O0-NEXT:   amdgpu-lower-kernel-arguments
-; GCN-O0-NEXT: amdgpu-lower-buffer-fat-pointers
-; GCN-O0-NEXT: amdgpu-lower-intrinsics
-; GCN-O0-NEXT: cgscc
-; GCN-O0-NEXT:   function
-; GCN-O0-NEXT:     lower-switch
-; GCN-O0-NEXT:     lower-invoke
-; GCN-O0-NEXT:     unreachableblockelim
-; GCN-O0-NEXT:     amdgpu-unify-divergent-exit-nodes
-; GCN-O0-NEXT:     fix-irreducible
-; GCN-O0-NEXT:     unify-loop-exits
-; GCN-O0-NEXT:     StructurizeCFGPass
-; GCN-O0-NEXT:     amdgpu-annotate-uniform
-; GCN-O0-NEXT:     si-annotate-control-flow
-; GCN-O0-NEXT:     amdgpu-rewrite-undef-for-phi
-; GCN-O0-NEXT:     lcssa
-; GCN-O0-NEXT:     inline-asm-prepare
-; GCN-O0-NEXT:     safe-stack
-; GCN-O0-NEXT:     stack-protector
-; GCN-O0-NEXT:     verify
-; GCN-O0-NEXT: amdgpu-asm-printer-begin
-; GCN-O0-NEXT: cgscc
-; GCN-O0-NEXT:   function
-; GCN-O0-NEXT:     machine-function
-; GCN-O0-NEXT:       amdgpu-isel
-; GCN-O0-NEXT:       si-fix-sgpr-copies
-; GCN-O0-NEXT:       si-i1-copies
-; GCN-O0-NEXT:       finalize-isel
-; GCN-O0-NEXT:       localstackalloc
-; GCN-O0-NEXT: require<reg-usage>
-; GCN-O0-NEXT: cgscc
-; GCN-O0-NEXT:   function
-; GCN-O0-NEXT:     machine-function
-; GCN-O0-NEXT:       reg-usage-propagation
-; GCN-O0-NEXT:       phi-node-elimination
-; GCN-O0-NEXT:       si-lower-control-flow
-; GCN-O0-NEXT:       two-address-instruction
-; GCN-O0-NEXT:       si-wqm
-; GCN-O0-NEXT:       amdgpu-pre-ra-long-branch-reg
-; GCN-O0-NEXT:       regallocfast<filter=sgpr;no-clear-vregs>
-; GCN-O0-NEXT:       si-lower-sgpr-spills
-; GCN-O0-NEXT:       si-pre-allocate-wwm-regs
-; GCN-O0-NEXT:       regallocfast<filter=wwm;no-clear-vregs>
-; GCN-O0-NEXT:       si-lower-wwm-copies
-; GCN-O0-NEXT:       amdgpu-reserve-wwm-regs
-; GCN-O0-NEXT:       regallocfast<filter=vgpr>
-; GCN-O0-NEXT:       si-fix-vgpr-copies
-; GCN-O0-NEXT:       remove-redundant-debug-values
-; GCN-O0-NEXT:       fixup-statepoint-caller-saved
-; GCN-O0-NEXT:       prolog-epilog
-; GCN-O0-NEXT:       post-ra-pseudos
-; GCN-O0-NEXT:       si-post-ra-bundler
-; GCN-O0-NEXT:       fentry-insert
-; GCN-O0-NEXT:       xray-instrumentation
-; GCN-O0-NEXT:       si-memory-legalizer
-; GCN-O0-NEXT:       si-insert-waitcnts
-; GCN-O0-NEXT:       si-mode-register
-; GCN-O0-NEXT:       si-late-branch-lowering
-; GCN-O0-NEXT:       post-RA-hazard-rec
-; GCN-O0-NEXT:       amdgpu-wait-sgpr-hazards
-; GCN-O0-NEXT:       amdgpu-lower-vgpr-encoding
-; GCN-O0-NEXT:       branch-relaxation
-; GCN-O0-NEXT:       reg-usage-collector
-; GCN-O0-NEXT:       remove-loads-into-fake-uses
-; GCN-O0-NEXT:       live-debug-values
-; GCN-O0-NEXT:       machine-sanmd
-; GCN-O0-NEXT:       amdgpu-preload-kern-arg-prolog
-; GCN-O0-NEXT:       stack-frame-layout
-; GCN-O0-NEXT:       amdgpu-asm-printer
-; GCN-O0-NEXT:     free-machine-function 
-; GCN-O0-NEXT: amdgpu-asm-printer-end
+; RUN: llc -enable-new-pm -mtriple=amdgpu7.00--amdhsa -global-isel=1 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O2-GISEL %s
 
-; GCN-O2: require<MachineModuleAnalysis>
-; GCN-O2-NEXT: require<profile-summary>
-; GCN-O2-NEXT: require<collector-metadata>
-; GCN-O2-NEXT: require<runtime-libcall-info>
-; GCN-O2-NEXT: require<libcall-lowering-info>
-; GCN-O2-NEXT: function
-; GCN-O2-NEXT:   objc-arc-contract
-; GCN-O2-NEXT: pre-isel-intrinsic-lowering
-; GCN-O2-NEXT: function
-; GCN-O2-NEXT:   expand-ir-insts<O2>
-; GCN-O2-NEXT: amdgpu-remove-incompatible-functions
-; GCN-O2-NEXT: amdgpu-printf-runtime-binding
-; GCN-O2-NEXT: amdgpu-lower-ctor-dtor
-; GCN-O2-NEXT: function
-; GCN-O2-NEXT:   amdgpu-image-intrinsic-opt
-; GCN-O2-NEXT:   amdgpu-uniform-intrinsic-combine
-; GCN-O2-NEXT: expand-variadics
-; GCN-O2-NEXT: amdgpu-always-inline
-; GCN-O2-NEXT: always-inline
-; GCN-O2-NEXT: amdgpu-export-kernel-runtime-handles
-; GCN-O2-NEXT: amdgpu-lower-exec-sync
-; GCN-O2-NEXT: amdgpu-sw-lower-lds
-; GCN-O2-NEXT: amdgpu-lower-module-lds
-; GCN-O2-NEXT: function
-; GCN-O2-NEXT:   amdgpu-atomic-optimizer
-; GCN-O2-NEXT:   atomic-expand
-; GCN-O2-NEXT:   amdgpu-promote-alloca
-; GCN-O2-NEXT:   separate-const-offset-from-gep<>
-; GCN-O2-NEXT:   slsr
-; GCN-O2-NEXT:   early-cse<>
-; GCN-O2-NEXT:   nary-reassociate
-; GCN-O2-NEXT:   early-cse<>
-; GCN-O2-NEXT:   amdgpu-codegenprepare
-; GCN-O2-NEXT:   loop-mssa
-; GCN-O2-NEXT:     licm<allowspeculation>
-; GCN-O2-NEXT:   verify
-; GCN-O2-NEXT:   loop
-; GCN-O2-NEXT:     canon-freeze
-; GCN-O2-NEXT:     loop-reduce
-; GCN-O2-NEXT:   unreachableblockelim
-; GCN-O2-NEXT:   consthoist
-; GCN-O2-NEXT:   replace-with-veclib
-; GCN-O2-NEXT:   partially-inline-libcalls
-; GCN-O2-NEXT:   ee-instrument<post-inline>
-; GCN-O2-NEXT:   scalarize-masked-mem-intrin
-; GCN-O2-NEXT:   expand-reductions
-; GCN-O2-NEXT:   early-cse<>
-; GCN-O2-NEXT: amdgpu-preload-kernel-arguments
-; GCN-O2-NEXT: function
-; GCN-O2-NEXT:   amdgpu-lower-kernel-arguments
-; GCN-O2-NEXT:   codegenprepare
-; GCN-O2-NEXT:   load-store-vectorizer
-; GCN-O2-NEXT: amdgpu-lower-buffer-fat-pointers
-; GCN-O2-NEXT: amdgpu-lower-intrinsics
-; GCN-O2-NEXT: cgscc
-; GCN-O2-NEXT:   function
-; GCN-O2-NEXT:     lower-switch
-; GCN-O2-NEXT:     lower-invoke
-; GCN-O2-NEXT:     unreachableblockelim
-; GCN-O2-NEXT:     flatten-cfg
-; GCN-O2-NEXT:     sink
-; GCN-O2-NEXT:     amdgpu-late-codegenprepare
-; GCN-O2-NEXT:     amdgpu-unify-divergent-exit-nodes
-; GCN-O2-NEXT:     fix-irreducible
-; GCN-O2-NEXT:     unify-loop-exits
-; GCN-O2-NEXT:     StructurizeCFGPass
-; GCN-O2-NEXT:     amdgpu-annotate-uniform
-; GCN-O2-NEXT:     si-annotate-control-flow
-; GCN-O2-NEXT:     amdgpu-rewrite-undef-for-phi
-; GCN-O2-NEXT:     lcssa
-; GCN-O2-NEXT: amdgpu-perf-hint
-; GCN-O2-NEXT: cgscc
-; GCN-O2-NEXT:   function
-; GCN-O2-NEXT:     inline-asm-prepare
-; GCN-O2-NEXT:     safe-stack
-; GCN-O2-NEXT:     stack-protector
-; GCN-O2-NEXT:     verify
-; GCN-O2-NEXT: amdgpu-asm-printer-begin
-; GCN-O2-NEXT: cgscc
-; GCN-O2-NEXT:   function
-; GCN-O2-NEXT:     machine-function
-; GCN-O2-NEXT:       amdgpu-isel
-; GCN-O2-NEXT:       si-fix-sgpr-copies
-; GCN-O2-NEXT:       si-i1-copies
-; GCN-O2-NEXT:       finalize-isel
-; GCN-O2-NEXT:       early-tailduplication
-; GCN-O2-NEXT:       opt-phis
-; GCN-O2-NEXT:       stack-coloring
-; GCN-O2-NEXT:       localstackalloc
-; GCN-O2-NEXT:       dead-mi-elimination
-; GCN-O2-NEXT:       early-machinelicm
-; GCN-O2-NEXT:       machine-cse
-; GCN-O2-NEXT:       machine-sink
-; GCN-O2-NEXT:       peephole-opt
-; GCN-O2-NEXT:       dead-mi-elimination
-; GCN-O2-NEXT:       si-fold-operands
-; GCN-O2-NEXT:       gcn-dpp-combine
-; GCN-O2-NEXT:       si-load-store-opt
-; GCN-O2-NEXT:       si-peephole-sdwa
-; GCN-O2-NEXT:       early-machinelicm
-; GCN-O2-NEXT:       machine-cse
-; GCN-O2-NEXT:       si-fold-operands
-; GCN-O2-NEXT:       dead-mi-elimination
-; GCN-O2-NEXT:       si-shrink-instructions
-; GCN-O2-NEXT: require<reg-usage>
-; GCN-O2-NEXT: cgscc
-; GCN-O2-NEXT:   function
-; GCN-O2-NEXT:     machine-function
-; GCN-O2-NEXT:       reg-usage-propagation
-; GCN-O2-NEXT:       amdgpu-prepare-agpr-alloc
-; GCN-O2-NEXT:       detect-dead-lanes
-; GCN-O2-NEXT:       dead-mi-elimination
-; GCN-O2-NEXT:       init-undef
-; GCN-O2-NEXT:       process-imp-defs
-; GCN-O2-NEXT:       unreachable-mbb-elimination
-; GCN-O2-NEXT:       require<live-vars>
-; GCN-O2-NEXT:       si-opt-vgpr-liverange
-; GCN-O2-NEXT:       require<machine-loops>
-; GCN-O2-NEXT:       phi-node-elimination
-; GCN-O2-NEXT:       si-lower-control-flow
-; GCN-O2-NEXT:       two-address-instruction
-; GCN-O2-NEXT:       register-coalescer
-; GCN-O2-NEXT:       rename-independent-subregs
-; GCN-O2-NEXT:       amdgpu-rewrite-partial-reg-uses
-; GCN-O2-NEXT:       machine-scheduler
-; GCN-O2-NEXT:       amdgpu-pre-ra-optimizations
-; GCN-O2-NEXT:       si-wqm
-; GCN-O2-NEXT:       si-optimize-exec-masking-pre-ra
-; GCN-O2-NEXT:       si-form-memory-clauses
-; GCN-O2-NEXT:       amdgpu-pre-ra-long-branch-reg
-; GCN-O2-NEXT:       greedy<sgpr>
-; GCN-O2-NEXT:       virt-reg-rewriter<no-clear-vregs>
-; GCN-O2-NEXT:       stack-slot-coloring
-; GCN-O2-NEXT:       si-lower-sgpr-spills
-; GCN-O2-NEXT:       si-pre-allocate-wwm-regs
-; GCN-O2-NEXT:       greedy<wwm>
-; GCN-O2-NEXT:       si-lower-wwm-copies
-; GCN-O2-NEXT:       virt-reg-rewriter<no-clear-vregs>
-; GCN-O2-NEXT:       amdgpu-reserve-wwm-regs
-; GCN-O2-NEXT:       greedy<vgpr>
-; GCN-O2-NEXT:       amdgpu-nsa-reassign
-; GCN-O2-NEXT:       amdgpu-rewrite-agpr-copy-mfma
-; GCN-O2-NEXT:       virt-reg-rewriter
-; GCN-O2-NEXT:       amdgpu-mark-last-scratch-load
-; GCN-O2-NEXT:       stack-slot-coloring
-; GCN-O2-NEXT:       machine-cp
-; GCN-O2-NEXT:       machinelicm
-; GCN-O2-NEXT:       si-fix-vgpr-copies
-; GCN-O2-NEXT:       si-optimize-exec-masking
-; GCN-O2-NEXT:       remove-redundant-debug-values
-; GCN-O2-NEXT:       fixup-statepoint-caller-saved
-; GCN-O2-NEXT:       postra-machine-sink
-; GCN-O2-NEXT:       shrink-wrap
-; GCN-O2-NEXT:       prolog-epilog
-; GCN-O2-NEXT:       machine-latecleanup
-; GCN-O2-NEXT:       branch-folder
-; GCN-O2-NEXT:       tailduplication
-; GCN-O2-NEXT:       machine-cp
-; GCN-O2-NEXT:       post-ra-pseudos
-; GCN-O2-NEXT:       si-shrink-instructions
-; GCN-O2-NEXT:       si-post-ra-bundler
-; GCN-O2-NEXT:       postmisched
-; GCN-O2-NEXT:       block-placement
-; GCN-O2-NEXT:       fentry-insert
-; GCN-O2-NEXT:       xray-instrumentation
-; GCN-O2-NEXT:       gcn-create-vopd
-; GCN-O2-NEXT:       si-memory-legalizer
-; GCN-O2-NEXT:       si-insert-waitcnts
-; GCN-O2-NEXT:       si-mode-register
-; GCN-O2-NEXT:       si-insert-hard-clauses
-; GCN-O2-NEXT:       si-late-branch-lowering
-; GCN-O2-NEXT:       si-pre-emit-peephole
-; GCN-O2-NEXT:       post-RA-hazard-rec
-; GCN-O2-NEXT:       amdgpu-wait-sgpr-hazards
-; GCN-O2-NEXT:       amdgpu-lower-vgpr-encoding
-; GCN-O2-NEXT:       amdgpu-insert-delay-alu
-; GCN-O2-NEXT:       branch-relaxation
-; GCN-O2-NEXT:       reg-usage-collector
-; GCN-O2-NEXT:       remove-loads-into-fake-uses
-; GCN-O2-NEXT:       live-debug-values
-; GCN-O2-NEXT:       machine-sanmd
-; GCN-O2-NEXT:       amdgpu-preload-kern-arg-prolog
-; GCN-O2-NEXT:       stack-frame-layout
-; GCN-O2-NEXT:       amdgpu-asm-printer
-; GCN-O2-NEXT:     free-machine-function
-; GCN-O2-NEXT: amdgpu-asm-printer-end
+; RUN: llc -O3 -enable-new-pm -mtriple=amdgpu7.00--amdhsa -global-isel=0 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O3-SDAG %s
 
-; GCN-O3: require<MachineModuleAnalysis>
-; GCN-O3-NEXT: require<profile-summary>
-; GCN-O3-NEXT: require<collector-metadata>
-; GCN-O3-NEXT: require<runtime-libcall-info>
-; GCN-O3-NEXT: require<libcall-lowering-info>
-; GCN-O3-NEXT: function
-; GCN-O3-NEXT:   objc-arc-contract
-; GCN-O3-NEXT: pre-isel-intrinsic-lowering
-; GCN-O3-NEXT: function
-; GCN-O3-NEXT:   expand-ir-insts<O3>
-; GCN-O3-NEXT: amdgpu-remove-incompatible-functions
-; GCN-O3-NEXT: amdgpu-printf-runtime-binding
-; GCN-O3-NEXT: amdgpu-lower-ctor-dtor
-; GCN-O3-NEXT: function
-; GCN-O3-NEXT:   amdgpu-image-intrinsic-opt
-; GCN-O3-NEXT:   amdgpu-uniform-intrinsic-combine
-; GCN-O3-NEXT: expand-variadics
-; GCN-O3-NEXT: amdgpu-always-inline
-; GCN-O3-NEXT: always-inline
-; GCN-O3-NEXT: amdgpu-export-kernel-runtime-handles
-; GCN-O3-NEXT: amdgpu-lower-exec-sync
-; GCN-O3-NEXT: amdgpu-sw-lower-lds
-; GCN-O3-NEXT: amdgpu-lower-module-lds
-; GCN-O3-NEXT: function
-; GCN-O3-NEXT:   amdgpu-atomic-optimizer
-; GCN-O3-NEXT:   atomic-expand
-; GCN-O3-NEXT:   amdgpu-promote-alloca
-; GCN-O3-NEXT:   separate-const-offset-from-gep<>
-; GCN-O3-NEXT:   slsr
-; GCN-O3-NEXT:   gvn<>
-; GCN-O3-NEXT:   nary-reassociate
-; GCN-O3-NEXT:   early-cse<>
-; GCN-O3-NEXT:   amdgpu-codegenprepare
-; GCN-O3-NEXT:   loop-mssa
-; GCN-O3-NEXT:     licm<allowspeculation>
-; GCN-O3-NEXT:   verify
-; GCN-O3-NEXT:   loop
-; GCN-O3-NEXT:     canon-freeze
-; GCN-O3-NEXT:     loop-reduce
-; GCN-O3-NEXT:   unreachableblockelim
-; GCN-O3-NEXT:   consthoist
-; GCN-O3-NEXT:   replace-with-veclib
-; GCN-O3-NEXT:   partially-inline-libcalls
-; GCN-O3-NEXT:   ee-instrument<post-inline>
-; GCN-O3-NEXT:   scalarize-masked-mem-intrin
-; GCN-O3-NEXT:   expand-reductions
-; GCN-O3-NEXT:   gvn<>
-; GCN-O3-NEXT: amdgpu-preload-kernel-arguments
-; GCN-O3-NEXT: function
-; GCN-O3-NEXT:   amdgpu-lower-kernel-arguments
-; GCN-O3-NEXT:   codegenprepare
-; GCN-O3-NEXT:   load-store-vectorizer
-; GCN-O3-NEXT: amdgpu-lower-buffer-fat-pointers
-; GCN-O3-NEXT: amdgpu-lower-intrinsics
-; GCN-O3-NEXT: cgscc
-; GCN-O3-NEXT:   function
-; GCN-O3-NEXT:     lower-switch
-; GCN-O3-NEXT:     lower-invoke
-; GCN-O3-NEXT:     unreachableblockelim
-; GCN-O3-NEXT:     flatten-cfg
-; GCN-O3-NEXT:     sink
-; GCN-O3-NEXT:     amdgpu-late-codegenprepare
-; GCN-O3-NEXT:     amdgpu-unify-divergent-exit-nodes
-; GCN-O3-NEXT:     fix-irreducible
-; GCN-O3-NEXT:     unify-loop-exits
-; GCN-O3-NEXT:     StructurizeCFGPass
-; GCN-O3-NEXT:     amdgpu-annotate-uniform
-; GCN-O3-NEXT:     si-annotate-control-flow
-; GCN-O3-NEXT:     amdgpu-rewrite-undef-for-phi
-; GCN-O3-NEXT:     lcssa
-; GCN-O3-NEXT: amdgpu-perf-hint
-; GCN-O3-NEXT: cgscc
-; GCN-O3-NEXT:   function
-; GCN-O3-NEXT:     inline-asm-prepare
-; GCN-O3-NEXT:     safe-stack
-; GCN-O3-NEXT:     stack-protector
-; GCN-O3-NEXT:     verify
-; GCN-O3-NEXT: amdgpu-asm-printer-begin
-; GCN-O3-NEXT: cgscc
-; GCN-O3-NEXT:   function
-; GCN-O3-NEXT:     machine-function
-; GCN-O3-NEXT:       amdgpu-isel
-; GCN-O3-NEXT:       si-fix-sgpr-copies
-; GCN-O3-NEXT:       si-i1-copies
-; GCN-O3-NEXT:       finalize-isel
-; GCN-O3-NEXT:       early-tailduplication
-; GCN-O3-NEXT:       opt-phis
-; GCN-O3-NEXT:       stack-coloring
-; GCN-O3-NEXT:       localstackalloc
-; GCN-O3-NEXT:       dead-mi-elimination
-; GCN-O3-NEXT:       early-machinelicm
-; GCN-O3-NEXT:       machine-cse
-; GCN-O3-NEXT:       machine-sink
-; GCN-O3-NEXT:       peephole-opt
-; GCN-O3-NEXT:       dead-mi-elimination
-; GCN-O3-NEXT:       si-fold-operands
-; GCN-O3-NEXT:       gcn-dpp-combine
-; GCN-O3-NEXT:       si-load-store-opt
-; GCN-O3-NEXT:       si-peephole-sdwa
-; GCN-O3-NEXT:       early-machinelicm
-; GCN-O3-NEXT:       machine-cse
-; GCN-O3-NEXT:       si-fold-operands
-; GCN-O3-NEXT:       dead-mi-elimination
-; GCN-O3-NEXT:       si-shrink-instructions
-; GCN-O3-NEXT: require<reg-usage>
-; GCN-O3-NEXT: cgscc
-; GCN-O3-NEXT:   function
-; GCN-O3-NEXT:     machine-function
-; GCN-O3-NEXT:       reg-usage-propagation
-; GCN-O3-NEXT:       amdgpu-prepare-agpr-alloc
-; GCN-O3-NEXT:       detect-dead-lanes
-; GCN-O3-NEXT:       dead-mi-elimination
-; GCN-O3-NEXT:       init-undef
-; GCN-O3-NEXT:       process-imp-defs
-; GCN-O3-NEXT:       unreachable-mbb-elimination
-; GCN-O3-NEXT:       require<live-vars>
-; GCN-O3-NEXT:       si-opt-vgpr-liverange
-; GCN-O3-NEXT:       require<machine-loops>
-; GCN-O3-NEXT:       phi-node-elimination
-; GCN-O3-NEXT:       si-lower-control-flow
-; GCN-O3-NEXT:       two-address-instruction
-; GCN-O3-NEXT:       register-coalescer
-; GCN-O3-NEXT:       rename-independent-subregs
-; GCN-O3-NEXT:       amdgpu-rewrite-partial-reg-uses
-; GCN-O3-NEXT:       machine-scheduler
-; GCN-O3-NEXT:       amdgpu-pre-ra-optimizations
-; GCN-O3-NEXT:       si-wqm
-; GCN-O3-NEXT:       si-optimize-exec-masking-pre-ra
-; GCN-O3-NEXT:       si-form-memory-clauses
-; GCN-O3-NEXT:       amdgpu-pre-ra-long-branch-reg
-; GCN-O3-NEXT:       greedy<sgpr>
-; GCN-O3-NEXT:       virt-reg-rewriter<no-clear-vregs>
-; GCN-O3-NEXT:       stack-slot-coloring
-; GCN-O3-NEXT:       si-lower-sgpr-spills
-; GCN-O3-NEXT:       si-pre-allocate-wwm-regs
-; GCN-O3-NEXT:       greedy<wwm>
-; GCN-O3-NEXT:       si-lower-wwm-copies
-; GCN-O3-NEXT:       virt-reg-rewriter<no-clear-vregs>
-; GCN-O3-NEXT:       amdgpu-reserve-wwm-regs
-; GCN-O3-NEXT:       greedy<vgpr>
-; GCN-O3-NEXT:       amdgpu-nsa-reassign
-; GCN-O3-NEXT:       amdgpu-rewrite-agpr-copy-mfma
-; GCN-O3-NEXT:       virt-reg-rewriter
-; GCN-O3-NEXT:       amdgpu-mark-last-scratch-load
-; GCN-O3-NEXT:       stack-slot-coloring
-; GCN-O3-NEXT:       machine-cp
-; GCN-O3-NEXT:       machinelicm
-; GCN-O3-NEXT:       si-fix-vgpr-copies
-; GCN-O3-NEXT:       si-optimize-exec-masking
-; GCN-O3-NEXT:       remove-redundant-debug-values
-; GCN-O3-NEXT:       fixup-statepoint-caller-saved
-; GCN-O3-NEXT:       postra-machine-sink
-; GCN-O3-NEXT:       shrink-wrap
-; GCN-O3-NEXT:       prolog-epilog
-; GCN-O3-NEXT:       machine-latecleanup
-; GCN-O3-NEXT:       branch-folder
-; GCN-O3-NEXT:       tailduplication
-; GCN-O3-NEXT:       machine-cp
-; GCN-O3-NEXT:       post-ra-pseudos
-; GCN-O3-NEXT:       si-shrink-instructions
-; GCN-O3-NEXT:       si-post-ra-bundler
-; GCN-O3-NEXT:       postmisched
-; GCN-O3-NEXT:       block-placement
-; GCN-O3-NEXT:       fentry-insert
-; GCN-O3-NEXT:       xray-instrumentation
-; GCN-O3-NEXT:       gcn-create-vopd
-; GCN-O3-NEXT:       si-memory-legalizer
-; GCN-O3-NEXT:       si-insert-waitcnts
-; GCN-O3-NEXT:       si-mode-register
-; GCN-O3-NEXT:       si-insert-hard-clauses
-; GCN-O3-NEXT:       si-late-branch-lowering
-; GCN-O3-NEXT:       si-pre-emit-peephole
-; GCN-O3-NEXT:       post-RA-hazard-rec
-; GCN-O3-NEXT:       amdgpu-wait-sgpr-hazards
-; GCN-O3-NEXT:       amdgpu-lower-vgpr-encoding
-; GCN-O3-NEXT:       amdgpu-insert-delay-alu
-; GCN-O3-NEXT:       branch-relaxation
-; GCN-O3-NEXT:       reg-usage-collector
-; GCN-O3-NEXT:       remove-loads-into-fake-uses
-; GCN-O3-NEXT:       live-debug-values
-; GCN-O3-NEXT:       machine-sanmd
-; GCN-O3-NEXT:       amdgpu-preload-kern-arg-prolog
-; GCN-O3-NEXT:       stack-frame-layout
-; GCN-O3-NEXT:       amdgpu-asm-printer
-; GCN-O3-NEXT:     free-machine-function
-; GCN-O3-NEXT: amdgpu-asm-printer-end
+; RUN: llc -O3 -enable-new-pm -mtriple=amdgpu7.00--amdhsa -global-isel=1 -print-pipeline-passes=tree < %s 2>&1 \
+; RUN:   | FileCheck -check-prefix=GCN-O3-GISEL %s
+
+; GCN-O0-SDAG: require<MachineModuleAnalysis>
+; GCN-O0-SDAG-NEXT: require<profile-summary>
+; GCN-O0-SDAG-NEXT: require<collector-metadata>
+; GCN-O0-SDAG-NEXT: require<runtime-libcall-info>
+; GCN-O0-SDAG-NEXT: require<libcall-lowering-info>
+; GCN-O0-SDAG-NEXT: pre-isel-intrinsic-lowering
+; GCN-O0-SDAG-NEXT: function
+; GCN-O0-SDAG-NEXT:   expand-ir-insts<O0>
+; GCN-O0-SDAG-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O0-SDAG-NEXT: amdgpu-printf-runtime-binding
+; GCN-O0-SDAG-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O0-SDAG-NEXT: function
+; GCN-O0-SDAG-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O0-SDAG-NEXT: expand-variadics
+; GCN-O0-SDAG-NEXT: amdgpu-always-inline
+; GCN-O0-SDAG-NEXT: always-inline
+; GCN-O0-SDAG-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O0-SDAG-NEXT: amdgpu-lower-exec-sync
+; GCN-O0-SDAG-NEXT: amdgpu-sw-lower-lds
+; GCN-O0-SDAG-NEXT: amdgpu-lower-module-lds
+; GCN-O0-SDAG-NEXT: function
+; GCN-O0-SDAG-NEXT:   atomic-expand
+; GCN-O0-SDAG-NEXT:   verify
+; GCN-O0-SDAG-NEXT:   unreachableblockelim
+; GCN-O0-SDAG-NEXT:   ee-instrument<post-inline>
+; GCN-O0-SDAG-NEXT:   scalarize-masked-mem-intrin
+; GCN-O0-SDAG-NEXT:   expand-reductions
+; GCN-O0-SDAG-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O0-SDAG-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O0-SDAG-NEXT: amdgpu-lower-intrinsics
+; GCN-O0-SDAG-NEXT: cgscc
+; GCN-O0-SDAG-NEXT:   function
+; GCN-O0-SDAG-NEXT:     lower-switch
+; GCN-O0-SDAG-NEXT:     lower-invoke
+; GCN-O0-SDAG-NEXT:     unreachableblockelim
+; GCN-O0-SDAG-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O0-SDAG-NEXT:     fix-irreducible
+; GCN-O0-SDAG-NEXT:     unify-loop-exits
+; GCN-O0-SDAG-NEXT:     StructurizeCFGPass
+; GCN-O0-SDAG-NEXT:     amdgpu-annotate-uniform
+; GCN-O0-SDAG-NEXT:     si-annotate-control-flow
+; GCN-O0-SDAG-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O0-SDAG-NEXT:     lcssa
+; GCN-O0-SDAG-NEXT:     inline-asm-prepare
+; GCN-O0-SDAG-NEXT:     safe-stack
+; GCN-O0-SDAG-NEXT:     stack-protector
+; GCN-O0-SDAG-NEXT:     verify
+; GCN-O0-SDAG-NEXT: amdgpu-asm-printer-begin
+; GCN-O0-SDAG-NEXT: cgscc
+; GCN-O0-SDAG-NEXT:   function
+; GCN-O0-SDAG-NEXT:     machine-function
+; GCN-O0-SDAG-NEXT:       amdgpu-isel
+; GCN-O0-SDAG-NEXT:       si-fix-sgpr-copies
+; GCN-O0-SDAG-NEXT:       si-i1-copies
+; GCN-O0-SDAG-NEXT:       finalize-isel
+; GCN-O0-SDAG-NEXT:       localstackalloc
+; GCN-O0-SDAG-NEXT: require<reg-usage>
+; GCN-O0-SDAG-NEXT: cgscc
+; GCN-O0-SDAG-NEXT:   function
+; GCN-O0-SDAG-NEXT:     machine-function
+; GCN-O0-SDAG-NEXT:       reg-usage-propagation
+; GCN-O0-SDAG-NEXT:       phi-node-elimination
+; GCN-O0-SDAG-NEXT:       si-lower-control-flow
+; GCN-O0-SDAG-NEXT:       two-address-instruction
+; GCN-O0-SDAG-NEXT:       si-wqm
+; GCN-O0-SDAG-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O0-SDAG-NEXT:       regallocfast<filter=sgpr;no-clear-vregs>
+; GCN-O0-SDAG-NEXT:       si-lower-sgpr-spills
+; GCN-O0-SDAG-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O0-SDAG-NEXT:       regallocfast<filter=wwm;no-clear-vregs>
+; GCN-O0-SDAG-NEXT:       si-lower-wwm-copies
+; GCN-O0-SDAG-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O0-SDAG-NEXT:       regallocfast<filter=vgpr>
+; GCN-O0-SDAG-NEXT:       si-fix-vgpr-copies
+; GCN-O0-SDAG-NEXT:       remove-redundant-debug-values
+; GCN-O0-SDAG-NEXT:       fixup-statepoint-caller-saved
+; GCN-O0-SDAG-NEXT:       prolog-epilog
+; GCN-O0-SDAG-NEXT:       post-ra-pseudos
+; GCN-O0-SDAG-NEXT:       si-post-ra-bundler
+; GCN-O0-SDAG-NEXT:       fentry-insert
+; GCN-O0-SDAG-NEXT:       xray-instrumentation
+; GCN-O0-SDAG-NEXT:       si-memory-legalizer
+; GCN-O0-SDAG-NEXT:       si-insert-waitcnts
+; GCN-O0-SDAG-NEXT:       si-mode-register
+; GCN-O0-SDAG-NEXT:       si-late-branch-lowering
+; GCN-O0-SDAG-NEXT:       post-RA-hazard-rec
+; GCN-O0-SDAG-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O0-SDAG-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O0-SDAG-NEXT:       branch-relaxation
+; GCN-O0-SDAG-NEXT:       reg-usage-collector
+; GCN-O0-SDAG-NEXT:       remove-loads-into-fake-uses
+; GCN-O0-SDAG-NEXT:       live-debug-values
+; GCN-O0-SDAG-NEXT:       machine-sanmd
+; GCN-O0-SDAG-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O0-SDAG-NEXT:       stack-frame-layout
+; GCN-O0-SDAG-NEXT:       amdgpu-asm-printer
+; GCN-O0-SDAG-NEXT:     free-machine-function
+; GCN-O0-SDAG-NEXT: amdgpu-asm-printer-end
+
+; GCN-O0-GISEL: require<MachineModuleAnalysis>
+; GCN-O0-GISEL-NEXT: require<profile-summary>
+; GCN-O0-GISEL-NEXT: require<collector-metadata>
+; GCN-O0-GISEL-NEXT: require<runtime-libcall-info>
+; GCN-O0-GISEL-NEXT: require<libcall-lowering-info>
+; GCN-O0-GISEL-NEXT: pre-isel-intrinsic-lowering
+; GCN-O0-GISEL-NEXT: function
+; GCN-O0-GISEL-NEXT:   expand-ir-insts<O0>
+; GCN-O0-GISEL-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O0-GISEL-NEXT: amdgpu-printf-runtime-binding
+; GCN-O0-GISEL-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O0-GISEL-NEXT: function
+; GCN-O0-GISEL-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O0-GISEL-NEXT: expand-variadics
+; GCN-O0-GISEL-NEXT: amdgpu-always-inline
+; GCN-O0-GISEL-NEXT: always-inline
+; GCN-O0-GISEL-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O0-GISEL-NEXT: amdgpu-lower-exec-sync
+; GCN-O0-GISEL-NEXT: amdgpu-sw-lower-lds
+; GCN-O0-GISEL-NEXT: amdgpu-lower-module-lds
+; GCN-O0-GISEL-NEXT: function
+; GCN-O0-GISEL-NEXT:   atomic-expand
+; GCN-O0-GISEL-NEXT:   verify
+; GCN-O0-GISEL-NEXT:   unreachableblockelim
+; GCN-O0-GISEL-NEXT:   ee-instrument<post-inline>
+; GCN-O0-GISEL-NEXT:   scalarize-masked-mem-intrin
+; GCN-O0-GISEL-NEXT:   expand-reductions
+; GCN-O0-GISEL-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O0-GISEL-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O0-GISEL-NEXT: amdgpu-lower-intrinsics
+; GCN-O0-GISEL-NEXT: cgscc
+; GCN-O0-GISEL-NEXT:   function
+; GCN-O0-GISEL-NEXT:     lower-switch
+; GCN-O0-GISEL-NEXT:     lower-invoke
+; GCN-O0-GISEL-NEXT:     unreachableblockelim
+; GCN-O0-GISEL-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O0-GISEL-NEXT:     fix-irreducible
+; GCN-O0-GISEL-NEXT:     unify-loop-exits
+; GCN-O0-GISEL-NEXT:     StructurizeCFGPass
+; GCN-O0-GISEL-NEXT:     amdgpu-annotate-uniform
+; GCN-O0-GISEL-NEXT:     si-annotate-control-flow
+; GCN-O0-GISEL-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O0-GISEL-NEXT:     inline-asm-prepare
+; GCN-O0-GISEL-NEXT:     safe-stack
+; GCN-O0-GISEL-NEXT:     stack-protector
+; GCN-O0-GISEL-NEXT:     verify
+; GCN-O0-GISEL-NEXT: amdgpu-asm-printer-begin
+; GCN-O0-GISEL-NEXT: cgscc
+; GCN-O0-GISEL-NEXT:   function
+; GCN-O0-GISEL-NEXT:     machine-function
+; GCN-O0-GISEL-NEXT:       ir-translator
+; GCN-O0-GISEL-NEXT:       amdgpu-prelegalizer-combiner
+; GCN-O0-GISEL-NEXT:       localizer
+; GCN-O0-GISEL-NEXT:       legalizer
+; GCN-O0-GISEL-NEXT:       amdgpu-postlegalizer-combiner
+; GCN-O0-GISEL-NEXT:       amdgpu-global-isel-divergence-lowering
+; GCN-O0-GISEL-NEXT:       amdgpu-reg-bank-select
+; GCN-O0-GISEL-NEXT:       amdgpu-reg-bank-legalize
+; GCN-O0-GISEL-NEXT:       amdgpu-regbank-combiner
+; GCN-O0-GISEL-NEXT:       instruction-select
+; GCN-O0-GISEL-NEXT:       ResetMachineFunctionPass
+; GCN-O0-GISEL-NEXT:       finalize-isel
+; GCN-O0-GISEL-NEXT:       localstackalloc
+; GCN-O0-GISEL-NEXT: require<reg-usage>
+; GCN-O0-GISEL-NEXT: cgscc
+; GCN-O0-GISEL-NEXT:   function
+; GCN-O0-GISEL-NEXT:     machine-function
+; GCN-O0-GISEL-NEXT:       reg-usage-propagation
+; GCN-O0-GISEL-NEXT:       phi-node-elimination
+; GCN-O0-GISEL-NEXT:       si-lower-control-flow
+; GCN-O0-GISEL-NEXT:       two-address-instruction
+; GCN-O0-GISEL-NEXT:       si-wqm
+; GCN-O0-GISEL-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O0-GISEL-NEXT:       regallocfast<filter=sgpr;no-clear-vregs>
+; GCN-O0-GISEL-NEXT:       si-lower-sgpr-spills
+; GCN-O0-GISEL-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O0-GISEL-NEXT:       regallocfast<filter=wwm;no-clear-vregs>
+; GCN-O0-GISEL-NEXT:       si-lower-wwm-copies
+; GCN-O0-GISEL-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O0-GISEL-NEXT:       regallocfast<filter=vgpr>
+; GCN-O0-GISEL-NEXT:       si-fix-vgpr-copies
+; GCN-O0-GISEL-NEXT:       remove-redundant-debug-values
+; GCN-O0-GISEL-NEXT:       fixup-statepoint-caller-saved
+; GCN-O0-GISEL-NEXT:       prolog-epilog
+; GCN-O0-GISEL-NEXT:       post-ra-pseudos
+; GCN-O0-GISEL-NEXT:       si-post-ra-bundler
+; GCN-O0-GISEL-NEXT:       fentry-insert
+; GCN-O0-GISEL-NEXT:       xray-instrumentation
+; GCN-O0-GISEL-NEXT:       si-memory-legalizer
+; GCN-O0-GISEL-NEXT:       si-insert-waitcnts
+; GCN-O0-GISEL-NEXT:       si-mode-register
+; GCN-O0-GISEL-NEXT:       si-late-branch-lowering
+; GCN-O0-GISEL-NEXT:       post-RA-hazard-rec
+; GCN-O0-GISEL-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O0-GISEL-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O0-GISEL-NEXT:       branch-relaxation
+; GCN-O0-GISEL-NEXT:       reg-usage-collector
+; GCN-O0-GISEL-NEXT:       remove-loads-into-fake-uses
+; GCN-O0-GISEL-NEXT:       live-debug-values
+; GCN-O0-GISEL-NEXT:       machine-sanmd
+; GCN-O0-GISEL-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O0-GISEL-NEXT:       stack-frame-layout
+; GCN-O0-GISEL-NEXT:       amdgpu-asm-printer
+; GCN-O0-GISEL-NEXT:     free-machine-function
+; GCN-O0-GISEL-NEXT: amdgpu-asm-printer-end
+
+; GCN-O2-SDAG: require<MachineModuleAnalysis>
+; GCN-O2-SDAG-NEXT: require<profile-summary>
+; GCN-O2-SDAG-NEXT: require<collector-metadata>
+; GCN-O2-SDAG-NEXT: require<runtime-libcall-info>
+; GCN-O2-SDAG-NEXT: require<libcall-lowering-info>
+; GCN-O2-SDAG-NEXT: function
+; GCN-O2-SDAG-NEXT:   objc-arc-contract
+; GCN-O2-SDAG-NEXT: pre-isel-intrinsic-lowering
+; GCN-O2-SDAG-NEXT: function
+; GCN-O2-SDAG-NEXT:   expand-ir-insts<O2>
+; GCN-O2-SDAG-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O2-SDAG-NEXT: amdgpu-printf-runtime-binding
+; GCN-O2-SDAG-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O2-SDAG-NEXT: function
+; GCN-O2-SDAG-NEXT:   amdgpu-image-intrinsic-opt
+; GCN-O2-SDAG-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O2-SDAG-NEXT: expand-variadics
+; GCN-O2-SDAG-NEXT: amdgpu-always-inline
+; GCN-O2-SDAG-NEXT: always-inline
+; GCN-O2-SDAG-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O2-SDAG-NEXT: amdgpu-lower-exec-sync
+; GCN-O2-SDAG-NEXT: amdgpu-sw-lower-lds
+; GCN-O2-SDAG-NEXT: amdgpu-lower-module-lds
+; GCN-O2-SDAG-NEXT: function
+; GCN-O2-SDAG-NEXT:   amdgpu-atomic-optimizer
+; GCN-O2-SDAG-NEXT:   atomic-expand
+; GCN-O2-SDAG-NEXT:   amdgpu-promote-alloca
+; GCN-O2-SDAG-NEXT:   separate-const-offset-from-gep<>
+; GCN-O2-SDAG-NEXT:   slsr
+; GCN-O2-SDAG-NEXT:   early-cse<>
+; GCN-O2-SDAG-NEXT:   nary-reassociate
+; GCN-O2-SDAG-NEXT:   early-cse<>
+; GCN-O2-SDAG-NEXT:   amdgpu-codegenprepare
+; GCN-O2-SDAG-NEXT:   loop-mssa
+; GCN-O2-SDAG-NEXT:     licm<allowspeculation>
+; GCN-O2-SDAG-NEXT:   verify
+; GCN-O2-SDAG-NEXT:   loop
+; GCN-O2-SDAG-NEXT:     canon-freeze
+; GCN-O2-SDAG-NEXT:     loop-reduce
+; GCN-O2-SDAG-NEXT:   unreachableblockelim
+; GCN-O2-SDAG-NEXT:   consthoist
+; GCN-O2-SDAG-NEXT:   replace-with-veclib
+; GCN-O2-SDAG-NEXT:   partially-inline-libcalls
+; GCN-O2-SDAG-NEXT:   ee-instrument<post-inline>
+; GCN-O2-SDAG-NEXT:   scalarize-masked-mem-intrin
+; GCN-O2-SDAG-NEXT:   expand-reductions
+; GCN-O2-SDAG-NEXT:   early-cse<>
+; GCN-O2-SDAG-NEXT: amdgpu-preload-kernel-arguments
+; GCN-O2-SDAG-NEXT: function
+; GCN-O2-SDAG-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O2-SDAG-NEXT:   codegenprepare
+; GCN-O2-SDAG-NEXT:   load-store-vectorizer
+; GCN-O2-SDAG-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O2-SDAG-NEXT: amdgpu-lower-intrinsics
+; GCN-O2-SDAG-NEXT: cgscc
+; GCN-O2-SDAG-NEXT:   function
+; GCN-O2-SDAG-NEXT:     lower-switch
+; GCN-O2-SDAG-NEXT:     lower-invoke
+; GCN-O2-SDAG-NEXT:     unreachableblockelim
+; GCN-O2-SDAG-NEXT:     flatten-cfg
+; GCN-O2-SDAG-NEXT:     sink
+; GCN-O2-SDAG-NEXT:     amdgpu-late-codegenprepare
+; GCN-O2-SDAG-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O2-SDAG-NEXT:     fix-irreducible
+; GCN-O2-SDAG-NEXT:     unify-loop-exits
+; GCN-O2-SDAG-NEXT:     StructurizeCFGPass
+; GCN-O2-SDAG-NEXT:     amdgpu-annotate-uniform
+; GCN-O2-SDAG-NEXT:     si-annotate-control-flow
+; GCN-O2-SDAG-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O2-SDAG-NEXT:     lcssa
+; GCN-O2-SDAG-NEXT: amdgpu-perf-hint
+; GCN-O2-SDAG-NEXT: cgscc
+; GCN-O2-SDAG-NEXT:   function
+; GCN-O2-SDAG-NEXT:     inline-asm-prepare
+; GCN-O2-SDAG-NEXT:     safe-stack
+; GCN-O2-SDAG-NEXT:     stack-protector
+; GCN-O2-SDAG-NEXT:     verify
+; GCN-O2-SDAG-NEXT: amdgpu-asm-printer-begin
+; GCN-O2-SDAG-NEXT: cgscc
+; GCN-O2-SDAG-NEXT:   function
+; GCN-O2-SDAG-NEXT:     machine-function
+; GCN-O2-SDAG-NEXT:       amdgpu-isel
+; GCN-O2-SDAG-NEXT:       si-fix-sgpr-copies
+; GCN-O2-SDAG-NEXT:       si-i1-copies
+; GCN-O2-SDAG-NEXT:       finalize-isel
+; GCN-O2-SDAG-NEXT:       early-tailduplication
+; GCN-O2-SDAG-NEXT:       opt-phis
+; GCN-O2-SDAG-NEXT:       stack-coloring
+; GCN-O2-SDAG-NEXT:       localstackalloc
+; GCN-O2-SDAG-NEXT:       dead-mi-elimination
+; GCN-O2-SDAG-NEXT:       early-machinelicm
+; GCN-O2-SDAG-NEXT:       machine-cse
+; GCN-O2-SDAG-NEXT:       machine-sink
+; GCN-O2-SDAG-NEXT:       peephole-opt
+; GCN-O2-SDAG-NEXT:       dead-mi-elimination
+; GCN-O2-SDAG-NEXT:       si-fold-operands
+; GCN-O2-SDAG-NEXT:       gcn-dpp-combine
+; GCN-O2-SDAG-NEXT:       si-load-store-opt
+; GCN-O2-SDAG-NEXT:       si-peephole-sdwa
+; GCN-O2-SDAG-NEXT:       early-machinelicm
+; GCN-O2-SDAG-NEXT:       machine-cse
+; GCN-O2-SDAG-NEXT:       si-fold-operands
+; GCN-O2-SDAG-NEXT:       dead-mi-elimination
+; GCN-O2-SDAG-NEXT:       si-shrink-instructions
+; GCN-O2-SDAG-NEXT: require<reg-usage>
+; GCN-O2-SDAG-NEXT: cgscc
+; GCN-O2-SDAG-NEXT:   function
+; GCN-O2-SDAG-NEXT:     machine-function
+; GCN-O2-SDAG-NEXT:       reg-usage-propagation
+; GCN-O2-SDAG-NEXT:       amdgpu-prepare-agpr-alloc
+; GCN-O2-SDAG-NEXT:       detect-dead-lanes
+; GCN-O2-SDAG-NEXT:       dead-mi-elimination
+; GCN-O2-SDAG-NEXT:       init-undef
+; GCN-O2-SDAG-NEXT:       process-imp-defs
+; GCN-O2-SDAG-NEXT:       unreachable-mbb-elimination
+; GCN-O2-SDAG-NEXT:       require<live-vars>
+; GCN-O2-SDAG-NEXT:       si-opt-vgpr-liverange
+; GCN-O2-SDAG-NEXT:       require<machine-loops>
+; GCN-O2-SDAG-NEXT:       phi-node-elimination
+; GCN-O2-SDAG-NEXT:       si-lower-control-flow
+; GCN-O2-SDAG-NEXT:       two-address-instruction
+; GCN-O2-SDAG-NEXT:       register-coalescer
+; GCN-O2-SDAG-NEXT:       rename-independent-subregs
+; GCN-O2-SDAG-NEXT:       amdgpu-rewrite-partial-reg-uses
+; GCN-O2-SDAG-NEXT:       machine-scheduler
+; GCN-O2-SDAG-NEXT:       amdgpu-pre-ra-optimizations
+; GCN-O2-SDAG-NEXT:       si-wqm
+; GCN-O2-SDAG-NEXT:       si-optimize-exec-masking-pre-ra
+; GCN-O2-SDAG-NEXT:       si-form-memory-clauses
+; GCN-O2-SDAG-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O2-SDAG-NEXT:       greedy<sgpr>
+; GCN-O2-SDAG-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O2-SDAG-NEXT:       stack-slot-coloring
+; GCN-O2-SDAG-NEXT:       si-lower-sgpr-spills
+; GCN-O2-SDAG-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O2-SDAG-NEXT:       greedy<wwm>
+; GCN-O2-SDAG-NEXT:       si-lower-wwm-copies
+; GCN-O2-SDAG-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O2-SDAG-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O2-SDAG-NEXT:       greedy<vgpr>
+; GCN-O2-SDAG-NEXT:       amdgpu-nsa-reassign
+; GCN-O2-SDAG-NEXT:       amdgpu-rewrite-agpr-copy-mfma
+; GCN-O2-SDAG-NEXT:       virt-reg-rewriter
+; GCN-O2-SDAG-NEXT:       amdgpu-mark-last-scratch-load
+; GCN-O2-SDAG-NEXT:       stack-slot-coloring
+; GCN-O2-SDAG-NEXT:       machine-cp
+; GCN-O2-SDAG-NEXT:       machinelicm
+; GCN-O2-SDAG-NEXT:       si-fix-vgpr-copies
+; GCN-O2-SDAG-NEXT:       si-optimize-exec-masking
+; GCN-O2-SDAG-NEXT:       remove-redundant-debug-values
+; GCN-O2-SDAG-NEXT:       fixup-statepoint-caller-saved
+; GCN-O2-SDAG-NEXT:       postra-machine-sink
+; GCN-O2-SDAG-NEXT:       shrink-wrap
+; GCN-O2-SDAG-NEXT:       prolog-epilog
+; GCN-O2-SDAG-NEXT:       machine-latecleanup
+; GCN-O2-SDAG-NEXT:       branch-folder
+; GCN-O2-SDAG-NEXT:       tailduplication
+; GCN-O2-SDAG-NEXT:       machine-cp
+; GCN-O2-SDAG-NEXT:       post-ra-pseudos
+; GCN-O2-SDAG-NEXT:       si-shrink-instructions
+; GCN-O2-SDAG-NEXT:       si-post-ra-bundler
+; GCN-O2-SDAG-NEXT:       postmisched
+; GCN-O2-SDAG-NEXT:       block-placement
+; GCN-O2-SDAG-NEXT:       fentry-insert
+; GCN-O2-SDAG-NEXT:       xray-instrumentation
+; GCN-O2-SDAG-NEXT:       gcn-create-vopd
+; GCN-O2-SDAG-NEXT:       si-memory-legalizer
+; GCN-O2-SDAG-NEXT:       si-insert-waitcnts
+; GCN-O2-SDAG-NEXT:       si-mode-register
+; GCN-O2-SDAG-NEXT:       si-insert-hard-clauses
+; GCN-O2-SDAG-NEXT:       si-late-branch-lowering
+; GCN-O2-SDAG-NEXT:       si-pre-emit-peephole
+; GCN-O2-SDAG-NEXT:       post-RA-hazard-rec
+; GCN-O2-SDAG-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O2-SDAG-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O2-SDAG-NEXT:       amdgpu-insert-delay-alu
+; GCN-O2-SDAG-NEXT:       branch-relaxation
+; GCN-O2-SDAG-NEXT:       reg-usage-collector
+; GCN-O2-SDAG-NEXT:       remove-loads-into-fake-uses
+; GCN-O2-SDAG-NEXT:       live-debug-values
+; GCN-O2-SDAG-NEXT:       machine-sanmd
+; GCN-O2-SDAG-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O2-SDAG-NEXT:       stack-frame-layout
+; GCN-O2-SDAG-NEXT:       amdgpu-asm-printer
+; GCN-O2-SDAG-NEXT:     free-machine-function
+; GCN-O2-SDAG-NEXT: amdgpu-asm-printer-end
+
+; GCN-O2-GISEL: require<MachineModuleAnalysis>
+; GCN-O2-GISEL-NEXT: require<profile-summary>
+; GCN-O2-GISEL-NEXT: require<collector-metadata>
+; GCN-O2-GISEL-NEXT: require<runtime-libcall-info>
+; GCN-O2-GISEL-NEXT: require<libcall-lowering-info>
+; GCN-O2-GISEL-NEXT: function
+; GCN-O2-GISEL-NEXT:   objc-arc-contract
+; GCN-O2-GISEL-NEXT: pre-isel-intrinsic-lowering
+; GCN-O2-GISEL-NEXT: function
+; GCN-O2-GISEL-NEXT:   expand-ir-insts<O2>
+; GCN-O2-GISEL-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O2-GISEL-NEXT: amdgpu-printf-runtime-binding
+; GCN-O2-GISEL-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O2-GISEL-NEXT: function
+; GCN-O2-GISEL-NEXT:   amdgpu-image-intrinsic-opt
+; GCN-O2-GISEL-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O2-GISEL-NEXT: expand-variadics
+; GCN-O2-GISEL-NEXT: amdgpu-always-inline
+; GCN-O2-GISEL-NEXT: always-inline
+; GCN-O2-GISEL-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O2-GISEL-NEXT: amdgpu-lower-exec-sync
+; GCN-O2-GISEL-NEXT: amdgpu-sw-lower-lds
+; GCN-O2-GISEL-NEXT: amdgpu-lower-module-lds
+; GCN-O2-GISEL-NEXT: function
+; GCN-O2-GISEL-NEXT:   amdgpu-atomic-optimizer
+; GCN-O2-GISEL-NEXT:   atomic-expand
+; GCN-O2-GISEL-NEXT:   amdgpu-promote-alloca
+; GCN-O2-GISEL-NEXT:   separate-const-offset-from-gep<>
+; GCN-O2-GISEL-NEXT:   slsr
+; GCN-O2-GISEL-NEXT:   early-cse<>
+; GCN-O2-GISEL-NEXT:   nary-reassociate
+; GCN-O2-GISEL-NEXT:   early-cse<>
+; GCN-O2-GISEL-NEXT:   amdgpu-codegenprepare
+; GCN-O2-GISEL-NEXT:   loop-mssa
+; GCN-O2-GISEL-NEXT:     licm<allowspeculation>
+; GCN-O2-GISEL-NEXT:   verify
+; GCN-O2-GISEL-NEXT:   loop
+; GCN-O2-GISEL-NEXT:     canon-freeze
+; GCN-O2-GISEL-NEXT:     loop-reduce
+; GCN-O2-GISEL-NEXT:   unreachableblockelim
+; GCN-O2-GISEL-NEXT:   consthoist
+; GCN-O2-GISEL-NEXT:   replace-with-veclib
+; GCN-O2-GISEL-NEXT:   partially-inline-libcalls
+; GCN-O2-GISEL-NEXT:   ee-instrument<post-inline>
+; GCN-O2-GISEL-NEXT:   scalarize-masked-mem-intrin
+; GCN-O2-GISEL-NEXT:   expand-reductions
+; GCN-O2-GISEL-NEXT:   early-cse<>
+; GCN-O2-GISEL-NEXT: amdgpu-preload-kernel-arguments
+; GCN-O2-GISEL-NEXT: function
+; GCN-O2-GISEL-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O2-GISEL-NEXT:   codegenprepare
+; GCN-O2-GISEL-NEXT:   load-store-vectorizer
+; GCN-O2-GISEL-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O2-GISEL-NEXT: amdgpu-lower-intrinsics
+; GCN-O2-GISEL-NEXT: cgscc
+; GCN-O2-GISEL-NEXT:   function
+; GCN-O2-GISEL-NEXT:     lower-switch
+; GCN-O2-GISEL-NEXT:     lower-invoke
+; GCN-O2-GISEL-NEXT:     unreachableblockelim
+; GCN-O2-GISEL-NEXT:     flatten-cfg
+; GCN-O2-GISEL-NEXT:     sink
+; GCN-O2-GISEL-NEXT:     amdgpu-late-codegenprepare
+; GCN-O2-GISEL-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O2-GISEL-NEXT:     fix-irreducible
+; GCN-O2-GISEL-NEXT:     unify-loop-exits
+; GCN-O2-GISEL-NEXT:     StructurizeCFGPass
+; GCN-O2-GISEL-NEXT:     amdgpu-annotate-uniform
+; GCN-O2-GISEL-NEXT:     si-annotate-control-flow
+; GCN-O2-GISEL-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O2-GISEL-NEXT: amdgpu-perf-hint
+; GCN-O2-GISEL-NEXT: cgscc
+; GCN-O2-GISEL-NEXT:   function
+; GCN-O2-GISEL-NEXT:     inline-asm-prepare
+; GCN-O2-GISEL-NEXT:     safe-stack
+; GCN-O2-GISEL-NEXT:     stack-protector
+; GCN-O2-GISEL-NEXT:     verify
+; GCN-O2-GISEL-NEXT: amdgpu-asm-printer-begin
+; GCN-O2-GISEL-NEXT: cgscc
+; GCN-O2-GISEL-NEXT:   function
+; GCN-O2-GISEL-NEXT:     machine-function
+; GCN-O2-GISEL-NEXT:       ir-translator
+; GCN-O2-GISEL-NEXT:       amdgpu-prelegalizer-combiner
+; GCN-O2-GISEL-NEXT:       localizer
+; GCN-O2-GISEL-NEXT:       legalizer
+; GCN-O2-GISEL-NEXT:       amdgpu-postlegalizer-combiner
+; GCN-O2-GISEL-NEXT:       amdgpu-global-isel-divergence-lowering
+; GCN-O2-GISEL-NEXT:       amdgpu-reg-bank-select
+; GCN-O2-GISEL-NEXT:       amdgpu-reg-bank-legalize
+; GCN-O2-GISEL-NEXT:       amdgpu-regbank-combiner
+; GCN-O2-GISEL-NEXT:       instruction-select
+; GCN-O2-GISEL-NEXT:       ResetMachineFunctionPass
+; GCN-O2-GISEL-NEXT:       finalize-isel
+; GCN-O2-GISEL-NEXT:       early-tailduplication
+; GCN-O2-GISEL-NEXT:       opt-phis
+; GCN-O2-GISEL-NEXT:       stack-coloring
+; GCN-O2-GISEL-NEXT:       localstackalloc
+; GCN-O2-GISEL-NEXT:       dead-mi-elimination
+; GCN-O2-GISEL-NEXT:       early-machinelicm
+; GCN-O2-GISEL-NEXT:       machine-cse
+; GCN-O2-GISEL-NEXT:       machine-sink
+; GCN-O2-GISEL-NEXT:       peephole-opt
+; GCN-O2-GISEL-NEXT:       dead-mi-elimination
+; GCN-O2-GISEL-NEXT:       si-fold-operands
+; GCN-O2-GISEL-NEXT:       gcn-dpp-combine
+; GCN-O2-GISEL-NEXT:       si-load-store-opt
+; GCN-O2-GISEL-NEXT:       si-peephole-sdwa
+; GCN-O2-GISEL-NEXT:       early-machinelicm
+; GCN-O2-GISEL-NEXT:       machine-cse
+; GCN-O2-GISEL-NEXT:       si-fold-operands
+; GCN-O2-GISEL-NEXT:       dead-mi-elimination
+; GCN-O2-GISEL-NEXT:       si-shrink-instructions
+; GCN-O2-GISEL-NEXT: require<reg-usage>
+; GCN-O2-GISEL-NEXT: cgscc
+; GCN-O2-GISEL-NEXT:   function
+; GCN-O2-GISEL-NEXT:     machine-function
+; GCN-O2-GISEL-NEXT:       reg-usage-propagation
+; GCN-O2-GISEL-NEXT:       amdgpu-prepare-agpr-alloc
+; GCN-O2-GISEL-NEXT:       detect-dead-lanes
+; GCN-O2-GISEL-NEXT:       dead-mi-elimination
+; GCN-O2-GISEL-NEXT:       init-undef
+; GCN-O2-GISEL-NEXT:       process-imp-defs
+; GCN-O2-GISEL-NEXT:       unreachable-mbb-elimination
+; GCN-O2-GISEL-NEXT:       require<live-vars>
+; GCN-O2-GISEL-NEXT:       si-opt-vgpr-liverange
+; GCN-O2-GISEL-NEXT:       require<machine-loops>
+; GCN-O2-GISEL-NEXT:       phi-node-elimination
+; GCN-O2-GISEL-NEXT:       si-lower-control-flow
+; GCN-O2-GISEL-NEXT:       two-address-instruction
+; GCN-O2-GISEL-NEXT:       register-coalescer
+; GCN-O2-GISEL-NEXT:       rename-independent-subregs
+; GCN-O2-GISEL-NEXT:       amdgpu-rewrite-partial-reg-uses
+; GCN-O2-GISEL-NEXT:       machine-scheduler
+; GCN-O2-GISEL-NEXT:       amdgpu-pre-ra-optimizations
+; GCN-O2-GISEL-NEXT:       si-wqm
+; GCN-O2-GISEL-NEXT:       si-optimize-exec-masking-pre-ra
+; GCN-O2-GISEL-NEXT:       si-form-memory-clauses
+; GCN-O2-GISEL-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O2-GISEL-NEXT:       greedy<sgpr>
+; GCN-O2-GISEL-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O2-GISEL-NEXT:       stack-slot-coloring
+; GCN-O2-GISEL-NEXT:       si-lower-sgpr-spills
+; GCN-O2-GISEL-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O2-GISEL-NEXT:       greedy<wwm>
+; GCN-O2-GISEL-NEXT:       si-lower-wwm-copies
+; GCN-O2-GISEL-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O2-GISEL-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O2-GISEL-NEXT:       greedy<vgpr>
+; GCN-O2-GISEL-NEXT:       amdgpu-nsa-reassign
+; GCN-O2-GISEL-NEXT:       amdgpu-rewrite-agpr-copy-mfma
+; GCN-O2-GISEL-NEXT:       virt-reg-rewriter
+; GCN-O2-GISEL-NEXT:       amdgpu-mark-last-scratch-load
+; GCN-O2-GISEL-NEXT:       stack-slot-coloring
+; GCN-O2-GISEL-NEXT:       machine-cp
+; GCN-O2-GISEL-NEXT:       machinelicm
+; GCN-O2-GISEL-NEXT:       si-fix-vgpr-copies
+; GCN-O2-GISEL-NEXT:       si-optimize-exec-masking
+; GCN-O2-GISEL-NEXT:       remove-redundant-debug-values
+; GCN-O2-GISEL-NEXT:       fixup-statepoint-caller-saved
+; GCN-O2-GISEL-NEXT:       postra-machine-sink
+; GCN-O2-GISEL-NEXT:       shrink-wrap
+; GCN-O2-GISEL-NEXT:       prolog-epilog
+; GCN-O2-GISEL-NEXT:       machine-latecleanup
+; GCN-O2-GISEL-NEXT:       branch-folder
+; GCN-O2-GISEL-NEXT:       tailduplication
+; GCN-O2-GISEL-NEXT:       machine-cp
+; GCN-O2-GISEL-NEXT:       post-ra-pseudos
+; GCN-O2-GISEL-NEXT:       si-shrink-instructions
+; GCN-O2-GISEL-NEXT:       si-post-ra-bundler
+; GCN-O2-GISEL-NEXT:       postmisched
+; GCN-O2-GISEL-NEXT:       block-placement
+; GCN-O2-GISEL-NEXT:       fentry-insert
+; GCN-O2-GISEL-NEXT:       xray-instrumentation
+; GCN-O2-GISEL-NEXT:       gcn-create-vopd
+; GCN-O2-GISEL-NEXT:       si-memory-legalizer
+; GCN-O2-GISEL-NEXT:       si-insert-waitcnts
+; GCN-O2-GISEL-NEXT:       si-mode-register
+; GCN-O2-GISEL-NEXT:       si-insert-hard-clauses
+; GCN-O2-GISEL-NEXT:       si-late-branch-lowering
+; GCN-O2-GISEL-NEXT:       si-pre-emit-peephole
+; GCN-O2-GISEL-NEXT:       post-RA-hazard-rec
+; GCN-O2-GISEL-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O2-GISEL-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O2-GISEL-NEXT:       amdgpu-insert-delay-alu
+; GCN-O2-GISEL-NEXT:       branch-relaxation
+; GCN-O2-GISEL-NEXT:       reg-usage-collector
+; GCN-O2-GISEL-NEXT:       remove-loads-into-fake-uses
+; GCN-O2-GISEL-NEXT:       live-debug-values
+; GCN-O2-GISEL-NEXT:       machine-sanmd
+; GCN-O2-GISEL-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O2-GISEL-NEXT:       stack-frame-layout
+; GCN-O2-GISEL-NEXT:       amdgpu-asm-printer
+; GCN-O2-GISEL-NEXT:     free-machine-function
+; GCN-O2-GISEL-NEXT: amdgpu-asm-printer-end
+
+; GCN-O3-SDAG: require<MachineModuleAnalysis>
+; GCN-O3-SDAG-NEXT: require<profile-summary>
+; GCN-O3-SDAG-NEXT: require<collector-metadata>
+; GCN-O3-SDAG-NEXT: require<runtime-libcall-info>
+; GCN-O3-SDAG-NEXT: require<libcall-lowering-info>
+; GCN-O3-SDAG-NEXT: function
+; GCN-O3-SDAG-NEXT:   objc-arc-contract
+; GCN-O3-SDAG-NEXT: pre-isel-intrinsic-lowering
+; GCN-O3-SDAG-NEXT: function
+; GCN-O3-SDAG-NEXT:   expand-ir-insts<O3>
+; GCN-O3-SDAG-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O3-SDAG-NEXT: amdgpu-printf-runtime-binding
+; GCN-O3-SDAG-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O3-SDAG-NEXT: function
+; GCN-O3-SDAG-NEXT:   amdgpu-image-intrinsic-opt
+; GCN-O3-SDAG-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O3-SDAG-NEXT: expand-variadics
+; GCN-O3-SDAG-NEXT: amdgpu-always-inline
+; GCN-O3-SDAG-NEXT: always-inline
+; GCN-O3-SDAG-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O3-SDAG-NEXT: amdgpu-lower-exec-sync
+; GCN-O3-SDAG-NEXT: amdgpu-sw-lower-lds
+; GCN-O3-SDAG-NEXT: amdgpu-lower-module-lds
+; GCN-O3-SDAG-NEXT: function
+; GCN-O3-SDAG-NEXT:   amdgpu-atomic-optimizer
+; GCN-O3-SDAG-NEXT:   atomic-expand
+; GCN-O3-SDAG-NEXT:   amdgpu-promote-alloca
+; GCN-O3-SDAG-NEXT:   separate-const-offset-from-gep<>
+; GCN-O3-SDAG-NEXT:   slsr
+; GCN-O3-SDAG-NEXT:   gvn<>
+; GCN-O3-SDAG-NEXT:   nary-reassociate
+; GCN-O3-SDAG-NEXT:   early-cse<>
+; GCN-O3-SDAG-NEXT:   amdgpu-codegenprepare
+; GCN-O3-SDAG-NEXT:   loop-mssa
+; GCN-O3-SDAG-NEXT:     licm<allowspeculation>
+; GCN-O3-SDAG-NEXT:   verify
+; GCN-O3-SDAG-NEXT:   loop
+; GCN-O3-SDAG-NEXT:     canon-freeze
+; GCN-O3-SDAG-NEXT:     loop-reduce
+; GCN-O3-SDAG-NEXT:   unreachableblockelim
+; GCN-O3-SDAG-NEXT:   consthoist
+; GCN-O3-SDAG-NEXT:   replace-with-veclib
+; GCN-O3-SDAG-NEXT:   partially-inline-libcalls
+; GCN-O3-SDAG-NEXT:   ee-instrument<post-inline>
+; GCN-O3-SDAG-NEXT:   scalarize-masked-mem-intrin
+; GCN-O3-SDAG-NEXT:   expand-reductions
+; GCN-O3-SDAG-NEXT:   gvn<>
+; GCN-O3-SDAG-NEXT: amdgpu-preload-kernel-arguments
+; GCN-O3-SDAG-NEXT: function
+; GCN-O3-SDAG-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O3-SDAG-NEXT:   codegenprepare
+; GCN-O3-SDAG-NEXT:   load-store-vectorizer
+; GCN-O3-SDAG-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O3-SDAG-NEXT: amdgpu-lower-intrinsics
+; GCN-O3-SDAG-NEXT: cgscc
+; GCN-O3-SDAG-NEXT:   function
+; GCN-O3-SDAG-NEXT:     lower-switch
+; GCN-O3-SDAG-NEXT:     lower-invoke
+; GCN-O3-SDAG-NEXT:     unreachableblockelim
+; GCN-O3-SDAG-NEXT:     flatten-cfg
+; GCN-O3-SDAG-NEXT:     sink
+; GCN-O3-SDAG-NEXT:     amdgpu-late-codegenprepare
+; GCN-O3-SDAG-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O3-SDAG-NEXT:     fix-irreducible
+; GCN-O3-SDAG-NEXT:     unify-loop-exits
+; GCN-O3-SDAG-NEXT:     StructurizeCFGPass
+; GCN-O3-SDAG-NEXT:     amdgpu-annotate-uniform
+; GCN-O3-SDAG-NEXT:     si-annotate-control-flow
+; GCN-O3-SDAG-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O3-SDAG-NEXT:     lcssa
+; GCN-O3-SDAG-NEXT: amdgpu-perf-hint
+; GCN-O3-SDAG-NEXT: cgscc
+; GCN-O3-SDAG-NEXT:   function
+; GCN-O3-SDAG-NEXT:     inline-asm-prepare
+; GCN-O3-SDAG-NEXT:     safe-stack
+; GCN-O3-SDAG-NEXT:     stack-protector
+; GCN-O3-SDAG-NEXT:     verify
+; GCN-O3-SDAG-NEXT: amdgpu-asm-printer-begin
+; GCN-O3-SDAG-NEXT: cgscc
+; GCN-O3-SDAG-NEXT:   function
+; GCN-O3-SDAG-NEXT:     machine-function
+; GCN-O3-SDAG-NEXT:       amdgpu-isel
+; GCN-O3-SDAG-NEXT:       si-fix-sgpr-copies
+; GCN-O3-SDAG-NEXT:       si-i1-copies
+; GCN-O3-SDAG-NEXT:       finalize-isel
+; GCN-O3-SDAG-NEXT:       early-tailduplication
+; GCN-O3-SDAG-NEXT:       opt-phis
+; GCN-O3-SDAG-NEXT:       stack-coloring
+; GCN-O3-SDAG-NEXT:       localstackalloc
+; GCN-O3-SDAG-NEXT:       dead-mi-elimination
+; GCN-O3-SDAG-NEXT:       early-machinelicm
+; GCN-O3-SDAG-NEXT:       machine-cse
+; GCN-O3-SDAG-NEXT:       machine-sink
+; GCN-O3-SDAG-NEXT:       peephole-opt
+; GCN-O3-SDAG-NEXT:       dead-mi-elimination
+; GCN-O3-SDAG-NEXT:       si-fold-operands
+; GCN-O3-SDAG-NEXT:       gcn-dpp-combine
+; GCN-O3-SDAG-NEXT:       si-load-store-opt
+; GCN-O3-SDAG-NEXT:       si-peephole-sdwa
+; GCN-O3-SDAG-NEXT:       early-machinelicm
+; GCN-O3-SDAG-NEXT:       machine-cse
+; GCN-O3-SDAG-NEXT:       si-fold-operands
+; GCN-O3-SDAG-NEXT:       dead-mi-elimination
+; GCN-O3-SDAG-NEXT:       si-shrink-instructions
+; GCN-O3-SDAG-NEXT: require<reg-usage>
+; GCN-O3-SDAG-NEXT: cgscc
+; GCN-O3-SDAG-NEXT:   function
+; GCN-O3-SDAG-NEXT:     machine-function
+; GCN-O3-SDAG-NEXT:       reg-usage-propagation
+; GCN-O3-SDAG-NEXT:       amdgpu-prepare-agpr-alloc
+; GCN-O3-SDAG-NEXT:       detect-dead-lanes
+; GCN-O3-SDAG-NEXT:       dead-mi-elimination
+; GCN-O3-SDAG-NEXT:       init-undef
+; GCN-O3-SDAG-NEXT:       process-imp-defs
+; GCN-O3-SDAG-NEXT:       unreachable-mbb-elimination
+; GCN-O3-SDAG-NEXT:       require<live-vars>
+; GCN-O3-SDAG-NEXT:       si-opt-vgpr-liverange
+; GCN-O3-SDAG-NEXT:       require<machine-loops>
+; GCN-O3-SDAG-NEXT:       phi-node-elimination
+; GCN-O3-SDAG-NEXT:       si-lower-control-flow
+; GCN-O3-SDAG-NEXT:       two-address-instruction
+; GCN-O3-SDAG-NEXT:       register-coalescer
+; GCN-O3-SDAG-NEXT:       rename-independent-subregs
+; GCN-O3-SDAG-NEXT:       amdgpu-rewrite-partial-reg-uses
+; GCN-O3-SDAG-NEXT:       machine-scheduler
+; GCN-O3-SDAG-NEXT:       amdgpu-pre-ra-optimizations
+; GCN-O3-SDAG-NEXT:       si-wqm
+; GCN-O3-SDAG-NEXT:       si-optimize-exec-masking-pre-ra
+; GCN-O3-SDAG-NEXT:       si-form-memory-clauses
+; GCN-O3-SDAG-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O3-SDAG-NEXT:       greedy<sgpr>
+; GCN-O3-SDAG-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O3-SDAG-NEXT:       stack-slot-coloring
+; GCN-O3-SDAG-NEXT:       si-lower-sgpr-spills
+; GCN-O3-SDAG-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O3-SDAG-NEXT:       greedy<wwm>
+; GCN-O3-SDAG-NEXT:       si-lower-wwm-copies
+; GCN-O3-SDAG-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O3-SDAG-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O3-SDAG-NEXT:       greedy<vgpr>
+; GCN-O3-SDAG-NEXT:       amdgpu-nsa-reassign
+; GCN-O3-SDAG-NEXT:       amdgpu-rewrite-agpr-copy-mfma
+; GCN-O3-SDAG-NEXT:       virt-reg-rewriter
+; GCN-O3-SDAG-NEXT:       amdgpu-mark-last-scratch-load
+; GCN-O3-SDAG-NEXT:       stack-slot-coloring
+; GCN-O3-SDAG-NEXT:       machine-cp
+; GCN-O3-SDAG-NEXT:       machinelicm
+; GCN-O3-SDAG-NEXT:       si-fix-vgpr-copies
+; GCN-O3-SDAG-NEXT:       si-optimize-exec-masking
+; GCN-O3-SDAG-NEXT:       remove-redundant-debug-values
+; GCN-O3-SDAG-NEXT:       fixup-statepoint-caller-saved
+; GCN-O3-SDAG-NEXT:       postra-machine-sink
+; GCN-O3-SDAG-NEXT:       shrink-wrap
+; GCN-O3-SDAG-NEXT:       prolog-epilog
+; GCN-O3-SDAG-NEXT:       machine-latecleanup
+; GCN-O3-SDAG-NEXT:       branch-folder
+; GCN-O3-SDAG-NEXT:       tailduplication
+; GCN-O3-SDAG-NEXT:       machine-cp
+; GCN-O3-SDAG-NEXT:       post-ra-pseudos
+; GCN-O3-SDAG-NEXT:       si-shrink-instructions
+; GCN-O3-SDAG-NEXT:       si-post-ra-bundler
+; GCN-O3-SDAG-NEXT:       postmisched
+; GCN-O3-SDAG-NEXT:       block-placement
+; GCN-O3-SDAG-NEXT:       fentry-insert
+; GCN-O3-SDAG-NEXT:       xray-instrumentation
+; GCN-O3-SDAG-NEXT:       gcn-create-vopd
+; GCN-O3-SDAG-NEXT:       si-memory-legalizer
+; GCN-O3-SDAG-NEXT:       si-insert-waitcnts
+; GCN-O3-SDAG-NEXT:       si-mode-register
+; GCN-O3-SDAG-NEXT:       si-insert-hard-clauses
+; GCN-O3-SDAG-NEXT:       si-late-branch-lowering
+; GCN-O3-SDAG-NEXT:       si-pre-emit-peephole
+; GCN-O3-SDAG-NEXT:       post-RA-hazard-rec
+; GCN-O3-SDAG-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O3-SDAG-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O3-SDAG-NEXT:       amdgpu-insert-delay-alu
+; GCN-O3-SDAG-NEXT:       branch-relaxation
+; GCN-O3-SDAG-NEXT:       reg-usage-collector
+; GCN-O3-SDAG-NEXT:       remove-loads-into-fake-uses
+; GCN-O3-SDAG-NEXT:       live-debug-values
+; GCN-O3-SDAG-NEXT:       machine-sanmd
+; GCN-O3-SDAG-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O3-SDAG-NEXT:       stack-frame-layout
+; GCN-O3-SDAG-NEXT:       amdgpu-asm-printer
+; GCN-O3-SDAG-NEXT:     free-machine-function
+; GCN-O3-SDAG-NEXT: amdgpu-asm-printer-end
+
+; GCN-O3-GISEL: require<MachineModuleAnalysis>
+; GCN-O3-GISEL-NEXT: require<profile-summary>
+; GCN-O3-GISEL-NEXT: require<collector-metadata>
+; GCN-O3-GISEL-NEXT: require<runtime-libcall-info>
+; GCN-O3-GISEL-NEXT: require<libcall-lowering-info>
+; GCN-O3-GISEL-NEXT: function
+; GCN-O3-GISEL-NEXT:   objc-arc-contract
+; GCN-O3-GISEL-NEXT: pre-isel-intrinsic-lowering
+; GCN-O3-GISEL-NEXT: function
+; GCN-O3-GISEL-NEXT:   expand-ir-insts<O3>
+; GCN-O3-GISEL-NEXT: amdgpu-remove-incompatible-functions
+; GCN-O3-GISEL-NEXT: amdgpu-printf-runtime-binding
+; GCN-O3-GISEL-NEXT: amdgpu-lower-ctor-dtor
+; GCN-O3-GISEL-NEXT: function
+; GCN-O3-GISEL-NEXT:   amdgpu-image-intrinsic-opt
+; GCN-O3-GISEL-NEXT:   amdgpu-uniform-intrinsic-combine
+; GCN-O3-GISEL-NEXT: expand-variadics
+; GCN-O3-GISEL-NEXT: amdgpu-always-inline
+; GCN-O3-GISEL-NEXT: always-inline
+; GCN-O3-GISEL-NEXT: amdgpu-export-kernel-runtime-handles
+; GCN-O3-GISEL-NEXT: amdgpu-lower-exec-sync
+; GCN-O3-GISEL-NEXT: amdgpu-sw-lower-lds
+; GCN-O3-GISEL-NEXT: amdgpu-lower-module-lds
+; GCN-O3-GISEL-NEXT: function
+; GCN-O3-GISEL-NEXT:   amdgpu-atomic-optimizer
+; GCN-O3-GISEL-NEXT:   atomic-expand
+; GCN-O3-GISEL-NEXT:   amdgpu-promote-alloca
+; GCN-O3-GISEL-NEXT:   separate-const-offset-from-gep<>
+; GCN-O3-GISEL-NEXT:   slsr
+; GCN-O3-GISEL-NEXT:   gvn<>
+; GCN-O3-GISEL-NEXT:   nary-reassociate
+; GCN-O3-GISEL-NEXT:   early-cse<>
+; GCN-O3-GISEL-NEXT:   amdgpu-codegenprepare
+; GCN-O3-GISEL-NEXT:   loop-mssa
+; GCN-O3-GISEL-NEXT:     licm<allowspeculation>
+; GCN-O3-GISEL-NEXT:   verify
+; GCN-O3-GISEL-NEXT:   loop
+; GCN-O3-GISEL-NEXT:     canon-freeze
+; GCN-O3-GISEL-NEXT:     loop-reduce
+; GCN-O3-GISEL-NEXT:   unreachableblockelim
+; GCN-O3-GISEL-NEXT:   consthoist
+; GCN-O3-GISEL-NEXT:   replace-with-veclib
+; GCN-O3-GISEL-NEXT:   partially-inline-libcalls
+; GCN-O3-GISEL-NEXT:   ee-instrument<post-inline>
+; GCN-O3-GISEL-NEXT:   scalarize-masked-mem-intrin
+; GCN-O3-GISEL-NEXT:   expand-reductions
+; GCN-O3-GISEL-NEXT:   gvn<>
+; GCN-O3-GISEL-NEXT: amdgpu-preload-kernel-arguments
+; GCN-O3-GISEL-NEXT: function
+; GCN-O3-GISEL-NEXT:   amdgpu-lower-kernel-arguments
+; GCN-O3-GISEL-NEXT:   codegenprepare
+; GCN-O3-GISEL-NEXT:   load-store-vectorizer
+; GCN-O3-GISEL-NEXT: amdgpu-lower-buffer-fat-pointers
+; GCN-O3-GISEL-NEXT: amdgpu-lower-intrinsics
+; GCN-O3-GISEL-NEXT: cgscc
+; GCN-O3-GISEL-NEXT:   function
+; GCN-O3-GISEL-NEXT:     lower-switch
+; GCN-O3-GISEL-NEXT:     lower-invoke
+; GCN-O3-GISEL-NEXT:     unreachableblockelim
+; GCN-O3-GISEL-NEXT:     flatten-cfg
+; GCN-O3-GISEL-NEXT:     sink
+; GCN-O3-GISEL-NEXT:     amdgpu-late-codegenprepare
+; GCN-O3-GISEL-NEXT:     amdgpu-unify-divergent-exit-nodes
+; GCN-O3-GISEL-NEXT:     fix-irreducible
+; GCN-O3-GISEL-NEXT:     unify-loop-exits
+; GCN-O3-GISEL-NEXT:     StructurizeCFGPass
+; GCN-O3-GISEL-NEXT:     amdgpu-annotate-uniform
+; GCN-O3-GISEL-NEXT:     si-annotate-control-flow
+; GCN-O3-GISEL-NEXT:     amdgpu-rewrite-undef-for-phi
+; GCN-O3-GISEL-NEXT: amdgpu-perf-hint
+; GCN-O3-GISEL-NEXT: cgscc
+; GCN-O3-GISEL-NEXT:   function
+; GCN-O3-GISEL-NEXT:     inline-asm-prepare
+; GCN-O3-GISEL-NEXT:     safe-stack
+; GCN-O3-GISEL-NEXT:     stack-protector
+; GCN-O3-GISEL-NEXT:     verify
+; GCN-O3-GISEL-NEXT: amdgpu-asm-printer-begin
+; GCN-O3-GISEL-NEXT: cgscc
+; GCN-O3-GISEL-NEXT:   function
+; GCN-O3-GISEL-NEXT:     machine-function
+; GCN-O3-GISEL-NEXT:       ir-translator
+; GCN-O3-GISEL-NEXT:       amdgpu-prelegalizer-combiner
+; GCN-O3-GISEL-NEXT:       localizer
+; GCN-O3-GISEL-NEXT:       legalizer
+; GCN-O3-GISEL-NEXT:       amdgpu-postlegalizer-combiner
+; GCN-O3-GISEL-NEXT:       amdgpu-global-isel-divergence-lowering
+; GCN-O3-GISEL-NEXT:       amdgpu-reg-bank-select
+; GCN-O3-GISEL-NEXT:       amdgpu-reg-bank-legalize
+; GCN-O3-GISEL-NEXT:       amdgpu-regbank-combiner
+; GCN-O3-GISEL-NEXT:       instruction-select
+; GCN-O3-GISEL-NEXT:       ResetMachineFunctionPass
+; GCN-O3-GISEL-NEXT:       finalize-isel
+; GCN-O3-GISEL-NEXT:       early-tailduplication
+; GCN-O3-GISEL-NEXT:       opt-phis
+; GCN-O3-GISEL-NEXT:       stack-coloring
+; GCN-O3-GISEL-NEXT:       localstackalloc
+; GCN-O3-GISEL-NEXT:       dead-mi-elimination
+; GCN-O3-GISEL-NEXT:       early-machinelicm
+; GCN-O3-GISEL-NEXT:       machine-cse
+; GCN-O3-GISEL-NEXT:       machine-sink
+; GCN-O3-GISEL-NEXT:       peephole-opt
+; GCN-O3-GISEL-NEXT:       dead-mi-elimination
+; GCN-O3-GISEL-NEXT:       si-fold-operands
+; GCN-O3-GISEL-NEXT:       gcn-dpp-combine
+; GCN-O3-GISEL-NEXT:       si-load-store-opt
+; GCN-O3-GISEL-NEXT:       si-peephole-sdwa
+; GCN-O3-GISEL-NEXT:       early-machinelicm
+; GCN-O3-GISEL-NEXT:       machine-cse
+; GCN-O3-GISEL-NEXT:       si-fold-operands
+; GCN-O3-GISEL-NEXT:       dead-mi-elimination
+; GCN-O3-GISEL-NEXT:       si-shrink-instructions
+; GCN-O3-GISEL-NEXT: require<reg-usage>
+; GCN-O3-GISEL-NEXT: cgscc
+; GCN-O3-GISEL-NEXT:   function
+; GCN-O3-GISEL-NEXT:     machine-function
+; GCN-O3-GISEL-NEXT:       reg-usage-propagation
+; GCN-O3-GISEL-NEXT:       amdgpu-prepare-agpr-alloc
+; GCN-O3-GISEL-NEXT:       detect-dead-lanes
+; GCN-O3-GISEL-NEXT:       dead-mi-elimination
+; GCN-O3-GISEL-NEXT:       init-undef
+; GCN-O3-GISEL-NEXT:       process-imp-defs
+; GCN-O3-GISEL-NEXT:       unreachable-mbb-elimination
+; GCN-O3-GISEL-NEXT:       require<live-vars>
+; GCN-O3-GISEL-NEXT:       si-opt-vgpr-liverange
+; GCN-O3-GISEL-NEXT:       require<machine-loops>
+; GCN-O3-GISEL-NEXT:       phi-node-elimination
+; GCN-O3-GISEL-NEXT:       si-lower-control-flow
+; GCN-O3-GISEL-NEXT:       two-address-instruction
+; GCN-O3-GISEL-NEXT:       register-coalescer
+; GCN-O3-GISEL-NEXT:       rename-independent-subregs
+; GCN-O3-GISEL-NEXT:       amdgpu-rewrite-partial-reg-uses
+; GCN-O3-GISEL-NEXT:       machine-scheduler
+; GCN-O3-GISEL-NEXT:       amdgpu-pre-ra-optimizations
+; GCN-O3-GISEL-NEXT:       si-wqm
+; GCN-O3-GISEL-NEXT:       si-optimize-exec-masking-pre-ra
+; GCN-O3-GISEL-NEXT:       si-form-memory-clauses
+; GCN-O3-GISEL-NEXT:       amdgpu-pre-ra-long-branch-reg
+; GCN-O3-GISEL-NEXT:       greedy<sgpr>
+; GCN-O3-GISEL-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O3-GISEL-NEXT:       stack-slot-coloring
+; GCN-O3-GISEL-NEXT:       si-lower-sgpr-spills
+; GCN-O3-GISEL-NEXT:       si-pre-allocate-wwm-regs
+; GCN-O3-GISEL-NEXT:       greedy<wwm>
+; GCN-O3-GISEL-NEXT:       si-lower-wwm-copies
+; GCN-O3-GISEL-NEXT:       virt-reg-rewriter<no-clear-vregs>
+; GCN-O3-GISEL-NEXT:       amdgpu-reserve-wwm-regs
+; GCN-O3-GISEL-NEXT:       greedy<vgpr>
+; GCN-O3-GISEL-NEXT:       amdgpu-nsa-reassign
+; GCN-O3-GISEL-NEXT:       amdgpu-rewrite-agpr-copy-mfma
+; GCN-O3-GISEL-NEXT:       virt-reg-rewriter
+; GCN-O3-GISEL-NEXT:       amdgpu-mark-last-scratch-load
+; GCN-O3-GISEL-NEXT:       stack-slot-coloring
+; GCN-O3-GISEL-NEXT:       machine-cp
+; GCN-O3-GISEL-NEXT:       machinelicm
+; GCN-O3-GISEL-NEXT:       si-fix-vgpr-copies
+; GCN-O3-GISEL-NEXT:       si-optimize-exec-masking
+; GCN-O3-GISEL-NEXT:       remove-redundant-debug-values
+; GCN-O3-GISEL-NEXT:       fixup-statepoint-caller-saved
+; GCN-O3-GISEL-NEXT:       postra-machine-sink
+; GCN-O3-GISEL-NEXT:       shrink-wrap
+; GCN-O3-GISEL-NEXT:       prolog-epilog
+; GCN-O3-GISEL-NEXT:       machine-latecleanup
+; GCN-O3-GISEL-NEXT:       branch-folder
+; GCN-O3-GISEL-NEXT:       tailduplication
+; GCN-O3-GISEL-NEXT:       machine-cp
+; GCN-O3-GISEL-NEXT:       post-ra-pseudos
+; GCN-O3-GISEL-NEXT:       si-shrink-instructions
+; GCN-O3-GISEL-NEXT:       si-post-ra-bundler
+; GCN-O3-GISEL-NEXT:       postmisched
+; GCN-O3-GISEL-NEXT:       block-placement
+; GCN-O3-GISEL-NEXT:       fentry-insert
+; GCN-O3-GISEL-NEXT:       xray-instrumentation
+; GCN-O3-GISEL-NEXT:       gcn-create-vopd
+; GCN-O3-GISEL-NEXT:       si-memory-legalizer
+; GCN-O3-GISEL-NEXT:       si-insert-waitcnts
+; GCN-O3-GISEL-NEXT:       si-mode-register
+; GCN-O3-GISEL-NEXT:       si-insert-hard-clauses
+; GCN-O3-GISEL-NEXT:       si-late-branch-lowering
+; GCN-O3-GISEL-NEXT:       si-pre-emit-peephole
+; GCN-O3-GISEL-NEXT:       post-RA-hazard-rec
+; GCN-O3-GISEL-NEXT:       amdgpu-wait-sgpr-hazards
+; GCN-O3-GISEL-NEXT:       amdgpu-lower-vgpr-encoding
+; GCN-O3-GISEL-NEXT:       amdgpu-insert-delay-alu
+; GCN-O3-GISEL-NEXT:       branch-relaxation
+; GCN-O3-GISEL-NEXT:       reg-usage-collector
+; GCN-O3-GISEL-NEXT:       remove-loads-into-fake-uses
+; GCN-O3-GISEL-NEXT:       live-debug-values
+; GCN-O3-GISEL-NEXT:       machine-sanmd
+; GCN-O3-GISEL-NEXT:       amdgpu-preload-kern-arg-prolog
+; GCN-O3-GISEL-NEXT:       stack-frame-layout
+; GCN-O3-GISEL-NEXT:       amdgpu-asm-printer
+; GCN-O3-GISEL-NEXT:     free-machine-function
+; GCN-O3-GISEL-NEXT: amdgpu-asm-printer-end
 
 define void @empty() {
   ret void


        


More information about the llvm-commits mailing list