From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10023 invoked by alias); 12 Oct 2015 10:22:36 -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 9970 invoked by uid 89); 12 Oct 2015 10:22:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=BAYES_00,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: na01-by2-obe.outbound.protection.outlook.com Received: from mail-by2on0062.outbound.protection.outlook.com (HELO na01-by2-obe.outbound.protection.outlook.com) (207.46.100.62) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA256 encrypted) ESMTPS; Mon, 12 Oct 2015 10:22:33 +0000 Received: from SN2PR0701MB1024.namprd07.prod.outlook.com (10.160.57.150) by SN2PR0701MB1024.namprd07.prod.outlook.com (10.160.57.150) with Microsoft SMTP Server (TLS) id 15.1.293.16; Mon, 12 Oct 2015 10:22:30 +0000 Received: from SN2PR0701MB1024.namprd07.prod.outlook.com ([10.160.57.150]) by SN2PR0701MB1024.namprd07.prod.outlook.com ([10.160.57.150]) with mapi id 15.01.0293.007; Mon, 12 Oct 2015 10:22:30 +0000 From: "Hurugalawadi, Naveen" To: Richard Biener CC: "gcc-patches@gcc.gnu.org" Subject: Re: Move some bit and binary optimizations in simplify and match Date: Mon, 12 Oct 2015 10:22:00 -0000 Message-ID: References: , In-Reply-To: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Naveen.Hurugalawadi@caviumnetworks.com; x-microsoft-exchange-diagnostics: 1;SN2PR0701MB1024;5:c69VALIi1t2bqhVPt2vdeLXSToFCuSvJjC0ClDlT8Yv2OsixuRBqQ24u/oXW/er7PoILlhlSMiVmbAo2e11fWC2cHfS5AtybW3qRaE+dP+NhesZqOnerl7StNKih0wZ0PuTlfZAJX+nEEMxiKoI4Aw==;24:Hwf1kSNKUIpf1GOCtOuy2lZNCoM19OGl3QRRjiE9rxijmocu3NhzCT+vC9zDVPJT04kJzGZjL2TW7oFdW75x55FRbdWQcWxZzbWu1Fm+6gY=;20:NOdygi7DJYDU6Zl7TtuPZDesOLrZTs1tGeLnURzg980o/vtigpCSlnVmzYarIzZIOTs7WaolVJNEnwb6/sTklA== x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR0701MB1024; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:SN2PR0701MB1024;BCL:0;PCL:0;RULEID:;SRVR:SN2PR0701MB1024; x-forefront-prvs: 0727122FC6 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(199003)(164054003)(189002)(66066001)(92566002)(2950100001)(5002640100001)(19580395003)(5890100001)(74316001)(5007970100001)(101416001)(10400500002)(102836002)(87936001)(54356999)(50986999)(76176999)(77096005)(5004730100002)(11100500001)(40100003)(2900100001)(122556002)(81156007)(97736004)(46102003)(86362001)(5003600100002)(110136002)(189998001)(106356001)(5001960100002)(33656002)(99936001)(5008740100001)(99286002)(105586002)(106116001)(76576001)(64706001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR0701MB1024;H:SN2PR0701MB1024.namprd07.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; received-spf: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_002_SN2PR0701MB10245F3B91BE5291AD40C1848E310SN2PR0701MB1024_" MIME-Version: 1.0 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2015 10:22:30.4077 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR0701MB1024 X-SW-Source: 2015-10/txt/msg01108.txt.bz2 --_002_SN2PR0701MB10245F3B91BE5291AD40C1848E310SN2PR0701MB1024_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 1019 Hi Richard, Thanks for your review and useful comments. I will move the future optimization patterns with all the conditions present in fold-const or builtins file as per your suggestions. Please find attached the patch as per your comments. Please review the patch and let me know if any further modifications=20 are required. The last pattern has been removed due to the discussions over it and a regression it caused. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +/* Fold X & (X ^ Y) as X & ~Y. */ +(simplify + (bit_and:c (convert? @0) (convert? (bit_xor:c @0 @1))) + (bit_and (convert @0) (convert (bit_not @1)))) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D FAIL: gcc.dg/tree-ssa/vrp47.c scan-tree-dump-times vrp2 " & 1;" 0 FAIL: gcc.dg/tree-ssa/vrp59.c scan-tree-dump-not vrp1 " & 3;" Thanks, Naveen= --_002_SN2PR0701MB10245F3B91BE5291AD40C1848E310SN2PR0701MB1024_ Content-Type: text/x-patch; name="bit_plus.patch" Content-Description: bit_plus.patch Content-Disposition: attachment; filename="bit_plus.patch"; size=8425; creation-date="Mon, 12 Oct 2015 10:16:45 GMT"; modification-date="Mon, 12 Oct 2015 10:16:45 GMT" Content-Transfer-Encoding: base64 Content-length: 11424 ZGlmZiAtLWdpdCBhL2djYy9mb2xkLWNvbnN0LmMgYi9nY2MvZm9sZC1jb25z dC5jCmluZGV4IDVkODgyMmYuLjg4ODljMzkgMTAwNjQ0Ci0tLSBhL2djYy9m b2xkLWNvbnN0LmMKKysrIGIvZ2NjL2ZvbGQtY29uc3QuYwpAQCAtOTE5Miwy NiArOTE5Miw2IEBAIGZvbGRfYmluYXJ5X2xvYyAobG9jYXRpb25fdCBsb2Ms CiAgICAgICByZXR1cm4gTlVMTF9UUkVFOwogCiAgICAgY2FzZSBQTFVTX0VY UFI6Ci0gICAgICBpZiAoSU5URUdSQUxfVFlQRV9QICh0eXBlKSB8fCBWRUNU T1JfSU5URUdFUl9UWVBFX1AgKHR5cGUpKQotCXsKLQkgIC8qIFggKyAoWCAv IENTVCkgKiAtQ1NUIGlzIFggJSBDU1QuICAqLwotCSAgaWYgKFRSRUVfQ09E RSAoYXJnMSkgPT0gTVVMVF9FWFBSCi0JICAgICAgJiYgVFJFRV9DT0RFIChU UkVFX09QRVJBTkQgKGFyZzEsIDApKSA9PSBUUlVOQ19ESVZfRVhQUgotCSAg ICAgICYmIG9wZXJhbmRfZXF1YWxfcCAoYXJnMCwKLQkJCQkgIFRSRUVfT1BF UkFORCAoVFJFRV9PUEVSQU5EIChhcmcxLCAwKSwgMCksIDApKQotCSAgICB7 Ci0JICAgICAgdHJlZSBjc3QwID0gVFJFRV9PUEVSQU5EIChUUkVFX09QRVJB TkQgKGFyZzEsIDApLCAxKTsKLQkgICAgICB0cmVlIGNzdDEgPSBUUkVFX09Q RVJBTkQgKGFyZzEsIDEpOwotCSAgICAgIHRyZWUgc3VtID0gZm9sZF9iaW5h cnlfbG9jIChsb2MsIFBMVVNfRVhQUiwgVFJFRV9UWVBFIChjc3QxKSwKLQkJ CQkgICAgICBjc3QxLCBjc3QwKTsKLQkgICAgICBpZiAoc3VtICYmIGludGVn ZXJfemVyb3AgKHN1bSkpCi0JCXJldHVybiBmb2xkX2NvbnZlcnRfbG9jIChs b2MsIHR5cGUsCi0JCQkJCSBmb2xkX2J1aWxkMl9sb2MgKGxvYywgVFJVTkNf TU9EX0VYUFIsCi0JCQkJCQkgICAgICBUUkVFX1RZUEUgKGFyZzApLCBhcmcw LAotCQkJCQkJICAgICAgY3N0MCkpOwotCSAgICB9Ci0JfQotCiAgICAgICAv KiBIYW5kbGUgKEExICogQzEpICsgKEEyICogQzIpIHdpdGggQTEsIEEyIG9y IEMxLCBDMiBiZWluZyB0aGUgc2FtZSBvcgogCSBvbmUuICBNYWtlIHN1cmUg dGhlIHR5cGUgaXMgbm90IHNhdHVyYXRpbmcgYW5kIGhhcyB0aGUgc2lnbmVk bmVzcyBvZgogCSB0aGUgc3RyaXBwZWQgb3BlcmFuZHMsIGFzIGZvbGRfcGx1 c21pbnVzX211bHRfZXhwciB3aWxsIHJlLWFzc29jaWF0ZS4KQEAgLTk2NTIs MjggKzk2MzIsNiBAQCBmb2xkX2JpbmFyeV9sb2MgKGxvY2F0aW9uX3QgbG9j LAogCQkJICAgIGZvbGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwKIAkJCQkJ ICAgICAgVFJFRV9PUEVSQU5EIChhcmcwLCAwKSkpOwogCi0gICAgICBpZiAo ISBGTE9BVF9UWVBFX1AgKHR5cGUpKQotCXsKLQkgIC8qIEZvbGQgKEEgJiB+ QikgLSAoQSAmIEIpIGludG8gKEEgXiBCKSAtIEIsIHdoZXJlIEIgaXMKLQkg ICAgIGFueSBwb3dlciBvZiAyIG1pbnVzIDEuICAqLwotCSAgaWYgKFRSRUVf Q09ERSAoYXJnMCkgPT0gQklUX0FORF9FWFBSCi0JICAgICAgJiYgVFJFRV9D T0RFIChhcmcxKSA9PSBCSVRfQU5EX0VYUFIKLQkgICAgICAmJiBvcGVyYW5k X2VxdWFsX3AgKFRSRUVfT1BFUkFORCAoYXJnMCwgMCksCi0JCQkJICBUUkVF X09QRVJBTkQgKGFyZzEsIDApLCAwKSkKLQkgICAgewotCSAgICAgIHRyZWUg bWFzazAgPSBUUkVFX09QRVJBTkQgKGFyZzAsIDEpOwotCSAgICAgIHRyZWUg bWFzazEgPSBUUkVFX09QRVJBTkQgKGFyZzEsIDEpOwotCSAgICAgIHRyZWUg dGVtID0gZm9sZF9idWlsZDFfbG9jIChsb2MsIEJJVF9OT1RfRVhQUiwgdHlw ZSwgbWFzazApOwotCi0JICAgICAgaWYgKG9wZXJhbmRfZXF1YWxfcCAodGVt LCBtYXNrMSwgMCkpCi0JCXsKLQkJICB0ZW0gPSBmb2xkX2J1aWxkMl9sb2Mg KGxvYywgQklUX1hPUl9FWFBSLCB0eXBlLAotCQkJCSAgICAgVFJFRV9PUEVS QU5EIChhcmcwLCAwKSwgbWFzazEpOwotCQkgIHJldHVybiBmb2xkX2J1aWxk Ml9sb2MgKGxvYywgTUlOVVNfRVhQUiwgdHlwZSwgdGVtLCBtYXNrMSk7Ci0J CX0KLQkgICAgfQotCX0KLQogICAgICAgLyogRm9sZCBfX2NvbXBsZXhfXyAo IHgsIDAgKSAtIF9fY29tcGxleF9fICggMCwgeSApIHRvCiAJIF9fY29tcGxl eF9fICggeCwgLXkgKS4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGZvciBTTmFO cyBvciBpZgogCSBzaWduZWQgemVyb3MgYXJlIGludm9sdmVkLiAgKi8KQEAg LTk3NjMsMjAgKzk3MjEsNiBAQCBmb2xkX2JpbmFyeV9sb2MgKGxvY2F0aW9u X3QgbG9jLAogICAgICAgZ290byBhc3NvY2lhdGU7CiAKICAgICBjYXNlIE1V TFRfRVhQUjoKLSAgICAgIC8qICgtQSkgKiAoLUIpIC0+IEEgKiBCICAqLwot ICAgICAgaWYgKFRSRUVfQ09ERSAoYXJnMCkgPT0gTkVHQVRFX0VYUFIgJiYg bmVnYXRlX2V4cHJfcCAoYXJnMSkpCi0JcmV0dXJuIGZvbGRfYnVpbGQyX2xv YyAobG9jLCBNVUxUX0VYUFIsIHR5cGUsCi0JCQkgICAgZm9sZF9jb252ZXJ0 X2xvYyAobG9jLCB0eXBlLAotCQkJCQkgICAgICBUUkVFX09QRVJBTkQgKGFy ZzAsIDApKSwKLQkJCSAgICBmb2xkX2NvbnZlcnRfbG9jIChsb2MsIHR5cGUs Ci0JCQkJCSAgICAgIG5lZ2F0ZV9leHByIChhcmcxKSkpOwotICAgICAgaWYg KFRSRUVfQ09ERSAoYXJnMSkgPT0gTkVHQVRFX0VYUFIgJiYgbmVnYXRlX2V4 cHJfcCAoYXJnMCkpCi0JcmV0dXJuIGZvbGRfYnVpbGQyX2xvYyAobG9jLCBN VUxUX0VYUFIsIHR5cGUsCi0JCQkgICAgZm9sZF9jb252ZXJ0X2xvYyAobG9j LCB0eXBlLAotCQkJCQkgICAgICBuZWdhdGVfZXhwciAoYXJnMCkpLAotCQkJ ICAgIGZvbGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwKLQkJCQkJICAgICAg VFJFRV9PUEVSQU5EIChhcmcxLCAwKSkpOwotCiAgICAgICBpZiAoISBGTE9B VF9UWVBFX1AgKHR5cGUpKQogCXsKIAkgIC8qIFRyYW5zZm9ybSB4ICogLUMg aW50byAteCAqIEMgaWYgeCBpcyBlYXNpbHkgbmVnYXRhYmxlLiAgKi8KQEAg LTk3OTAsMTYgKzk3MzQsNiBAQCBmb2xkX2JpbmFyeV9sb2MgKGxvY2F0aW9u X3QgbG9jLAogCQkJCQkJICBuZWdhdGVfZXhwciAoYXJnMCkpLAogCQkJCXRl bSk7CiAKLQkgIC8qIChhICogKDEgPDwgYikpIGlzIChhIDw8IGIpICAqLwot CSAgaWYgKFRSRUVfQ09ERSAoYXJnMSkgPT0gTFNISUZUX0VYUFIKLQkgICAg ICAmJiBpbnRlZ2VyX29uZXAgKFRSRUVfT1BFUkFORCAoYXJnMSwgMCkpKQot CSAgICByZXR1cm4gZm9sZF9idWlsZDJfbG9jIChsb2MsIExTSElGVF9FWFBS LCB0eXBlLCBvcDAsCi0JCQkJVFJFRV9PUEVSQU5EIChhcmcxLCAxKSk7Ci0J ICBpZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBMU0hJRlRfRVhQUgotCSAgICAg ICYmIGludGVnZXJfb25lcCAoVFJFRV9PUEVSQU5EIChhcmcwLCAwKSkpCi0J ICAgIHJldHVybiBmb2xkX2J1aWxkMl9sb2MgKGxvYywgTFNISUZUX0VYUFIs IHR5cGUsIG9wMSwKLQkJCQlUUkVFX09QRVJBTkQgKGFyZzAsIDEpKTsKLQog CSAgLyogKEEgKyBBKSAqIEMgLT4gQSAqIDIgKiBDICAqLwogCSAgaWYgKFRS RUVfQ09ERSAoYXJnMCkgPT0gUExVU19FWFBSCiAJICAgICAgJiYgVFJFRV9D T0RFIChhcmcxKSA9PSBJTlRFR0VSX0NTVApAQCAtOTg0MiwyMSArOTc3Niw2 IEBAIGZvbGRfYmluYXJ5X2xvYyAobG9jYXRpb25fdCBsb2MsCiAJfQogICAg ICAgZWxzZQogCXsKLQkgIC8qIENvbnZlcnQgKEMxL1gpKkMyIGludG8gKEMx KkMyKS9YLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBtYXkgY2hhbmdlCi0gICAg ICAgICAgICAgdGhlIHJlc3VsdCBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZXMg ZHVlIHRvIHJvdW5kaW5nIHNvIGl0IGlzIGFwcGxpZWQKLSAgICAgICAgICAg ICBvbmx5IGlmIC1mYXNzb2NpYXRpdmUtbWF0aCB3YXMgc3BlY2lmeS4gICov Ci0JICBpZiAoZmxhZ19hc3NvY2lhdGl2ZV9tYXRoCi0JICAgICAgJiYgVFJF RV9DT0RFIChhcmcwKSA9PSBSRElWX0VYUFIKLQkgICAgICAmJiBUUkVFX0NP REUgKGFyZzEpID09IFJFQUxfQ1NUCi0JICAgICAgJiYgVFJFRV9DT0RFIChU UkVFX09QRVJBTkQgKGFyZzAsIDApKSA9PSBSRUFMX0NTVCkKLQkgICAgewot CSAgICAgIHRyZWUgdGVtID0gY29uc3RfYmlub3AgKE1VTFRfRVhQUiwgVFJF RV9PUEVSQU5EIChhcmcwLCAwKSwKLQkJCQkgICAgICBhcmcxKTsKLQkgICAg ICBpZiAodGVtKQotCQlyZXR1cm4gZm9sZF9idWlsZDJfbG9jIChsb2MsIFJE SVZfRVhQUiwgdHlwZSwgdGVtLAotCQkJCSAgICBUUkVFX09QRVJBTkQgKGFy ZzAsIDEpKTsKLQkgICAgfQotCiAgICAgICAgICAgLyogU3RyaXAgc2lnbiBv cGVyYXRpb25zIGZyb20gWCBpbiBYKlgsIGkuZS4gLVkqLVkgLT4gWSpZLiAg Ki8KIAkgIGlmIChvcGVyYW5kX2VxdWFsX3AgKGFyZzAsIGFyZzEsIDApKQog CSAgICB7CkBAIC05OTczLDI4ICs5ODkyLDYgQEAgZm9sZF9iaW5hcnlfbG9j IChsb2NhdGlvbl90IGxvYywKIAkJCQkgICAgYXJnMSk7CiAJfQogCi0gICAg ICAvKiAoWCAmIH5ZKSB8ICh+WCAmIFkpIGlzIFggXiBZICovCi0gICAgICBp ZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBCSVRfQU5EX0VYUFIKLQkgICYmIFRS RUVfQ09ERSAoYXJnMSkgPT0gQklUX0FORF9FWFBSKQotICAgICAgICB7Ci0J ICB0cmVlIGEwLCBhMSwgbDAsIGwxLCBuMCwgbjE7Ci0KLQkgIGEwID0gZm9s ZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBUUkVFX09QRVJBTkQgKGFyZzEs IDApKTsKLQkgIGExID0gZm9sZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBU UkVFX09QRVJBTkQgKGFyZzEsIDEpKTsKLQotCSAgbDAgPSBmb2xkX2NvbnZl cnRfbG9jIChsb2MsIHR5cGUsIFRSRUVfT1BFUkFORCAoYXJnMCwgMCkpOwot CSAgbDEgPSBmb2xkX2NvbnZlcnRfbG9jIChsb2MsIHR5cGUsIFRSRUVfT1BF UkFORCAoYXJnMCwgMSkpOwotCSAgCi0JICBuMCA9IGZvbGRfYnVpbGQxX2xv YyAobG9jLCBCSVRfTk9UX0VYUFIsIHR5cGUsIGwwKTsKLQkgIG4xID0gZm9s ZF9idWlsZDFfbG9jIChsb2MsIEJJVF9OT1RfRVhQUiwgdHlwZSwgbDEpOwot CSAgCi0JICBpZiAoKG9wZXJhbmRfZXF1YWxfcCAobjAsIGEwLCAwKQotCSAg ICAgICAmJiBvcGVyYW5kX2VxdWFsX3AgKG4xLCBhMSwgMCkpCi0JICAgICAg fHwgKG9wZXJhbmRfZXF1YWxfcCAobjAsIGExLCAwKQotCQkgICYmIG9wZXJh bmRfZXF1YWxfcCAobjEsIGEwLCAwKSkpCi0JICAgIHJldHVybiBmb2xkX2J1 aWxkMl9sb2MgKGxvYywgQklUX1hPUl9FWFBSLCB0eXBlLCBsMCwgbjEpOwot CX0KLQogICAgICAgLyogU2VlIGlmIHRoaXMgY2FuIGJlIHNpbXBsaWZpZWQg aW50byBhIHJvdGF0ZSBmaXJzdC4gIElmIHRoYXQKIAkgaXMgdW5zdWNjZXNz ZnVsIGNvbnRpbnVlIGluIHRoZSBhc3NvY2lhdGlvbiBjb2RlLiAgKi8KICAg ICAgIGdvdG8gYml0X3JvdGF0ZTsKQEAgLTEwMDEzLDIyICs5OTEwLDYgQEAg Zm9sZF9iaW5hcnlfbG9jIChsb2NhdGlvbl90IGxvYywKICAgICAgIGdvdG8g Yml0X3JvdGF0ZTsKIAogICAgIGNhc2UgQklUX0FORF9FWFBSOgotICAgICAg LyogflggJiBYLCAoWCA9PSAwKSAmIFgsIGFuZCAhWCAmIFggYXJlIGFsd2F5 cyB6ZXJvLiAgKi8KLSAgICAgIGlmICgoVFJFRV9DT0RFIChhcmcwKSA9PSBC SVRfTk9UX0VYUFIKLQkgICB8fCBUUkVFX0NPREUgKGFyZzApID09IFRSVVRI X05PVF9FWFBSCi0JICAgfHwgKFRSRUVfQ09ERSAoYXJnMCkgPT0gRVFfRVhQ UgotCSAgICAgICAmJiBpbnRlZ2VyX3plcm9wIChUUkVFX09QRVJBTkQgKGFy ZzAsIDEpKSkpCi0JICAmJiBvcGVyYW5kX2VxdWFsX3AgKFRSRUVfT1BFUkFO RCAoYXJnMCwgMCksIGFyZzEsIDApKQotCXJldHVybiBvbWl0X29uZV9vcGVy YW5kX2xvYyAobG9jLCB0eXBlLCBpbnRlZ2VyX3plcm9fbm9kZSwgYXJnMSk7 Ci0KLSAgICAgIC8qIFggJiB+WCAsIFggJiAoWCA9PSAwKSwgYW5kIFggJiAh WCBhcmUgYWx3YXlzIHplcm8uICAqLwotICAgICAgaWYgKChUUkVFX0NPREUg KGFyZzEpID09IEJJVF9OT1RfRVhQUgotCSAgIHx8IFRSRUVfQ09ERSAoYXJn MSkgPT0gVFJVVEhfTk9UX0VYUFIKLQkgICB8fCAoVFJFRV9DT0RFIChhcmcx KSA9PSBFUV9FWFBSCi0JICAgICAgICYmIGludGVnZXJfemVyb3AgKFRSRUVf T1BFUkFORCAoYXJnMSwgMSkpKSkKLQkgICYmIG9wZXJhbmRfZXF1YWxfcCAo YXJnMCwgVFJFRV9PUEVSQU5EIChhcmcxLCAwKSwgMCkpCi0JcmV0dXJuIG9t aXRfb25lX29wZXJhbmRfbG9jIChsb2MsIHR5cGUsIGludGVnZXJfemVyb19u b2RlLCBhcmcwKTsKLQogICAgICAgLyogRm9sZCAoWCBeIDEpICYgMSBhcyAo WCAmIDEpID09IDAuICAqLwogICAgICAgaWYgKFRSRUVfQ09ERSAoYXJnMCkg PT0gQklUX1hPUl9FWFBSCiAJICAmJiBJTlRFR1JBTF9UWVBFX1AgKHR5cGUp CmRpZmYgLS1naXQgYS9nY2MvbWF0Y2gucGQgYi9nY2MvbWF0Y2gucGQKaW5k ZXggYjg3YzQzNi4uNzIxMGRmYWQgMTAwNjQ0Ci0tLSBhL2djYy9tYXRjaC5w ZAorKysgYi9nY2MvbWF0Y2gucGQKQEAgLTMxNiw2ICszMTYsNDcgQEAgYWxv bmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKICAgKGNvc3MgKG9wIEAwKSkKICAgIChjb3NzIEAwKSkpKQogCisvKiBG b2xkIFggKyAoWCAvIENTVCkgKiAtQ1NUIHRvIFggJSBDU1QuICAqLworKHNp bXBsaWZ5CisgKHBsdXMgKGNvbnZlcnQxPyBAMCkgKGNvbnZlcnQyPyAobXVs dCAodHJ1bmNfZGl2IEAwIElOVEVHRVJfQ1NUQDEpIElOVEVHRVJfQ1NUQDIp KSkKKyAgKGlmICgoSU5URUdSQUxfVFlQRV9QICh0eXBlKSB8fCBWRUNUT1Jf SU5URUdFUl9UWVBFX1AgKHR5cGUpKQorCSYmIHdpOjphZGQgKEAxLCBAMikg PT0gMCkKKyAgICh0cnVuY19tb2QgKGNvbnZlcnQgQDApIChjb252ZXJ0IEAx KSkpKQorCisvKiBGb2xkIChBICYgfkIpIC0gKEEgJiBCKSBpbnRvIChBIF4g QikgLSBCLiAgKi8KKyhzaW1wbGlmeQorIChtaW51cyAoYml0X2FuZDpzIEAw IChiaXRfbm90IEAxKSkgKGJpdF9hbmQ6cyBAMCBAMikpCisgIChpZiAoISBG TE9BVF9UWVBFX1AgKHR5cGUpCisgICAgICAgJiYgd2k6OmVxX3AgKEAxLCBA MikpCisgICAobWludXMgKGJpdF94b3IgQDAgQDEpIEAxKSkpCisKKy8qIEZv bGQgKGEgKiAoMSA8PCBiKSkgaW50byAoYSA8PCBiKSAgKi8KKyhzaW1wbGlm eQorIChtdWx0OmMgKGNvbnZlcnQxPyBAMCkgKGNvbnZlcnQyPyAobHNoaWZ0 IGludGVnZXJfb25lcEAxIEAyKSkpCisgIChpZiAoISBGTE9BVF9UWVBFX1Ag KHR5cGUpKQorICAgKGxzaGlmdCAoY29udmVydCBAMCkgKGNvbnZlcnQgQDIp KSkpCisKKy8qIEZvbGQgKEMxL1gpKkMyIGludG8gKEMxKkMyKS9YLiAgKi8K KyhzaW1wbGlmeQorIChtdWx0IChyZGl2IFJFQUxfQ1NUQDAgQDEpIFJFQUxf Q1NUQDIpCisgICh3aXRoCisgICB7IHRyZWUgdGVtID0gY29uc3RfYmlub3Ag KE1VTFRfRVhQUiwgdHlwZSwgQDAsIEAyKTsgfQorICAoaWYgKHRlbSAmJiBG TE9BVF9UWVBFX1AgKHR5cGUpCisgICAgICAgJiYgZmxhZ19hc3NvY2lhdGl2 ZV9tYXRoKQorICAgKHJkaXYgKG11bHQgQDAgQDIpIEAxKSkpKQorCisvKiBT aW1wbGlmeSAoWCAmIH5ZKSB8ICh+WCAmIFkpIGlzIFggXiBZLiAgKi8KKyhz aW1wbGlmeQorIChiaXRfaW9yIChiaXRfYW5kOnMgQDAgKGJpdF9ub3QgQDEp KSAoYml0X2FuZDpzIChiaXRfbm90IEAyKSBAMykpCisgIChpZiAod2k6OmVx X3AgKEAwLCBAMikKKyAgICAgICAmJiB3aTo6ZXFfcCAoQDEsIEAzKSkKKyAg IChiaXRfeG9yIEAwIEAzKSkpCisKKy8qIFNpbXBsaWZ5IH5YICYgWCBhcyB6 ZXJvLiAgKi8KKyhzaW1wbGlmeQorIChiaXRfYW5kOmMgKGNvbnZlcnQ/IEAw KSAoY29udmVydD8gKGJpdF9ub3QgQDApKSkKKyAgKGNvbnZlcnQgeyBidWls ZF96ZXJvX2NzdCAoVFJFRV9UWVBFIChAMCkpOyB9KSkKKwogLyogWCAlIFkg aXMgc21hbGxlciB0aGFuIFkuICAqLwogKGZvciBjbXAgKGx0IGdlKQogIChz aW1wbGlmeQpAQCAtNTQ5LDYgKzU5MCwxMyBAQCBhbG9uZyB3aXRoIEdDQzsg c2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIChpZiAoIUZJ WEVEX1BPSU5UX1RZUEVfUCAodHlwZSkpCiAgKHBsdXMgQDAgKG5lZ2F0ZSBA MSkpKSkKIAorLyogKC1BKSAqICgtQikgLT4gQSAqIEIgICovCisoc2ltcGxp ZnkKKyAobXVsdDpjIChjb252ZXJ0PyAobmVnYXRlIEAwKSkgKGNvbnZlcnQ/ IChuZWdhdGUgQDEpKSkKKyAgKGlmICgoR0lNUExFICYmIHVzZWxlc3NfdHlw ZV9jb252ZXJzaW9uX3AgKHR5cGUsIFRSRUVfVFlQRSAoQDApKSkKKyAgICAg ICB8fCAoR0VORVJJQyAmJiB0eXBlID09IFRSRUVfVFlQRSAoQDApKSkKKyAg IChtdWx0IChjb252ZXJ0IEAwKSAoY29udmVydCBAMSkpKSkKKwogLyogVHJ5 IHRvIGZvbGQgKHR5cGUpIFggb3AgQ1NUIC0+ICh0eXBlKSAoWCBvcCAoKHR5 cGUteCkgQ1NUKSkKICAgIHdoZW4gcHJvZml0YWJsZS4KICAgIEZvciBiaXR3 aXNlIGJpbmFyeSBvcGVyYXRpb25zIGFwcGx5IG9wZXJhbmQgY29udmVyc2lv bnMgdG8gdGhlCg== --_002_SN2PR0701MB10245F3B91BE5291AD40C1848E310SN2PR0701MB1024_--