Hi,

add missing documentation for the mnemonic attribute.

Ok?

Bye,

-Andreas-


2013-05-24  Andreas Krebbel  <andreas.kreb...@de.ibm.com>

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

---
 gcc/doc/md.texi |   67 +++++++++++++++++++++++++++++++++++++++!!!!!!!!!!!!!!!!!
 1 file changed, 47 insertions(+), 20 modifications(!)

Index: gcc/doc/md.texi
===================================================================
*** gcc/doc/md.texi.orig
--- gcc/doc/md.texi
*************** to track the condition codes.
*** 7609,7614 ****
--- 7609,7615 ----
  * 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
*************** by the target machine.  It looks like:
*** 7628,7642 ****
  (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{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
--- 7629,7645 ----
  (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 @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
*************** distances. @xref{Insn Lengths}.
*** 7700,7705 ****
--- 7703,7713 ----
  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 pipleline description.
+ @xref{Mnemonic Attribute}.
  @end table
  
  For each of these special attributes, the corresponding
*************** forms involving insn attributes.
*** 8252,8257 ****
--- 8260,8306 ----
  
  @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
  @subsection Delay Slot Scheduling
  @cindex delay slots, defining

Reply via email to