From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id D51403858288 for ; Wed, 16 Aug 2023 04:59:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D51403858288 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-688142a392eso4838916b3a.3 for ; Tue, 15 Aug 2023 21:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692161997; x=1692766797; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=OcYhewIBBosGgR9bQVpj903irKLMXSMGLfL7z/0Nhfc=; b=odYQeOmhoSJaZaOQDkZ1UrhBJfZZu+PaSP+JeLp+Kvu8mxixJrzqcuavN3+clPFuQA xxMlFsdZ2ivwO0KgTEdwTEtFWWr8iyPqnTITJOEcqgbBf8zUPKWdrORXRThgolSH/qsK 3EkYXexSlVWQqtP5ei13HZJ6nBea/xCLomW+LMCmV3NwWCFx2KsI4+qUgt7U7EyAyrsu +/pu4KFIJu0f45dZct67UPXCMzh5mWjFx0rGHdeh5U25Q71cwdenms3QiGTeOBhJnbsu S98pez5w8sqFsntnlJPDJa/7uUucNacZPiSiZIWoYnmSUoKkzO+J6nUOwdmQLocTB9h3 PPaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692161997; x=1692766797; 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=OcYhewIBBosGgR9bQVpj903irKLMXSMGLfL7z/0Nhfc=; b=eYyHAAZO5K9KL28oVEIzIiERj8ObF5VXI0Nbe2p4s9O60Zr6vUjyheOfZlyJlMUusm Q7o0B6LT45QwPw4UvX+JVmjLcxzI68/imJ5VDUEwecsFREgeceAIbObZLvXIUmIx951E KOax6hl047APQuVnO+mHf8Jeef6aOuXWSFdhj4ewgRsW3bsWXNnisEEaSQY7VIDLurY8 9WxovkCTPOevGkOrJSnmfqRqVO8eDCy/ZC6GGKTTZSF2BKsV8MBpOw0qopyciW6bERqL fDXJGFB53CON4vG6DfDcWNCAYJPArWMoiKLRgU7SqeWsTUTBWNL4tdc1GJ++WhiVs1nn jvXQ== X-Gm-Message-State: AOJu0YyFpF76ptHYJli8LMdX7ZfyjTiRNC0ZQ14yNoLMdH2IakwZEJqh uGoJED+FwHiwJyG45Ox6ugU= X-Google-Smtp-Source: AGHT+IE/5kU9k5zq+yn+/JeHwrEiDHj6R80jeRn1/ETnv/dVwbOqx4z6juBQznULnRJqdZTBK6w5eg== X-Received: by 2002:a05:6a20:8e15:b0:13e:7d3:61d1 with SMTP id y21-20020a056a208e1500b0013e07d361d1mr1377629pzj.12.1692161997252; Tue, 15 Aug 2023 21:59:57 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id 8-20020aa79108000000b00686da0e163bsm10469564pfh.11.2023.08.15.21.59.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Aug 2023 21:59:56 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Q6TYjsqHQVFbvDa5zA2aMDJU" Message-ID: Date: Tue, 15 Aug 2023 22:59:55 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: RISC-V: Added support for CRC. Content-Language: en-US To: Mariam Harutyunyan , gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,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: This is a multi-part message in MIME format. --------------Q6TYjsqHQVFbvDa5zA2aMDJU Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/3/23 13:37, Mariam Harutyunyan via Gcc-patches wrote: > This patch adds CRC support for the RISC-V architecture. It adds internal > functions and built-ins specifically designed to handle CRC computations > efficiently. > > If the target is ZBC, the clmul instruction is used for the CRC code > generation; otherwise, table-based CRC is generated. A table with 256 > elements is used to store precomputed CRCs. > > These CRC calculation algorithms have higher performance than the naive CRC > calculation algorithm. [ ... ] Various comments attached. --------------Q6TYjsqHQVFbvDa5zA2aMDJU Content-Type: text/x-patch; charset=UTF-8; name="comments-on-CRC-backend-support" Content-Disposition: attachment; filename="comments-on-CRC-backend-support" Content-Transfer-Encoding: base64 RnJvbSA5ZDJlOTAyM2MyMjI1MDFhMWQ5NTE5YmVhM2Q1Y2RiZDMyYjVhOTFlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpYW0gQXJ1dHVuaWFuIDxtYXJpYW1hcnV0dW5p YW5AZ21haWwuY29tPgpEYXRlOiBUaHUsIDMgQXVnIDIwMjMgMTU6NTk6NTcgKzA0MDAKU3Vi amVjdDogW1BBVENIXSBSSVNDLVY6IEFkZGVkIHN1cHBvcnQgZm9yIENSQy4KCiAgSWYgdGhl IHRhcmdldCBpcyBaQkMsIHRoZW4gdGhlIGNsbXVsIGluc3RydWN0aW9uIGlzIHVzZWQgZm9y IHRoZSBDUkMgY29kZSBnZW5lcmF0aW9uOwogIG90aGVyd2lzZSwgdGFibGUtYmFzZWQgQ1JD IGlzIGdlbmVyYXRlZC4gQSB0YWJsZSB3aXRoIDI1NiBlbGVtZW50cyBpcyB1c2VkIHRvIHN0 b3JlIHByZWNvbXB1dGVkIENSQ3MuCgogIGdjYy9DaGFuZ2VMb2c6CgkqYnVpbHRpbi10eXBl cy5kZWYgKEJUX0ZOX1VJTlQ4X1VJTlQ4X1VJTlQ4X0NPTlNUX1NJWkUpOiBEZWZpbmUuCgko QlRfRk5fVUlOVDE2X1VJTlQxNl9VSU5UOF9DT05TVF9TSVpFKTogTGlrZXdpc2UuCgkoQlRf Rk5fVUlOVDE2X1VJTlQxNl9VSU5UMTZfQ09OU1RfU0laRSk6IExpa2V3aXNlLgoJKEJUX0ZO X1VJTlQzMl9VSU5UMzJfVUlOVDhfQ09OU1RfU0laRSk6IExpa2V3aXNlLgoJKEJUX0ZOX1VJ TlQzMl9VSU5UMzJfVUlOVDE2X0NPTlNUX1NJWkUpOiBMaWtld2lzZS4KCShCVF9GTl9VSU5U MzJfVUlOVDMyX1VJTlQzMl9DT05TVF9TSVpFKTogTGlrZXdpc2UuCgkoQlRfRk5fVUlOVDY0 X1VJTlQ2NF9VSU5UOF9DT05TVF9TSVpFKTogTGlrZXdpc2UuCgkoQlRfRk5fVUlOVDY0X1VJ TlQ2NF9VSU5UMTZfQ09OU1RfU0laRSk6IExpa2V3aXNlLgoJKEJUX0ZOX1VJTlQ2NF9VSU5U NjRfVUlOVDMyX0NPTlNUX1NJWkUpOiBMaWtld2lzZS4KCShCVF9GTl9VSU5UNjRfVUlOVDY0 X1VJTlQzMl9DT05TVF9TSVpFKTogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmNjIChhc3NvY2lh dGVkX2ludGVybmFsX2ZuKTogSGFuZGxlIEJVSUxUX0lOX0NSQzhfREFUQTgsCglCVUlMVF9J Tl9DUkMxNl9EQVRBOCwgQlVJTFRfSU5fQ1JDMTZfREFUQTE2LAoJQlVJTFRfSU5fQ1JDMzJf REFUQTgsIEJVSUxUX0lOX0NSQzMyX0RBVEExNiwgQlVJTFRfSU5fQ1JDMzJfREFUQTMyLAoJ QlVJTFRfSU5fQ1JDNjRfREFUQTgsIEJVSUxUX0lOX0NSQzY0X0RBVEExNiwgQlVJTFRfSU5f Q1JDNjRfREFUQTMyLAoJQlVJTFRfSU5fQ1JDNjRfREFUQTY0LgoJKiBidWlsdGlucy5kZWYg KEJVSUxUX0lOX0NSQzhfREFUQTgpOiBOZXcgYnVpbHRpbi4KCShCVUlMVF9JTl9DUkMxNl9E QVRBOCk6IExpa2V3aXNlLgoJKEJVSUxUX0lOX0NSQzE2X0RBVEExNik6IExpa2V3aXNlLgoJ KEJVSUxUX0lOX0NSQzMyX0RBVEE4KTogTGlrZXdpc2UuCgkoQlVJTFRfSU5fQ1JDMzJfREFU QTE2KTogTGlrZXdpc2UuCgkoQlVJTFRfSU5fQ1JDMzJfREFUQTMyKTogTGlrZXdpc2UuCgko QlVJTFRfSU5fQ1JDNjRfREFUQTgpOiBMaWtld2lzZS4KCShCVUlMVF9JTl9DUkM2NF9EQVRB MTYpOiBMaWtld2lzZS4KCShCVUlMVF9JTl9DUkM2NF9EQVRBMzIpOiBMaWtld2lzZS4KCShC VUlMVF9JTl9DUkM2NF9EQVRBNjQpOiBMaWtld2lzZS4KCSogY29uZmlnL3Jpc2N2L2JpdG1h bmlwLm1kIChjcmM8QU5ZSTI6bW9kZT48QU5ZSTptb2RlPjQpOiBOZXcgZXhwYW5kZXIuCgkq IGNvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaCAoZXhwYW5kX2NyY190YWJsZV9iYXNlZCk6 IERlY2xhcmUuCgkoZXhwYW5kX2NyY191c2luZ19jbG11bCk6IExpa2V3aXNlLgoJKiBjb25m aWcvcmlzY3YvcmlzY3YuY2MgKGdmMm5fcG9seV9sb25nX2Rpdl9xdW90aWVudCk6IE5ldyBm dW5jdGlvbi4KCShnZW5lcmF0ZV9jcmMpOiBMaWtld2lzZS4KCShnZW5lcmF0ZV9jcmNfdGFi bGUpOiBMaWtld2lzZS4KCShleHBhbmRfY3JjX3RhYmxlX2Jhc2VkKTogTGlrZXdpc2UuCgko ZXhwYW5kX2NyY191c2luZ19jbG11bCk6IExpa2V3aXNlLgoJKiBjb25maWcvcmlzY3Yvcmlz Y3YubWQgKFVOU1BFQ19DUkMpOiBOZXcgdW5zcGVjIGZvciBDUkMuCgkqIGludGVybmFsLWZu LmNjIChjcmNfZGlyZWN0KTogRGVmaW5lLgoJKGV4cGFuZF9jcmNfb3B0YWJfZm4pOiBOZXcg ZnVuY3Rpb24uCgkoZGlyZWN0X2NyY19vcHRhYl9zdXBwb3J0ZWRfcCk6IERlZmluZS4KCSog aW50ZXJuYWwtZm4uZGVmIChDUkMpOiBOZXcgaW50ZXJuYWwgb3B0YWIgZnVuY3Rpb24uCgkq IG9wdGFicy5kZWYgKGNyY19vcHRhYik6IE5ldyBvcHRhYi4KCiAgZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6CgkqIGdjYy50YXJnZXQvcmlzY3YvY3JjLWJ1aWx0aW4tdGFibGUtdGFyZ2V0 MzIuYzogTmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvcmlzY3YvY3JjLWJ1aWx0aW4tdGFibGUt dGFyZ2V0NjQuYzogTmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvcmlzY3YvY3JjLWJ1aWx0aW4t emJjMzIuYzogTmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvcmlzY3YvY3JjLWJ1aWx0aW4temJj NjQuYzogTmV3IHRlc3QuCi0tLQpkaWZmIC0tZ2l0IGEvZ2NjL0NoYW5nZUxvZyBiL2djYy9D aGFuZ2VMb2cKaW5kZXggMmVhYjQ2NmE5ZjguLjc0OGQ4YmUzODRiIDEwMDY0NAotLS0gYS9n Y2MvQ2hhbmdlTG9nCisrKyBiL2djYy9DaGFuZ2VMb2cKSW4gZ2VuZXJhbCwgdGhlIENoYW5n ZUxvZyBlbnRyeSBpcyBqdXN0IHNlbnQgbGlrZSB5b3UndmUgZG9uZSBhYm92ZSBhbmQKbm90 IGluY2x1ZGVkIGFzIGEgZGlmZi4KCgpkaWZmIC0tZ2l0IGEvZ2NjL2J1aWx0aW4tdHlwZXMu ZGVmIGIvZ2NjL2J1aWx0aW4tdHlwZXMuZGVmCmluZGV4IDQzMzgxYmM4OTQ5Li5lMzM4Mzdj MjdkMCAxMDA2NDQKLS0tIGEvZ2NjL2J1aWx0aW4tdHlwZXMuZGVmCisrKyBiL2djYy9idWls dGluLXR5cGVzLmRlZgpAQCAtODI5LDYgKzgyOSwyNiBAQCBERUZfRlVOQ1RJT05fVFlQRV8z IChCVF9GTl9QVFJfU0laRV9TSVpFX1BUUk1PREUsCiAJCSAgICAgQlRfUFRSLCBCVF9TSVpF LCBCVF9TSVpFLCBCVF9QVFJNT0RFKQogREVGX0ZVTkNUSU9OX1RZUEVfMyAoQlRfRk5fVk9J RF9QVFJfVUlOVDhfUFRSTU9ERSwgQlRfVk9JRCwgQlRfUFRSLCBCVF9VSU5UOCwKIAkJICAg ICBCVF9QVFJNT0RFKQorREVGX0ZVTkNUSU9OX1RZUEVfMyAoQlRfRk5fVUlOVDhfVUlOVDhf VUlOVDhfQ09OU1RfU0laRSwgQlRfVUlOVDgsIEJUX1VJTlQ4LAorCQkgICAgIEJUX1VJTlQ4 LCBCVF9DT05TVF9TSVpFKQpbIC4uLiBdClByZXN1bWFibHkgdGhlIHJlYXNvbiB3ZSBuZWVk IHRvIG1hbnkgdmFyaWFudHMgaXMgZHVlIHRvIHRoZSBkZXNpcmUgdG8Kc3VwcG9ydCB2YXJp b3VzIHR5cGVzIGZvciB0aGUgaW5wdXRzIGFuZCBvdXRwdXRzPwoKCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9iaXRtYW5p cC5tZAppbmRleCBjNDJlN2I4OTBkYi4uNGM4OTYzMDMyNDIgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvcmlzY3YvYml0bWFuaXAubWQKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9iaXRtYW5p cC5tZApAQCAtODU2LDMgKzg1NiwzOCBAQAogICAiVEFSR0VUX1pCQyIKICAgImNsbXVsclx0 JTAsJTEsJTIiCiAgIFsoc2V0X2F0dHIgInR5cGUiICJjbG11bCIpXSkKKworOzsgSXRlcmF0 b3IgZm9yIGhhcmR3YXJlLXN1cHBvcnRlZCBpbnRlZ2VyIG1vZGVzLCBzYW1lIGFzIEFOWUkK KyhkZWZpbmVfbW9kZV9pdGVyYXRvciBBTllJMiBbUUkgSEkgU0kgKERJICJUQVJHRVRfNjRC SVQiKV0pCisKKzs7IENSQyA4LCAxNiwgMzIsICg2NCBmb3IgVEFSR0VUXzY0KQorKGRlZmlu ZV9leHBhbmQgImNyYzxBTllJMjptb2RlPjxBTllJOm1vZGU+NCIKKwk7OyByZXR1cm4gdmFs dWUgKGNhbGN1bGF0ZWQgQ1JDKQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpBTllJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9ciIpCisJCSAgICAgIDs7IGluaXRpYWwgQ1JDCisJKHVuc3Bl YzpBTllJIFsobWF0Y2hfb3BlcmFuZDpBTllJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikK KwkJICAgICAgOzsgZGF0YQorCQkgICAgICAobWF0Y2hfb3BlcmFuZDpBTllJMiAyICJyZWdp c3Rlcl9vcGVyYW5kIiAiciIpCisJCSAgICAgIDs7IHBvbHlub21pYWwKKwkJICAgICAgKG1h dGNoX29wZXJhbmQ6QU5ZSSAzKV0KKwkJICAgICAgVU5TUEVDX0NSQykpXQpJJ20gbm90IHJl YWwgY29tZm9ydGFibGUgd2l0aCBkaXJlY3RseSBzdXBwb3J0aW5nIHN1Yi13b3JkIHNpemVz IGZvciB0aGUKb3V0cHV0IG9wZXJhbmQuICBUaGUgdmFzdCBtYWpvcml0eSBvZiBpbnNucyBv biB0aGUgcmlzYy12IHBvcnQgaGF2ZQpvdXRwdXRzIHRoYXQgdXNlIGVpdGhlciB0aGUgWCBp dGVyYXRvciAod2hpY2ggbWFwcyB0byBlaXRoZXIgU0kgb3IgREkKbW9kZSBmb3IgcnYzMiBh bmQgcnY2NCByZXNwZWN0aXZlbHkpIG9yIHRoZXkgdXNlIHRoZSBHUFIgaXRlcmF0b3IuICBJ CmRvbid0IHRoaW5rIG1hbnkgdXMgQU5ZSS4KCldoaWNoIHVsdGltYXRlbHkgbWFrZXMgc2Vu c2Ugc2luY2Ugb3BlcmF0aW9ucyBhY3R1YWxseSB3cml0ZSBYIG1vZGUKYml0cy4KClByZXN1 bWFibHkgdGhlIGdvYWwgaGVyZSBpcyB0byBjYXB0dXJlIGNhc2VzIHdoZXJlIHRoZSByZXN1 bHRhbnQgQ1JDCnZhbHVlIGlzIGEgc3ViLXdvcmQgc2l6ZS4gIAoKCgoKKyIiCit7CisgIC8q IFRPRE86IFdlIG9ubHkgc3VwcG9ydCBjYXNlcyB3aGVyZSB0aGUgZGF0YSBzaXplIGlzIG5v dCBncmVhdGVyCisgICAgIHRoYW4gdGhlIENSQyBzaXplLiAgKi8KKyAgaWYgKEdFVF9NT0RF IChvcGVyYW5kc1swXSkgPj0gR0VUX01PREUgKG9wZXJhbmRzWzJdKSkKKyAgICB7CisgICAg ICAvKiBJZiB3ZSBoYXZlIHRoZSBaQkMgZXh0ZW5zaW9uIChpZSwgY2xtdWwpIGFuZAorCSBp dCBpcyBwb3NzaWJsZSB0byBzdG9yZSB0aGUgcXVvdGllbnQgd2l0aGluIGEgc2luZ2xlIHZh cmlhYmxlCisJIChFLmcuICBDUkM2NCdzIHF1b3RpZW50IG1heSBuZWVkIDY1IGJpdHMsCisJ ICB3ZSBjYW4ndCBrZWVwIGl0IGluIDY0IGJpdCB2YXJpYWJsZS4pCisJIHRoZW4gdXNlIGNs bXVsIGluc3RydWN0aW9uIHRvIGltcGxlbWVudCB0aGUgQ1JDLAorCSBvdGhlcndpc2UgZ2Vu ZXJhdGUgdGFibGUtYmFzZWQgQ1JDLiAgKi8KKyAgICAgIGlmIChUQVJHRVRfWkJDICYmICgo VEFSR0VUXzY0QklUICYmIEdFVF9NT0RFIChvcGVyYW5kc1swXSkgIT0gREltb2RlKQorCQkJ fHwgKCFUQVJHRVRfNjRCSVQgJiYgR0VUX01PREUgKG9wZXJhbmRzWzBdKSA8IFNJbW9kZSkp KQpGb3JtYXR0aW5nIE5JVC4gIFdlJ2QgdGVuZCB0byBwcmVmZXIgdG8gd3JpdGUgdGhpcyBh cwoKaWYgKFRBUkdFVF9aQkMKICAgICYmICgoVEFSR0VUXzY0QklUICYmIEdFVF9NT0RFIChv cGVyYW5kc1swXSkgIT0gREltb2RlKQogICAgICAgIHx8ICghVEFSR0VUXzY0QklUICYmIEdF VF9NT0RFIChvcGVyYW5kc1swXSkgPCBTSW1vZGUpKSkKCkJ1dCBJIHRoaW5rIHRoZSBjb25k aXRpb24geW91J3JlIHJlYWxseSBsb29raW5nIGZvciBpcwppZiAoVEFSR0VUX1pCQyAmJiBH RVRfTU9ERSAob3BlcmFuZHNbMF0pID09IHdvcmRfbW9kZSkKCk1lYW5pbmcgdGhlIG91dHB1 dCBpcyAzMmJpdHMgZm9yIHJ2MzIgb3IgNjRiaXRzIGZvciBydjY0LiAgSWYgd2UgZml4IHRo ZQptb2RlIGluIHRoZSBleHBhbmRlciBwYXR0ZXJuIHRvIHVzZSBYLCB0aGVuIHRoaXMgY29u ZGl0aW9uIHdvdWxkCnNpbXBsaWZ5IHRvIGp1c3QgKFRBUkdFVF9aQkMpIHNpbmNlIHRoZSBv dXRwdXQgd291bGQgYmUga25vd24gdG8gYmUgd29yZApzaXplZCBhbHJlYWR5LgoKCgoKCgor CWV4cGFuZF9jcmNfdXNpbmdfY2xtdWwgKG9wZXJhbmRzKTsKKyAgICAgIGVsc2UKKwlleHBh bmRfY3JjX3RhYmxlX2Jhc2VkIChvcGVyYW5kcyk7CisgICAgfQorICBET05FOworfSkKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaAppbmRl eCBjOTUyMGY2ODllMi4uMzViZjE5ODA2ZGYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3Mu aApAQCAtMTMxLDYgKzEzMSw4IEBAIGV4dGVybiBib29sIHJpc2N2X3NoYW10X21hdGNoZXNf bWFza19wIChpbnQsIEhPU1RfV0lERV9JTlQpOwogZXh0ZXJuIHZvaWQgcmlzY3Zfc3Vid29y ZF9hZGRyZXNzIChydHgsIHJ0eCAqLCBydHggKiwgcnR4ICosIHJ0eCAqKTsKIGV4dGVybiB2 b2lkIHJpc2N2X2xzaGlmdF9zdWJ3b3JkIChtYWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgg Kik7CiBleHRlcm4gZW51bSBtZW1tb2RlbCByaXNjdl91bmlvbl9tZW1tb2RlbHMgKGVudW0g bWVtbW9kZWwsIGVudW0gbWVtbW9kZWwpOworZXh0ZXJuIHZvaWQgZXhwYW5kX2NyY190YWJs ZV9iYXNlZCAocnR4ICopOworZXh0ZXJuIHZvaWQgZXhwYW5kX2NyY191c2luZ19jbG11bCAo cnR4ICopOwpJIHdvbmRlciBpZiBhbGwgdGhlIHRhYmxlIGJhc2VkIGdlbmVyYXRpb24gc3Vw cG9ydCBjb2RlIHNob3VsZCBtb3ZlIGludG8gYQpnZW5lcmljIGZpbGUgc28gdGhhdCBpdCBj b3VsZCBiZSB1c2VkIGJ5IG90aGVyIHRhcmdldHMuICAgIEkgZG9uJ3Qgb2ZmaGFuZApzZWUg YW55dGhpbmcgaW4gdGhlcmUgdGhhdCBpcyBSSVNDLVYgc3BlY2lmaWMuCgoKCiAKIC8qIFJv dXRpbmVzIGltcGxlbWVudGVkIGluIHJpc2N2LWMuY2MuICAqLwogdm9pZCByaXNjdl9jcHVf Y3BwX2J1aWx0aW5zIChjcHBfcmVhZGVyICopOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MKaW5kZXggMzMyZmE3 MjBmMDEuLmUxNTg1MDkxMGEyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LmNjCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MKKy8qIEdlbmVyYXRlcyBDUkMg bG9va3VwIHRhYmxlIGJ5IGNhbGN1bGF0aW5nIENSQyBmb3IgYWxsIHBvc3NpYmxlCisgICA4 LWJpdCBkYXRhIHZhbHVlcy4gIFRoZSB0YWJsZSBpcyBzdG9yZWQgd2l0aCBhIHNwZWNpZmlj IG5hbWUgaW4gdGhlIHJlYWQtb25seQorICAgZGF0YSBzZWN0aW9uLiAgKi8KKworcnR4Citn ZW5lcmF0ZV9jcmNfdGFibGUgKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgcG9seW5vbSwgdW5z aWduZWQgY3JjX2JpdHMpCit7CisgIGdjY19hc3NlcnQgKGNyY19iaXRzIDw9IDY0KTsKKyAg RklMRSAqb3V0ID0gYXNtX291dF9maWxlOworCisgIC8qIEJ1ZiBzaXplIC0gMzMgbGV0dGVy cworICAgICArIDE4IGZvciBudW1iZXJzICgyIGZvciBjcmMgYml0IHNpemUgKyAyIGZvciAw eCArIDE2IGZvciA2NCBiaXQgcG9seW5vbWlhbCkKKyAgICAgKyAxIGZvciBcMC4gICovCisg IGNoYXIgYnVmWzMzICsgMjAgKyAxXTsKKyAgc3ByaW50ZiAoYnVmLCAiY3JjX3RhYmxlX2Zv cl8ldV9iaXRfY3JjXyVsbHhfcG9seW5vbWlhbCIsIGNyY19iaXRzLCBwb2x5bm9tKTsKKyAg dHJlZSBpZCA9IG1heWJlX2dldF9pZGVudGlmaWVyIChidWYpOworICBpZiAoaWQpCisgICAg cmV0dXJuIGdlbl9ydHhfU1lNQk9MX1JFRiAoUG1vZGUsIElERU5USUZJRVJfUE9JTlRFUiAo aWQpKTsKKyAgaWQgPSBnZXRfaWRlbnRpZmllciAoYnVmKTsKU28gSSB0aGluayB3ZSBuZWVk IHRvIGJlIG1vcmUgY2FyZWZ1bCBoZXJlIHdpdGggbmFtZXNwYWNlIHBvbGx1dGlvbi4KSWRl YWxseSBJIHRoaW5rIHdlJ2Qgd2FudCB0aGlzIHN5bWJvbCB0byBiZSBzdGF0aWMgYW5kIGNv bnN0LiAKCgoKCisgIHJ0eCB0YWIgPSBnZW5fcnR4X1NZTUJPTF9SRUYgKFBtb2RlLCBJREVO VElGSUVSX1BPSU5URVIgKGlkKSk7CisKKyAgLyogQ3JlYXRlIGEgdGFibGUgd2l0aCAyNTYg ZWxlbWVudHMuICAqLworICB1bnNpZ25lZCB0YWJsZV9lbGVtZW50c19uID0gMHgxMDA7Cisg IGNoYXIgdmFsX2FsaWduX29wWzddOworICBpZiAoY3JjX2JpdHMgPD0gOCkKKyAgICBzcHJp bnRmICh2YWxfYWxpZ25fb3AsICIuYnl0ZSIpOworICBlbHNlIGlmIChjcmNfYml0cyA8PSAx NikKKyAgICBzcHJpbnRmICh2YWxfYWxpZ25fb3AsICIuaGFsZiIpOworICBlbHNlIGlmIChj cmNfYml0cyA8PSAzMikKKyAgICBzcHJpbnRmICh2YWxfYWxpZ25fb3AsICIud29yZCIpOwor ICBlbHNlCisgICAgc3ByaW50ZiAodmFsX2FsaWduX29wLCAiLmR3b3JkIik7ClRoZXJlIGFy ZSBzdGFuZGFyZCB0YXJnZXQgaG9va3MgZm9yIGVtaXR0aW5nIGRhdGEgYW5kIGEgcm91dGlu ZSB0aGF0CmdpdmVuIHRoZSBzaXplIHRoZSBzaXplIG9mIGFuIG9iamVjdCB3aWxsIHJldHVy biB0aGUgcmlnaHQgYXNzZW1ibGVyCmRpcmVjdGl2ZS4gIExvb2sgZm9yIGludGVnZXJfYXNt X29wLgoKTW9yZSBnZW5lcmFsbHksIGxvb2sgaW4gdmFyYXNtLmNjIGZvciB2YXJpb3VzIHJv dXRpbmVzIGRlYWxpbmcgd2l0aApnZW5lcmF0aW5nIGFzc2VtYmxlciBvdXRwdXQuCgoKCgor CisgIC8qIFdyaXRlIGluIHJlYWQgb25seSBkYXRhIHNlY3Rpb24uICAqLwpUaGVyZSBhcmUg YWxzbyBzdGFuZGFyZCB3YXlzIHRvIHN3aXRjaCBzZWN0aW9ucyBhbmQgc3RhbmRhcmQgc2Vj dGlvbgpuYW1lcyBiYXNlZCBvbiB0aGUgdGFyZ2V0LiAgQWdhaW4sIHZhcmFzbS5jYyB3aWxs IGJlIHRoZSByaWdodCBwbGFjZSB0bwp3YW5kZXIuIAoKTm90ZSB0aGF0IGlmIHlvdSB3ZXJl IHRvIGNyZWF0ZSBhIERFQ0wgbm9kZSBmb3IgdGhlIHRhYmxlIGFuZCBhdHRhY2ggYQpzdWl0 YWJsZSBERUNMX0lOSVRJQUwgdG8gaXQgd2l0aCBpdHMgaW5pdGlhbGl6YXRpb24gZGF0YSBJ IHRoaW5rIG1vc3QsCmlmIG5vdCBhbGwgb2YgdGhlIGFzc2VtYmx5IG91dHB1dCBjb21wbGV4 aXR5IHdvdWxkIGJlIGhhbmRsZWQgZm9yIHlvdQphdXRvbWF0aWNhbGx5LgoKSWYgdGhhdCBp cyB1bndpZWxkbHkgdG8gaW1wbGVtZW50LCB0aGVuIHlvdSdsbCBkZWZpbml0ZWx5IHdhbnQg dG8gYmUKdXNpbmcgdmFyaW91cyBoZWxwZXJzIGZyb20gdmFyYXNtLmNjLgoKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBHRVRfTU9ERV9TSVpFIChkYXRhX21vZGUpLnRvX2NvbnN0YW50ICgp OyBpKyspCisgICAgeworICAgICAgLyogY3JjID4+IChiaXRfc2l6ZSAtIDgpLiAgKi8KKyAg ICAgIHJ0eCBvcDEgPSBnZW5fcnR4X0FTSElGVFJUIChjcmNfbW9kZSwgY3JjLAorCQkJCSAg R0VOX0lOVCAobW9kZV9iaXRfc2l6ZSAtIDgpKTsKSW4gZ2VuZXJhbCwgSSdkIHN1Z2dlc3Qg Z2VuX2ludF9tb2RlIHJhdGhlciB0aGFuIEdFTl9JTlQuCgoKKyAgICAgIC8qIGNyY19tb2Rl IGlzIHRoZSByZXR1cm4gdmFsdWUncyBtb2RlLAorCWRlcGVuZHMgb24gQ1JDIGZ1bmN0aW9u J3MgQ1JDIHNpemUuICAqLworICAgICAgaWYgKGNyY19tb2RlICE9IHdvcmRfbW9kZSkKKwlp eCA9IGdlbl9ydHhfWkVST19FWFRFTkQgKHdvcmRfbW9kZSwgaXgpOworICAgICAgaXggPSBn ZW5fcnR4X0FTSElGVCAod29yZF9tb2RlLCBpeCwgR0VOX0lOVCAoZXhhY3RfbG9nMiAoCisJ ICBHRVRfTU9ERV9TSVpFIChjcmNfbW9kZSkudG9fY29uc3RhbnQgKCkpKSk7CisgICAgICBp eCA9IGZvcmNlX3JlZyAod29yZF9tb2RlLCBpeCk7CkhtbSwgSSdtIG5vdCBzdXJlIHdlIGNh biBkZXBlbmQgb24gdGhlIHRhcmdldCBhY3R1YWxseSBzdXBwb3J0aW5nClpFUk9fRVhURU5E LiAgU29tZSB0YXJnZXRzIHVzZSBBTkQgd2l0aCBzdWl0YWJsZSBpbW1lZGlhdGVzLiAgU29t ZSBtaWdodAp1c2Ugc2hpZnRzLCBldGMuCgoKKworICAgICAgLyogY3JjX3RhYmxlWyhjcmMg Pj4gKGJpdF9zaXplIC0gOCkpIF4gZGF0YV84Yml0XSAgKi8KKyAgICAgIHJ0eCB0YWJfZWwg PSBnZW5fcnR4X01FTSAoY3JjX21vZGUsIGdlbl9ydHhfUExVUyAod29yZF9tb2RlLCBpeCwg dGFiKSk7ClNpbWlsYXJseSwgZG9uJ3Qgd2UgaGF2ZSB0byB3b3JyeSBhYm91dCB3aGV0aGVy IG9yIG5vdCB0aGUgcmVzdWx0aW5nCmFkZHJlc3MgaXMgYWN0dWFsbHkgdmFsaWQ/ICBUaGV5 IHByb2JhYmx5IGFsd2F5cyBhcmUgb24gUklTQy1WIGFzIEkKZG9uJ3QgdGhpbmsgVEFCIHdp bGwgcmVxdWlyZSBtb3JlIHRoYW4gMTIgYml0cyBvZiBvZmZzZXRzIHRvIGFkZHJlc3MuCkJ1 dCBzb21lIHRhcmdldHMgY2FuIG9ubHkgZG8gc2ltcGxlIHJlZ2lzdGVyIGluZGlyZWN0IGFk ZHJlc3NpbmcuCgoKKworICAgICAgLyogKGNyYyA8PCA4KSAgKi8KKyAgICAgIHJ0eCBoaWdo ID0gZ2VuX3J0eF9BU0hJRlQgKGNyY19tb2RlLCBjcmMsIEdFTl9JTlQgKDgpKTsKQW5kIGhl cmUgSSBkb24ndCB0aGluayB3ZSBjYW4gbmVjZXNzYXJpbHkgZGVwZW5kIG9uIHRoZSB0YXJn ZXQKc3VwcG9ydGluZyBzaGlmdHMgYnkgYSBjb25zdGFudCBhbW91bnQuICBUaGVyZSdzIGNl cnRhaW5seSB0YXJnZXRzIG91dAp0aGVyZSB0aGF0IGNhbiBvbmx5IHNoaWZ0IG9uZSBvciB0 d28gcG9zaXRpb25zIGF0IGEgdGltZS4gIFRob3NlIHRhcmdldHMKdHlwaWNhbGx5IGxpZSBh bmQgY2xhaW0gdGhleSBoYXZlIG1vcmUgZ2VuZXJhbCBzaGlmdGluZyBjYXBhYmlsaXRpZXMs CmJ1dCB0aGUgcG9pbnQgaXMgd2UgbmVlZCB0byBiZSBtdWNoIG1vcmUgY2FyZWZ1bCBhYm91 dCB0aGUgUlRMIHdlCmdlbmVyYXRlLgoKCisgICAgICBpZiAoY3JjX21vZGUgIT0gd29yZF9t b2RlKQorCSBoaWdoID0gZm9yY2VfcmVnIChjcmNfbW9kZSwKKwkJCSAgIGdlbl9ydHhfQU5E IChjcmNfbW9kZSwgaGlnaCwKKwkJCQkJR0VOX0lOVCAoR0VUX01PREVfTUFTSyAoY3JjX21v ZGUpKSkpOwpTaW1pbGFybHkgaGVyZSwgc29tZSB0YXJnZXRzIG1heSBub3Qgc3VwcG9ydCBB TkQgd2l0aCBpbW1lZGlhdGUgb3IgbWF5Cm5vdCBoYXZlIGVub3VnaCBiaXRzIHRvIGhhbmRs ZSBhbGwgdGhlIGltbWVkaWF0ZXMgdGhhdCBjYW4gYXJpc2UgaGVyZS4KCisgICAgICAvKiBj cmMgPSAoY3JjIDw8IDgpIF4gY3JjX3RhYmxlWyhjcmMgPj4gKGJpdF9zaXplIC0gOCkpIF4g ZGF0YV84Yml0XTsgICovCisgICAgICBjcmMgPSBmb3JjZV9yZWcgKGNyY19tb2RlLCBnZW5f cnR4X1hPUiAoY3JjX21vZGUsIHRhYl9lbCwgaGlnaCkpOworICAgIH0KKyAgcmlzY3ZfZW1p dF9tb3ZlIChvcGVyYW5kc1swXSwgY3JjKTsKQ1JDIGlzIGEgUkVHLiAgSXNuJ3Qgb3BlcmFu ZHNbMF0gYWxzbyBhIFJFRz8gIENhbiB3ZSBqdXN0IHVzZQplbWl0X21vdmVfaW5zbiBoZXJl IHJhdGhlciB0aGFuIHJpc2N2X2VtaXRfbW92ZT8gIENvbmNlcHR1YWxseSB0aGlzIGNvZGUK c2hvdWxkIGUgdGFyZ2V0IGluZGVwZW5kZW50LCBzbyBlbWJlZGRpbmcgcmlzYy12IGlzbXMg aW4gaGVyZSB3aWxsIG1ha2UKaXQgaGFyZGVyIHRvIHVzZSBvbiBvdGhlciB0YXJnZXRzLgoK QEAgLTM5OTYsNiArNDAyOCw3IEBAIG11bHRpX3ZlY3Rvcl9vcHRhYl9zdXBwb3J0ZWRfcCAo Y29udmVydF9vcHRhYiBvcHRhYiwgdHJlZV9wYWlyIHR5cGVzLAogI2RlZmluZSBkaXJlY3Rf Y29uZF9sZW5fdW5hcnlfb3B0YWJfc3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRl ZF9wCiAjZGVmaW5lIGRpcmVjdF9jb25kX2xlbl9iaW5hcnlfb3B0YWJfc3VwcG9ydGVkX3Ag ZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wCiAjZGVmaW5lIGRpcmVjdF9jb25kX2xlbl90ZXJu YXJ5X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcAorI2RlZmlu ZSBkaXJlY3RfY3JjX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3VwcG9ydGVk X3AKU28gZGlkIHdlIGV2ZXIgZmlndXJlIG91dCB3aHkgd2UncmUgdHJlYXRpbmcgdGhlIENS QyBvcHRhYiBhcyBhCmNvbnZlcnNpb24gb3B0YWI/Cgo= --------------Q6TYjsqHQVFbvDa5zA2aMDJU--