[llvm-dev] Organization of LLVM utilities

Mehdi AMINI via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 4 12:28:39 PDT 2020


I may add that MLIR is doing the same thing as clang, reusing the TableGen
language without the LLVM specific backends.
We have quite a few generator, from the mlir-tblgen --help output:

  Generator to run
      --gen-attr-interface-decls         - Generate interface declarations
      --gen-attr-interface-defs          - Generate interface definitions
      --gen-attr-interface-docs          - Generate interface documentation
      --gen-avail-interface-decls        - Generate availability interface
declarations
      --gen-avail-interface-defs         - Generate op interface definitions
      --gen-dialect-decls                - Generate dialect declarations
      --gen-dialect-doc                  - Generate dialect documentation
      --gen-enum-decls                   - Generate enum utility
declarations
      --gen-enum-defs                    - Generate enum utility definitions
      --gen-enum-from-llvmir-conversions - Generate conversions of
EnumAttrs from LLVM IR
      --gen-enum-to-llvmir-conversions   - Generate conversions of
EnumAttrs to LLVM IR
      --gen-llvmir-conversions           - Generate LLVM IR conversions
      --gen-llvmir-intrinsics            - Generate LLVM IR intrinsics
      --gen-op-decls                     - Generate op declarations
      --gen-op-defs                      - Generate op definitions
      --gen-op-doc                       - Generate dialect documentation
      --gen-op-interface-decls           - Generate interface declarations
      --gen-op-interface-defs            - Generate interface definitions
      --gen-op-interface-docs            - Generate interface documentation
      --gen-pass-decls                   - Generate operation documentation
      --gen-pass-doc                     - Generate pass documentation
      --gen-rewriters                    - Generate pattern rewriters
      --gen-spirv-avail-impls            - Generate SPIR-V operation
utility definitions
      --gen-spirv-capability-implication - Generate utility function to
return implied capabilities for a given capability
      --gen-spirv-enum-avail-decls       - Generate SPIR-V enum
availability declarations
      --gen-spirv-enum-avail-defs        - Generate SPIR-V enum
availability definitions
      --gen-spirv-op-utils               - Generate SPIR-V operation
utility definitions
      --gen-spirv-serialization          - Generate SPIR-V
(de)serialization utilities and functions
      --gen-struct-attr-decls            - Generate struct utility
declarations
      --gen-struct-attr-defs             - Generate struct utility
definitions
      --gen-type-interface-decls         - Generate interface declarations
      --gen-type-interface-defs          - Generate interface definitions
      --gen-type-interface-docs          - Generate interface documentation

-- 
Mehdi

On Tue, Aug 4, 2020 at 11:43 AM Craig Topper via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> There is also clang/utils/TableGen which contains the clang tablegen
> backends.The build produces an llvm-tblgen from llvm/utils/TableGen and
> clang-tblgen from clang/utils/TableGen
>
> ~Craig
>
>
> On Tue, Aug 4, 2020 at 11:41 AM Charlotte Delenk via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>>
>> On 8/4/20 7:31 PM, Paul C. Anagnostopoulos via llvm-dev wrote:
>> > I was confused by the lack of TableGen backends in the
>> llvm/lib/tablegen directory until I stumbled upon the llvm/utils/tablegen
>> directory. Could someone explain why TableGen is divided into these two
>> directories?
>> > _________________________________
>> > LLVM Developers mailing list
>> > llvm-dev at lists.llvm.org
>> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> I am assuming the TableGen code is split like this so that external
>> tools can utilize the TableGen parser without all of the specific logic
>> in the LLVM tablegen binary. I can't find any application that uses it
>> though aside from tablegen proper.
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200804/7442303d/attachment.html>


More information about the llvm-dev mailing list