From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24974 invoked by alias); 28 Sep 2015 14:03:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 24964 invoked by uid 89); 28 Sep 2015 14:03:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.2 required=5.0 tests=AWL,BAYES_00,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mailout11.t-online.de Received: from mailout11.t-online.de (HELO mailout11.t-online.de) (194.25.134.85) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 28 Sep 2015 14:03:28 +0000 Received: from fwd14.aul.t-online.de (fwd14.aul.t-online.de [172.20.26.242]) by mailout11.t-online.de (Postfix) with SMTP id 5EFB3197AB7 for ; Mon, 28 Sep 2015 16:03:24 +0200 (CEST) Received: from [192.168.0.16] (rfAd0vZdQh8hPmDgjXVbYUuPllT29xShvCQNjtBgOrwuFzsFFik0W60bv84QXsAQlD@[115.165.93.200]) by fwd14.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384 encrypted) esmtp id 1ZgZ1T-0KaT1k0; Mon, 28 Sep 2015 16:03:19 +0200 Message-ID: <1443448996.2509.133.camel@t-online.de> Subject: [SH][committed] Improve treg_set_expr matching From: Oleg Endo To: gcc-patches Date: Mon, 28 Sep 2015 14:53:00 -0000 Content-Type: multipart/mixed; boundary="=-Dwbl/LEFWkEjChhQlspU" Mime-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2015-09/txt/msg02116.txt.bz2 --=-Dwbl/LEFWkEjChhQlspU Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Content-length: 944 Hi, This patch has been hanging around in my queue for a while. Basically, it uses reverse_condition to get better matching for treg_set_expr. Tested on sh-elf with make -k check RUNTESTFLAGS="--target_board=sh-sim \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}" and no new failures. Committed as r228202. Cheers, Oleg gcc/ChangeLog: PR target/54236 * config/sh/predicates.md (t_reg_operand, negt_reg_operand): Allow and handle ne and eq codes. * config/sh/sh.c (sh_rtx_costs): Adjust matching of tst #imm,r0 insn. (sh_recog_treg_set_expr): Early accept negt_reg_operand. Eearly reject CONST_INT_P. Use reverse_condition. (sh_split_treg_set_expr): Likewise. gcc/testsuite/ChangeLog: PR target/54236 * gcc.target/sh/pr54236-1.c (test_09, test_10, test_11): New. * gcc.target/sh/pr59533-1.c (test_23, test_24, test_25, test_26, test_27): New. * gcc.target/sh/pr54236-5.c: New. * gcc.target/sh/pr54236-6.c: New. --=-Dwbl/LEFWkEjChhQlspU Content-Disposition: attachment; filename="sh_pr54236_10_3.patch" Content-Type: text/x-patch; name="sh_pr54236_10_3.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 18317 SW5kZXg6IGdjYy9jb25maWcvc2gvcHJlZGljYXRlcy5tZAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvY29uZmlnL3NoL3ByZWRpY2F0ZXMubWQJ KHJldmlzaW9uIDIyODE3NSkKKysrIGdjYy9jb25maWcvc2gvcHJlZGljYXRl cy5tZAkod29ya2luZyBjb3B5KQpAQCAtMTE1OCwxMCArMTE1OCwxOCBAQAog CiA7OyBBIHByZWRpY2F0ZSBkZXNjcmliaW5nIHRoZSBUIGJpdCByZWdpc3Rl ciBpbiBhbnkgZm9ybS4KIChkZWZpbmVfcHJlZGljYXRlICJ0X3JlZ19vcGVy YW5kIgotICAobWF0Y2hfY29kZSAicmVnLHN1YnJlZyxzaWduX2V4dGVuZCx6 ZXJvX2V4dGVuZCIpCisgIChtYXRjaF9jb2RlICJyZWcsc3VicmVnLHNpZ25f ZXh0ZW5kLHplcm9fZXh0ZW5kLG5lLGVxIikKIHsKICAgc3dpdGNoIChHRVRf Q09ERSAob3ApKQogICAgIHsKKyAgICAgIGNhc2UgRVE6CisJcmV0dXJuIHRf cmVnX29wZXJhbmQgKFhFWFAgKG9wLCAwKSwgR0VUX01PREUgKFhFWFAgKG9w LCAwKSkpCisJICAgICAgICYmIFhFWFAgKG9wLCAxKSA9PSBjb25zdDFfcnR4 OworCisgICAgICBjYXNlIE5FOgorCXJldHVybiB0X3JlZ19vcGVyYW5kIChY RVhQIChvcCwgMCksIEdFVF9NT0RFIChYRVhQIChvcCwgMCkpKQorCSAgICAg ICAmJiBYRVhQIChvcCwgMSkgPT0gY29uc3QwX3J0eDsKKwogICAgICAgY2Fz ZSBSRUc6CiAJcmV0dXJuIFJFR05PIChvcCkgPT0gVF9SRUc7CiAKQEAgLTEx ODMsMTMgKzExOTEsMjEgQEAKIAogOzsgQSBwcmVkaWNhdGUgZGVzY3JpYmlu ZyBhIG5lZ2F0ZWQgVCBiaXQgcmVnaXN0ZXIuCiAoZGVmaW5lX3ByZWRpY2F0 ZSAibmVndF9yZWdfb3BlcmFuZCIKLSAgKG1hdGNoX2NvZGUgInN1YnJlZyx4 b3IiKQorICAobWF0Y2hfY29kZSAic3VicmVnLHhvcixuZSxlcSIpCiB7CiAg IHN3aXRjaCAoR0VUX0NPREUgKG9wKSkKICAgICB7CisgICAgICBjYXNlIEVR OgorCXJldHVybiB0X3JlZ19vcGVyYW5kIChYRVhQIChvcCwgMCksIEdFVF9N T0RFIChYRVhQIChvcCwgMCkpKQorCSAgICAgICAmJiBYRVhQIChvcCwgMSkg PT0gY29uc3QwX3J0eDsKKworICAgICAgY2FzZSBORToKKwlyZXR1cm4gdF9y ZWdfb3BlcmFuZCAoWEVYUCAob3AsIDApLCBHRVRfTU9ERSAoWEVYUCAob3As IDApKSkKKwkgICAgICAgJiYgWEVYUCAob3AsIDEpID09IGNvbnN0MV9ydHg7 CisKICAgICAgIGNhc2UgWE9SOgogCXJldHVybiB0X3JlZ19vcGVyYW5kIChY RVhQIChvcCwgMCksIEdFVF9NT0RFIChYRVhQIChvcCwgMCkpKQotCSAgICAg ICAmJiBzYXRpc2ZpZXNfY29uc3RyYWludF9NIChYRVhQIChvcCwgMSkpOwor CSAgICAgICAmJiBYRVhQIChvcCwgMSkgPT0gY29uc3QxX3J0eDsKIAogICAg ICAgY2FzZSBTVUJSRUc6CiAJcmV0dXJuIG5lZ3RfcmVnX29wZXJhbmQgKFhF WFAgKG9wLCAwKSwgR0VUX01PREUgKFhFWFAgKG9wLCAwKSkpOwpJbmRleDog Z2NjL2NvbmZpZy9zaC9zaC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGdjYy9jb25maWcvc2gvc2guYwkocmV2aXNpb24gMjI4MTc2KQorKysgZ2Nj L2NvbmZpZy9zaC9zaC5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNTkyLDEzICsz NTkyLDEyIEBACiAKICAgICBjYXNlIEVROgogICAgICAgLyogQW4gYW5kIHdp dGggYSBjb25zdGFudCBjb21wYXJlZCBhZ2FpbnN0IHplcm8gaXMKLQkgbW9z dCBsaWtlbHkgZ29pbmcgdG8gYmUgYSBUU1QgI2ltbSwgUjAgaW5zdHJ1Y3Rp b24uCi0JIE5vdGljZSB0aGF0IHRoaXMgZG9lcyBub3QgY2F0Y2ggdGhlIHpl cm9fZXh0cmFjdCB2YXJpYW50cyBmcm9tCi0JIHRoZSBtZCBmaWxlLiAgKi8K KwkgbW9zdCBsaWtlbHkgZ29pbmcgdG8gYmUgYSBUU1QgI2ltbSwgUjAgaW5z dHJ1Y3Rpb24uICAqLwogICAgICAgaWYgKFhFWFAgKHgsIDEpID09IGNvbnN0 MF9ydHgKLSAgICAgICAgICAmJiAoR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9 PSBBTkQKLSAgICAgICAgICAgICAgfHwgKFNVQlJFR19QIChYRVhQICh4LCAw KSkKLQkJICAmJiBHRVRfQ09ERSAoU1VCUkVHX1JFRyAoWEVYUCAoeCwgMCkp KSA9PSBBTkQpKSkKKyAgICAgICAgICAmJiAoKEdFVF9DT0RFIChYRVhQICh4 LCAwKSkgPT0gQU5ECisgICAgICAgICAgICAgICB8fCAoU1VCUkVHX1AgKFhF WFAgKHgsIDApKQorCQkgICAmJiBHRVRfQ09ERSAoU1VCUkVHX1JFRyAoWEVY UCAoeCwgMCkpKSA9PSBBTkQpKQorCSAgICAgIHx8IEdFVF9DT0RFIChYRVhQ ICh4LCAwKSkgPT0gWkVST19FWFRSQUNUKSkKIAl7CiAJICAqdG90YWwgPSAx OwogCSAgcmV0dXJuIHRydWU7CkBAIC0xNDIwMCw3ICsxNDE5OSw4IEBACiAg ICAgcmV0dXJuIGZhbHNlOwogCiAgIC8qIEVhcmx5IGFjY2VwdCBrbm93biBw b3NzaWJsZSBvcGVyYW5kcyBiZWZvcmUgZG9pbmcgcmVjb2cuICAqLwotICBp ZiAob3AgPT0gY29uc3QwX3J0eCB8fCBvcCA9PSBjb25zdDFfcnR4IHx8IHRf cmVnX29wZXJhbmQgKG9wLCBtb2RlKSkKKyAgaWYgKG9wID09IGNvbnN0MF9y dHggfHwgb3AgPT0gY29uc3QxX3J0eCB8fCB0X3JlZ19vcGVyYW5kIChvcCwg bW9kZSkKKyAgICAgIHx8IG5lZ3RfcmVnX29wZXJhbmQgKG9wLCBtb2RlKSkK ICAgICByZXR1cm4gdHJ1ZTsKIAogICAvKiBFYXJseSByZWplY3QgaW1wb3Nz aWJsZSBvcGVyYW5kcyBiZWZvcmUgZG9pbmcgcmVjb2cuCkBAIC0xNDIwOSw4 ICsxNDIwOSw4IEBACiAgICAgIHN1Y2ggYXMgbG93ZXItc3VicmVnIHdpbGwg YmFpbCBvdXQuICBTb21lIGluc25zIHN1Y2ggYXMgU0g0QSBtb3Z1YSBhcmUK ICAgICAgZG9uZSB3aXRoIFVOU1BFQywgc28gbXVzdCByZWplY3QgdGhvc2Us IHRvbywgb3IgZWxzZSBpdCB3b3VsZCByZXN1bHQKICAgICAgaW4gYW4gaW52 YWxpZCByZWcgLT4gdHJlZyBtb3ZlLiAgKi8KLSAgaWYgKHJlZ2lzdGVyX29w ZXJhbmQgKG9wLCBtb2RlKSB8fCBtZW1vcnlfb3BlcmFuZCAob3AsIG1vZGUp Ci0gICAgICB8fCBzaF91bnNwZWNfaW5zbl9wIChvcCkpCisgIGlmIChDT05T VF9JTlRfUCAob3ApIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wLCBtb2RlKQor ICAgICAgfHwgbWVtb3J5X29wZXJhbmQgKG9wLCBtb2RlKSB8fCBzaF91bnNw ZWNfaW5zbl9wIChvcCkpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGlmICgh Y2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSkKQEAgLTE0MjMwLDI2ICsxNDIzMCwz MCBAQAogICBTRVRfUFJFVl9JTlNOIChpKSA9IE5VTEw7CiAgIFNFVF9ORVhU X0lOU04gKGkpID0gTlVMTDsKIAorICAvKiBJZiB0aGUgY29tcGFyaXNvbiBv cCBkb2Vzbid0IGhhdmUgYSByZXN1bHQgbW9kZSwgc2V0IGl0IHRvIFNJbW9k ZS4gICovCisgIG1hY2hpbmVfbW9kZSBwcmV2X29wX21vZGUgPSBHRVRfTU9E RSAob3ApOworICBpZiAoQ09NUEFSSVNPTl9QIChvcCkgJiYgcHJldl9vcF9t b2RlID09IFZPSURtb2RlKQorICAgIFBVVF9NT0RFIChvcCwgU0ltb2RlKTsK KwogICBpbnQgcmVzdWx0ID0gcmVjb2cgKFBBVFRFUk4gKGkpLCBpLCAwKTsK IAotICAvKiBJdCBzZWVtcyB0aGVyZSBpcyBubyBpbnNuIGxpa2UgdGhhdC4g IENyZWF0ZSBhIHNpbXBsZSBuZWdhdGVkCi0gICAgIHZlcnNpb24gYW5kIHRy eSBhZ2Fpbi4gIElmIHdlIGhpdCBhIG5lZ2F0ZWQgZm9ybSwgd2UnbGwgYWxs b3cgdGhhdAotICAgICBhbmQgYXBwZW5kIGEgbm90dCBzZXF1ZW5jZSB3aGVu IHNwbGl0dGluZyBvdXQgdGhlIGluc25zLiAgSW5zbnMgdGhhdAotICAgICBk byB0aGUgc3BsaXQgY2FuIHRoZW4gcmVtb3ZlIHRoZSB0cmFpbGluZyBub3R0 IGlmIHRoZXkga25vdyBob3cgdG8KLSAgICAgZGVhbCB3aXRoIGl0LiAgKi8K LSAgaWYgKHJlc3VsdCA8IDAgJiYgR0VUX0NPREUgKG9wKSA9PSBFUSkKKyAg LyogSXQgc2VlbXMgdGhlcmUgaXMgbm8gaW5zbiBsaWtlIHRoYXQuICBDcmVh dGUgYSBuZWdhdGVkIHZlcnNpb24gYW5kCisgICAgIHRyeSBhZ2Fpbi4gIElm IHdlIGhpdCBhIG5lZ2F0ZWQgZm9ybSwgd2UnbGwgYWxsb3cgdGhhdCBhbmQg YXBwZW5kIGEKKyAgICAgbm90dCBzZXF1ZW5jZSB3aGVuIHNwbGl0dGluZyBv dXQgdGhlIGluc25zLiAgSW5zbnMgdGhhdCBkbyB0aGUgc3BsaXQKKyAgICAg Y2FuIHRoZW4gcmVtb3ZlIHRoZSB0cmFpbGluZyBub3R0IGlmIHRoZXkga25v dyBob3cgdG8gZGVhbCB3aXRoIGl0LiAgKi8KKyAgaWYgKHJlc3VsdCA8IDAg JiYgQ09NUEFSSVNPTl9QIChvcCkpCiAgICAgewotICAgICAgUFVUX0NPREUg KG9wLCBORSk7CisgICAgICBtYWNoaW5lX21vZGUgY21wX21vZGUgPSBHRVRf TU9ERSAoWEVYUCAob3AsIDApKTsKKyAgICAgIGlmIChjbXBfbW9kZSA9PSBW T0lEbW9kZSkKKyAgICAgICAgY21wX21vZGUgPSBHRVRfTU9ERSAoWEVYUCAo b3AsIDEpKTsKKworICAgICAgcnR4X2NvZGUgcHJldl9jb2RlID0gR0VUX0NP REUgKG9wKTsKKyAgICAgIFBVVF9DT0RFIChvcCwgcmV2ZXJzZV9jb25kaXRp b24gKEdFVF9DT0RFIChvcCkpKTsKICAgICAgIHJlc3VsdCA9IHJlY29nIChQ QVRURVJOIChpKSwgaSwgMCk7Ci0gICAgICBQVVRfQ09ERSAob3AsIEVRKTsK KyAgICAgIFBVVF9DT0RFIChvcCwgcHJldl9jb2RlKTsKICAgICB9Ci0gIGlm IChyZXN1bHQgPCAwICYmIEdFVF9DT0RFIChvcCkgPT0gTkUpCi0gICAgewot ICAgICAgUFVUX0NPREUgKG9wLCBFUSk7Ci0gICAgICByZXN1bHQgPSByZWNv ZyAoUEFUVEVSTiAoaSksIGksIDApOwotICAgICAgUFVUX0NPREUgKG9wLCBO RSk7Ci0gICAgfQogCisgIFBVVF9NT0RFIChvcCwgcHJldl9vcF9tb2RlKTsK ICAgcmVjb2dfZGF0YSA9IHByZXZfcmVjb2dfZGF0YTsKICAgcmV0dXJuIHJl c3VsdCA+PSAwOwogfQpAQCAtMTQzNTAsMzcgKzE0MzU0LDQzIEBACiAgICAg ICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbiIpOwogICAgIH0KIAorICAvKiBJ ZiB0aGUgaW5zbiBpcyBub3QgZm91bmQsIHdlIHdpbGwgdHJ5IGEgbmVnYXRl ZCBmb3JtIGFuZCBhcHBlbmQKKyAgICAgYSBub3R0LiAgKi8KKyAgYm9vbCBh cHBlbmRfbm90dCA9IGZhbHNlOworCiAgIC8qIFdlIGFyZSBnb2luZyB0byBp bnZva2UgcmVjb2cvc3BsaXRfaW5zbnMgaW4gYSByZS1lbnRyYW50IHdheSBh bmQgdGh1cwogICAgICBoYXZlIHRvIGNhcHR1cmUgaXRzIGN1cnJlbnQgc3Rh dGUgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcy4gICovCiAgIHJlY29nX2Rh dGFfZCBwcmV2X3JlY29nX2RhdGEgPSByZWNvZ19kYXRhOwogCi0gIGludCBp bnNuX2NvZGUgPSByZWNvZyAoUEFUVEVSTiAoaSksIGksIDApOwotCi0gIC8q IElmIHRoZSBpbnNuIHdhcyBub3QgZm91bmQsIHNlZSBpZiB3ZSBtYXRjaGVk IHRoZSBuZWdhdGVkIGZvcm0gYmVmb3JlCi0gICAgIGFuZCBhcHBlbmQgYSBu b3R0LiAgKi8KLSAgYm9vbCBhcHBlbmRfbm90dCA9IGZhbHNlOwotCi0gIGlm IChpbnNuX2NvZGUgPCAwICYmIEdFVF9DT0RFICh4KSA9PSBFUSkKKyAgaWYg KG5lZ3RfcmVnX29wZXJhbmQgKHgsIEdFVF9NT0RFICh4KSkpCiAgICAgewot ICAgICAgUFVUX0NPREUgKHgsIE5FKTsKLSAgICAgIGluc25fY29kZSA9IHJl Y29nIChQQVRURVJOIChpKSwgaSwgMCk7Ci0gICAgICBpZiAoaW5zbl9jb2Rl ID49IDApCi0JYXBwZW5kX25vdHQgPSB0cnVlOwotICAgICAgZWxzZQotCVBV VF9DT0RFICh4LCBFUSk7CisgICAgICAvKiBUaGlzIGlzIGEgbm9ybWFsIG1v dnQgZm9sbG93ZWQgYnkgYSBub3R0LiAgSXQgd2lsbCBiZSBjb252ZXJ0ZWQK KwkgaW50byBhIG1vdnJ0IGFmdGVyIGluaXRpYWwgZXhwYW5zaW9uLiAgKi8K KyAgICAgIFhFWFAgKFBBVFRFUk4gKGkpLCAxKSA9IGdldF90X3JlZ19ydHgg KCk7CisgICAgICBhcHBlbmRfbm90dCA9IHRydWU7CiAgICAgfQotICBpZiAo aW5zbl9jb2RlIDwgMCAmJiBHRVRfQ09ERSAoeCkgPT0gTkUpCisgIGVsc2UK ICAgICB7Ci0gICAgICBQVVRfQ09ERSAoeCwgRVEpOwotICAgICAgaW5zbl9j b2RlID0gcmVjb2cgKFBBVFRFUk4gKGkpLCBpLCAwKTsKLSAgICAgIGlmIChp bnNuX2NvZGUgPj0gMCkKLQlhcHBlbmRfbm90dCA9IHRydWU7Ci0gICAgICBl bHNlCi0JUFVUX0NPREUgKHgsIE5FKTsKKyAgICAgIC8qIElmIHRoZSBjb21w YXJpc29uIG9wIGRvZXNuJ3QgaGF2ZSBhIG1vZGUgc2V0LCBzZXQgaXQgdG8g U0ltb2RlLiAgKi8KKyAgICAgIGlmIChDT01QQVJJU09OX1AgKHgpICYmIEdF VF9NT0RFICh4KSA9PSBWT0lEbW9kZSkKKwlQVVRfTU9ERSAoeCwgU0ltb2Rl KTsKKworICAgICAgaW50IGluc25fY29kZSA9IHJlY29nIChQQVRURVJOIChp KSwgaSwgMCk7CisKKyAgICAgIGlmIChpbnNuX2NvZGUgPCAwICYmIENPTVBB UklTT05fUCAoeCkpCisJeworCSAgbWFjaGluZV9tb2RlIGNtcF9tb2RlID0g R0VUX01PREUgKFhFWFAgKHgsIDApKTsKKwkgIGlmIChjbXBfbW9kZSA9PSBW T0lEbW9kZSkKKwkgICAgY21wX21vZGUgPSBHRVRfTU9ERSAoWEVYUCAoeCwg MSkpOworCisJICBQVVRfQ09ERSAoeCwgcmV2ZXJzZV9jb25kaXRpb24gKEdF VF9DT0RFICh4KSkpOworCSAgaW5zbl9jb2RlID0gcmVjb2cgKFBBVFRFUk4g KGkpLCBpLCAwKTsKKwkgIGFwcGVuZF9ub3R0ID0gdHJ1ZTsKKwl9CisKKyAg ICAgIGdjY19hc3NlcnQgKGluc25fY29kZSA+PSAwKTsKICAgICB9CiAKLSAg Z2NjX2Fzc2VydCAoaW5zbl9jb2RlID49IDApOwotCiAgIC8qIFRyeSB0byBy ZWN1cnNpdmVseSBzcGxpdCB0aGUgaW5zbi4gIFNvbWUgaW5zbnMgbWlnaHQg cmVmdXNlIHRvIHNwbGl0CiAgICAgIGFueSBmdXJ0aGVyIHdoaWxlIHdlIGFy ZSBpbiB0aGUgdHJlZ19zZXRfZXhwciBzcGxpdHRpbmcgcGhhc2UuICBUaGV5 CiAgICAgIHdpbGwgYmUgZW1pdHRlZCBhcyBwYXJ0IG9mIHRoZSBvdXRlciBp bnNuIGFuZCB0aGVuIHNwbGl0IGFnYWluLiAgKi8KSW5kZXg6IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9zaC9wcjU0MjM2LTEuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvcHI1 NDIzNi0xLmMJKHJldmlzaW9uIDIyODE3NSkKKysrIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9zaC9wcjU0MjM2LTEuYwkod29ya2luZyBjb3B5KQpAQCAt NCw4ICs0LDggQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICAqLwogLyogeyBk Zy1vcHRpb25zICItTzEiIH0gKi8KIC8qIHsgZGctc2tpcC1pZiAiIiB7ICJz aCotKi0qIiB9IHsgIi1tNSoifSB7ICIiIH0gfSAqLwotLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJhZGRjIiA0IH0gfSAqLwotLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJzdWJjIiAzIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJh ZGRjIiA2IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJzdWJjIiA0IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJzZXR0IiA1IH0gfSAqLwogCiAvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm5lZ2MiIDIgeyB0YXJnZXQg eyAhIHNoMmEgfSB9IH0gfSAgKi8KQEAgLTg2LDMgKzg2LDI1IEBACiAgIC8q IDF4IGFkZGMsIDF4IHNldHQgICovCiAgIHJldHVybiAoYSA8PCAxKSArIDE7 CiB9CisKK3Vuc2lnbmVkIGludAordGVzdF8wOSAodW5zaWduZWQgaW50IHgp Cit7CisgIC8qIDF4IHRzdCwgMXggYWRkYyAgKi8KKyAgcmV0dXJuIHggLSAo eCAhPSAwKTsKK30KKwordW5zaWduZWQgaW50Cit0ZXN0XzEwICh1bnNpZ25l ZCBpbnQgeCkKK3sKKyAgLyogMXggdHN0LCAxeCBzdWJjICAqLworICByZXR1 cm4geCArICh4ID09IDApOworfQorCit1bnNpZ25lZCBpbnQKK3Rlc3RfMTEg KHVuc2lnbmVkIGludCB4KQoreworICAvKiAxeCB0c3QsIDF4IGFkZGMgICov CisgIHJldHVybiB4ICsgKHggIT0gMCk7Cit9CisKSW5kZXg6IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9zaC9wcjU0MjM2LTUuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvcHI1 NDIzNi01LmMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvc2gvcHI1NDIzNi01LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr MSw4OSBAQAorLyogQ2hlY2sgdGhhdCBhZGRjIGFuZCBzdWJjIGluc3RydWN0 aW9ucyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkIGluCisgICBjb21iaW5h dGlvbiB3aXRoIGlmY3Z0LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICAq LworLyogeyBkZy1vcHRpb25zICItTzIiIH0gICovCisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAic3ViYyIgNCB7IHRhcmdldCB7 ICEgc2gyYSB9IH0gfSB9ICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJhZGRjIiA0IHsgdGFyZ2V0IHsgISBzaDJhIH0gfSB9 IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Im5vdFx0IiAwIHsgdGFyZ2V0IHsgISBzaDJhIH0gfSB9IH0gICovCisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAic3ViYyIgNCB7 IHRhcmdldCB7IHNoMmEgfSB9IH0gfSAgKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAiYWRkYyIgNCB7IHRhcmdldCB7IHNoMmEg fSB9IH0gfSAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibm90dCIgMCB7IHRhcmdldCB7IHNoMmEgfSB9IH0gfSAgKi8KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ0c3RcdCIg NCB9IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgImNtcC9lcSIgMSB9IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgImNtcC9wbCIgMiB9IH0gICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNtcC9ndCIgMSB9IH0gICov CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm1vdnQi IH0gfSAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg Im5lZ2MiIH0gfSAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgIm1vdnJ0IiB9IH0gICovCisKK2ludAordGVzdF8wMCAoaW50IHgs IGludCB5KQoreworICAvKiAxeCB0c3QsIDF4IHN1YmMgICovCisgIGlmICh5 KQorICAgICsreDsKKyAgcmV0dXJuIHg7Cit9CisKK2ludAordGVzdF8wMSAo aW50IHgsIGludCB5KQoreworICAvKiAxeCB0c3QsIDF4IGFkZGMgICovCisg IGlmICh5KQorICAgIC0teDsKKyAgcmV0dXJuIHg7Cit9CisKK2ludAordGVz dF8wMiAoaW50IHgsIGludCB5KQoreworICAvKiAxeCB0c3QsIDF4IGFkZGMg ICovCisgIGlmICgheSkKKyAgICArK3g7CisgIHJldHVybiB4OworfQorCitp bnQKK3Rlc3RfMDMgKGludCB4LCBpbnQgeSkKK3sKKyAgLyogMXggdHN0LCAx eCBzdWJjICAqLworICBpZiAoIXkpCisgICAgLS14OworICByZXR1cm4geDsK K30KKworaW50Cit0ZXN0XzA0IChpbnQgeCwgaW50IHkpCit7CisgIC8qIDF4 IGNtcC9lcSwgMXggYWRkYyAgKi8KKyAgaWYgKHkgPT0geCkKKyAgICArK3g7 CisgIHJldHVybiB4OworfQorCitpbnQKK3Rlc3RfMDUgKGludCB4LCBpbnQg eSkKK3sKKyAgLyogMXggY21wL2d0LCAxeCBzdWJjICAqLworICBpZiAoeSA8 IDQpCisgICAgKyt4OworICByZXR1cm4geDsKK30KKworaW50Cit0ZXN0XzA2 IChpbnQgeCkKK3sKKyAgLyogMXggY21wL3BsLCAxeCBhZGRjICAqLworICBy ZXR1cm4geCA+IDAgPyB4ICsgMSA6IHg7Cit9CisKK2ludAordGVzdF8wNyAo aW50IHgpCit7CisgIC8qIDF4IGNtcC9wbCwgMXggc3ViYyAgKi8KKyAgcmV0 dXJuIHggPiAwID8geCAtIDEgOiB4OworfQpJbmRleDogZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3NoL3ByNTQyMzYtNi5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9zaC9wcjU0MjM2 LTYuYwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9zaC9wcjU0MjM2LTYuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1 IEBACisvKiBJbiB0aGlzIHNuaXBwZXQsIHRoZXJlIHdhcyBhIG1pc3NlZCBz dWJjIGNhc2U6CisJdHN0CSMxLHIwCisJbW92dAlyMAorCW5lZwlyMCxyMAor CisgICB3aGljaCBzaG91bGQgYmU6CisJdHN0CSMxLHIwCisJc3ViYwlyMCxy MAorKi8KKworLyogeyBkZy1kbyBjb21waWxlIH0gICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiIgfSAgKi8KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHt0c3QJIzEscjB9IDEgfSB9ICAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtzdWJjCXJ9IDEgfSB9ICAq LworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3Z0 fG5vdHxuZWdcbW92cnQiIH0gfSAgKi8KKworCitzdHJ1Y3QgaW5vZGUKK3sK KyAgdW5zaWduZWQgaW50IGlfZ2lkOworfTsKKworc3RydWN0IGlhdHRyCit7 CisgIHVuc2lnbmVkIGludCBpYV92YWxpZDsKKyAgdW5zaWduZWQgaW50IGlh X2dpZDsKK307CisKK3N0cnVjdCB0YXNrX3N0cnVjdAoreworICB1bnNpZ25l ZCBsb25nIGZsYWdzOworICB1bnNpZ25lZCBpbnQgY2FwX2VmZmVjdGl2ZTsK K307CisKK2V4dGVybiBpbnQgaW5fZ3JvdXBfcCAodW5zaWduZWQgaW50KTsK Kworc3RhdGljIGlubGluZSBzdHJ1Y3QgdGFza19zdHJ1Y3QqCitnZXRfY3Vy cmVudCAodm9pZCkKK3sKKyAgc3RydWN0IHRhc2tfc3RydWN0ICpjdXJyZW50 OworICByZXR1cm4gY3VycmVudDsKK30KKworc3RhdGljIGlubGluZSBpbnQK K2NhcGFibGUgKGludCBjYXApCit7CisgIGlmICgoKGdldF9jdXJyZW50KCkt PmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkpKSkKKyAgICB7CisgICAg ICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOworICAgICAg cmV0dXJuIDE7CisgICAgfQorICByZXR1cm4gMDsKK30KKworaW50Citpbm9k ZV9jaGFuZ2Vfb2sgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0 ciAqYXR0cikKK3sKKyAgaW50IHJldHZhbCA9IC0xOworICB1bnNpZ25lZCBp bnQgaWFfdmFsaWQgPSBhdHRyLT5pYV92YWxpZDsKKworICBpZiAoaWFfdmFs aWQgJiA1MTIpCisgICAgZ290byBmaW5lOworCisgIGlmICgoaWFfdmFsaWQg JiA0KQorICAgICAgJiYgKCFpbl9ncm91cF9wKGF0dHItPmlhX2dpZCkgJiYg YXR0ci0+aWFfZ2lkICE9IGlub2RlLT5pX2dpZCkKKyAgICAgICYmICFjYXBh YmxlKDApKQorICAgIGdvdG8gZXJyb3I7CisKK2ZpbmU6CisgcmV0dmFsID0g MDsKK2Vycm9yOgorIHJldHVybiByZXR2YWw7Cit9CkluZGV4OiBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvc2gvcHI1OTUzMy0xLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3NoL3By NTk1MzMtMS5jCShyZXZpc2lvbiAyMjgxNzUpCisrKyBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvc2gvcHI1OTUzMy0xLmMJKHdvcmtpbmcgY29weSkKQEAg LTksMTMgKzksMTMgQEAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiYW5kIiAzIH0gfSAgKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAiZXh0dS5iIiA1IH0gfSAgKi8KIAotLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjbXAvcHoiIDIyIHsg dGFyZ2V0IHsgISBzaDJhIH0gfSB9IH0gICovCi0vKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgImFkZGMiIDMgeyB0YXJnZXQgeyAhIHNo MmEgfSB9IH0gfSAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAic3ViYyIgMTIgeyB0YXJnZXQgeyAhIHNoMmEgfSB9IH0gfSAg Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY21w L3B6IiAyNyB7IHRhcmdldCB7ICEgc2gyYSB9IH0gfSB9ICAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJhZGRjIiA0IHsgdGFy Z2V0IHsgISBzaDJhIH0gfSB9IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInN1YmMiIDE2IHsgdGFyZ2V0IHsgISBzaDJh IH0gfSB9IH0gICovCiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiY21wL3B6IiAyMCB7IHRhcmdldCB7IHNoMmEgfSB9IH0gfSAg Ki8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYWRk YyIgNSB7IHRhcmdldCB7IHNoMmEgfSB9IH0gfSAgKi8KLS8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAic3ViYyIgMTAgeyB0YXJnZXQg eyBzaDJhIH0gfSB9IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgImNtcC9weiIgMjUgeyB0YXJnZXQgeyBzaDJhIH0gfSB9 IH0gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg ImFkZGMiIDYgeyB0YXJnZXQgeyBzaDJhIH0gfSB9IH0gICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN1YmMiIDE0IHsgdGFy Z2V0IHsgc2gyYSB9IH0gfSB9ICAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJibGQiIDIgeyB0YXJnZXQgeyBzaDJhIH0gfSB9 IH0gICovCiAKIGludApAQCAtMTgzLDMgKzE4MywzOCBAQAogICAvKiAxeCBj bXAvcHosIDF4IG1vdnQgICovCiAgIHJldHVybiAoeCA+PiAzMSkgKyAxOwog fQorCitpbnQKK3Rlc3RfMjMgKGludCB4KQoreworICAvKiAxeCBjbXAvcHos IDF4IHN1YmMgKi8KKyAgcmV0dXJuIHggPCAwID8geCArIDEgOiB4OworfQor Cit1bnNpZ25lZCBpbnQKK3Rlc3RfMjQgKHVuc2lnbmVkIGludCB4KQorewor ICAvKiAxeCBjbXAvcHosIDF4IHN1YmMgKi8KKyAgcmV0dXJuIHggJiAweDgw MDAwMDAwID8geCArIDEgOiB4OworfQorCit1bnNpZ25lZCBpbnQKK3Rlc3Rf MjUgKHVuc2lnbmVkIGludCB4KQoreworICAvKiAxeCBjbXAvcHosIDF4IHN1 YmMgKi8KKyAgcmV0dXJuIHggPj4gMzEgPyB4ICsgMSA6IHg7Cit9CisKK2lu dAordGVzdF8yNiAoaW50IHgpCit7CisgIC8qIDF4IGNtcC9weiwgMXggc3Vi YyAgKi8KKyAgcmV0dXJuIHggPj4gMzEgPyB4ICsgMSA6IHg7Cit9CisKK2lu dAordGVzdF8yNyAoaW50IHgsIGludCB5LCBpbnQgeikKK3sKKyAgLyogMXgg Y21wL3B6LCAxeCBhZGRjICAqLworICByZXR1cm4gMSAtICgoeCA+PiA0KSA8 IDApICsgejsKK30K --=-Dwbl/LEFWkEjChhQlspU--