blob: 90b0978e3eb5c29898a419491c100ca03ac88737 [file] [edit]
; 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