tblgen - 從描述檔產生 C++ 程式碼

概要

clang-tblgen [選項] [檔名]

lldb-tblgen [選項] [檔名]

llvm-tblgen [選項] [檔名]

mlir-tblgen [選項] [檔名]

描述

*-tblgen 是一系列將目標描述檔(.td)轉換為 C++ 程式碼和其他輸出格式的程式。大多數 LLVM 使用者不需要使用此程式。它僅用於編寫編譯器、偵錯器和 LLVM 目標後端的某些部分。

*-tblgen 程式的輸入和輸出細節超出了本簡短介紹的範圍;有關簡介和其他 TableGen 文件的參考,請參閱 TableGen 概述

檔名 參數指定 TableGen 處理的目標描述檔(.td)的名稱。

選項

通用選項

-help

列印命令列選項的描述。

-help-list

以簡單列表格式列印命令列選項的描述。

-D=巨集名稱

指定要定義的巨集名稱。名稱已定義,但沒有特定值。

-d=檔名

指定依賴檔案的名稱。

-debug

啟用偵錯輸出。

-dump-json

以 JSON 格式列印所有記錄,適合進一步自動化處理。

-I 目錄

指定在哪裡可以找到其他要包含的目標描述檔。目錄 值應該是包含目標描述檔的目錄的完整或部分路徑。

-null-backend

解析原始碼檔案並建構記錄,但不執行任何後端。這對於計算前端時間很有用。

-o 檔案名稱

指定輸出檔案名稱。如果 檔案名稱-,則 *-tblgen 會將其輸出發送到標準輸出。

-print-records

將所有類別和記錄列印到標準輸出(預設後端選項)。

-print-detailed-records

將所有全域變數、類別和記錄的詳細報告列印到標準輸出。

-stats

列印包含後端收集的任何統計資訊的報告。

-time-phases

計算解析器和後端階段的時間並列印報告。

-version

顯示程式的版本號。

-write-if-changed

僅當輸出檔案是新的或已變更時才寫入。

clang-tblgen 選項

-gen-clang-attr-classes

產生 Clang 屬性類別。

-gen-clang-attr-parser-string-switches

產生所有與解析器相關的屬性字串開關。

-gen-clang-attr-subject-match-rules-parser-string-switches

產生所有與解析器相關的屬性主體匹配規則字串開關。

-gen-clang-attr-impl

產生 Clang 屬性實作。

-gen-clang-attr-list"

產生 Clang 屬性清單。

-gen-clang-attr-subject-match-rule-list

產生 Clang 屬性主體匹配規則清單。

-gen-clang-attr-pch-read

產生 Clang PCH 屬性讀取器。

-gen-clang-attr-pch-write

產生 Clang PCH 屬性寫入器。

-gen-clang-attr-has-attribute-impl

產生 Clang 屬性拼寫清單。

-gen-clang-attr-spelling-index

產生 Clang 屬性拼寫索引。

-gen-clang-attr-ast-visitor

產生 Clang 屬性的遞迴 AST visitor。

-gen-clang-attr-template-instantiate

產生 Clang 模板實例化程式碼。

-gen-clang-attr-parsed-attr-list

產生 Clang 已解析屬性清單。

-gen-clang-attr-parsed-attr-impl

產生 Clang 已解析屬性輔助工具。

-gen-clang-attr-parsed-attr-kinds

產生 Clang 已解析屬性種類。

-gen-clang-attr-text-node-dump

產生 Clang 屬性文字節點傾印器。

-gen-clang-attr-node-traverse

產生 Clang 屬性遍歷器。

-gen-clang-diags-defs

產生 Clang 診斷定義。

-clang-component 元件

僅使用來自指定元件的警告。

-gen-clang-diag-groups

產生 Clang 診斷群組。

-gen-clang-diags-index-name

產生 Clang 診斷名稱索引。

-gen-clang-basic-reader

產生 Clang BasicReader 類別。

-gen-clang-basic-writer

產生 Clang BasicWriter 類別。

-gen-clang-comment-nodes

產生 Clang AST 註解節點。

-gen-clang-decl-nodes

產生 Clang AST 宣告節點。

-gen-clang-stmt-nodes

產生 Clang AST 陳述式節點。

-gen-clang-type-nodes

產生 Clang AST 類型節點。

-gen-clang-type-reader

產生 Clang AbstractTypeReader 類別。

-gen-clang-type-writer

產生 Clang AbstractTypeWriter 類別。

-gen-clang-opcodes

產生 Clang constexpr 直譯器操作碼。

-gen-clang-sa-checkers

產生 Clang 靜態分析檢查器。

-gen-clang-comment-html-tags

為文件註解中使用的 HTML 標籤名稱產生高效的匹配器。

-gen-clang-comment-html-tags-properties

為 HTML 標籤屬性產生高效的匹配器。

-gen-clang-comment-html-named-character-references

