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