diff options
author | DJ Delorie <dj@redhat.com> | 2013-09-14 02:13:18 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2013-09-14 02:13:18 -0400 |
commit | ceb2fc49ce5049ecafd811ca8ba406eadbdba5f8 (patch) | |
tree | 6f028c72a0421ebf758b7e3a0b11fc485361a541 /libgcc/config/rl78/signbit.S | |
parent | 03112d9463c2d0888ac4b0689573e4ae3d5e5b75 (diff) | |
download | gcc-ceb2fc49ce5049ecafd811ca8ba406eadbdba5f8.tar.gz |
mulsi3.S: Remove a few unneeded moves and branches.
* config/rl78/mulsi3.S: Remove a few unneeded moves and branches.
* config/rl78/vregs.h: New.
* config/rl78/signbit.S: New file. Implements signbit function.
* config/rl78/divmodsi.S: New.
* config/rl78/divmodhi.S: New.
* config/rl78/divmodqi.S: New.
* config/rl78/t-rl78: Build them here...
* config/rl78/lib2div.c: ...but not here.
Co-Authored-By: Nick Clifton <nickc@redhat.com>
From-SVN: r202588
Diffstat (limited to 'libgcc/config/rl78/signbit.S')
-rw-r--r-- | libgcc/config/rl78/signbit.S | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/libgcc/config/rl78/signbit.S b/libgcc/config/rl78/signbit.S new file mode 100644 index 00000000000..afd0f07eb47 --- /dev/null +++ b/libgcc/config/rl78/signbit.S @@ -0,0 +1,67 @@ +; Copyright (C) 2012,2013 Free Software Foundation, Inc. +; Contributed by Red Hat. +; +; This file 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. +; +; This file 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. +; +; Under Section 7 of GPL version 3, you are granted additional +; permissions described in the GCC Runtime Library Exception, version +; 3.1, as published by the Free Software Foundation. +; +; You should have received a copy of the GNU General Public License and +; a copy of the GCC Runtime Library Exception along with this program; +; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +; <http://www.gnu.org/licenses/>. + +#include "vregs.h" + +;; int signbitf (float X) +;; int signbit (double X) +;; int signbitl (long double X) +;; +;; `signbit' returns a nonzero value if the value of X has its sign +;; bit set. +;; +;; This is not the same as `x < 0.0', because IEEE 754 floating point +;; allows zero to be signed. The comparison `-0.0 < 0.0' is false, +;; but `signbit (-0.0)' will return a nonzero value. + +;---------------------------------------------------------------------- + + .text + + .global _signbit +_signbit: + .global _signbitf +_signbitf: + ;; X is at [sp+4] + ;; result is in R8..R9 + + movw r8, #0 + mov a, [sp+7] + mov1 cy, a.7 + sknc + movw r8, #1 + ret + .size _signbit, . - _signbit + .size _signbitf, . - _signbitf + + .global _signbitl +_signbitl: + ;; X is at [sp+4] + ;; result is in R8..R9 + + movw r8, #0 + mov a, [sp+11] + mov1 cy, a.7 + sknc + movw r8, #1 + ret + .size _signbitl, . - _signbitl |