xref: /minix3/external/bsd/llvm/dist/llvm/docs/TableGen/BackEnds.rst (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc=================
2*0a6a1f1dSLionel SambucTableGen BackEnds
3*0a6a1f1dSLionel Sambuc=================
4*0a6a1f1dSLionel Sambuc
5*0a6a1f1dSLionel Sambuc.. contents::
6*0a6a1f1dSLionel Sambuc   :local:
7*0a6a1f1dSLionel Sambuc
8*0a6a1f1dSLionel SambucIntroduction
9*0a6a1f1dSLionel Sambuc============
10*0a6a1f1dSLionel Sambuc
11*0a6a1f1dSLionel SambucTableGen backends are at the core of TableGen's functionality. The source files
12*0a6a1f1dSLionel Sambucprovide the semantics to a generated (in memory) structure, but it's up to the
13*0a6a1f1dSLionel Sambucbackend to print this out in a way that is meaningful to the user (normally a
14*0a6a1f1dSLionel SambucC program including a file or a textual list of warnings, options and error
15*0a6a1f1dSLionel Sambucmessages).
16*0a6a1f1dSLionel Sambuc
17*0a6a1f1dSLionel SambucTableGen is used by both LLVM and Clang with very different goals. LLVM uses it
18*0a6a1f1dSLionel Sambucas a way to automate the generation of massive amounts of information regarding
19*0a6a1f1dSLionel Sambucinstructions, schedules, cores and architecture features. Some backends generate
20*0a6a1f1dSLionel Sambucoutput that is consumed by more than one source file, so they need to be created
21*0a6a1f1dSLionel Sambucin a way that is easy to use pre-processor tricks. Some backends can also print
22*0a6a1f1dSLionel SambucC code structures, so that they can be directly included as-is.
23*0a6a1f1dSLionel Sambuc
24*0a6a1f1dSLionel SambucClang, on the other hand, uses it mainly for diagnostic messages (errors,
25*0a6a1f1dSLionel Sambucwarnings, tips) and attributes, so more on the textual end of the scale.
26*0a6a1f1dSLionel Sambuc
27*0a6a1f1dSLionel SambucLLVM BackEnds
28*0a6a1f1dSLionel Sambuc=============
29*0a6a1f1dSLionel Sambuc
30*0a6a1f1dSLionel Sambuc.. warning::
31*0a6a1f1dSLionel Sambuc   This document is raw. Each section below needs three sub-sections: description
32*0a6a1f1dSLionel Sambuc   of its purpose with a list of users, output generated from generic input, and
33*0a6a1f1dSLionel Sambuc   finally why it needed a new backend (in case there's something similar).
34*0a6a1f1dSLionel Sambuc
35*0a6a1f1dSLionel SambucOverall, each backend will take the same TableGen file type and transform into
36*0a6a1f1dSLionel Sambucsimilar output for different targets/uses. There is an implicit contract between
37*0a6a1f1dSLionel Sambucthe TableGen files, the back-ends and their users.
38*0a6a1f1dSLionel Sambuc
39*0a6a1f1dSLionel SambucFor instance, a global contract is that each back-end produces macro-guarded
40*0a6a1f1dSLionel Sambucsections. Based on whether the file is included by a header or a source file,
41*0a6a1f1dSLionel Sambucor even in which context of each file the include is being used, you have
42*0a6a1f1dSLionel Sambuctodefine a macro just before including it, to get the right output:
43*0a6a1f1dSLionel Sambuc
44*0a6a1f1dSLionel Sambuc.. code-block:: c++
45*0a6a1f1dSLionel Sambuc
46*0a6a1f1dSLionel Sambuc  #define GET_REGINFO_TARGET_DESC
47*0a6a1f1dSLionel Sambuc  #include "ARMGenRegisterInfo.inc"
48*0a6a1f1dSLionel Sambuc
49*0a6a1f1dSLionel SambucAnd just part of the generated file would be included. This is useful if
50*0a6a1f1dSLionel Sambucyou need the same information in multiple formats (instantiation, initialization,
51*0a6a1f1dSLionel Sambucgetter/setter functions, etc) from the same source TableGen file without having
52*0a6a1f1dSLionel Sambucto re-compile the TableGen file multiple times.
53*0a6a1f1dSLionel Sambuc
54*0a6a1f1dSLionel SambucSometimes, multiple macros might be defined before the same include file to
55*0a6a1f1dSLionel Sambucoutput multiple blocks:
56*0a6a1f1dSLionel Sambuc
57*0a6a1f1dSLionel Sambuc.. code-block:: c++
58*0a6a1f1dSLionel Sambuc
59*0a6a1f1dSLionel Sambuc  #define GET_REGISTER_MATCHER
60*0a6a1f1dSLionel Sambuc  #define GET_SUBTARGET_FEATURE_NAME
61*0a6a1f1dSLionel Sambuc  #define GET_MATCHER_IMPLEMENTATION
62*0a6a1f1dSLionel Sambuc  #include "ARMGenAsmMatcher.inc"
63*0a6a1f1dSLionel Sambuc
64*0a6a1f1dSLionel SambucThe macros will be undef'd automatically as they're used, in the include file.
65*0a6a1f1dSLionel Sambuc
66*0a6a1f1dSLionel SambucOn all LLVM back-ends, the ``llvm-tblgen`` binary will be executed on the root
67*0a6a1f1dSLionel SambucTableGen file ``<Target>.td``, which should include all others. This guarantees
68*0a6a1f1dSLionel Sambucthat all information needed is accessible, and that no duplication is needed
69*0a6a1f1dSLionel Sambucin the TbleGen files.
70*0a6a1f1dSLionel Sambuc
71*0a6a1f1dSLionel SambucCodeEmitter
72*0a6a1f1dSLionel Sambuc-----------
73*0a6a1f1dSLionel Sambuc
74*0a6a1f1dSLionel Sambuc**Purpose**: CodeEmitterGen uses the descriptions of instructions and their fields to
75*0a6a1f1dSLionel Sambucconstruct an automated code emitter: a function that, given a MachineInstr,
76*0a6a1f1dSLionel Sambucreturns the (currently, 32-bit unsigned) value of the instruction.
77*0a6a1f1dSLionel Sambuc
78*0a6a1f1dSLionel Sambuc**Output**: C++ code, implementing the target's CodeEmitter
79*0a6a1f1dSLionel Sambucclass by overriding the virtual functions as ``<Target>CodeEmitter::function()``.
80*0a6a1f1dSLionel Sambuc
81*0a6a1f1dSLionel Sambuc**Usage**: Used to include directly at the end of ``<Target>MCCodeEmitter.cpp``.
82*0a6a1f1dSLionel Sambuc
83*0a6a1f1dSLionel SambucRegisterInfo
84*0a6a1f1dSLionel Sambuc------------
85*0a6a1f1dSLionel Sambuc
86*0a6a1f1dSLionel Sambuc**Purpose**: This tablegen backend is responsible for emitting a description of a target
87*0a6a1f1dSLionel Sambucregister file for a code generator.  It uses instances of the Register,
88*0a6a1f1dSLionel SambucRegisterAliases, and RegisterClass classes to gather this information.
89*0a6a1f1dSLionel Sambuc
90*0a6a1f1dSLionel Sambuc**Output**: C++ code with enums and structures representing the register mappings,
91*0a6a1f1dSLionel Sambucproperties, masks, etc.
92*0a6a1f1dSLionel Sambuc
93*0a6a1f1dSLionel Sambuc**Usage**: Both on ``<Target>BaseRegisterInfo`` and ``<Target>MCTargetDesc`` (headers
94*0a6a1f1dSLionel Sambucand source files) with macros defining in which they are for declaration vs.
95*0a6a1f1dSLionel Sambucinitialization issues.
96*0a6a1f1dSLionel Sambuc
97*0a6a1f1dSLionel SambucInstrInfo
98*0a6a1f1dSLionel Sambuc---------
99*0a6a1f1dSLionel Sambuc
100*0a6a1f1dSLionel Sambuc**Purpose**: This tablegen backend is responsible for emitting a description of the target
101*0a6a1f1dSLionel Sambucinstruction set for the code generator. (what are the differences from CodeEmitter?)
102*0a6a1f1dSLionel Sambuc
103*0a6a1f1dSLionel Sambuc**Output**: C++ code with enums and structures representing the register mappings,
104*0a6a1f1dSLionel Sambucproperties, masks, etc.
105*0a6a1f1dSLionel Sambuc
106*0a6a1f1dSLionel Sambuc**Usage**: Both on ``<Target>BaseInstrInfo`` and ``<Target>MCTargetDesc`` (headers
107*0a6a1f1dSLionel Sambucand source files) with macros defining in which they are for declaration vs.
108*0a6a1f1dSLionel Sambuc
109*0a6a1f1dSLionel SambucAsmWriter
110*0a6a1f1dSLionel Sambuc---------
111*0a6a1f1dSLionel Sambuc
112*0a6a1f1dSLionel Sambuc**Purpose**: Emits an assembly printer for the current target.
113*0a6a1f1dSLionel Sambuc
114*0a6a1f1dSLionel Sambuc**Output**: Implementation of ``<Target>InstPrinter::printInstruction()``, among
115*0a6a1f1dSLionel Sambucother things.
116*0a6a1f1dSLionel Sambuc
117*0a6a1f1dSLionel Sambuc**Usage**: Included directly into ``InstPrinter/<Target>InstPrinter.cpp``.
118*0a6a1f1dSLionel Sambuc
119*0a6a1f1dSLionel SambucAsmMatcher
120*0a6a1f1dSLionel Sambuc----------
121*0a6a1f1dSLionel Sambuc
122*0a6a1f1dSLionel Sambuc**Purpose**: Emits a target specifier matcher for
123*0a6a1f1dSLionel Sambucconverting parsed assembly operands in the MCInst structures. It also
124*0a6a1f1dSLionel Sambucemits a matcher for custom operand parsing. Extensive documentation is
125*0a6a1f1dSLionel Sambucwritten on the ``AsmMatcherEmitter.cpp`` file.
126*0a6a1f1dSLionel Sambuc
127*0a6a1f1dSLionel Sambuc**Output**: Assembler parsers' matcher functions, declarations, etc.
128*0a6a1f1dSLionel Sambuc
129*0a6a1f1dSLionel Sambuc**Usage**: Used in back-ends' ``AsmParser/<Target>AsmParser.cpp`` for
130*0a6a1f1dSLionel Sambucbuilding the AsmParser class.
131*0a6a1f1dSLionel Sambuc
132*0a6a1f1dSLionel SambucDisassembler
133*0a6a1f1dSLionel Sambuc------------
134*0a6a1f1dSLionel Sambuc
135*0a6a1f1dSLionel Sambuc**Purpose**: Contains disassembler table emitters for various
136*0a6a1f1dSLionel Sambucarchitectures. Extensive documentation is written on the
137*0a6a1f1dSLionel Sambuc``DisassemblerEmitter.cpp`` file.
138*0a6a1f1dSLionel Sambuc
139*0a6a1f1dSLionel Sambuc**Output**: Decoding tables, static decoding functions, etc.
140*0a6a1f1dSLionel Sambuc
141*0a6a1f1dSLionel Sambuc**Usage**: Directly included in ``Disassembler/<Target>Disassembler.cpp``
142*0a6a1f1dSLionel Sambucto cater for all default decodings, after all hand-made ones.
143*0a6a1f1dSLionel Sambuc
144*0a6a1f1dSLionel SambucPseudoLowering
145*0a6a1f1dSLionel Sambuc--------------
146*0a6a1f1dSLionel Sambuc
147*0a6a1f1dSLionel Sambuc**Purpose**: Generate pseudo instruction lowering.
148*0a6a1f1dSLionel Sambuc
149*0a6a1f1dSLionel Sambuc**Output**: Implements ``ARMAsmPrinter::emitPseudoExpansionLowering()``.
150*0a6a1f1dSLionel Sambuc
151*0a6a1f1dSLionel Sambuc**Usage**: Included directly into ``<Target>AsmPrinter.cpp``.
152*0a6a1f1dSLionel Sambuc
153*0a6a1f1dSLionel SambucCallingConv
154*0a6a1f1dSLionel Sambuc-----------
155*0a6a1f1dSLionel Sambuc
156*0a6a1f1dSLionel Sambuc**Purpose**: Responsible for emitting descriptions of the calling
157*0a6a1f1dSLionel Sambucconventions supported by this target.
158*0a6a1f1dSLionel Sambuc
159*0a6a1f1dSLionel Sambuc**Output**: Implement static functions to deal with calling conventions
160*0a6a1f1dSLionel Sambucchained by matching styles, returning false on no match.
161*0a6a1f1dSLionel Sambuc
162*0a6a1f1dSLionel Sambuc**Usage**: Used in ISelLowering and FastIsel as function pointers to
163*0a6a1f1dSLionel Sambucimplementation returned by a CC sellection function.
164*0a6a1f1dSLionel Sambuc
165*0a6a1f1dSLionel SambucDAGISel
166*0a6a1f1dSLionel Sambuc-------
167*0a6a1f1dSLionel Sambuc
168*0a6a1f1dSLionel Sambuc**Purpose**: Generate a DAG instruction selector.
169*0a6a1f1dSLionel Sambuc
170*0a6a1f1dSLionel Sambuc**Output**: Creates huge functions for automating DAG selection.
171*0a6a1f1dSLionel Sambuc
172*0a6a1f1dSLionel Sambuc**Usage**: Included in ``<Target>ISelDAGToDAG.cpp`` inside the target's
173*0a6a1f1dSLionel Sambucimplementation of ``SelectionDAGISel``.
174*0a6a1f1dSLionel Sambuc
175*0a6a1f1dSLionel SambucDFAPacketizer
176*0a6a1f1dSLionel Sambuc-------------
177*0a6a1f1dSLionel Sambuc
178*0a6a1f1dSLionel Sambuc**Purpose**: This class parses the Schedule.td file and produces an API that
179*0a6a1f1dSLionel Sambuccan be used to reason about whether an instruction can be added to a packet
180*0a6a1f1dSLionel Sambucon a VLIW architecture. The class internally generates a deterministic finite
181*0a6a1f1dSLionel Sambucautomaton (DFA) that models all possible mappings of machine instructions
182*0a6a1f1dSLionel Sambucto functional units as instructions are added to a packet.
183*0a6a1f1dSLionel Sambuc
184*0a6a1f1dSLionel Sambuc**Output**: Scheduling tables for GPU back-ends (Hexagon, AMD).
185*0a6a1f1dSLionel Sambuc
186*0a6a1f1dSLionel Sambuc**Usage**: Included directly on ``<Target>InstrInfo.cpp``.
187*0a6a1f1dSLionel Sambuc
188*0a6a1f1dSLionel SambucFastISel
189*0a6a1f1dSLionel Sambuc--------
190*0a6a1f1dSLionel Sambuc
191*0a6a1f1dSLionel Sambuc**Purpose**: This tablegen backend emits code for use by the "fast"
192*0a6a1f1dSLionel Sambucinstruction selection algorithm. See the comments at the top of
193*0a6a1f1dSLionel Sambuclib/CodeGen/SelectionDAG/FastISel.cpp for background. This file
194*0a6a1f1dSLionel Sambucscans through the target's tablegen instruction-info files
195*0a6a1f1dSLionel Sambucand extracts instructions with obvious-looking patterns, and it emits
196*0a6a1f1dSLionel Sambuccode to look up these instructions by type and operator.
197*0a6a1f1dSLionel Sambuc
198*0a6a1f1dSLionel Sambuc**Output**: Generates ``Predicate`` and ``FastEmit`` methods.
199*0a6a1f1dSLionel Sambuc
200*0a6a1f1dSLionel Sambuc**Usage**: Implements private methods of the targets' implementation
201*0a6a1f1dSLionel Sambucof ``FastISel`` class.
202*0a6a1f1dSLionel Sambuc
203*0a6a1f1dSLionel SambucSubtarget
204*0a6a1f1dSLionel Sambuc---------
205*0a6a1f1dSLionel Sambuc
206*0a6a1f1dSLionel Sambuc**Purpose**: Generate subtarget enumerations.
207*0a6a1f1dSLionel Sambuc
208*0a6a1f1dSLionel Sambuc**Output**: Enums, globals, local tables for sub-target information.
209*0a6a1f1dSLionel Sambuc
210*0a6a1f1dSLionel Sambuc**Usage**: Populates ``<Target>Subtarget`` and
211*0a6a1f1dSLionel Sambuc``MCTargetDesc/<Target>MCTargetDesc`` files (both headers and source).
212*0a6a1f1dSLionel Sambuc
213*0a6a1f1dSLionel SambucIntrinsic
214*0a6a1f1dSLionel Sambuc---------
215*0a6a1f1dSLionel Sambuc
216*0a6a1f1dSLionel Sambuc**Purpose**: Generate (target) intrinsic information.
217*0a6a1f1dSLionel Sambuc
218*0a6a1f1dSLionel SambucOptParserDefs
219*0a6a1f1dSLionel Sambuc-------------
220*0a6a1f1dSLionel Sambuc
221*0a6a1f1dSLionel Sambuc**Purpose**: Print enum values for a class.
222*0a6a1f1dSLionel Sambuc
223*0a6a1f1dSLionel SambucCTags
224*0a6a1f1dSLionel Sambuc-----
225*0a6a1f1dSLionel Sambuc
226*0a6a1f1dSLionel Sambuc**Purpose**: This tablegen backend emits an index of definitions in ctags(1)
227*0a6a1f1dSLionel Sambucformat. A helper script, utils/TableGen/tdtags, provides an easier-to-use
228*0a6a1f1dSLionel Sambucinterface; run 'tdtags -H' for documentation.
229*0a6a1f1dSLionel Sambuc
230*0a6a1f1dSLionel SambucClang BackEnds
231*0a6a1f1dSLionel Sambuc==============
232*0a6a1f1dSLionel Sambuc
233*0a6a1f1dSLionel SambucClangAttrClasses
234*0a6a1f1dSLionel Sambuc----------------
235*0a6a1f1dSLionel Sambuc
236*0a6a1f1dSLionel Sambuc**Purpose**: Creates Attrs.inc, which contains semantic attribute class
237*0a6a1f1dSLionel Sambucdeclarations for any attribute in ``Attr.td`` that has not set ``ASTNode = 0``.
238*0a6a1f1dSLionel SambucThis file is included as part of ``Attr.h``.
239*0a6a1f1dSLionel Sambuc
240*0a6a1f1dSLionel SambucClangAttrParserStringSwitches
241*0a6a1f1dSLionel Sambuc-----------------------------
242*0a6a1f1dSLionel Sambuc
243*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrParserStringSwitches.inc, which contains
244*0a6a1f1dSLionel SambucStringSwitch::Case statements for parser-related string switches. Each switch
245*0a6a1f1dSLionel Sambucis given its own macro (such as ``CLANG_ATTR_ARG_CONTEXT_LIST``, or
246*0a6a1f1dSLionel Sambuc``CLANG_ATTR_IDENTIFIER_ARG_LIST``), which is expected to be defined before
247*0a6a1f1dSLionel Sambucincluding AttrParserStringSwitches.inc, and undefined after.
248*0a6a1f1dSLionel Sambuc
249*0a6a1f1dSLionel SambucClangAttrImpl
250*0a6a1f1dSLionel Sambuc-------------
251*0a6a1f1dSLionel Sambuc
252*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrImpl.inc, which contains semantic attribute class
253*0a6a1f1dSLionel Sambucdefinitions for any attribute in ``Attr.td`` that has not set ``ASTNode = 0``.
254*0a6a1f1dSLionel SambucThis file is included as part of ``AttrImpl.cpp``.
255*0a6a1f1dSLionel Sambuc
256*0a6a1f1dSLionel SambucClangAttrList
257*0a6a1f1dSLionel Sambuc-------------
258*0a6a1f1dSLionel Sambuc
259*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrList.inc, which is used when a list of semantic
260*0a6a1f1dSLionel Sambucattribute identifiers is required. For instance, ``AttrKinds.h`` includes this
261*0a6a1f1dSLionel Sambucfile to generate the list of ``attr::Kind`` enumeration values. This list is
262*0a6a1f1dSLionel Sambucseparated out into multiple categories: attributes, inheritable attributes, and
263*0a6a1f1dSLionel Sambucinheritable parameter attributes. This categorization happens automatically
264*0a6a1f1dSLionel Sambucbased on information in ``Attr.td`` and is used to implement the ``classof``
265*0a6a1f1dSLionel Sambucfunctionality required for ``dyn_cast`` and similar APIs.
266*0a6a1f1dSLionel Sambuc
267*0a6a1f1dSLionel SambucClangAttrPCHRead
268*0a6a1f1dSLionel Sambuc----------------
269*0a6a1f1dSLionel Sambuc
270*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrPCHRead.inc, which is used to deserialize attributes
271*0a6a1f1dSLionel Sambucin the ``ASTReader::ReadAttributes`` function.
272*0a6a1f1dSLionel Sambuc
273*0a6a1f1dSLionel SambucClangAttrPCHWrite
274*0a6a1f1dSLionel Sambuc-----------------
275*0a6a1f1dSLionel Sambuc
276*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrPCHWrite.inc, which is used to serialize attributes in
277*0a6a1f1dSLionel Sambucthe ``ASTWriter::WriteAttributes`` function.
278*0a6a1f1dSLionel Sambuc
279*0a6a1f1dSLionel SambucClangAttrSpellings
280*0a6a1f1dSLionel Sambuc---------------------
281*0a6a1f1dSLionel Sambuc
282*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrSpellings.inc, which is used to implement the
283*0a6a1f1dSLionel Sambuc``__has_attribute`` feature test macro.
284*0a6a1f1dSLionel Sambuc
285*0a6a1f1dSLionel SambucClangAttrSpellingListIndex
286*0a6a1f1dSLionel Sambuc--------------------------
287*0a6a1f1dSLionel Sambuc
288*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrSpellingListIndex.inc, which is used to map parsed
289*0a6a1f1dSLionel Sambucattribute spellings (including which syntax or scope was used) to an attribute
290*0a6a1f1dSLionel Sambucspelling list index. These spelling list index values are internal
291*0a6a1f1dSLionel Sambucimplementation details exposed via
292*0a6a1f1dSLionel Sambuc``AttributeList::getAttributeSpellingListIndex``.
293*0a6a1f1dSLionel Sambuc
294*0a6a1f1dSLionel SambucClangAttrVisitor
295*0a6a1f1dSLionel Sambuc-------------------
296*0a6a1f1dSLionel Sambuc
297*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrVisitor.inc, which is used when implementing
298*0a6a1f1dSLionel Sambucrecursive AST visitors.
299*0a6a1f1dSLionel Sambuc
300*0a6a1f1dSLionel SambucClangAttrTemplateInstantiate
301*0a6a1f1dSLionel Sambuc----------------------------
302*0a6a1f1dSLionel Sambuc
303*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrTemplateInstantiate.inc, which implements the
304*0a6a1f1dSLionel Sambuc``instantiateTemplateAttribute`` function, used when instantiating a template
305*0a6a1f1dSLionel Sambucthat requires an attribute to be cloned.
306*0a6a1f1dSLionel Sambuc
307*0a6a1f1dSLionel SambucClangAttrParsedAttrList
308*0a6a1f1dSLionel Sambuc-----------------------
309*0a6a1f1dSLionel Sambuc
310*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrParsedAttrList.inc, which is used to generate the
311*0a6a1f1dSLionel Sambuc``AttributeList::Kind`` parsed attribute enumeration.
312*0a6a1f1dSLionel Sambuc
313*0a6a1f1dSLionel SambucClangAttrParsedAttrImpl
314*0a6a1f1dSLionel Sambuc-----------------------
315*0a6a1f1dSLionel Sambuc
316*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrParsedAttrImpl.inc, which is used by
317*0a6a1f1dSLionel Sambuc``AttributeList.cpp`` to implement several functions on the ``AttributeList``
318*0a6a1f1dSLionel Sambucclass. This functionality is implemented via the ``AttrInfoMap ParsedAttrInfo``
319*0a6a1f1dSLionel Sambucarray, which contains one element per parsed attribute object.
320*0a6a1f1dSLionel Sambuc
321*0a6a1f1dSLionel SambucClangAttrParsedAttrKinds
322*0a6a1f1dSLionel Sambuc------------------------
323*0a6a1f1dSLionel Sambuc
324*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrParsedAttrKinds.inc, which is used to implement the
325*0a6a1f1dSLionel Sambuc``AttributeList::getKind`` function, mapping a string (and syntax) to a parsed
326*0a6a1f1dSLionel Sambucattribute ``AttributeList::Kind`` enumeration.
327*0a6a1f1dSLionel Sambuc
328*0a6a1f1dSLionel SambucClangAttrDump
329*0a6a1f1dSLionel Sambuc-------------
330*0a6a1f1dSLionel Sambuc
331*0a6a1f1dSLionel Sambuc**Purpose**: Creates AttrDump.inc, which dumps information about an attribute.
332*0a6a1f1dSLionel SambucIt is used to implement ``ASTDumper::dumpAttr``.
333*0a6a1f1dSLionel Sambuc
334*0a6a1f1dSLionel SambucClangDiagsDefs
335*0a6a1f1dSLionel Sambuc--------------
336*0a6a1f1dSLionel Sambuc
337*0a6a1f1dSLionel SambucGenerate Clang diagnostics definitions.
338*0a6a1f1dSLionel Sambuc
339*0a6a1f1dSLionel SambucClangDiagGroups
340*0a6a1f1dSLionel Sambuc---------------
341*0a6a1f1dSLionel Sambuc
342*0a6a1f1dSLionel SambucGenerate Clang diagnostic groups.
343*0a6a1f1dSLionel Sambuc
344*0a6a1f1dSLionel SambucClangDiagsIndexName
345*0a6a1f1dSLionel Sambuc-------------------
346*0a6a1f1dSLionel Sambuc
347*0a6a1f1dSLionel SambucGenerate Clang diagnostic name index.
348*0a6a1f1dSLionel Sambuc
349*0a6a1f1dSLionel SambucClangCommentNodes
350*0a6a1f1dSLionel Sambuc-----------------
351*0a6a1f1dSLionel Sambuc
352*0a6a1f1dSLionel SambucGenerate Clang AST comment nodes.
353*0a6a1f1dSLionel Sambuc
354*0a6a1f1dSLionel SambucClangDeclNodes
355*0a6a1f1dSLionel Sambuc--------------
356*0a6a1f1dSLionel Sambuc
357*0a6a1f1dSLionel SambucGenerate Clang AST declaration nodes.
358*0a6a1f1dSLionel Sambuc
359*0a6a1f1dSLionel SambucClangStmtNodes
360*0a6a1f1dSLionel Sambuc--------------
361*0a6a1f1dSLionel Sambuc
362*0a6a1f1dSLionel SambucGenerate Clang AST statement nodes.
363*0a6a1f1dSLionel Sambuc
364*0a6a1f1dSLionel SambucClangSACheckers
365*0a6a1f1dSLionel Sambuc---------------
366*0a6a1f1dSLionel Sambuc
367*0a6a1f1dSLionel SambucGenerate Clang Static Analyzer checkers.
368*0a6a1f1dSLionel Sambuc
369*0a6a1f1dSLionel SambucClangCommentHTMLTags
370*0a6a1f1dSLionel Sambuc--------------------
371*0a6a1f1dSLionel Sambuc
372*0a6a1f1dSLionel SambucGenerate efficient matchers for HTML tag names that are used in documentation comments.
373*0a6a1f1dSLionel Sambuc
374*0a6a1f1dSLionel SambucClangCommentHTMLTagsProperties
375*0a6a1f1dSLionel Sambuc------------------------------
376*0a6a1f1dSLionel Sambuc
377*0a6a1f1dSLionel SambucGenerate efficient matchers for HTML tag properties.
378*0a6a1f1dSLionel Sambuc
379*0a6a1f1dSLionel SambucClangCommentHTMLNamedCharacterReferences
380*0a6a1f1dSLionel Sambuc----------------------------------------
381*0a6a1f1dSLionel Sambuc
382*0a6a1f1dSLionel SambucGenerate function to translate named character references to UTF-8 sequences.
383*0a6a1f1dSLionel Sambuc
384*0a6a1f1dSLionel SambucClangCommentCommandInfo
385*0a6a1f1dSLionel Sambuc-----------------------
386*0a6a1f1dSLionel Sambuc
387*0a6a1f1dSLionel SambucGenerate command properties for commands that are used in documentation comments.
388*0a6a1f1dSLionel Sambuc
389*0a6a1f1dSLionel SambucClangCommentCommandList
390*0a6a1f1dSLionel Sambuc-----------------------
391*0a6a1f1dSLionel Sambuc
392*0a6a1f1dSLionel SambucGenerate list of commands that are used in documentation comments.
393*0a6a1f1dSLionel Sambuc
394*0a6a1f1dSLionel SambucArmNeon
395*0a6a1f1dSLionel Sambuc-------
396*0a6a1f1dSLionel Sambuc
397*0a6a1f1dSLionel SambucGenerate arm_neon.h for clang.
398*0a6a1f1dSLionel Sambuc
399*0a6a1f1dSLionel SambucArmNeonSema
400*0a6a1f1dSLionel Sambuc-----------
401*0a6a1f1dSLionel Sambuc
402*0a6a1f1dSLionel SambucGenerate ARM NEON sema support for clang.
403*0a6a1f1dSLionel Sambuc
404*0a6a1f1dSLionel SambucArmNeonTest
405*0a6a1f1dSLionel Sambuc-----------
406*0a6a1f1dSLionel Sambuc
407*0a6a1f1dSLionel SambucGenerate ARM NEON tests for clang.
408*0a6a1f1dSLionel Sambuc
409*0a6a1f1dSLionel SambucAttrDocs
410*0a6a1f1dSLionel Sambuc--------
411*0a6a1f1dSLionel Sambuc
412*0a6a1f1dSLionel Sambuc**Purpose**: Creates ``AttributeReference.rst`` from ``AttrDocs.td``, and is
413*0a6a1f1dSLionel Sambucused for documenting user-facing attributes.
414*0a6a1f1dSLionel Sambuc
415*0a6a1f1dSLionel SambucHow to write a back-end
416*0a6a1f1dSLionel Sambuc=======================
417*0a6a1f1dSLionel Sambuc
418*0a6a1f1dSLionel SambucTODO.
419*0a6a1f1dSLionel Sambuc
420*0a6a1f1dSLionel SambucUntil we get a step-by-step HowTo for writing TableGen backends, you can at
421*0a6a1f1dSLionel Sambucleast grab the boilerplate (build system, new files, etc.) from Clang's
422*0a6a1f1dSLionel Sambucr173931.
423*0a6a1f1dSLionel Sambuc
424*0a6a1f1dSLionel SambucTODO: How they work, how to write one.  This section should not contain details
425*0a6a1f1dSLionel Sambucabout any particular backend, except maybe ``-print-enums`` as an example.  This
426*0a6a1f1dSLionel Sambucshould highlight the APIs in ``TableGen/Record.h``.
427*0a6a1f1dSLionel Sambuc
428