From patchwork Fri Sep 29 11:08:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 23225 Received: (qmail 67960 invoked by alias); 29 Sep 2017 11:09:07 -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 67037 invoked by uid 89); 29 Sep 2017 11:09:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59CE29C9.4020200@arm.com> Date: Fri, 29 Sep 2017 12:08:57 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com Subject: [PATCH 4/5 v4] Do not wrap expf and exp2f References: <59CE27D3.4050205@arm.com> In-Reply-To: <59CE27D3.4050205@arm.com> X-ClientProxiedBy: VI1PR0602CA0022.eurprd06.prod.outlook.com (2603:10a6:800:bc::32) To VI1PR0802MB2495.eurprd08.prod.outlook.com (2603:10a6:800:b6::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f436fb74-91d0-4eeb-5767-08d5072a7d22 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075); SRVR:VI1PR0802MB2495; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2495; 3:xdR+7HDZMnVff0ev3+NTbARbkIDwGJ0hgvx25boV4OS4snYyJkTJpO+dW+cAYyR74iz2TOkn/Njir4CNcu1rjT7kvWzyuC8scOjXiaN24H5OkjfuNx5zjv3MkWxBDHKAOgSoBDBwBlab0l555gREP/0h1UVAEDDSRlerEDVKeui+sq5wVBQCFm8zibrN5TAa3ZYa72sY2x8r7OOe/E+dSI2j5lCyHd6qdvTXyo7r8NqfmXcDun5cJTt33Ij39uUE; 25:ESOmgs0dHpM1eU926g7bJiEOgQUnQ5KI5OsbAwTmRdMKLeiNVQ2DLHaICcNSaA9Dn+WH0lK7XDJh25D08Aa368asmIE/BO41msaPAHZC9wdGJWgqNiUjIpTr2WSObYoBzdc8q433p5lWB/oN/AE5bNMKuMlLhBsnPIb6sYXdxjuPMfvd6AbYmJK/PUkKPxGgqhzJatAMZsM7D5/M6eo7GU7bN+UQdh/EsDi+VHpFrncTjRAcN3Uo7mgnRCd0sa4KWn8zcfmi6kxvnR5+nrZjkqljyEWFrysMxQlpjPZ1tIGdFkS0WiNSJvlAdDZ7TScRZcCF6tcQUU8PeX710t1IXA==; 31:di/TBMeMzKBX7wpRDnj7od+2mxmy1E3uCmzf72DcScSPAhEjNjO6t+tsiYBA1SdV5/6t0WgIK7PT61ig+ia8sxf/bZhKQHDADVlreUbEx2nLxstpwOpp8MU3+nZj7nnWYnCCzxmOURxCd+yZEpa1moK6UjJV+VaqPQRdsRBLfsUsIvyifWCBN2TeJkPODLzZLlt6VS5HZffJM7gRxPdPGcyX7Cj6BmaFj8lFdQ5C7ls= X-MS-TrafficTypeDiagnostic: VI1PR0802MB2495: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2495; 20:hVzyW2+oyKvfYPSW7p2ovXLcxa2u/sMVswFQau4Ob7xWPuztpWf3RqcA57PJPYjMnFXVwkH1UcoDkMUFTWnkwbkQyTfk1V7pSKRzgrWGtN7uzc9wJShk6I8VbU+x9/n5PpDPneYKBj6ZX3roGpzGdl0l7wEf9BzJVRF3pv8iXz8=; 4:D8On3FAlDMi8ht+PDtuCzm48qYHddnaEFtXivDrU20N5nNAJgrNlosoycjrDzLE/t1EXcrhuEKkWF3Boo7u58mholk66R5iU+nP/iV00ZZgZ5oFRa2xuxyNFiAJ4Hh8wht9R6zLsK5tEH02w66YB9UtS5fFHLnPkQ1nPGa8nx5F5co+cXsCjD+mpG6bimDXoiISeG/e7+V2/D8giiYNTaOFlRdxMPTdVTvPauTe0yAtyp10oiNTMv0T1A9XqYXZo X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123562025)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0802MB2495; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0802MB2495; X-Forefront-PRVS: 0445A82F82 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(376002)(189002)(199003)(65956001)(81156014)(2476003)(5000100001)(65806001)(64126003)(6116002)(5660300001)(7736002)(305945005)(66066001)(6486002)(6666003)(3846002)(16576012)(83506001)(86362001)(97736004)(316002)(50986999)(84326002)(72206003)(76176999)(58126008)(16586007)(87266999)(65816999)(54356999)(4610100001)(68736007)(80316001)(5890100001)(16526017)(8936002)(478600001)(101416001)(106356001)(568964002)(81166006)(105586002)(564344004)(6916009)(8676002)(2950100002)(2906002)(53936002)(36756003)(77096006)(25786009)(189998001)(4326008)(270700001)(33656002)(59896002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2495; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2495; 23:XFNZzpMMoYiPv2D/1RAITAvZ7zZqzsxpZstBtdV?= =?us-ascii?Q?jZqds5Lt/W3v7WJomVu+aLuGvyuA9uNbnYRXU27Y+rVveNFZIsh7ra0egvU5?= =?us-ascii?Q?Y1n9Byj0T1N1YlGN6VxlRpPxSmBWCl0L5qLyZBRvdDzeH/S+jTLuqaWJcWJ4?= =?us-ascii?Q?fVmq6RKEA84758t/dz+2KodFUDTY5hq7gBQ/vdPRmFfZ5fyGae+EOyePE9HM?= =?us-ascii?Q?6RL37CwWA1Y39Jf8gOeLM05MGsGoql23lmE+7FD+RQx92KtUgou9HxuOeAPl?= =?us-ascii?Q?lJ76FdqVghTLWb6SqLxY932Fia4Om1bM6KJhjiaPaeheBlIQf2YULLOgLQGB?= =?us-ascii?Q?cMVRUy406JGP1XFJ+x0vju4II6LQ0MFWRBYeiy9dq0mmOejLOKY93yOuJ9P4?= =?us-ascii?Q?vIHaGd6afFeN8zN/ACVs+Uh4UG5vrBw3TU5Q27vKUAhlN1Zt9HFpDVyD5BL8?= =?us-ascii?Q?S3tsibIqR/JgO6bhN9aDBFWjHj6RxK+OdVK4EsC1x12KJ/FQ6HQGarmXoghV?= =?us-ascii?Q?JSVvNOR9tHSoLuBkx1JPdK3iMY4FxkSHCGRe3o8YGlGV07w+eXL6xM7tQyh+?= =?us-ascii?Q?egRNcmCZaK36/fv7N6tc9lgMqoHdIg0oivcid43wKlT3vOUgz4MOISnYUhq6?= =?us-ascii?Q?pliz4ubxeO77qE68/65s200neV/iaze4zl4jOpxNT8WA8kPT4SUdSEEvoogY?= =?us-ascii?Q?0+M+joZwHFudhPYvk26nSoxjuWGCdsWXdK9S2J5ON3dgOgvVUDuL8OLRm/DN?= =?us-ascii?Q?GL727cgjxBZkDy87TBGDqhrLCmnQYWojeHiWsULrtepWpUvYzlQ1b/3oI73m?= =?us-ascii?Q?sMIrvbj3f67NLhSZyvDGXSB9SksnqNZV6b71NAVqv6EoQBUdUemHa+rF2bmJ?= =?us-ascii?Q?ZJQ6Dg0opaI9Csy/VTKVcvYUsPNke41FkFA88JLdKBX51Zlz3GHs7oPLIW7t?= =?us-ascii?Q?/h2R10X+7zw5rFDNRyl/UfAyqO3upEDmJLTPRnH9Vjin48XNp9GR9eO9+aHm?= =?us-ascii?Q?o8IYPT6hlVGp7mwIfYapp8ApeqbSB/EyrxQKRHVMYiAhkNsvvqIBfNND0lnK?= =?us-ascii?Q?Rv0IlPxwvfUP0kIYcnuSESBaS1kLzw5p2PmH549gKObIHpNMwsBjLJw/OuFm?= =?us-ascii?Q?N81rt/hBUyPJjlzNac2y0IO5KVGeaCRba5n7M2j3PFNzqdIrMn07Sh05kpT8?= =?us-ascii?Q?51NZmFsXZsGWKk/3jjHENwp9fLzEfMF8wgCErLiL/ovpgjMCtuDFSsGbccpe?= =?us-ascii?Q?FOETy+4A6ot83H0hvFqcly6ir37HgMXWKtIcGF62FF5TKMdonYQRPbeUB6jM?= =?us-ascii?Q?86xeWOuGslpNzMi9qQkBu4b8cEfknvKrhuDr9HCrR61tsHFfPzOggrgCcUH+?= =?us-ascii?Q?r1oKq4azISJwT2nlzfOzdApncJkOJy9J4/23w7vpw5MhFGJ8F?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2495; 6:m9fPdwG/tB1RVktJUtMK6fpyZ9DC8wjQoF6TcvDFAHQAXJ9nrdRMRVsYk5lNuSmF7ou5rdtPd9E4Yn74OLDj0kKw2GumLlKr/ZsnhL/XUxjvW0LrRrXinn4jSo0fR0YmE1FTCpXirteRWz1aI28t1A3LAvaRBB/GcfSX88ZXF0dp8iBXPmoI5xik4m6sXYWEPgkCER+Nw0BrnhyJOJRtN7249EKRZ5/fyl4KM/iOPUKzX9dc/rgtIGkxyuC2/sC55dNvr7HFrvnzRzU9Mcvjjq6KPg92f0VBwh9b+TpnbPwqi08ffqVC7XAVxJFTRwEZeYRVFa2np+Sf0htYcN1Mbw==; 5:9IRMyB96FlCZXYIwIH3YK5OvqWzQlIjpaQ+mVDVHTWgNRe6AspujtOVZ3b7RuSekKJ47WgjBXKgB+huJGK39k/Tfg1eFB9HlQQ8pasNJ4qNK3zFIWkuj+rQT6k85eLHoAsQRvxtJ2KR6A2OsfO+4W8AVn8YvK8yZou+PKFMVemY=; 24:gxthKxKMzjaaFDJnQfPn6fMzJnmNb9HO/VXW2NwK0Wv80Mgck4jHAZJT50ig95J7CbDTIRg0+3GGF23qQ3I1UDz0SBBFEF3ys0sC8DTO7tI=; 7:I8hBwEn7bdhreWml8ZkQGm6GqgaR31IlPJIU1/olPSKmfNW0mJtK6/mJ35SLEO/LRh7ZVKgQF3ZwfGuIRvZUIhVRG7kIY/p0MMo9gBePPfs0n/AnRrMYAkGO7FlYjqZ6tiCRrwTbqmuG8J04PGDlyItgbpUedJ8aaHJb7PG0yrdCBlV53zSNTI2D9zReSNgcdYaXRKp9Pc4z2C8ypzULJ62xdAfrjZ7UPGVBG4v5nCQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2017 11:09:00.7997 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2495 v4: - ifdefs for multiarch support. - add w_expf.c for power8, tested with --disable-multi-arch --with-cpu=power8. From 7dc9a7c1aa60966df497d6405aab3bdfab5c6083 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Tue, 12 Sep 2017 12:44:18 +0100 Subject: [PATCH 4/5] Do not wrap expf and exp2f The new generic expf and exp2f code don't need wrappers any more, they set errno inline, so only use the wrappers on targets that need it. (If the wrapper is needed, then the top level wrapper code is included, otherwise empty w_exp*f.c is used to suppress the wrapper.) A powerpc64 expf implementation includes the expf c code directly which needed some changes. 2017-09-25 Szabolcs Nagy H.J. Lu * sysdeps/ieee754/flt-32/e_exp2f.c (__exp2f): Define without wrapper. * sysdeps/ieee754/flt-32/e_expf.c (__expf): Likewise * sysdeps/ieee754/flt-32/w_exp2f.c: New file. * sysdeps/ieee754/flt-32/w_expf.c: New file. * sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c: Update for the new expf code. * sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c: New file. * sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c: New file. * sysdeps/m68k/m680x0/fpu/w_exp2f.c: New file. * sysdeps/m68k/m680x0/fpu/w_expf.c: New file. * sysdeps/i386/fpu/w_exp2f.c: New file. * sysdeps/i386/fpu/w_expf.c: New file. * sysdeps/i386/i686/fpu/multiarch/w_expf.c: New file. * sysdeps/x86_64/fpu/w_expf.c: New file. --- sysdeps/i386/fpu/w_exp2f.c | 1 + sysdeps/i386/fpu/w_expf.c | 1 + sysdeps/i386/i686/fpu/multiarch/w_expf.c | 1 + sysdeps/ieee754/flt-32/e_exp2f.c | 9 +++++++-- sysdeps/ieee754/flt-32/e_expf.c | 16 ++++++++++++++-- sysdeps/ieee754/flt-32/w_exp2f.c | 1 + sysdeps/ieee754/flt-32/w_expf.c | 1 + sysdeps/m68k/m680x0/fpu/w_exp2f.c | 1 + sysdeps/m68k/m680x0/fpu/w_expf.c | 1 + sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c | 5 +---- sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c | 1 + sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c | 1 + sysdeps/x86_64/fpu/w_expf.c | 1 + 13 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 sysdeps/i386/fpu/w_exp2f.c create mode 100644 sysdeps/i386/fpu/w_expf.c create mode 100644 sysdeps/i386/i686/fpu/multiarch/w_expf.c create mode 100644 sysdeps/ieee754/flt-32/w_exp2f.c create mode 100644 sysdeps/ieee754/flt-32/w_expf.c create mode 100644 sysdeps/m68k/m680x0/fpu/w_exp2f.c create mode 100644 sysdeps/m68k/m680x0/fpu/w_expf.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c create mode 100644 sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c create mode 100644 sysdeps/x86_64/fpu/w_expf.c diff --git a/sysdeps/i386/fpu/w_exp2f.c b/sysdeps/i386/fpu/w_exp2f.c new file mode 100644 index 0000000000..583065d12a --- /dev/null +++ b/sysdeps/i386/fpu/w_exp2f.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/i386/fpu/w_expf.c b/sysdeps/i386/fpu/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/i386/fpu/w_expf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/i386/i686/fpu/multiarch/w_expf.c b/sysdeps/i386/i686/fpu/multiarch/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/i386/i686/fpu/multiarch/w_expf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c index 72b7d8829f..31b660b07b 100644 --- a/sysdeps/ieee754/flt-32/e_exp2f.c +++ b/sysdeps/ieee754/flt-32/e_exp2f.c @@ -18,6 +18,7 @@ #include #include +#include #include "math_config.h" /* @@ -42,7 +43,7 @@ top12 (float x) } float -__ieee754_exp2f (float x) +__exp2f (float x) { uint32_t abstop; uint64_t ki, t; @@ -85,4 +86,8 @@ __ieee754_exp2f (float x) y = y * s; return (float) y; } -strong_alias (__ieee754_exp2f, __exp2f_finite) +#ifndef __exp2f +strong_alias (__exp2f, __ieee754_exp2f) +strong_alias (__exp2f, __exp2f_finite) +versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27); +#endif diff --git a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c index 12239e1862..74a383a02c 100644 --- a/sysdeps/ieee754/flt-32/e_expf.c +++ b/sysdeps/ieee754/flt-32/e_expf.c @@ -16,8 +16,14 @@ License along with the GNU C Library; if not, see . */ +#ifdef __expf +# undef libm_hidden_proto +# define libm_hidden_proto(ignored) +#endif + #include #include +#include #include "math_config.h" /* @@ -42,7 +48,7 @@ top12 (float x) } float -__ieee754_expf (float x) +__expf (float x) { uint32_t abstop; uint64_t ki, t; @@ -99,4 +105,10 @@ __ieee754_expf (float x) y = y * s; return (float) y; } -strong_alias (__ieee754_expf, __expf_finite) + +#ifndef __expf +hidden_def (__expf) +strong_alias (__expf, __ieee754_expf) +strong_alias (__expf, __expf_finite) +versioned_symbol (libm, __expf, expf, GLIBC_2_27); +#endif diff --git a/sysdeps/ieee754/flt-32/w_exp2f.c b/sysdeps/ieee754/flt-32/w_exp2f.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_exp2f.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/ieee754/flt-32/w_expf.c b/sysdeps/ieee754/flt-32/w_expf.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_expf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/w_exp2f.c b/sysdeps/m68k/m680x0/fpu/w_exp2f.c new file mode 100644 index 0000000000..583065d12a --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_exp2f.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/m68k/m680x0/fpu/w_expf.c b/sysdeps/m68k/m680x0/fpu/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_expf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c index b236290ea2..2cd9a5ec8b 100644 --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c @@ -16,9 +16,6 @@ License along with the GNU C Library; if not, see . */ -#undef strong_alias -#define strong_alias(a, b) - -#define __ieee754_expf __ieee754_expf_ppc64 +#define __expf __ieee754_expf_ppc64 #include diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c b/sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/x86_64/fpu/w_expf.c b/sysdeps/x86_64/fpu/w_expf.c new file mode 100644 index 0000000000..b5fe164520 --- /dev/null +++ b/sysdeps/x86_64/fpu/w_expf.c @@ -0,0 +1 @@ +#include -- 2.11.0