From patchwork Wed May 25 01:32:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matt Turner X-Patchwork-Id: 12505 Received: (qmail 71911 invoked by alias); 25 May 2016 01:32:43 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 71859 invoked by uid 89); 25 May 2016 01:32:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=Contributed, contributed, our X-HELO: mail-pf0-f195.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/u5LswS0IbmeoLI+DicEX9eoTn4yyOjVmitZLUzRvfg=; b=DOf3/buEViQq1LCrb5NPmyaBfF4QjeO60kctWGZvKiuZq6YhSt38uWXIOaU8J1MAzq 1ABvyx9XHt/Oj69wj/ZND6Pq4g8ksNrGYjEhBe5qs3br8RY9q/n2uN8tHWMP34XwlNmw Pp3uMX2TQoDCc6z+09xxwPg6CgiWFNSuZVGAWQ7MwG2+qPlzcxwaziK0D/sE5HJyQIWC Y9Xaq+nCBfQKXkXnVo7nFb74Oo9AQPes7tqSdEpfr2n0vrClIsK0b04V7bJslfeYMQfZ N5o0bArJR32JKZXphp87QttlQSjeyuceXUPn7Vw4t56RT73tlufw1Isr7RQAW4NCha7M sM4Q== X-Gm-Message-State: ALyK8tK5Y4OQnxcSROou2oNFklfP4uwfh5OXcOXYCXugZjTrad/WPoIMrARg+O0t/JjNvg== X-Received: by 10.98.29.77 with SMTP id d74mr1818646pfd.164.1464139950757; Tue, 24 May 2016 18:32:30 -0700 (PDT) From: Matt Turner To: libc-alpha@sourceware.org Cc: Joseph Myers , Matt Turner Subject: [PATCH 3/3] alpha: Remove trunc() and truncf() implementations. Date: Tue, 24 May 2016 18:32:30 -0700 Message-Id: <1464139950-31943-3-git-send-email-mattst88@gmail.com> In-Reply-To: <1464139950-31943-1-git-send-email-mattst88@gmail.com> References: <1464139950-31943-1-git-send-email-mattst88@gmail.com> They returned incorrect results for odd values greater than 2**52 and 2**23 respectively; and also raised incorrect inexact exceptions. 2016-05-24 Matt Turner * sysdeps/alpha/fpu/s_trunc.c: Remove file. * sysdeps/alpha/fpu/s_truncf.c: Likewise. --- sysdeps/alpha/fpu/s_trunc.c | 52 -------------------------------------------- sysdeps/alpha/fpu/s_truncf.c | 44 ------------------------------------- 2 files changed, 96 deletions(-) delete mode 100644 sysdeps/alpha/fpu/s_trunc.c delete mode 100644 sysdeps/alpha/fpu/s_truncf.c diff --git a/sysdeps/alpha/fpu/s_trunc.c b/sysdeps/alpha/fpu/s_trunc.c deleted file mode 100644 index 16cb114..0000000 --- a/sysdeps/alpha/fpu/s_trunc.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 2007-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include - - -/* Use the chopped rounding mode conversion instructions to implement trunc. */ - -double -__trunc (double x) -{ - double two52 = copysign (0x1.0p52, x); - double r, tmp; - - __asm ( -#ifdef _IEEE_FP_INEXACT - "addt/suic %2, %3, %1\n\tsubt/suic %1, %3, %0" -#else - "addt/suc %2, %3, %1\n\tsubt/suc %1, %3, %0" -#endif - : "=&f"(r), "=&f"(tmp) - : "f"(x), "f"(two52)); - - /* trunc(-0) == -0, and in general we'll always have the same - sign as our input. */ - return copysign (r, x); -} - -weak_alias (__trunc, trunc) -#ifdef NO_LONG_DOUBLE -strong_alias (__trunc, __truncl) -weak_alias (__trunc, truncl) -#endif -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __trunc, truncl, GLIBC_2_1); -#endif diff --git a/sysdeps/alpha/fpu/s_truncf.c b/sysdeps/alpha/fpu/s_truncf.c deleted file mode 100644 index 2290f28..0000000 --- a/sysdeps/alpha/fpu/s_truncf.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2007-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include - - -/* Use the chopped rounding mode conversion instructions to implement trunc. */ - -float -__truncf (float x) -{ - float two23 = copysignf (0x1.0p23, x); - float r, tmp; - - __asm ( -#ifdef _IEEE_FP_INEXACT - "adds/suic %2, %3, %1\n\tsubs/suic %1, %3, %0" -#else - "adds/suc %2, %3, %1\n\tsubs/suc %1, %3, %0" -#endif - : "=&f"(r), "=&f"(tmp) - : "f"(x), "f"(two23)); - - /* trunc(-0) == -0, and in general we'll always have the same - sign as our input. */ - return copysignf (r, x); -} - -weak_alias (__truncf, truncf)