[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / docs / CommandGuide / tblgen.rst
bloba7c254901392aa428b70a7a18140c4000e0d8147
1 tblgen - Description to C++ Code
2 ================================
4 .. program:: tblgen
6 SYNOPSIS
7 --------
9 :program:`clang-tblgen` [*options*] [*filename*]
11 :program:`lldb-tblgen` [*options*] [*filename*]
13 :program:`llvm-tblgen` [*options*] [*filename*]
15 :program:`mlir-tblgen` [*options*] [*filename*]
17 DESCRIPTION
18 -----------
20 :program:`*-tblgen` is a family of programs that translates target
21 description (``.td``) files into C++ code and other output formats. Most
22 users of LLVM will not need to use this program. It is used only for
23 writing parts of the compiler, debugger, and LLVM target backends.
25 The details of the input and output of the :program:`*-tblgen` programs is
26 beyond the scope of this short introduction; please see the :doc:`TableGen
27 Overview <../TableGen/index>` for an introduction and for references to
28 additional TableGen documents.
30 The *filename* argument specifies the name of the Target Description (``.td``)
31 file that TableGen processes.
33 OPTIONS
34 -------
36 General Options
37 ~~~~~~~~~~~~~~~
39 .. option:: -help
41  Print a description of the command line options.
43 .. option:: -help-list
45   Print a description of the command line options in a simple list format.
47 .. option:: -D=macroname
49   Specify the name of a macro to be defined. The name is defined, but it
50   has no particular value.
52 .. option:: -d=filename
54   Specify the name of the dependency filename.
56 .. option:: -debug
58   Enable debug output.
60 .. option:: -dump-json
62  Print a JSON representation of all records, suitable for further
63  automated processing.
65 .. option:: -I directory
67  Specify where to find other target description files for inclusion.  The
68  ``directory`` value should be a full or partial path to a directory that
69  contains target description files.
71 .. option:: -null-backend
73   Parse the source files and build the records, but do not run any
74   backend. This is useful for timing the frontend.
76 .. option:: -o filename
78  Specify the output file name.  If ``filename`` is ``-``, then
79  :program:`*-tblgen` sends its output to standard output.
81 .. option:: -print-records
83  Print all classes and records to standard output (default backend option).
85 .. option:: -print-detailed-records
87   Print a detailed report of all global variables, classes, and records
88   to standard output.
90 .. option:: -stats
92   Print a report with any statistics collected by the backend.
94 .. option:: -time-phases
96   Time the parser and backend phases and print a report.
98 .. option:: -version
100  Show the version number of the program.
102 .. option:: -write-if-changed
104   Write the output file only if it is new or has changed.
107 clang-tblgen Options
108 ~~~~~~~~~~~~~~~~~~~~
110 .. option:: -gen-clang-attr-classes
112   Generate Clang attribute clases.
114 .. option:: -gen-clang-attr-parser-string-switches
116   Generate all parser-related attribute string switches.
118 .. option:: -gen-clang-attr-subject-match-rules-parser-string-switches
120   Generate all parser-related attribute subject match rule string switches.
122 .. option:: -gen-clang-attr-impl
124   Generate Clang attribute implementations.
126 .. option:: -gen-clang-attr-list"
128   Generate a Clang attribute list.
130 .. option:: -gen-clang-attr-subject-match-rule-list
132   Generate a Clang attribute subject match rule list.
134 .. option:: -gen-clang-attr-pch-read
136   Generate Clang PCH attribute reader.
138 .. option:: -gen-clang-attr-pch-write
140   Generate Clang PCH attribute writer.
142 .. option:: -gen-clang-attr-has-attribute-impl
144   Generate a Clang attribute spelling list.
146 .. option:: -gen-clang-attr-spelling-index
148   Generate a Clang attribute spelling index.
150 .. option:: -gen-clang-attr-ast-visitor
152   Generate a recursive AST visitor for Clang attributes.
154 .. option:: -gen-clang-attr-template-instantiate
156   Generate a Clang template instantiate code.
158 .. option:: -gen-clang-attr-parsed-attr-list
160   Generate a Clang parsed attribute list.
162 .. option:: -gen-clang-attr-parsed-attr-impl
164   Generate the Clang parsed attribute helpers.
166 .. option:: -gen-clang-attr-parsed-attr-kinds
168   Generate a Clang parsed attribute kinds.
170 .. option:: -gen-clang-attr-text-node-dump
172   Generate Clang attribute text node dumper.
174 .. option:: -gen-clang-attr-node-traverse
176   Generate Clang attribute traverser.
178 .. option:: -gen-clang-diags-defs
180   Generate Clang diagnostics definitions.
182 .. option:: -clang-component component
184   Only use warnings from specified component.
186 .. option:: -gen-clang-diag-groups
188   Generate Clang diagnostic groups.
190 .. option:: -gen-clang-diags-index-name
192   Generate Clang diagnostic name index.
194 .. option:: -gen-clang-basic-reader
196   Generate Clang BasicReader classes.
198 .. option:: -gen-clang-basic-writer
200   Generate Clang BasicWriter classes.
202 .. option:: -gen-clang-comment-nodes
204   Generate Clang AST comment nodes.
206 .. option:: -gen-clang-decl-nodes
208   Generate Clang AST declaration nodes.
210 .. option:: -gen-clang-stmt-nodes
212   Generate Clang AST statement nodes.
214 .. option:: -gen-clang-type-nodes
216   Generate Clang AST type nodes.
218 .. option:: -gen-clang-type-reader
220   Generate Clang AbstractTypeReader class.
222 .. option:: -gen-clang-type-writer
224   Generate Clang AbstractTypeWriter class.
226 .. option:: -gen-clang-opcodes
228   Generate Clang constexpr interpreter opcodes.
230 .. option:: -gen-clang-sa-checkers
232   Generate Clang static analyzer checkers.
234 .. option:: -gen-clang-comment-html-tags
236   Generate efficient matchers for HTML tag names that are used in
237   documentation comments.
239 .. option:: -gen-clang-comment-html-tags-properties
241   Generate efficient matchers for HTML tag properties.
243 .. option:: -gen-clang-comment-html-named-character-references
245   Generate function to translate named character references to UTF-8 sequences.
247 .. option:: -gen-clang-comment-command-info
249   Generate command properties for commands that are used in documentation comments.
251 .. option:: -gen-clang-comment-command-list
253   Generate list of commands that are used in documentation comments.
255 .. option:: -gen-clang-opencl-builtins
257   Generate OpenCL builtin declaration handlers.
259 .. option:: -gen-arm-neon
261   Generate ``arm_neon.h`` for Clang.
263 .. option:: -gen-arm-fp16
265   Generate ``arm_fp16.h`` for Clang.
267 .. option:: -gen-arm-bf16
269   Generate ``arm_bf16.h`` for Clang.
271 .. option:: -gen-arm-neon-sema
273   Generate ARM NEON sema support for Clang.
275 .. option:: -gen-arm-neon-test
277   Generate ARM NEON tests for Clang.
279 .. option:: -gen-arm-sve-header
281   Generate ``arm_sve.h`` for Clang.
283 .. option:: -gen-arm-sve-builtins
285   Generate ``arm_sve_builtins.inc`` for Clang.
287 .. option:: -gen-arm-sve-builtin-codegen
289   Generate ``arm_sve_builtin_cg_map.inc`` for Clang.
291 .. option:: -gen-arm-sve-typeflags
293   Generate ``arm_sve_typeflags.inc`` for Clang.
295 .. option:: -gen-arm-sve-sema-rangechecks
297   Generate ``arm_sve_sema_rangechecks.inc`` for Clang.
299 .. option:: -gen-arm-mve-header
301   Generate ``arm_mve.h`` for Clang.
303 .. option:: -gen-arm-mve-builtin-def
305   Generate ARM MVE builtin definitions for Clang.
307 .. option:: -gen-arm-mve-builtin-sema
309   Generate ARM MVE builtin sema checks for Clang.
311 .. option:: -gen-arm-mve-builtin-codegen
313   Generate ARM MVE builtin code-generator for Clang.
315 .. option:: -gen-arm-mve-builtin-aliases
317   Generate list of valid ARM MVE builtin aliases for Clang.
319 .. option:: -gen-arm-cde-header
321   Generate ``arm_cde.h`` for Clang.
323 .. option:: -gen-arm-cde-builtin-def
325   Generate ARM CDE builtin definitions for Clang.
327 .. option:: -gen-arm-cde-builtin-sema
329   Generate ARM CDE builtin sema checks for Clang.
331 .. option:: -gen-arm-cde-builtin-codegen
333   Generate ARM CDE builtin code-generator for Clang.
335 .. option:: -gen-arm-cde-builtin-aliases
337   Generate list of valid ARM CDE builtin aliases for Clang.
339 .. option:: -gen-riscv-vector-header
341   Generate ``riscv_vector.h`` for Clang.
343 .. option:: -gen-riscv-vector-builtins
345   Generate ``riscv_vector_builtins.inc`` for Clang.
347 .. option:: -gen-riscv-vector-builtin-codegen
349   Generate ``riscv_vector_builtin_cg.inc`` for Clang.
351 .. option:: -gen-attr-docs
353   Generate attribute documentation.
355 .. option:: -gen-diag-docs
357   Generate diagnostic documentation.
359 .. option:: -gen-opt-docs
361   Generate option documentation.
363 .. option:: -gen-clang-data-collectors
365   Generate data collectors for AST nodes.
367 .. option:: -gen-clang-test-pragma-attribute-supported-attributes
369   Generate a list of attributes supported by ``#pragma`` Clang attribute for
370   testing purposes.
373 lldb-tblgen Options
374 ~~~~~~~~~~~~~~~~~~~
376 .. option:: gen-lldb-option-defs
378   Generate lldb OptionDefinition values.
380 .. option:: gen-lldb-property-defs
382   Generate lldb PropertyDefinition values.
384 .. option:: gen-lldb-property-enum-defs
386   Generate lldb PropertyDefinition enum values.
389 llvm-tblgen Options
390 ~~~~~~~~~~~~~~~~~~~
392 .. option:: -gen-asm-matcher
394  Generate assembly instruction matcher.
396 .. option:: -match-prefix=prefix
398   Make -gen-asm-matcher match only instructions with the given *prefix*.
400 .. option:: -gen-asm-parser
402  Generate assembly instruction parser.
404 .. option:: -asmparsernum=n
406  Make -gen-asm-parser emit assembly parser number *n*.
408 .. option:: -gen-asm-writer
410  Generate assembly writer.
412 .. option:: -asmwriternum=n
414  Make -gen-asm-writer emit assembly writer number *n*.
416 .. option:: -gen-attrs
418   Generate attributes.
420 .. option:: -gen-automata
422   Generate generic automata.
424 .. option:: -gen-callingconv
426   Generate calling convention descriptions.
428 .. option:: -gen-compress-inst-emitter
430   Generate RISC-V compressed instructions.
432 .. option:: -gen-ctags
434   Generate ctags-compatible index.
436 .. option:: -gen-dag-isel
438  Generate a DAG (directed acyclic graph) instruction selector.
440 .. option:: -instrument-coverage
442   Make -gen-dag-isel generate tables to help identify the patterns matched.
444 .. option:: -omit-comments
446   Make -gen-dag-isel omit comments. The default is false.
448 .. option:: -gen-dfa-packetizer
450  Generate DFA Packetizer for VLIW targets.
452 .. option:: -gen-directive-decl
454   Generate directive related declaration code (header file).
456 .. option:: -gen-directive-gen
458   Generate directive related implementation code part.
460 .. option:: -gen-directive-impl
462   Generate directive related implementation code.
464 .. option:: -gen-disassembler
466   Generate disassembler.
468 .. option:: -gen-emitter
470  Generate machine code emitter.
472 .. option:: -gen-exegesis
474   Generate llvm-exegesis tables.
476 .. option:: -gen-fast-isel
478   Generate a "fast" instruction selector.
480 .. option:: -gen-global-isel
482   Generate GlobalISel selector.
484 .. option:: -gisel-coverage-file=filename
486   Specify the file from which to retrieve coverage information.
488 .. option:: -instrument-gisel-coverage
490   Make -gen-global-isel generate coverage instrumentation.
492 .. option:: -optimize-match-table
494   Make -gen-global-isel generate an optimized version of the match table.
496 .. option:: -warn-on-skipped-patterns
498   Make -gen-global-isel explain why a pattern was skipped for inclusion.
500 .. option:: -gen-global-isel-combiner
502   Generate GlobalISel combiner.
504 .. option:: -combiners=list
506   Make -gen-global-isel-combiner emit the specified combiners.
508 .. option:: -gicombiner-show-expansions
510   Make -gen-global-isel-combiner use C++ comments to indicate occurrences
511   of code expansion.
513 .. option:: -gicombiner-stop-after-build
515   Make -gen-global-isel-combiner stop processing after building the match tree.
517 .. option:: -gicombiner-stop-after-parse
519   Make -gen-global-isel-combiner stop processing after parsing rules
520   and dump state.
522 .. option:: -gen-instr-info
524  Generate instruction descriptions.
526 .. option:: -gen-instr-docs
528  Generate instruction documentation.
530 .. option:: -gen-intrinsic-enums
532  Generate intrinsic enums.
534 .. option:: -intrinsic-prefix=prefix
536   Make -gen-intrinsic-enums generate intrinsics with this target *prefix*.
538 .. option:: -gen-intrinsic-impl
540  Generate intrinsic information.
542 .. option:: -gen-opt-parser-defs
544   Generate options definitions.
546 .. option:: -gen-opt-rst
548   Generate option RST.
550 .. option:: -gen-pseudo-lowering
552  Generate pseudo instruction lowering.
554 .. option:: -gen-register-bank
556   Generate register bank descriptions.
558 .. option:: -gen-register-info
560   Generate registers and register classes info.
562 .. option:: -register-info-debug
564   Make -gen-register-info dump register information for debugging.
566 .. option:: -gen-searchable-tables
568   Generate generic searchable tables. See :doc:`TableGen BackEnds <../TableGen/BackEnds>`
569   for a detailed description.
571 .. option:: -gen-subtarget
573  Generate subtarget enumerations.
575 .. option:: -gen-x86-EVEX2VEX-tables
577   Generate X86 EVEX to VEX compress tables.
579 .. option:: -gen-x86-fold-tables
581   Generate X86 fold tables.
583 .. option:: -long-string-literals
585   When emitting large string tables, prefer string literals over
586   comma-separated char literals. This can be a readability and
587   compile-time performance win, but upsets some compilers.
589 .. option:: -print-enums
591  Print enumeration values for a class.
593 .. option:: -class=classname
595  Make -print-enums print the enumeration list for the specified class.
597 .. option:: -print-sets
599  Print expanded sets for testing DAG exprs.
602 mlir-tblgen Options
603 ~~~~~~~~~~~~~~~~~~~
605 .. option:: -gen-avail-interface-decls
607   Generate availability interface declarations.
609 .. option:: -gen-avail-interface-defs
611   Generate op interface definitions.
613 .. option:: -gen-dialect-doc
615   Generate dialect documentation.
617 .. option:: -dialect
619   The dialect to generate.
621 .. option:: -gen-directive-decl
623   Generate declarations for directives (OpenMP, etc.).
625 .. option:: -gen-enum-decls
627   Generate enum utility declarations.
629 .. option:: -gen-enum-defs
631   Generate enum utility definitions.
633 .. option:: -gen-enum-from-llvmir-conversions
635   Generate conversions of EnumAttrs from LLVM IR.
637 .. option:: -gen-enum-to-llvmir-conversions
639   Generate conversions of EnumAttrs to LLVM IR.
641 .. option:: -gen-llvmir-conversions
643   Generate LLVM IR conversions.
645 .. option:: -gen-llvmir-intrinsics
647   Generate LLVM IR intrinsics.
649 .. option:: -llvmir-intrinsics-filter
651   Only keep the intrinsics with the specified substring in their record name.
653 .. option:: -dialect-opclass-base
655   The base class for the ops in the dialect we are to emit.
657 .. option:: -gen-op-decls
659   Generate operation declarations.
661 .. option:: -gen-op-defs
663   Generate operation definitions.
665 .. option:: -asmformat-error-is-fatal
667   Emit a fatal error if format parsing fails.
669 .. option:: -op-exclude-regex
671   Regular expression of name of ops to exclude (no filter if empty).
673 .. option:: -op-include-regex
675   Regular expression of name of ops to include (no filter if empty).
677 .. option:: -gen-op-doc
679   Generate operation documentation.
681 .. option:: -gen-pass-decls
683   Generate operation documentation.
685 .. option:: -name namestring
687   The name of this group of passes.
689 .. option:: -gen-pass-doc
691   Generate pass documentation.
693 .. option:: -gen-rewriters
695   Generate pattern rewriters.
697 .. option:: -gen-spirv-avail-impls
699   Generate SPIR-V operation utility definitions.
701 .. option:: -gen-spirv-capability-implication
703   Generate utility function to return implied capabilities for a given capability.
705 .. option:: -gen-spirv-enum-avail-decls
707   Generate SPIR-V enum availability declarations.
709 .. option:: -gen-spirv-enum-avail-defs
711   Generate SPIR-V enum availability definitions.
713 .. option:: -gen-spirv-op-utils
715   Generate SPIR-V operation utility definitions.
717 .. option:: -gen-spirv-serialization
719   Generate SPIR-V (de)serialization utilities and functions.
721 .. option:: -gen-struct-attr-decls
723   Generate struct utility declarations.
725 .. option:: -gen-struct-attr-defs
727   Generate struct utility definitions.
729 .. option:: -gen-typedef-decls
731   Generate TypeDef declarations.
733 .. option:: -gen-typedef-defs
735   Generate TypeDef definitions.
737 .. option:: -typedefs-dialect name
739   Generate types for this dialect.
741 EXIT STATUS
742 -----------
744 If :program:`*-tblgen` succeeds, it will exit with 0.  Otherwise, if an error
745 occurs, it will exit with a non-zero value.