From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 00E43385624A for ; Wed, 10 May 2023 15:50:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 00E43385624A 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-x432.google.com with SMTP id d2e1a72fcca58-6438d95f447so5169005b3a.3 for ; Wed, 10 May 2023 08:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683733853; x=1686325853; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=nE+L8DMZ/TtmG+iq8UYd9T8A5gz+WVYCG8I6Hkq7x9s=; b=OImPj+VI2GE49g0bs5XNvu/ZmoLsKFlAEHlKWn6txr+ZLysR3IdgWYzi23rcfjNiVI EKPrIQzgcGOH6FmQSdFOyaRT0PNDmEegk2TPaLZS3QXjVgmrXbC8g+2PWfzV6itywHpc K/uKX/a63dAZQIx8TPs2GXCWdPG4iDWdj8rbOB8M2ZCMGpAPWNDEfJ7w5BBvbHSMe13y T7uuxAOd3VIZmCI9lOxoNAUL0x0nec+MBxvzVXTCreNHPlhc/NP1iWpYMryRXldUXJpu jXaWAP9/+6ZN1aTnF0IoZ4SoX5gpCstVNsM4hFgjEgS13X0eJcJENIWLyxo7CgomPdCe 2HnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683733853; x=1686325853; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=nE+L8DMZ/TtmG+iq8UYd9T8A5gz+WVYCG8I6Hkq7x9s=; b=G/DLFVeyy5bnL0th3niV/m3UaoNRCSjXqnAz9q6AtdGDcpWiQ74IDMUBIvU/K90f2h /y8JVtjH0VZnpjtE2EhSMwB98GOVrFfR3pyDDSdtdke0/peqw+tk3gFZF5UmKFiO9t16 wHcBCccnUBBvqU5q8aj5KkVfQukp6754cRIY5o9J1Og8Ao57MlhR2SfukGARhpGAYxBx YN3bbEpBTq5Zwl3lIpKH4MdvZrOv5no/bZ2nYA4O5KcQFkpK6gmjlVs3CS8TxiTUv025 MxFJA2ESzJR9fbRMsxlmcF6z4MNqS9AyuUKcnlo1HlycD0AubhMP6dpXx7g9DOA0k4db MQpg== X-Gm-Message-State: AC+VfDwo2oOWquwoR7Sf6DXOZAnRmFlLUrLcAzq6zOMQ48hptE593nCy mCMOLmqYZ87iXQmnVy0ZPasDqFcBItUIpp7F5FOxux9Adxg= X-Google-Smtp-Source: ACHHUZ7aoSThvDwNxS8Xv8uC2iYRK5+YXsS22gPB1g6EEUOLnvmszZbxUkaVj4m6/yh/jDqhWWv1mjyV0mbw3Qoz54E= X-Received: by 2002:a05:6a20:5488:b0:100:fc8d:feaf with SMTP id i8-20020a056a20548800b00100fc8dfeafmr11691086pzk.21.1683733853461; Wed, 10 May 2023 08:50:53 -0700 (PDT) MIME-Version: 1.0 From: Jivan Hakobyan Date: Wed, 10 May 2023 19:50:37 +0400 Message-ID: Subject: RISC-V: Remove masking third operand of rotate instructions To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000003c3d0705fb58d678" X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,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: --0000000000003c3d0705fb58d678 Content-Type: multipart/alternative; boundary="0000000000003c3d0605fb58d676" --0000000000003c3d0605fb58d676 Content-Type: text/plain; charset="UTF-8" Rotate instructions do not need to mask the third operand. For example RV64 the following code: unsigned long foo1(unsigned long rs1, unsigned long rs2) { long shamt = rs2 & (64 - 1); return (rs1 << shamt) | (rs1 >> ((64 - shamt) & (64 - 1))); } Compiles to: foo1: andi a1,a1,63 rol a0,a0,a1 ret This patch removes unnecessary masking. Besides, I have merged masking insns for shifts that were written before. gcc/ChangeLog: * config/riscv/riscv.md: Merged * config/riscv/bitmanip.md: New insns * config/riscv/iterators.md: New iterator and optab items * config/riscv/predicates.md: New predicates gcc/testsuite/ChangeLog: * testsuite/gcc.target/riscv/shift-and-2.c: Fixed test * testsuite/gcc.target/riscv/zbb-rol-ror-01.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-02.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-03.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-04.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-05.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-06.c: New test * testsuite/gcc.target/riscv/zbb-rol-ror-07.c: New test -- With the best regards Jivan Hakobyan --0000000000003c3d0605fb58d676-- --0000000000003c3d0705fb58d678 Content-Type: text/x-patch; charset="US-ASCII"; name="rotate_mask.patch" Content-Disposition: attachment; filename="rotate_mask.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhhuh6dn0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvYml0bWFuaXAubWQgYi9n Y2MvY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1kCmluZGV4IGEyN2ZjM2UzNGEx Li4wZmQwY2JkZWIwNCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9i aXRtYW5pcC5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1k CkBAIC0zNTEsNiArMzUxLDQyIEBACiAgICJyb2x3XHQlMCwlMSwlMiIKICAg WyhzZXRfYXR0ciAidHlwZSIgImJpdG1hbmlwIildKQogCisoZGVmaW5lX2lu c25fYW5kX3NwbGl0ICIqPGJpdG1hbmlwX29wdGFiPjxtb2RlPjNfbWFzayIK KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6WCAgICAgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj0gciIpCisgICAgICAgIChiaXRtYW5pcF9yb3RhdGU6WAorICAg ICAgICAgICAgKG1hdGNoX29wZXJhbmQ6WCAxICJyZWdpc3Rlcl9vcGVyYW5k IiAiICByIikKKyAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciA0ICJzdWJy ZWdfbG93cGFydF9vcGVyYXRvciIKKyAgICAgICAgICAgICBbKGFuZDpYCisg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpYIDIgInJlZ2lzdGVyX29w ZXJhbmQiICAiciIpCisgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZCAz ICI8WDpzaGlmdG0xPiIgIjxYOnNoaWZ0bTFwPiIpKV0pKSldCisgICJUQVJH RVRfWkJCIHx8IFRBUkdFVF9aQktCIgorICAiIyIKKyAgIiYmIDEiCisgIFso c2V0IChtYXRjaF9kdXAgMCkKKyAgICAgICAgKGJpdG1hbmlwX3JvdGF0ZTpY IChtYXRjaF9kdXAgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICht YXRjaF9kdXAgMikpKV0KKyAgIm9wZXJhbmRzWzJdID0gZ2VuX2xvd3BhcnQg KFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKKyAgWyhzZXRfYXR0ciAidHlwZSIg ImJpdG1hbmlwIikKKyAgIChzZXRfYXR0ciAibW9kZSIgIjxYOk1PREU+Iild KQorCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPGJpdG1hbmlwX29wdGFi PnNpM19zZXh0X21hc2siCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJICAg ICAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSByIikKKyAgKHNpZ25fZXh0ZW5k OkRJIChiaXRtYW5pcF9yb3RhdGU6U0kKKyAgICAgICAgICAgIChtYXRjaF9v cGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIgIHIiKQorICAgICAg ICAgICAgKG1hdGNoX29wZXJhdG9yIDQgInN1YnJlZ19sb3dwYXJ0X29wZXJh dG9yIgorICAgICAgICAgICAgIFsoYW5kOkRJCisgICAgICAgICAgICAgICAo bWF0Y2hfb3BlcmFuZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAgInIiKQor ICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQgMyAiY29uc3Rfc2lfbWFz a19vcGVyYW5kIikpXSkpKSldCisgICJUQVJHRVRfNjRCSVQgJiYgKFRBUkdF VF9aQkIgfHwgVEFSR0VUX1pCS0IpIgorICAiIyIKKyAgIiYmIDEiCisgIFso c2V0IChtYXRjaF9kdXAgMCkKKyAgKHNpZ25fZXh0ZW5kOkRJIChiaXRtYW5p cF9yb3RhdGU6U0kgKG1hdGNoX2R1cCAxKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hdGNoX2R1cCAyKSkpKV0KKyAgIm9wZXJhbmRzWzJdID0g Z2VuX2xvd3BhcnQgKFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKKyAgWyhzZXRf YXR0ciAidHlwZSIgImJpdG1hbmlwIikKKyAgIChzZXRfYXR0ciAibW9kZSIg IkRJIildKQorCiA7OyBvcmMuYiAob3ItY29tYmluZSkgaXMgYWRkZWQgYXMg YW4gdW5zcGVjIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgc3VwcG9ydAogOzsg Zm9yIG9wdGltaXplZCBzdHJpbmcgZnVuY3Rpb25zIChzdWNoIGFzIHN0cmNt cCkuCiAoZGVmaW5lX2luc24gIm9yY2I8bW9kZT4yIgpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9yaXNjdi9pdGVyYXRvcnMubWQgYi9nY2MvY29uZmlnL3Jp c2N2L2l0ZXJhdG9ycy5tZAppbmRleCAxZDU2MzI0ZGYwMy4uOGFmZTk4ZTQ0 MTAgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvaXRlcmF0b3JzLm1k CisrKyBiL2djYy9jb25maWcvcmlzY3YvaXRlcmF0b3JzLm1kCkBAIC0xMTcs NyArMTE3LDcgQEAKIChkZWZpbmVfbW9kZV9hdHRyIEhBTEZNT0RFIFsoREYg IlNJIikgKERJICJTSSIpIChURiAiREkiKV0pCiAKIDsgYml0bWFuaXAgbW9k ZSBhdHRyaWJ1dGUKLShkZWZpbmVfbW9kZV9hdHRyIHNoaWZ0bTEgWyhTSSAi Y29uc3QzMV9vcGVyYW5kIikgKERJICJjb25zdDYzX29wZXJhbmQiKV0pCiso ZGVmaW5lX21vZGVfYXR0ciBzaGlmdG0xIFsoU0kgImNvbnN0X3NpX21hc2tf b3BlcmFuZCIpIChESSAiY29uc3RfZGlfbWFza19vcGVyYW5kIildKQogKGRl ZmluZV9tb2RlX2F0dHIgc2hpZnRtMXAgWyhTSSAiRHNTIikgKERJICJEc0Qi KV0pCiAKIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3NCw2ICsx NzQsOCBAQAogCiAoZGVmaW5lX2NvZGVfaXRlcmF0b3IgY2x6X2N0el9wY250 IFtjbHogY3R6IHBvcGNvdW50XSkKIAorKGRlZmluZV9jb2RlX2l0ZXJhdG9y IGJpdG1hbmlwX3JvdGF0ZSBbcm90YXRlIHJvdGF0ZXJ0XSkKKwogOzsgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogOzsgQ29kZSBBdHRyaWJ1dGVzCiA7OyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzEsNyArMjczLDkgQEAKIAkJ CQkgICh1bWF4ICJ1bWF4IikKIAkJCQkgIChjbHogImNseiIpCiAJCQkJICAo Y3R6ICJjdHoiKQotCQkJCSAgKHBvcGNvdW50ICJwb3Bjb3VudCIpXSkKKwkJ CQkgIChwb3Bjb3VudCAicG9wY291bnQiKQorCQkJCSAgKHJvdGF0ZSAicm90 bCIpCisJCQkJICAocm90YXRlcnQgInJvdHIiKV0pCiAoZGVmaW5lX2NvZGVf YXR0ciBiaXRtYW5pcF9pbnNuIFsoc21pbiAibWluIikKIAkJCQkgKHNtYXgg Im1heCIpCiAJCQkJICh1bWluICJtaW51IikKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvcmlzY3YvcHJlZGljYXRlcy5tZCBiL2djYy9jb25maWcvcmlzY3Yv cHJlZGljYXRlcy5tZAppbmRleCBlNWFkZjA2ZmEyNS4uZmZjYmI5YTc1ODkg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAor KysgYi9nY2MvY29uZmlnL3Jpc2N2L3ByZWRpY2F0ZXMubWQKQEAgLTIzNSwx MyArMjM1LDE1IEBACiAgIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIp CiAgICAgICAgKG1hdGNoX3Rlc3QgIlNJTkdMRV9CSVRfTUFTS19PUEVSQU5E ICh+VUlOVFZBTCAob3ApKSIpKSkKIAotKGRlZmluZV9wcmVkaWNhdGUgImNv bnN0MzFfb3BlcmFuZCIKKyhkZWZpbmVfcHJlZGljYXRlICJjb25zdF9zaV9t YXNrX29wZXJhbmQiCiAgIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIp Ci0gICAgICAgKG1hdGNoX3Rlc3QgIklOVFZBTCAob3ApID09IDMxIikpKQor ICAgICAgIChtYXRjaF90ZXN0ICIoSU5UVkFMIChvcCkgJiAoR0VUX01PREVf QklUU0laRSAoU0ltb2RlKSAtIDEpKQorICAgICAgICAgICAgICAgICAgICA9 PSBHRVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpIC0gMSIpKSkKIAotKGRlZmlu ZV9wcmVkaWNhdGUgImNvbnN0NjNfb3BlcmFuZCIKKyhkZWZpbmVfcHJlZGlj YXRlICJjb25zdF9kaV9tYXNrX29wZXJhbmQiCiAgIChhbmQgKG1hdGNoX2Nv ZGUgImNvbnN0X2ludCIpCi0gICAgICAgKG1hdGNoX3Rlc3QgIklOVFZBTCAo b3ApID09IDYzIikpKQorICAgICAgIChtYXRjaF90ZXN0ICIoSU5UVkFMIChv cCkgJiAoR0VUX01PREVfQklUU0laRSAoREltb2RlKSAtIDEpKQorICAgICAg ICAgICAgICAgICAgICA9PSBHRVRfTU9ERV9CSVRTSVpFIChESW1vZGUpIC0g MSIpKSkKIAogKGRlZmluZV9wcmVkaWNhdGUgImltbTVfb3BlcmFuZCIKICAg KGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YubWQgYi9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2Lm1kCmluZGV4IGM1MDhlZTNhZDg5Li43NzdkOTQ2OGVmYSAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAorKysgYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2Lm1kCkBAIC0yMDEwLDQ0ICsyMDEwLDIzIEBACiAg IFsoc2V0X2F0dHIgInR5cGUiICJzaGlmdCIpCiAgICAoc2V0X2F0dHIgIm1v ZGUiICJTSSIpXSkKIAotKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxvcHRh Yj5zaTNfbWFzayIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgICAgIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9IHIiKQotCShhbnlfc2hpZnQ6U0kKLQkg ICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiAg ciIpCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPG9wdGFiPjxtb2RlPjNf bWFzayIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6WCAgICAgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj0gciIpCisJKGFueV9zaGlmdDpYCisJICAgIChtYXRj aF9vcGVyYW5kOlggMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiAgciIpCiAJICAg IChtYXRjaF9vcGVyYXRvciA0ICJzdWJyZWdfbG93cGFydF9vcGVyYXRvciIK IAkgICAgIFsoYW5kOlNJCiAJICAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDIg InJlZ2lzdGVyX29wZXJhbmQiICAiciIpCi0JICAgICAgIChtYXRjaF9vcGVy YW5kIDMgImNvbnN0X2ludF9vcGVyYW5kIikpXSkpKV0KLSAgIihJTlRWQUwg KG9wZXJhbmRzWzNdKSAmIChHRVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpLTEp KQotICAgPT0gR0VUX01PREVfQklUU0laRSAoU0ltb2RlKS0xIgotICAiIyIK LSAgIiYmIDEiCi0gIFsoc2V0IChtYXRjaF9kdXAgMCkKLQkoYW55X3NoaWZ0 OlNJIChtYXRjaF9kdXAgMSkKLQkJICAgICAgKG1hdGNoX2R1cCAyKSkpXQot ICAib3BlcmFuZHNbMl0gPSBnZW5fbG93cGFydCAoUUltb2RlLCBvcGVyYW5k c1syXSk7IgotICBbKHNldF9hdHRyICJ0eXBlIiAic2hpZnQiKQotICAgKHNl dF9hdHRyICJtb2RlIiAiU0kiKV0pCi0KLShkZWZpbmVfaW5zbl9hbmRfc3Bs aXQgIio8b3B0YWI+c2kzX21hc2tfMSIKLSAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6U0kgICAgIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9IHIiKQotCShhbnlf c2hpZnQ6U0kKLQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0ZXJf b3BlcmFuZCIgIiAgciIpCi0JICAgIChtYXRjaF9vcGVyYXRvciA0ICJzdWJy ZWdfbG93cGFydF9vcGVyYXRvciIKLQkgICAgIFsoYW5kOkRJCi0JICAgICAg IChtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICAiciIp Ci0JICAgICAgIChtYXRjaF9vcGVyYW5kIDMgImNvbnN0X2ludF9vcGVyYW5k IikpXSkpKV0KLSAgIlRBUkdFVF82NEJJVAotICAgJiYgKElOVFZBTCAob3Bl cmFuZHNbM10pICYgKEdFVF9NT0RFX0JJVFNJWkUgKFNJbW9kZSktMSkpCi0g ICAgICAgPT0gR0VUX01PREVfQklUU0laRSAoU0ltb2RlKS0xIgorCSAgICAg ICAobWF0Y2hfb3BlcmFuZCAzICI8WDpzaGlmdG0xPiIpKV0pKSldCisgICIi CiAgICIjIgogICAiJiYgMSIKICAgWyhzZXQgKG1hdGNoX2R1cCAwKQotCShh bnlfc2hpZnQ6U0kgKG1hdGNoX2R1cCAxKQorCShhbnlfc2hpZnQ6WCAobWF0 Y2hfZHVwIDEpCiAJCSAgICAgIChtYXRjaF9kdXAgMikpKV0KICAgIm9wZXJh bmRzWzJdID0gZ2VuX2xvd3BhcnQgKFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIK ICAgWyhzZXRfYXR0ciAidHlwZSIgInNoaWZ0IikKLSAgIChzZXRfYXR0ciAi bW9kZSIgIlNJIildKQorICAgKHNldF9hdHRyICJtb2RlIiAiPFg6TU9ERT4i KV0pCiAKIChkZWZpbmVfaW5zbiAiPG9wdGFiPmRpMyIKICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICI9IHIi KQpAQCAtMjA2NSw0NSArMjA0NCwyMyBAQAogICBbKHNldF9hdHRyICJ0eXBl IiAic2hpZnQiKQogICAgKHNldF9hdHRyICJtb2RlIiAiREkiKV0pCiAKLShk ZWZpbmVfaW5zbl9hbmRfc3BsaXQgIio8b3B0YWI+ZGkzX21hc2siCi0gIFso c2V0IChtYXRjaF9vcGVyYW5kOkRJICAgICAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPSByIikKLQkoYW55X3NoaWZ0OkRJCi0JICAgIChtYXRjaF9vcGVyYW5k OkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIgIHIiKQotCSAgICAobWF0Y2hf b3BlcmF0b3IgNCAic3VicmVnX2xvd3BhcnRfb3BlcmF0b3IiCi0JICAgICBb KGFuZDpTSQotCSAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJyZWdpc3Rl cl9vcGVyYW5kIiAgInIiKQotCSAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJj b25zdF9pbnRfb3BlcmFuZCIpKV0pKSldCi0gICJUQVJHRVRfNjRCSVQKLSAg ICYmIChJTlRWQUwgKG9wZXJhbmRzWzNdKSAmIChHRVRfTU9ERV9CSVRTSVpF IChESW1vZGUpLTEpKQotICAgICAgID09IEdFVF9NT0RFX0JJVFNJWkUgKERJ bW9kZSktMSIKLSAgIiMiCi0gICImJiAxIgotICBbKHNldCAobWF0Y2hfZHVw IDApCi0JKGFueV9zaGlmdDpESSAobWF0Y2hfZHVwIDEpCi0JCSAgICAgICht YXRjaF9kdXAgMikpKV0KLSAgIm9wZXJhbmRzWzJdID0gZ2VuX2xvd3BhcnQg KFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKLSAgWyhzZXRfYXR0ciAidHlwZSIg InNoaWZ0IikKLSAgIChzZXRfYXR0ciAibW9kZSIgIkRJIildKQotCi0oZGVm aW5lX2luc25fYW5kX3NwbGl0ICIqPG9wdGFiPmRpM19tYXNrXzEiCi0gIFso c2V0IChtYXRjaF9vcGVyYW5kOkRJICAgICAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPSByIikKLQkoYW55X3NoaWZ0OkRJCi0JICAgIChtYXRjaF9vcGVyYW5k OkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIgIHIiKQorKGRlZmluZV9pbnNu X2FuZF9zcGxpdCAiKjxvcHRhYj48bW9kZT4zX21hc2tfMSIKKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6R1BSICAgICAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PSByIikKKwkoYW55X3NoaWZ0OkdQUgorCSAgICAobWF0Y2hfb3BlcmFuZDpH UFIgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiAgciIpCiAJICAgIChtYXRjaF9v cGVyYXRvciA0ICJzdWJyZWdfbG93cGFydF9vcGVyYXRvciIKIAkgICAgIFso YW5kOkRJCiAJICAgICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVy X29wZXJhbmQiICAiciIpCi0JICAgICAgIChtYXRjaF9vcGVyYW5kIDMgImNv bnN0X2ludF9vcGVyYW5kIikpXSkpKV0KLSAgIlRBUkdFVF82NEJJVAotICAg JiYgKElOVFZBTCAob3BlcmFuZHNbM10pICYgKEdFVF9NT0RFX0JJVFNJWkUg KERJbW9kZSktMSkpCi0gICAgICAgPT0gR0VUX01PREVfQklUU0laRSAoRElt b2RlKS0xIgorCSAgICAgICAobWF0Y2hfb3BlcmFuZCAzICI8R1BSOnNoaWZ0 bTE+IikpXSkpKV0KKyAgIlRBUkdFVF82NEJJVCIKICAgIiMiCiAgICImJiAx IgogICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKGFueV9zaGlmdDpESSAobWF0 Y2hfZHVwIDEpCisJKGFueV9zaGlmdDpHUFIgKG1hdGNoX2R1cCAxKQogCQkg ICAgICAobWF0Y2hfZHVwIDIpKSldCiAgICJvcGVyYW5kc1syXSA9IGdlbl9s b3dwYXJ0IChRSW1vZGUsIG9wZXJhbmRzWzJdKTsiCiAgIFsoc2V0X2F0dHIg InR5cGUiICJzaGlmdCIpCi0gICAoc2V0X2F0dHIgIm1vZGUiICJESSIpXSkK KyAgIChzZXRfYXR0ciAibW9kZSIgIjxHUFI6TU9ERT4iKV0pCiAKIChkZWZp bmVfaW5zbiAiKjxvcHRhYj5zaTNfZXh0ZW5kIgogICBbKHNldCAobWF0Y2hf b3BlcmFuZDpESSAgICAgICAgICAgICAgICAgICAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPSByIikKQEAgLTIxMjYsMzQgKzIwODMsMTAgQEAKIAkgICAgKGFu eV9zaGlmdDpTSQogCSAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0 ZXJfb3BlcmFuZCIgIiAgciIpCiAJICAgICAobWF0Y2hfb3BlcmF0b3IgNCAi c3VicmVnX2xvd3BhcnRfb3BlcmF0b3IiCi0JICAgICAgWyhhbmQ6U0kKLQkg ICAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgInJlZ2lzdGVyX29wZXJhbmQi ICIgciIpCi0JICAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25zdF9pbnRf b3BlcmFuZCIpKV0pKSkpXQotICAiVEFSR0VUXzY0QklUCi0gICAmJiAoSU5U VkFMIChvcGVyYW5kc1szXSkgJiAoR0VUX01PREVfQklUU0laRSAoU0ltb2Rl KS0xKSkKLSAgICAgICA9PSBHRVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpLTEi Ci0gICIjIgotICAiJiYgMSIKLSAgWyhzZXQgKG1hdGNoX2R1cCAwKQotCShz aWduX2V4dGVuZDpESQotCSAoYW55X3NoaWZ0OlNJIChtYXRjaF9kdXAgMSkK LQkJICAgICAgIChtYXRjaF9kdXAgMikpKSldCi0gICJvcGVyYW5kc1syXSA9 IGdlbl9sb3dwYXJ0IChRSW1vZGUsIG9wZXJhbmRzWzJdKTsiCi0gIFsoc2V0 X2F0dHIgInR5cGUiICJzaGlmdCIpCi0gICAoc2V0X2F0dHIgIm1vZGUiICJT SSIpXSkKLQotKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxvcHRhYj5zaTNf ZXh0ZW5kX21hc2tfMSIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgICAg ICAgICAgICAgICAgICAgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0gciIpCi0J KHNpZ25fZXh0ZW5kOkRJCi0JICAgIChhbnlfc2hpZnQ6U0kKLQkgICAgICht YXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIgIHIiKQot CSAgICAgKG1hdGNoX29wZXJhdG9yIDQgInN1YnJlZ19sb3dwYXJ0X29wZXJh dG9yIgotCSAgICAgIFsoYW5kOkRJCi0JICAgICAgICAobWF0Y2hfb3BlcmFu ZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHIiKQotCSAgICAgICAgKG1h dGNoX29wZXJhbmQgMyAiY29uc3RfaW50X29wZXJhbmQiKSldKSkpKV0KLSAg IlRBUkdFVF82NEJJVAotICAgJiYgKElOVFZBTCAob3BlcmFuZHNbM10pICYg KEdFVF9NT0RFX0JJVFNJWkUgKFNJbW9kZSktMSkpCi0gICAgICAgPT0gR0VU X01PREVfQklUU0laRSAoU0ltb2RlKS0xIgorCSAgICAgIFsoYW5kOkdQUgor CSAgICAgICAgKG1hdGNoX29wZXJhbmQ6R1BSIDIgInJlZ2lzdGVyX29wZXJh bmQiICIgciIpCisJICAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25zdF9z aV9tYXNrX29wZXJhbmQiKSldKSkpKV0KKyAgIlRBUkdFVF82NEJJVCIKICAg IiMiCiAgICImJiAxIgogICBbKHNldCAobWF0Y2hfZHVwIDApCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvc2hpZnQtYW5k LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9zaGlmdC1h bmQtMi5jCmluZGV4IDM2MGQ4NDE3MjA5Li5iYzAxZThlZjk5MiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3NoaWZ0LWFu ZC0yLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3No aWZ0LWFuZC0yLmMKQEAgLTExLDEwICsxMSwxMCBAQCBzdWIyIChpbnQgaSwg bG9uZyBqKQogfQogCiAvKiBUZXN0IGZvciA8b3B0YWI+c2kzX2V4dGVuZF9t YXNrLiAgKi8KLXVuc2lnbmVkIGxvbmcKLXN1YjMgKGludCBtYXNrKQoraW50 CitzdWIzIChzaG9ydCBtYXNrKQogewotICByZXR1cm4gMSA8PCAobWFzayAm IDB4ZmYpOworICByZXR1cm4gMSA8PCAoKGludCltYXNrICYgMHgxZik7CiB9 CiAKIC8qIFRlc3QgZm9yIDxvcHRhYj5zaTNfZXh0ZW5kX21hc2tfMS4gICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv emJiLXJvbC1yb3ItMDEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi96YmItcm9sLXJvci0wMS5jCmluZGV4IDIwYzFiMjg1NmVmLi4wYTVi NWUxMmViMiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3piYi1yb2wtcm9yLTAxLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTAxLmMKQEAgLTE0LDQgKzE0 LDUgQEAgdW5zaWduZWQgbG9uZyBmb28yKHVuc2lnbmVkIGxvbmcgcnMxLCB1 bnNpZ25lZCBsb25nIHJzMikKIH0KIAogLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJyb2wiIDIgfSB9ICovCi0vKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInJvciIgMiB9IH0gKi8KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInJvciIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgImFuZCIgfSB9ICovClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTAyLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDIuYwppbmRleCAx NDE5NmMxMWZiOS4uZDBkNTgxMzU4MDkgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wMi5jCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0w Mi5jCkBAIC0xNCw0ICsxNCw1IEBAIHVuc2lnbmVkIGludCBmb28yKHVuc2ln bmVkIGludCByczEsIHVuc2lnbmVkIGludCByczIpCiB9CiAKIC8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicm9sIiAyIH0gfSAqLwot LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb3IiIDIg fSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb3IiIDIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHthbmR9IHsgdGFy Z2V0IHsgbm8tb3B0cyAiLU8wIiB9IH0gfSB9ICovClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTAzLmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDMuYwppbmRleCBlZDQ2 ODVkYzdhYy4uYjQ0ZDdmZTg5MjAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wMy5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wMy5j CkBAIC0xNSw0ICsxNSw1IEBAIHVuc2lnbmVkIGludCByb3IodW5zaWduZWQg aW50IHJzMSwgdW5zaWduZWQgaW50IHJzMikKIH0KIAogLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb2x3IiAxIH0gfSAqLwotLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb3J3IiAxIH0g fSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicm9ydyIgMSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImFuZCIgfSB9ICov ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA0LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3It MDQuYwppbmRleCAwODA1MzQ4NGNiMi4uN2VmNGMyOWRkNWIgMTAwNjQ0Ci0t LSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJv ci0wNC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 YmItcm9sLXJvci0wNC5jCkBAIC0yLDYgKzIsNyBAQAogLyogeyBkZy1vcHRp b25zICItbWFyY2g9cnY2NGdjX3piYiAtbWFiaT1scDY0ZCAtZm5vLWx0byAt TzIiIH0gKi8KIC8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWci IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGll cyAiKioiICIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAiYW5kIiB9IH0gKi8KIAogLyoKICoqZm9vMToKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJv ci0wNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1y b2wtcm9yLTA1LmMKaW5kZXggODUwOTBiMWIwZmMuLjIxMDhjY2MzZTc3IDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJi LXJvbC1yb3ItMDUuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvemJiLXJvbC1yb3ItMDUuYwpAQCAtMiw2ICsyLDcgQEAKIC8qIHsg ZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY196YmIgLW1hYmk9aWxwMzIgLWZu by1sdG8gLU8yIiB9ICovCiAvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 IHsgIi1nIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlv bi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgImFuZCIgfSB9ICovCiAKIC8qCiAqKmZvbzE6CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJi LXJvbC1yb3ItMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di96YmItcm9sLXJvci0wNi5jCmluZGV4IDcwYjc5YWJiNmVkLi44YzA3MTFk NmY5NCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3piYi1yb2wtcm9yLTA2LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA2LmMKQEAgLTIsNiArMiw3IEBA CiAvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2NfemJiIC1tYWJpPWxw NjRkIC1mbm8tbHRvIC1PMiIgfSAqLwogLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICItZyIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgY2hlY2st ZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90ICJhbmQiIH0gfSAqLwogCiAvKgogKipm b28xOgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3piYi1yb2wtcm9yLTA3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvemJiLXJvbC1yb3ItMDcuYwppbmRleCAzYjZhYjM4NWE4NS4u YmRhM2YwZTQ3NGQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi96YmItcm9sLXJvci0wNy5jCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wNy5jCkBAIC0yLDYg KzIsNyBAQAogLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjX3piYiAt bWFiaT1scDY0ZCAtZm5vLWx0byAtTzIiIH0gKi8KIC8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0geyAiLWciIH0gfSAqLwogLyogeyBkZy1maW5hbCB7 IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiYW5kIiB9IH0gKi8KIAog LyoKICoqZm9vMToK --0000000000003c3d0705fb58d678--