1 tblgen - Description to C++ Code
2 ================================
9 :program:`clang-tblgen` [*options*] [*filename*]
11 :program:`lldb-tblgen` [*options*] [*filename*]
13 :program:`llvm-tblgen` [*options*] [*filename*]
15 :program:`mlir-tblgen` [*options*] [*filename*]
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.
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.
60 .. option:: -dump-json
62 Print a JSON representation of all records, suitable for further
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
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.
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.
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
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.
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
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
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
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
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.
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.
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.
744 If :program:`*-tblgen` succeeds, it will exit with 0. Otherwise, if an error
745 occurs, it will exit with a non-zero value.