TBLGEN(1)
TBLGEN π β¨
ok bestie, welcome to the tblgen family β part of LLVM, and it's giving compiler-girlboss energy π
β¨ NAME β¨
tblgen β Description to C++ Code π¦
β¨ SYNOPSIS β¨
clang-tblgen [options] [filename]
lldb-tblgen [options] [filename]
llvm-tblgen [options] [filename]
mlir-tblgen [options] [filename]
β¨ DESCRIPTION β¨
okay so *-tblgen is literally a whole family of programs π that take target description files (.td files, bestie) and translate them into C++ code plus other output formats. no cap. π«Ά
ngl, most people using LLVM will never need to touch this program. it's the backstage-pass situation β it's only used when you're writing parts of the compiler, the debugger, and the LLVM target backends. main character energy, but in a "you probably don't need me" way π
the actual details of what goes in and what comes out of the *-tblgen programs? way beyond the scope of this lil intro π please go look at the TableGen Overview for an introduction and for pointers to more TableGen docs.
the filename argument specifies the name of the Target Description (.td) file that TableGen processes. periodt. π
β¨ OPTIONS β¨
πΈ General Options πΈ
-helpβ Print a description of the command line options. π«Ά-help-listβ Print a description of the command line options in a simple list format. cute and tidy β¨-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 out here with no personality π-d=filenameβ Specify the name of the dependency filename.-debugβ Enable debug output. π-dump-jsonβ Print a JSON representation of all records, suitable for further automated processing. for when you want machines to read your vibes π€-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.-null-backendβ Parse the source files and build the records, but do not run any backend. This is useful for timing the frontend. it does the reading and then just... doesn't do the homework π-o filenameβ Specify the output file name. Iffilenameis-, then*-tblgensends its output to standard output.-print-recordsβ Print all classes and records to standard output (default backend option). the default, bestie π-print-detailed-recordsβ Print a detailed report of all global variables, classes, and records to standard output. the β¨deluxeβ¨ version-statsβ Print a report with any statistics collected by the backend. π-time-phasesβ Time the parser and backend phases and print a report. β±οΈ-versionβ Show the version number of the program.-write-if-changedβ Write the output file only if it is new or has changed. lowkey the politest option here π«Ά
π clang-tblgen Options π
-gen-clang-attr-classesβ Generate Clang attribute clases. (yes, "clases", we said what we said π )-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 specified component.-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 Clang attributefor testing purposes.
π¦ lldb-tblgen Options π¦
heads up bestie, these ones are listed without a leading dash in the original β so we keep them exactly as they are π
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 given prefix.-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β Generate llvm-exegesis tables.-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.-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.
and that's part 1 bestieβ¦ there's more coming, don't go anywhere π
-gicombiner-stop-after-buildβ makes-gen-global-isel-combinerstop processing right after it's built the match tree. like, done, no more β-gicombiner-stop-after-parseβ makes-gen-global-isel-combinerstop after parsing the rules and then dump state. early exit queen π-gen-instr-infoβ generate instruction descriptions.-gen-instr-docsβ generate instruction documentation.-gen-intrinsic-enumsβ generate intrinsic enums.- *
-intrinsic-prefix=prefix* β makes-gen-intrinsic-enumsgenerate intrinsics with this target prefix. so like, the prefix u want, bestie π -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. lil peek behind the curtain π«£-gen-searchable-tablesβ generate generic searchable tables. for the whole detailed rundown, go look at TableGen BackEnds, it's all there β¨-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. it can be a readability and compile-time performance win, but ngl it upsets some compilers π-print-enumsβ print enumeration values for a class.- *
-class=classname* β makes-print-enumsprint the enumeration list for the class u specified. tell it which one bestie π -print-setsβ print expanded sets for testing DAG exprs.
β¨ mlir-tblgen Options β¨
okay now we're in the mlir-tblgen era and the list keeps going, she's thorough π
-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.-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, no mercy π-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.-namenamestring β 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-dialectname β generate types for this dialect.
π EXIT STATUS π
if *-tblgen succeeds, it will exit with 0. slay, we love a clean exit π
otherwise, if an error occurs, it will exit with a non-zero value. and then u get to debug, which is its own journey bestie π
π AUTHOR π
maintained by the LLVM Team (https://llvm.org/). iconic behavior, fr fr π«Ά
π COPYRIGHT π
2003-2024, LLVM Project
and that's the whole page, no cap β¨ this was TBLGEN(1), version 15, dated 2024-04-14 β go forth and generate some tables, bestie, u got this π¦ππ
π¦ where this page comes from
- ubuntu noble: llvm-16 1:16.0.6-23ubuntu4 Β· APACHE-2-LLVM-EXCEPTIONS
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms