X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fconfig%2Fc4x%2Fc4x-modes.def;h=57bfd1267ff68f7949efd22a87babcb1278b3889;hp=50798069cc609bafd83e581732f8f71b5ece752c;hb=d54b962041ed399305f12f6db7de0c5186db96d4;hpb=fa3fa444e25ec1b6c2635d8884b6844510230e1d diff --git a/gcc/config/c4x/c4x-modes.def b/gcc/config/c4x/c4x-modes.def index 50798069cc6..57bfd1267ff 100644 --- a/gcc/config/c4x/c4x-modes.def +++ b/gcc/config/c4x/c4x-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. TMS320C[34]x - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc. Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz) and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl). @@ -8,7 +8,7 @@ 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) + the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, @@ -17,15 +17,22 @@ 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 + . */ + +/* C4x wants 1- and 2-word float modes, in its own peculiar format. + FIXME: Give this port a way to get rid of SFmode, DFmode, and all + the other modes it doesn't use. */ +FLOAT_MODE (QF, 1, c4x_single_format); +FLOAT_MODE (HF, 2, c4x_extended_format); +RESET_FLOAT_FORMAT (SF, 0); /* not used */ +RESET_FLOAT_FORMAT (DF, 0); /* not used */ /* Add any extra modes needed to represent the condition code. On the C4x, we have a "no-overflow" mode which is used when an ADD, SUB, NEG, or MPY insn is used to set the condition code. This is - to prevent the combiner from optimising away a following CMP of the + to prevent the combiner from optimizing away a following CMP of the result with zero when a signed conditional branch or load insn follows. @@ -94,9 +101,8 @@ Thus (GE (MINUS (0x80000000) (0x7fffffff) (0x00000000))) sets the N flag but (GE (0x00000001)) does not set the N flag. - The upshot is that we can not use signed branch and conditional + The upshot is that we cannot use signed branch and conditional load instructions after an add, subtract, neg, abs or multiply. We must emit a compare insn to check the result against 0. */ -CC (CC_NOOV) - +CC_MODE (CC_NOOV);