xref: /dflybsd-src/contrib/gcc-8.0/libgcc/soft-fp/trunctfxf2.c (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj /* Software floating-point emulation.
2*38fd1498Szrj    Truncate IEEE quad into IEEE extended
3*38fd1498Szrj    Copyright (C) 2007-2016 Free Software Foundation, Inc.
4*38fd1498Szrj    This file is part of the GNU C Library.
5*38fd1498Szrj    Contributed by Uros Bizjak (ubizjak@gmail.com).
6*38fd1498Szrj 
7*38fd1498Szrj    The GNU C Library is free software; you can redistribute it and/or
8*38fd1498Szrj    modify it under the terms of the GNU Lesser General Public
9*38fd1498Szrj    License as published by the Free Software Foundation; either
10*38fd1498Szrj    version 2.1 of the License, or (at your option) any later version.
11*38fd1498Szrj 
12*38fd1498Szrj    In addition to the permissions in the GNU Lesser General Public
13*38fd1498Szrj    License, the Free Software Foundation gives you unlimited
14*38fd1498Szrj    permission to link the compiled version of this file into
15*38fd1498Szrj    combinations with other programs, and to distribute those
16*38fd1498Szrj    combinations without any restriction coming from the use of this
17*38fd1498Szrj    file.  (The Lesser General Public License restrictions do apply in
18*38fd1498Szrj    other respects; for example, they cover modification of the file,
19*38fd1498Szrj    and distribution when not linked into a combine executable.)
20*38fd1498Szrj 
21*38fd1498Szrj    The GNU C Library is distributed in the hope that it will be useful,
22*38fd1498Szrj    but WITHOUT ANY WARRANTY; without even the implied warranty of
23*38fd1498Szrj    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24*38fd1498Szrj    Lesser General Public License for more details.
25*38fd1498Szrj 
26*38fd1498Szrj    You should have received a copy of the GNU Lesser General Public
27*38fd1498Szrj    License along with the GNU C Library; if not, see
28*38fd1498Szrj    <http://www.gnu.org/licenses/>.  */
29*38fd1498Szrj 
30*38fd1498Szrj #include "soft-fp.h"
31*38fd1498Szrj #include "extended.h"
32*38fd1498Szrj #include "quad.h"
33*38fd1498Szrj 
34*38fd1498Szrj XFtype
__trunctfxf2(TFtype a)35*38fd1498Szrj __trunctfxf2 (TFtype a)
36*38fd1498Szrj {
37*38fd1498Szrj   FP_DECL_EX;
38*38fd1498Szrj   FP_DECL_Q (A);
39*38fd1498Szrj   FP_DECL_E (R);
40*38fd1498Szrj   XFtype r;
41*38fd1498Szrj 
42*38fd1498Szrj   FP_INIT_ROUNDMODE;
43*38fd1498Szrj   FP_UNPACK_SEMIRAW_Q (A, a);
44*38fd1498Szrj #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q
45*38fd1498Szrj   FP_TRUNC (E, Q, 4, 4, R, A);
46*38fd1498Szrj #else
47*38fd1498Szrj   FP_TRUNC (E, Q, 2, 2, R, A);
48*38fd1498Szrj #endif
49*38fd1498Szrj   FP_PACK_SEMIRAW_E (r, R);
50*38fd1498Szrj   FP_HANDLE_EXCEPTIONS;
51*38fd1498Szrj 
52*38fd1498Szrj   return r;
53*38fd1498Szrj }
54