From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 7B5123858427 for ; Fri, 26 Aug 2022 16:25:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7B5123858427 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1661531108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=gcS8TvD0fTIfl2j9eDIWysETaaUUHTmNKnArWOHjbWM=; b=RCMyLd5O5plsvwMRf+rv86mAQmbBhPoCgLU+pOSsDjPyIdSY3BmkG1FKcLnEdKKNzX0v58 YUhy5bNS153brHalM9ffa3PVP90PyoNDc4aA5nNos9sfPJixTwKyFKexit3wHt2339sYD0 8FZjspzbC5ePTytgb7hZ5WQaS1of0YI= Received: from mail-ot1-f70.google.com (mail-ot1-f70.google.com [209.85.210.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-623-_IJdSn5IP2y8h2almxW3LA-1; Fri, 26 Aug 2022 12:25:06 -0400 X-MC-Unique: _IJdSn5IP2y8h2almxW3LA-1 Received: by mail-ot1-f70.google.com with SMTP id u19-20020a056830119300b0063913260813so926121otq.21 for ; Fri, 26 Aug 2022 09:25:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=gcS8TvD0fTIfl2j9eDIWysETaaUUHTmNKnArWOHjbWM=; b=JGFNuuCNOIJgJFt26UlRl62x1ze5q3HBUv6I6M2QYtvAzGKoVT3cxQdi/0PL54pEWk /ISgVFUSjMu1hxiWgX2phODJrLTrH/JzZeMKH5MLEItm3VaaMYbr+PJedn4H59K6tFWh 7LpUEZufXa09+8Q5DRXvuCSWXu0OR4RLM7dQpMk4dWIQ+nL05nTrg20RnvSLiQA+REN7 YbgYdVD/aVA3Z9otsrm959vkV78N4SnRs9+BYT0CZLsUjLRE6Jtx3u/2lBA6XZb9LUwn BOE0I+E3zJY8ySN4Hi5oDU36RVFrFjyKz91+rQIU3CFtmY7HIqax4W/3EVMnh+oT2Ncq AxVw== X-Gm-Message-State: ACgBeo0b70barGUfIOt1zwRDfS2riuFgkU1FV4WRxdtZB9smLf4tWyTE B1J5NhRzjHWN8ZhhyiKpdugpNhjRMYLT4eiDWyz/ricR7QPmoKkKBTVmrI9b4w1wbrO7o0Aq9JG WGLZ5fyCg+2NM2g2K3koxhzHwBqV9YVIg/Q== X-Received: by 2002:a05:6808:f0f:b0:343:2e0e:ac52 with SMTP id m15-20020a0568080f0f00b003432e0eac52mr1998781oiw.36.1661531106123; Fri, 26 Aug 2022 09:25:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR5HOA9Pif3vqfDriPoq6qfxilLMTegrLGOT/1Cb94YCSBIhVr1NjZ0wddOA0nJ0tJrdjyp8fwMveh/okY0PsqI= X-Received: by 2002:a05:6808:f0f:b0:343:2e0e:ac52 with SMTP id m15-20020a0568080f0f00b003432e0eac52mr1998772oiw.36.1661531105876; Fri, 26 Aug 2022 09:25:05 -0700 (PDT) MIME-Version: 1.0 References: <20220823103321.879429-1-aldyh@redhat.com> <845babb7-4bb2-35d7-224f-13937b5a0aab@gmail.com> In-Reply-To: <845babb7-4bb2-35d7-224f-13937b5a0aab@gmail.com> From: Aldy Hernandez Date: Fri, 26 Aug 2022 18:24:54 +0200 Message-ID: Subject: Re: [PATCH] Add set/get functions for negative infinity in real.* To: Jeff Law Cc: gcc-patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000059a74705e7275be0" X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000059a74705e7275be0 Content-Type: text/plain; charset="UTF-8" On Fri, Aug 26, 2022 at 6:08 PM Jeff Law via Gcc-patches wrote: > > > > On 8/23/2022 4:33 AM, Aldy Hernandez via Gcc-patches wrote: > > For the frange implementation with endpoints I'm about to contribute, > > we need to set REAL_VALUE_TYPEs with negative infinity. The support > > is already there in real.cc, but it is awkward to get at. One could > > call real_inf() and then negate the value, but I've added the ability > > to pass the sign argument like many of the existing real.* functions. > > > > I've declared the functions in such a way to avoid changes to the > > existing code base: > > > > // Unchanged function returning true for either +-INF. > > bool real_isinf (const REAL_VALUE_TYPE *r); > > // New overload to be able to specify the sign. > > bool real_isinf (const REAL_VALUE_TYPE *r, int sign); > > // Replacement function for setting INF, defaults to +INF. > > void real_inf (REAL_VALUE_TYPE *, int sign = 0); > > > > Tested on x86-64 Linux. > > > > OK? > > > > gcc/ChangeLog: > > > > * real.cc (real_isinf): New overload. > > (real_inf): Add sign argument. > > * real.h (real_isinf): New overload. > > (real_inf): Add sign argument. > > Funny in that I've fairly recently had the desire to do something a bit > similar. Let's consider 0.5, which we have a dconsthalf, but we don't > have dconstmhalf for -0.5. To get that value I create a dconsthalf > object and flip its sign. Similarly for a variety of other special > constants (particularly powers of two, but a few others as well). Ugh, yeah. I've been doing a lot of gymnastics in this space because frange's will have REAL_VALUE_TYPE endpoints. > > Consider making the "sign" argument a boolean. It's defined as a single > bit bitfield in the real_value structure. We don't want folks to pass > in values outside [0..1] for the sign if we can easily avoid it:-) I was trying to follow all the other functions in real.cc which have "int sign", though I suppose none of them are exported in the header file. OK pending tests? Aldy --00000000000059a74705e7275be0 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-set-get-functions-for-negative-infinity-in-real.patch" Content-Disposition: attachment; filename="0001-Add-set-get-functions-for-negative-infinity-in-real.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l7aonde30 RnJvbSA4NjY2NDQ5NmY2MmY1ZDRkMzNkYTAzNDdmNWQ1YzAxN2JkMjA0NTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogU2F0LCAyMCBBdWcgMjAyMiAxMjo0MTo1MyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBz ZXQvZ2V0IGZ1bmN0aW9ucyBmb3IgbmVnYXRpdmUgaW5maW5pdHkgaW4gcmVhbC4qCgpGb3IgdGhl IGZyYW5nZSBpbXBsZW1lbnRhdGlvbiB3aXRoIGVuZHBvaW50cyBJJ20gYWJvdXQgdG8gY29udHJp YnV0ZSwKd2UgbmVlZCB0byBzZXQgUkVBTF9WQUxVRV9UWVBFcyB3aXRoIG5lZ2F0aXZlIGluZmlu aXR5LiAgVGhlIHN1cHBvcnQKaXMgYWxyZWFkeSB0aGVyZSBpbiByZWFsLmNjLCBidXQgaXQgaXMg YXdrd2FyZCB0byBnZXQgYXQuICBPbmUgY291bGQKY2FsbCByZWFsX2luZigpIGFuZCB0aGVuIG5l Z2F0ZSB0aGUgdmFsdWUsIGJ1dCBJJ3ZlIGFkZGVkIHRoZSBhYmlsaXR5CnRvIHBhc3MgdGhlIHNp Z24gYXJndW1lbnQgbGlrZSBtYW55IG9mIHRoZSBleGlzdGluZyByZWFsLiogZnVuY3Rpb25zLgoK SSd2ZSBkZWNsYXJlZCB0aGUgZnVuY3Rpb25zIGluIHN1Y2ggYSB3YXkgdG8gYXZvaWQgY2hhbmdl cyB0byB0aGUKZXhpc3RpbmcgY29kZSBiYXNlOgoKLy8gVW5jaGFuZ2VkIGZ1bmN0aW9uIHJldHVy bmluZyB0cnVlIGZvciBlaXRoZXIgKy1JTkYuCmJvb2wgcmVhbF9pc2luZiAoY29uc3QgUkVBTF9W QUxVRV9UWVBFICpyKTsKLy8gTmV3IG92ZXJsb2FkIHRvIGJlIGFibGUgdG8gc3BlY2lmeSB0aGUg c2lnbi4KYm9vbCByZWFsX2lzaW5mIChjb25zdCBSRUFMX1ZBTFVFX1RZUEUgKnIsIGludCBzaWdu KTsKLy8gUmVwbGFjZW1lbnQgZnVuY3Rpb24gZm9yIHNldHRpbmcgSU5GLCBkZWZhdWx0cyB0byAr SU5GLgp2b2lkIHJlYWxfaW5mIChSRUFMX1ZBTFVFX1RZUEUgKiwgaW50IHNpZ24gPSAwKTsKCmdj Yy9DaGFuZ2VMb2c6CgoJKiByZWFsLmNjIChyZWFsX2lzaW5mKTogTmV3IG92ZXJsb2FkLgoJKHJl YWxfaW5mKTogQWRkIHNpZ24gYXJndW1lbnQuCgkqIHJlYWwuaCAocmVhbF9pc2luZik6IE5ldyBv dmVybG9hZC4KCShyZWFsX2luZik6IEFkZCBzaWduIGFyZ3VtZW50LgotLS0KIGdjYy9yZWFsLmNj IHwgMTQgKysrKysrKysrKystLS0KIGdjYy9yZWFsLmggIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hh bmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2Mv cmVhbC5jYyBiL2djYy9yZWFsLmNjCmluZGV4IDRlNjNiMTQ0OWM1Li5kY2Y0MWI3OWY2MCAxMDA2 NDQKLS0tIGEvZ2NjL3JlYWwuY2MKKysrIGIvZ2NjL3JlYWwuY2MKQEAgLTEyMzQsNiArMTIzNCwx NCBAQCByZWFsX2lzaW5mIChjb25zdCBSRUFMX1ZBTFVFX1RZUEUgKnIpCiAgIHJldHVybiAoci0+ Y2wgPT0gcnZjX2luZik7CiB9CiAKKy8qIERldGVybWluZSB3aGV0aGVyIGEgZmxvYXRpbmctcG9p bnQgdmFsdWUgWCBpcyBpbmZpbml0ZSB3aXRoIFNJR04uICAqLworCitib29sCityZWFsX2lzaW5m IChjb25zdCBSRUFMX1ZBTFVFX1RZUEUgKnIsIGJvb2wgc2lnbikKK3sKKyAgcmV0dXJuIHJlYWxf aXNpbmYgKHIpICYmIHItPnNpZ24gPT0gc2lnbjsKK30KKwogLyogRGV0ZXJtaW5lIHdoZXRoZXIg YSBmbG9hdGluZy1wb2ludCB2YWx1ZSBYIGlzIGEgTmFOLiAgKi8KIAogYm9vbApAQCAtMjQ4NCwx MiArMjQ5MiwxMiBAQCBkY29uc3Rfc3FydDJfcHRyICh2b2lkKQogICByZXR1cm4gJnZhbHVlOwog fQogCi0vKiBGaWxscyBSIHdpdGggK0luZi4gICovCisvKiBGaWxscyBSIHdpdGggSW5mIHdpdGgg U0lHTi4gICovCiAKIHZvaWQKLXJlYWxfaW5mIChSRUFMX1ZBTFVFX1RZUEUgKnIpCityZWFsX2lu ZiAoUkVBTF9WQUxVRV9UWVBFICpyLCBib29sIHNpZ24pCiB7Ci0gIGdldF9pbmYgKHIsIDApOwor ICBnZXRfaW5mIChyLCBzaWduKTsKIH0KIAogLyogRmlsbHMgUiB3aXRoIGEgTmFOIHdob3NlIHNp Z25pZmljYW5kIGlzIGRlc2NyaWJlZCBieSBTVFIuICBJZiBRVUlFVCwKZGlmZiAtLWdpdCBhL2dj Yy9yZWFsLmggYi9nY2MvcmVhbC5oCmluZGV4IDg0NWVmMjllM2E0Li5lMDFmOWVkNzI4MiAxMDA2 NDQKLS0tIGEvZ2NjL3JlYWwuaAorKysgYi9nY2MvcmVhbC5oCkBAIC0yNzcsNiArMjc3LDkgQEAg ZXh0ZXJuIGJvb2wgcmVhbF9jb21wYXJlIChpbnQsIGNvbnN0IFJFQUxfVkFMVUVfVFlQRSAqLCBj b25zdCBSRUFMX1ZBTFVFX1RZUEUgKikKIC8qIERldGVybWluZSB3aGV0aGVyIGEgZmxvYXRpbmct cG9pbnQgdmFsdWUgWCBpcyBpbmZpbml0ZS4gICovCiBleHRlcm4gYm9vbCByZWFsX2lzaW5mIChj b25zdCBSRUFMX1ZBTFVFX1RZUEUgKik7CiAKKy8qIERldGVybWluZSB3aGV0aGVyIGEgZmxvYXRp bmctcG9pbnQgdmFsdWUgWCBpcyBpbmZpbml0ZSB3aXRoIFNJR04uICAqLworZXh0ZXJuIGJvb2wg cmVhbF9pc2luZiAoY29uc3QgUkVBTF9WQUxVRV9UWVBFICosIGJvb2wgc2lnbik7CisKIC8qIERl dGVybWluZSB3aGV0aGVyIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUgWCBpcyBhIE5hTi4gICovCiBl eHRlcm4gYm9vbCByZWFsX2lzbmFuIChjb25zdCBSRUFMX1ZBTFVFX1RZUEUgKik7CiAKQEAgLTMz MSw3ICszMzQsNyBAQCBleHRlcm4gbG9uZyByZWFsX3RvX3RhcmdldCAobG9uZyAqLCBjb25zdCBS RUFMX1ZBTFVFX1RZUEUgKiwgZm9ybWF0X2hlbHBlcik7CiBleHRlcm4gdm9pZCByZWFsX2Zyb21f dGFyZ2V0IChSRUFMX1ZBTFVFX1RZUEUgKiwgY29uc3QgbG9uZyAqLAogCQkJICAgICAgZm9ybWF0 X2hlbHBlcik7CiAKLWV4dGVybiB2b2lkIHJlYWxfaW5mIChSRUFMX1ZBTFVFX1RZUEUgKik7Citl eHRlcm4gdm9pZCByZWFsX2luZiAoUkVBTF9WQUxVRV9UWVBFICosIGJvb2wgc2lnbiA9IGZhbHNl KTsKIAogZXh0ZXJuIGJvb2wgcmVhbF9uYW4gKFJFQUxfVkFMVUVfVFlQRSAqLCBjb25zdCBjaGFy ICosIGludCwgZm9ybWF0X2hlbHBlcik7CiAKLS0gCjIuMzcuMQoK --00000000000059a74705e7275be0--