| ; RUN: llc -enable-new-pm -mtriple=x86_64 -O0 -print-pipeline-passes < %s 2>&1 \ |
| ; RUN: | tr ',' '\n' | FileCheck -check-prefix=O0 %s |
| |
| ; RUN: llc -enable-new-pm -mtriple=x86_64 -O2 -print-pipeline-passes < %s 2>&1 \ |
| ; RUN: | tr ',' '\n' | FileCheck -check-prefix=O2 %s |
| |
| ; RUN: llc -enable-new-pm -mtriple=x86_64-windows -O0 -print-pipeline-passes < %s 2>&1 \ |
| ; RUN: | tr ',' '\n' | FileCheck -check-prefix=O0-WINDOWS %s |
| |
| ; RUN: llc -enable-new-pm -mtriple=x86_64-windows -O3 -print-pipeline-passes < %s 2>&1 \ |
| ; RUN: | tr ',' '\n' | FileCheck -check-prefix=O3-WINDOWS %s |
| |
| ; O0: require<MachineModuleAnalysis> |
| ; O0-NEXT: require<profile-summary> |
| ; O0-NEXT: require<collector-metadata> |
| ; O0-NEXT: require<runtime-libcall-info> |
| ; O0-NEXT: require<libcall-lowering-info> |
| ; O0-NEXT: pre-isel-intrinsic-lowering |
| ; O0-NEXT: function(expand-ir-insts<O0> |
| ; O0-NEXT: atomic-expand |
| ; O0-NEXT: x86-lower-amx-intrinsics |
| ; O0-NEXT: x86-lower-amx-type |
| ; O0-NEXT: verify |
| ; O0-NEXT: gc-lowering) |
| ; O0-NEXT: shadow-stack-gc-lowering |
| ; O0-NEXT: function(unreachableblockelim |
| ; O0-NEXT: ee-instrument<post-inline> |
| ; O0-NEXT: scalarize-masked-mem-intrin |
| ; O0-NEXT: expand-reductions |
| ; O0-NEXT: indirectbr-expand |
| ; O0-NEXT: dwarf-eh-prepare |
| ; O0-NEXT: inline-asm-prepare |
| ; O0-NEXT: safe-stack |
| ; O0-NEXT: stack-protector |
| ; O0-NEXT: verify) |
| ; O0-NEXT: x86-asm-printer-begin |
| ; O0-NEXT: function(machine-function(x86-isel |
| ; O0-NEXT: x86-global-base-reg |
| ; O0-NEXT: x86-argument-stack-slot |
| ; O0-NEXT: finalize-isel |
| ; O0-NEXT: localstackalloc |
| ; O0-NEXT: x86-suppress-apx-for-relocation |
| ; O0-NEXT: x86-slh |
| ; O0-NEXT: x86-flags-copy-lowering |
| ; O0-NEXT: x86-dyn-alloca-expander |
| ; O0-NEXT: x86-fast-pre-tile-config |
| ; O0-NEXT: phi-node-elimination |
| ; O0-NEXT: two-address-instruction |
| ; O0-NEXT: regallocfast |
| ; O0-NEXT: x86-lower-tile-copy |
| ; O0-NEXT: x86-fp-stackifier |
| ; O0-NEXT: remove-redundant-debug-values |
| ; O0-NEXT: fixup-statepoint-caller-saved |
| ; O0-NEXT: prolog-epilog |
| ; O0-NEXT: post-ra-pseudos |
| ; O0-NEXT: x86-expand-pseudo |
| ; O0-NEXT: fentry-insert |
| ; O0-NEXT: xray-instrumentation |
| ; O0-NEXT: patchable-function |
| ; O0-NEXT: x86-indirect-branch-tracking |
| ; O0-NEXT: x86-insert-vzeroupper |
| ; O0-NEXT: x86-compress-evex |
| ; O0-NEXT: x86-insert-x87-wait |
| ; O0-NEXT: FuncletLayoutPass |
| ; O0-NEXT: remove-loads-into-fake-uses |
| ; O0-NEXT: StackMapLivenessPass |
| ; O0-NEXT: live-debug-values<emit-debug-entry-values> |
| ; O0-NEXT: machine-sanmd |
| ; O0-NEXT: stack-frame-layout |
| ; O0-NEXT: x86-seses |
| ; O0-NEXT: x86-return-thunks |
| ; O0-NEXT: x86-lvi-ret |
| ; O0-NEXT: verify |
| ; O0-NEXT: x86-asm-printer) |
| ; O0-NEXT: free-machine-function) |
| ; O0-NEXT: x86-asm-printer-end |
| |
| ; O2: require<MachineModuleAnalysis> |
| ; O2-NEXT: require<profile-summary> |
| ; O2-NEXT: require<collector-metadata> |
| ; O2-NEXT: require<runtime-libcall-info> |
| ; O2-NEXT: require<libcall-lowering-info> |
| ; O2-NEXT: function(objc-arc-contract) |
| ; O2-NEXT: pre-isel-intrinsic-lowering |
| ; O2-NEXT: function(expand-ir-insts<O2> |
| ; O2-NEXT: atomic-expand |
| ; O2-NEXT: x86-lower-amx-intrinsics |
| ; O2-NEXT: x86-lower-amx-type |
| ; O2-NEXT: verify |
| ; O2-NEXT: loop(canon-freeze |
| ; O2-NEXT: loop-reduce) |
| ; O2-NEXT: gc-lowering) |
| ; O2-NEXT: shadow-stack-gc-lowering |
| ; O2-NEXT: function(unreachableblockelim |
| ; O2-NEXT: consthoist |
| ; O2-NEXT: replace-with-veclib |
| ; O2-NEXT: partially-inline-libcalls |
| ; O2-NEXT: ee-instrument<post-inline> |
| ; O2-NEXT: scalarize-masked-mem-intrin |
| ; O2-NEXT: expand-reductions |
| ; O2-NEXT: interleaved-access |
| ; O2-NEXT: x86-partial-reduction |
| ; O2-NEXT: indirectbr-expand |
| ; O2-NEXT: codegenprepare |
| ; O2-NEXT: dwarf-eh-prepare |
| ; O2-NEXT: inline-asm-prepare |
| ; O2-NEXT: safe-stack |
| ; O2-NEXT: stack-protector |
| ; O2-NEXT: verify) |
| ; O2-NEXT: x86-asm-printer-begin |
| ; O2-NEXT: function(machine-function(x86-isel |
| ; O2-NEXT: x86-cleanup-local-dynamic-tls |
| ; O2-NEXT: x86-global-base-reg |
| ; O2-NEXT: x86-argument-stack-slot |
| ; O2-NEXT: finalize-isel |
| ; O2-NEXT: x86-domain-reassignment |
| ; O2-NEXT: early-tailduplication |
| ; O2-NEXT: opt-phis |
| ; O2-NEXT: stack-coloring |
| ; O2-NEXT: localstackalloc |
| ; O2-NEXT: dead-mi-elimination |
| ; O2-NEXT: early-ifcvt |
| ; O2-NEXT: x86-cmov-conversion |
| ; O2-NEXT: early-machinelicm |
| ; O2-NEXT: machine-cse |
| ; O2-NEXT: machine-sink |
| ; O2-NEXT: peephole-opt |
| ; O2-NEXT: dead-mi-elimination |
| ; O2-NEXT: LiveRangeShrinkPass |
| ; O2-NEXT: x86-fixup-setcc |
| ; O2-NEXT: x86-cf-opt |
| ; O2-NEXT: x86-avoid-sfb |
| ; O2-NEXT: x86-suppress-apx-for-relocation |
| ; O2-NEXT: x86-slh |
| ; O2-NEXT: x86-flags-copy-lowering |
| ; O2-NEXT: x86-dyn-alloca-expander |
| ; O2-NEXT: x86-pre-tile-config |
| ; O2-NEXT: detect-dead-lanes |
| ; O2-NEXT: init-undef |
| ; O2-NEXT: process-imp-defs |
| ; O2-NEXT: unreachable-mbb-elimination |
| ; O2-NEXT: require<live-vars> |
| ; O2-NEXT: require<machine-loops> |
| ; O2-NEXT: phi-node-elimination |
| ; O2-NEXT: two-address-instruction |
| ; O2-NEXT: register-coalescer |
| ; O2-NEXT: rename-independent-subregs |
| ; O2-NEXT: machine-scheduler |
| ; O2-NEXT: greedy<all> |
| ; O2-NEXT: virt-reg-rewriter |
| ; O2-NEXT: stack-slot-coloring |
| ; O2-NEXT: stack-slot-coloring |
| ; O2-NEXT: machine-cp |
| ; O2-NEXT: machinelicm |
| ; O2-NEXT: x86-lower-tile-copy |
| ; O2-NEXT: x86-fp-stackifier |
| ; O2-NEXT: x86-lvi-load |
| ; O2-NEXT: remove-redundant-debug-values |
| ; O2-NEXT: fixup-statepoint-caller-saved |
| ; O2-NEXT: postra-machine-sink |
| ; O2-NEXT: shrink-wrap |
| ; O2-NEXT: prolog-epilog |
| ; O2-NEXT: machine-latecleanup |
| ; O2-NEXT: branch-folder |
| ; O2-NEXT: tailduplication |
| ; O2-NEXT: machine-cp |
| ; O2-NEXT: post-ra-pseudos |
| ; O2-NEXT: x86-expand-pseudo |
| ; O2-NEXT: post-RA-sched |
| ; O2-NEXT: block-placement |
| ; O2-NEXT: fentry-insert |
| ; O2-NEXT: xray-instrumentation |
| ; O2-NEXT: patchable-function |
| ; O2-NEXT: BreakFalseDepsPass |
| ; O2-NEXT: x86-indirect-branch-tracking |
| ; O2-NEXT: x86-insert-vzeroupper |
| ; O2-NEXT: x86-fixup-bw-insts |
| ; O2-NEXT: x86-fixup-leas |
| ; O2-NEXT: x86-fixup-inst-tuning |
| ; O2-NEXT: x86-fixup-inst-tuning |
| ; O2-NEXT: x86-compress-evex |
| ; O2-NEXT: x86-insert-x87-wait |
| ; O2-NEXT: FuncletLayoutPass |
| ; O2-NEXT: remove-loads-into-fake-uses |
| ; O2-NEXT: StackMapLivenessPass |
| ; O2-NEXT: live-debug-values<emit-debug-entry-values> |
| ; O2-NEXT: machine-sanmd |
| ; O2-NEXT: stack-frame-layout |
| ; O2-NEXT: x86-seses |
| ; O2-NEXT: x86-return-thunks |
| ; O2-NEXT: x86-lvi-ret |
| ; O2-NEXT: verify |
| ; O2-NEXT: x86-asm-printer) |
| ; O2-NEXT: free-machine-function) |
| ; O2-NEXT: x86-asm-printer-end |
| |
| ; O0-WINDOWS: require<MachineModuleAnalysis> |
| ; O0-WINDOWS-NEXT: require<profile-summary> |
| ; O0-WINDOWS-NEXT: require<collector-metadata> |
| ; O0-WINDOWS-NEXT: require<runtime-libcall-info> |
| ; O0-WINDOWS-NEXT: require<libcall-lowering-info> |
| ; O0-WINDOWS-NEXT: pre-isel-intrinsic-lowering |
| ; O0-WINDOWS-NEXT: function(expand-ir-insts<O0> |
| ; O0-WINDOWS-NEXT: atomic-expand |
| ; O0-WINDOWS-NEXT: x86-lower-amx-intrinsics |
| ; O0-WINDOWS-NEXT: x86-lower-amx-type |
| ; O0-WINDOWS-NEXT: verify |
| ; O0-WINDOWS-NEXT: gc-lowering) |
| ; O0-WINDOWS-NEXT: shadow-stack-gc-lowering |
| ; O0-WINDOWS-NEXT: function(unreachableblockelim |
| ; O0-WINDOWS-NEXT: ee-instrument<post-inline> |
| ; O0-WINDOWS-NEXT: scalarize-masked-mem-intrin |
| ; O0-WINDOWS-NEXT: expand-reductions |
| ; O0-WINDOWS-NEXT: indirectbr-expand |
| ; O0-WINDOWS-NEXT: cfguard |
| ; O0-WINDOWS-NEXT: win-eh-prepare |
| ; O0-WINDOWS-NEXT: dwarf-eh-prepare |
| ; O0-WINDOWS-NEXT: inline-asm-prepare |
| ; O0-WINDOWS-NEXT: safe-stack |
| ; O0-WINDOWS-NEXT: stack-protector |
| ; O0-WINDOWS-NEXT: verify) |
| ; O0-WINDOWS-NEXT: x86-asm-printer-begin |
| ; O0-WINDOWS-NEXT: function(machine-function(x86-isel |
| ; O0-WINDOWS-NEXT: x86-global-base-reg |
| ; O0-WINDOWS-NEXT: x86-argument-stack-slot |
| ; O0-WINDOWS-NEXT: finalize-isel |
| ; O0-WINDOWS-NEXT: localstackalloc |
| ; O0-WINDOWS-NEXT: x86-suppress-apx-for-relocation |
| ; O0-WINDOWS-NEXT: x86-slh |
| ; O0-WINDOWS-NEXT: x86-flags-copy-lowering |
| ; O0-WINDOWS-NEXT: x86-dyn-alloca-expander |
| ; O0-WINDOWS-NEXT: x86-fast-pre-tile-config |
| ; O0-WINDOWS-NEXT: phi-node-elimination |
| ; O0-WINDOWS-NEXT: two-address-instruction |
| ; O0-WINDOWS-NEXT: regallocfast |
| ; O0-WINDOWS-NEXT: x86-lower-tile-copy |
| ; O0-WINDOWS-NEXT: x86-fp-stackifier |
| ; O0-WINDOWS-NEXT: remove-redundant-debug-values |
| ; O0-WINDOWS-NEXT: fixup-statepoint-caller-saved |
| ; O0-WINDOWS-NEXT: prolog-epilog |
| ; O0-WINDOWS-NEXT: post-ra-pseudos |
| ; O0-WINDOWS-NEXT: x86-expand-pseudo |
| ; O0-WINDOWS-NEXT: fentry-insert |
| ; O0-WINDOWS-NEXT: xray-instrumentation |
| ; O0-WINDOWS-NEXT: patchable-function |
| ; O0-WINDOWS-NEXT: x86-indirect-branch-tracking |
| ; O0-WINDOWS-NEXT: x86-insert-vzeroupper |
| ; O0-WINDOWS-NEXT: x86-compress-evex |
| ; O0-WINDOWS-NEXT: x86-insert-x87-wait |
| ; O0-WINDOWS-NEXT: FuncletLayoutPass |
| ; O0-WINDOWS-NEXT: remove-loads-into-fake-uses |
| ; O0-WINDOWS-NEXT: StackMapLivenessPass |
| ; O0-WINDOWS-NEXT: live-debug-values<emit-debug-entry-values> |
| ; O0-WINDOWS-NEXT: machine-sanmd |
| ; O0-WINDOWS-NEXT: stack-frame-layout |
| ; O0-WINDOWS-NEXT: x86-seses |
| ; O0-WINDOWS-NEXT: x86-return-thunks |
| ; O0-WINDOWS-NEXT: x86-avoid-trailing-call |
| ; O0-WINDOWS-NEXT: x86-lvi-ret |
| ; O0-WINDOWS-NEXT: x86-wineh-unwindv2 |
| ; O0-WINDOWS-NEXT: verify |
| ; O0-WINDOWS-NEXT: x86-asm-printer) |
| ; O0-WINDOWS-NEXT: free-machine-function) |
| ; O0-WINDOWS-NEXT: x86-asm-printer-end |
| |
| ; O3-WINDOWS: require<MachineModuleAnalysis> |
| ; O3-WINDOWS-NEXT: require<profile-summary> |
| ; O3-WINDOWS-NEXT: require<collector-metadata> |
| ; O3-WINDOWS-NEXT: require<runtime-libcall-info> |
| ; O3-WINDOWS-NEXT: require<libcall-lowering-info> |
| ; O3-WINDOWS-NEXT: function(objc-arc-contract) |
| ; O3-WINDOWS-NEXT: pre-isel-intrinsic-lowering |
| ; O3-WINDOWS-NEXT: function(expand-ir-insts<O3> |
| ; O3-WINDOWS-NEXT: atomic-expand |
| ; O3-WINDOWS-NEXT: x86-lower-amx-intrinsics |
| ; O3-WINDOWS-NEXT: x86-lower-amx-type |
| ; O3-WINDOWS-NEXT: verify |
| ; O3-WINDOWS-NEXT: loop(canon-freeze |
| ; O3-WINDOWS-NEXT: loop-reduce) |
| ; O3-WINDOWS-NEXT: gc-lowering) |
| ; O3-WINDOWS-NEXT: shadow-stack-gc-lowering |
| ; O3-WINDOWS-NEXT: function(unreachableblockelim |
| ; O3-WINDOWS-NEXT: consthoist |
| ; O3-WINDOWS-NEXT: replace-with-veclib |
| ; O3-WINDOWS-NEXT: partially-inline-libcalls |
| ; O3-WINDOWS-NEXT: ee-instrument<post-inline> |
| ; O3-WINDOWS-NEXT: scalarize-masked-mem-intrin |
| ; O3-WINDOWS-NEXT: expand-reductions |
| ; O3-WINDOWS-NEXT: interleaved-access |
| ; O3-WINDOWS-NEXT: x86-partial-reduction |
| ; O3-WINDOWS-NEXT: indirectbr-expand |
| ; O3-WINDOWS-NEXT: cfguard |
| ; O3-WINDOWS-NEXT: codegenprepare |
| ; O3-WINDOWS-NEXT: win-eh-prepare |
| ; O3-WINDOWS-NEXT: dwarf-eh-prepare |
| ; O3-WINDOWS-NEXT: inline-asm-prepare |
| ; O3-WINDOWS-NEXT: safe-stack |
| ; O3-WINDOWS-NEXT: stack-protector |
| ; O3-WINDOWS-NEXT: verify) |
| ; O3-WINDOWS-NEXT: x86-asm-printer-begin |
| ; O3-WINDOWS-NEXT: function(machine-function(x86-isel |
| ; O3-WINDOWS-NEXT: x86-global-base-reg |
| ; O3-WINDOWS-NEXT: x86-argument-stack-slot |
| ; O3-WINDOWS-NEXT: finalize-isel |
| ; O3-WINDOWS-NEXT: x86-domain-reassignment |
| ; O3-WINDOWS-NEXT: early-tailduplication |
| ; O3-WINDOWS-NEXT: opt-phis |
| ; O3-WINDOWS-NEXT: stack-coloring |
| ; O3-WINDOWS-NEXT: localstackalloc |
| ; O3-WINDOWS-NEXT: dead-mi-elimination |
| ; O3-WINDOWS-NEXT: early-ifcvt |
| ; O3-WINDOWS-NEXT: x86-cmov-conversion |
| ; O3-WINDOWS-NEXT: early-machinelicm |
| ; O3-WINDOWS-NEXT: machine-cse |
| ; O3-WINDOWS-NEXT: machine-sink |
| ; O3-WINDOWS-NEXT: peephole-opt |
| ; O3-WINDOWS-NEXT: dead-mi-elimination |
| ; O3-WINDOWS-NEXT: LiveRangeShrinkPass |
| ; O3-WINDOWS-NEXT: x86-fixup-setcc |
| ; O3-WINDOWS-NEXT: x86-cf-opt |
| ; O3-WINDOWS-NEXT: x86-avoid-sfb |
| ; O3-WINDOWS-NEXT: x86-suppress-apx-for-relocation |
| ; O3-WINDOWS-NEXT: x86-slh |
| ; O3-WINDOWS-NEXT: x86-flags-copy-lowering |
| ; O3-WINDOWS-NEXT: x86-dyn-alloca-expander |
| ; O3-WINDOWS-NEXT: x86-pre-tile-config |
| ; O3-WINDOWS-NEXT: detect-dead-lanes |
| ; O3-WINDOWS-NEXT: init-undef |
| ; O3-WINDOWS-NEXT: process-imp-defs |
| ; O3-WINDOWS-NEXT: unreachable-mbb-elimination |
| ; O3-WINDOWS-NEXT: require<live-vars> |
| ; O3-WINDOWS-NEXT: require<machine-loops> |
| ; O3-WINDOWS-NEXT: phi-node-elimination |
| ; O3-WINDOWS-NEXT: two-address-instruction |
| ; O3-WINDOWS-NEXT: register-coalescer |
| ; O3-WINDOWS-NEXT: rename-independent-subregs |
| ; O3-WINDOWS-NEXT: machine-scheduler |
| ; O3-WINDOWS-NEXT: greedy<all> |
| ; O3-WINDOWS-NEXT: virt-reg-rewriter |
| ; O3-WINDOWS-NEXT: stack-slot-coloring |
| ; O3-WINDOWS-NEXT: stack-slot-coloring |
| ; O3-WINDOWS-NEXT: machine-cp |
| ; O3-WINDOWS-NEXT: machinelicm |
| ; O3-WINDOWS-NEXT: x86-lower-tile-copy |
| ; O3-WINDOWS-NEXT: x86-fp-stackifier |
| ; O3-WINDOWS-NEXT: x86-lvi-load |
| ; O3-WINDOWS-NEXT: remove-redundant-debug-values |
| ; O3-WINDOWS-NEXT: fixup-statepoint-caller-saved |
| ; O3-WINDOWS-NEXT: postra-machine-sink |
| ; O3-WINDOWS-NEXT: shrink-wrap |
| ; O3-WINDOWS-NEXT: prolog-epilog |
| ; O3-WINDOWS-NEXT: machine-latecleanup |
| ; O3-WINDOWS-NEXT: branch-folder |
| ; O3-WINDOWS-NEXT: tailduplication |
| ; O3-WINDOWS-NEXT: machine-cp |
| ; O3-WINDOWS-NEXT: post-ra-pseudos |
| ; O3-WINDOWS-NEXT: x86-expand-pseudo |
| ; O3-WINDOWS-NEXT: post-RA-sched |
| ; O3-WINDOWS-NEXT: block-placement |
| ; O3-WINDOWS-NEXT: fentry-insert |
| ; O3-WINDOWS-NEXT: xray-instrumentation |
| ; O3-WINDOWS-NEXT: patchable-function |
| ; O3-WINDOWS-NEXT: BreakFalseDepsPass |
| ; O3-WINDOWS-NEXT: x86-indirect-branch-tracking |
| ; O3-WINDOWS-NEXT: x86-insert-vzeroupper |
| ; O3-WINDOWS-NEXT: x86-fixup-bw-insts |
| ; O3-WINDOWS-NEXT: x86-fixup-leas |
| ; O3-WINDOWS-NEXT: x86-fixup-inst-tuning |
| ; O3-WINDOWS-NEXT: x86-fixup-inst-tuning |
| ; O3-WINDOWS-NEXT: x86-compress-evex |
| ; O3-WINDOWS-NEXT: x86-insert-x87-wait |
| ; O3-WINDOWS-NEXT: FuncletLayoutPass |
| ; O3-WINDOWS-NEXT: remove-loads-into-fake-uses |
| ; O3-WINDOWS-NEXT: StackMapLivenessPass |
| ; O3-WINDOWS-NEXT: live-debug-values<emit-debug-entry-values> |
| ; O3-WINDOWS-NEXT: machine-sanmd |
| ; O3-WINDOWS-NEXT: stack-frame-layout |
| ; O3-WINDOWS-NEXT: x86-seses |
| ; O3-WINDOWS-NEXT: x86-return-thunks |
| ; O3-WINDOWS-NEXT: x86-avoid-trailing-call |
| ; O3-WINDOWS-NEXT: x86-lvi-ret |
| ; O3-WINDOWS-NEXT: x86-wineh-unwindv2 |
| ; O3-WINDOWS-NEXT: verify |
| ; O3-WINDOWS-NEXT: x86-asm-printer) |
| ; O3-WINDOWS-NEXT: free-machine-function) |
| ; O3-WINDOWS-NEXT: x86-asm-printer-end |