Commit a930ef5
authored
JIT: Reorder stores to make them amenable to stp optimization (dotnet#102133)
This generalizes the indir reordering optimization (that currently only
triggers for loads) to kick in for GT_STOREIND nodes.
The main complication with doing this is the fact that the data node of
the second indirection needs its own reordering with the previous
indirection. The existing logic works by reordering all nodes between
the first and second indirection that are unrelated to the second
indirection's computation to happen after it. Once that is done we know
that there are no uses of the first indirection's result between it and
the second indirection, so after doing the necessary interference checks
we can safely move the previous indirection to happen after the data
node of the second indirection.
Example:
```csharp
class Body { public double x, y, z, vx, vy, vz, mass; }
static void Advance(double dt, Body[] bodies)
{
foreach (Body b in bodies)
{
b.x += dt * b.vx;
b.y += dt * b.vy;
b.z += dt * b.vz;
}
}
```
Diff:
```diff
@@ -1,18 +1,17 @@
-G_M55007_IG04: ;; offset=0x001C
+G_M55007_IG04: ;; offset=0x0020
ldr x3, [x0, w1, UXTW #3]
ldp d16, d17, [x3, #0x08]
ldp d18, d19, [x3, #0x20]
fmul d18, d0, d18
fadd d16, d16, d18
- str d16, [x3, #0x08]
- fmul d16, d0, d19
- fadd d16, d17, d16
- str d16, [x3, #0x10]
+ fmul d18, d0, d19
+ fadd d17, d17, d18
+ stp d16, d17, [x3, #0x08]
ldr d16, [x3, #0x18]
ldr d17, [x3, #0x30]
fmul d17, d0, d17
fadd d16, d16, d17
str d16, [x3, #0x18]
add w1, w1, #1
cmp w2, w1
bgt G_M55007_IG04
```1 parent f0ee416 commit a930ef5
File tree
6 files changed
+137
-41
lines changed- src/coreclr/jit
6 files changed
+137
-41
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
414 | 414 | | |
415 | 415 | | |
416 | 416 | | |
417 | | - | |
418 | | - | |
| 417 | + | |
419 | 418 | | |
420 | 419 | | |
421 | 420 | | |
| |||
8895 | 8894 | | |
8896 | 8895 | | |
8897 | 8896 | | |
8898 | | - | |
| 8897 | + | |
| 8898 | + | |
| 8899 | + | |
| 8900 | + | |
8899 | 8901 | | |
8900 | 8902 | | |
8901 | 8903 | | |
| |||
8910 | 8912 | | |
8911 | 8913 | | |
8912 | 8914 | | |
8913 | | - | |
| 8915 | + | |
8914 | 8916 | | |
| 8917 | + | |
| 8918 | + | |
| 8919 | + | |
8915 | 8920 | | |
8916 | | - | |
| 8921 | + | |
| 8922 | + | |
| 8923 | + | |
| 8924 | + | |
8917 | 8925 | | |
8918 | | - | |
8919 | | - | |
8920 | | - | |
8921 | | - | |
8922 | | - | |
8923 | | - | |
8924 | | - | |
| 8926 | + | |
| 8927 | + | |
| 8928 | + | |
| 8929 | + | |
8925 | 8930 | | |
8926 | | - | |
8927 | | - | |
8928 | | - | |
| 8931 | + | |
| 8932 | + | |
8929 | 8933 | | |
| 8934 | + | |
8930 | 8935 | | |
8931 | 8936 | | |
8932 | | - | |
8933 | | - | |
8934 | | - | |
| 8937 | + | |
| 8938 | + | |
8935 | 8939 | | |
8936 | 8940 | | |
8937 | 8941 | | |
| |||
9014 | 9018 | | |
9015 | 9019 | | |
9016 | 9020 | | |
9017 | | - | |
| 9021 | + | |
9018 | 9022 | | |
9019 | 9023 | | |
9020 | 9024 | | |
| |||
9029 | 9033 | | |
9030 | 9034 | | |
9031 | 9035 | | |
9032 | | - | |
| 9036 | + | |
9033 | 9037 | | |
9034 | 9038 | | |
9035 | 9039 | | |
| |||
9042 | 9046 | | |
9043 | 9047 | | |
9044 | 9048 | | |
9045 | | - | |
| 9049 | + | |
9046 | 9050 | | |
9047 | 9051 | | |
9048 | 9052 | | |
| |||
9060 | 9064 | | |
9061 | 9065 | | |
9062 | 9066 | | |
9063 | | - | |
| 9067 | + | |
9064 | 9068 | | |
9065 | 9069 | | |
9066 | 9070 | | |
| |||
9075 | 9079 | | |
9076 | 9080 | | |
9077 | 9081 | | |
| 9082 | + | |
| 9083 | + | |
| 9084 | + | |
| 9085 | + | |
| 9086 | + | |
| 9087 | + | |
| 9088 | + | |
| 9089 | + | |
| 9090 | + | |
| 9091 | + | |
| 9092 | + | |
9078 | 9093 | | |
9079 | 9094 | | |
9080 | 9095 | | |
9081 | 9096 | | |
9082 | | - | |
| 9097 | + | |
9083 | 9098 | | |
9084 | 9099 | | |
9085 | 9100 | | |
| |||
9115 | 9130 | | |
9116 | 9131 | | |
9117 | 9132 | | |
9118 | | - | |
| 9133 | + | |
9119 | 9134 | | |
9120 | 9135 | | |
9121 | 9136 | | |
| |||
9172 | 9187 | | |
9173 | 9188 | | |
9174 | 9189 | | |
| 9190 | + | |
| 9191 | + | |
| 9192 | + | |
| 9193 | + | |
| 9194 | + | |
| 9195 | + | |
| 9196 | + | |
9175 | 9197 | | |
9176 | 9198 | | |
| 9199 | + | |
9177 | 9200 | | |
9178 | 9201 | | |
9179 | 9202 | | |
| |||
9186 | 9209 | | |
9187 | 9210 | | |
9188 | 9211 | | |
| 9212 | + | |
| 9213 | + | |
| 9214 | + | |
| 9215 | + | |
| 9216 | + | |
9189 | 9217 | | |
9190 | 9218 | | |
9191 | 9219 | | |
| |||
9197 | 9225 | | |
9198 | 9226 | | |
9199 | 9227 | | |
| 9228 | + | |
| 9229 | + | |
| 9230 | + | |
| 9231 | + | |
| 9232 | + | |
| 9233 | + | |
| 9234 | + | |
9200 | 9235 | | |
9201 | 9236 | | |
9202 | 9237 | | |
| |||
9293 | 9328 | | |
9294 | 9329 | | |
9295 | 9330 | | |
9296 | | - | |
9297 | | - | |
| 9331 | + | |
| 9332 | + | |
| 9333 | + | |
| 9334 | + | |
| 9335 | + | |
| 9336 | + | |
| 9337 | + | |
| 9338 | + | |
| 9339 | + | |
| 9340 | + | |
| 9341 | + | |
| 9342 | + | |
| 9343 | + | |
| 9344 | + | |
| 9345 | + | |
| 9346 | + | |
| 9347 | + | |
| 9348 | + | |
| 9349 | + | |
| 9350 | + | |
| 9351 | + | |
| 9352 | + | |
| 9353 | + | |
| 9354 | + | |
| 9355 | + | |
| 9356 | + | |
| 9357 | + | |
| 9358 | + | |
| 9359 | + | |
| 9360 | + | |
| 9361 | + | |
| 9362 | + | |
| 9363 | + | |
9298 | 9364 | | |
9299 | 9365 | | |
9300 | 9366 | | |
| |||
9317 | 9383 | | |
9318 | 9384 | | |
9319 | 9385 | | |
| 9386 | + | |
| 9387 | + | |
| 9388 | + | |
| 9389 | + | |
| 9390 | + | |
| 9391 | + | |
| 9392 | + | |
| 9393 | + | |
| 9394 | + | |
| 9395 | + | |
| 9396 | + | |
| 9397 | + | |
| 9398 | + | |
| 9399 | + | |
| 9400 | + | |
| 9401 | + | |
9320 | 9402 | | |
9321 | 9403 | | |
9322 | 9404 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
348 | | - | |
| 348 | + | |
349 | 349 | | |
350 | | - | |
| 350 | + | |
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
354 | | - | |
| 354 | + | |
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
491 | 491 | | |
492 | 492 | | |
493 | 493 | | |
494 | | - | |
| 494 | + | |
495 | 495 | | |
496 | | - | |
| 496 | + | |
497 | 497 | | |
| 498 | + | |
498 | 499 | | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
499 | 509 | | |
500 | 510 | | |
501 | 511 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
269 | | - | |
| 269 | + | |
270 | 270 | | |
271 | | - | |
| 271 | + | |
272 | 272 | | |
273 | 273 | | |
| 274 | + | |
274 | 275 | | |
275 | 276 | | |
276 | 277 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
215 | 215 | | |
216 | 216 | | |
217 | 217 | | |
218 | | - | |
| 218 | + | |
219 | 219 | | |
220 | | - | |
| 220 | + | |
221 | 221 | | |
222 | 222 | | |
| 223 | + | |
223 | 224 | | |
224 | 225 | | |
225 | 226 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
| 95 | + | |
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | | - | |
| 117 | + | |
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| 129 | + | |
| 130 | + | |
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
| |||
0 commit comments