CWG 616, 1213 - value category of subobject references.
[official-gcc.git] / libgcc / config / rl78 / signbit.S
blobdde53a4d55f80d3d292746e9290fc1179123fd83
1 ;   Copyright (C) 2012-2018 Free Software Foundation, Inc.
2 ;   Contributed by Red Hat.
3
4 ; This file is free software; you can redistribute it and/or modify it
5 ; under the terms of the GNU General Public License as published by the
6 ; Free Software Foundation; either version 3, or (at your option) any
7 ; later version.
8
9 ; This file is distributed in the hope that it will be useful, but
10 ; WITHOUT ANY WARRANTY; without even the implied warranty of
11 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 ; General Public License for more details.
13
14 ; Under Section 7 of GPL version 3, you are granted additional
15 ; permissions described in the GCC Runtime Library Exception, version
16 ; 3.1, as published by the Free Software Foundation.
18 ; You should have received a copy of the GNU General Public License and
19 ; a copy of the GCC Runtime Library Exception along with this program;
20 ; see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
21 ; <http://www.gnu.org/licenses/>.
23 #include "vregs.h"
24         
25 ;; int signbitf (float X)
26 ;; int signbit  (double X)
27 ;; int signbitl (long double X)
29 ;;     `signbit' returns a nonzero value if the value of X has its sign
30 ;;     bit set.
32 ;;     This is not the same as `x < 0.0', because IEEE 754 floating point
33 ;;     allows zero to be signed.  The comparison `-0.0 < 0.0' is false,
34 ;;     but `signbit (-0.0)' will return a nonzero value.
36 ;----------------------------------------------------------------------
38         .text
40 START_FUNC              _signbit
41 START_ANOTHER_FUNC      _signbitf
42         ;; X is at [sp+4]..[SP+7]
43         ;; result is in R8..R9
45         movw    r8, #0
46         mov     a, [sp+7]
47         mov1    cy, a.7
48         sknc
49         movw    r8, #1
50         ret
51 END_ANOTHER_FUNC        _signbitf
52 END_FUNC                _signbit
55 START_FUNC      _signbitl
56         ;; X is at [sp+4]..[SP+7]
57         ;; result is in R8..R9
59         movw    r8, #0
60         mov     a, [sp+11]
61         mov1    cy, a.7
62         sknc
63         movw    r8, #1
64         ret
65 END_FUNC        _signbitl