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.133.124]) by sourceware.org (Postfix) with ESMTPS id A3C7C3858D1E for ; Tue, 18 Apr 2023 10:51:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A3C7C3858D1E 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=1681815062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=Ju1BgDL0rhdK3RJhCh06y3xGi5pwmUYX8C/QvGlX+rM=; b=L1G5BzHk6urWaNT1XxK4vJTMXtqq+DYGvxW9Cj09NUxJsNiKo2rgABbwP3j6rz8/NhXaqW fEXX+Yl4JFe4arsciTRSjZOpEnfUuUFCc+vaECyYkUbuWXNXuZajCITH0rPQ6sahGNfKP0 EBHNBquhv7y6ynIjCDPl3k72mxGusRk= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-128-iEyjgv3yPSeqrWUF99-jAw-1; Tue, 18 Apr 2023 06:51:01 -0400 X-MC-Unique: iEyjgv3yPSeqrWUF99-jAw-1 Received: by mail-wm1-f69.google.com with SMTP id d8-20020a05600c3ac800b003edf7d484d4so8926908wms.0 for ; Tue, 18 Apr 2023 03:51:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681815060; x=1684407060; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ZtKUw9fY8HeUpPqsAXiqRF8cfivX02MDabAs+KCQya8=; b=hyNVHU8pXuVGyMQuA9f5AlZ12mzjTf9YgVy8NVuw17sfmTpQwoFr7yedEozzY4SO5Y kO1ztFTstg7CeQF5EBJqmtwXHHFD3A1uixTRArmhJiQAmn+xm01Ee4jV5lA3izcuGItY 2CgUiqTAVL/eGqco9gvO/JVGs2XmHz2ipCQUdCG2CUfJV0o25eJKRilxALK9F+eZu0bO x1nSs00+4XdovyN4aSUi78OWzVHLOyLZ9LVdLj8ytmjs5OvmlOdZ4YOJ/iwmjI3Tebfm Np6Qkwn1/+kK8gVdwui9W7wlNoaIb5oPk8BXfBe5z2fpM4sfc4mg8i/w8HpNl1f8VmZM zPyw== X-Gm-Message-State: AAQBX9djiEEc7q6U79At7ZHTXdnYvaHB/u0u7ucnbaDFzhsOaEljo+7U 3HHa/KTIycl2K6Uwx7qbSbDMrAnPMCe4rA7ZN5Zq++GDTsSxRoaneyI9bTy9IIq2EGJ2yxff6EA xC5v4NjC9fGv3RIryaQ== X-Received: by 2002:a1c:7304:0:b0:3f1:6f4a:a3ad with SMTP id d4-20020a1c7304000000b003f16f4aa3admr7035610wmb.2.1681815059790; Tue, 18 Apr 2023 03:50:59 -0700 (PDT) X-Google-Smtp-Source: AKy350aLs/S2EFo559RosufLhN2aHGS1rgBpa1O/zWnQ6b19TAnGsKVaoyTyrBO7dmI4nqDHeO3sDg== X-Received: by 2002:a1c:7304:0:b0:3f1:6f4a:a3ad with SMTP id d4-20020a1c7304000000b003f16f4aa3admr7035599wmb.2.1681815059466; Tue, 18 Apr 2023 03:50:59 -0700 (PDT) Received: from [192.168.1.201] ([139.47.42.170]) by smtp.gmail.com with ESMTPSA id v21-20020a05600c471500b003ef5bb63f13sm18279314wmo.10.2023.04.18.03.50.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 18 Apr 2023 03:50:59 -0700 (PDT) Message-ID: <6acb5cf5-43ab-7139-ac7f-6006dc3641c4@redhat.com> Date: Tue, 18 Apr 2023 12:50:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH] Add inchash support for vrange. To: Jakub Jelinek , GCC patches , Andrew MacLeod , Richard Biener References: <20230418090637.253140-1-aldyh@redhat.com> <20230418090637.253140-2-aldyh@redhat.com> From: Aldy Hernandez In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------R9Y2tpDuLP01U7f908auHBt7" Content-Language: en-US X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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: This is a multi-part message in MIME format. --------------R9Y2tpDuLP01U7f908auHBt7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 4/18/23 12:32, Jakub Jelinek wrote: > On Tue, Apr 18, 2023 at 11:33:05AM +0200, Jakub Jelinek wrote: >> On Tue, Apr 18, 2023 at 11:06:38AM +0200, Aldy Hernandez via Gcc-patches wrote: >>> This patch provides inchash support for vrange. It is along the lines >>> of the streaming support I just posted and will be used for IPA >>> hashing of ranges. >>> >>> Thoughts? >>> >>> gcc/ChangeLog: >>> >>> * inchash.cc (hash::add_real_value): New. >>> * inchash.h (class hash): Add add_real_value. >>> * value-range.cc (add_vrange): New. >>> * value-range.h (inchash::add_vrange): New. >>> --- >>> gcc/inchash.cc | 20 +++++++++++++++++++ >>> gcc/inchash.h | 2 ++ >>> gcc/value-range.cc | 48 ++++++++++++++++++++++++++++++++++++++++++++++ >>> gcc/value-range.h | 6 ++++++ >>> 4 files changed, 76 insertions(+) >>> >>> diff --git a/gcc/inchash.cc b/gcc/inchash.cc >>> index a30662b97fe..914e3cc92cd 100644 >>> --- a/gcc/inchash.cc >>> +++ b/gcc/inchash.cc >>> @@ -24,3 +24,23 @@ along with GCC; see the file COPYING3. If not see >>> #endif >>> #include "system.h" >>> #include "coretypes.h" >>> +#include "real.h" >>> +#include "inchash.h" >>> + >>> +namespace inchash >>> +{ >>> + >>> +/* This is here instead of inchash.h to keep us from having to put >>> + real.h in coretypes.h. */ >>> +void >>> +hash::add_real_value (const real_value &v) >>> +{ >>> + add_int (v.sign); >>> + add_int (v.uexp); >>> + for (unsigned i = 0; i < SIGSZ; ++i) >>> + add_hwi (v.sig[i]); >>> + /* Ignore the rest of the flags, as sign, exponent, and >>> + significant bits should be enough. */ >> >> I don't think that's the case. >> At least cl, decimal and signalling are essential flags as well. >> Dunno about canonical. >> How do you otherwise differentiate between Inf and +0.0 or (canonical) >> qNaN or (canonical) sNaN? >> They have the same sign, uexp and sig. > > I'd say it is best to follow real_identical that is used for the > comparisons, that one always compares cl and sign and then differentiates > based on cl: > 1) for rvc_zero/rvc_inf, everything else is ignored > 2) for rvc_normal, decimal, uexp and sig are compared > 3) for rvc_nan, signalling and canonical are compared and if !canonical, > sig is also compared > So, perhaps: > add_int (v.cl); > add_int (v.sign); > switch (v.cl) > { > case rvc_zero: > case rvc_inf: > return; > case rvc_normal: > add_int (v.decimal); > add_int (REAL_EXP (&v)); > break; > case rvc_nan: > add_int (v.signalling); > add_int (v.canonical); > if (v.canonical) > return; > break; > default: > gcc_unreachable (); > } > for (unsigned i = 0; i < SIGSZ; ++i) > add_hwi (v.sig[i]); > > Jakub > Sounds good. Thanks for the patch. OK pending tests? p.s. Cleaned up the need for declaring add_vrange() a friend of frange now that we have a way of getting the nan_state elegantly. --------------R9Y2tpDuLP01U7f908auHBt7 Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-inchash-support-for-vrange.patch" Content-Disposition: attachment; filename="0001-Add-inchash-support-for-vrange.patch" Content-Transfer-Encoding: base64 RnJvbSBiMDJiNDhhNDZhNmIxYTJmMzdlMDBmNDJhOGUzNzQyOThlNzQ1YzBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCAyMyBGZWIgMjAyMyAwODo0ODoyOCArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBp bmNoYXNoIHN1cHBvcnQgZm9yIHZyYW5nZS4KClRoaXMgcGF0Y2ggcHJvdmlkZXMgaW5jaGFzaCBz dXBwb3J0IGZvciB2cmFuZ2UuICBJdCBpcyBhbG9uZyB0aGUgbGluZXMKb2YgdGhlIHN0cmVhbWlu ZyBzdXBwb3J0IEkganVzdCBwb3N0ZWQgYW5kIHdpbGwgYmUgdXNlZCBmb3IgSVBBCmhhc2hpbmcg b2YgcmFuZ2VzLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGluY2hhc2guY2MgKGhhc2g6OmFkZF9yZWFs X3ZhbHVlKTogTmV3LgoJKiBpbmNoYXNoLmggKGNsYXNzIGhhc2gpOiBBZGQgYWRkX3JlYWxfdmFs dWUuCgkqIHZhbHVlLXJhbmdlLmNjIChhZGRfdnJhbmdlKTogTmV3LgoJKiB2YWx1ZS1yYW5nZS5o IChpbmNoYXNoOjphZGRfdnJhbmdlKTogTmV3LgotLS0KIGdjYy9pbmNoYXNoLmNjICAgICB8IDM2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBnY2MvaW5jaGFzaC5oICAgICAgfCAg MiArKwogZ2NjL3ZhbHVlLXJhbmdlLmNjIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogZ2NjL3ZhbHVlLXJhbmdlLmggIHwgIDUgKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2djYy9pbmNoYXNoLmNj IGIvZ2NjL2luY2hhc2guY2MKaW5kZXggYTMwNjYyYjk3ZmUuLjc4OTBkYjA0MjAyIDEwMDY0NAot LS0gYS9nY2MvaW5jaGFzaC5jYworKysgYi9nY2MvaW5jaGFzaC5jYwpAQCAtMjQsMyArMjQsMzkg QEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNl bmRpZgogI2luY2x1ZGUgInN5c3RlbS5oIgogI2luY2x1ZGUgImNvcmV0eXBlcy5oIgorI2luY2x1 ZGUgInJlYWwuaCIKKyNpbmNsdWRlICJpbmNoYXNoLmgiCisKK25hbWVzcGFjZSBpbmNoYXNoCit7 CisKKy8qIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGluY2hhc2guaCB0byBrZWVwIHVzIGZyb20g aGF2aW5nIHRvIHB1dAorICAgcmVhbC5oIGluIGNvcmV0eXBlcy5oLiAgKi8KK3ZvaWQKK2hhc2g6 OmFkZF9yZWFsX3ZhbHVlIChjb25zdCByZWFsX3ZhbHVlICZ2KQoreworICBhZGRfaW50ICh2LmNs KTsKKyAgYWRkX2ludCAodi5zaWduKTsKKyAgc3dpdGNoICh2LmNsKQorICAgIHsKKyAgICBjYXNl IHJ2Y196ZXJvOgorICAgIGNhc2UgcnZjX2luZjoKKyAgICAgIHJldHVybjsKKyAgICBjYXNlIHJ2 Y19ub3JtYWw6CisgICAgICBhZGRfaW50ICh2LmRlY2ltYWwpOworICAgICAgYWRkX2ludCAoUkVB TF9FWFAgKCZ2KSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIHJ2Y19uYW46CisgICAgICBhZGRf aW50ICh2LnNpZ25hbGxpbmcpOworICAgICAgYWRkX2ludCAodi5jYW5vbmljYWwpOworICAgICAg aWYgKHYuY2Fub25pY2FsKQorCXJldHVybjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg ICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisgICAgfQorICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgU0lHU1o7ICsraSkKKyAgICBhZGRfaHdpICh2LnNpZ1tpXSk7Cit9CisKK30gLy8gbmFtZXNw YWNlIGluY2hhc2gKZGlmZiAtLWdpdCBhL2djYy9pbmNoYXNoLmggYi9nY2MvaW5jaGFzaC5oCmlu ZGV4IGJmNzYzMDg0MzFkLi40MWFlMTUzZDFjNSAxMDA2NDQKLS0tIGEvZ2NjL2luY2hhc2guaAor KysgYi9nY2MvaW5jaGFzaC5oCkBAIC04OCw2ICs4OCw4IEBAIGNsYXNzIGhhc2gKICAgICAgIGFk ZF9od2kgKHguc2V4dF9lbHQgKGkpKTsKICAgfQogCisgIHZvaWQgYWRkX3JlYWxfdmFsdWUgKGNv bnN0IGNsYXNzIHJlYWxfdmFsdWUgJnYpOworCiAgIC8qIEhhc2ggaW4gcG9pbnRlciBQVFIuICAq LwogICB2b2lkIGFkZF9wdHIgKGNvbnN0IHZvaWQgKnB0cikKICAgewpkaWZmIC0tZ2l0IGEvZ2Nj L3ZhbHVlLXJhbmdlLmNjIGIvZ2NjL3ZhbHVlLXJhbmdlLmNjCmluZGV4IGVjODI2YzJmZTFiLi5j MTRhMjdlMjNhZiAxMDA2NDQKLS0tIGEvZ2NjL3ZhbHVlLXJhbmdlLmNjCisrKyBiL2djYy92YWx1 ZS1yYW5nZS5jYwpAQCAtMjMyLDYgKzIzMiw1OCBAQCB2cmFuZ2U6OmR1bXAgKEZJTEUgKmZpbGUp IGNvbnN0CiAgIHBwX2ZsdXNoICgmYnVmZmVyKTsKIH0KIAorbmFtZXNwYWNlIGluY2hhc2gKK3sK Kwordm9pZAorYWRkX3ZyYW5nZSAoY29uc3QgdnJhbmdlICZ2LCBpbmNoYXNoOjpoYXNoICZoc3Rh dGUsCisJICAgICB1bnNpZ25lZCBpbnQpCit7CisgIGlmICh2LnVuZGVmaW5lZF9wICgpKQorICAg IHsKKyAgICAgIGhzdGF0ZS5hZGRfaW50IChWUl9VTkRFRklORUQpOworICAgICAgcmV0dXJuOwor ICAgIH0KKyAgLy8gVHlwZXMgYXJlIGlnbm9yZWQgdGhyb3VnaG91dCB0byBpbmhpYml0IHR3byBy YW5nZXMgYmVpbmcgZXF1YWwKKyAgLy8gYnV0IGhhdmluZyBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMu ICBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0d28KKyAgLy8gcmFuZ2VzIGFyZSBlcXVhbCBhbmQgdGhl aXIgdHlwZXMgYXJlIGRpZmZlcmVudCAoYnV0CisgIC8vIHR5cGVzX2NvbXBhdGlibGVfcCBpcyB0 cnVlKS4KKyAgaWYgKGlzX2EgPGlyYW5nZT4gKHYpKQorICAgIHsKKyAgICAgIGNvbnN0IGlyYW5n ZSAmciA9IGFzX2EgPGlyYW5nZT4gKHYpOworICAgICAgaWYgKHIudmFyeWluZ19wICgpKQorCWhz dGF0ZS5hZGRfaW50IChWUl9WQVJZSU5HKTsKKyAgICAgIGVsc2UKKwloc3RhdGUuYWRkX2ludCAo VlJfUkFOR0UpOworICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHIubnVtX3BhaXJzICgp OyArK2kpCisJeworCSAgaHN0YXRlLmFkZF93aWRlX2ludCAoci5sb3dlcl9ib3VuZCAoaSkpOwor CSAgaHN0YXRlLmFkZF93aWRlX2ludCAoci51cHBlcl9ib3VuZCAoaSkpOworCX0KKyAgICAgIGhz dGF0ZS5hZGRfd2lkZV9pbnQgKHIuZ2V0X25vbnplcm9fYml0cyAoKSk7CisgICAgICByZXR1cm47 CisgICAgfQorICBpZiAoaXNfYSA8ZnJhbmdlPiAodikpCisgICAgeworICAgICAgY29uc3QgZnJh bmdlICZyID0gYXNfYSA8ZnJhbmdlPiAodik7CisgICAgICBpZiAoci52YXJ5aW5nX3AgKCkpCisJ aHN0YXRlLmFkZF9pbnQgKFZSX1ZBUllJTkcpOworICAgICAgZWxzZQorCWhzdGF0ZS5hZGRfaW50 IChWUl9SQU5HRSk7CisKKyAgICAgIGhzdGF0ZS5hZGRfcmVhbF92YWx1ZSAoci5sb3dlcl9ib3Vu ZCAoKSk7CisgICAgICBoc3RhdGUuYWRkX3JlYWxfdmFsdWUgKHIudXBwZXJfYm91bmQgKCkpOwor CisgICAgICBuYW5fc3RhdGUgbmFuID0gci5nZXRfbmFuX3N0YXRlICgpOworICAgICAgaHN0YXRl LmFkZF9pbnQgKG5hbi5wb3NfcCAoKSk7CisgICAgICBoc3RhdGUuYWRkX2ludCAobmFuLm5lZ19w ICgpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIGdjY191bnJlYWNoYWJsZSAoKTsKK30KKwor fSAvL25hbWVzcGFjZSBpbmNoYXNoCisKIGJvb2wKIGlyYW5nZTo6c3VwcG9ydHNfdHlwZV9wIChj b25zdF90cmVlIHR5cGUpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9nY2MvdmFsdWUtcmFuZ2UuaCBi L2djYy92YWx1ZS1yYW5nZS5oCmluZGV4IDk2OWIyYjY4NDE4Li5mYjkwZjY2ZDlkZSAxMDA2NDQK LS0tIGEvZ2NjL3ZhbHVlLXJhbmdlLmgKKysrIGIvZ2NjL3ZhbHVlLXJhbmdlLmgKQEAgLTEwOCw2 ICsxMDgsMTEgQEAgcHJvdGVjdGVkOgogICBFTlVNX0JJVEZJRUxEKHZhbHVlX3JhbmdlX2Rpc2Ny aW1pbmF0b3IpIG1fZGlzY3JpbWluYXRvciA6IDQ7CiB9OwogCituYW1lc3BhY2UgaW5jaGFzaAor eworICBleHRlcm4gdm9pZCBhZGRfdnJhbmdlIChjb25zdCB2cmFuZ2UgJiwgaGFzaCAmLCB1bnNp Z25lZCBmbGFncyA9IDApOworfQorCiAvLyBBbiBpbnRlZ2VyIHJhbmdlIHdpdGhvdXQgYW55IHN0 b3JhZ2UuCiAKIGNsYXNzIEdUWSgodXNlcikpIGlyYW5nZSA6IHB1YmxpYyB2cmFuZ2UKLS0gCjIu MzkuMgoK --------------R9Y2tpDuLP01U7f908auHBt7--