產生將已命名的字元參考轉換為 UTF-8 字元序列的函數。

-gen-clang-comment-command-info

為文件註解中使用的指令產生指令屬性。

-gen-clang-comment-command-list

產生文件註解中使用的指令清單。

-gen-clang-opencl-builtins

產生 OpenCL 內建函式宣告處理常式。

-gen-arm-neon

為 Clang 產生 arm_neon.h

-gen-arm-fp16

為 Clang 產生 arm_fp16.h

-gen-arm-bf16

為 Clang 產生 arm_bf16.h

-gen-arm-neon-sema

為 Clang 產生 ARM NEON sema 支援。

-gen-arm-neon-test

為 Clang 產生 ARM NEON 測試。

-gen-arm-sve-header

為 Clang 產生 arm_sve.h

-gen-arm-sve-builtins

為 Clang 生成 arm_sve_builtins.inc

-gen-arm-sve-builtin-codegen

為 Clang 生成 arm_sve_builtin_cg_map.inc

-gen-arm-sve-typeflags

為 Clang 生成 arm_sve_typeflags.inc

-gen-arm-sve-sema-rangechecks

為 Clang 生成 arm_sve_sema_rangechecks.inc

-gen-arm-mve-header

為 Clang 生成 arm_mve.h

-gen-arm-mve-builtin-def

為 Clang 生成 ARM MVE 內建函數定義。

-gen-arm-mve-builtin-sema

為 Clang 生成 ARM MVE 內建函數語義檢查。

-gen-arm-mve-builtin-codegen

為 Clang 生成 ARM MVE 內建函數代碼生成器。

-gen-arm-mve-builtin-aliases

為 Clang 生成有效的 ARM MVE 內建函數別名列表。

-gen-arm-cde-header

為 Clang 生成 arm_cde.h

-gen-arm-cde-builtin-def

為 Clang 生成 ARM CDE 內建函數定義。

-gen-arm-cde-builtin-sema

為 Clang 生成 ARM CDE 內建函數語義檢查。

-gen-arm-cde-builtin-codegen

為 Clang 生成 ARM CDE 內建函數代碼生成器。

-gen-arm-cde-builtin-aliases

為 Clang 生成有效的 ARM CDE 內建函數別名列表。

-gen-riscv-vector-header

為 Clang 生成 riscv_vector.h

-gen-riscv-vector-builtins

為 Clang 生成 riscv_vector_builtins.inc

-gen-riscv-vector-builtin-codegen

為 Clang 生成 riscv_vector_builtin_cg.inc

-gen-riscv-sifive-vector-builtins

為 Clang 生成 riscv_sifive_vector_builtins.inc

-gen-riscv-sifive-vector-builtin-codegen

為 Clang 生成 riscv_sifive_vector_builtin_cg.inc

-gen-attr-docs

生成屬性文件。

-gen-diag-docs

生成診斷文件。

-gen-opt-docs

生成選項文件。

-gen-clang-data-collectors

為 AST 節點生成數據收集器。

-gen-clang-test-pragma-attribute-supported-attributes

生成 #pragma Clang 屬性所支援的屬性清單,供測試使用。

lldb-tblgen 選項

gen-lldb-option-defs

生成 lldb OptionDefinition 值。

gen-lldb-property-defs

生成 lldb PropertyDefinition 值。

gen-lldb-property-enum-defs

生成 lldb PropertyDefinition 列舉值。

llvm-tblgen 選項

-gen-asm-matcher

生成組合語言指令匹配器。

-match-prefix=prefix

使 -gen-asm-matcher 僅匹配具有給定 *prefix* 的指令。

-gen-asm-parser

生成組合語言指令解析器。

-asmparsernum=n

使 -gen-asm-parser 發出組合語言解析器編號 *n*。

-gen-asm-writer

生成組合語言編寫器。

-asmwriternum=n

讓 -gen-asm-writer 發出編號為 n 的組譯器寫入器。

-gen-attrs

產生屬性。

-gen-automata

產生泛型自動機。

-gen-callingconv

產生呼叫慣例描述。

-gen-compress-inst-emitter

產生 RISC-V 壓縮指令。

-gen-ctags

產生與 ctags 相容的索引。

-gen-dag-isel

產生 DAG(有向無環圖)指令選擇器。

-instrument-coverage

讓 -gen-dag-isel 產生表格來幫助識別匹配的模式。

-omit-comments

讓 -gen-dag-isel 省略註解。預設值為 false。

-gen-dfa-packetizer

為 VLIW 目標產生 DFA 封包器。

-gen-directive-decl

產生與指令相關的宣告程式碼(標頭檔)。

-gen-directive-gen

產生與指令相關的實作程式碼部分。

-gen-directive-impl

產生與指令相關的實作程式碼。

-gen-disassembler

產生反組譯器。

-gen-emitter

產生機器碼發射器。

-gen-exegesis

產生 llvm-exegesis 表格。

-gen-fast-isel

產生「快速」指令選擇器。

-gen-global-isel

產生 GlobalISel 選擇器。

-gisel-coverage-file=filename

指定要從中檢索覆蓋率資訊的檔案。

-instrument-gisel-coverage

讓 -gen-global-isel 產生覆蓋率檢測。

-optimize-match-table

讓 -gen-global-isel 產生最佳化的匹配表版本。

-warn-on-skipped-patterns

讓 -gen-global-isel 解釋為何跳過包含某個模式。

-gen-global-isel-combiner

產生 GlobalISel 組合器。

-combiners=list

讓 -gen-global-isel-combiner 發出指定的組合器。

-gicombiner-debug-cxxpreds

將偵錯註解添加到 -gen-global-isel-combiner 發出的所有 C++ 謂詞

-gicombiner-stop-after-parse

讓 -gen-global-isel-combiner 在解析規則並傾印狀態後停止處理。

-gen-instr-info

產生指令說明。

-gen-instr-docs

產生指令文件。

-gen-intrinsic-enums

產生內建函式列舉。

-intrinsic-prefix=prefix

讓 -gen-intrinsic-enums 使用此目標 *prefix* 產生內建函式。

-gen-intrinsic-impl

產生內建函式資訊。

-gen-opt-parser-defs

產生選項定義。

-gen-opt-rst

產生選項 RST。

-gen-pseudo-lowering

產生虛擬指令降低。

-gen-register-bank

產生暫存器庫描述。

-gen-register-info

產生暫存器和暫存器類別資訊。

-register-info-debug

讓 -gen-register-info 傾印暫存器資訊以進行除錯。

-gen-searchable-tables

產生通用的可搜尋表格。如需詳細說明,請參閱 TableGen 後端

-gen-subtarget

產生子目標列舉。

-gen-x86-EVEX2VEX-tables

產生 X86 EVEX 到 VEX 壓縮表格。

-gen-x86-fold-tables

產生 X86 折疊表格。

-long-string-literals

發出大型字串表格時,優先使用字串字面值而不是逗號分隔的字元字面值。這可以提高可讀性和編譯時效能,但會讓某些編譯器感到困惑。

-print-enums

列印類別的列舉值。

-class=classname

讓 -print-enums 列印指定類別的列舉清單。

-print-sets

列印展開的集合以測試 DAG 運算式。

mlir-tblgen 選項

-gen-avail-interface-decls

產生可用性介面宣告。

-gen-avail-interface-defs

產生操作介面定義。

-gen-dialect-doc

產生方言文件。

-dialect

要產生的方言。

-gen-directive-decl

產生指令的宣告(OpenMP 等)。

-gen-enum-decls

產生列舉工具程式宣告。

-gen-enum-defs

產生列舉工具程式定義。

-gen-enum-from-llvmir-conversions

從 LLVM IR 產生 EnumAttrs 的轉換。

-gen-enum-to-llvmir-conversions

產生 EnumAttrs 到 LLVM IR 的轉換。

-gen-llvmir-conversions

產生 LLVM IR 轉換。

-gen-llvmir-intrinsics

產生 LLVM IR 內建函數。

-llvmir-intrinsics-filter

只保留記錄名稱中包含指定子字串的內建函數。

-dialect-opclass-base

要發出的方言中操作的基類。

-gen-op-decls

產生操作宣告。

-gen-op-defs

產生操作定義。

-asmformat-error-is-fatal

如果格式解析失敗,則發出致命錯誤。

-op-exclude-regex

要排除的操作名稱的正則表達式(如果為空則不進行過濾)。

-op-include-regex

要包含的操作名稱的正則表達式(如果為空則不進行過濾)。

-gen-op-doc

產生操作說明文件。

-gen-pass-decls

產生操作說明文件。

-name namestring

這組通道的名稱。

-gen-pass-doc

產生通道說明文件。

-gen-rewriters

產生模式重寫器。

-gen-spirv-avail-impls

產生 SPIR-V 操作工具定義。

-gen-spirv-capability-implication

產生工具函數,以返回給定功能的隱含功能。

-gen-spirv-enum-avail-decls

產生 SPIR-V 列舉可用性宣告。

-gen-spirv-enum-avail-defs

產生 SPIR-V 列舉可用性定義。

-gen-spirv-op-utils

產生 SPIR-V 操作工具定義。

-gen-spirv-serialization

產生 SPIR-V (反)序列化工具程式和函式。

-gen-struct-attr-decls

產生結構工具程式宣告。

-gen-struct-attr-defs

產生結構工具程式定義。

-gen-typedef-decls

產生 TypeDef 宣告。

-gen-typedef-defs

產生 TypeDef 定義。

-typedefs-dialect name

為此方言產生類型。

結束狀態

如果 *-tblgen 成功,它將會以 0 結束。否則,如果發生錯誤,它將會以非零值結束。