/* Definitions of target machine for GNU compiler, for the HP Spectrum.
   Copyright (C) 2002-2021 Free Software Foundation, Inc.
   Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
   and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
   Software Science at the University of Utah.

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/>.  */

/* PA-RISC has the same reversed quiet bit as MIPS.
   ??? Why is this called the MIPS format.  */
RESET_FLOAT_FORMAT (SF, mips_single_format);
RESET_FLOAT_FORMAT (DF, mips_double_format);

/* TFmode: IEEE quad floating point (software).  */
FLOAT_MODE (TF, 16, mips_quad_format);

/* HPPA floating comparisons produce distinct condition codes.  */
CC_MODE (CCFP);
