X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fmachmode.def;h=fbaea1096a632e58e5c7b2efe1456c7d32a0d227;hb=9636921b6f9c9162ae3aeb278b588b6ee37a3842;hp=7e4898628e44a8092d9d852bdc5cd592ea95934f;hpb=978b9403a08e35ee6d83abf428bf97dba0ef99f7;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/machmode.def b/gcc/machmode.def index 7e4898628e4..fbaea1096a6 100644 --- a/gcc/machmode.def +++ b/gcc/machmode.def @@ -1,13 +1,13 @@ /* This file contains the definitions and documentation for the machine modes used in the GNU compiler. - Copyright (C) 1987, 1992, 1994, 1997, 1998, 2000, 2003, 2004, 2005 - Free Software Foundation, Inc. + Copyright (C) 1987, 1992, 1994, 1997, 1998, 2000, 2003, 2004, 2005, + 2007 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later +Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY @@ -16,9 +16,8 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ +along with GCC; see the file COPYING3. If not see +. */ /* This file defines all the MACHINE MODES used by GCC. @@ -87,11 +86,33 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA using floating point format FORMAT. All of the bits of its representation are significant. + DECIMAL FLOAT_MODE (MODE, BYTESIZE); + declares MODE to be of class DECIMAL_FLOAT and BYTESIZE bytes + wide. All of the bits of its representation are significant. + FRACTIONAL_FLOAT_MODE (MODE, PRECISION, BYTESIZE, FORMAT); declares MODE to be of class FLOAT, BYTESIZE bytes wide in storage, but with only PRECISION significant bits, using floating point format FORMAT. + FRACT_MODE (MODE, BYTESIZE, FBIT); + declares MODE to be of class FRACT and BYTESIZE bytes wide + with FBIT fractional bits. There may be padding bits. + + UFRACT_MODE (MODE, BYTESIZE, FBIT); + declares MODE to be of class UFRACT and BYTESIZE bytes wide + with FBIT fractional bits. There may be padding bits. + + ACCUM_MODE (MODE, BYTESIZE, IBIT, FBIT); + declares MODE to be of class ACCUM and BYTESIZE bytes wide + with IBIT integral bits and FBIT fractional bits. + There may be padding bits. + + UACCUM_MODE (MODE, BYTESIZE, FBIT); + declares MODE to be of class UACCUM and BYTESIZE bytes wide + with IBIT integral bits and FBIT fractional bits. + There may be padding bits. + RESET_FLOAT_FORMAT (MODE, FORMAT); changes the format of MODE, which must be class FLOAT, to FORMAT. Use in an ARCH-modes.def to reset the format @@ -129,10 +150,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ADJUST_BYTESIZE (MODE, EXPR); ADJUST_ALIGNMENT (MODE, EXPR); ADJUST_FLOAT_FORMAT (MODE, EXPR); - Arrange for the byte size, alignment, or floating point format - of MODE to be adjustable at run time. EXPR will be executed + ADJUST_IBIT (MODE, EXPR); + ADJUST_FBIT (MODE, EXPR); + Arrange for the byte size, alignment, floating point format, ibit, + or fbit of MODE to be adjustable at run time. EXPR will be executed once after processing all command line options, and should - evaluate to the desired byte size, alignment, or format. + evaluate to the desired byte size, alignment, format, ibit or fbit. Unlike a FORMAT argument, if you are adjusting a float format you must put an & in front of the name of each format structure. @@ -177,6 +200,29 @@ FLOAT_MODE (DF, 8, ieee_double_format); FIXME define this only for targets that need it. */ CC_MODE (CC); +/* Fixed-point modes. */ +FRACT_MODE (QQ, 1, 7); /* s.7 */ +FRACT_MODE (HQ, 2, 15); /* s.15 */ +FRACT_MODE (SQ, 4, 31); /* s.31 */ +FRACT_MODE (DQ, 8, 63); /* s.63 */ +FRACT_MODE (TQ, 16, 127); /* s.127 */ + +UFRACT_MODE (UQQ, 1, 8); /* .8 */ +UFRACT_MODE (UHQ, 2, 16); /* .16 */ +UFRACT_MODE (USQ, 4, 32); /* .32 */ +UFRACT_MODE (UDQ, 8, 64); /* .64 */ +UFRACT_MODE (UTQ, 16, 128); /* .128 */ + +ACCUM_MODE (HA, 2, 8, 7); /* s8.7 */ +ACCUM_MODE (SA, 4, 16, 15); /* s16.15 */ +ACCUM_MODE (DA, 8, 32, 31); /* s32.31 */ +ACCUM_MODE (TA, 16, 64, 63); /* s64.63 */ + +UACCUM_MODE (UHA, 2, 8, 8); /* 8.8 */ +UACCUM_MODE (USA, 4, 16, 16); /* 16.16 */ +UACCUM_MODE (UDA, 8, 32, 32); /* 32.32 */ +UACCUM_MODE (UTA, 16, 64, 64); /* 64.64 */ + /* Allow the target to specify additional modes of various kinds. */ #if HAVE_EXTRA_MODES # include EXTRA_MODES_FILE @@ -186,6 +232,11 @@ CC_MODE (CC); COMPLEX_MODES (INT); COMPLEX_MODES (FLOAT); +/* Decimal floating point modes. */ +DECIMAL_FLOAT_MODE (SD, 4, decimal_single_format); +DECIMAL_FLOAT_MODE (DD, 8, decimal_double_format); +DECIMAL_FLOAT_MODE (TD, 16, decimal_quad_format); + /* The symbol Pmode stands for one of the above machine modes (usually SImode). The tm.h file specifies which one. It is not a distinct mode. */