blob: c49b2b927bd3185f507712997b5e1a24c32fe5b8 [file]
; RUN: llc -enable-new-pm -mtriple=amdgcn--amdhsa -O0 -print-pipeline-passes < %s 2>&1 \
; RUN: | tr ',' '\n' | FileCheck -check-prefix=GCN-O0 %s
; RUN: llc -enable-new-pm -mtriple=amdgcn--amdhsa -print-pipeline-passes < %s 2>&1 \
; RUN: | tr ',' '\n' | FileCheck -check-prefix=GCN-O2 %s
; RUN: llc -O3 -enable-new-pm -mtriple=amdgcn--amdhsa -print-pipeline-passes < %s 2>&1 \
; RUN: | tr ',' '\n' | FileCheck -check-prefix=GCN-O3 %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(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(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(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(function(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: require<uniformity>
; GCN-O0-NEXT: inline-asm-prepare
; GCN-O0-NEXT: safe-stack
; GCN-O0-NEXT: stack-protector
; GCN-O0-NEXT: verify))
; GCN-O0-NEXT: cgscc(function(machine-function(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(function(machine-function(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: verify)
; GCN-O0-NEXT: free-machine-function))
; 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(objc-arc-contract)
; GCN-O2-NEXT: pre-isel-intrinsic-lowering
; GCN-O2-NEXT: function(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(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(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(licm<allowspeculation>)
; GCN-O2-NEXT: verify
; GCN-O2-NEXT: loop(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(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(function(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(function(require<uniformity>
; GCN-O2-NEXT: inline-asm-prepare
; GCN-O2-NEXT: safe-stack
; GCN-O2-NEXT: stack-protector
; GCN-O2-NEXT: verify))
; GCN-O2-NEXT: cgscc(function(machine-function(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(function(machine-function(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: verify)
; GCN-O2-NEXT: free-machine-function))
; 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(objc-arc-contract)
; GCN-O3-NEXT: pre-isel-intrinsic-lowering
; GCN-O3-NEXT: function(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(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(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(licm<allowspeculation>)
; GCN-O3-NEXT: verify
; GCN-O3-NEXT: loop(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(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(function(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(function(require<uniformity>
; GCN-O3-NEXT: inline-asm-prepare
; GCN-O3-NEXT: safe-stack
; GCN-O3-NEXT: stack-protector
; GCN-O3-NEXT: verify))
; GCN-O3-NEXT: cgscc(function(machine-function(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(function(machine-function(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: verify)
; GCN-O3-NEXT: free-machine-function))
define void @empty() {
ret void
}