[llvm] [SystemZ] Eliminate call sequence instructions early. (PR #77812)
Jonas Paulsson via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 28 07:16:43 PDT 2024
JonPsson1 wrote:
I rebuilt everything, and to my surprise I now saw different numbers than before:
main/nfc patch <-> patch but erasing MI
```
Spill|Reload : 608814 608692 -122
Copies : 1021002 1020968 -34
```
So at this moment it looks like that small variation can go either way depending on the shape of the compiler on the given day.
I also ran spec. With all benchmarks, ("mini"):
```
Improvements "eraseMI":
0.981: i541.leela_r
0.990: f538.imagick_r
0.996: i525.x264_r
Regressions "eraseMI":
1.013: i505.mcf_r
1.011: i523.xalancbmk_r
1.010: i520.omnetpp_r
1.009: i502.gcc_r
1.007: f544.nab_r
1.006: i557.xz_r
```
That looked like a slight general regression. However, I also ran a few select benchmarks in parallel with the "full" run:
```
Improvements "eraseMI":
0.987: i523.xalancbmk_r
0.991: f544.nab_r
0.996: i541.leela_r
Regressions "eraseMI":
1.013: i520.omnetpp_r
1.006: i505.mcf_r
1.004: i531.deepsjeng_r
1.002: i502.gcc_r
1.001: i557.xz_r
```
With these runs it was a general tie on those select benchmarks.
Given that the spilling has varied a bit both ways, I don't see much point in looking at the MI scheduler. There is already a phys-reg heuristic there, so it should work well in general.
All the benchmarks have not been run fully, but it looks to me that it should be ok to simply remove the MIs and trust that the mi-scheduler will handle it without the scheduling barriers.
https://github.com/llvm/llvm-project/pull/77812
More information about the llvm-commits
mailing list