From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 97723 invoked by alias); 1 Sep 2016 10:52:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 97696 invoked by uid 89); 1 Sep 2016 10:52:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=HX-MS-Exchange-CrossTenant-OriginalArrivalTime:Sep, H*r:sk:mail-ve, Hx-spam-relays-external:sk:EUR03-V, H*r:sk:EUR03-V X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Sep 2016 10:52:14 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp0148.outbound.protection.outlook.com [213.199.154.148]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-60-Bu8SLBaIPJ6XDRr9WizIXA-1; Thu, 01 Sep 2016 11:52:10 +0100 Received: from [10.2.206.73] (217.140.96.140) by VI1PR0802MB2158.eurprd08.prod.outlook.com (10.172.12.15) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9; Thu, 1 Sep 2016 10:52:07 +0000 Message-ID: <57C80852.1020203@arm.com> Date: Thu, 01 Sep 2016 10:52:00 -0000 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: Joseph Myers , James Greenhalgh CC: , , , , , , , , , , , Subject: Re: Implement C _FloatN, _FloatNx types [version 6] References: <20160817154244.GA39270@arm.com> <57B72592.5060509@arm.com> <20160831165830.GA4541@arm.com> In-Reply-To: X-ClientProxiedBy: HE1PR06CA0057.eurprd06.prod.outlook.com (10.164.28.153) To VI1PR0802MB2158.eurprd08.prod.outlook.com (10.172.12.15) X-MS-Office365-Filtering-Correlation-Id: 061b0049-550c-4ed9-0360-08d3d256055a X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2158;2:cq1w+uN4BhHGF70ELM8n3aXT3Xykbi7IGilyRueIN89V+1gBij7WqSQrZ/9uHVyMH8m8jjWnFotiM/vn8ITizgeeOGXIPED62wkzyp4AHa+War2RYHG8s4lPaj3Jixh8Q8g8m8iBc1Hof8ZcVyMP918QohB9sFrlvfUw+zjYWPemMZXMO8J2sIlQTkVcNMrB;3:2wYeE+4KYFYsjKuNC0XmbFikmiJHnCqgjf2K6yaoAdmTluY2gdBt+9X8XyDx7WqAxvqVGjYvQBPpdtj0hjjUOlyhn0PiWNvFMhhT3t2NCJuCDHfO2jbXe7FrnJmc18/O;25:8ZDUXY1dcuBprW4M9DNiYL+jO208C58dhbilwuQb6HDGCKxH2TdT0Kq4MtFDH7UeK1vQCse2eNLjnrR7aaBIa73j/E6FOxOjjOAgimPsfa+Te9CGSjppEGx5h0PpoAksY8V98rR+H04ovE9nUJr4KTN9WI2aHPva3KKuNGy3s4vS40+7T04V7y9BgnH7lQLRvoOgTh+F9T7Q18KjCqZN8ankxCNqmjSVtG+7TqUnGML918mDM7eEDb3RUIHJi1MxwbQBKM1d2CJgvsOoxQVH5U7Fl/vPwnHTCdJTFs8iX+cMv1gAUSJNhjuVo2Pj8i9jbfglMmhvD+TuR1bfjmMGg3qcOE7lupAw4uZZC6uoVKNzARoQU7iT7s2AaTjzDfenMYx55gAe8glIhdfIXGU6TvA3LyoqO5edxs6+HW12TtU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2158; X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2158;31:3foQ3p+u/25LAFCt/ePMY0U2jNkLVFGvpCShOABEcozS0omaD6ibRXL9/EkcdHHwzk+asLb7oXJ07TOsvVf39vKmBFhuzBgm+K3bHz0LWe573GvufuM9U6fCt+o1CQY3DrenaDPdArGbEMhXvnqI4QnnEj0p2Q2RLXsoIrUnenN0B5/lE2wXOZ0eKVQNj2tiBOcmSEASBwslQpxdELnzcin+feIrv5s8zaF+Ao9pPko=;20:33Z+26dtcKy8hPK5cwQczDMPwl3oQMLCjOdcqnDrWaFdfF7j5DpSahVbxuYvFi/HbYNDokPcIAdtszacY8gwPvvmtswmHEZX9CSs6Yog82liMW++n2cDRp1CgGHzhxA0pD12HY/h3acckvev/D3AKFbBkSXh273G5b9IobPDjbE=;4:88CgiiiHww6xCfwQXBRh8aloRyVNHPjw9Mdks4mdhEySsbYTcleupUXsEKb6I29e/v5BY5rGf4i7KCIQLiU4zWvnabpyyw8P0thGm9PfkdN7NyK4K3/ytP/Ly0FbC4ZJ7fpPKMo0Pzwo1zD91TOAjnxiwbKBOPMk4K4zGyQB90govnG/aJkLiEsKqk1ysK+zOsZcmAFhTotGbisnyyn5hMEGZLNNBYGojNnDKsyKPb6Nw1NAVbsDKCHj2WH4ut1IEtbW5ZNJEBBeH9DbGIgBMxPYlh8BJSKZsFgf3+cIx2KqvqL8VSYXGEQ9P6wmaZTvCNijPNBzhPOhsJUPOWALbR5W+bnbkYUfKh9dI5KnQ/39yjXlf9ck2gn2YqeT5OkAqyTCyO+wZQE5Nd/YUWKoSA== NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:VI1PR0802MB2158;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2158; X-Forefront-PRVS: 0052308DC6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(189002)(377424004)(24454002)(199003)(33656002)(2950100001)(77096005)(92566002)(2906002)(97736004)(189998001)(105586002)(59896002)(4326007)(3846002)(83506001)(42186005)(230700001)(6116002)(586003)(5660300001)(4001350100001)(101416001)(106356001)(5001770100001)(23746002)(65806001)(54356999)(64126003)(36756003)(87266999)(86362001)(7736002)(47776003)(7846002)(65956001)(305945005)(50466002)(66066001)(80316001)(65816999)(93886004)(81166006)(68736007)(8676002)(81156014)(76176999)(50986999);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0802MB2158;H:[10.2.206.73];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0802MB2158;23:YIjOd1QddweDMJADzH6OHpyRuV7Tvu1Q9WF?= =?Windows-1252?Q?EgX6GEFCQQ7duMXpPEeabnevDI56JTGlHkSLKEN16ebyMIWnmpVbvqee?= =?Windows-1252?Q?IjrR+KfNRdEuHJqnsRmF1pHVvvmeZjkiAeNPthCr11uiMvMATh2tXa1r?= =?Windows-1252?Q?xD7KT1OqeWdjcjhm8sb7YTzE81OVcSJbmF45Zn/iE4bKTMoCGckp/Dq7?= =?Windows-1252?Q?03H+J5MNmFjCkLrIUX0+rfh2zMi159+60FZJimQkkHisl4DAanJdr4oE?= =?Windows-1252?Q?56/EkbA2PEFUBZ1sJBHJ2IgSN0UByG5wRkAGCTwldaOYkjgrytVX2ygQ?= =?Windows-1252?Q?2Od2e8Yg7Cffxyf3CBJXTFO09WMmuHrGyu4l7sUS7jyBR0TFV454NM8U?= =?Windows-1252?Q?B86rP4W1yIyCECZC9JFFN0mZXZ8EJP3U9xhb9DYyQ1rc04OMyXU7ymq4?= =?Windows-1252?Q?vY84GcDg3GJFQy3TfdRxxlk1k06/2lTefHwaTVWyh4pD1tVHnxz7IFaS?= =?Windows-1252?Q?S7kA8loUUutmp67VXkhyUyL0rtW0Gj+d0XvQCI4yOo2AXzmAxDvM/wbT?= =?Windows-1252?Q?qJpRlpqvgrnZIlcVWoyMQlfRNo37jMhodxNNwlP7jAXO7AZCAt2qn3BU?= =?Windows-1252?Q?LWQn3N907NevoWvVIYZSyv+xGdN5IRNpb+A9iwcgjNg3ryCleooxCebZ?= =?Windows-1252?Q?1IONhcAdMIO+TK8kWLk4X1AvR8s3BUTAvKkvNYWxjEABrYJBiVnqvBLJ?= =?Windows-1252?Q?6kNcfv6hD+ZAOEjLIovjAThb4SgRLB7VYI9n48trZDvFNsRzFpUOsb9a?= =?Windows-1252?Q?UQOdk1DVBjyB+r4vbc0XN695p099bZ5I0yxyyRfAzB8AiTJVolEBD27r?= =?Windows-1252?Q?syUsOkaCyCFzprF0HS5pqalb4cEuJbpihVmDKMUt2z9Dg1rIdALUcDlp?= =?Windows-1252?Q?mdNQ/fmwShiDiYAOUG74komwBPwW6mXOP8Z/cf+hBfwKmZ/NepQrniBx?= =?Windows-1252?Q?NN4LoxfWeSe56antDabsoJknylJ85f/6w2s4U4norbLdUDb7/+iYEMY0?= =?Windows-1252?Q?u7LfD8iStfbKhRk0WngDK4wpF4SxkhWxLghcu/TAeIxDhTE/4SmRjPBv?= =?Windows-1252?Q?dADIqdiw1vrJzW2Gy8PDin+lM1b2JuPlhTiJz8VtEdxDYzz3V0fS4vkY?= =?Windows-1252?Q?PxiVfAxVFqfaKwZ1MTBuHzhN2esw8OXQPOSxjiEzZHMOApuXlNmLskNx?= =?Windows-1252?Q?4i7GePNFrF7ysU1yX99Kq6gA8o0Rl9cev5fs+az85PuewhjXHU7TXcCN?= =?Windows-1252?Q?YF3E8DCx6aXsx8+v9c5gnwYCa47eqlKtVdnIIzNfPXh5DsTk7eMDZwQ2?= =?Windows-1252?Q?7SCpFeJIA30rRQqFkf9eAroTFR5vIzsrt+A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2158;6:NQOjeP8lFHKVQwxWVEk7NPYJd/B6M+G+VwXupye/rV9LwGmXFSeImzjvgPgiwyr39YkwYBnIo7P8wT6ed26REsTJL7vDE7e8UYLDxjM+3jcASBB2PZVdk3X8uzan45wJ0hxENXxrze7/FmZlOtGWlQNg8k21RuzkvolD/473zLI0ce43y6fpmL8dhKbxM5NP6AMUtcRzf8Eg+pxbpwmdZJtmnCcSRvuSkRm5ED2ARAngdA5F6k1tPfrLRz7gi3Xle6LBMN5+va+jHCu7YOE2oQULJJ5ybYBotS62YiBeaSGLvZKCNu/v06UzAJ92Ip9ltipcUQ1THoHl4pcL5/1sGw==;5:v0jDWqgNhP0hwl6NJ5dxTtHGHtEOFInIpGy8j4Z2J4hjux5LjnCAJpGQ5TS4yPisSd6lgIQe5USQ22lla7X551YhRdSKrH9pOIvUOM/aLQ9OYiZT8OeKxG8bg8iSS8GbcbqmH9L0U540cm3h4XR1ow==;24:07sZrxSnNuA2txLfDEZgLTwzBP9UX3LGPAZFyVdxfc/kF2lrOgCx5rxgoXMu+r9FkuCTsqSs9VnFMQl3+EYM4BJZrfmTbCkYuaMAGtot7CY=;7:3C4joRnEefOWGIKVdPlD6zAmWHgAcd1e6E4SELC08kR+K4LVlNLXyTTNvAIKvngd1i1PkBkXLU887u2KiAIOp+WQCPvjz6ADl/QQAB8X/IIv45vq+NnrLmrFAYQnRG+hfbvAiFHTTa4piHh8r1HRaB+A+2bdTCNyGFrwE5dV7l3T8ZJ/vB9dB2pYNL/1iZ6nwEXwMXFm8SNDS9BGAaY7+0o4uebEQaAhMK2PpI3xntaUQLwKm3eNqjkch/vQ9PKe SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2158;20:lK7G4aT39eN4E2G3qE0SND+aFoUfynhcPSwL7mz4R2RtiKEX22bRC19ah3LoBUmF/6+UzNhmJUvSw0L6H8HqJ0Bu9ZO1Y6Gi9HUSmN+QVMoW4QFn1z5Kq7Zte27ob3O83eo2RJvsrZP1CS8kJKqkHeLCwr8l5tbyx+n9WdUhCnw= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2016 10:52:07.4308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2158 X-MC-Unique: Bu8SLBaIPJ6XDRr9WizIXA-1 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00029.txt.bz2 On 31/08/16 18:26, Joseph Myers wrote: > On Wed, 31 Aug 2016, James Greenhalgh wrote: >=20 >> My concern with this is that the use of comparisons of FLT_EVAL_METHOD >> against 0 that Szabolcs is referring to is common and can have performan= ce >> implications. In glibc for example,=20 >> >> static FLOAT >> overflow_value (int negative) >> { >> __set_errno (ERANGE); >> #if FLT_EVAL_METHOD !=3D 0 >> volatile >> #endif >> FLOAT result =3D (negative ? -MAX_VALUE : MAX_VALUE) * MAX_VALUE; >> return result; >> } >=20 > Well, it's unavoidable that existing code may misbehave with a new value= =20 > and need updating. In the glibc case: use of volatile for excess=20 > precision is the old approach. That function now (since my 2015-09-23=20 > patch) uses math_narrow_eval. And math_narrow_eval is defined using an=20 > excess_precision macro in math_private.h. So only the definition of that= =20 > macro based on FLT_EVAL_METHOD needs updating for new values (and=20 > math_narrow_eval uses __asm__ ("" : "+m" (math_narrow_eval_tmp)); rather= =20 > than volatile, which may be slightly better, though of course you want to= =20 > avoid the load and store to memory in cases where there is no excess=20 > precision, or where truncating doesn't require a load and store). >=20 > (Of course if you want actual TS 18661-3 support for _Float16 in glibc=20 > that implies a strtof16 function and lots of other *f16 functions which=20 > also need to know about excess precision for _Float16 in the=20 > FLT_EVAL_METHOD =3D 0 case. Even given the _Float128 support, supporting= =20 the goal was not to provide full support for some TS, but to provide reasonable access to half precision floats from c. it seems that the FLT_EVAL_METHOD change in TS 18661 was a bad decision: existing code have to be modified to conform to the new semantics. this situation could have been avoided by introducing new macros or only changing behaviour when the user requested it via __STDC_WANT_IEC_60559_TYPES_EXT__ (consistently with all other library changes..). i think it makes sense to provide half precision support on older c standards, so gcc should allow _Float16 without excess precision and whatever __FLT_EVAL_METHOD setting based on some cmd line option, so users can work around this mess. (FLT_EVAL_METHOD < 0 would be fully conforming, but it can still break existing code). user code can use sizeof(_Float16_t), libc can get the real eval method through some additional gcc specific macro. > _Float16 in glibc would be a complicated project since no _Float16=20 > function implementations for glibc presently exist, although many could,= =20 > correctly if suboptimally, wrap float versions.) >=20 >> On the other hand, it would be unfortunate if _Float16 could not use the >> ARMv8.2-A floating-point arithmetic instructions where they were availab= le. >=20 > In the cases where the two FLT_EVAL_METHOD values are equivalent (e.g.=20 > where the result is assigned directly back to a _Float16 variable) of=20 > course you can anyway. >=20