[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