From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 94099 invoked by alias); 12 Jun 2019 18:52:02 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 94085 invoked by uid 89); 12 Jun 2019 18:52:02 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=1.5, 0.5, H*f:sk:ri61s0t, H*f:sk:w4xX6iX X-HELO: mail-ed1-f41.google.com Received: from mail-ed1-f41.google.com (HELO mail-ed1-f41.google.com) (209.85.208.41) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 12 Jun 2019 18:52:00 +0000 Received: by mail-ed1-f41.google.com with SMTP id z25so27234835edq.9 for ; Wed, 12 Jun 2019 11:51:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=s3vsWk8PeW3pWLK5Hw745zfAsGFbzBqUKObsP0gwgMI=; b=cz2bA28e7Pms8WNPRrVnZPhC/i77KN/C5OPGZKPlGrxs99t/ysAMq+42Nu+9Zkm/q7 XqMMXo15YbBZeKSFLhWstyKVCrUuNlF60TJ2a0XeRnibR+O3J0vK5XnPTHcyRfL/4adf gzEAsXolHnLu5yKXkrwE1otTxKw1JbmdqyVHFa5c3EKzJNEL/+nDW0KgQ840BHXDHvsk rI4ASGlBhXzI6JrKCL5ljG1zoEzuaKmMzQtIGxT/eUf38Opxe9JM8YRyZJ0QeSeMVbS/ PNTjIwgtJ1xNjTIKrTh3QO1NgiSQ6ZgMQQ5kK9Pg1ywXeirppne8d8hVQ7a+ADnv3LFn PyCA== MIME-Version: 1.0 References: <20190530213839.GF31586@gate.crashing.org> In-Reply-To: From: Tejas Joshi Date: Wed, 12 Jun 2019 18:52:00 -0000 Message-ID: Subject: Re: About GSOC. To: gcc@gcc.gnu.org Cc: Martin Jambor , hubicka@ucw.cz, joseph@codesourcery.com Content-Type: multipart/mixed; boundary="0000000000006030bb058b24e8af" X-IsSubscribed: yes X-SW-Source: 2019-06/txt/msg00122.txt.bz2 --0000000000006030bb058b24e8af Content-Type: text/plain; charset="UTF-8" Content-length: 3266 Hello. > I don't think you should have the unreachable "return false;" in is_even. > The last "else if" can just be "else". I don't think return false in is_even is unreachable. As per my understanding, when one else if is true in the else if ladder, all the subsequent "else ifs" including "else" are ignored. When REAL_EXP is less than SIGNIFICAND_BITS, but the number is odd, the inner "if" for even-odd will not return true in which case should return false. That case will ignore next "else if" and will reach return false. > Suppose REAL_EXP (r) > SIGNIFICAND_BITS. Then the number is definitely > even, so you should return true, not false. for this condition, else if can be modified to just else and return true. PATCH: gcc/ChangeLog: 2019-06-12 Tejas Joshi * builtins.c (mathfn_built_in_2): Added CASE_MATHFN for ROUNDEVEN. * builtins.def: Added function definitions for roundeven function variants. * fold-const-call.c (fold_const_call_ss): Added case for function call and fold_const_conversion call for roundeven function. * fold-const.c (negate_mathfn_p): Added case for roundeven function. (tree_call_nonnegative_warnv_p): Added case for roundeven function. (integer_valued_real_call_p): Added case for roundeven function. * real.c (is_even): New function. Returns true if real number is even, otherwise returns false. (is_halfway_below): New function. Returns true if real number is halfway between two integers, else return false. (real_roundeven): New function. Round real number to nearest integer, rounding halfway cases towards even. * real.h (real_value): Added descriptive comments. Added function declaration for roundeven function. gcc/testsuite/ChangeLog: 2019-06-12 Tejas Joshi * gcc.dg/torture/builtin-round-roundeven.c: New test. * gcc.dg/torture/builtin-round-roundevenf128.c: New test. On Tue, 11 Jun 2019 at 01:56, Joseph Myers wrote: > > On Sun, 9 Jun 2019, Tejas Joshi wrote: > > > Hello. > > I have created another patch which addresses the above points, > > attached herewith. > > I don't think you should have the unreachable "return false;" in is_even. > The last "else if" can just be "else". > > > > a conditional with < not <=; if REAL_EXP (r) == SIGNIFICAND_BITS, the > > > least significant bit has value 1 and the number must be an integer). > > > > The number is integer because of the whole word spaces is occupied by > > integer part? > > Also, why would the least significant bit will have value 1 if > > REAL_EXP (r) == SIGNIFICAND_BITS, as it only concerns with 2^0th > > position (even or odd)? > > My understanding is that the significand is, as per the comments in > real.c, in the range [0.5, 1.0). There are SIGNIFICAND_BITS bits. The > bit above the most significant one has value 2^REAL_EXP. The most > significant one has value 2^(REAL_EXP-1). The least significant one has > value 2^(REAL_EXP-SIGNIFICAND_BITS). If REAL_EXP == SIGNIFICAND_BITS, > that means the least significant bit has value 2^0 = 1, and there are no > bits with value 0.5 or below, so the number is an integer. > > -- > Joseph S. Myers > joseph@codesourcery.com --0000000000006030bb058b24e8af Content-Type: text/x-patch; charset="US-ASCII"; name="roundeven2.patch" Content-Disposition: attachment; filename="roundeven2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwtlhs0i0 Content-length: 12322 ZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jIGIvZ2NjL2J1aWx0aW5zLmMK aW5kZXggMzQ2M2ZmYjE1MzkuLjg1YTk0NTg3N2E0IDEwMDY0NAotLS0gYS9n Y2MvYnVpbHRpbnMuYworKysgYi9nY2MvYnVpbHRpbnMuYwpAQCAtMjA4NSw2 ICsyMDg1LDcgQEAgbWF0aGZuX2J1aWx0X2luXzIgKHRyZWUgdHlwZSwgY29t YmluZWRfZm4gZm4pCiAgICAgQ0FTRV9NQVRIRk4gKFJFTVFVTykKICAgICBD QVNFX01BVEhGTl9GTE9BVE4gKFJJTlQpCiAgICAgQ0FTRV9NQVRIRk5fRkxP QVROIChST1VORCkKKyAgICBDQVNFX01BVEhGTiAoUk9VTkRFVkVOKQogICAg IENBU0VfTUFUSEZOIChTQ0FMQikKICAgICBDQVNFX01BVEhGTiAoU0NBTEJM TikKICAgICBDQVNFX01BVEhGTiAoU0NBTEJOKQpkaWZmIC0tZ2l0IGEvZ2Nj L2J1aWx0aW5zLmRlZiBiL2djYy9idWlsdGlucy5kZWYKaW5kZXggNmQ0MWJk YjRmNDQuLjhiYjcwMjdhYWM3IDEwMDY0NAotLS0gYS9nY2MvYnVpbHRpbnMu ZGVmCisrKyBiL2djYy9idWlsdGlucy5kZWYKQEAgLTU0MiwxMiArNTQyLDE4 IEBAIERFRl9DOTlfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1JJTlRMLCAi cmludGwiLCBCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEUsIEFUCiAjZGVm aW5lIFJJTlRfVFlQRShGKSBCVF9GTl8jI0YjI18jI0YKIERFRl9FWFRfTElC X0ZMT0FUTl9OWF9CVUlMVElOUyAoQlVJTFRfSU5fUklOVCwgInJpbnQiLCBS SU5UX1RZUEUsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1QpCiAjdW5k ZWYgUklOVF9UWVBFCitERUZfRVhUX0xJQl9CVUlMVElOICAgIChCVUlMVF9J Tl9ST1VOREVWRU4sICJyb3VuZGV2ZW4iLCBCVF9GTl9ET1VCTEVfRE9VQkxF LCBBVFRSX0NPTlNUX05PVEhST1dfTEVBRl9MSVNUKQorREVGX0VYVF9MSUJf QlVJTFRJTiAgICAoQlVJTFRfSU5fUk9VTkRFVkVORiwgInJvdW5kZXZlbmYi LCBCVF9GTl9GTE9BVF9GTE9BVCwgQVRUUl9DT05TVF9OT1RIUk9XX0xFQUZf TElTVCkKK0RFRl9FWFRfTElCX0JVSUxUSU4gICAgKEJVSUxUX0lOX1JPVU5E RVZFTkwsICJyb3VuZGV2ZW5sIiwgQlRfRk5fTE9OR0RPVUJMRV9MT05HRE9V QkxFLCBBVFRSX0NPTlNUX05PVEhST1dfTEVBRl9MSVNUKQogREVGX0M5OV9C VUlMVElOICAgICAgICAoQlVJTFRfSU5fUk9VTkQsICJyb3VuZCIsIEJUX0ZO X0RPVUJMRV9ET1VCTEUsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1Qp CiBERUZfQzk5X0JVSUxUSU4gICAgICAgIChCVUlMVF9JTl9ST1VOREYsICJy b3VuZGYiLCBCVF9GTl9GTE9BVF9GTE9BVCwgQVRUUl9DT05TVF9OT1RIUk9X X0xFQUZfTElTVCkKIERFRl9DOTlfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lO X1JPVU5ETCwgInJvdW5kbCIsIEJUX0ZOX0xPTkdET1VCTEVfTE9OR0RPVUJM RSwgQVRUUl9DT05TVF9OT1RIUk9XX0xFQUZfTElTVCkKICNkZWZpbmUgUk9V TkRfVFlQRShGKSBCVF9GTl8jI0YjI18jI0YKIERFRl9FWFRfTElCX0ZMT0FU Tl9OWF9CVUlMVElOUyAoQlVJTFRfSU5fUk9VTkQsICJyb3VuZCIsIFJPVU5E X1RZUEUsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1QpCiAjdW5kZWYg Uk9VTkRfVFlQRQorI2RlZmluZSBST1VOREVWRU5fVFlQRShGKSBCVF9GTl8j I0YjI18jI0YKK0RFRl9FWFRfTElCX0ZMT0FUTl9OWF9CVUlMVElOUyAoQlVJ TFRfSU5fUk9VTkRFVkVOLCAicm91bmRldmVuIiwgUk9VTkRFVkVOX1RZUEUs IEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1QpCisjdW5kZWYgUk9VTkRF VkVOX1RZUEUKIERFRl9FWFRfTElCX0JVSUxUSU4gICAgKEJVSUxUX0lOX1ND QUxCLCAic2NhbGIiLCBCVF9GTl9ET1VCTEVfRE9VQkxFX0RPVUJMRSwgQVRU Ul9NQVRIRk5fRlBST1VORElOR19FUlJOTykKIERFRl9FWFRfTElCX0JVSUxU SU4gICAgKEJVSUxUX0lOX1NDQUxCRiwgInNjYWxiZiIsIEJUX0ZOX0ZMT0FU X0ZMT0FUX0ZMT0FULCBBVFRSX01BVEhGTl9GUFJPVU5ESU5HX0VSUk5PKQog REVGX0VYVF9MSUJfQlVJTFRJTiAgICAoQlVJTFRfSU5fU0NBTEJMLCAic2Nh bGJsIiwgQlRfRk5fTE9OR0RPVUJMRV9MT05HRE9VQkxFX0xPTkdET1VCTEUs IEFUVFJfTUFUSEZOX0ZQUk9VTkRJTkdfRVJSTk8pCmRpZmYgLS1naXQgYS9n Y2MvZm9sZC1jb25zdC1jYWxsLmMgYi9nY2MvZm9sZC1jb25zdC1jYWxsLmMK aW5kZXggNzAyYzhiNDA1N2EuLmQ5YjU0NmU2ODAzIDEwMDY0NAotLS0gYS9n Y2MvZm9sZC1jb25zdC1jYWxsLmMKKysrIGIvZ2NjL2ZvbGQtY29uc3QtY2Fs bC5jCkBAIC04MzYsNiArODM2LDE1IEBAIGZvbGRfY29uc3RfY2FsbF9zcyAo cmVhbF92YWx1ZSAqcmVzdWx0LCBjb21iaW5lZF9mbiBmbiwKIAl9CiAgICAg ICByZXR1cm4gZmFsc2U7CiAKKyAgICBDQVNFX0NGTl9ST1VOREVWRU46Cisg ICAgQ0FTRV9DRk5fUk9VTkRFVkVOX0ZOOgorICAgICAgaWYgKCFSRUFMX1ZB TFVFX0lTTkFOICgqYXJnKSB8fCAhZmxhZ19lcnJub19tYXRoKQorICB7Cisg ICAgcmVhbF9yb3VuZGV2ZW4gKHJlc3VsdCwgZm9ybWF0LCBhcmcpOworICAg IHJldHVybiB0cnVlOworICB9CisgICAgICByZXR1cm4gZmFsc2U7CisKICAg ICBDQVNFX0NGTl9MT0dCOgogICAgICAgcmV0dXJuIGZvbGRfY29uc3RfbG9n YiAocmVzdWx0LCBhcmcsIGZvcm1hdCk7CiAKQEAgLTg5OCw2ICs5MDcsMTAg QEAgZm9sZF9jb25zdF9jYWxsX3NzICh3aWRlX2ludCAqcmVzdWx0LCBjb21i aW5lZF9mbiBmbiwKICAgICAgIHJldHVybiBmb2xkX2NvbnN0X2NvbnZlcnNp b24gKHJlc3VsdCwgcmVhbF9yb3VuZCwgYXJnLAogCQkJCSAgICBwcmVjaXNp b24sIGZvcm1hdCk7CiAKKyAgICBDQVNFX0NGTl9ST1VOREVWRU46CisgICAg Q0FTRV9DRk5fUk9VTkRFVkVOX0ZOOgorICAgICAgcmV0dXJuIGZvbGRfY29u c3RfY29udmVyc2lvbiAocmVzdWx0LCByZWFsX3JvdW5kZXZlbiwgYXJnLCBw cmVjaXNpb24sIGZvcm1hdCk7CisKICAgICBDQVNFX0NGTl9JUklOVDoKICAg ICBDQVNFX0NGTl9MUklOVDoKICAgICBDQVNFX0NGTl9MTFJJTlQ6CmRpZmYg LS1naXQgYS9nY2MvZm9sZC1jb25zdC5jIGIvZ2NjL2ZvbGQtY29uc3QuYwpp bmRleCAwY2E0NzJkNDIyZi4uMDdkODJhMTdlMjUgMTAwNjQ0Ci0tLSBhL2dj Yy9mb2xkLWNvbnN0LmMKKysrIGIvZ2NjL2ZvbGQtY29uc3QuYwpAQCAtMzI5 LDYgKzMyOSw4IEBAIG5lZ2F0ZV9tYXRoZm5fcCAoY29tYmluZWRfZm4gZm4p CiAgICAgQ0FTRV9DRk5fTExST1VORDoKICAgICBDQVNFX0NGTl9MUk9VTkQ6 CiAgICAgQ0FTRV9DRk5fUk9VTkQ6CisgICAgQ0FTRV9DRk5fUk9VTkRFVkVO OgorICAgIENBU0VfQ0ZOX1JPVU5ERVZFTl9GTjoKICAgICBDQVNFX0NGTl9T SU46CiAgICAgQ0FTRV9DRk5fU0lOSDoKICAgICBDQVNFX0NGTl9UQU46CkBA IC0xMzA2Myw2ICsxMzA2NSw4IEBAIHRyZWVfY2FsbF9ub25uZWdhdGl2ZV93 YXJudl9wICh0cmVlIHR5cGUsIGNvbWJpbmVkX2ZuIGZuLCB0cmVlIGFyZzAs IHRyZWUgYXJnMSwKICAgICBDQVNFX0NGTl9SSU5UX0ZOOgogICAgIENBU0Vf Q0ZOX1JPVU5EOgogICAgIENBU0VfQ0ZOX1JPVU5EX0ZOOgorICAgIENBU0Vf Q0ZOX1JPVU5ERVZFTjoKKyAgICBDQVNFX0NGTl9ST1VOREVWRU5fRk46CiAg ICAgQ0FTRV9DRk5fU0NBTEI6CiAgICAgQ0FTRV9DRk5fU0NBTEJMTjoKICAg ICBDQVNFX0NGTl9TQ0FMQk46CkBAIC0xMzU4Niw2ICsxMzU5MCw4IEBAIGlu dGVnZXJfdmFsdWVkX3JlYWxfY2FsbF9wIChjb21iaW5lZF9mbiBmbiwgdHJl ZSBhcmcwLCB0cmVlIGFyZzEsIGludCBkZXB0aCkKICAgICBDQVNFX0NGTl9S SU5UX0ZOOgogICAgIENBU0VfQ0ZOX1JPVU5EOgogICAgIENBU0VfQ0ZOX1JP VU5EX0ZOOgorICAgIENBU0VfQ0ZOX1JPVU5ERVZFTjoKKyAgICBDQVNFX0NG Tl9ST1VOREVWRU5fRk46CiAgICAgQ0FTRV9DRk5fVFJVTkM6CiAgICAgQ0FT RV9DRk5fVFJVTkNfRk46CiAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp dCBhL2djYy9yZWFsLmMgYi9nY2MvcmVhbC5jCmluZGV4IDAxNjRmMDk3YTUz Li5hYjcxNDMwNzA5ZiAxMDA2NDQKLS0tIGEvZ2NjL3JlYWwuYworKysgYi9n Y2MvcmVhbC5jCkBAIC01MDEwLDYgKzUwMTAsODkgQEAgcmVhbF9yb3VuZCAo UkVBTF9WQUxVRV9UWVBFICpyLCBmb3JtYXRfaGVscGVyIGZtdCwKICAgICBy ZWFsX2NvbnZlcnQgKHIsIGZtdCwgcik7CiB9CiAKKy8qIFJldHVybiB0cnVl IGluY2x1ZGluZyAwIGlmIGludGVnZXIgcGFydCBvZiBSIGlzIGV2ZW4sIGVs c2UgcmV0dXJuCisgICBmYWxzZS4gVGhlIGZ1bmN0aW9uIGlzIG5vdCB2YWxp ZCBmb3IgcnZjX2luZiBhbmQgcnZjX25hbiBjbGFzc2VzLiAqLworCitib29s Citpc19ldmVuIChSRUFMX1ZBTFVFX1RZUEUgKnIpCit7CisgIGdjY19hc3Nl cnQgKHItPmNsICE9IHJ2Y19pbmYpOworICBnY2NfYXNzZXJ0IChyLT5jbCAh PSBydmNfbmFuKTsKKworICBpZiAoci0+Y2wgPT0gcnZjX3plcm8pCisgICAg cmV0dXJuIHRydWU7CisKKyAgLyogRm9yICgtMSwxKSwgbnVtYmVyIGlzIGV2 ZW4uICovCisgIGlmIChSRUFMX0VYUCAocikgPD0gMCkKKyAgICByZXR1cm4g dHJ1ZTsKKworICAvKiBDaGVjayBsb3dlc3QgYml0LCBpZiBub3Qgc2V0LCBy ZXR1cm4gdHJ1ZS4gKi8KKyAgZWxzZSBpZiAoUkVBTF9FWFAgKHIpIDw9IFNJ R05JRklDQU5EX0JJVFMpCisgIHsKKyAgICB1bnNpZ25lZCBpbnQgbiA9IFNJ R05JRklDQU5EX0JJVFMgLSBSRUFMX0VYUCAocik7CisgICAgaW50IHcgPSBu IC8gSE9TVF9CSVRTX1BFUl9MT05HOworCisgICAgdW5zaWduZWQgbG9uZyBu dW0gPSAoKHVuc2lnbmVkIGxvbmcpMSA8PCAobiAlIEhPU1RfQklUU19QRVJf TE9ORykpOworCisgICAgaWYgKChyLT5zaWdbd10gJiBudW0pID09IDApCisg ICAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGVsc2UKKyAgICByZXR1cm4g dHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIFJldHVybiB0cnVl IGlmIFIgaXMgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ2VycywgZWxzZSBy ZXR1cm4KKyAgIGZhbHNlLiBUaGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZv ciBydmNfaW5mIGFuZCBydmNfbmFuIGNsYXNzZXMuICovCisKK2Jvb2wKK2lz X2hhbGZ3YXlfYmVsb3cgKGNvbnN0IFJFQUxfVkFMVUVfVFlQRSAqcikKK3sK KyAgZ2NjX2Fzc2VydCAoci0+Y2wgIT0gcnZjX2luZik7CisgIGdjY19hc3Nl cnQgKHItPmNsICE9IHJ2Y19uYW4pOworICBpbnQgaTsKKworICAvKiBGb3Ig bnVtYmVycyAoLTAuNSwwKSBhbmQgKDAsMC41KS4gKi8KKyAgaWYgKFJFQUxf RVhQIChyKSA8IDApCisgICAgcmV0dXJuIGZhbHNlOworCisgIGVsc2UgaWYg KFJFQUxfRVhQIChyKSA8IFNJR05JRklDQU5EX0JJVFMpCisgIHsKKyAgICB1 bnNpZ25lZCBpbnQgbiA9IFNJR05JRklDQU5EX0JJVFMgLSBSRUFMX0VYUCAo cikgLSAxOworICAgIGludCB3ID0gbiAvIEhPU1RfQklUU19QRVJfTE9ORzsK KworICAgIGZvciAoaSA9IDA7IGkgPCB3OyArK2kpCisgICAgICBpZiAoci0+ c2lnW2ldICE9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVu c2lnbmVkIGxvbmcgbnVtID0gKCh1bnNpZ25lZCBsb25nKTEgPDwgKG4gJSBI T1NUX0JJVFNfUEVSX0xPTkcpKTsKKworICAgIGlmICgoKHItPnNpZ1t3XSAm IG51bSkgIT0gMCkgJiYgKChyLT5zaWdbd10gJiAobnVtLTEpKSA9PSAwKSkK KyAgICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiBmYWxzZTsKK30K KworLyogUm91bmQgWCB0byBuZWFyZXN0IGludGVnZXIsIHJvdW5kaW5nIGhh bGZ3YXkgY2FzZXMgdG93YXJkcyBldmVuLiAqLworCit2b2lkCityZWFsX3Jv dW5kZXZlbiAoUkVBTF9WQUxVRV9UWVBFICpyLCBmb3JtYXRfaGVscGVyIGZt dCwKKwkJY29uc3QgUkVBTF9WQUxVRV9UWVBFICp4KQoreworICBpZiAoaXNf aGFsZndheV9iZWxvdyAoeCkpCisgIHsKKyAgICBkb19hZGQgKHIsIHgsICZk Y29uc3RoYWxmLCB4LT5zaWduKTsKKyAgICBpZiAoIWlzX2V2ZW4gKHIpKQor ICAgICAgZG9fYWRkIChyLCByLCAmZGNvbnN0bTEsIHgtPnNpZ24pOworICAg IGlmIChmbXQpCisgICAgICByZWFsX2NvbnZlcnQgKHIsIGZtdCwgcik7Cisg IH0KKyAgZWxzZQorICAgIHJlYWxfcm91bmQgKHIsIGZtdCwgeCk7Cit9CisK IC8qIFNldCB0aGUgc2lnbiBvZiBSIHRvIHRoZSBzaWduIG9mIFguICAqLwog CiB2b2lkCmRpZmYgLS1naXQgYS9nY2MvcmVhbC5oIGIvZ2NjL3JlYWwuaApp bmRleCA5NWI5ZGI4M2QyNC4uNzY4ODliZmYwZWEgMTAwNjQ0Ci0tLSBhL2dj Yy9yZWFsLmgKKysrIGIvZ2NjL3JlYWwuaApAQCAtNDEsMTEgKzQxLDE4IEBA IHN0cnVjdCBHVFkoKCkpIHJlYWxfdmFsdWUgewogICAgICBzdXJlIHRoZXkn cmUgcGFja2VkIHRvZ2V0aGVyLCBvdGhlcndpc2UgUkVBTF9WQUxVRV9UWVBF X1NJWkUgd2lsbAogICAgICBiZSBtaXNjb21wdXRlZC4gICovCiAgIHVuc2ln bmVkIGludCAvKiBFTlVNX0JJVEZJRUxEIChyZWFsX3ZhbHVlX2NsYXNzKSAq LyBjbCA6IDI7CisgIC8qIDEgaWYgbnVtYmVyIGlzIGRlY2ltYWwgZmxvYXRp bmcgcG9pbnQgKi8KICAgdW5zaWduZWQgaW50IGRlY2ltYWwgOiAxOworICAv KiAxIGlmIG51bWJlciBpcyBuZWdhdGl2ZSAqLwogICB1bnNpZ25lZCBpbnQg c2lnbiA6IDE7CisgIC8qIDEgaWYgbnVtYmVyIGlzIHNpZ25hbGxpbmcgKi8K ICAgdW5zaWduZWQgaW50IHNpZ25hbGxpbmcgOiAxOworICAvKiAxIGlmIG51 bWJlciBpcyBjYW5vbmljYWwKKyAgQWxsIGFyZSBnZW5lcmFsbHkgdXNlZCBm b3IgaGFuZGxpbmcgY2FzZXMgaW4gcmVhbC5jICovCiAgIHVuc2lnbmVkIGlu dCBjYW5vbmljYWwgOiAxOworICAvKiB1bmJpYXNlZCBleHBvbmVudCBvZiB0 aGUgbnVtYmVyICovCiAgIHVuc2lnbmVkIGludCB1ZXhwIDogRVhQX0JJVFM7 CisgIC8qIHNpZ25pZmljYW5kIG9mIHRoZSBudW1iZXIgKi8KICAgdW5zaWdu ZWQgbG9uZyBzaWdbU0lHU1pdOwogfTsKIApAQCAtNTAwLDYgKzUwNyw4IEBA IGV4dGVybiB2b2lkIHJlYWxfY2VpbCAoUkVBTF9WQUxVRV9UWVBFICosIGZv cm1hdF9oZWxwZXIsCiAJCSAgICAgICBjb25zdCBSRUFMX1ZBTFVFX1RZUEUg Kik7CiBleHRlcm4gdm9pZCByZWFsX3JvdW5kIChSRUFMX1ZBTFVFX1RZUEUg KiwgZm9ybWF0X2hlbHBlciwKIAkJCWNvbnN0IFJFQUxfVkFMVUVfVFlQRSAq KTsKK2V4dGVybiB2b2lkIHJlYWxfcm91bmRldmVuIChSRUFMX1ZBTFVFX1RZ UEUgKiwgZm9ybWF0X2hlbHBlciwKKyAgICAgIGNvbnN0IFJFQUxfVkFMVUVf VFlQRSAqKTsKIAogLyogU2V0IHRoZSBzaWduIG9mIFIgdG8gdGhlIHNpZ24g b2YgWC4gICovCiBleHRlcm4gdm9pZCByZWFsX2NvcHlzaWduIChSRUFMX1ZB TFVFX1RZUEUgKiwgY29uc3QgUkVBTF9WQUxVRV9UWVBFICopOwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9idWlsdGluLXJv dW5kLXJvdW5kZXZlbi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9idWlsdGluLXJvdW5kLXJvdW5kZXZlbi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNzVhZGY2ZWM4YQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvYnVpbHRp bi1yb3VuZC1yb3VuZGV2ZW4uYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRn LWRvIGxpbmsgfSAqLworCitleHRlcm4gaW50IGxpbmtfZXJyb3IgKGludCk7 CisKKyNkZWZpbmUgVEVTVChGTiwgVkFMVUUsIFJFU1VMVCkgXAorICBpZiAo X19idWlsdGluXyMjRk4gKFZBTFVFKSAhPSBSRVNVTFQpIGxpbmtfZXJyb3Ig KF9fTElORV9fKTsKKworaW50CittYWluICh2b2lkKQoreworICBURVNUKHJv dW5kZXZlbiwgIDAsIDApOworICBURVNUKHJvdW5kZXZlbiwgIDAuNSwgMCk7 CisgIFRFU1Qocm91bmRldmVuLCAgLTAuNSwgMCk7CisgIFRFU1Qocm91bmRl dmVuLCAgNiwgNik7CisgIFRFU1Qocm91bmRldmVuLCAgLTgsIC04KTsKKyAg VEVTVChyb3VuZGV2ZW4sICAyLjUsIDIpOworICBURVNUKHJvdW5kZXZlbiwg IDMuNSwgNCk7CisgIFRFU1Qocm91bmRldmVuLCAgLTEuNSwgLTIpOworICBU RVNUKHJvdW5kZXZlbiwgIDMuNDk5LCAzKTsKKyAgVEVTVChyb3VuZGV2ZW4s ICAzLjUwMSwgNCk7CisKKyAgcmV0dXJuIDA7Cit9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9idWlsdGluLXJvdW5kLXJvdW5kZXZlbmYxMjguYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvYnVpbHRpbi1yb3VuZC1yb3Vu ZGV2ZW5mMTI4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjU5MmJhZDQ5NjIzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9idWlsdGluLXJvdW5kLXJvdW5kZXZl bmYxMjguYwpAQCAtMCwwICsxLDIwIEBACisvKiB7IGRnLWRvIGxpbmsgfSAq LworLyogeyBkZy1hZGQtb3B0aW9ucyBmbG9hdDEyOCB9ICovCisvKiB7IGRn LXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBmbG9hdDEyOCB9ICovCisKK2V4 dGVybiBpbnQgbGlua19lcnJvciAoaW50KTsKKworI2RlZmluZSBURVNUKEZO LCBWQUxVRSwgUkVTVUxUKSBcCisgIGlmIChfX2J1aWx0aW5fIyNGTiMjZjEy OCAoVkFMVUUpICE9IFJFU1VMVCkgbGlua19lcnJvciAoX19MSU5FX18pOwor CitpbnQKK21haW4gKHZvaWQpCit7CisgIFRFU1Qocm91bmRldmVuLCAgKDB4 MXA2NCswLjVmMTI4KSwgKDB4MXA2NGYxMjgpKTsKKyAgVEVTVChyb3VuZGV2 ZW4sICAoMHgxcDYzKzAuNWYxMjgpLCAoMHgxcDYzZjEyOCkpOworICBURVNU KHJvdW5kZXZlbiwgICgweDFwNjMtMC41ZjEyOCksICgweDFwNjNmMTI4KSk7 CisgIFRFU1Qocm91bmRldmVuLCAgKDB4MXA2NC0wLjVmMTI4KSwgKDB4MXA2 NGYxMjgpKTsKKyAgVEVTVChyb3VuZGV2ZW4sICAoMHgxcDY0KzAuNTAxZjEy OCksICgweDFwNjQrMS4wZjEyOCkpOworICBURVNUKHJvdW5kZXZlbiwgICgw eDEuQzAwMDAwMDAwMDAwMDM5QTU2NTNwMWYxMjgpLCAoMHgxcDJmMTI4KSkK KyAgcmV0dXJuIDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo= --0000000000006030bb058b24e8af--