From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x82e.google.com (mail-qt1-x82e.google.com [IPv6:2607:f8b0:4864:20::82e]) by sourceware.org (Postfix) with ESMTPS id A60A43858039 for ; Sun, 22 Nov 2020 21:29:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A60A43858039 Received: by mail-qt1-x82e.google.com with SMTP id t5so11716970qtp.2 for ; Sun, 22 Nov 2020 13:29:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=UirbsWCz6qEhHyZhXQTRcFNNW6OqSyQ/uFxcWzbFQEI=; b=a0JwgHfVRHlDtGFkruPTIkzOaOEgUna0qleFlQuRoyRKhN2OiaS+A8WcS+8Yz9MUzM 2D8jKNLjcRWsJ40UfwuGbaVZmxbAVBLV7KCNQoTBzOQprV9MCejIVl5fxv3pmY9PLil1 w0fepSfBSqrHvyVPJum6/Hb1SCZ6iH6g03HDztS7OiQJyv4zn5oAMd50FVxHk1V0W5Wm zoXBKzA03H0nkaKuXpA8y7rHvPwt7PGsS0AyNyCOeVZ5YRF78J0qH2WOEpLy3sIVbdwT 953w4FZzT+pt6KfZxO7VqzwnIAQtsz48dzkuPhcQpCKkDpgXuCpmnt+4dwd8iZd0CuSm OAyA== X-Gm-Message-State: AOAM531cmR0FJt9eNB2Do//hO1MqYpJgKQKVWSXW9CQfzC0PpUNR92pJ ymjoYJiMi65h77DqJKkVSpz+3BlbUuJRG9MTFY+VtXXnmkuiew== X-Google-Smtp-Source: ABdhPJzPDunGKPTLkwek962Kp0NYSazH/nHUFg2ZUMHi8jMOMInZA9V1dbC8wuyzgIDUyYFL2cn8tZLjs8U8+Mej6rY= X-Received: by 2002:ac8:7559:: with SMTP id b25mr25949372qtr.51.1606080575244; Sun, 22 Nov 2020 13:29:35 -0800 (PST) MIME-Version: 1.0 From: Uros Bizjak Date: Sun, 22 Nov 2020 22:29:23 +0100 Message-ID: Subject: [PATCH] i386: Use SWI48DWI mode iterator for abs and maxmin [PR97873] To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="0000000000002b264e05b4b8c656" X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Nov 2020 21:29:38 -0000 --0000000000002b264e05b4b8c656 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Generate special double mode sequence also for TImode on 64bit targets. 2020-11-22 Uro=C5=A1 Bizjak PR target/97873 gcc/ * config/i386/i386.md (abs2): Use SWI48DWI mode iterator. (*abs2_doubleword): Use DWIH mode iterator. (3): Use SWI48DWI mode iterator. (*3_doubleword): Use DWIH mode iterator. gcc/testsuite/ * gcc.target/i386/pr97873-2.c: New test. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Pushed to mainline. Uros. --0000000000002b264e05b4b8c656 Content-Type: text/plain; charset="US-ASCII"; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_khtmvt9r0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYubWQKaW5kZXggMmIyYmEyZjNhMjAuLjJiZWFlZTU0MThkIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZApAQCAtMTAxODAs OSArMTAxODAsOSBAQAogCiAoZGVmaW5lX2V4cGFuZCAiYWJzPG1vZGU+MiIKICAgWyhwYXJhbGxl bAotICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNXSTQ4eCAwICJyZWdpc3Rlcl9vcGVyYW5kIikK LQkgIChhYnM6U1dJNDh4Ci0JICAgIChtYXRjaF9vcGVyYW5kOlNXSTQ4eCAxICJnZW5lcmFsX29w ZXJhbmQiKSkpCisgICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U1dJNDhEV0kgMCAicmVnaXN0ZXJf b3BlcmFuZCIpCisJICAoYWJzOlNXSTQ4RFdJCisJICAgIChtYXRjaF9vcGVyYW5kOlNXSTQ4RFdJ IDEgImdlbmVyYWxfb3BlcmFuZCIpKSkKICAgICAgKGNsb2JiZXIgKHJlZzpDQyBGTEFHU19SRUcp KV0pXQogICAiVEFSR0VUX0NNT1ZFIgogewpAQCAtMTAyMDgsMzcgKzEwMjA4LDEyIEBACiAgICAg fQogfSkKIAotKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKmFiczxtb2RlPjJfMSIKLSAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6U1dJNDggMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKGFiczpTV0k0OAot CSAgKG1hdGNoX29wZXJhbmQ6U1dJNDggMSAiZ2VuZXJhbF9vcGVyYW5kIikpKQotICAgKGNsb2Ji ZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0KLSAgIlRBUkdFVF9DTU9WRSAmJiBpeDg2X3ByZV9yZWxv YWRfc3BsaXQgKCkiCi0gICAiIyIKLSAgICImJiAxIgotICBbKHBhcmFsbGVsCi0gICAgIFsoc2V0 IChyZWc6Q0NHT0MgRkxBR1NfUkVHKQotCSAgIChjb21wYXJlOkNDR09DCi0JICAgICAobmVnOlNX STQ4IChtYXRjaF9kdXAgMSkpCi0JICAgICAoY29uc3RfaW50IDApKSkKLSAgICAgIChzZXQgKG1h dGNoX2R1cCAyKQotCSAgIChuZWc6U1dJNDggKG1hdGNoX2R1cCAxKSkpXSkKLSAgIChzZXQgKG1h dGNoX2R1cCAwKQotICAgICAgICAoaWZfdGhlbl9lbHNlOlNXSTQ4Ci0JICAoZ2UgKHJlZzpDQ0dP QyBGTEFHU19SRUcpIChjb25zdF9pbnQgMCkpCi0JICAobWF0Y2hfZHVwIDIpCi0JICAobWF0Y2hf ZHVwIDEpKSldCi17Ci0gIG9wZXJhbmRzWzFdID0gZm9yY2VfcmVnICg8TU9ERT5tb2RlLCBvcGVy YW5kc1sxXSk7Ci0gIG9wZXJhbmRzWzJdID0gZ2VuX3JlZ19ydHggKDxNT0RFPm1vZGUpOwotfSkK LQotKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKmFic2RpMl9kb3VibGV3b3JkIgotICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkoYWJzOkRJCi0JICAobWF0 Y2hfb3BlcmFuZDpESSAxICJnZW5lcmFsX29wZXJhbmQiKSkpCisoZGVmaW5lX2luc25fYW5kX3Nw bGl0ICIqYWJzPGR3aT4yX2RvdWJsZXdvcmQiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxEV0k+ IDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCShhYnM6PERXST4KKwkgIChtYXRjaF9vcGVyYW5kOjxE V0k+IDEgImdlbmVyYWxfb3BlcmFuZCIpKSkKICAgIChjbG9iYmVyIChyZWc6Q0MgRkxBR1NfUkVH KSldCi0gICIhVEFSR0VUXzY0QklUICYmIFRBUkdFVF9DTU9WRQorICAiVEFSR0VUX0NNT1ZFCiAg ICAmJiBpeDg2X3ByZV9yZWxvYWRfc3BsaXQgKCkiCiAgICAiIyIKICAgICImJiAxIgpAQCAtMTAy NTUsMjUgKzEwMjMwLDUxIEBACiAgICAocGFyYWxsZWwKICAgICAgWyhzZXQgKHJlZzpDQ0dPQyBG TEFHU19SRUcpCiAJICAgKGNvbXBhcmU6Q0NHT0MKLQkgICAgIChuZWc6U0kgKG1hdGNoX2R1cCA1 KSkKKwkgICAgIChuZWc6RFdJSCAobWF0Y2hfZHVwIDUpKQogCSAgICAgKGNvbnN0X2ludCAwKSkp CiAgICAgICAoc2V0IChtYXRjaF9kdXAgNSkKLQkgICAobmVnOlNJIChtYXRjaF9kdXAgNSkpKV0p CisJICAgKG5lZzpEV0lIIChtYXRjaF9kdXAgNSkpKV0pCiAgICAoc2V0IChtYXRjaF9kdXAgMCkK LSAgICAgICAgKGlmX3RoZW5fZWxzZTpTSQorICAgICAgICAoaWZfdGhlbl9lbHNlOkRXSUgKIAkg IChnZSAocmVnOkNDR09DIEZMQUdTX1JFRykgKGNvbnN0X2ludCAwKSkKIAkgIChtYXRjaF9kdXAg MikKIAkgIChtYXRjaF9kdXAgMSkpKQogICAgKHNldCAobWF0Y2hfZHVwIDMpCi0gICAgICAgIChp Zl90aGVuX2Vsc2U6U0kKKyAgICAgICAgKGlmX3RoZW5fZWxzZTpEV0lICiAJICAoZ2UgKHJlZzpD Q0dPQyBGTEFHU19SRUcpIChjb25zdF9pbnQgMCkpCiAJICAobWF0Y2hfZHVwIDUpCiAJICAobWF0 Y2hfZHVwIDQpKSldCiB7Ci0gIG9wZXJhbmRzWzFdID0gZm9yY2VfcmVnIChESW1vZGUsIG9wZXJh bmRzWzFdKTsKLSAgb3BlcmFuZHNbMl0gPSBnZW5fcmVnX3J0eCAoREltb2RlKTsKKyAgb3BlcmFu ZHNbMV0gPSBmb3JjZV9yZWcgKDxEV0k+bW9kZSwgb3BlcmFuZHNbMV0pOworICBvcGVyYW5kc1sy XSA9IGdlbl9yZWdfcnR4ICg8RFdJPm1vZGUpOwogCi0gIHNwbGl0X2RvdWJsZV9tb2RlIChESW1v ZGUsICZvcGVyYW5kc1swXSwgMywgJm9wZXJhbmRzWzBdLCAmb3BlcmFuZHNbM10pOworICBzcGxp dF9kb3VibGVfbW9kZSAoPERXST5tb2RlLCAmb3BlcmFuZHNbMF0sIDMsICZvcGVyYW5kc1swXSwg Jm9wZXJhbmRzWzNdKTsKK30pCisKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIiphYnM8bW9kZT4y XzEiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNXSTQ4IDAgInJlZ2lzdGVyX29wZXJhbmQiKQor CShhYnM6U1dJNDgKKwkgIChtYXRjaF9vcGVyYW5kOlNXSTQ4IDEgImdlbmVyYWxfb3BlcmFuZCIp KSkKKyAgIChjbG9iYmVyIChyZWc6Q0MgRkxBR1NfUkVHKSldCisgICJUQVJHRVRfQ01PVkUKKyAg ICYmIGl4ODZfcHJlX3JlbG9hZF9zcGxpdCAoKSIKKyAgICIjIgorICAgIiYmIDEiCisgIFsocGFy YWxsZWwKKyAgICAgWyhzZXQgKHJlZzpDQ0dPQyBGTEFHU19SRUcpCisJICAgKGNvbXBhcmU6Q0NH T0MKKwkgICAgIChuZWc6U1dJNDggKG1hdGNoX2R1cCAxKSkKKwkgICAgIChjb25zdF9pbnQgMCkp KQorICAgICAgKHNldCAobWF0Y2hfZHVwIDIpCisJICAgKG5lZzpTV0k0OCAobWF0Y2hfZHVwIDEp KSldKQorICAgKHNldCAobWF0Y2hfZHVwIDApCisgICAgICAgIChpZl90aGVuX2Vsc2U6U1dJNDgK KwkgIChnZSAocmVnOkNDR09DIEZMQUdTX1JFRykgKGNvbnN0X2ludCAwKSkKKwkgIChtYXRjaF9k dXAgMikKKwkgIChtYXRjaF9kdXAgMSkpKV0KK3sKKyAgb3BlcmFuZHNbMV0gPSBmb3JjZV9yZWcg KDxNT0RFPm1vZGUsIG9wZXJhbmRzWzFdKTsKKyAgb3BlcmFuZHNbMl0gPSBnZW5fcmVnX3J0eCAo PE1PREU+bW9kZSk7CiB9KQogCiAoZGVmaW5lX2V4cGFuZCAiPGNvZGU+dGYyIgpAQCAtMTg5NjYs MTMgKzE4OTY3LDcxIEBACiAKIChkZWZpbmVfZXhwYW5kICI8Y29kZT48bW9kZT4zIgogICBbKHBh cmFsbGVsCi0gICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U1dJNDh4IDAgInJlZ2lzdGVyX29wZXJh bmQiKQotCSAgKG1heG1pbjpTV0k0OHgKLQkgICAgKG1hdGNoX29wZXJhbmQ6U1dJNDh4IDEgInJl Z2lzdGVyX29wZXJhbmQiKQotCSAgICAobWF0Y2hfb3BlcmFuZDpTV0k0OHggMiAiZ2VuZXJhbF9v cGVyYW5kIikpKQorICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNXSTQ4RFdJIDAgInJlZ2lzdGVy X29wZXJhbmQiKQorCSAgKG1heG1pbjpTV0k0OERXSQorCSAgICAobWF0Y2hfb3BlcmFuZDpTV0k0 OERXSSAxICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkgICAgKG1hdGNoX29wZXJhbmQ6U1dJNDhEV0kg MiAiZ2VuZXJhbF9vcGVyYW5kIikpKQogICAgICAoY2xvYmJlciAocmVnOkNDIEZMQUdTX1JFRykp XSldCiAgICJUQVJHRVRfQ01PVkUiKQogCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPGNvZGU+ PGR3aT4zX2RvdWJsZXdvcmQiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxEV0k+IDAgInJlZ2lz dGVyX29wZXJhbmQiKQorCShtYXhtaW46PERXST4KKwkgIChtYXRjaF9vcGVyYW5kOjxEV0k+IDEg InJlZ2lzdGVyX29wZXJhbmQiKQorCSAgKG1hdGNoX29wZXJhbmQ6PERXST4gMiAiZ2VuZXJhbF9v cGVyYW5kIikpKQorICAgKGNsb2JiZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0KKyAgIlRBUkdFVF9D TU9WRQorICAgJiYgaXg4Nl9wcmVfcmVsb2FkX3NwbGl0ICgpIgorICAiIyIKKyAgIiYmIDEiCisg IFsoc2V0IChtYXRjaF9kdXAgMCkKKwkoaWZfdGhlbl9lbHNlOkRXSUggKG1hdGNoX2R1cCA2KQor CSAgKG1hdGNoX2R1cCAxKQorCSAgKG1hdGNoX2R1cCAyKSkpCisgICAoc2V0IChtYXRjaF9kdXAg MykKKwkoaWZfdGhlbl9lbHNlOkRXSUggKG1hdGNoX2R1cCA2KQorCSAgKG1hdGNoX2R1cCA0KQor CSAgKG1hdGNoX2R1cCA1KSkpXQoreworICBvcGVyYW5kc1syXSA9IGZvcmNlX3JlZyAoPERXST5t b2RlLCBvcGVyYW5kc1syXSk7CisKKyAgc3BsaXRfZG91YmxlX21vZGUgKDxEV0k+bW9kZSwgJm9w ZXJhbmRzWzBdLCAzLCAmb3BlcmFuZHNbMF0sICZvcGVyYW5kc1szXSk7CisKKyAgcnR4IGNtcGxv WzJdID0geyBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0gfTsKKyAgcnR4IGNtcGhpWzJdID0geyBv cGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0gfTsKKworICBlbnVtIHJ0eF9jb2RlIGNvZGUgPSA8bWF4 bWluX3JlbD47CisKKyAgc3dpdGNoIChjb2RlKQorICAgIHsKKyAgICBjYXNlIExFOiBjYXNlIExF VToKKyAgICAgIHN0ZDo6c3dhcCAoY21wbG9bMF0sIGNtcGxvWzFdKTsKKyAgICAgIHN0ZDo6c3dh cCAoY21waGlbMF0sIGNtcGhpWzFdKTsKKyAgICAgIGNvZGUgPSBzd2FwX2NvbmRpdGlvbiAoY29k ZSk7CisgICAgICAvKiBGQUxMVEhSVSAqLworCisgICAgY2FzZSBHRTogY2FzZSBHRVU6CisgICAg ICB7CisJYm9vbCB1bnMgPSAoY29kZSA9PSBHRVUpOworCXJ0eCAoKnNiYl9pbnNuKSAobWFjaGlu ZV9tb2RlLCBydHgsIHJ0eCwgcnR4KQorCSAgPSB1bnMgPyBnZW5fc3ViM19jYXJyeV9jY2MgOiBn ZW5fc3ViM19jYXJyeV9jY2d6OworCisJZW1pdF9pbnNuIChnZW5fY21wXzEgKDxNT0RFPm1vZGUs IGNtcGxvWzBdLCBjbXBsb1sxXSkpOworCisJcnR4IHRtcCA9IGdlbl9ydHhfU0NSQVRDSCAoPE1P REU+bW9kZSk7CisJZW1pdF9pbnNuIChzYmJfaW5zbiAoPE1PREU+bW9kZSwgdG1wLCBjbXBoaVsw XSwgY21waGlbMV0pKTsKKworCXJ0eCBmbGFncyA9IGdlbl9ydHhfUkVHICh1bnMgPyBDQ0Ntb2Rl IDogQ0NHWm1vZGUsIEZMQUdTX1JFRyk7CisJb3BlcmFuZHNbNl0gPSBnZW5fcnR4X2ZtdF9lZSAo Y29kZSwgVk9JRG1vZGUsIGZsYWdzLCBjb25zdDBfcnR4KTsKKworCWJyZWFrOworICAgICAgfQor CisgICAgZGVmYXVsdDoKKyAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKKyAgICB9Cit9KQorCiAo ZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPGNvZGU+PG1vZGU+M18xIgogICBbKHNldCAobWF0Y2hf b3BlcmFuZDpTV0k0OCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkobWF4bWluOlNXSTQ4CkBAIC0x OTAyNyw2MyArMTkwODYsNiBAQAogICBvcGVyYW5kc1szXSA9IGdlbl9ydHhfZm10X2VlIChjb2Rl LCBWT0lEbW9kZSwgZmxhZ3MsIGNvbnN0MF9ydHgpOwogfSkKIAotKGRlZmluZV9pbnNuX2FuZF9z cGxpdCAiKjxjb2RlPmRpM19kb3VibGV3b3JkIgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAw ICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkobWF4bWluOkRJIChtYXRjaF9vcGVyYW5kOkRJIDEgInJl Z2lzdGVyX29wZXJhbmQiKQotCQkgICAobWF0Y2hfb3BlcmFuZDpESSAyICJnZW5lcmFsX29wZXJh bmQiKSkpCi0gICAoY2xvYmJlciAocmVnOkNDIEZMQUdTX1JFRykpXQotICAiIVRBUkdFVF82NEJJ VCAmJiBUQVJHRVRfQ01PVkUKLSAgICYmIGl4ODZfcHJlX3JlbG9hZF9zcGxpdCAoKSIKLSAgIiMi Ci0gICImJiAxIgotICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKGlmX3RoZW5fZWxzZTpTSSAobWF0 Y2hfZHVwIDYpCi0JICAobWF0Y2hfZHVwIDEpCi0JICAobWF0Y2hfZHVwIDIpKSkKLSAgIChzZXQg KG1hdGNoX2R1cCAzKQotCShpZl90aGVuX2Vsc2U6U0kgKG1hdGNoX2R1cCA2KQotCSAgKG1hdGNo X2R1cCA0KQotCSAgKG1hdGNoX2R1cCA1KSkpXQotewotICBvcGVyYW5kc1syXSA9IGZvcmNlX3Jl ZyAoREltb2RlLCBvcGVyYW5kc1syXSk7Ci0KLSAgc3BsaXRfZG91YmxlX21vZGUgKERJbW9kZSwg Jm9wZXJhbmRzWzBdLCAzLCAmb3BlcmFuZHNbMF0sICZvcGVyYW5kc1szXSk7Ci0KLSAgcnR4IGNt cGxvWzJdID0geyBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0gfTsKLSAgcnR4IGNtcGhpWzJdID0g eyBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0gfTsKLQotICBlbnVtIHJ0eF9jb2RlIGNvZGUgPSA8 bWF4bWluX3JlbD47Ci0KLSAgc3dpdGNoIChjb2RlKQotICAgIHsKLSAgICBjYXNlIExFOiBjYXNl IExFVToKLSAgICAgIHN0ZDo6c3dhcCAoY21wbG9bMF0sIGNtcGxvWzFdKTsKLSAgICAgIHN0ZDo6 c3dhcCAoY21waGlbMF0sIGNtcGhpWzFdKTsKLSAgICAgIGNvZGUgPSBzd2FwX2NvbmRpdGlvbiAo Y29kZSk7Ci0gICAgICAvKiBGQUxMVEhSVSAqLwotCi0gICAgY2FzZSBHRTogY2FzZSBHRVU6Ci0g ICAgICB7Ci0JYm9vbCB1bnMgPSAoY29kZSA9PSBHRVUpOwotCXJ0eCAoKnNiYl9pbnNuKSAobWFj aGluZV9tb2RlLCBydHgsIHJ0eCwgcnR4KQotCSAgPSB1bnMgPyBnZW5fc3ViM19jYXJyeV9jY2Mg OiBnZW5fc3ViM19jYXJyeV9jY2d6OwotCi0JZW1pdF9pbnNuIChnZW5fY21wXzEgKFNJbW9kZSwg Y21wbG9bMF0sIGNtcGxvWzFdKSk7Ci0KLQlydHggdG1wID0gZ2VuX3J0eF9TQ1JBVENIIChTSW1v ZGUpOwotCWVtaXRfaW5zbiAoc2JiX2luc24gKFNJbW9kZSwgdG1wLCBjbXBoaVswXSwgY21waGlb MV0pKTsKLQotCXJ0eCBmbGFncyA9IGdlbl9ydHhfUkVHICh1bnMgPyBDQ0Ntb2RlIDogQ0NHWm1v ZGUsIEZMQUdTX1JFRyk7Ci0Jb3BlcmFuZHNbNl0gPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgVk9J RG1vZGUsIGZsYWdzLCBjb25zdDBfcnR4KTsKLQotCWJyZWFrOwotICAgICAgfQotCi0gICAgZGVm YXVsdDoKLSAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKLSAgICB9Ci19KQotCiA7OyBBdm9pZCBj bGVhcmluZyBhIHJlZ2lzdGVyIGJldHdlZW4gYSBmbGFncyBzZXR0aW5nIGNvbXBhcmlzb24gYW5k IGl0cyB1c2UsCiA7OyBpLmUuIHByZWZlciAieG9ybCAlZWF4LCVlYXg7IHRlc3QvY21wIiBvdmVy ICJ0ZXN0L2NtcDsgbW92bCAkMCwgJWVheCIuCiAoZGVmaW5lX3BlZXBob2xlMgpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI5Nzg3My0yLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjk3ODczLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMjI1MTlhYjVhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjk3ODczLTIuYwpAQCAtMCwwICsxLDIzIEBACisvKiBQUiB0 YXJnZXQvOTc4NzMgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtbXNzZTIgLW1uby1zc2UzIC1tdHVuZT1nZW5lcmljIiB9ICovCisKKyNpZmRlZiBfX1NJ WkVPRl9JTlQxMjhfXwordHlwZWRlZiBfX2ludDEyOF90IFQ7CisjZWxzZQordHlwZWRlZiBsb25n IGxvbmcgVDsKKyNlbmRpZgorCitUIHRlc3RfYWJzIChUIHgpCit7CisgIHJldHVybiAoeCA8IDAp ID8gLXggOiB4OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFkYyIgfSB9 ICovCisKK1QgdGVzdF9zbWluIChUIHgsIFQgeSkKK3sKKyAgcmV0dXJuICh4IDwgeSkgPyB4IDog eTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzYmIiIH0gfSAqLwo= --0000000000002b264e05b4b8c656--