[llvm] [GlobalISel] Change MatchTable entries to 1 byte each (PR #74429)

Amara Emerson via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 12 09:06:21 PST 2023


aemerson wrote:

So I built clang with release mode and no assertions, with thinlto. I used fc791b612723 as the baseline and:
```
commit 44f6d94c58b8073432f52b368258414f9afd0ae4 (compact-gisel-match-table)
Author: pvanhout <pierre.vanhoutryve at amd.com>
Date:   Fri Dec 8 08:56:30 2023 +0100

    Simplify getEncodedEmitStr
```
as the test commit.

Building CTMark in the test suite with `-j1` and 10 runs, here's the data for -Os, with `compare.py` using `--merge-average`.
```
Program                                       compile_time
                                              before        after  diff
tramp3d-v4/tramp3d-v4                           5.37         5.42  0.8%
mafft/pairlocalalign                            2.51         2.53  0.5%
kimwitu++/kc                                    6.45         6.47  0.4%
ClamAV/clamscan                                 4.83         4.84  0.2%
sqlite3/sqlite3                                 2.35         2.35  0.1%
SPASS/SPASS                                     4.26         4.26  0.0%
lencod/lencod                                   4.39         4.39 -0.0%
Bullet/bullet                                  10.28        10.27 -0.1%
7zip/7zip-benchmark                            13.91        13.90 -0.1%
consumer-typeset/consumer-typeset               3.39         3.38 -0.3%
                           Geomean difference                      0.2%
```
So it seems there's a 0.2% geomean regression but I'm not fully convinced this isn't noise.

I decided to dig further by trying to run llc on a sqlite3 optimized bitcode file, to test just codegen performance and try to reduce the effect of noise from the rest of compilation/file IO. Doing this and measuring CPU cycles I saw a 0.5% mean regression.

I then looked at your PR here: https://github.com/llvm/llvm-project/pull/74823 and measuring this resulted in a no statistically significant change in CTMark overall compilation times, however I did see a 0.8% reduction in average cycles for the llc test, compared to the baseline. So it seems that PR brings a needed tiny perf improvement.

Overall, given that this change is a predecessor to that PR and that it does give a huge size improvement, I think this is ok to go.



https://github.com/llvm/llvm-project/pull/74429


More information about the llvm-commits mailing list