/* VAX extra machine modes.
   Copyright (C) 2003-2021 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 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or 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 COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

/* We just need to reset the floating point formats.  */
RESET_FLOAT_FORMAT (SF, vax_f_format);
RESET_FLOAT_FORMAT (DF, vax_d_format);

/* `DImode' addition and subtraction operations do their calculation
   on the low and then the high longword with separate instructions,
   and therefore only usably set N.  */
CC_MODE (CCN);
/* Non-arithmetic integer instructions such as MOV or XOR as well as
   instructions that produce a floating-point result only usably set
   N and Z.  */
CC_MODE (CCNZ);
/* The FFC and FFS instructions only usably set Z.  */
CC_MODE (CCZ);
