tblgen - Description to C++ Code
================================

.. program:: tblgen

SYNOPSIS
--------

:program:`clang-tblgen` [*options*] [*filename*]

:program:`lldb-tblgen` [*options*] [*filename*]

:program:`llvm-tblgen` [*options*] [*filename*]

:program:`mlir-tblgen` [*options*] [*filename*]

DESCRIPTION
-----------

:program:`*-tblgen` is a family of programs that translates target
description (``.td``) files into C++ code and other output formats. Most
users of LLVM will not need to use this program. It is used only for
writing parts of the compiler, debugger, and LLVM target backends.

The details of the input and output of the :program:`*-tblgen` programs is
beyond the scope of this short introduction; please see the :doc:`TableGen
Overview <../TableGen/index>` for an introduction and for references to
additional TableGen documents.

The *filename* argument specifies the name of the Target Description (``.td``)
file that TableGen processes.

OPTIONS
-------

General Options
~~~~~~~~~~~~~~~

.. option:: -help

 Print a description of the command line options.

.. option:: -help-list

  Print a description of the command line options in a simple list format.

.. option:: -D=macroname

  Specify the name of a macro to be defined. The name is defined, but it
  has no particular value.

.. option:: -d=filename

  Specify the name of the dependency filename.

.. option:: -debug

  Enable debug output.

.. option:: -dump-json

 Print a JSON representation of all records, suitable for further
 automated processing.

.. option:: -I directory

 Specify where to find other target description files for inclusion.  The
 ``directory`` value should be a full or partial path to a directory that
 contains target description files.

.. option:: -null-backend

  Parse the source files and build the records, but do not run any
  backend. This is useful for timing the frontend.

.. option:: -o filename

 Specify the output file name.  If ``filename`` is ``-``, then
 :program:`*-tblgen` sends its output to standard output.

.. option:: -print-records

 Print all classes and records to standard output (default backend option).

.. option:: -print-detailed-records

  Print a detailed report of all global variables, classes, and records
  to standard output.

.. option:: -stats

  Print a report with any statistics collected by the backend.

.. option:: -time-phases

  Time the parser and backend phases and print a report.

.. option:: -version

 Show the version number of the program.

.. option:: -write-if-changed

  Write the output file only if it is new or has changed.


clang-tblgen Options
~~~~~~~~~~~~~~~~~~~~

.. option:: -gen-clang-attr-classes

  Generate Clang attribute clases.

.. option:: -gen-clang-attr-parser-string-switches

  Generate all parser-related attribute string switches.

.. option:: -gen-clang-attr-subject-match-rules-parser-string-switches

  Generate all parser-related attribute subject match rule string switches.

.. option:: -gen-clang-attr-impl

  Generate Clang attribute implementations.

.. option:: -gen-clang-attr-list"

  Generate a Clang attribute list.

.. option:: -gen-clang-attr-subject-match-rule-list

  Generate a Clang attribute subject match rule list.

.. option:: -gen-clang-attr-pch-read

  Generate Clang PCH attribute reader.

.. option:: -gen-clang-attr-pch-write

  Generate Clang PCH attribute writer.

.. option:: -gen-clang-attr-has-attribute-impl

  Generate a Clang attribute spelling list.

.. option:: -gen-clang-attr-spelling-index

  Generate a Clang attribute spelling index.

.. option:: -gen-clang-attr-ast-visitor

  Generate a recursive AST visitor for Clang attributes.

.. option:: -gen-clang-attr-template-instantiate

  Generate a Clang template instantiate code.

.. option:: -gen-clang-attr-parsed-attr-list

  Generate a Clang parsed attribute list.

.. option:: -gen-clang-attr-parsed-attr-impl

  Generate the Clang parsed attribute helpers.

.. option:: -gen-clang-attr-parsed-attr-kinds

  Generate a Clang parsed attribute kinds.

.. option:: -gen-clang-attr-text-node-dump

  Generate Clang attribute text node dumper.

.. option:: -gen-clang-attr-node-traverse

  Generate Clang attribute traverser.

.. option:: -gen-clang-diags-defs

  Generate Clang diagnostics definitions.

.. option:: -clang-component component

  Only use warnings from specified component.

