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 31FED3858C52 for ; Tue, 8 Nov 2022 14:02:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 31FED3858C52 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=1667916175; 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=ocTyvJqxy2dJGlUvgcm4H3u2OSRrgecOZ+UPXeGT2Ic=; b=S4BSXXXRiHVGbDX3yAm6nbryEaa7lgZsbZjVwuSAfibj4Rh1JQnrrE76S6eX7wRiXj/5VW xiBHvxqhUUlOkwQ0TZx5HWAe2b7BNeMkhx5JSRkh1zushZVAvVUV20OEO1CUzT0AL+hTGZ UZu/EKSbJaa1bpCyL+AqbtFW+gvN6PQ= Received: from mail-yb1-f198.google.com (mail-yb1-f198.google.com [209.85.219.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-326-CSDyciiDNT6qfuv1w53MHg-1; Tue, 08 Nov 2022 09:02:53 -0500 X-MC-Unique: CSDyciiDNT6qfuv1w53MHg-1 Received: by mail-yb1-f198.google.com with SMTP id j132-20020a25238a000000b006da635e2073so562890ybj.2 for ; Tue, 08 Nov 2022 06:02:53 -0800 (PST) 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:subject:date:message-id :reply-to; bh=ocTyvJqxy2dJGlUvgcm4H3u2OSRrgecOZ+UPXeGT2Ic=; b=TLyBGd6M+AhMbEiobmhpLayV/MenPmtQgJvWKTNNnZOt8sm378jUZ/ohg0EYSChenv 2HLqz9cvsO4pNsv4iVt4DGKspKdmzpJDXMfQzlZk6ybjNKGJZCLVQEbgPPCTXDUzjHNF pbWrlPhTbFa6K0IumBqC1hRxXBSpWFCsZyPr2ewuuczhVNWcoJJ951aVWWzer/Zh8UJm 0UCJJUNIXOYfIvlxbLARHeVxDNoF/0lRRlroMOE16E7wkSABGXq6SyK8IbQJtK0tMqck 9kN2+LVy3nAS8hUO2dmpm4nZgriYRjKyYomkZTJ0mW2WCthfMcy26Xx23wtNXOVJLaO9 HDXw== X-Gm-Message-State: ACrzQf3hneonA9d1uOzXDxw/vsZA1gnXOlR28/KGnC/sL9nvk4e62XD5 2ZixtaKI8d+G+zufG3ryrVQfruEzBLVurwMrUGi2993/lqUZkkZiVIVYiZlJdO9POdswZBtP8sf NEEKAZ2+NXdA0VElxuHLN7TMVKAYJiyRUtw== X-Received: by 2002:a05:6902:13c8:b0:6af:f2b8:e164 with SMTP id y8-20020a05690213c800b006aff2b8e164mr53697534ybu.466.1667916172773; Tue, 08 Nov 2022 06:02:52 -0800 (PST) X-Google-Smtp-Source: AMsMyM7J+hWiWzoxaWSwp9dS6CAqjtc5qZsqUKdZCidhBKnFqSSMnhAZkRBxALzEbpeW/IS92j8QPbxKfMmr65Yp6M0= X-Received: by 2002:a05:6902:13c8:b0:6af:f2b8:e164 with SMTP id y8-20020a05690213c800b006aff2b8e164mr53697479ybu.466.1667916172231; Tue, 08 Nov 2022 06:02:52 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aldy Hernandez Date: Tue, 8 Nov 2022 15:02:40 +0100 Message-ID: Subject: Re: [PATCH] [PR24021] Implement PLUS_EXPR range-op entry for floats. To: Jakub Jelinek Cc: "MacLeod, Andrew" , GCC patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000f65c3b05ecf5fe5c" X-Spam-Status: No, score=-11.4 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_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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: --000000000000f65c3b05ecf5fe5c Content-Type: text/plain; charset="UTF-8" On Tue, Nov 8, 2022 at 2:15 PM Jakub Jelinek wrote: > > On Tue, Nov 08, 2022 at 01:47:58PM +0100, Aldy Hernandez wrote: > > On Tue, Nov 8, 2022 at 12:07 PM Jakub Jelinek wrote: > > > > > > On Mon, Nov 07, 2022 at 04:38:29PM +0100, Aldy Hernandez wrote: > > > > From d214bcdff2cb90ad1eb808d29bda6fb98d510b4c Mon Sep 17 00:00:00 2001 > > > > From: Aldy Hernandez > > > > Date: Mon, 7 Nov 2022 14:18:57 +0100 > > > > Subject: [PATCH] Provide normalized and denormal format version of > > > > real_isdenormal. > > > > > > > > Implement real_isdenormal_target() to be used within real.cc where the > > > > argument is known to be in denormal format. Rewrite real_isdenormal() > > > > for use outside of real.cc where the argument is known to be > > > > normalized. > > > > > > > > gcc/ChangeLog: > > > > > > > > * real.cc (real_isdenormal_target): New. > > > > (encode_ieee_single): Use real_isdenormal_target. > > > > (encode_ieee_double): Same. > > > > (encode_ieee_extended): Same. > > > > (encode_ieee_quad): Same. > > > > (encode_ieee_half): Same. > > > > (encode_arm_bfloat_half): Same. > > > > * value-range.cc (frange::flush_denormals_to_zero): Same. > > > > * real.h (real_isdenormal): Rewrite to look at mode. > > > > > > I'd make real_isdenormal_target static inline bool > > > rather than inline bool, it is only defined in real.cc, so there is > > > no point exporting it. > > > > Huh. I thought inline alone would inhibit the exporting. Thanks. > > That is what happens with C99 inline (unless there is extern for the decl), > but C++ inline is different. It isn't guaranteed to be exported, but > with -fkeep-inline-functions or if you say take address of the inline > in a way that can't be optimized back into a call to the inline (or even > just call it with -O0), it is exported. > > > > > Though, as you've added the mode argument, the real.cc inline > > > could very well also be called real_isdenormal too, it wouldn't be > > > a redeclaration or ODR violation. > > > > Great, even better. > > > > OK pending tests? > > Aldy > > > From c3ca1d606bfb22bf4f8bc7ac0ce561bd6afc3368 Mon Sep 17 00:00:00 2001 > > From: Aldy Hernandez > > Date: Mon, 7 Nov 2022 14:18:57 +0100 > > Subject: [PATCH] Provide normalized and denormal format version of > > real_isdenormal. > > > > Implement a variant of real_isdenormal() to be used within real.cc > > where the argument is known to be in denormal format. Rewrite > > real_isdenormal() for use outside of real.cc where the argument is > > known to be normalized. > > > > gcc/ChangeLog: > > > > * real.cc (real_isdenormal): New. > > * real.h (real_isdenormal): Add mode argument. Rewrite for > > normalized values. > > * value-range.cc (frange::flush_denormals_to_zero): Pass mode to > > real_isdenormal. > > --- > > gcc/real.cc | 10 ++++++++++ > > gcc/real.h | 7 ++++--- > > gcc/value-range.cc | 5 +++-- > > 3 files changed, 17 insertions(+), 5 deletions(-) > > > > diff --git a/gcc/real.cc b/gcc/real.cc > > index aae7c335d59..028aad95ec4 100644 > > --- a/gcc/real.cc > > +++ b/gcc/real.cc > > @@ -111,6 +111,16 @@ static const REAL_VALUE_TYPE * real_digit (int); > > static void times_pten (REAL_VALUE_TYPE *, int); > > > > static void round_for_format (const struct real_format *, REAL_VALUE_TYPE *); > > + > > +/* Determine whether a floating-point value X is a denormal. R is > > + expected to be in denormal form, so this function is only > > + meaningful after a call to round_for_format. */ > > + > > +static inline bool > > +real_isdenormal (const REAL_VALUE_TYPE *r) > > +{ > > + return (r->sig[SIGSZ-1] & SIG_MSB) == 0; > > I would probably keep the r->cl == rvc_normal in here too. > I know the code in real.cc didn't do it before, but what > r->sig is for the rvc_zero/rvc_inf is unclear. It is true > that get_zero/get_canonical_?nan/get_inf clear the whole sig, > but not really sure if we guarantee that everywhere. > The real.cc uses were like: > bool denormal = ...; > at the start of the function and then > switch (...) > { > ... > case rvc_normal: > if (denormal) > ... > } > so another even better possibility would be to use your simple > real.cc (real_isdenormal) and drop all the denormal variables, so: > - bool denormal = ...; > switch (...) > { > ... > case rvc_normal: > - if (denormal) > + if (real_isdenormal (r)) > ... > } Sure. Attached patch in testing. Aldy --000000000000f65c3b05ecf5fe5c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Provide-normalized-and-denormal-format-version-of-re.patch" Content-Disposition: attachment; filename="0001-Provide-normalized-and-denormal-format-version-of-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la8a6r370 RnJvbSBkMDJjZThlYWYxNmQyZmM2ZGI2NDcyMjY4ZmQ5NjJlMDljMmZkODFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogTW9uLCA3IE5vdiAyMDIyIDE0OjE4OjU3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gUHJvdmlk ZSBub3JtYWxpemVkIGFuZCBkZW5vcm1hbCBmb3JtYXQgdmVyc2lvbiBvZgogcmVhbF9pc2Rlbm9y bWFsLgoKSW1wbGVtZW50IGEgdmFyaWFudCBvZiByZWFsX2lzZGVub3JtYWwoKSB0byBiZSB1c2Vk IHdpdGhpbiByZWFsLmNjCndoZXJlIHRoZSBhcmd1bWVudCBpcyBrbm93biB0byBiZSBpbiBkZW5v cm1hbCBmb3JtYXQuICBSZXdyaXRlCnJlYWxfaXNkZW5vcm1hbCgpIGZvciB1c2Ugb3V0c2lkZSBv ZiByZWFsLmNjIHdoZXJlIHRoZSBhcmd1bWVudCBpcwprbm93biB0byBiZSBub3JtYWxpemVkLgoK Z2NjL0NoYW5nZUxvZzoKCgkqIHJlYWwuY2MgKHJlYWxfaXNkZW5vcm1hbCk6IE5ldy4KCShlbmNv ZGVfaWVlZV9zaW5nbGUpOiBDYWxsIHJlYWxfaXNkZW5vcm1hbC4KCShlbmNvZGVfaWVlZV9kb3Vi bGUpOiBTYW1lLgoJKGVuY29kZV9pZWVlX2V4dGVuZGVkKTogU2FtZS4KCShlbmNvZGVfaWVlZV9x dWFkKTogU2FtZS4KCShlbmNvZGVfaWVlZV9oYWxmKTogU2FtZS4KCShlbmNvZGVfYXJtX2JmbG9h dF9oYWxmKTogU2FtZS4KCSogcmVhbC5oIChyZWFsX2lzZGVub3JtYWwpOiBBZGQgbW9kZSBhcmd1 bWVudC4gIFJld3JpdGUgZm9yCglub3JtYWxpemVkIHZhbHVlcy4KCSogdmFsdWUtcmFuZ2UuY2Mg KGZyYW5nZTo6Zmx1c2hfZGVub3JtYWxzX3RvX3plcm8pOiBQYXNzIG1vZGUgdG8KCXJlYWxfaXNk ZW5vcm1hbC4KLS0tCiBnY2MvcmVhbC5jYyAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCiBnY2MvcmVhbC5oICAgICAgICAgfCAgNyArKysrLS0tCiBnY2MvdmFsdWUtcmFu Z2UuY2MgfCAgNSArKystLQogMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvcmVhbC5jYyBiL2djYy9yZWFsLmNjCmluZGV4 IGFhZTdjMzM1ZDU5Li4xYzcxODU4ZGQwMSAxMDA2NDQKLS0tIGEvZ2NjL3JlYWwuY2MKKysrIGIv Z2NjL3JlYWwuY2MKQEAgLTExMSw2ICsxMTEsMTYgQEAgc3RhdGljIGNvbnN0IFJFQUxfVkFMVUVf VFlQRSAqIHJlYWxfZGlnaXQgKGludCk7CiBzdGF0aWMgdm9pZCB0aW1lc19wdGVuIChSRUFMX1ZB TFVFX1RZUEUgKiwgaW50KTsKIAogc3RhdGljIHZvaWQgcm91bmRfZm9yX2Zvcm1hdCAoY29uc3Qg c3RydWN0IHJlYWxfZm9ybWF0ICosIFJFQUxfVkFMVUVfVFlQRSAqKTsKKworLyogRGV0ZXJtaW5l IHdoZXRoZXIgYSBmbG9hdGluZy1wb2ludCB2YWx1ZSBYIGlzIGEgZGVub3JtYWwuICBSIGlzCisg ICBleHBlY3RlZCB0byBiZSBpbiBkZW5vcm1hbCBmb3JtLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIG9u bHkKKyAgIG1lYW5pbmdmdWwgYWZ0ZXIgYSBjYWxsIHRvIHJvdW5kX2Zvcl9mb3JtYXQuICAqLwor CitzdGF0aWMgaW5saW5lIGJvb2wKK3JlYWxfaXNkZW5vcm1hbCAoY29uc3QgUkVBTF9WQUxVRV9U WVBFICpyKQoreworICByZXR1cm4gci0+Y2wgPT0gcnZjX25vcm1hbCAmJiAoci0+c2lnW1NJR1Na LTFdICYgU0lHX01TQikgPT0gMDsKK30KIAwKIC8qIEluaXRpYWxpemUgUiB3aXRoIGEgcG9zaXRp dmUgemVyby4gICovCiAKQEAgLTI5NjIsNyArMjk3Miw2IEBAIGVuY29kZV9pZWVlX3NpbmdsZSAo Y29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0ICpmbXQsIGxvbmcgKmJ1ZiwKIHsKICAgdW5zaWduZWQg bG9uZyBpbWFnZSwgc2lnLCBleHA7CiAgIHVuc2lnbmVkIGxvbmcgc2lnbiA9IHItPnNpZ247Ci0g IGJvb2wgZGVub3JtYWwgPSByZWFsX2lzZGVub3JtYWwgKHIpOwogCiAgIGltYWdlID0gc2lnbiA8 PCAzMTsKICAgc2lnID0gKHItPnNpZ1tTSUdTWi0xXSA+PiAoSE9TVF9CSVRTX1BFUl9MT05HIC0g MjQpKSAmIDB4N2ZmZmZmOwpAQCAtMzAwMiw3ICszMDExLDcgQEAgZW5jb2RlX2llZWVfc2luZ2xl IChjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgKmZtdCwgbG9uZyAqYnVmLAogICAgICAgLyogUmVj YWxsIHRoYXQgSUVFRSBudW1iZXJzIGFyZSBpbnRlcnByZXRlZCBhcyAxLkYgeCAyKipleHAsCiAJ IHdoZXJlYXMgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBpcyAwLkYgeCAyKipleHAu CiAJIFdoaWNoIG1lYW5zIHdlJ3JlIG9mZiBieSBvbmUuICAqLwotICAgICAgaWYgKGRlbm9ybWFs KQorICAgICAgaWYgKHJlYWxfaXNkZW5vcm1hbCAocikpCiAJZXhwID0gMDsKICAgICAgIGVsc2UK ICAgICAgIGV4cCA9IFJFQUxfRVhQIChyKSArIDEyNyAtIDE7CkBAIC0zMTgzLDcgKzMxOTIsNiBA QCBlbmNvZGVfaWVlZV9kb3VibGUgKGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCAqZm10LCBsb25n ICpidWYsCiB7CiAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VfbG8sIGltYWdlX2hpLCBzaWdfbG8sIHNp Z19oaSwgZXhwOwogICB1bnNpZ25lZCBsb25nIHNpZ24gPSByLT5zaWduOwotICBib29sIGRlbm9y bWFsID0gcmVhbF9pc2Rlbm9ybWFsIChyKTsKIAogICBpbWFnZV9oaSA9IHNpZ24gPDwgMzE7CiAg IGltYWdlX2xvID0gMDsKQEAgLTMyNTUsNyArMzI2Myw3IEBAIGVuY29kZV9pZWVlX2RvdWJsZSAo Y29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0ICpmbXQsIGxvbmcgKmJ1ZiwKICAgICAgIC8qIFJlY2Fs bCB0aGF0IElFRUUgbnVtYmVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgMS5GIHggMioqZXhwLAogCSB3 aGVyZWFzIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gaXMgMC5GIHggMioqZXhwLgog CSBXaGljaCBtZWFucyB3ZSdyZSBvZmYgYnkgb25lLiAgKi8KLSAgICAgIGlmIChkZW5vcm1hbCkK KyAgICAgIGlmIChyZWFsX2lzZGVub3JtYWwgKHIpKQogCWV4cCA9IDA7CiAgICAgICBlbHNlCiAJ ZXhwID0gUkVBTF9FWFAgKHIpICsgMTAyMyAtIDE7CkBAIC0zNDQxLDcgKzM0NDksNiBAQCBlbmNv ZGVfaWVlZV9leHRlbmRlZCAoY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0ICpmbXQsIGxvbmcgKmJ1 ZiwKIAkJICAgICAgY29uc3QgUkVBTF9WQUxVRV9UWVBFICpyKQogewogICB1bnNpZ25lZCBsb25n IGltYWdlX2hpLCBzaWdfaGksIHNpZ19sbzsKLSAgYm9vbCBkZW5vcm1hbCA9IHJlYWxfaXNkZW5v cm1hbCAocik7CiAKICAgaW1hZ2VfaGkgPSByLT5zaWduIDw8IDE1OwogICBzaWdfaGkgPSBzaWdf bG8gPSAwOwpAQCAtMzUyMyw3ICszNTMwLDcgQEAgZW5jb2RlX2llZWVfZXh0ZW5kZWQgKGNvbnN0 IHN0cnVjdCByZWFsX2Zvcm1hdCAqZm10LCBsb25nICpidWYsCiAJICAgdGhpcyBkaXNjcmVwYW5j eSBoYXMgYmVlbiB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBkaWZmZXJlbmNlCiAJICAgaW4gZm10LT5l bWluIGluIHJvdW5kX2Zvcl9mb3JtYXQuICAqLwogCi0JaWYgKGRlbm9ybWFsKQorCWlmIChyZWFs X2lzZGVub3JtYWwgKHIpKQogCSAgZXhwID0gMDsKIAllbHNlCiAJICB7CkBAIC0zOTcyLDcgKzM5 NzksNiBAQCBlbmNvZGVfaWVlZV9xdWFkIChjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgKmZtdCwg bG9uZyAqYnVmLAogewogICB1bnNpZ25lZCBsb25nIGltYWdlMywgaW1hZ2UyLCBpbWFnZTEsIGlt YWdlMCwgZXhwOwogICB1bnNpZ25lZCBsb25nIHNpZ24gPSByLT5zaWduOwotICBib29sIGRlbm9y bWFsID0gcmVhbF9pc2Rlbm9ybWFsIChyKTsKICAgUkVBTF9WQUxVRV9UWVBFIHU7CiAKICAgaW1h Z2UzID0gc2lnbiA8PCAzMTsKQEAgLTQwNDgsNyArNDA1NCw3IEBAIGVuY29kZV9pZWVlX3F1YWQg KGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCAqZm10LCBsb25nICpidWYsCiAgICAgICAvKiBSZWNh bGwgdGhhdCBJRUVFIG51bWJlcnMgYXJlIGludGVycHJldGVkIGFzIDEuRiB4IDIqKmV4cCwKIAkg d2hlcmVhcyB0aGUgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGlzIDAuRiB4IDIqKmV4cC4K IAkgV2hpY2ggbWVhbnMgd2UncmUgb2ZmIGJ5IG9uZS4gICovCi0gICAgICBpZiAoZGVub3JtYWwp CisgICAgICBpZiAocmVhbF9pc2Rlbm9ybWFsIChyKSkKIAlleHAgPSAwOwogICAgICAgZWxzZQog CWV4cCA9IFJFQUxfRVhQIChyKSArIDE2MzgzIC0gMTsKQEAgLTQ3MjksNyArNDczNSw2IEBAIGVu Y29kZV9pZWVlX2hhbGYgKGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCAqZm10LCBsb25nICpidWYs CiB7CiAgIHVuc2lnbmVkIGxvbmcgaW1hZ2UsIHNpZywgZXhwOwogICB1bnNpZ25lZCBsb25nIHNp Z24gPSByLT5zaWduOwotICBib29sIGRlbm9ybWFsID0gcmVhbF9pc2Rlbm9ybWFsIChyKTsKIAog ICBpbWFnZSA9IHNpZ24gPDwgMTU7CiAgIHNpZyA9IChyLT5zaWdbU0lHU1otMV0gPj4gKEhPU1Rf QklUU19QRVJfTE9ORyAtIDExKSkgJiAweDNmZjsKQEAgLTQ3NjksNyArNDc3NCw3IEBAIGVuY29k ZV9pZWVlX2hhbGYgKGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCAqZm10LCBsb25nICpidWYsCiAg ICAgICAvKiBSZWNhbGwgdGhhdCBJRUVFIG51bWJlcnMgYXJlIGludGVycHJldGVkIGFzIDEuRiB4 IDIqKmV4cCwKIAkgd2hlcmVhcyB0aGUgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGlzIDAu RiB4IDIqKmV4cC4KIAkgV2hpY2ggbWVhbnMgd2UncmUgb2ZmIGJ5IG9uZS4gICovCi0gICAgICBp ZiAoZGVub3JtYWwpCisgICAgICBpZiAocmVhbF9pc2Rlbm9ybWFsIChyKSkKIAlleHAgPSAwOwog ICAgICAgZWxzZQogCWV4cCA9IFJFQUxfRVhQIChyKSArIDE1IC0gMTsKQEAgLTQ4NDMsNyArNDg0 OCw2IEBAIGVuY29kZV9hcm1fYmZsb2F0X2hhbGYgKGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCAq Zm10LCBsb25nICpidWYsCiB7CiAgIHVuc2lnbmVkIGxvbmcgaW1hZ2UsIHNpZywgZXhwOwogICB1 bnNpZ25lZCBsb25nIHNpZ24gPSByLT5zaWduOwotICBib29sIGRlbm9ybWFsID0gcmVhbF9pc2Rl bm9ybWFsIChyKTsKIAogICBpbWFnZSA9IHNpZ24gPDwgMTU7CiAgIHNpZyA9IChyLT5zaWdbU0lH U1otMV0gPj4gKEhPU1RfQklUU19QRVJfTE9ORyAtIDgpKSAmIDB4N2Y7CkBAIC00ODgwLDcgKzQ4 ODQsNyBAQCBlbmNvZGVfYXJtX2JmbG9hdF9oYWxmIChjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQg KmZtdCwgbG9uZyAqYnVmLAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIHJ2Y19ub3JtYWw6Ci0g ICAgICBpZiAoZGVub3JtYWwpCisgICAgICBpZiAocmVhbF9pc2Rlbm9ybWFsIChyKSkKIAlleHAg PSAwOwogICAgICAgZWxzZQogICAgICAgZXhwID0gUkVBTF9FWFAgKHIpICsgMTI3IC0gMTsKZGlm ZiAtLWdpdCBhL2djYy9yZWFsLmggYi9nY2MvcmVhbC5oCmluZGV4IDMwNmU5NTkzODY2Li5iMTRi Y2RkM2ZkZSAxMDA2NDQKLS0tIGEvZ2NjL3JlYWwuaAorKysgYi9nY2MvcmVhbC5oCkBAIC0yODYs MTEgKzI4NiwxMiBAQCBleHRlcm4gYm9vbCByZWFsX2lzbmFuIChjb25zdCBSRUFMX1ZBTFVFX1RZ UEUgKik7CiAvKiBEZXRlcm1pbmUgd2hldGhlciBhIGZsb2F0aW5nLXBvaW50IHZhbHVlIFggaXMg YSBzaWduYWxpbmcgTmFOLiAgKi8KIGV4dGVybiBib29sIHJlYWxfaXNzaWduYWxpbmdfbmFuIChj b25zdCBSRUFMX1ZBTFVFX1RZUEUgKik7CiAKLS8qIERldGVybWluZSB3aGV0aGVyIGEgZmxvYXRp bmctcG9pbnQgdmFsdWUgWCBpcyBhIGRlbm9ybWFsLiAgKi8KKy8qIERldGVybWluZSB3aGV0aGVy IGZsb2F0aW5nLXBvaW50IHZhbHVlIFIgaXMgYSBkZW5vcm1hbC4gIFRoaXMKKyAgIGZ1bmN0aW9u IGlzIG9ubHkgdmFsaWQgZm9yIG5vcm1hbGl6ZWQgdmFsdWVzLiAgKi8KIGlubGluZSBib29sCi1y ZWFsX2lzZGVub3JtYWwgKGNvbnN0IFJFQUxfVkFMVUVfVFlQRSAqcikKK3JlYWxfaXNkZW5vcm1h bCAoY29uc3QgUkVBTF9WQUxVRV9UWVBFICpyLCBtYWNoaW5lX21vZGUgbW9kZSkKIHsKLSAgcmV0 dXJuIHItPmNsID09IHJ2Y19ub3JtYWwgJiYgKHItPnNpZ1tTSUdTWi0xXSAmIFNJR19NU0IpID09 IDA7CisgIHJldHVybiByLT5jbCA9PSBydmNfbm9ybWFsICYmIFJFQUxfRVhQIChyKSA8IFJFQUxf TU9ERV9GT1JNQVQgKG1vZGUpLT5lbWluOwogfQogCiAvKiBEZXRlcm1pbmUgd2hldGhlciBhIGZs b2F0aW5nLXBvaW50IHZhbHVlIFggaXMgZmluaXRlLiAgKi8KZGlmZiAtLWdpdCBhL2djYy92YWx1 ZS1yYW5nZS5jYyBiL2djYy92YWx1ZS1yYW5nZS5jYwppbmRleCBhODU1YWFmNjI2Yy4uODU5Yzdm YjRhZjkgMTAwNjQ0Ci0tLSBhL2djYy92YWx1ZS1yYW5nZS5jYworKysgYi9nY2MvdmFsdWUtcmFu Z2UuY2MKQEAgLTI2NiwxNSArMjY2LDE2IEBAIGZyYW5nZTo6Zmx1c2hfZGVub3JtYWxzX3RvX3pl cm8gKCkKICAgaWYgKHVuZGVmaW5lZF9wICgpIHx8IGtub3duX2lzbmFuICgpKQogICAgIHJldHVy bjsKIAorICBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAodHlwZSAoKSk7CiAgIC8vIEZs dXNoIFt4LCAtREVOT1JNQUxdIHRvIFt4LCAtMC4wXS4KLSAgaWYgKHJlYWxfaXNkZW5vcm1hbCAo Jm1fbWF4KSAmJiByZWFsX2lzbmVnICgmbV9tYXgpKQorICBpZiAocmVhbF9pc2Rlbm9ybWFsICgm bV9tYXgsIG1vZGUpICYmIHJlYWxfaXNuZWcgKCZtX21heCkpCiAgICAgewogICAgICAgbV9tYXgg PSBkY29uc3QwOwogICAgICAgaWYgKEhPTk9SX1NJR05FRF9aRVJPUyAobV90eXBlKSkKIAltX21h eC5zaWduID0gMTsKICAgICB9CiAgIC8vIEZsdXNoIFsrREVOT1JNQUwsIHhdIHRvIFsrMC4wLCB4 XS4KLSAgaWYgKHJlYWxfaXNkZW5vcm1hbCAoJm1fbWluKSAmJiAhcmVhbF9pc25lZyAoJm1fbWlu KSkKKyAgaWYgKHJlYWxfaXNkZW5vcm1hbCAoJm1fbWluLCBtb2RlKSAmJiAhcmVhbF9pc25lZyAo Jm1fbWluKSkKICAgICBtX21pbiA9IGRjb25zdDA7CiB9CiAKLS0gCjIuMzguMQoK --000000000000f65c3b05ecf5fe5c--