Commit 27d8d6c
Create CodeScheduling pass
Introduce the CodeScheduling LLVM function pass for local scheduling of the instructions within
a basic block. The goal is to schedule for maximal latency hiding without increasing the register
pressure so much that the spills are introduced.
There is also an option to force scheduling for the minimum possible register pressure.
Added the RegisterPressureTracker helper class to track real register pressure within a basic block,
including proper tracking of "hanging" values, which live intervals are prolonged because of
the regalloc restrictions.
Added the VectorShuffleAnalysis pass to recognize vector shuffle and vector creation patterns
to handle them properly for scheduling purposes.1 parent 392d9d7 commit 27d8d6c
File tree
18 files changed
+3393
-4
lines changed- IGC
- Compiler
- CISACodeGen
- tests/CodeScheduling
- common
- ocloc_tests
- Builtins/joint_matrix
- SPIRV-extenstions/SPV_INTEL_subgroup_matrix_multiply_accumulate
- retry
18 files changed
+3393
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
100 | 101 | | |
101 | 102 | | |
102 | 103 | | |
| 104 | + | |
103 | 105 | | |
104 | 106 | | |
105 | 107 | | |
| |||
136 | 138 | | |
137 | 139 | | |
138 | 140 | | |
| 141 | + | |
139 | 142 | | |
140 | 143 | | |
141 | 144 | | |
| |||
209 | 212 | | |
210 | 213 | | |
211 | 214 | | |
| 215 | + | |
212 | 216 | | |
213 | 217 | | |
214 | 218 | | |
| |||
0 commit comments