TBLGEN(1)
πΈ NAME πΈ
tblgen β turning descriptions into C++ code, bestie π
β¨ SYNOPSIS β¨
clang-tblgen [options] [filename]
lldb-tblgen [options] [filename]
llvm-tblgen [options] [filename]
mlir-tblgen [options] [filename]
π DESCRIPTION π
Okay so picture this: *-tblgen is literally a whole family of programs π and what they do is translate target description files (.td files) into C++ code and other output formats. That's it, that's the job.
Lowkey important heads up though: most people using LLVM will never need this program. Not even a little. π
It's used only for writing parts of the compiler, the debugger, and the LLVM target backends. So if you're not out here building compiler guts, you can respectfully close this tab, no shade.
The details of what these *-tblgen programs eat and what they spit out are beyond the scope of this short introduction β so like, fr fr, please go read the TableGen Overview for an intro, and it'll point you at more TableGen docs from there. Iykyk πβ¨
The filename argument specifies the name of the Target Description (.td) file that TableGen processes. That's the vibe check on that one.
π OPTIONS π
β General Options β
-helpβ Print a description of the command line options. Your lil cheat sheet π«Ά-help-listβ Print a description of the command line options, but in a simple list format. Same tea, tidier cup.-D=macronameβ Specify the name of a macro to be defined. The name is defined, but it has no particular value β so it exists, it's just not saying anything. Iconic honestly.-d=filenameβ Specify the name of the dependency filename.-debugβ Enable debug output. Buckle up, it's chatty π-dump-jsonβ Print a JSON representation of all records, suitable for further automated processing. Feed it to your lil scripts, slay π€-I directoryβ Specify where to find other target description files for inclusion. Thedirectoryvalue should be a full or partial path to a directory that contains target description files. Basically "bestie lives over here, go look" π-null-backendβ Parse the source files and build the records, but do not run any backend. This is useful for timing the frontend. All the parsing, none of the follow-through π-o filenameβ Specify the output file name. Iffilenameis-, then*-tblgensends its output to standard output. Dash means "just say it out loud to the terminal," periodt.-print-recordsβ Print all classes and records to standard output (this is the default backend option).-print-detailed-recordsβ Print a detailed report of all global variables, classes, and records to standard output. The deluxe extended cut π-statsβ Print a report with any statistics collected by the backend.-time-phasesβ Time the parser and backend phases and print a report. Stopwatch energy β±οΈ-versionβ Show the version number of the program.-write-if-changedβ Write the output file only if it is new or has changed. No pointless rewrites, we're being efficient π
π¦ clang-tblgen Options π¦
-gen-clang-attr-classesβ Generate Clang attribute clases.-gen-clang-attr-parser-string-switchesβ Generate all parser-related attribute string switches.-gen-clang-attr-subject-match-rules-parser-string-switchesβ Generate all parser-related attribute subject match rule string switches.-gen-clang-attr-implβ Generate Clang attribute implementations.-gen-clang-attr-list"β Generate a Clang attribute list.-gen-clang-attr-subject-match-rule-listβ Generate a Clang attribute subject match rule list.-gen-clang-attr-pch-readβ Generate Clang PCH attribute reader.-gen-clang-attr-pch-writeβ Generate Clang PCH attribute writer.-gen-clang-attr-has-attribute-implβ Generate a Clang attribute spelling list.-gen-clang-attr-spelling-indexβ Generate a Clang attribute spelling index.-gen-clang-attr-ast-visitorβ Generate a recursive AST visitor for Clang attributes.-gen-clang-attr-template-instantiateβ Generate a Clang template instantiate code.-gen-clang-attr-parsed-attr-listβ Generate a Clang parsed attribute list.-gen-clang-attr-parsed-attr-implβ Generate the Clang parsed attribute helpers.-gen-clang-attr-parsed-attr-kindsβ Generate a Clang parsed attribute kinds.-gen-clang-attr-text-node-dumpβ Generate Clang attribute text node dumper.-gen-clang-attr-node-traverseβ Generate Clang attribute traverser.-gen-clang-diags-defsβ Generate Clang diagnostics definitions.-clang-component componentβ Only use warnings from specifiedcomponent. Filtered, bestie π§-gen-clang-diag-groupsβ Generate Clang diagnostic groups.-gen-clang-diags-index-nameβ Generate Clang diagnostic name index.-gen-clang-basic-readerβ Generate Clang BasicReader classes.-gen-clang-basic-writerβ Generate Clang BasicWriter classes.-gen-clang-comment-nodesβ Generate Clang AST comment nodes.-gen-clang-decl-nodesβ Generate Clang AST declaration nodes.-gen-clang-stmt-nodesβ Generate Clang AST statement nodes.-gen-clang-type-nodesβ Generate Clang AST type nodes.-gen-clang-type-readerβ Generate Clang AbstractTypeReader class.-gen-clang-type-writerβ Generate Clang AbstractTypeWriter class.-gen-clang-opcodesβ Generate Clang constexpr interpreter opcodes.-gen-clang-sa-checkersβ Generate Clang static analyzer checkers.-gen-clang-comment-html-tagsβ Generate efficient matchers for HTML tag names that are used in documentation comments.-gen-clang-comment-html-tags-propertiesβ Generate efficient matchers for HTML tag properties.-gen-clang-comment-html-named-character-referencesβ Generate function to translate named character references to UTF-8 sequences.-gen-clang-comment-command-infoβ Generate command properties for commands that are used in documentation comments.-gen-clang-comment-command-listβ Generate list of commands that are used in documentation comments.-gen-clang-opencl-builtinsβ Generate OpenCL builtin declaration handlers.-gen-arm-neonβ Generatearm_neon.hfor Clang.-gen-arm-fp16β Generatearm_fp16.hfor Clang.-gen-arm-bf16β Generatearm_bf16.hfor Clang.-gen-arm-neon-semaβ Generate ARM NEON sema support for Clang.-gen-arm-neon-testβ Generate ARM NEON tests for Clang.-gen-arm-sve-headerβ Generatearm_sve.hfor Clang.-gen-arm-sve-builtinsβ Generatearm_sve_builtins.incfor Clang.-gen-arm-sve-builtin-codegenβ Generatearm_sve_builtin_cg_map.incfor Clang.-gen-arm-sve-typeflagsβ Generatearm_sve_typeflags.incfor Clang.-gen-arm-sve-sema-rangechecksβ Generatearm_sve_sema_rangechecks.incfor Clang.-gen-arm-mve-headerβ Generatearm_mve.hfor Clang.-gen-arm-mve-builtin-defβ Generate ARM MVE builtin definitions for Clang.-gen-arm-mve-builtin-semaβ Generate ARM MVE builtin sema checks for Clang.-gen-arm-mve-builtin-codegenβ Generate ARM MVE builtin code-generator for Clang.-gen-arm-mve-builtin-aliasesβ Generate list of valid ARM MVE builtin aliases for Clang.-gen-arm-cde-headerβ Generatearm_cde.hfor Clang.-gen-arm-cde-builtin-defβ Generate ARM CDE builtin definitions for Clang.-gen-arm-cde-builtin-semaβ Generate ARM CDE builtin sema checks for Clang.-gen-arm-cde-builtin-codegenβ Generate ARM CDE builtin code-generator for Clang.-gen-arm-cde-builtin-aliasesβ Generate list of valid ARM CDE builtin aliases for Clang.-gen-riscv-vector-headerβ Generateriscv_vector.hfor Clang.-gen-riscv-vector-builtinsβ Generateriscv_vector_builtins.incfor Clang.-gen-riscv-vector-builtin-codegenβ Generateriscv_vector_builtin_cg.incfor Clang.-gen-attr-docsβ Generate attribute documentation.-gen-diag-docsβ Generate diagnostic documentation.-gen-opt-docsβ Generate option documentation.-gen-clang-data-collectorsβ Generate data collectors for AST nodes.-gen-clang-test-pragma-attribute-supported-attributesβ Generate a list of attributes supported by#pragma Clangattribute for testing purposes.
π lldb-tblgen Options π
gen-lldb-option-defsβ Generate lldbOptionDefinitionvalues.gen-lldb-property-defsβ Generate lldbPropertyDefinitionvalues.gen-lldb-property-enum-defsβ Generate lldbPropertyDefinitionenum values.
π₯ llvm-tblgen Options π₯
-gen-asm-matcherβ Generate assembly instruction matcher.-match-prefix=prefixβ Make-gen-asm-matchermatch only instructions with the givenprefix. Only the ones that start right, bestie β¨-gen-asm-parserβ Generate assembly instruction parser.-asmparsernum=nβ Make-gen-asm-parseremit assembly parser numbern.-gen-asm-writerβ Generate assembly writer.-asmwriternum=nβ Make-gen-asm-writeremit assembly writer numbern.-gen-attrsβ Generate attributes.-gen-automataβ Generate generic automata.-gen-callingconvβ Generate calling convention descriptions.-gen-compress-inst-emitterβ Generate RISC-V compressed instructions.-gen-ctagsβ Generate ctags-compatible index.-gen-dag-iselβ Generate a DAG (directed acyclic graph) instruction selector.-instrument-coverageβ Make-gen-dag-iselgenerate tables to help identify the patterns matched.-omit-commentsβ Make-gen-dag-iselomit comments. The default isfalse.-gen-dfa-packetizerβ Generate DFA Packetizer for VLIW targets.-gen-directive-declβ Generate directive related declaration code (header file).-gen-directive-genβ Generate directive related implementation code part.-gen-directive-implβ Generate directive related implementation code.-gen-disassemblerβ Generate disassembler.-gen-emitterβ Generate machine code emitter.-gen-exegesisβ Generatellvm-exegesistables.-gen-fast-iselβ Generate a βfastβ instruction selector.-gen-global-iselβ Generate GlobalISel selector.-gisel-coverage-file=filenameβ Specify the file from which to retrieve coverage information.-instrument-gisel-coverageβ Make-gen-global-iselgenerate coverage instrumentation.-optimize-match-tableβ Make-gen-global-iselgenerate an optimized version of the match table.-warn-on-skipped-patternsβ Make-gen-global-iselexplain why a pattern was skipped for inclusion. Receipts, we love to see it π«Ά-gen-global-isel-combinerβ Generate GlobalISel combiner.-combiners=listβ Make-gen-global-isel-combineremit the specified combiners.-gicombiner-show-expansionsβ Make-gen-global-isel-combineruse C++ comments to indicate occurrences of code expansion.
-gicombiner-stop-after-buildβ makes-gen-global-isel-combinerdip out right after it's built the match tree, no further processing π-gicombiner-stop-after-parseβ makes-gen-global-isel-combinerstop once it's parsed the rules and dump the state, that's it, that's the whole job π«Ά-gen-instr-infoβ generate instruction descriptions β¨-gen-instr-docsβ generate instruction documentation π-gen-intrinsic-enumsβ generate intrinsic enums π-intrinsic-prefix=prefixβ makes-gen-intrinsic-enumsspit out intrinsics with this target prefix, okurrr-gen-intrinsic-implβ generate intrinsic information π₯-gen-opt-parser-defsβ generate options definitions π-gen-opt-rstβ generate option RST πΈ-gen-pseudo-loweringβ generate pseudo instruction lowering π-gen-register-bankβ generate register bank descriptions π-gen-register-infoβ generate registers and register classes info π-register-info-debugβ makes-gen-register-infodump register information for debugging, for when you gotta snoop π-gen-searchable-tablesβ generate generic searchable tables. See TableGen BackEnds for the detailed description, iykyk π-gen-subtargetβ generate subtarget enumerations β-gen-x86-EVEX2VEX-tablesβ generate X86 EVEX to VEX compress tables π¦-gen-x86-fold-tablesβ generate X86 fold tables π-long-string-literalsβ when emitting large string tables, prefer string literals over comma-separated char literals. This can be a readability and compile-time performance win, but it upsets some compilers π (the compilers are being dramatic, not us)-print-enumsβ print enumeration values for a class π-class=classnameβ makes-print-enumsprint the enumeration list for the specified class π-print-setsβ print expanded sets for testing DAG exprs π§
β¨ mlir-tblgen Options β¨
okay bestie, new subsection, same energy, we're still in OPTIONS π
-gen-avail-interface-declsβ generate availability interface declarations πΈ-gen-avail-interface-defsβ generate op interface definitions π-gen-dialect-docβ generate dialect documentation π-dialectβ the dialect to generate π-gen-directive-declβ generate declarations for directives (OpenMP, etc.) π₯-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 π-llvmir-intrinsics-filterβ only keep the intrinsics with the specified substring in their record name, very picky, love that for us π-dialect-opclass-baseβ the base class for the ops in the dialect we are to emit π-gen-op-declsβ generate operation declarations πΈ-gen-op-defsβ generate operation definitions π-asmformat-error-is-fatalβ emit a fatal error if format parsing fails π no chill whatsoever-op-exclude-regexβ regular expression of name of ops to exclude (no filter if empty) π«-op-include-regexβ regular expression of name of ops to include (no filter if empty) β-gen-op-docβ generate operation documentation π-gen-pass-declsβ generate operation documentation π (yes fr, that's what it says, we're just relaying the message)-name namestringβ the name of this group of passes π·οΈ-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-typedef-declsβ generate TypeDef declarations π-gen-typedef-defsβ generate TypeDef definitions π-typedefs-dialect nameβ generate types for this dialect π§
πͺ EXIT STATUS πͺ
If -tblgen succeeds, it will exit with 0 β¨. Otherwise, if an error occurs, it will exit with a non-zero value π. That's the whole vibe check.
π AUTHOR π
Maintained by the LLVM Team (<https://llvm.org/>). They're the main characters fr fr π«Ά
Β©οΈ COPYRIGHT Β©οΈ
2003-2025, LLVM Project π
and that's a wrap on TBLGEN(1), bestie!! this page is from the LLVM source, dated2025-05-22, and it lives in section14of the manual π go forth and tblgen responsibly, mwah π β¨π¦
π¦ where this page comes from
- ubuntu questing: llvm-14 1:14.0.6-20ubuntu3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms