TBLGEN(1) LLVM TBLGEN(1)

tblgen - تبدیل توصیف هدف به کد ++C

clang-tblgen [options] [filename]

lldb-tblgen [options] [filename]

llvm-tblgen [options] [filename]

mlir-tblgen [options] [filename]

برنامه *-tblgen خانواده‌ای از ابزارها است که فایل‌های توصیف هدف (.td) را به کد ++C و دیگر قالب‌های خروجی ترجمه می‌کند. بیشتر کاربران LLVM نیازی به استفاده از این برنامه نخواهند داشت. این برنامه تنها برای نوشتن بخش‌هایی از کامپایلر، اشکال‌زدا و backendهای هدف LLVM به کار می‌رود.

جزئیات ورودی و خروجی برنامه‌های *-tblgen فراتر از محدوده این مقدمه کوتاه است؛ لطفاً برای آشنایی و دسترسی به اسناد تکمیلی TableGen به TableGen Overview <> مراجعه کنید.

آرگومان filename نام فایل توصیف هدف (.td) که TableGen پردازش می‌کند را مشخص می‌نماید.

توضیحاتی درباره گزینه‌های خط فرمان چاپ می‌کند.
-help-list
توضیحات مربوط به گزینه‌های خط فرمان را در قالب یک فهرست ساده چاپ می‌کند.
نام ماکرویی را برای تعریف شدن مشخص می‌کند. این نام تعریف می‌شود، اما مقدار خاصی ندارد.
نام فایل وابستگی‌ها را تعیین می‌کند.
خروجی اشکال‌زدایی (debug) را فعال می‌کند.
نمایشی با ساختار JSON از تمام رکوردها چاپ می‌کند که برای پردازش‌های خودکار بعدی مناسب است.
محل جستجو برای یافتن سایر فایل‌های توصیف هدف جهت ضمیمه‌سازی (inclusion) را تعیین می‌کند. مقدار directory باید یک مسیر کامل یا نسبی به دایرکتوری حاوی فایل‌های توصیف هدف باشد.
فایل‌های مبدأ را تجزیه کرده و رکوردها را ایجاد می‌کند، اما هیچ backendی را اجرا نمی‌کند. این گزینه برای زمان‌سنجی frontend کاربرد دارد.
نام فایل خروجی را مشخص می‌کند. اگر filename برابر با - باشد، *-tblgen خروجی خود را به خروجی استاندارد ارسال می‌کند.
تمام کلاس‌ها و رکوردها را در خروجی استاندارد چاپ می‌کند (گزینه پیش‌فرض backend).
گزارشی با جزئیات کامل از تمامی متغیرهای سراسری، کلاس‌ها و رکوردها در خروجی استاندارد چاپ می‌کند.
گزارشی حاوی تمامی آمارهای جمع‌آوری‌شده توسط backend چاپ می‌کند.
مدت زمان مراحل تجزیه‌کننده (parser) و backend را اندازه‌گیری کرده و گزارشی را چاپ می‌کند.
شماره نسخه برنامه را نمایش می‌دهد.
فایل خروجی را تنها در صورتی می‌نویسد که جدید باشد یا تغییر کرده باشد.
تولید کلاس‌های صفت (attribute) برای Clang.
تولید تمام switchهای رشته‌ای صفتِ مرتبط با تجزیه‌کننده (parser).
تولید تمام switchهای رشته‌ای قواعد تطابق موضوع صفتِ مرتبط با تجزیه‌کننده.
تولید پیاده‌سازی‌های صفت برای Clang.
تولید فهرستی از صفت‌های Clang.
تولید فهرستی از قواعد تطابق موضوع صفت برای Clang.
تولید خواننده صفت PCH برای Clang.
تولید نویسنده صفت PCH برای Clang.
تولید فهرستی از نگارش‌های (spelling) صفت‌های Clang.
تولید نمایه نگارش‌های صفت برای Clang.
تولید یک پیمایش‌گر (visitor) بازگشتی AST برای صفت‌های Clang.
تولید کد نمونه‌سازی الگوی (template instantiate) Clang.
تولید فهرستی از صفت‌های تجزیه‌شده Clang.
تولید توابع کمکی صفت‌های تجزیه‌شده Clang.
تولید انواع صفت‌های تجزیه‌شده Clang.
تولید تخلیه‌گر (dumper) گره متنی صفت برای Clang.
تولید پیمایش‌گر (traverser) گره صفت برای Clang.
تولید تعاریف عیب‌یابی (diagnostics) برای Clang.
تنها استفاده از هشدارهای مؤلفه (component) مشخص‌شده.
تولید گروه‌های عیب‌یابی برای Clang.
تولید نمایه نام‌های عیب‌یابی Clang.
تولید کلاس‌های BasicReader برای Clang.
تولید کلاس‌های BasicWriter برای Clang.
تولید گره‌های توضیحات (comment) در AST برای Clang.
تولید گره‌های اعلان (declaration) در AST برای Clang.
تولید گره‌های دستور (statement) در AST برای Clang.
تولید گره‌های نوع (type) در AST برای Clang.
تولید کلاس AbstractTypeReader برای Clang.
تولید کلاس AbstractTypeWriter برای Clang.
تولید کدهای عملیاتی (opcodes) مفسر constexpr برای Clang.
تولید وارسی‌کننده‌های تحلیل‌گر ایستا (static analyzer) برای Clang.
تولید تطبیق‌دهنده‌های کارآمد برای نام برچسب‌های HTML استفاده‌شده در توضیحات مستندسازی.
تولید تطبیق‌دهنده‌های کارآمد برای ویژگی‌های برچسب‌های HTML.
تولید تابع برای تبدیل ارجاعات نویسه‌ای نام‌گذاری‌شده به توالی‌های UTF-8.
تولید مشخصات دستور برای دستورات استفاده‌شده در توضیحات مستندسازی.
تولید فهرستی از دستورات استفاده‌شده در توضیحات مستندسازی.
-gen-clang-opencl-builtins تولید گرداننده‌های اعلان توابع داخلی OpenCL.
تولید arm_neon.h برای Clang.
تولید arm_fp16.h برای Clang.
تولید arm_bf16.h برای Clang.
تولید پشتیبانی معنایی (sema) برای ARM NEON در Clang.
تولید آزمون‌های ARM NEON برای Clang.
تولید arm_immcheck_types.inc برای Clang.
تولید arm_sve.h برای Clang.
تولید arm_sve_builtins.inc برای Clang.
تولید arm_sve_builtin_cg_map.inc برای Clang.
تولید arm_sve_typeflags.inc برای Clang.
تولید arm_sve_sema_rangechecks.inc برای Clang.
تولید arm_mve.h برای Clang.
تولید تعاریف توابع داخلی ARM MVE برای Clang.
تولید بررسی‌های معنایی (sema) توابع داخلی ARM MVE برای Clang.
تولید کدساز (code-generator) توابع داخلی ARM MVE برای Clang.
تولید فهرست نام‌های مستعار معتبر توابع داخلی ARM MVE برای Clang.
تولید arm_cde.h برای Clang.
تولید تعاریف توابع داخلی ARM CDE برای Clang.
تولید بررسی‌های معنایی (sema) توابع داخلی ARM CDE برای Clang.
تولید کدساز توابع داخلی ARM CDE برای Clang.
تولید فهرست نام‌های مستعار معتبر توابع داخلی ARM CDE برای Clang.
تولید riscv_vector.h برای Clang.
تولید riscv_vector_builtins.inc برای Clang.
تولید riscv_vector_builtin_cg.inc برای Clang.
تولید riscv_sifive_vector_builtins.inc برای Clang.
تولید riscv_sifive_vector_builtin_cg.inc برای Clang.
تولید مستندات ویژگی‌ها (attribute).
تولید مستندات تشخیصی (diagnostic).
تولید مستندات گزینه‌ها.
تولید گردآورنده‌های داده برای گره‌های AST.
تولید فهرستی از ویژگی‌های پشتیبانی‌شده توسط ویژگی #pragma در Clang برای اهداف آزمایشی.
تولید مقادیر OptionDefinition برای lldb.
تولید مقادیر PropertyDefinition برای lldb.
تولید مقادیر شمارشی (enum) برای PropertyDefinition در lldb.

تولید تطبیق‌دهنده دستورات اسمبلی.
تنظیم -gen-asm-matcher برای تطبیق تنها دستوراتی با prefix داده‌شده.
تولید تجزیه‌کننده دستورات اسمبلی.
تنظیم -gen-asm-parser برای تولید تجزیه‌کننده اسمبلی شماره n.
تولید نگارنده اسمبلی.
تنظیم -gen-asm-writer برای تولید نگارنده اسمبلی شماره n.
تولید صفت‌ها (attributes).
تولید خودکاره‌های عمومی (generic automata).
تولید توصیفات قرارداد فراخوانی (calling conventions).
تولید دستورات فشرده RISC-V.
تولید نمایه سازگار با ctags.
تولید یک انتخاب‌گر دستور DAG (گراف جهت‌دار بدون دور).
تنظیم -gen-dag-isel برای تولید جدول‌هایی جهت کمک به شناسایی الگوهای تطبیق‌یافته.
تنظیم -gen-dag-isel برای حذف دیدگاه‌ها (کامنت‌ها). مقدار پیش‌فرض false است.
تولید DFA Packetizer برای مقصدهای VLIW.
تولید کدهای اعلان مرتبط با رهنمودها (فایل سرآیند).
تولید بخش کدهای پیاده‌سازی مرتبط با رهنمودها.
تولید کدهای پیاده‌سازی مرتبط با رهنمودها.
تولید دیس‌اسمبلر.
تولید منتشرکننده کد ماشین.
تولید جدول‌های llvm-exegesis.
تولید یک انتخاب‌گر دستور "سریع" (fast instruction selector).
تولید انتخاب‌گر GlobalISel.
مشخص کردن فایلی که اطلاعات پوشش از آن بازیابی می‌شود.
تنظیم -gen-global-isel برای تولید ابزار دقیق سنجش پوشش (coverage instrumentation).
تنظیم -gen-global-isel برای تولید نسخه‌ای بهینه‌شده از جدول تطبیق.
تنظیم -gen-global-isel برای توضیح دلیل کنار گذاشته شدن یک الگو.
تولید ترکیب‌کننده (combiner) برای GlobalISel.
تنظیم -gen-global-isel-combiner برای تولید ترکیب‌کننده‌های مشخص‌شده.
افزودن دیدگاه‌های اشکال‌زدایی به تمام گزاره‌های ++C تولیدشده توسط -gen-global-isel-combiner
تنظیم -gen-global-isel-combiner برای توقف پردازش پس از تجزیه قواعد و تخلیه وضعیت.
تولید توصیفات دستورالعمل‌ها.
تولید مستندات دستورالعمل‌ها.
-gen-intrinsic-enums تولید مقادیر شمارشی ذاتی (intrinsic enums).
تنظیم -gen-intrinsic-enums برای تولید موارد ذاتی با این prefix مقصد.
تولید اطلاعات ذاتی (intrinsic).
تولید تعاریف گزینه‌ها (options).
تولید مستندات RST گزینه‌ها.
تولید تنزل دستورالعمل‌های شبه (pseudo instruction lowering).
تولید توصیفات بانک‌های ثبات (register banks).
تولید اطلاعات ثبات‌ها و کلاس‌های ثبات.
تنظیم -gen-register-info برای برون‌ریزی (dump) اطلاعات ثبات‌ها جهت اشکال‌زدایی.
تولید جدول‌های عمومی قابل جست‌وجو. برای شرح دقیق به TableGen BackEnds <> مراجعه کنید.
تولید مقادیر شمارشی مربوط به زیرمقصدها (subtargets).
تولید جدول‌های فشرده‌سازی X86 EVEX به VEX.
تولید جدول‌های fold در X86.
هنگام خروجی دادن جدول‌های رشته‌ای بزرگ، لیترال‌های رشته‌ای را به لیترال‌های نویسه‌ایِ جداشده با کاما ترجیح می‌دهد. این کار می‌تواند در خوانایی و کارایی زمان کامپایل سودمند باشد، اما ممکن است برخی از کامپایلرها را با مشکل مواجه کند.
چاپ مقادیر شمارشی (enumeration) برای یک کلاس.
تنظیم -print-enums برای چاپ فهرست شمارشی کلاس مشخص‌شده.
چاپ مجموعه‌های گسترش‌یافته برای آزمایش عبارات DAG (DAG exprs).
تولید اعلان‌های رابط دسترسی‌پذیری (availability interface).
تولید تعاریف رابط عملگر (op interface).
تولید مستندات گویش (dialect).
گویش (dialect) مورد نظر برای تولید.
تولید اعلان‌ها برای رهنمودها (OpenMP و غیره).
تولید اعلان‌های توابع کمکی نوع شمارشی (enum utility).
تولید تعاریف توابع کمکی نوع شمارشی (enum utility).
تولید تبدیل‌های EnumAttrs از LLVM IR.
تولید تبدیل‌های EnumAttrs به LLVM IR.
تولید تبدیل‌های LLVM IR.
تولید توابع درونی (intrinsics) LLVM IR.
تنها نگه‌داشتن توابع درونی‌ای که زیررشته مشخص‌شده در نام رکورد آن‌ها وجود دارد.
-dialect-opclass-base
کلاس پایه برای عملگرها (ops) در گویشی که قرار است ایجاد شود.
تولید اعلان‌های عملیات (operation).
تولید تعاریف عملیات (operation).
ایجاد یک خطای مهلک در صورت شکست در تجزیه قالب (format parsing).
عبارت باقاعده برای نام عملگرها جهت مستثنی کردن (در صورت خالی بودن، فیلتری اعمال نمی‌شود).
عبارت باقاعده برای نام عملگرها جهت گنجاندن (در صورت خالی بودن، فیلتری اعمال نمی‌شود).
تولید مستندات عملیات.
تولید مستندات عملیات.
نام این گروه از گذرها (passes).
تولید مستندات گذر (pass).
تولید بازنویس‌های الگو (pattern rewriters).
تولید تعاریف توابع کمکی عملیات SPIR-V.
تولید تابع کمکی برای بازگرداندن قابلیت‌های ضمنی (implied capabilities) برای یک قابلیت مشخص.
تولید اعلان‌های دسترسی‌پذیری نوع شمارشی (enum availability) SPIR-V.
تولید تعاریف دسترسی‌پذیری نوع شمارشی (enum availability) SPIR-V.
تولید تعاریف توابع کمکی عملیات SPIR-V.
تولید ابزارها و توابع کمکی سریال‌سازی و واسریال‌سازی ((de)serialization) برای SPIR-V.
تولید اعلان‌های توابع کمکی ساختار (struct utility).
تولید تعاریف توابع کمکی ساختار (struct utility).
تولید اعلان‌های TypeDef.
تولید تعاریف TypeDef.
تولید نوع‌ها (types) برای این گویش (dialect).

اگر *-tblgen با موفقیت انجام شود، با 0 خارج می‌شود. در غیر این صورت، اگر خطایی رخ دهد، با مقداری غیرصفر خارج خواهد شد.

توسط تیم LLVM نگهداری می‌شود (https://llvm.org).

2003-2026, LLVM Project

2026-07-15 22