; 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 ; O0-NEXT: require ; O0-NEXT: require ; O0-NEXT: require ; O0-NEXT: require ; O0-NEXT: pre-isel-intrinsic-lowering ; O0-NEXT: function(expand-ir-insts ; 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 ; 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: kcfi ; 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 ; 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 ; O2-NEXT: require ; O2-NEXT: require ; O2-NEXT: require ; O2-NEXT: require ; O2-NEXT: function(objc-arc-contract) ; O2-NEXT: pre-isel-intrinsic-lowering ; O2-NEXT: function(expand-ir-insts ; 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 ; 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 ; O2-NEXT: require ; 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 ; 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: kcfi ; O2-NEXT: post-RA-sched ; O2-NEXT: block-placement ; O2-NEXT: fentry-insert ; O2-NEXT: xray-instrumentation ; O2-NEXT: patchable-function ; O2-NEXT: break-false-deps ; 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 ; 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 ; O0-WINDOWS-NEXT: require ; O0-WINDOWS-NEXT: require ; O0-WINDOWS-NEXT: require ; O0-WINDOWS-NEXT: require ; O0-WINDOWS-NEXT: pre-isel-intrinsic-lowering ; O0-WINDOWS-NEXT: function(expand-ir-insts ; 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 ; 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: kcfi ; 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 ; 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 ; O3-WINDOWS-NEXT: require ; O3-WINDOWS-NEXT: require ; O3-WINDOWS-NEXT: require ; O3-WINDOWS-NEXT: require ; O3-WINDOWS-NEXT: function(objc-arc-contract) ; O3-WINDOWS-NEXT: pre-isel-intrinsic-lowering ; O3-WINDOWS-NEXT: function(expand-ir-insts ; 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 ; 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 ; O3-WINDOWS-NEXT: require ; 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 ; 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: kcfi ; 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: break-false-deps ; 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 ; 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