From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 74697 invoked by alias); 8 Aug 2017 15:02:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 74673 invoked by uid 89); 8 Aug 2017 15:01:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=H*u:31.0, H*UA:31.0, H*r:sk:EUR03-V X-HELO: EUR03-VE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <5989D25B.7000209@arm.com> Date: Tue, 08 Aug 2017 15:02: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: sellcey@cavium.com, Joseph Myers , Wilco Dijkstra CC: nd@arm.com, "Ellcey, Steve" , "libc-alpha@sourceware.org" Subject: Re: [PATCH 3/4] Add ILP32 support to aarch64 References: <1501888532.3962.92.camel@cavium.com> In-Reply-To: <1501888532.3962.92.camel@cavium.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: HE1PR05CA0204.eurprd05.prod.outlook.com (2603:10a6:3:f9::28) To DB6PR0802MB2487.eurprd08.prod.outlook.com (2603:10a6:4:a0::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6a653257-f5d8-4cff-e362-08d4de6e67bc X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DB6PR0802MB2487; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2487;3:VhjRWk/yi4j5BgsJXdLFTvigretrk6dV6QCaYKkqBdL++Q/fugIgUh/AU1tpRxweMf7D+eqUp4ttUsJb8uk6UhQoaFLpL8q8RwRvBSrz8qJiaJZpotTXmH6us+HSQOgsNeNPpn7ZQ3A3/uyxsWX3MzdsBdyLZfloi9dyK+RxNAHAT/RtoAsbENHTpX22m/j/A32fMy+hxKXaKq8qQKK0ZuIQwdQTca2kjyYDbwxMhTrHxLfbfsyAbGlFgbDFjqBs;25:IouhOg4Fq8McscfGeKIPM8y0/LU3BoubkbmOiNCQWAxpKSi3zEWefM6WH3pudnMNw7/GK6wdtN4fAk1ElVqjdpvg7JaDrNvTQc3TxmP/0O9pcImsRhvxVoks94G4xpJHAjegvkO2Ehmi6Gv1Urd92rskkGT83CTfZgGbXcWzpnIh70CvhfNj6tnIY4PFJr6DEUCuzltknbeL6hekYBjionVJOS/uXGitVtv7nUcL8SIdQLSyVkx/qJY6MdOBvvobGHqx3+9sdQYUCP8lqN3NBbCwaDgsPKgzO6gjq6hnPD88uk+ZstJV6j0LkJs7osbkUe/6WTo2ZonjPym/sigPNw==;31:nuu7a8zQLFdakqLEXSWaQx4URJxUBRC5eZrvpLzjUI/oCCiRfPBRn0Pl+Om4zkVsQjACVZtAHiT/g27w4XBOWv70oWA/PRQqWLKYpaA3osPdTbA8ewQd6+BCVND0+j0ux5xpMsYY5ABvSAdXbGXMttnHlAdOdleIGyI3pyscKc7lhriZDLHYK9XSZepfTUh10tfkmZlg7HhZ2J7c9icqMuQitytaM04euHS/BYS7q+Y= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2487: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2487;20:qaLaOm0w5QJMCaHkimNEbMOXeTMmYSMJJKoQ7GnbN805v5zif1ZMDCdPEqIHjbuOl7L3OeSeY5uwbZ82kx94x/GQ9jD7rwB3KFRzyY8aq8fybpoJCMRFDzOwqvgmgab68AptKE+lQgvKPqL0c+WzSUCj5uaV7VAbWlJ5LUkMjT8=;4:1b/2EGkGLzNCS+pPHLyzWRDCKNEolV0bPb/jS/MeDn0NC1Sp/wIsgKwfnuhBoNfPIru11v+mxyN8fTHbEZnfDAvd4UH5QhuGlCRuu6PsUOSdVTxwkS+Uvg486G4Ep/FM+qVKLshCC/oSuWqPXN1X/Izyr9e6yHEB05JQu8UjC7p49743ocxKqtvwNClP6MvrdVje1ica1wavcNYRWWwqqDM+1eJBiJie0uXPKtTFNy8JbMpNVgHbkS5PnInyzAb3 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)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(20161123564025)(20161123558100)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0802MB2487;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0802MB2487; X-Forefront-PRVS: 03932714EB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(7370300001)(6049001)(6009001)(39450400003)(39860400002)(39410400002)(39850400002)(39840400002)(39400400002)(199003)(24454002)(377424004)(189002)(6116002)(81156014)(50986999)(80316001)(305945005)(106356001)(97736004)(86362001)(54356999)(8676002)(65956001)(101416001)(65806001)(65816999)(66066001)(7736002)(87266999)(47776003)(105586002)(76176999)(6486002)(4326008)(50466002)(42186005)(81166006)(3846002)(478600001)(6666003)(54906002)(7350300001)(25786009)(33656002)(53546010)(53936002)(77096006)(2906002)(229853002)(68736007)(6246003)(38730400002)(64126003)(72206003)(5660300001)(36756003)(4001350100001)(23676002)(59896002)(6636002)(230700001)(83506001)(189998001)(2950100002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0802MB2487;H:[10.2.206.69];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDJNQjI0ODc7MjM6QnA0MnNYSTQ4MUtNU2l5ZFZ2MEgxd1Fz?= =?utf-8?B?M3E3cHNCY1UxWXZtQkI3S2IzWjZvb0o0MjdwZjdmdjJkelRjNStjelJsSUxh?= =?utf-8?B?MjB0RjdqTmVPcStKcWFTeWNVWGkvTGJBOG9YU0J1azdtN3JBajlGUlg2dkVh?= =?utf-8?B?Vk8xUEVFekxYeUwwVGxCM0JmTnF4b1dWY0FQeVdVTlAyWHQrdnNibVU1a3Vt?= =?utf-8?B?aTVJMVV3WUd6MEtKMWFjdmZpVS81ZnpvemNyTWp2N3dwRWd0Qy9NM21QcHFk?= =?utf-8?B?dWZYYUd5a2Frci9TZlZUUGVnVFNZZXlMTTYvU0dUTjRxd2RIcUxZMkdBdWkv?= =?utf-8?B?aFlTaVNrd0Q5WU0rQTZPTlhhbTVVWDNNbHRJY2FrZlZjam8rMTVPV1JGZHl6?= =?utf-8?B?dXZIdXVUQmFreEdUdnlqQ2Z0SEtYUVFRMHZvQzNucjNoQ1VrWCtjSDR3K0Vw?= =?utf-8?B?djliQitvaERHeGNQdDNYMXhWRklORXViZzVHQm9YWjBuNEdiT2x1Umtoa3Ba?= =?utf-8?B?NytubWE1Yk0wNmdVQUNzTHUyTm9xTUI3SHNKL3hiUTloMDdmWXBpNEV4Mlg3?= =?utf-8?B?ZjJBdHA0NzdhNzNEYzFVTHMwcWp5NmJiNHVhUFQzSStBODN1dDdINUFuTmUr?= =?utf-8?B?dXlpTHhTdStURnVDditWMFV1OXA5VE1lc0V2Rkw1THZ3b0c1R3UwSGc3UTR5?= =?utf-8?B?K1BnODdZWUU0VmZQZncrcExHU3BKZWp6YzhublVFc0xJVkZTd2N2SXZDTFhF?= =?utf-8?B?Z0h3NHYyMzhNWTZEbWcwOHViWk9uNFBrN2p1NHBQaXprUFpGaGE1TGdpTG5C?= =?utf-8?B?dTFZWWI3YisrUUtEcVdwUFg5M1RjWkFSRzBUVXFXRHBDMWw5cVdJY1N1UFVt?= =?utf-8?B?b1lBcndXRThuUDh4d2tCblAyL1FrLzVtTmNJajY4ekZQUlJCZnc4QU1aMDJJ?= =?utf-8?B?TlpTcmhBL1l4aXF5aHBYb09neWFQK2FtdkJiUG5xSGNPUEFQK25vNHZIUitC?= =?utf-8?B?QTBDdEd1Zm5YRUpiOXVkNmVMT2ltRS9PVDRQaDJFZVVjQXpVOSt3OWNvT3Mr?= =?utf-8?B?MFhEZlNyN2hnVUh2RXNrRzhoVGhQMXFpZERiR1g0a2ZsVUdpelNkdU9HZWQ1?= =?utf-8?B?QkswSXZBS2hkVnNQcnBjYVVFdnJWbDV4L1E3RlhMWnNxUFpwN0xiN2piUFJh?= =?utf-8?B?L0JrajRHeHVBSnZRM3dDY3kxZTBsOFQxMTB6S0QyUmdXOWxhenhEZzNmWHo5?= =?utf-8?B?N1NhdnpVYmlEbjFQMFVGVjJsZVlYS2NVQk9oZ2h0b3BOaEFWSlBDaFV6bDBU?= =?utf-8?B?Y3hrSTZRR1poQUdZWEdaVGNvbDY1VkJmKzJ3SnI3S1JjZjhPSHhqZDVhektH?= =?utf-8?B?YXc3OFpjMkJGVlBva1JDWUV0NkFva3l6enI2RnlsVS9rRGhqMXd0SDN2L3V4?= =?utf-8?B?Uzlkb2praUlXb1dxUHpCVUJFV1NERXNNVnI0aEhzN0tpN21uL3VOOXhtaVBL?= =?utf-8?B?UTBHa3JTNXhtZG1CSUtLeTFhZzVxTzQ2ZUFTdzU3RFhlWHQ3MlNLSEtEVHBV?= =?utf-8?B?cG1RQXViVElIRG9LZ3N1RFVzK1lRZURWalR2eEhoR2J2b2xza2VybzlBSlN6?= =?utf-8?B?L0tQU3FtaytqQi9mY0J5YUUyNUFzVTR4MlJBeWRmelBCejV2TTVMYVRSQm5l?= =?utf-8?B?ekVPR2JHOXBMZXh0dVZjSi9aUkh5Tys1VUpoUFFEWERScnZLWXRHdDZZcjdB?= =?utf-8?B?eUl1UElPc2lQckptaTBnOFlIVzBKK2hOdDNJTVlBcjhSRG5xNTlHUjk1anE1?= =?utf-8?B?UnZodjdwOVA2S0JBRGllc3F5d3dmOGs0dDR5ZVB3NCt3MHRtQVVhUEdCc21K?= =?utf-8?B?VWduWXRoc05oajY0a2M3VUwzS2tMWkhJeDVJNm4wUWVGQnY3OVkyNHpaWGIy?= =?utf-8?B?WERSdVlWRWF6V3dsdDh1ODNrSTg0V0lFRWNGOWM1UTg0TGRCVnZlYUsvWmcy?= =?utf-8?B?azhZSThaZ0VXc00vaUt2ejBDSDNtLzVYdGV1bC8zbkxhZkM2UHp2RWlNNU8z?= =?utf-8?B?Ny9MQzBCNEJFTWMrT3BpcnV2NGlybDNoZkl5NXJUZDdKa0ExYkJwOW5BSGRy?= =?utf-8?Q?r8qNcwo8aJGQ9tIIkSdqsAdylDhC2y6bjSoDGY5h/iHznQ?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0802MB2487;6:HtacLrP0t6T/Ib8XPqLYEKjteuNZI66+Np3iUzMPgUXMXbsdIF+kpgoT4C9fPtdMXimePIU/7V/ahpRb/7U+c4zD5RPB9KgL3lS2sXRSzWnVm1bh/g5V0ng8rAl3HOD8Nj350VbJQvfXVvXBxnaMXW46N4ECLQb1OfTfhDfmYVnTupcoX3LHK1kCKmT5lt0hr6GvpphVPXIDNWEYnRCoNCh11aMDzptmXOEj3y4/LBpIQyFoNcCNlQhk4hiK12CzG2/+O2s6WPAHYRVhwjVuSqCzBaQCR/0QR1tp6v0H/HeonK7oKwEncTE/moiJ8yFGYYiQr9z9PU5tOkUBljjnQA==;5:K2x1GOhTAsJ9A9BtNM8ddTRVApl3x6KgAXcKeTZNJKD1ToUyOaHELNIRmHUoiEsE3hlseqkLY4VCrUTPrpHUxn/fechRixuwpua88bLD8jxjeYjiF8h6ltsISERus9Lri7y22jXuxnzrHaoz1aS+ew==;24:Mj8bbZ+Sak0op2nyw1mT4EPi2uZZjrtNCL57bLzT3TehFmtYXgR+/lkflW3NYIHE/xdvQrNIzvcd0irY8KECuUiFrkTXB/IxNsLuvuZEVkQ=;7:qRqHh9IzoG4J4x9WDkt/gc9WX/cwjQJhhANSA7tvB3JMr6KHgIIupuIM+gJB3b/GvjeDcOy2BWrOrgZxgO2KG5giqWPPVDrHI/HiSIHLQ9RxJ6JoeEY1tT5hQTo7b3VQzzCERgOcvyUp5ciD53sLZuYrBy1g26Ah8UvDaSYR9CWfucce5swiftCVve2mIg7X7k3FdjfmJKKy9/DLDxYgZpkHYJNZuqT6pV9CU8/eTnA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Aug 2017 15:01:52.1626 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2487 X-SW-Source: 2017-08/txt/msg00276.txt.bz2 On 05/08/17 00:15, Steve Ellcey wrote: > On Fri, 2017-08-04 at 00:12 +0000, Joseph Myers wrote: >> > On Thu, 3 Aug 2017, Wilco Dijkstra wrote: >> > >>> > > The generic implementation may well be faster... I'm not sure where the >>> > > requirement of not raising inexact comes from (I don't see it in the definition >>> > > of lrint, and we generally don't care since inexact is set by almost every FP >>> > > calculation), but if it is absolutely required you'd special case values larger >>> > > than LONG_MAX. >> > The requirement comes from lrint being bound to IEEE 754 conversion >> > operations, so only raising inexact under the conditions specified and no >> > spurious inexact. > > Here is a new version of this patch. It (mostly) avoids fenv calls > when not needed and preserves any exceptions that may be set on entry > to the function. > ... > +#if IREG_SIZE == 64 && OREG_SIZE == 32 > + if (__builtin_fabs (x) > INT32_MAX - 2) i don't understand the -2 here. > + { > + /* Converting large values to a 32 bit in may cause the frintx/fcvtza s/in/int/ > + sequence to set both FE_INVALID and FE_INEXACT. To avoid this > + we save and restore the FE and only set one or the other. */ > + > + fenv_t env; > + bool invalid_p, inexact_p; > + > + libc_feholdexcept (&env); > + asm ( "frintx" "\t%" IREGS "1, %" IREGS "2\n\t" > + "fcvtzs" "\t%" OREGS "0, %" IREGS "1" > + : "=r" (result), "=w" (temp) : "w" (x) ); > + invalid_p = libc_fetestexcept (FE_INVALID); > + inexact_p = libc_fetestexcept (FE_INEXACT); multiple flags can be tested/raised in a single call. > + libc_fesetenv (&env); > + > + if (invalid_p) > + feraiseexcept (FE_INVALID); > + else if (inexact_p) > + feraiseexcept (FE_INEXACT); > + i think correct trapping is not guaranteed by glibc, only correct status flags when the function returns, so spurious inexact is not a problem if it is already raised, and then i expect better code gen for the inexact clearing approach: if (fabs (x) > INT32_MAX && fetestexcept (FE_INEXACT) == 0) { asm (...); if (fetestexcept (FE_INVALID|FE_INEXACT) == (FE_INVALID|FE_INEXACT)) feclearexcept (FE_INEXACT); } else asm (...);