.. option:: -gen-clang-diag-groups

  Generate Clang diagnostic groups.

.. option:: -gen-clang-diags-index-name

  Generate Clang diagnostic name index.

.. option:: -gen-clang-basic-reader

  Generate Clang BasicReader classes.

.. option:: -gen-clang-basic-writer

  Generate Clang BasicWriter classes.

.. option:: -gen-clang-comment-nodes

  Generate Clang AST comment nodes.

.. option:: -gen-clang-decl-nodes

  Generate Clang AST declaration nodes.

.. option:: -gen-clang-stmt-nodes

  Generate Clang AST statement nodes.

.. option:: -gen-clang-type-nodes

  Generate Clang AST type nodes.

.. option:: -gen-clang-type-reader

  Generate Clang AbstractTypeReader class.

.. option:: -gen-clang-type-writer

  Generate Clang AbstractTypeWriter class.

.. option:: -gen-clang-opcodes

  Generate Clang constexpr interpreter opcodes.

.. option:: -gen-clang-sa-checkers

  Generate Clang static analyzer checkers.

.. option:: -gen-clang-comment-html-tags

  Generate efficient matchers for HTML tag names that are used in
  documentation comments.

.. option:: -gen-clang-comment-html-tags-properties

  Generate efficient matchers for HTML tag properties.

.. option:: -gen-clang-comment-html-named-character-references

  Generate function to translate named character references to UTF-8 sequences.

.. option:: -gen-clang-comment-command-info

  Generate command properties for commands that are used in documentation comments.

.. option:: -gen-clang-comment-command-list

  Generate list of commands that are used in documentation comments.

.. option:: -gen-clang-opencl-builtins

  Generate OpenCL builtin declaration handlers.

.. option:: -gen-arm-neon

  Generate ``arm_neon.h`` for Clang.

.. option:: -gen-arm-fp16

  Generate ``arm_fp16.h`` for Clang.

.. option:: -gen-arm-bf16

  Generate ``arm_bf16.h`` for Clang.

.. option:: -gen-arm-neon-sema

  Generate ARM NEON sema support for Clang.

.. option:: -gen-arm-neon-test

  Generate ARM NEON tests for Clang.

.. option:: -gen-arm-sve-header

  Generate ``arm_sve.h`` for Clang.

.. option:: -gen-arm-sve-builtins

  Generate ``arm_sve_builtins.inc`` for Clang.

.. option:: -gen-arm-sve-builtin-codegen

  Generate ``arm_sve_builtin_cg_map.inc`` for Clang.

.. option:: -gen-arm-sve-typeflags

  Generate ``arm_sve_typeflags.inc`` for Clang.

.. option:: -gen-arm-sve-sema-rangechecks

  Generate ``arm_sve_sema_rangechecks.inc`` for Clang.

.. option:: -gen-arm-mve-header

  Generate ``arm_mve.h`` for Clang.

.. option:: -gen-arm-mve-builtin-def

  Generate ARM MVE builtin definitions for Clang.

.. option:: -gen-arm-mve-builtin-sema

  Generate ARM MVE builtin sema checks for Clang.

.. option:: -gen-arm-mve-builtin-codegen

  Generate ARM MVE builtin code-generator for Clang.

.. option:: -gen-arm-mve-builtin-aliases

  Generate list of valid ARM MVE builtin aliases for Clang.

.. option:: -gen-arm-cde-header

  Generate ``arm_cde.h`` for Clang.

.. option:: -gen-arm-cde-builtin-def

  Generate ARM CDE builtin definitions for Clang.

.. option:: -gen-arm-cde-builtin-sema

  Generate ARM CDE builtin sema checks for Clang.

.. option:: -gen-arm-cde-builtin-codegen

  Generate ARM CDE builtin code-generator for Clang.

.. option:: -gen-arm-cde-builtin-aliases

  Generate list of valid ARM CDE builtin aliases for Clang.

.. option:: -gen-riscv-vector-header

  Generate ``riscv_vector.h`` for Clang.

.. option:: -gen-riscv-vector-builtins

  Generate ``riscv_vector_builtins.inc`` for Clang.

