OSDN Git Service

* Make-lang.in (stmp-f2c.h): Don't configure the runtime
[pf3gnuchains/gcc-fork.git] / gcc / rtl.def
index 17b9715..ac51b6d 100644 (file)
@@ -1,7 +1,7 @@
 /* This file contains the definitions and documentation for the
    Register Transfer Expressions (rtx's) that make up the
    Register Transfer Language (rtl) used in the Back End of the GNU compiler.
-   Copyright (C) 1987-1991 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1988, 1992, 1994, 1995 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -17,7 +17,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 
 /* Expression definitions and descriptions for all targets are in this file.
@@ -236,7 +237,7 @@ DEF_RTL_EXPR(DEFINE_DELAY, "define_delay", "eE", 'x')
    Each gives a set of operations and associated delays.  The first three
    operands must be the same for each operation for the same function unit.
 
-   All delays are specified in units of COST_PER_CYCLE.
+   All delays are specified in cycles.
 
    1st operand: Name of function unit (mostly for documentation)
    2nd operand: Number of identical function units in CPU
@@ -250,19 +251,21 @@ DEF_RTL_EXPR(DEFINE_DELAY, "define_delay", "eE", 'x')
                executing this operation.  The meaning depends on whether or
                not the next operand is supplied.
    7th operand: If this operand is not specified, the 6th operand gives the
-               cost of scheduling another operation on this unit while a
-               previous one is active.  A value of zero should be used for a
-               pipelined unit.  If only one operation can be executed a time
-               and the unit is busy for the entire time, the 3rd operand
-               should be specified as 1 and the 6th and 7th operands will
-               be ignored.
+               number of cycles after the instruction matching the 4th
+               operand begins using the function unit until a subsequent
+               insn can begin.  A value of zero should be used for a
+               unit with no issue constraints.  If only one operation can
+               be executed a time and the unit is busy for the entire time,
+               the 3rd operand should be specified as 1, the 6th operand
+               sould be specified as 0, and the 7th operand should not
+               be specified.
 
                If this operand is specified, it is a list of attribute
                expressions.  If an insn for which any of these expressions
                is true is currently executing on the function unit, the
-               delay will be given by the 6th operand.  Otherwise, the
-               insn can be immediately scheduled (subject to the limit on
-               the number of simultaneous operations executing on the
+               issue delay will be given by the 6th operand.  Otherwise,
+               the insn can be immediately scheduled (subject to the limit
+               on the number of simultaneous operations executing on the
                unit.)  */
 DEF_RTL_EXPR(DEFINE_FUNCTION_UNIT, "define_function_unit", "siieiiV", 'x')
 
@@ -323,6 +326,16 @@ DEF_RTL_EXPR(SET_ATTR_ALTERNATIVE, "set_attr_alternative", "sE", 'x')
    attribute name and the second is the comparison value.  */
 DEF_RTL_EXPR(EQ_ATTR, "eq_attr", "ss", 'x')
 
+/* A conditional expression which is true if the specified flag is
+   true for the insn being scheduled in reorg.
+
+   genattr.c defines the following flags which can be tested by
+   (attr_flag "foo") expressions in eligible_for_delay.
+
+   forward, backward, very_likely, likely, very_unlikely, and unlikely.  */
+
+DEF_RTL_EXPR (ATTR_FLAG, "attr_flag", "s", 'x')
+
 /* ----------------------------------------------------------------------
    Expression types used for things in the instruction chain.
 
@@ -343,8 +356,9 @@ DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "iuueiee0", 'i')
 /* An instruction that can possibly call a subroutine
    but which will not change which instruction comes next
    in the current function.
-   Fields ( rtx->fld[] ) have exact same meaning as INSN's.  */
-DEF_RTL_EXPR(CALL_INSN, "call_insn", "iuueiee", 'i')
+   Field ( rtx->fld[7] ) is CALL_INSN_FUNCTION_USAGE.
+   All other fields ( rtx->fld[] ) have exact same meaning as INSN's.  */
+DEF_RTL_EXPR(CALL_INSN, "call_insn", "iuueieee", 'i')
 
 /* A marker that indicates that control will not flow through.  */
 DEF_RTL_EXPR(BARRIER, "barrier", "iuu", 'x')
@@ -371,7 +385,7 @@ DEF_RTL_EXPR(NOTE, "note", "iuusn", 'x')
    it contains helps to build the mapping function between the rtx's of
    the function to be inlined and the current function being expanded.  */
 
-DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieiiEe", 'x')
+DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieeiiEeEss", 'x')
 
 /* ----------------------------------------------------------------------
    Top level constituents of INSN, JUMP_INSN and CALL_INSN.
@@ -528,6 +542,12 @@ DEF_RTL_EXPR(SUBREG, "subreg", "ei", 'x')
 
 DEF_RTL_EXPR(STRICT_LOW_PART, "strict_low_part", "e", 'x')
 
+/* (CONCAT a b) represents the virtual concatenation of a and b
+   to make a value that has as many bits as a and b put together.
+   This is used for complex values.  Normally it appears only
+   in DECL_RTLs and during RTL generation, but not in the insn chain.  */
+DEF_RTL_EXPR(CONCAT, "concat", "ee", 'o')
+
 /* A memory location; operand is the address.
    Can be nested inside a VOLATILE.  */
 DEF_RTL_EXPR(MEM, "mem", "e", 'o')
@@ -624,10 +644,7 @@ DEF_RTL_EXPR(NOT, "not", "e", '1')
 
 /* Operand:
      0:  value to be shifted.
-     1:  number of bits.
-   ASHIFT and LSHIFT are distinguished because on some machines
-   these allow a negative operand and shift right in that case.  */
-DEF_RTL_EXPR(LSHIFT, "lshift", "ee", '2')
+     1:  number of bits.  */
 DEF_RTL_EXPR(ASHIFT, "ashift", "ee", '2')
 DEF_RTL_EXPR(ROTATE, "rotate", "ee", '2')
 
@@ -743,6 +760,5 @@ DEF_RTL_EXPR(LO_SUM, "lo_sum", "ee", 'o')
 /*
 Local variables:
 mode:c
-version-control: t
 End:
 */