[llvm] [RISCV] Enable (non trivial) remat for most scalar instructions (PR #162311)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 15 23:07:01 PDT 2025
lukel97 wrote:
Some quick static results of this on llvm-test-suite, -march=rva23u64 -O3:
```
$ ./utils/compare.py results.rva23u64-O3.pr162311.before.json vs results.rva23u64-O3.pr162311.after.json -m regalloc.NumReloads -m regalloc.NumSpills
Tests: 320
Metric: regalloc.NumReloads,regalloc.NumSpills
Program regalloc.NumReloads regalloc.NumSpills
lhs rhs diff lhs rhs diff
SingleSour...arks/Adobe-C++/functionobjects 38.00 48.00 26.3% 8.00 8.00 0.0%
MultiSourc...e/Benchmarks/Rodinia/srad/srad 73.00 77.00 5.5% 54.00 54.00 0.0%
MultiSourc...e/Applications/minisat/minisat 33.00 34.00 3.0% 23.00 23.00 0.0%
MultiSourc...e/Applications/ClamAV/clamscan 4067.00 4159.00 2.3% 1881.00 1868.00 -0.7%
MultiSourc...e/Benchmarks/MallocBench/gs/gs 430.00 439.00 2.1% 223.00 220.00 -1.3%
MultiSource/Applications/kimwitu++/kc 627.00 631.00 0.6% 141.00 142.00 0.7%
MultiSource/Benchmarks/PAQ8p/paq8p 344.00 345.00 0.3% 243.00 243.00 0.0%
MultiSource/Benchmarks/sim/sim 353.00 354.00 0.3% 168.00 166.00 -1.2%
MicroBench...ubsetCLambdaLoops/lcalsCLambda 1343.00 1346.00 0.2% 1017.00 1017.00 0.0%
MicroBench...CALS/SubsetBRawLoops/lcalsBRaw 1229.00 1231.00 0.2% 968.00 967.00 -0.1%
MicroBench...ubsetBLambdaLoops/lcalsBLambda 1229.00 1231.00 0.2% 968.00 967.00 -0.1%
MicroBench...CALS/SubsetCRawLoops/lcalsCRaw 1345.00 1347.00 0.1% 1019.00 1018.00 -0.1%
MicroBench...CALS/SubsetARawLoops/lcalsARaw 1410.00 1411.00 0.1% 1095.00 1093.00 -0.2%
MicroBench...ubsetALambdaLoops/lcalsALambda 1487.00 1488.00 0.1% 1167.00 1165.00 -0.2%
MultiSourc...enchmarks/VersaBench/dbms/dbms 16.00 16.00 0.0% 9.00 9.00 0.0%
Geomean difference -8.5% -8.9%
```
And SPEC CPU 2017:
```
$ ./utils/compare.py results.rva23u64-O3.pr162311.spec.before.json vs results.rva23u64-O3.pr162311.spec.after.json -m regalloc.NumReloads -m regalloc.NumSpills -a
Tests: 32
Metric: regalloc.NumReloads,regalloc.NumSpills
Program regalloc.NumReloads regalloc.NumSpills
lhs rhs diff lhs rhs diff
INT2017speed/605.mcf_s/605.mcf_s 196.00 220.00 12.2% 104.00 98.00 -5.8%
INT2017rate/505.mcf_r/505.mcf_r 196.00 220.00 12.2% 104.00 98.00 -5.8%
INT2017rat...31.deepsjeng_r/531.deepsjeng_r 515.00 516.00 0.2% 265.00 267.00 0.8%
INT2017spe...31.deepsjeng_s/631.deepsjeng_s 515.00 516.00 0.2% 265.00 267.00 0.8%
FP2017rate/508.namd_r/508.namd_r 15208.00 15231.00 0.2% 6580.00 6585.00 0.1%
FP2017rate/519.lbm_r/519.lbm_r 47.00 47.00 0.0% 46.00 46.00 0.0%
FP2017rate/511.povray_r/511.povray_r 2841.00 2839.00 -0.1% 1720.00 1707.00 -0.8%
FP2017rate/544.nab_r/544.nab_r 1073.00 1066.00 -0.7% 714.00 709.00 -0.7%
FP2017speed/644.nab_s/644.nab_s 1073.00 1066.00 -0.7% 714.00 709.00 -0.7%
INT2017rate/502.gcc_r/502.gcc_r 24278.00 24034.00 -1.0% 11046.00 10911.00 -1.2%
INT2017speed/602.gcc_s/602.gcc_s 24278.00 24034.00 -1.0% 11046.00 10911.00 -1.2%
FP2017rate/538.imagick_r/538.imagick_r 8154.00 8071.00 -1.0% 3365.00 3311.00 -1.6%
FP2017speed/638.imagick_s/638.imagick_s 8154.00 8071.00 -1.0% 3365.00 3311.00 -1.6%
INT2017spe...23.xalancbmk_s/623.xalancbmk_s 2243.00 2220.00 -1.0% 1396.00 1384.00 -0.9%
INT2017rat...23.xalancbmk_r/523.xalancbmk_r 2243.00 2220.00 -1.0% 1396.00 1384.00 -0.9%
FP2017rate/510.parest_r/510.parest_r 76535.00 75466.00 -1.4% 43417.00 43114.00 -0.7%
FP2017rate/526.blender_r/526.blender_r 24742.00 24354.00 -1.6% 12452.00 12361.00 -0.7%
INT2017spe...00.perlbench_s/600.perlbench_s 9630.00 9470.00 -1.7% 4360.00 4309.00 -1.2%
INT2017rat...00.perlbench_r/500.perlbench_r 9630.00 9470.00 -1.7% 4360.00 4309.00 -1.2%
INT2017rate/520.omnetpp_r/520.omnetpp_r 1188.00 1155.00 -2.8% 645.00 619.00 -4.0%
INT2017spe...ed/620.omnetpp_s/620.omnetpp_s 1188.00 1155.00 -2.8% 645.00 619.00 -4.0%
INT2017rate/525.x264_r/525.x264_r 4065.00 3898.00 -4.1% 1865.00 1800.00 -3.5%
INT2017speed/625.x264_s/625.x264_s 4065.00 3898.00 -4.1% 1865.00 1800.00 -3.5%
FP2017speed/619.lbm_s/619.lbm_s 43.00 41.00 -4.7% 42.00 40.00 -4.8%
INT2017rate/541.leela_r/541.leela_r 418.00 397.00 -5.0% 300.00 283.00 -5.7%
INT2017speed/641.leela_s/641.leela_s 418.00 397.00 -5.0% 300.00 283.00 -5.7%
INT2017rate/557.xz_r/557.xz_r 470.00 420.00 -10.6% 270.00 257.00 -4.8%
INT2017speed/657.xz_s/657.xz_s 470.00 420.00 -10.6% 270.00 257.00 -4.8%
FP2017rate...97.specrand_fr/997.specrand_fr 0.00 0.00
FP2017spee...96.specrand_fs/996.specrand_fs 0.00 0.00
INT2017rat...99.specrand_ir/999.specrand_ir 0.00 0.00
INT2017spe...98.specrand_is/998.specrand_is 0.00 0.00
Geomean difference -1.5% -2.3%
```
Overall seems to be an improvement but I'm definitely surprised to see that some cases have an increase in number of reloads. Would be good to get to the bottom of that.
https://github.com/llvm/llvm-project/pull/162311
More information about the llvm-commits
mailing list