.. option:: -gen-riscv-vector-builtin-codegen

  Generate ``riscv_vector_builtin_cg.inc`` for Clang.

.. option:: -gen-attr-docs

  Generate attribute documentation.

.. option:: -gen-diag-docs

  Generate diagnostic documentation.

.. option:: -gen-opt-docs

  Generate option documentation.

.. option:: -gen-clang-data-collectors

  Generate data collectors for AST nodes.

.. option:: -gen-clang-test-pragma-attribute-supported-attributes

  Generate a list of attributes supported by ``#pragma`` Clang attribute for
  testing purposes.


lldb-tblgen Options
~~~~~~~~~~~~~~~~~~~

.. option:: gen-lldb-option-defs

  Generate lldb OptionDefinition values.

.. option:: gen-lldb-property-defs

  Generate lldb PropertyDefinition values.

.. option:: gen-lldb-property-enum-defs

  Generate lldb PropertyDefinition enum values.


llvm-tblgen Options
~~~~~~~~~~~~~~~~~~~

.. option:: -gen-asm-matcher

 Generate assembly instruction matcher.

.. option:: -match-prefix=prefix

  Make -gen-asm-matcher match only instructions with the given *prefix*.

.. option:: -gen-asm-parser

 Generate assembly instruction parser.

.. option:: -asmparsernum=n

 Make -gen-asm-parser emit assembly parser number *n*.

.. option:: -gen-asm-writer

 Generate assembly writer.

.. option:: -asmwriternum=n

 Make -gen-asm-writer emit assembly writer number *n*.

.. option:: -gen-attrs

  Generate attributes.

.. option:: -gen-automata

  Generate generic automata.

.. option:: -gen-callingconv

  Generate calling convention descriptions.

.. option:: -gen-compress-inst-emitter

  Generate RISC-V compressed instructions.

.. option:: -gen-ctags

  Generate ctags-compatible index.

.. option:: -gen-dag-isel

 Generate a DAG (directed acyclic graph) instruction selector.

.. option:: -instrument-coverage

  Make -gen-dag-isel generate tables to help identify the patterns matched.

.. option:: -omit-comments

  Make -gen-dag-isel omit comments. The default is false.

.. option:: -gen-dfa-packetizer

 Generate DFA Packetizer for VLIW targets.

.. option:: -gen-directive-decl

  Generate directive related declaration code (header file).

.. option:: -gen-directive-gen

  Generate directive related implementation code part.

.. option:: -gen-directive-impl

  Generate directive related implementation code.

.. option:: -gen-disassembler

  Generate disassembler.

.. option:: -gen-emitter

 Generate machine code emitter.

.. option:: -gen-exegesis

  Generate llvm-exegesis tables.

.. option:: -gen-fast-isel

  Generate a "fast" instruction selector.

.. option:: -gen-global-isel

  Generate GlobalISel selector.

.. option:: -gisel-coverage-file=filename

  Specify the file from which to retrieve coverage information.

.. option:: -instrument-gisel-coverage

  Make -gen-global-isel generate coverage instrumentation.

.. option:: -optimize-match-table

  Make -gen-global-isel generate an optimized version of the match table.

.. option:: -warn-on-skipped-patterns

  Make -gen-global-isel explain why a pattern was skipped for inclusion.

.. option:: -gen-global-isel-combiner

  Generate GlobalISel combiner.

.. option:: -combiners=list

  Make -gen-global-isel-combiner emit the specified combiners.

.. option:: -gicombiner-show-expansions

  Make -gen-global-isel-combiner use C++ comments to indicate occurrences
  of code expansion.

.. option:: -gicombiner-stop-after-build

  Make -gen-global-isel-combiner stop processing after building the match tree.

.. option:: -gicombiner-stop-after-parse

  Make -gen-global-isel-combiner stop processing after parsing rules
  and dump state.

.. option:: -gen-instr-info

 Generate instruction descriptions.

.. option:: -gen-instr-docs

 Generate instruction documentation.

.. option:: -gen-intrinsic-enums

 Generate intrinsic enums.

.. option:: -intrinsic-prefix=prefix

  Make -gen-intrinsic-enums generate intrinsics with this target *prefix*.

