[AMDGPU] Infer amdgpu-no-flat-scratch-init attribute in AMDGPUAttributor (#94647)
[llvm-project.git] / llvm / docs / CommandGuide / tblgen.rst
blob92186579e682df38c6657bcf686937d8209e9cc0
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 classes.
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-immcheck-types
281   Generate ``arm_immcheck_types.inc`` for Clang.
283 .. option:: -gen-arm-sve-header
285   Generate ``arm_sve.h`` for Clang.
287 .. option:: -gen-arm-sve-builtins
289   Generate ``arm_sve_builtins.inc`` for Clang.
291 .. option:: -gen-arm-sve-builtin-codegen
293   Generate ``arm_sve_builtin_cg_map.inc`` for Clang.
295 .. option:: -gen-arm-sve-typeflags
297   Generate ``arm_sve_typeflags.inc`` for Clang.
299 .. option:: -gen-arm-sve-sema-rangechecks
301   Generate ``arm_sve_sema_rangechecks.inc`` for Clang.
303 .. option:: -gen-arm-mve-header
305   Generate ``arm_mve.h`` for Clang.
307 .. option:: -gen-arm-mve-builtin-def
309   Generate ARM MVE builtin definitions for Clang.
311 .. option:: -gen-arm-mve-builtin-sema
313   Generate ARM MVE builtin sema checks for Clang.
315 .. option:: -gen-arm-mve-builtin-codegen
317   Generate ARM MVE builtin code-generator for Clang.
319 .. option:: -gen-arm-mve-builtin-aliases
321   Generate list of valid ARM MVE builtin aliases for Clang.
323 .. option:: -gen-arm-cde-header
325   Generate ``arm_cde.h`` for Clang.
327 .. option:: -gen-arm-cde-builtin-def
329   Generate ARM CDE builtin definitions for Clang.
331 .. option:: -gen-arm-cde-builtin-sema
333   Generate ARM CDE builtin sema checks for Clang.
335 .. option:: -gen-arm-cde-builtin-codegen
337   Generate ARM CDE builtin code-generator for Clang.
339 .. option:: -gen-arm-cde-builtin-aliases
341   Generate list of valid ARM CDE builtin aliases for Clang.
343 .. option:: -gen-riscv-vector-header
345   Generate ``riscv_vector.h`` for Clang.
347 .. option:: -gen-riscv-vector-builtins
349   Generate ``riscv_vector_builtins.inc`` for Clang.
351 .. option:: -gen-riscv-vector-builtin-codegen
353   Generate ``riscv_vector_builtin_cg.inc`` for Clang.
355 .. option:: -gen-riscv-sifive-vector-builtins
357   Generate ``riscv_sifive_vector_builtins.inc`` for Clang.
359 .. option:: -gen-riscv-sifive-vector-builtin-codegen
361   Generate ``riscv_sifive_vector_builtin_cg.inc`` for Clang.
363 .. option:: -gen-attr-docs
365   Generate attribute documentation.
367 .. option:: -gen-diag-docs
369   Generate diagnostic documentation.
371 .. option:: -gen-opt-docs
373   Generate option documentation.
375 .. option:: -gen-clang-data-collectors
377   Generate data collectors for AST nodes.
379 .. option:: -gen-clang-test-pragma-attribute-supported-attributes
381   Generate a list of attributes supported by ``#pragma`` Clang attribute for
382   testing purposes.
385 lldb-tblgen Options
386 ~~~~~~~~~~~~~~~~~~~
388 .. option:: gen-lldb-option-defs
390   Generate lldb OptionDefinition values.
392 .. option:: gen-lldb-property-defs
394   Generate lldb PropertyDefinition values.
396 .. option:: gen-lldb-property-enum-defs
398   Generate lldb PropertyDefinition enum values.
401 llvm-tblgen Options
402 ~~~~~~~~~~~~~~~~~~~
404 .. option:: -gen-asm-matcher
406  Generate assembly instruction matcher.
408 .. option:: -match-prefix=prefix
410   Make -gen-asm-matcher match only instructions with the given *prefix*.
412 .. option:: -gen-asm-parser
414  Generate assembly instruction parser.
416 .. option:: -asmparsernum=n
418  Make -gen-asm-parser emit assembly parser number *n*.
420 .. option:: -gen-asm-writer
422  Generate assembly writer.
424 .. option:: -asmwriternum=n
426  Make -gen-asm-writer emit assembly writer number *n*.
428 .. option:: -gen-attrs
430   Generate attributes.
432 .. option:: -gen-automata
434   Generate generic automata.
436 .. option:: -gen-callingconv
438   Generate calling convention descriptions.
440 .. option:: -gen-compress-inst-emitter
442   Generate RISC-V compressed instructions.
444 .. option:: -gen-ctags
446   Generate ctags-compatible index.
448 .. option:: -gen-dag-isel
450  Generate a DAG (directed acyclic graph) instruction selector.
452 .. option:: -instrument-coverage
454   Make -gen-dag-isel generate tables to help identify the patterns matched.
456 .. option:: -omit-comments
458   Make -gen-dag-isel omit comments. The default is false.
460 .. option:: -gen-dfa-packetizer
462  Generate DFA Packetizer for VLIW targets.
464 .. option:: -gen-directive-decl
466   Generate directive related declaration code (header file).
468 .. option:: -gen-directive-gen
470   Generate directive related implementation code part.
472 .. option:: -gen-directive-impl
474   Generate directive related implementation code.
476 .. option:: -gen-disassembler
478   Generate disassembler.
480 .. option:: -gen-emitter
482  Generate machine code emitter.
484 .. option:: -gen-exegesis
486   Generate llvm-exegesis tables.
488 .. option:: -gen-fast-isel
490   Generate a "fast" instruction selector.
492 .. option:: -gen-global-isel
494   Generate GlobalISel selector.
496 .. option:: -gisel-coverage-file=filename
498   Specify the file from which to retrieve coverage information.
500 .. option:: -instrument-gisel-coverage
502   Make -gen-global-isel generate coverage instrumentation.
504 .. option:: -optimize-match-table
506   Make -gen-global-isel generate an optimized version of the match table.
508 .. option:: -warn-on-skipped-patterns
510   Make -gen-global-isel explain why a pattern was skipped for inclusion.
512 .. option:: -gen-global-isel-combiner
514   Generate GlobalISel combiner.
516 .. option:: -combiners=list
518   Make -gen-global-isel-combiner emit the specified combiners.
520 .. option:: -gicombiner-debug-cxxpreds
522   Add debug comments to all C++ predicates emitted by -gen-global-isel-combiner
524 .. option:: -gicombiner-stop-after-parse
526   Make -gen-global-isel-combiner stop processing after parsing rules and dump state.
528 .. option:: -gen-instr-info
530  Generate instruction descriptions.
532 .. option:: -gen-instr-docs
534  Generate instruction documentation.
536 .. option:: -gen-intrinsic-enums
538  Generate intrinsic enums.
540 .. option:: -intrinsic-prefix=prefix
542   Make -gen-intrinsic-enums generate intrinsics with this target *prefix*.
544 .. option:: -gen-intrinsic-impl
546  Generate intrinsic information.
548 .. option:: -gen-opt-parser-defs
550   Generate options definitions.
552 .. option:: -gen-opt-rst
554   Generate option RST.
556 .. option:: -gen-pseudo-lowering
558  Generate pseudo instruction lowering.
560 .. option:: -gen-register-bank
562   Generate register bank descriptions.
564 .. option:: -gen-register-info
566   Generate registers and register classes info.
568 .. option:: -register-info-debug
570   Make -gen-register-info dump register information for debugging.
572 .. option:: -gen-searchable-tables
574   Generate generic searchable tables. See :doc:`TableGen BackEnds <../TableGen/BackEnds>`
575   for a detailed description.
577 .. option:: -gen-subtarget
579  Generate subtarget enumerations.
581 .. option:: -gen-x86-EVEX2VEX-tables
583   Generate X86 EVEX to VEX compress tables.
585 .. option:: -gen-x86-fold-tables
587   Generate X86 fold tables.
589 .. option:: -long-string-literals
591   When emitting large string tables, prefer string literals over
592   comma-separated char literals. This can be a readability and
593   compile-time performance win, but upsets some compilers.
595 .. option:: -print-enums
597  Print enumeration values for a class.
599 .. option:: -class=classname
601  Make -print-enums print the enumeration list for the specified class.
603 .. option:: -print-sets
605  Print expanded sets for testing DAG exprs.
608 mlir-tblgen Options
609 ~~~~~~~~~~~~~~~~~~~
611 .. option:: -gen-avail-interface-decls
613   Generate availability interface declarations.
615 .. option:: -gen-avail-interface-defs
617   Generate op interface definitions.
619 .. option:: -gen-dialect-doc
621   Generate dialect documentation.
623 .. option:: -dialect
625   The dialect to generate.
627 .. option:: -gen-directive-decl
629   Generate declarations for directives (OpenMP, etc.).
631 .. option:: -gen-enum-decls
633   Generate enum utility declarations.
635 .. option:: -gen-enum-defs
637   Generate enum utility definitions.
639 .. option:: -gen-enum-from-llvmir-conversions
641   Generate conversions of EnumAttrs from LLVM IR.
643 .. option:: -gen-enum-to-llvmir-conversions
645   Generate conversions of EnumAttrs to LLVM IR.
647 .. option:: -gen-llvmir-conversions
649   Generate LLVM IR conversions.
651 .. option:: -gen-llvmir-intrinsics
653   Generate LLVM IR intrinsics.
655 .. option:: -llvmir-intrinsics-filter
657   Only keep the intrinsics with the specified substring in their record name.
659 .. option:: -dialect-opclass-base
661   The base class for the ops in the dialect we are to emit.
663 .. option:: -gen-op-decls
665   Generate operation declarations.
667 .. option:: -gen-op-defs
669   Generate operation definitions.
671 .. option:: -asmformat-error-is-fatal
673   Emit a fatal error if format parsing fails.
675 .. option:: -op-exclude-regex
677   Regular expression of name of ops to exclude (no filter if empty).
679 .. option:: -op-include-regex
681   Regular expression of name of ops to include (no filter if empty).
683 .. option:: -gen-op-doc
685   Generate operation documentation.
687 .. option:: -gen-pass-decls
689   Generate operation documentation.
691 .. option:: -name namestring
693   The name of this group of passes.
695 .. option:: -gen-pass-doc
697   Generate pass documentation.
699 .. option:: -gen-rewriters
701   Generate pattern rewriters.
703 .. option:: -gen-spirv-avail-impls
705   Generate SPIR-V operation utility definitions.
707 .. option:: -gen-spirv-capability-implication
709   Generate utility function to return implied capabilities for a given capability.
711 .. option:: -gen-spirv-enum-avail-decls
713   Generate SPIR-V enum availability declarations.
715 .. option:: -gen-spirv-enum-avail-defs
717   Generate SPIR-V enum availability definitions.
719 .. option:: -gen-spirv-op-utils
721   Generate SPIR-V operation utility definitions.
723 .. option:: -gen-spirv-serialization
725   Generate SPIR-V (de)serialization utilities and functions.
727 .. option:: -gen-struct-attr-decls
729   Generate struct utility declarations.
731 .. option:: -gen-struct-attr-defs
733   Generate struct utility definitions.
735 .. option:: -gen-typedef-decls
737   Generate TypeDef declarations.
739 .. option:: -gen-typedef-defs
741   Generate TypeDef definitions.
743 .. option:: -typedefs-dialect name
745   Generate types for this dialect.
747 EXIT STATUS
748 -----------
750 If :program:`*-tblgen` succeeds, it will exit with 0.  Otherwise, if an error
751 occurs, it will exit with a non-zero value.