Home | History | Annotate | Line # | Download | only in rl78
      1 ;   Copyright (C) 2012-2024 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.
     17 ;
     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/>.
     22 
     23 #include "vregs.h"
     24 
     25 ;; int signbitf (float X)
     26 ;; int signbit  (double X)
     27 ;; int signbitl (long double X)
     28 ;;
     29 ;;     `signbit' returns a nonzero value if the value of X has its sign
     30 ;;     bit set.
     31 ;;
     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.
     35 
     36 ;----------------------------------------------------------------------
     37 
     38 	.text
     39 
     40 START_FUNC		_signbit
     41 START_ANOTHER_FUNC	_signbitf
     42 	;; X is at [sp+4]..[SP+7]
     43 	;; result is in R8..R9
     44 
     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
     53 
     54 
     55 START_FUNC	_signbitl
     56 	;; X is at [sp+4]..[SP+7]
     57 	;; result is in R8..R9
     58 
     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
     66