From a9a2fddbf2a93b8427478954d4efe9e02080454f Mon Sep 17 00:00:00 2001 From: Paul Koning Date: Thu, 18 Oct 2018 14:01:15 -0400 Subject: [PATCH] udivmodsi4.c (__udivmodsi4): Rename to conform to coding standard. * udivmodsi4.c (__udivmodsi4): Rename to conform to coding standard. * divmod.c: Update references to __udivmodsi4. * udivmod.c: Ditto. * udivhi3.c: New file. * udivmodhi4.c: New file. * config/pdp11/t-pdp11 (LIB2ADD): Add the new files. From-SVN: r265277 --- libgcc/ChangeLog | 10 ++++++++ libgcc/config/pdp11/t-pdp11 | 2 ++ libgcc/divmod.c | 7 +++--- libgcc/udivhi3.c | 38 ++++++++++++++++++++++++++++++ libgcc/udivmod.c | 7 +++--- libgcc/udivmodhi4.c | 47 +++++++++++++++++++++++++++++++++++++ libgcc/udivmodsi4.c | 2 +- 7 files changed, 106 insertions(+), 7 deletions(-) create mode 100644 libgcc/udivhi3.c create mode 100644 libgcc/udivmodhi4.c diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 0a69914e142..722cf48e8c1 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,13 @@ +2018-10-18 Paul Koning + + * udivmodsi4.c (__udivmodsi4): Rename to conform to coding + standard. + * divmod.c: Update references to __udivmodsi4. + * udivmod.c: Ditto. + * udivhi3.c: New file. + * udivmodhi4.c: New file. + * config/pdp11/t-pdp11 (LIB2ADD): Add the new files. + 2018-10-17 Rasmus Villemoes * Makefile.in (LIB2FUNCS_ST): Filter out LIB2FUNCS_EXCLUDE. diff --git a/libgcc/config/pdp11/t-pdp11 b/libgcc/config/pdp11/t-pdp11 index e6ba9811814..1363d09437d 100644 --- a/libgcc/config/pdp11/t-pdp11 +++ b/libgcc/config/pdp11/t-pdp11 @@ -1,5 +1,7 @@ LIB2ADD = $(srcdir)/udivmod.c \ $(srcdir)/udivmodsi4.c \ + $(srcdir)/udivhi3.c \ + $(srcdir)/udivmodhi4.c \ $(srcdir)/memcmp.c \ $(srcdir)/memcpy.c \ $(srcdir)/memmove.c \ diff --git a/libgcc/divmod.c b/libgcc/divmod.c index a67cc87fbc6..17261db9476 100644 --- a/libgcc/divmod.c +++ b/libgcc/divmod.c @@ -21,7 +21,8 @@ a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -long udivmodsi4 (); +extern unsigned long __udivmodsi4(unsigned long num, unsigned long den, + int modwanted); long __divsi3 (long a, long b) @@ -41,7 +42,7 @@ __divsi3 (long a, long b) neg = !neg; } - res = udivmodsi4 (a, b, 0); + res = __udivmodsi4 (a, b, 0); if (neg) res = -res; @@ -64,7 +65,7 @@ __modsi3 (long a, long b) if (b < 0) b = -b; - res = udivmodsi4 (a, b, 1); + res = __udivmodsi4 (a, b, 1); if (neg) res = -res; diff --git a/libgcc/udivhi3.c b/libgcc/udivhi3.c new file mode 100644 index 00000000000..5f2dc12f258 --- /dev/null +++ b/libgcc/udivhi3.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2000-2018 Free Software Foundation, Inc. + +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. + +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 +. */ + +extern unsigned short __udivmodhi4(unsigned short num, unsigned short den, + int modwanted); + +unsigned short +__udivhi3 (unsigned short a, unsigned short b) +{ + return __udivmodhi4 (a, b, 0); +} + +unsigned short +__umodhi3 (unsigned short a, unsigned short b) +{ + return __udivmodhi4 (a, b, 1); +} + diff --git a/libgcc/udivmod.c b/libgcc/udivmod.c index dc1e76a7eab..9dbcce4c102 100644 --- a/libgcc/udivmod.c +++ b/libgcc/udivmod.c @@ -21,17 +21,18 @@ a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -long udivmodsi4 (); +extern unsigned long __udivmodsi4(unsigned long num, unsigned long den, + int modwanted); long __udivsi3 (long a, long b) { - return udivmodsi4 (a, b, 0); + return __udivmodsi4 (a, b, 0); } long __umodsi3 (long a, long b) { - return udivmodsi4 (a, b, 1); + return __udivmodsi4 (a, b, 1); } diff --git a/libgcc/udivmodhi4.c b/libgcc/udivmodhi4.c new file mode 100644 index 00000000000..551a135a255 --- /dev/null +++ b/libgcc/udivmodhi4.c @@ -0,0 +1,47 @@ +/* Copyright (C) 2000-2018 Free Software Foundation, Inc. + +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. + +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 +. */ + +unsigned short +__udivmodhi4(unsigned short num, unsigned short den, int modwanted) +{ + unsigned short bit = 1; + unsigned short res = 0; + + while (den < num && bit && !(den & (1L<<31))) + { + den <<=1; + bit <<=1; + } + while (bit) + { + if (num >= den) + { + num -= den; + res |= bit; + } + bit >>=1; + den >>=1; + } + if (modwanted) return num; + return res; +} diff --git a/libgcc/udivmodsi4.c b/libgcc/udivmodsi4.c index 69e034977c1..b7dabb18154 100644 --- a/libgcc/udivmodsi4.c +++ b/libgcc/udivmodsi4.c @@ -22,7 +22,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ unsigned long -udivmodsi4(unsigned long num, unsigned long den, int modwanted) +__udivmodsi4(unsigned long num, unsigned long den, int modwanted) { unsigned long bit = 1; unsigned long res = 0;