From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 0B0D83858C83 for ; Fri, 28 Apr 2023 18:50:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0B0D83858C83 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-x42a.google.com with SMTP id d2e1a72fcca58-63b50a02bffso294173b3a.2 for ; Fri, 28 Apr 2023 11:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682707820; x=1685299820; 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=hlRQ/kZ8T9QprMvRyl5Dw1qIsKS86sm1oi1ReiaWJXo=; b=Mt8cmAPq3ea5cvd1an+M2WykG5E5Yqd5YvqPNUSdUwD4haxDNMoSMA7J6JkC3alhSM C6+ZR5CwYM3yOGTJTqwkgFbEUScOPapb/77K7L9z6PthIw3VF2LnGoLVoLOA0ar4OAZt fv1QVi4R3siGvS5dFs2lQqwsIF1WRe2hjdb3dhaG4V/mhXAk1jYd1N0qZ57m/+ir0Nhf N0DIxSwvolq4N7xWWLvDXwLY0pZCYbyiWUSrZ86SshMs/IHP/ec6Lb02jjRNheudf411 OFOMn0ah+I5o1k0/72LdN5WjymJBtd/h6d3GGfCn60snF8kTkEkjudtuuWcq2X+Yv3kq miQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682707820; x=1685299820; 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=hlRQ/kZ8T9QprMvRyl5Dw1qIsKS86sm1oi1ReiaWJXo=; b=JDIMUAx9vgNoqWxjaffKFJiY8DV8TDUW+PwLYvr+VwQcsPpF9vRPqOUC0YTStbqQi1 jSiWpwIJR9l+gTmkQQJm0hyLxinPV6uvXNy5WXQCyamf4CVOM7nYq2egPI7xG5oJi8RZ 6y6VZu3caR/FEbLFNbE38gNwXoF6ty3HcUzrcc1YroxKgpxSsq9HmtUf/jMk+FK8AzL+ IAcIy5zkzmUzNCm1d4d+6FQSlhl4blNRX6I5AOZM1JNol6ue9nOeOjheMOdb9B2nkPr9 iRF5q8UWwyAiVWzhLRLFUbNxoCLlOJayNycg5Min09KqAfWLuwM8Karz2ipn6du3nVqf nRkA== X-Gm-Message-State: AC+VfDzHNgYOzfcvFVHV6GBdeLydV4NLk8yK1lJuDhJU+2qu8ExtaBeI eWqpI2N9WV77SqjGSAcrXHA= X-Google-Smtp-Source: ACHHUZ5c6db09B9dSwCe33qSBbGiPcbV3VCFTi36MIWA37m9aJZLeduw3D4ntrcK9aPRDbwkQNvUjQ== X-Received: by 2002:a05:6a00:18a6:b0:63b:854e:8459 with SMTP id x38-20020a056a0018a600b0063b854e8459mr9181443pfh.31.1682707819677; Fri, 28 Apr 2023 11:50:19 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::99f? ([2601:681:8600:13d0::99f]) by smtp.gmail.com with ESMTPSA id fd22-20020a056a002e9600b0063b6e3e5a39sm15561174pfb.52.2023.04.28.11.50.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Apr 2023 11:50:18 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------NPSNtbhLg4XKkDF9xXI0soh1" Message-ID: Date: Fri, 28 Apr 2023 12:50:17 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: RISC-V: Added support clmul[r,h] instructions for Zbc extension. Content-Language: en-US To: Karen Sargsyan , gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: X-Spam-Status: No, score=-9.3 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,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. --------------NPSNtbhLg4XKkDF9xXI0soh1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 4/27/23 08:29, Karen Sargsyan via Gcc-patches wrote: > clmul[h] instructions were added only for the ZBKC extension. > This patch includes them in the ZBC extension too. > Besides, added support of 'clmulr' instructions for ZBC extension. > > gcc/ChangeLog: > > * config/riscv/bitmanip.md: Added clmulr instruction. > * config/riscv/riscv-builtins.cc (AVAIL): Add new. > * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type. > * config/riscv/riscv-cmo.def: Added built-in function for clmulr. > * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md. > * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in > functions to riscv-cmo.def. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/zbc32.c: New test. > * gcc.target/riscv/zbc64.c: New test. THanks. I made a couple of minor changes. Specifically rather than using the "bitmanip" type, I added a "clmul" type. These instructions are typically not going to be single cycle and thus uarchs probably want to schedule them differently than a generic bitmanip instruction. I also added the clmul type to the generic pipeline desription, routing into the generic_imul unit which seemed like the best fit. Attached is the actual patch I committed. Jeff --------------NPSNtbhLg4XKkDF9xXI0soh1 Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IGQ5ZGY0NWE2NmIyYzhmNTQzMTA2YmUwYTIzODdiYmU2MTk1YjAwYTYKQXV0aG9y OiBLYXJlbiBTYXJnc3lhbiA8a2FyZW4xOTk5NDExQGdtYWlsLmNvbT4KRGF0ZTogICBGcmkg QXByIDI4IDEyOjQ1OjM0IDIwMjMgLTA2MDAKCiAgICBSSVNDLVY6IEFkZGVkIHN1cHBvcnQg Y2xtdWxbcixoXSBpbnN0cnVjdGlvbnMgZm9yIFpiYyBleHRlbnNpb24uCiAgICAKICAgIGNs bXVsW2hdIGluc3RydWN0aW9ucyB3ZXJlIGFkZGVkIG9ubHkgZm9yIHRoZSBaQktDIGV4dGVu c2lvbi4KICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGhlbSBpbiB0aGUgWkJDIGV4dGVuc2lv biB0b28uCiAgICBCZXNpZGVzLCBhZGRlZCBzdXBwb3J0IG9mICdjbG11bHInIGluc3RydWN0 aW9ucyBmb3IgWkJDIGV4dGVuc2lvbi4KICAgIAogICAgZ2NjL0NoYW5nZUxvZzoKICAgIAog ICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9iaXRtYW5pcC5tZDogQWRkZWQgY2xtdWxyIGlu c3RydWN0aW9uLgogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1idWlsdGlucy5j YyAoQVZBSUwpOiBBZGQgbmV3LgogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5t ZDogKFVOU1BFQ19DTE1VTFIpOiBBZGQgbmV3IHVuc3BlYyB0eXBlLgogICAgICAgICAgICAo dHlwZSk6IEFkZCBjbG11bAogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1jbW8u ZGVmOiBBZGRlZCBidWlsdC1pbiBmdW5jdGlvbiBmb3IgY2xtdWxyLgogICAgICAgICAgICAq IGNvbmZpZy9yaXNjdi9jcnlwdG8ubWQ6IE1vdmUgY2xtdWxbaF0gaW5zdHJ1Y3Rpb25zIHRv IGJpdG1hbmlwLm1kLgogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1zY2FsYXIt Y3J5cHRvLmRlZjogTW92ZSBjbG11bFtoXSBidWlsdC1pbgogICAgICAgICAgICBmdW5jdGlv bnMgdG8gcmlzY3YtY21vLmRlZi4KICAgICAgICAgICAgKiBjb25maWcvcmlzY3YvZ2VuZXJp Yy5tZDogQWRkIGNsbXVsIHRvIGxpc3Qgb2YgaW5zdHJ1Y3Rpb25zCiAgICAgICAgICAgIHVz aW5nIHRoZSBnZW5lcmljX2ltdWwgcmVzZXJ2YXRpb24uCiAgICAKICAgIGdjYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nOgogICAgCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96YmMz Mi5jOiBOZXcgdGVzdC4KICAgICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3piYzY0LmM6 IE5ldyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvYml0bWFuaXAubWQg Yi9nY2MvY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1kCmluZGV4IDY2MTc4NzZiYjBiLi5hMjdm YzNlMzRhMSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9iaXRtYW5pcC5tZAorKysg Yi9nY2MvY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1kCkBAIC03MTksMyArNzE5LDMyIEBAIChk ZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipicmFuY2g8WDptb2RlPl9tYXNrX3R3b2JpdHNfZXF1 YWxzX3NpbmdsZWJpdCIKICAgIG9wZXJhbmRzWzhdID0gR0VOX0lOVCAoc2V0Yml0KTsKICAg IG9wZXJhbmRzWzldID0gR0VOX0lOVCAoY2xlYXJiaXQpOwogfSkKKworOzsgWkJLQyBvciBa QkMgZXh0ZW5zaW9uCisoZGVmaW5lX2luc24gInJpc2N2X2NsbXVsXzxtb2RlPiIKKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6WCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQorICAgICAg ICAodW5zcGVjOlggWyhtYXRjaF9vcGVyYW5kOlggMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIi KQorICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6WCAyICJyZWdpc3Rlcl9vcGVy YW5kIiAiciIpXQorICAgICAgICAgICAgICAgICAgVU5TUEVDX0NMTVVMKSldCisgICJUQVJH RVRfWkJLQyB8fCBUQVJHRVRfWkJDIgorICAiY2xtdWxcdCUwLCUxLCUyIgorICBbKHNldF9h dHRyICJ0eXBlIiAiY2xtdWwiKV0pCisKKyhkZWZpbmVfaW5zbiAicmlzY3ZfY2xtdWxoXzxt b2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6WCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXIiKQorICAgICAgICAodW5zcGVjOlggWyhtYXRjaF9vcGVyYW5kOlggMSAicmVnaXN0ZXJf b3BlcmFuZCIgInIiKQorICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6WCAyICJy ZWdpc3Rlcl9vcGVyYW5kIiAiciIpXQorICAgICAgICAgICAgICAgICAgVU5TUEVDX0NMTVVM SCkpXQorICAiVEFSR0VUX1pCS0MgfHwgVEFSR0VUX1pCQyIKKyAgImNsbXVsaFx0JTAsJTEs JTIiCisgIFsoc2V0X2F0dHIgInR5cGUiICJjbG11bCIpXSkKKworOzsgWkJDIGV4dGVuc2lv bgorKGRlZmluZV9pbnNuICJyaXNjdl9jbG11bHJfPG1vZGU+IgorICBbKHNldCAobWF0Y2hf b3BlcmFuZDpYIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCisgICAgICAgICh1bnNwZWM6 WCBbKG1hdGNoX29wZXJhbmQ6WCAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpCisgICAgICAg ICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpYIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIild CisgICAgICAgICAgICAgICAgICBVTlNQRUNfQ0xNVUxSKSldCisgICJUQVJHRVRfWkJDIgor ICAiY2xtdWxyXHQlMCwlMSwlMiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImNsbXVsIildKQpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9jcnlwdG8ubWQgYi9nY2MvY29uZmlnL3Jp c2N2L2NyeXB0by5tZAppbmRleCA3NzdhYTUyOTAwNS4uZTRiN2YwMTkwZGYgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvcmlzY3YvY3J5cHRvLm1kCisrKyBiL2djYy9jb25maWcvcmlzY3Yv Y3J5cHRvLm1kCkBAIC0yNiwxMCArMjYsNiBAQCAoZGVmaW5lX2NfZW51bSAidW5zcGVjIiBb CiAgICAgVU5TUEVDX1BBQ0tICiAgICAgVU5TUEVDX1BBQ0tXCiAKLSAgICA7OyBaYmtjIHVu c3BlY3MKLSAgICBVTlNQRUNfQ0xNVUwKLSAgICBVTlNQRUNfQ0xNVUxICi0KICAgICA7OyBa Ymt4IHVuc3BlY3MKICAgICBVTlNQRUNfWFBFUk04CiAgICAgVU5TUEVDX1hQRVJNNApAQCAt MTI2LDI2ICsxMjIsNiBAQCAoZGVmaW5lX2luc24gInJpc2N2X3BhY2t3IgogICAicGFja3dc dCUwLCUxLCUyIgogICBbKHNldF9hdHRyICJ0eXBlIiAiY3J5cHRvIildKQogCi07OyBaQktD IGV4dGVuc2lvbgotCi0oZGVmaW5lX2luc24gInJpc2N2X2NsbXVsXzxtb2RlPiIKLSAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6WCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotICAgICAg ICAodW5zcGVjOlggWyhtYXRjaF9vcGVyYW5kOlggMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIi KQotICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6WCAyICJyZWdpc3Rlcl9vcGVy YW5kIiAiciIpXQotICAgICAgICAgICAgICAgICAgVU5TUEVDX0NMTVVMKSldCi0gICJUQVJH RVRfWkJLQyIKLSAgImNsbXVsXHQlMCwlMSwlMiIKLSAgWyhzZXRfYXR0ciAidHlwZSIgImNy eXB0byIpXSkKLQotKGRlZmluZV9pbnNuICJyaXNjdl9jbG11bGhfPG1vZGU+IgotICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpYIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0gICAgICAg ICh1bnNwZWM6WCBbKG1hdGNoX29wZXJhbmQ6WCAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIp Ci0gICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpYIDIgInJlZ2lzdGVyX29wZXJh bmQiICJyIildCi0gICAgICAgICAgICAgICAgICBVTlNQRUNfQ0xNVUxIKSldCi0gICJUQVJH RVRfWkJLQyIKLSAgImNsbXVsaFx0JTAsJTEsJTIiCi0gIFsoc2V0X2F0dHIgInR5cGUiICJj cnlwdG8iKV0pCi0KIDs7IFpCS1ggZXh0ZW5zaW9uCiAKIChkZWZpbmVfaW5zbiAicmlzY3Zf eHBlcm00Xzxtb2RlPiIKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvZ2VuZXJpYy5t ZCBiL2djYy9jb25maWcvcmlzY3YvZ2VuZXJpYy5tZAppbmRleCAyYzMzNzY2MjhjMy4uNTdk M2MzYjRhZGMgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvZ2VuZXJpYy5tZAorKysg Yi9nY2MvY29uZmlnL3Jpc2N2L2dlbmVyaWMubWQKQEAgLTUyLDcgKzUyLDcgQEAgKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJnZW5lcmljX2JyYW5jaCIgMQogCiAoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gImdlbmVyaWNfaW11bCIgMTAKICAgKGFuZCAoZXFfYXR0ciAidHVuZSIg ImdlbmVyaWMiKQotICAgICAgIChlcV9hdHRyICJ0eXBlIiAiaW11bCIpKQorICAgICAgIChl cV9hdHRyICJ0eXBlIiAiaW11bCxjbG11bCIpKQogICAiaW11bGRpdioxMCIpCiAKIChkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiZ2VuZXJpY19pZGl2c2kiIDM0CmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LWJ1aWx0aW5zLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi1idWlsdGlucy5jYwppbmRleCBiMWM0Yjc1NDdkNy4uNzk2ODFkNzU5NjIgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi1idWlsdGlucy5jYwpAQCAtMTA1LDggKzEwNSw2IEBAIEFWQUlM IChwcmVmZXRjaGkzMiwgVEFSR0VUX1pJQ0JPUCAmJiAhVEFSR0VUXzY0QklUKQogQVZBSUwg KHByZWZldGNoaTY0LCBUQVJHRVRfWklDQk9QICYmIFRBUkdFVF82NEJJVCkKIEFWQUlMIChj cnlwdG9femJrYjMyLCBUQVJHRVRfWkJLQiAmJiAhVEFSR0VUXzY0QklUKQogQVZBSUwgKGNy eXB0b196YmtiNjQsIFRBUkdFVF9aQktCICYmIFRBUkdFVF82NEJJVCkKLUFWQUlMIChjcnlw dG9femJrYzMyLCBUQVJHRVRfWkJLQyAmJiAhVEFSR0VUXzY0QklUKQotQVZBSUwgKGNyeXB0 b196YmtjNjQsIFRBUkdFVF9aQktDICYmIFRBUkdFVF82NEJJVCkKIEFWQUlMIChjcnlwdG9f emJreDMyLCBUQVJHRVRfWkJLWCAmJiAhVEFSR0VUXzY0QklUKQogQVZBSUwgKGNyeXB0b196 Ymt4NjQsIFRBUkdFVF9aQktYICYmIFRBUkdFVF82NEJJVCkKIEFWQUlMIChjcnlwdG9femtu ZDMyLCBUQVJHRVRfWktORCAmJiAhVEFSR0VUXzY0QklUKQpAQCAtMTIwLDYgKzExOCwxMCBA QCBBVkFJTCAoY3J5cHRvX3prc2gzMiwgVEFSR0VUX1pLU0ggJiYgIVRBUkdFVF82NEJJVCkK IEFWQUlMIChjcnlwdG9femtzaDY0LCBUQVJHRVRfWktTSCAmJiBUQVJHRVRfNjRCSVQpCiBB VkFJTCAoY3J5cHRvX3prc2VkMzIsIFRBUkdFVF9aS1NFRCAmJiAhVEFSR0VUXzY0QklUKQog QVZBSUwgKGNyeXB0b196a3NlZDY0LCBUQVJHRVRfWktTRUQgJiYgVEFSR0VUXzY0QklUKQor QVZBSUwgKGNsbXVsX3pia2MzMl9vcl96YmMzMiwgKFRBUkdFVF9aQktDIHx8IFRBUkdFVF9a QkMpICYmICFUQVJHRVRfNjRCSVQpCitBVkFJTCAoY2xtdWxfemJrYzY0X29yX3piYzY0LCAo VEFSR0VUX1pCS0MgfHwgVEFSR0VUX1pCQykgJiYgVEFSR0VUXzY0QklUKQorQVZBSUwgKGNs bXVscl96YmMzMiwgVEFSR0VUX1pCQyAmJiAhVEFSR0VUXzY0QklUKQorQVZBSUwgKGNsbXVs cl96YmM2NCwgVEFSR0VUX1pCQyAmJiBUQVJHRVRfNjRCSVQpCiBBVkFJTCAoYWx3YXlzLCAg ICAgKCEwKSkKIAogLyogQ29uc3RydWN0IGEgcmlzY3ZfYnVpbHRpbl9kZXNjcmlwdGlvbiBm cm9tIHRoZSBnaXZlbiBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LWNtby5kZWYgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LWNtby5kZWYKaW5kZXgg OWZlNTA5NGNlMWEuLmI5MjA0NGRjNmZmIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LWNtby5kZWYKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1jbW8uZGVmCkBA IC0xNSwzICsxNSwxMyBAQCBSSVNDVl9CVUlMVElOICh6ZXJvX2RpLCAiemljYm96X2Nib196 ZXJvIiwgUklTQ1ZfQlVJTFRJTl9ESVJFQ1RfTk9fVEFSR0VULCBSSVNDVgogLy8gemljYm9w CiBSSVNDVl9CVUlMVElOIChwcmVmZXRjaGlfc2ksICJ6aWNib3BfY2JvX3ByZWZldGNoaSIs IFJJU0NWX0JVSUxUSU5fRElSRUNULCBSSVNDVl9TSV9GVFlQRV9TSSwgcHJlZmV0Y2hpMzIp LAogUklTQ1ZfQlVJTFRJTiAocHJlZmV0Y2hpX2RpLCAiemljYm9wX2Nib19wcmVmZXRjaGki LCBSSVNDVl9CVUlMVElOX0RJUkVDVCwgUklTQ1ZfRElfRlRZUEVfREksIHByZWZldGNoaTY0 KSwKKworLy8gemJrYyBvciB6YmMKK1JJU0NWX0JVSUxUSU4gKGNsbXVsX3NpLCAiY2xtdWwi LCBSSVNDVl9CVUlMVElOX0RJUkVDVCwgUklTQ1ZfU0lfRlRZUEVfU0lfU0ksIGNsbXVsX3pi a2MzMl9vcl96YmMzMiksCitSSVNDVl9CVUlMVElOIChjbG11bF9kaSwgImNsbXVsIiwgUklT Q1ZfQlVJTFRJTl9ESVJFQ1QsIFJJU0NWX0RJX0ZUWVBFX0RJX0RJLCBjbG11bF96YmtjNjRf b3JfemJjNjQpLAorUklTQ1ZfQlVJTFRJTiAoY2xtdWxoX3NpLCAiY2xtdWxoIiwgUklTQ1Zf QlVJTFRJTl9ESVJFQ1QsIFJJU0NWX1NJX0ZUWVBFX1NJX1NJLCBjbG11bF96YmtjMzJfb3Jf emJjMzIpLAorUklTQ1ZfQlVJTFRJTiAoY2xtdWxoX2RpLCAiY2xtdWxoIiwgUklTQ1ZfQlVJ TFRJTl9ESVJFQ1QsIFJJU0NWX0RJX0ZUWVBFX0RJX0RJLCBjbG11bF96YmtjNjRfb3JfemJj NjQpLAorCisvLyB6YmMKK1JJU0NWX0JVSUxUSU4gKGNsbXVscl9zaSwgImNsbXVsciIsIFJJ U0NWX0JVSUxUSU5fRElSRUNULCBSSVNDVl9TSV9GVFlQRV9TSV9TSSwgY2xtdWxyX3piYzMy KSwKK1JJU0NWX0JVSUxUSU4gKGNsbXVscl9kaSwgImNsbXVsciIsIFJJU0NWX0JVSUxUSU5f RElSRUNULCBSSVNDVl9ESV9GVFlQRV9ESV9ESSwgY2xtdWxyX3piYzY0KSwKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytc2NhbGFyLWNyeXB0by5kZWYgYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXNjYWxhci1jcnlwdG8uZGVmCmluZGV4IDEzOTc5M2M2MzYwLi5j MmNhZWQ1MTUxZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1zY2FsYXIt Y3J5cHRvLmRlZgorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXNjYWxhci1jcnlwdG8u ZGVmCkBAIC0zMiwxMiArMzIsNiBAQCBSSVNDVl9CVUlMVElOICh1bnppcCwgInVuemlwIiwg UklTQ1ZfQlVJTFRJTl9ESVJFQ1QsIFJJU0NWX1NJX0ZUWVBFX1NJLCBjcnlwdG9fegogUklT Q1ZfQlVJTFRJTiAoYnJldjhfc2ksICJicmV2OCIsIFJJU0NWX0JVSUxUSU5fRElSRUNULCBS SVNDVl9TSV9GVFlQRV9TSSwgY3J5cHRvX3pia2IzMiksCiBSSVNDVl9CVUlMVElOIChicmV2 OF9kaSwgImJyZXY4IiwgUklTQ1ZfQlVJTFRJTl9ESVJFQ1QsIFJJU0NWX0RJX0ZUWVBFX0RJ LCBjcnlwdG9femJrYjY0KSwKIAotLy8gWkJLQwotUklTQ1ZfQlVJTFRJTiAoY2xtdWxfc2ks ICJjbG11bCIsIFJJU0NWX0JVSUxUSU5fRElSRUNULCBSSVNDVl9TSV9GVFlQRV9TSV9TSSwg Y3J5cHRvX3pia2MzMiksCi1SSVNDVl9CVUlMVElOIChjbG11bF9kaSwgImNsbXVsIiwgUklT Q1ZfQlVJTFRJTl9ESVJFQ1QsIFJJU0NWX0RJX0ZUWVBFX0RJX0RJLCBjcnlwdG9femJrYzY0 KSwKLVJJU0NWX0JVSUxUSU4gKGNsbXVsaF9zaSwgImNsbXVsaCIsIFJJU0NWX0JVSUxUSU5f RElSRUNULCBSSVNDVl9TSV9GVFlQRV9TSV9TSSwgY3J5cHRvX3pia2MzMiksCi1SSVNDVl9C VUlMVElOIChjbG11bGhfZGksICJjbG11bGgiLCBSSVNDVl9CVUlMVElOX0RJUkVDVCwgUklT Q1ZfRElfRlRZUEVfRElfREksIGNyeXB0b196YmtjNjQpLAotCiAvLyBaQktYCiBSSVNDVl9C VUlMVElOICh4cGVybTRfc2ksICJ4cGVybTQiLCBSSVNDVl9CVUlMVElOX0RJUkVDVCwgUklT Q1ZfU0lfRlRZUEVfU0lfU0ksIGNyeXB0b196Ymt4MzIpLAogUklTQ1ZfQlVJTFRJTiAoeHBl cm00X2RpLCAieHBlcm00IiwgUklTQ1ZfQlVJTFRJTl9ESVJFQ1QsIFJJU0NWX0RJX0ZUWVBF X0RJX0RJLCBjcnlwdG9femJreDY0KSwKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yv cmlzY3YubWQgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kCmluZGV4IGRkODQ1Y2MxZWQz Li4zNzZhODgzMTgyMCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAor KysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kCkBAIC02NSw2ICs2NSwxMSBAQCAoZGVm aW5lX2NfZW51bSAidW5zcGVjIiBbCiAKICAgOzsgT1ItQ09NQklORQogICBVTlNQRUNfT1JD X0IKKworICA7OyBaYmMgdW5zcGVjcworICBVTlNQRUNfQ0xNVUwKKyAgVU5TUEVDX0NMTVVM SAorICBVTlNQRUNfQ0xNVUxSCiBdKQogCiAoZGVmaW5lX2NfZW51bSAidW5zcGVjdiIgWwpA QCAtMjQ0LDYgKzI0OSw3IEBAIChkZWZpbmVfYXR0ciAiZW5hYmxlZCIgIm5vLHllcyIKIDs7 IG5vcAkJbm8gb3BlcmF0aW9uCiA7OyBnaG9zdAlhbiBpbnN0cnVjdGlvbiB0aGF0IHByb2R1 Y2VzIG5vIHJlYWwgY29kZQogOzsgYml0bWFuaXAJYml0IG1hbmlwdWxhdGlvbiBpbnN0cnVj dGlvbnMKKzs7IGNsbXVsICAgIGNsbXVsLCBjbG11bGgsIGNsbXVscgogOzsgcm90YXRlICAg cm90YXRpb24gaW5zdHJ1Y3Rpb25zCiA7OyBhdG9taWMgICBhdG9taWMgaW5zdHJ1Y3Rpb25z CiA7OyBjb25kbW92ZQljb25kaXRpb25hbCBtb3ZlcwpAQCAtMzQ0LDcgKzM1MCw3IEBAIChk ZWZpbmVfYXR0ciAidHlwZSIKICAgInVua25vd24sYnJhbmNoLGp1bXAsY2FsbCxsb2FkLGZw bG9hZCxzdG9yZSxmcHN0b3JlLAogICAgbXRjLG1mYyxjb25zdCxhcml0aCxsb2dpY2FsLHNo aWZ0LHNsdCxpbXVsLGlkaXYsbW92ZSxmbW92ZSxmYWRkLGZtdWwsCiAgICBmbWFkZCxmZGl2 LGZjbXAsZmN2dCxmc3FydCxtdWx0aSxhdWlwYyxzZmJfYWx1LG5vcCxnaG9zdCxiaXRtYW5p cCxyb3RhdGUsCi0gICBtaW4sbWF4LG1pbnUsbWF4dSxjbHosY3R6LGNwb3AsCisgICBjbG11 bCxtaW4sbWF4LG1pbnUsbWF4dSxjbHosY3R6LGNwb3AsCiAgICBhdG9taWMsY29uZG1vdmUs Y3J5cHRvLHJkdmxlbmIscmR2bCx2c2V0dmwsdmxkZSx2c3RlLHZsZG0sdnN0bSx2bGRzLHZz dHMsCiAgICB2bGR1eCx2bGRveCx2c3R1eCx2c3RveCx2bGRmZix2bGRyLHZzdHIsCiAgICB2 aWFsdSx2aXdhbHUsdmV4dCx2aWNhbHUsdnNoaWZ0LHZuc2hpZnQsdmljbXAsdmltaW5tYXgs CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJjMzIuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmMzMi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wODcwNWM0YTY4NwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmMzMi5jCkBAIC0wLDAgKzEs MjMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt bWFyY2g9cnYzMmdjX3piYyAtbWFiaT1pbHAzMiIgfSAqLworLyogeyBkZy1za2lwLWlmICIi IHsgKi0qLSogfSB7ICItZyIgIi1mbHRvIn0gfSAqLworI2luY2x1ZGUgPHN0ZGludC1nY2Mu aD4KKworaW50MzJfdCBmb28xKGludDMyX3QgcnMxLCBpbnQzMl90IHJzMikKK3sKKyAgICBy ZXR1cm4gX19idWlsdGluX3Jpc2N2X2NsbXVsKHJzMSwgcnMyKTsKK30KKworaW50MzJfdCBm b28yKGludDMyX3QgcnMxLCBpbnQzMl90IHJzMikKK3sKKyAgICByZXR1cm4gX19idWlsdGlu X3Jpc2N2X2NsbXVsaChyczEsIHJzMik7Cit9CisKK2ludDMyX3QgZm9vMyhpbnQzMl90IHJz MSwgaW50MzJfdCByczIpCit7CisgICAgcmV0dXJuIF9fYnVpbHRpbl9yaXNjdl9jbG11bHIo cnMxLCByczIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg ImNsbXVsXHQiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgImNsbXVsaCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAiY2xtdWxyIiAxIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3piYzY0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv emJjNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTE5ZjQy YjI4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvemJjNjQuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPXJ2NjRnY196YmMgLW1hYmk9bHA2NCIgfSAq LworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItZyIgIi1mbHRvIn0gfSAqLwor I2luY2x1ZGUgPHN0ZGludC1nY2MuaD4KKworaW50NjRfdCBmb28xKGludDY0X3QgcnMxLCBp bnQ2NF90IHJzMikKK3sKKyAgICByZXR1cm4gX19idWlsdGluX3Jpc2N2X2NsbXVsKHJzMSwg cnMyKTsKK30KKworaW50NjRfdCBmb28yKGludDY0X3QgcnMxLCBpbnQ2NF90IHJzMikKK3sK KyAgICByZXR1cm4gX19idWlsdGluX3Jpc2N2X2NsbXVsaChyczEsIHJzMik7Cit9CisKK2lu dDY0X3QgZm9vMyhpbnQ2NF90IHJzMSwgaW50NjRfdCByczIpCit7CisgICAgcmV0dXJuIF9f YnVpbHRpbl9yaXNjdl9jbG11bHIocnMxLCByczIpOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgImNsbXVsXHQiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNsbXVsaCIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2xtdWxyIiAxIH0gfSAqLwo= --------------NPSNtbhLg4XKkDF9xXI0soh1--