[llvm] [TableGen][DecoderEmitter] Rework table construction/emission (PR #155889)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 16 17:20:14 PDT 2025


s-barannikov wrote:

> What's the size/perf saving here? I presume it's mostly size, rather than perf?

Currently, 12.1% reduction in size total, but more can be achieved in the future, since we now have a data structure we can do optimizations on. Performance should improve proportionally, but it can be more than 12% because the introduced Switch opcode works faster than a series of ExtractField + FilterValue.

<details>
<summary>raw data</summary>

```
| Target    | Old    | New    | Abs Diff | Rel Diff |
| --------- | ------ | ------ | -------- | -------- |
| AArch64   | 106857 |  92427 |   -14430 |  -13.50% |
| AArch64   |     63 |     58 |       -5 |   -7.94% |
| AMDGPU    |     12 |     12 |        0 |    0.00% |
| AMDGPU    |   6052 |   5029 |    -1023 |  -16.90% |
| AMDGPU    |  50472 |  45472 |    -5000 |   -9.91% |
| AMDGPU    |     24 |     22 |       -2 |   -8.33% |
| AMDGPU    |     69 |     64 |       -5 |   -7.25% |
| AMDGPU    |   6158 |   5099 |    -1059 |  -17.20% |
| AMDGPU    |  35890 |  31889 |    -4001 |  -11.15% |
| AMDGPU    |  14303 |  13212 |    -1091 |   -7.63% |
| AMDGPU    |   1528 |   1261 |     -267 |  -17.47% |
| AMDGPU    |  11164 |  10130 |    -1034 |   -9.26% |
| AMDGPU    |   5768 |   5330 |     -438 |   -7.59% |
| AMDGPU    |    124 |    114 |      -10 |   -8.06% |
| AMDGPU    |   6057 |   5021 |    -1036 |  -17.10% |
| AMDGPU    |    193 |    187 |       -6 |   -3.11% |
| AMDGPU    |    307 |    260 |      -47 |  -15.31% |
| AMDGPU    |   4938 |   4345 |     -593 |  -12.01% |
| AMDGPU    |  17481 |  16109 |    -1372 |   -7.85% |
| AMDGPU    |    227 |    189 |      -38 |  -16.74% |
| AMDGPU    |   3136 |   2881 |     -255 |   -8.13% |
| AMDGPU    |   1043 |    972 |      -71 |   -6.81% |
| AMDGPU    |  19855 |  17932 |    -1923 |   -9.69% |
| AMDGPU    |  43483 |  39886 |    -3597 |   -8.27% |
| AMDGPU    |   1524 |   1257 |     -267 |  -17.52% |
| AMDGPU    |  11663 |  10587 |    -1076 |   -9.23% |
| AMDGPU    |   5896 |   5440 |     -456 |   -7.73% |
| AMDGPU    |    608 |    566 |      -42 |   -6.91% |
| AMDGPU    |     78 |     74 |       -4 |   -5.13% |
| AMDGPU    |     24 |     24 |        0 |    0.00% |
| AMDGPU    |   5672 |   4716 |     -956 |  -16.85% |
| AMDGPU    |  20077 |  17904 |    -2173 |  -10.82% |
| AMDGPU    |     99 |     87 |      -12 |  -12.12% |
| AMDGPU    |   2324 |   2119 |     -205 |   -8.82% |
| AMDGPU    |   1886 |   1707 |     -179 |   -9.49% |
| AMDGPU    |   6546 |   5523 |    -1023 |  -15.63% |
| AMDGPU    |  54229 |  49095 |    -5134 |   -9.47% |
| AMDGPU    |     13 |     13 |        0 |    0.00% |
| AMDGPU    |   9903 |   8714 |    -1189 |  -12.01% |
| AMDGPU    |    247 |    209 |      -38 |  -15.38% |
| AMDGPU    |     83 |     77 |       -6 |   -7.23% |
| AMDGPU    |   1218 |   1060 |     -158 |  -12.97% |
| AMDGPU    |     13 |     13 |        0 |    0.00% |
| AMDGPU    |     49 |     47 |       -2 |   -4.08% |
| AMDGPU    |  13586 |  12305 |    -1281 |   -9.43% |
| AMDGPU    |     44 |     40 |       -4 |   -9.09% |
| ARC       |   1056 |    832 |     -224 |  -21.21% |
| ARC       |   2359 |   1871 |     -488 |  -20.69% |
| ARC       |     80 |     70 |      -10 |  -12.50% |
| ARC       |   1109 |    968 |     -141 |  -12.71% |
| ARM       |   5886 |   5252 |     -634 |  -10.77% |
| ARM       |    476 |    423 |      -53 |  -11.13% |
| ARM       |  16946 |  15451 |    -1495 |   -8.82% |
| ARM       |  13621 |  11845 |    -1776 |  -13.04% |
| ARM       |    305 |    279 |      -26 |   -8.52% |
| ARM       |   4934 |   4440 |     -494 |  -10.01% |
| ARM       |    809 |    699 |     -110 |  -13.60% |
| ARM       |     11 |     11 |        0 |    0.00% |
| ARM       |   6346 |   5751 |     -595 |   -9.38% |
| ARM       |    621 |    565 |      -56 |   -9.02% |
| ARM       |    509 |    427 |      -82 |  -16.11% |
| ARM       |     43 |     41 |       -2 |   -4.65% |
| ARM       |    241 |    197 |      -44 |  -18.26% |
| ARM       |    360 |    335 |      -25 |   -6.94% |
| ARM       |   1486 |   1366 |     -120 |   -8.08% |
| ARM       |   3902 |   3466 |     -436 |  -11.17% |
| ARM       |   2161 |   1960 |     -201 |   -9.30% |
| AVR       |   1036 |    865 |     -171 |  -16.51% |
| AVR       |     62 |     56 |       -6 |   -9.68% |
| AVR       |     21 |     19 |       -2 |   -9.52% |
| BPF       |   1583 |   1273 |     -310 |  -19.58% |
| BPF       |    222 |    185 |      -37 |  -16.67% |
| CSKY      |    792 |    652 |     -140 |  -17.68% |
| CSKY      |   4014 |   3460 |     -554 |  -13.80% |
| CSKY      |   2128 |   1866 |     -262 |  -12.31% |
| Hexagon   |  22424 |  19309 |    -3115 |  -13.89% |
| Hexagon   |   9675 |   8383 |    -1292 |  -13.35% |
| Hexagon   |   1900 |   1687 |     -213 |  -11.21% |
| Hexagon   |    363 |    317 |      -46 |  -12.67% |
| Hexagon   |     27 |     25 |       -2 |   -7.41% |
| Hexagon   |    218 |    188 |      -30 |  -13.76% |
| Hexagon   |     27 |     25 |       -2 |   -7.41% |
| Hexagon   |    123 |    109 |      -14 |  -11.38% |
| Lanai     |    910 |    743 |     -167 |  -18.35% |
| LoongArch |  20037 |  16007 |    -4030 |  -20.11% |
| M68k      |  11721 |  10004 |    -1717 |  -14.65% |
| Mips      |    426 |    352 |      -74 |  -17.37% |
| Mips      |    346 |    305 |      -41 |  -11.85% |
| Mips      |    349 |    298 |      -51 |  -14.61% |
| Mips      |     29 |     27 |       -2 |   -6.90% |
| Mips      |     41 |     35 |       -6 |  -14.63% |
| Mips      |    450 |    375 |      -75 |  -16.67% |
| Mips      |   4648 |   3849 |     -799 |  -17.19% |
| Mips      |     23 |     21 |       -2 |   -8.70% |
| Mips      |    243 |    208 |      -35 |  -14.40% |
| Mips      |    306 |    257 |      -49 |  -16.01% |
| Mips      |   2321 |   1960 |     -361 |  -15.55% |
| Mips      |     73 |     65 |       -8 |  -10.96% |
| Mips      |  12152 |  10270 |    -1882 |  -15.49% |
| Mips      |     37 |     33 |       -4 |  -10.81% |
| Mips      |   1764 |   1496 |     -268 |  -15.19% |
| Mips      |    151 |    135 |      -16 |  -10.60% |
| Mips      |     23 |     21 |       -2 |   -8.70% |
| Mips      |    183 |    159 |      -24 |  -13.11% |
| Mips      |     31 |     29 |       -2 |   -6.45% |
| Mips      |    910 |    778 |     -132 |  -14.51% |
| Mips      |     23 |     21 |       -2 |   -8.70% |
| Mips      |   1186 |   1037 |     -149 |  -12.56% |
| MSP430    |    271 |    222 |      -49 |  -18.08% |
| MSP430    |     90 |     74 |      -16 |  -17.78% |
| MSP430    |    264 |    217 |      -47 |  -17.80% |
| MSP430    |    253 |    207 |      -46 |  -18.18% |
| MSP430    |    253 |    207 |      -46 |  -18.18% |
| MSP430    |    253 |    207 |      -46 |  -18.18% |
| MSP430    |    471 |    375 |      -96 |  -20.38% |
| MSP430    |    429 |    339 |      -90 |  -20.98% |
| MSP430    |    563 |    467 |      -96 |  -17.05% |
| MSP430    |    541 |    447 |      -94 |  -17.38% |
| PowerPC   |  18930 |  16003 |    -2927 |  -15.46% |
| PowerPC   |   2112 |   1920 |     -192 |   -9.09% |
| PowerPC   |   3841 |   3347 |     -494 |  -12.86% |
| RISCV     |    717 |    611 |     -106 |  -14.78% |
| RISCV     |  20300 |  16937 |    -3363 |  -16.57% |
| RISCV     |     66 |     58 |       -8 |  -12.12% |
| RISCV     |    931 |    798 |     -133 |  -14.29% |
| RISCV     |    599 |    522 |      -77 |  -12.85% |
| RISCV     |   4294 |   3680 |     -614 |  -14.30% |
| RISCV     |    168 |    152 |      -16 |   -9.52% |
| RISCV     |    115 |    103 |      -12 |  -10.43% |
| RISCV     |    268 |    234 |      -34 |  -12.69% |
| RISCV     |   1391 |   1203 |     -188 |  -13.52% |
| RISCV     |    416 |    368 |      -48 |  -11.54% |
| RISCV     |    184 |    168 |      -16 |   -8.70% |
| RISCV     |     16 |     16 |        0 |    0.00% |
| RISCV     |     34 |     32 |       -2 |   -5.88% |
| RISCV     |   1224 |   1102 |     -122 |   -9.97% |
| RISCV     |    330 |    300 |      -30 |   -9.09% |
| RISCV     |   1806 |   1597 |     -209 |  -11.57% |
| RISCV     |     40 |     38 |       -2 |   -5.00% |
| RISCV     |    129 |    115 |      -14 |  -10.85% |
| RISCV     |    183 |    162 |      -21 |  -11.48% |
| RISCV     |     36 |     34 |       -2 |   -5.56% |
| RISCV     |    356 |    310 |      -46 |  -12.92% |
| RISCV     |   1152 |    986 |     -166 |  -14.41% |
| RISCV     |     26 |     24 |       -2 |   -7.69% |
| Sparc     |   6249 |   5290 |     -959 |  -15.35% |
| Sparc     |    166 |    148 |      -18 |  -10.84% |
| Sparc     |    322 |    288 |      -34 |  -10.56% |
| SystemZ   |    698 |    532 |     -166 |  -23.78% |
| SystemZ   |   8535 |   7104 |    -1431 |  -16.77% |
| SystemZ   |  18751 |  16002 |    -2749 |  -14.66% |
| VE        |  36002 |  32221 |    -3781 |  -10.50% |
| XCore     |   1300 |   1069 |     -231 |  -17.77% |
| XCore     |    923 |    793 |     -130 |  -14.08% |
| Xtensa    |    158 |    135 |      -23 |  -14.56% |
| Xtensa    |   3602 |   3074 |     -528 |  -14.66% |
|           | 777003 | 682869 |   -94134 |  -12.12% |

```

</details>


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


More information about the llvm-commits mailing list