diff options
author | Sirui Mu <msrlancern@gmail.com> | 2025-09-18 21:43:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-18 21:43:08 +0800 |
commit | 81aaca359b2d5a6529d9620fa4181c4d89c83c7c (patch) | |
tree | 493e46cfba083191a85ffc9b0aed20dc1371b80f /llvm/lib/CodeGen/LiveDebugVariables.cpp | |
parent | 29620d9b8971c4eea7f5407ca206ba04c6f78d01 (diff) | |
download | llvm-81aaca359b2d5a6529d9620fa4181c4d89c83c7c.zip llvm-81aaca359b2d5a6529d9620fa4181c4d89c83c7c.tar.gz llvm-81aaca359b2d5a6529d9620fa4181c4d89c83c7c.tar.bz2 |
[CIR][NFC] Use TableGen to generate LLVM lowering patterns (#159390)
Most lowering patterns have exactly the same class declaration with
different names and different `matchAndRewrite` implementations, yet
their declaration occupies near 1000 lines of code in `LowerToLLVM.h`,
making this file difficult to read and boring to maintain. In this
patch, I migrate their declarations to be generated from `CIROps.td`
using `clang-tblgen`. Some extra `CIR_Op` TableGen fields are introduced
to help this:
- The `CIR_Op` class now defines a `bit` field `hasLLVMLowering` which
defaults to `true`. If its value is `true`, `clang-tblgen` would
generate an LLVM lowering pattern declaration for the operation.
- Some LLVM lowering patterns has bounded recursion. This could be
enabled by setting the `isLLVMLoweringRecursive` field in a `CIR_Op`
record to `true`.
- Some LLVM lowering patterns have defined additional class members.
They could be listed in the `extraLLVMLoweringPatternDecl` field.
Note that in the incubator we have a similar TableGen code generator
that generates LLVM lowering code for CIR builtin ops which has a
one-to-one correspondence to LLVM dialect operations. This patch does
NOT try to upstream it.
Some additional noticeable changes made by this patch:
- This patch adds the `dataLayout` member to every LLVM lowering pattern
class to make the job easier for a code generator. In the future we
might want to add more members to the lowering patterns, and we will
need to update the code generator to make such changes.
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugVariables.cpp')
0 files changed, 0 insertions, 0 deletions