md.texi: Document the mnemonic attribute.

2013-10-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* doc/md.texi: Document the mnemonic attribute.

From-SVN: r203354
This commit is contained in:
Andreas Krebbel 2013-10-10 12:02:16 +00:00 committed by Andreas Krebbel
parent 5db40447b8
commit 13b72c22f7
2 changed files with 62 additions and 9 deletions

View File

@ -1,3 +1,7 @@
2013-10-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* doc/md.texi: Document the mnemonic attribute.
2013-10-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR target/57377

View File

@ -7698,6 +7698,7 @@ to track the condition codes.
* Attr Example:: An example of assigning attributes.
* Insn Lengths:: Computing the length of insns.
* Constant Attributes:: Defining attributes that are constant.
* Mnemonic Attribute:: Obtain the instruction mnemonic as attribute value.
* Delay Slots:: Defining delay slots required for a machine.
* Processor pipeline description:: Specifying information for insn scheduling.
@end menu
@ -7717,15 +7718,17 @@ by the target machine. It looks like:
(define_attr @var{name} @var{list-of-values} @var{default})
@end smallexample
@var{name} is a string specifying the name of the attribute being defined.
Some attributes are used in a special way by the rest of the compiler. The
@code{enabled} attribute can be used to conditionally enable or disable
insn alternatives (@pxref{Disable Insn Alternatives}). The @code{predicable}
attribute, together with a suitable @code{define_cond_exec}
(@pxref{Conditional Execution}), can be used to automatically generate
conditional variants of instruction patterns. The compiler internally uses
the names @code{ce_enabled} and @code{nonce_enabled}, so they should not be
used elsewhere as alternative names.
@var{name} is a string specifying the name of the attribute being
defined. Some attributes are used in a special way by the rest of the
compiler. The @code{enabled} attribute can be used to conditionally
enable or disable insn alternatives (@pxref{Disable Insn
Alternatives}). The @code{predicable} attribute, together with a
suitable @code{define_cond_exec} (@pxref{Conditional Execution}), can
be used to automatically generate conditional variants of instruction
patterns. The @code{mnemonic} attribute can be used to check for the
instruction mnemonic (@pxref{Mnemonic Attribute}). The compiler
internally uses the names @code{ce_enabled} and @code{nonce_enabled},
so they should not be used elsewhere as alternative names.
@var{list-of-values} is either a string that specifies a comma-separated
list of values that can be assigned to the attribute, or a null string to
@ -7789,6 +7792,11 @@ distances. @xref{Insn Lengths}.
The @code{enabled} attribute can be defined to prevent certain
alternatives of an insn definition from being used during code
generation. @xref{Disable Insn Alternatives}.
@item mnemonic
The @code{mnemonic} attribute can be defined to implement instruction
specific checks in e.g. the pipeline description.
@xref{Mnemonic Attribute}.
@end table
For each of these special attributes, the corresponding
@ -8339,6 +8347,47 @@ the value of a constant attribute may use the @code{symbol_ref} form,
but may not use either the @code{match_operand} form or @code{eq_attr}
forms involving insn attributes.
@end ifset
@ifset INTERNALS
@node Mnemonic Attribute
@subsection Mnemonic Attribute
@cindex mnemonic attribute
The @code{mnemonic} attribute is a string type attribute holding the
instruction mnemonic for an insn alternative. The attribute values
will automatically be generated by the machine description parser if
there is an attribute definition in the md file:
@smallexample
(define_attr "mnemonic" "unknown" (const_string "unknown"))
@end smallexample
The default value can be freely chosen as long as it does not collide
with any of the instruction mnemonics. This value will be used
whenever the machine description parser is not able to determine the
mnemonic string. This might be the case for output templates
containing more than a single instruction as in
@code{"mvcle\t%0,%1,0\;jo\t.-4"}.
The @code{mnemonic} attribute set is not generated automatically if the
instruction string is generated via C code.
An existing @code{mnemonic} attribute set in an insn definition will not
be overriden by the md file parser. That way it is possible to
manually set the instruction mnemonics for the cases where the md file
parser fails to determine it automatically.
The @code{mnemonic} attribute is useful for dealing with instruction
specific properties in the pipeline description without defining
additional insn attributes.
@smallexample
(define_attr "ooo_expanded" ""
(cond [(eq_attr "mnemonic" "dlr,dsgr,d,dsgf,stam,dsgfr,dlgr")
(const_int 1)]
(const_int 0)))
@end smallexample
@end ifset
@ifset INTERNALS
@node Delay Slots