/* 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, 1988, 1992 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1988, 1992, 1994, 1995 Free Software Foundation, Inc.
This file is part of GNU CC.
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.
/* 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')
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.
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')
/* 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')
/*
Local variables:
mode:c
-version-control: t
End:
*/