| ; 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 |
| } |