.. option:: -gen-intrinsic-impl

 Generate intrinsic information.

.. option:: -gen-opt-parser-defs

  Generate options definitions.

.. option:: -gen-opt-rst

  Generate option RST.

.. option:: -gen-pseudo-lowering

 Generate pseudo instruction lowering.

.. option:: -gen-register-bank

  Generate register bank descriptions.

.. option:: -gen-register-info

  Generate registers and register classes info.

.. option:: -register-info-debug

  Make -gen-register-info dump register information for debugging.

.. option:: -gen-searchable-tables

  Generate generic searchable tables. See :doc:`TableGen BackEnds <../TableGen/BackEnds>`
  for a detailed description.

.. option:: -gen-subtarget

 Generate subtarget enumerations.

.. option:: -gen-x86-EVEX2VEX-tables

  Generate X86 EVEX to VEX compress tables.

.. option:: -gen-x86-fold-tables

  Generate X86 fold tables.

.. option:: -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 upsets some compilers.

.. option:: -print-enums

 Print enumeration values for a class.

.. option:: -class=classname

 Make -print-enums print the enumeration list for the specified class.

.. option:: -print-sets

 Print expanded sets for testing DAG exprs.


mlir-tblgen Options
~~~~~~~~~~~~~~~~~~~

.. option:: -gen-avail-interface-decls

  Generate availability interface declarations.

.. option:: -gen-avail-interface-defs

  Generate op interface definitions.

.. option:: -gen-dialect-doc

  Generate dialect documentation.

.. option:: -dialect

  The dialect to generate.

.. option:: -gen-directive-decl

  Generate declarations for directives (OpenMP, etc.).

.. option:: -gen-enum-decls

  Generate enum utility declarations.

.. option:: -gen-enum-defs

  Generate enum utility definitions.

.. option:: -gen-enum-from-llvmir-conversions

  Generate conversions of EnumAttrs from LLVM IR.

.. option:: -gen-enum-to-llvmir-conversions

  Generate conversions of EnumAttrs to LLVM IR.

.. option:: -gen-llvmir-conversions

  Generate LLVM IR conversions.

.. option:: -gen-llvmir-intrinsics

  Generate LLVM IR intrinsics.

.. option:: -llvmir-intrinsics-filter

  Only keep the intrinsics with the specified substring in their record name.

.. option:: -dialect-opclass-base

  The base class for the ops in the dialect we are to emit.

.. option:: -gen-op-decls

  Generate operation declarations.

.. option:: -gen-op-defs

  Generate operation definitions.

.. option:: -asmformat-error-is-fatal

  Emit a fatal error if format parsing fails.

.. option:: -op-exclude-regex

  Regular expression of name of ops to exclude (no filter if empty).

.. option:: -op-include-regex

  Regular expression of name of ops to include (no filter if empty).

.. option:: -gen-op-doc

  Generate operation documentation.

.. option:: -gen-pass-decls

  Generate operation documentation.

.. option:: -name namestring

  The name of this group of passes.

.. option:: -gen-pass-doc

  Generate pass documentation.

.. option:: -gen-rewriters

  Generate pattern rewriters.

.. option:: -gen-spirv-avail-impls

  Generate SPIR-V operation utility definitions.

.. option:: -gen-spirv-capability-implication

  Generate utility function to return implied capabilities for a given capability.

.. option:: -gen-spirv-enum-avail-decls

  Generate SPIR-V enum availability declarations.

.. option:: -gen-spirv-enum-avail-defs

  Generate SPIR-V enum availability definitions.

.. option:: -gen-spirv-op-utils

  Generate SPIR-V operation utility definitions.

.. option:: -gen-spirv-serialization

  Generate SPIR-V (de)serialization utilities and functions.

.. option:: -gen-struct-attr-decls

  Generate struct utility declarations.

.. option:: -gen-struct-attr-defs

  Generate struct utility definitions.

.. option:: -gen-typedef-decls

  Generate TypeDef declarations.

.. option:: -gen-typedef-defs

  Generate TypeDef definitions.

.. option:: -typedefs-dialect name

  Generate types for this dialect.

EXIT STATUS
-----------

If :program:`*-tblgen` succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.
