.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  | will give a
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "TBLGEN 1"
.TH TBLGEN 1 "2006-06-02" "CVS" "LLVM Command Guide"
.SH "NAME"
tblgen \- Target Description To C++ Code Generator
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBtblgen\fR [\fIoptions\fR] [\fIfilename\fR]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBtblgen\fR translates from target description (.td) files into \*(C+ code that can
be included in the definition of an \s-1LLVM\s0 target library. Most users of \s-1LLVM\s0 will
not need to use this program. It is only for assisting with writing an \s-1LLVM\s0
target backend.
.PP
The input and output of \fBtblgen\fR is beyond the scope of this short
introduction. Please see the \fICodeGeneration\fR page in the \s-1LLVM\s0 documentation.
.PP
The \fIfilename\fR argument specifies the name of a Target Description (.td) file
to read as input.
.SH "OPTIONS"
.IX Header "OPTIONS"
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
Print a summary of command line options.
.IP "\fB\-o\fR \fIfilename\fR" 4
.IX Item "-o filename"
Specify the output file name.  If \fIfilename\fR is \f(CW\*(C`\-\*(C'\fR, then \fBtblgen\fR
sends its output to standard output.
.IP "\fB\-I\fR \fIdirectory\fR" 4
.IX Item "-I directory"
Specify where to find other target description files for inclusion. The
\&\fIdirectory\fR value should be a full or partial path to a directory that contains
target description files.
.IP "\fB\-asmwriternum\fR \fIN\fR" 4
.IX Item "-asmwriternum N"
Make \-gen\-asm\-writer emit assembly writer number \fIN\fR.
.IP "\fB\-class\fR \fIclass Name\fR" 4
.IX Item "-class class Name"
Print the enumeration list for this class.
.IP "\fB\-print\-records\fR" 4
.IX Item "-print-records"
Print all records to standard output (default).
.IP "\fB\-print\-enums\fR" 4
.IX Item "-print-enums"
Print enumeration values for a class
.IP "\fB\-gen\-emitter\fR" 4
.IX Item "-gen-emitter"
Generate machine code emitter.
.IP "\fB\-gen\-register\-enums\fR" 4
.IX Item "-gen-register-enums"
Generate the enumeration values for all registers.
.IP "\fB\-gen\-register\-desc\fR" 4
.IX Item "-gen-register-desc"
Generate a register info description for each register.
.IP "\fB\-gen\-register\-desc\-header\fR" 4
.IX Item "-gen-register-desc-header"
Generate a register info description header for each register.
.IP "\fB\-gen\-instr\-enums\fR" 4
.IX Item "-gen-instr-enums"
Generate enumeration values for instructions.
.IP "\fB\-gen\-instr\-desc\fR" 4
.IX Item "-gen-instr-desc"
Generate instruction descriptions.
.IP "\fB\-gen\-asm\-writer\fR" 4
.IX Item "-gen-asm-writer"
Generate the assembly writer.
.IP "\fB\-gen\-dag\-isel\fR" 4
.IX Item "-gen-dag-isel"
Generate a \s-1DAG\s0 (Directed Acycle Graph) instruction selector.
.IP "\fB\-gen\-subtarget\fR" 4
.IX Item "-gen-subtarget"
Generate subtarget enumerations.
.IP "\fB\-gen\-intrinsic\fR" 4
.IX Item "-gen-intrinsic"
Generate intrinsic information.
.IP "\fB\-version\fR" 4
.IX Item "-version"
Show the version number of this program.
.SH "EXIT STATUS"
.IX Header "EXIT STATUS"
If \fBtblgen\fR succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.
.SH "AUTHORS"
.IX Header "AUTHORS"
Maintained by The \s-1LLVM\s0 Team (<http://llvm.org>).
