Skip to content

Commit c4ffbec

Browse files
committed
[NFC][SPIRV] Add a test documenting the passes in the SPIRV backend
1 parent 4647cd7 commit c4ffbec

File tree

1 file changed

+214
-0
lines changed

1 file changed

+214
-0
lines changed
Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
; UNSUPPORTED:expensive_checks
2+
; RUN:llc -O0 -mtriple=spirv-- -disable-verify -debug-pass=Structure < %s 2>&1 \
3+
; RUN: | FileCheck -match-full-lines -strict-whitespace -check-prefix=SPIRV-O0 %s
4+
; RUN:llc -O1 -mtriple=spirv-- -disable-verify -debug-pass=Structure < %s 2>&1 \
5+
; RUN: | FileCheck -match-full-lines -strict-whitespace -check-prefix=SPIRV-Opt %s
6+
; RUN:llc -O2 -mtriple=spirv-- -disable-verify -debug-pass=Structure < %s 2>&1 \
7+
; RUN: | FileCheck -match-full-lines -strict-whitespace -check-prefix=SPIRV-Opt %s
8+
; RUN:llc -O3 -mtriple=spirv-- -disable-verify -debug-pass=Structure < %s 2>&1 \
9+
; RUN: | FileCheck -match-full-lines -strict-whitespace -check-prefix=SPIRV-Opt %s
10+
;
11+
; REQUIRES:asserts
12+
13+
; SPIRV-O0:Target Library Information
14+
; SPIRV-O0-NEXT:Target Pass Configuration
15+
; SPIRV-O0-NEXT:Machine Module Information
16+
; SPIRV-O0-NEXT:Target Transform Information
17+
; SPIRV-O0-NEXT:Create Garbage Collector Module Metadata
18+
; SPIRV-O0-NEXT:Assumption Cache Tracker
19+
; SPIRV-O0-NEXT:Profile summary info
20+
; SPIRV-O0-NEXT:Machine Branch Probability Analysis
21+
; SPIRV-O0-NEXT: ModulePass Manager
22+
; SPIRV-O0-NEXT: Pre-ISel Intrinsic Lowering
23+
; SPIRV-O0-NEXT: FunctionPass Manager
24+
; SPIRV-O0-NEXT: Expand large div/rem
25+
; SPIRV-O0-NEXT: Expand fp
26+
; SPIRV-O0-NEXT: Lower Garbage Collection Instructions
27+
; SPIRV-O0-NEXT: Shadow Stack GC Lowering
28+
; SPIRV-O0-NEXT: Remove unreachable blocks from the CFG
29+
; SPIRV-O0-NEXT: Instrument function entry/exit with calls to e.g. mcount() (post inlining)
30+
; SPIRV-O0-NEXT: Scalarize Masked Memory Intrinsics
31+
; SPIRV-O0-NEXT: Expand reduction intrinsics
32+
; SPIRV-O0-NEXT: SPIR-V Regularizer
33+
; SPIRV-O0-NEXT: SPIRV prepare functions
34+
; SPIRV-O0-NEXT: FunctionPass Manager
35+
; SPIRV-O0-NEXT: Lower invoke and unwind, for unwindless code generators
36+
; SPIRV-O0-NEXT: Remove unreachable blocks from the CFG
37+
; SPIRV-O0-NEXT: SPIRV strip convergent intrinsics
38+
; SPIRV-O0-NEXT: Unnamed pass: implement Pass::getPassName()
39+
; SPIRV-O0-NEXT: SPIRV CBuffer Access
40+
; SPIRV-O0-NEXT: SPIRV emit intrinsics
41+
; SPIRV-O0-NEXT: FunctionPass Manager
42+
; SPIRV-O0-NEXT: SPIRV legalize bitcast pass
43+
; SPIRV-O0-NEXT: Prepare callbr
44+
; SPIRV-O0-NEXT: Safe Stack instrumentation pass
45+
; SPIRV-O0-NEXT: Insert stack protectors
46+
; SPIRV-O0-NEXT: Analysis containing CSE Info
47+
; SPIRV-O0-NEXT: IRTranslator
48+
; SPIRV-O0-NEXT: Analysis for ComputingKnownBits
49+
; SPIRV-O0-NEXT: MachineDominator Tree Construction
50+
; SPIRV-O0-NEXT: SPIRVPreLegalizerCombiner
51+
; SPIRV-O0-NEXT: SPIRV pre legalizer
52+
; SPIRV-O0-NEXT: Analysis containing CSE Info
53+
; SPIRV-O0-NEXT: Legalizer
54+
; SPIRV-O0-NEXT: SPIRV post legalizer
55+
; SPIRV-O0-NEXT: Analysis for ComputingKnownBits
56+
; SPIRV-O0-NEXT: Dominator Tree Construction
57+
; SPIRV-O0-NEXT: Natural Loop Information
58+
; SPIRV-O0-NEXT: Lazy Branch Probability Analysis
59+
; SPIRV-O0-NEXT: Lazy Block Frequency Analysis
60+
; SPIRV-O0-NEXT: InstructionSelect
61+
; SPIRV-O0-NEXT: ResetMachineFunction
62+
; SPIRV-O0-NEXT: Finalize ISel and expand pseudo-instructions
63+
; SPIRV-O0-NEXT: Local Stack Slot Allocation
64+
; SPIRV-O0-NEXT: Remove Redundant DEBUG_VALUE analysis
65+
; SPIRV-O0-NEXT: Fixup Statepoint Caller Saved
66+
; SPIRV-O0-NEXT: Lazy Machine Block Frequency Analysis
67+
; SPIRV-O0-NEXT: Machine Optimization Remark Emitter
68+
; SPIRV-O0-NEXT: Prologue/Epilogue Insertion & Frame Finalization
69+
; SPIRV-O0-NEXT: Post-RA pseudo instruction expansion pass
70+
; SPIRV-O0-NEXT: Analyze Machine Code For Garbage Collection
71+
; SPIRV-O0-NEXT: Insert fentry calls
72+
; SPIRV-O0-NEXT: Insert XRay ops
73+
; SPIRV-O0-NEXT: Machine Sanitizer Binary Metadata
74+
; SPIRV-O0-NEXT: Lazy Machine Block Frequency Analysis
75+
; SPIRV-O0-NEXT: Machine Optimization Remark Emitter
76+
; SPIRV-O0-NEXT: Stack Frame Layout Analysis
77+
; SPIRV-O0-NEXT: SPIRV module analysis
78+
; SPIRV-O0-NEXT: FunctionPass Manager
79+
; SPIRV-O0-NEXT: Lazy Machine Block Frequency Analysis
80+
; SPIRV-O0-NEXT: Machine Optimization Remark Emitter
81+
; SPIRV-O0-NEXT: SPIRV Assembly Printer
82+
; SPIRV-O0-NEXT: Free MachineFunction
83+
84+
; SPIRV-Opt:Target Library Information
85+
; SPIRV-Opt-NEXT:Target Pass Configuration
86+
; SPIRV-Opt-NEXT:Machine Module Information
87+
; SPIRV-Opt-NEXT:Target Transform Information
88+
; SPIRV-Opt-NEXT:Assumption Cache Tracker
89+
; SPIRV-Opt-NEXT:Type-Based Alias Analysis
90+
; SPIRV-Opt-NEXT:Scoped NoAlias Alias Analysis
91+
; SPIRV-Opt-NEXT:Profile summary info
92+
; SPIRV-Opt-NEXT:Create Garbage Collector Module Metadata
93+
; SPIRV-Opt-NEXT:Machine Branch Probability Analysis
94+
; SPIRV-Opt-NEXT: ModulePass Manager
95+
; SPIRV-Opt-NEXT: Pre-ISel Intrinsic Lowering
96+
; SPIRV-Opt-NEXT: FunctionPass Manager
97+
; SPIRV-Opt-NEXT: Expand large div/rem
98+
; SPIRV-Opt-NEXT: Expand fp
99+
; SPIRV-Opt-NEXT: Dominator Tree Construction
100+
; SPIRV-Opt-NEXT: Basic Alias Analysis (stateless AA impl)
101+
; SPIRV-Opt-NEXT: Natural Loop Information
102+
; SPIRV-Opt-NEXT: Canonicalize natural loops
103+
; SPIRV-Opt-NEXT: Scalar Evolution Analysis
104+
; SPIRV-Opt-NEXT: Loop Pass Manager
105+
; SPIRV-Opt-NEXT: Canonicalize Freeze Instructions in Loops
106+
; SPIRV-Opt-NEXT: Induction Variable Users
107+
; SPIRV-Opt-NEXT: Loop Strength Reduction
108+
; SPIRV-Opt-NEXT: Basic Alias Analysis (stateless AA impl)
109+
; SPIRV-Opt-NEXT: Function Alias Analysis Results
110+
; SPIRV-Opt-NEXT: Merge contiguous icmps into a memcmp
111+
; SPIRV-Opt-NEXT: Natural Loop Information
112+
; SPIRV-Opt-NEXT: Lazy Branch Probability Analysis
113+
; SPIRV-Opt-NEXT: Lazy Block Frequency Analysis
114+
; SPIRV-Opt-NEXT: Expand memcmp() to load/stores
115+
; SPIRV-Opt-NEXT: Lower Garbage Collection Instructions
116+
; SPIRV-Opt-NEXT: Shadow Stack GC Lowering
117+
; SPIRV-Opt-NEXT: Remove unreachable blocks from the CFG
118+
; SPIRV-Opt-NEXT: Natural Loop Information
119+
; SPIRV-Opt-NEXT: Post-Dominator Tree Construction
120+
; SPIRV-Opt-NEXT: Branch Probability Analysis
121+
; SPIRV-Opt-NEXT: Block Frequency Analysis
122+
; SPIRV-Opt-NEXT: Constant Hoisting
123+
; SPIRV-Opt-NEXT: Replace intrinsics with calls to vector library
124+
; SPIRV-Opt-NEXT: Lazy Branch Probability Analysis
125+
; SPIRV-Opt-NEXT: Lazy Block Frequency Analysis
126+
; SPIRV-Opt-NEXT: Optimization Remark Emitter
127+
; SPIRV-Opt-NEXT: Partially inline calls to library functions
128+
; SPIRV-Opt-NEXT: Instrument function entry/exit with calls to e.g. mcount() (post inlining)
129+
; SPIRV-Opt-NEXT: Scalarize Masked Memory Intrinsics
130+
; SPIRV-Opt-NEXT: Expand reduction intrinsics
131+
; SPIRV-Opt-NEXT: SPIR-V Regularizer
132+
; SPIRV-Opt-NEXT: SPIRV prepare functions
133+
; SPIRV-Opt-NEXT: FunctionPass Manager
134+
; SPIRV-Opt-NEXT: Dominator Tree Construction
135+
; SPIRV-Opt-NEXT: Natural Loop Information
136+
; SPIRV-Opt-NEXT: CodeGen Prepare
137+
; SPIRV-Opt-NEXT: Lower invoke and unwind, for unwindless code generators
138+
; SPIRV-Opt-NEXT: Remove unreachable blocks from the CFG
139+
; SPIRV-Opt-NEXT: SPIRV strip convergent intrinsics
140+
; SPIRV-Opt-NEXT: Unnamed pass: implement Pass::getPassName()
141+
; SPIRV-Opt-NEXT: SPIRV CBuffer Access
142+
; SPIRV-Opt-NEXT: SPIRV emit intrinsics
143+
; SPIRV-Opt-NEXT: FunctionPass Manager
144+
; SPIRV-Opt-NEXT: SPIRV legalize bitcast pass
145+
; SPIRV-Opt-NEXT: Dominator Tree Construction
146+
; SPIRV-Opt-NEXT: Basic Alias Analysis (stateless AA impl)
147+
; SPIRV-Opt-NEXT: Function Alias Analysis Results
148+
; SPIRV-Opt-NEXT: ObjC ARC contraction
149+
; SPIRV-Opt-NEXT: Prepare callbr
150+
; SPIRV-Opt-NEXT: Safe Stack instrumentation pass
151+
; SPIRV-Opt-NEXT: Insert stack protectors
152+
; SPIRV-Opt-NEXT: Analysis containing CSE Info
153+
; SPIRV-Opt-NEXT: Natural Loop Information
154+
; SPIRV-Opt-NEXT: Post-Dominator Tree Construction
155+
; SPIRV-Opt-NEXT: Branch Probability Analysis
156+
; SPIRV-Opt-NEXT: Basic Alias Analysis (stateless AA impl)
157+
; SPIRV-Opt-NEXT: Function Alias Analysis Results
158+
; SPIRV-Opt-NEXT: IRTranslator
159+
; SPIRV-Opt-NEXT: Analysis for ComputingKnownBits
160+
; SPIRV-Opt-NEXT: MachineDominator Tree Construction
161+
; SPIRV-Opt-NEXT: SPIRVPreLegalizerCombiner
162+
; SPIRV-Opt-NEXT: SPIRV pre legalizer
163+
; SPIRV-Opt-NEXT: Analysis containing CSE Info
164+
; SPIRV-Opt-NEXT: Legalizer
165+
; SPIRV-Opt-NEXT: SPIRV post legalizer
166+
; SPIRV-Opt-NEXT: Analysis for ComputingKnownBits
167+
; SPIRV-Opt-NEXT: Lazy Branch Probability Analysis
168+
; SPIRV-Opt-NEXT: Lazy Block Frequency Analysis
169+
; SPIRV-Opt-NEXT: InstructionSelect
170+
; SPIRV-Opt-NEXT: ResetMachineFunction
171+
; SPIRV-Opt-NEXT: Finalize ISel and expand pseudo-instructions
172+
; SPIRV-Opt-NEXT: Lazy Machine Block Frequency Analysis
173+
; SPIRV-Opt-NEXT: Early Tail Duplication
174+
; SPIRV-Opt-NEXT: Optimize machine instruction PHIs
175+
; SPIRV-Opt-NEXT: Slot index numbering
176+
; SPIRV-Opt-NEXT: Merge disjoint stack slots
177+
; SPIRV-Opt-NEXT: Local Stack Slot Allocation
178+
; SPIRV-Opt-NEXT: Remove dead machine instructions
179+
; SPIRV-Opt-NEXT: MachineDominator Tree Construction
180+
; SPIRV-Opt-NEXT: Machine Natural Loop Construction
181+
; SPIRV-Opt-NEXT: Machine Block Frequency Analysis
182+
; SPIRV-Opt-NEXT: Early Machine Loop Invariant Code Motion
183+
; SPIRV-Opt-NEXT: MachineDominator Tree Construction
184+
; SPIRV-Opt-NEXT: Machine Block Frequency Analysis
185+
; SPIRV-Opt-NEXT: Machine Common Subexpression Elimination
186+
; SPIRV-Opt-NEXT: MachinePostDominator Tree Construction
187+
; SPIRV-Opt-NEXT: Machine Cycle Info Analysis
188+
; SPIRV-Opt-NEXT: Machine code sinking
189+
; SPIRV-Opt-NEXT: Peephole Optimizations
190+
; SPIRV-Opt-NEXT: Remove dead machine instructions
191+
; SPIRV-Opt-NEXT: Remove Redundant DEBUG_VALUE analysis
192+
; SPIRV-Opt-NEXT: Fixup Statepoint Caller Saved
193+
; SPIRV-Opt-NEXT: Lazy Machine Block Frequency Analysis
194+
; SPIRV-Opt-NEXT: Machine Optimization Remark Emitter
195+
; SPIRV-Opt-NEXT: Prologue/Epilogue Insertion & Frame Finalization
196+
; SPIRV-Opt-NEXT: Tail Duplication
197+
; SPIRV-Opt-NEXT: Post-RA pseudo instruction expansion pass
198+
; SPIRV-Opt-NEXT: Analyze Machine Code For Garbage Collection
199+
; SPIRV-Opt-NEXT: Insert fentry calls
200+
; SPIRV-Opt-NEXT: Insert XRay ops
201+
; SPIRV-Opt-NEXT: Machine Sanitizer Binary Metadata
202+
; SPIRV-Opt-NEXT: Lazy Machine Block Frequency Analysis
203+
; SPIRV-Opt-NEXT: Machine Optimization Remark Emitter
204+
; SPIRV-Opt-NEXT: Stack Frame Layout Analysis
205+
; SPIRV-Opt-NEXT: SPIRV module analysis
206+
; SPIRV-Opt-NEXT: FunctionPass Manager
207+
; SPIRV-Opt-NEXT: Lazy Machine Block Frequency Analysis
208+
; SPIRV-Opt-NEXT: Machine Optimization Remark Emitter
209+
; SPIRV-Opt-NEXT: SPIRV Assembly Printer
210+
; SPIRV-Opt-NEXT: Free MachineFunction
211+
212+
define void @empty() {
213+
ret void
214+
}

0 commit comments

Comments
 (0)