Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / LoongArch / opt-pipeline.ll
blob4e5a5433596dbcb1a1e053170dc5843f7d6163e9
1 ;; When EXPENSIVE_CHECKS are enabled, the machine verifier appears between each
2 ;; pass. Ignore it with 'grep -v'.
3 ; RUN: llc --mtriple=loongarch32 -mattr=+d -O1 --debug-pass=Structure %s -o /dev/null 2>&1 | \
4 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX
5 ; RUN: llc --mtriple=loongarch32 -mattr=+d -O2 --debug-pass=Structure %s -o /dev/null 2>&1 | \
6 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX
7 ; RUN: llc --mtriple=loongarch32 -mattr=+d -O3 --debug-pass=Structure %s -o /dev/null 2>&1 | \
8 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX
9 ; RUN: llc --mtriple=loongarch64 -mattr=+d -O1 --debug-pass=Structure %s -o /dev/null 2>&1 | \
10 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64
11 ; RUN: llc --mtriple=loongarch64 -mattr=+d -O2 --debug-pass=Structure %s -o /dev/null 2>&1 | \
12 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64
13 ; RUN: llc --mtriple=loongarch64 -mattr=+d -O3 --debug-pass=Structure %s -o /dev/null 2>&1 | \
14 ; RUN:   grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64
16 ; REQUIRES: asserts
18 ; LAXX-LABEL: Pass Arguments:
19 ; LAXX-NEXT: Target Library Information
20 ; LAXX-NEXT: Target Pass Configuration
21 ; LAXX-NEXT: Machine Module Information
22 ; LAXX-NEXT: Target Transform Information
23 ; LAXX-NEXT: Type-Based Alias Analysis
24 ; LAXX-NEXT: Scoped NoAlias Alias Analysis
25 ; LAXX-NEXT: Assumption Cache Tracker
26 ; LAXX-NEXT: Profile summary info
27 ; LAXX-NEXT: Create Garbage Collector Module Metadata
28 ; LAXX-NEXT: Machine Branch Probability Analysis
29 ; LAXX-NEXT: Default Regalloc Eviction Advisor
30 ; LAXX-NEXT: Default Regalloc Priority Advisor
31 ; LAXX-NEXT:   ModulePass Manager
32 ; LAXX-NEXT:     Pre-ISel Intrinsic Lowering
33 ; LAXX-NEXT:     FunctionPass Manager
34 ; LAXX-NEXT:       Expand large div/rem
35 ; LAXX-NEXT:       Expand large fp convert
36 ; LAXX-NEXT:       Expand Atomic instructions
37 ; LAXX-NEXT:       Module Verifier
38 ; LAXX-NEXT:       Dominator Tree Construction
39 ; LAXX-NEXT:       Basic Alias Analysis (stateless AA impl)
40 ; LAXX-NEXT:       Natural Loop Information
41 ; LAXX-NEXT:       Canonicalize natural loops
42 ; LAXX-NEXT:       Scalar Evolution Analysis
43 ; LAXX-NEXT:       Loop Pass Manager
44 ; LAXX-NEXT:         Canonicalize Freeze Instructions in Loops
45 ; LAXX-NEXT:         Induction Variable Users
46 ; LAXX-NEXT:         Loop Strength Reduction
47 ; LAXX-NEXT:       Basic Alias Analysis (stateless AA impl)
48 ; LAXX-NEXT:       Function Alias Analysis Results
49 ; LAXX-NEXT:       Merge contiguous icmps into a memcmp
50 ; LAXX-NEXT:       Natural Loop Information
51 ; LAXX-NEXT:       Lazy Branch Probability Analysis
52 ; LAXX-NEXT:       Lazy Block Frequency Analysis
53 ; LAXX-NEXT:       Expand memcmp() to load/stores
54 ; LAXX-NEXT:       Lower Garbage Collection Instructions
55 ; LAXX-NEXT:       Shadow Stack GC Lowering
56 ; LAXX-NEXT:       Lower constant intrinsics
57 ; LAXX-NEXT:       Remove unreachable blocks from the CFG
58 ; LAXX-NEXT:       Natural Loop Information
59 ; LAXX-NEXT:       Post-Dominator Tree Construction
60 ; LAXX-NEXT:       Branch Probability Analysis
61 ; LAXX-NEXT:       Block Frequency Analysis
62 ; LAXX-NEXT:       Constant Hoisting
63 ; LAXX-NEXT:       Replace intrinsics with calls to vector library
64 ; LAXX-NEXT:       Partially inline calls to library functions
65 ; LAXX-NEXT:       Expand vector predication intrinsics
66 ; LAXX-NEXT:       Instrument function entry/exit with calls to e.g. mcount() (post inlining)
67 ; LAXX-NEXT:       Scalarize Masked Memory Intrinsics
68 ; LAXX-NEXT:       Expand reduction intrinsics
69 ; LAXX-NEXT:       Natural Loop Information
70 ; LAXX-NEXT:       TLS Variable Hoist
71 ; LAXX-NEXT:       Type Promotion
72 ; LAXX-NEXT:       CodeGen Prepare
73 ; LAXX-NEXT:       Dominator Tree Construction
74 ; LAXX-NEXT:       Exception handling preparation
75 ; LAXX-NEXT:       Prepare callbr
76 ; LAXX-NEXT:       Safe Stack instrumentation pass
77 ; LAXX-NEXT:       Insert stack protectors
78 ; LAXX-NEXT:       Module Verifier
79 ; LAXX-NEXT:       Basic Alias Analysis (stateless AA impl)
80 ; LAXX-NEXT:       Function Alias Analysis Results
81 ; LAXX-NEXT:       Natural Loop Information
82 ; LAXX-NEXT:       Post-Dominator Tree Construction
83 ; LAXX-NEXT:       Branch Probability Analysis
84 ; LAXX-NEXT:       Assignment Tracking Analysis
85 ; LAXX-NEXT:       Lazy Branch Probability Analysis
86 ; LAXX-NEXT:       Lazy Block Frequency Analysis
87 ; LAXX-NEXT:       LoongArch DAG->DAG Pattern Instruction Selection
88 ; LAXX-NEXT:       Finalize ISel and expand pseudo-instructions
89 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
90 ; LAXX-NEXT:       Early Tail Duplication
91 ; LAXX-NEXT:       Optimize machine instruction PHIs
92 ; LAXX-NEXT:       Slot index numbering
93 ; LAXX-NEXT:       Merge disjoint stack slots
94 ; LAXX-NEXT:       Local Stack Slot Allocation
95 ; LAXX-NEXT:       Remove dead machine instructions
96 ; LAXX-NEXT:       MachineDominator Tree Construction
97 ; LAXX-NEXT:       Machine Natural Loop Construction
98 ; LAXX-NEXT:       Machine Block Frequency Analysis
99 ; LAXX-NEXT:       Early Machine Loop Invariant Code Motion
100 ; LAXX-NEXT:       MachineDominator Tree Construction
101 ; LAXX-NEXT:       Machine Block Frequency Analysis
102 ; LAXX-NEXT:       Machine Common Subexpression Elimination
103 ; LAXX-NEXT:       MachinePostDominator Tree Construction
104 ; LAXX-NEXT:       Machine Cycle Info Analysis
105 ; LAXX-NEXT:       Machine code sinking
106 ; LAXX-NEXT:       Peephole Optimizations
107 ; LAXX-NEXT:       Remove dead machine instructions
108 ; LA64-NEXT:       LoongArch Optimize W Instructions
109 ; LAXX-NEXT:       LoongArch Pre-RA pseudo instruction expansion pass
110 ; LAXX-NEXT:       Detect Dead Lanes
111 ; LAXX-NEXT:       Init Undef Pass
112 ; LAXX-NEXT:       Process Implicit Definitions
113 ; LAXX-NEXT:       Remove unreachable machine basic blocks
114 ; LAXX-NEXT:       Live Variable Analysis
115 ; LAXX-NEXT:       Eliminate PHI nodes for register allocation
116 ; LAXX-NEXT:       Two-Address instruction pass
117 ; LAXX-NEXT:       MachineDominator Tree Construction
118 ; LAXX-NEXT:       Slot index numbering
119 ; LAXX-NEXT:       Live Interval Analysis
120 ; LAXX-NEXT:       Register Coalescer
121 ; LAXX-NEXT:       Rename Disconnected Subregister Components
122 ; LAXX-NEXT:       Machine Instruction Scheduler
123 ; LAXX-NEXT:       LoongArch Dead register definitions
124 ; LAXX-NEXT:       Machine Block Frequency Analysis
125 ; LAXX-NEXT:       Debug Variable Analysis
126 ; LAXX-NEXT:       Live Stack Slot Analysis
127 ; LAXX-NEXT:       Virtual Register Map
128 ; LAXX-NEXT:       Live Register Matrix
129 ; LAXX-NEXT:       Bundle Machine CFG Edges
130 ; LAXX-NEXT:       Spill Code Placement Analysis
131 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
132 ; LAXX-NEXT:       Machine Optimization Remark Emitter
133 ; LAXX-NEXT:       Greedy Register Allocator
134 ; LAXX-NEXT:       Virtual Register Rewriter
135 ; LAXX-NEXT:       Register Allocation Pass Scoring
136 ; LAXX-NEXT:       Stack Slot Coloring
137 ; LAXX-NEXT:       Machine Copy Propagation Pass
138 ; LAXX-NEXT:       Machine Loop Invariant Code Motion
139 ; LAXX-NEXT:       Remove Redundant DEBUG_VALUE analysis
140 ; LAXX-NEXT:       Fixup Statepoint Caller Saved
141 ; LAXX-NEXT:       PostRA Machine Sink
142 ; LAXX-NEXT:       Machine Block Frequency Analysis
143 ; LAXX-NEXT:       MachineDominator Tree Construction
144 ; LAXX-NEXT:       MachinePostDominator Tree Construction
145 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
146 ; LAXX-NEXT:       Machine Optimization Remark Emitter
147 ; LAXX-NEXT:       Shrink Wrapping analysis
148 ; LAXX-NEXT:       Prologue/Epilogue Insertion & Frame Finalization
149 ; LAXX-NEXT:       Machine Late Instructions Cleanup Pass
150 ; LAXX-NEXT:       Control Flow Optimizer
151 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
152 ; LAXX-NEXT:       Tail Duplication
153 ; LAXX-NEXT:       Machine Copy Propagation Pass
154 ; LAXX-NEXT:       Post-RA pseudo instruction expansion pass
155 ; LAXX-NEXT:       MachineDominator Tree Construction
156 ; LAXX-NEXT:       Machine Natural Loop Construction
157 ; LAXX-NEXT:       Post RA top-down list latency scheduler
158 ; LAXX-NEXT:       Analyze Machine Code For Garbage Collection
159 ; LAXX-NEXT:       Machine Block Frequency Analysis
160 ; LAXX-NEXT:       MachinePostDominator Tree Construction
161 ; LAXX-NEXT:       Branch Probability Basic Block Placement
162 ; LAXX-NEXT:       Insert fentry calls
163 ; LAXX-NEXT:       Insert XRay ops
164 ; LAXX-NEXT:       Implement the 'patchable-function' attribute
165 ; LAXX-NEXT:       Branch relaxation pass
166 ; LAXX-NEXT:       Contiguously Lay Out Funclets
167 ; LAXX-NEXT:       StackMap Liveness Analysis
168 ; LAXX-NEXT:       Live DEBUG_VALUE analysis
169 ; LAXX-NEXT:       Machine Sanitizer Binary Metadata
170 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
171 ; LAXX-NEXT:       Machine Optimization Remark Emitter
172 ; LAXX-NEXT:       Stack Frame Layout Analysis
173 ; LAXX-NEXT:       LoongArch pseudo instruction expansion pass
174 ; LAXX-NEXT:       LoongArch atomic pseudo instruction expansion pass
175 ; LAXX-NEXT:       Lazy Machine Block Frequency Analysis
176 ; LAXX-NEXT:       Machine Optimization Remark Emitter
177 ; LAXX-NEXT:       LoongArch Assembly Printer
178 ; LAXX-NEXT:       Free MachineFunction