Commit 32ed376
committed
Resolve the state-dependent EOS switch at build time under case optimization
A kernel is allocated registers for the worst path through its call graph, so the state-dependent EOS chain costs occupancy in every kernel that can reach it even when the runtime branch is never taken. On gfx90a that took the HLLC kernel from 142 to 250 VGPRs, three waves per SIMD down to two, and cost 17 to 27 percent grind on the Riemann-solver benchmarks with no such EOS in the case. Baking any_state_dependent_eos lets the compiler drop the chain outright: case-optimized, the kernel registers are now identical to master. Generic builds are unchanged, since a generic binary must still carry every family. fluid_pp%eos stays in the namelist while the flag is baked, so the initializer checks the two agree rather than silently running the wrong branch.1 parent 10beffb commit 32ed376
4 files changed
Lines changed: 30 additions & 7 deletions
File tree
- src/common
- toolchain/mfc
- params/generators
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
| 66 | + | |
66 | 67 | | |
67 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
68 | 72 | | |
69 | 73 | | |
70 | 74 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| 257 | + | |
257 | 258 | | |
258 | 259 | | |
259 | 260 | | |
| |||
280 | 281 | | |
281 | 282 | | |
282 | 283 | | |
283 | | - | |
| 284 | + | |
284 | 285 | | |
285 | 286 | | |
286 | 287 | | |
| |||
335 | 336 | | |
336 | 337 | | |
337 | 338 | | |
338 | | - | |
| 339 | + | |
339 | 340 | | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
340 | 349 | | |
341 | | - | |
342 | | - | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
343 | 354 | | |
344 | 355 | | |
345 | 356 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
371 | 371 | | |
372 | 372 | | |
373 | 373 | | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
374 | 380 | | |
375 | 381 | | |
376 | 382 | | |
| |||
404 | 410 | | |
405 | 411 | | |
406 | 412 | | |
| 413 | + | |
407 | 414 | | |
408 | 415 | | |
409 | 416 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
| 286 | + | |
286 | 287 | | |
287 | | - | |
| 288 | + | |
288 | 289 | | |
289 | 290 | | |
290 | 291 | | |
| |||
0 commit comments