Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuXvo-00CjEH-2g for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 15:33:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vuXvl-00DxFk-2b for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 15:33:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuXvl-00DxFc-0o for pgsql-hackers@lists.postgresql.org; Mon, 23 Feb 2026 15:33:05 +0000 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vuXvh-00000000ogr-1upx for pgsql-hackers@lists.postgresql.org; Mon, 23 Feb 2026 15:33:04 +0000 Received: by mail-qt1-x842.google.com with SMTP id d75a77b69052e-5069df1dea8so39578101cf.1 for ; Mon, 23 Feb 2026 07:33:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771860782; cv=none; d=google.com; s=arc-20240605; b=PJ1T3+evdOhwEVx/G6Rfd3oW3pxRgACNAIMPl6rVKLPUp/4GjnHsjCn2Xh/n0uHGGQ 0ciwg1t2atS+laNmO90hmiJBCG36Dcr/NrOeOcZ8ufduh+2dcCEwp00KvcSSl+M5VdEt wG8/Gbjihj90RfDStB3aSgFzYmRu3PNdLswBJjAgX1EiCVJ+pArkYEsB/EFhuVT1tHz9 pat448gJuSrsQBrpL2FKBDyzoeqBD96pHtwMIYDPHpDE4ORSumGXHLA59p01B9re0Oee b5q2NWHgFAJHtnyapoqZhST4YiwXR+xZKV97VE7Vsr/2h2dAsRywlSJov1fBHRnoMK// w/ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Bh1Wf4/F4tNNy2xPKuGIBcMs4pns1ou1zgoJMq3edJw=; fh=QkA/aEdX91S/8F/qJ99Id6ajqeoUK7xG9EWRL8z3yR4=; b=M3LdLVlMWWBNQxRAHDjJqgmmSFqXYs7QXMdY+qbSqpksUdF9x/agU8GFcRj+okBai9 xFYnBKrcO+ylsJDihX6kFzF3+kGyKUj+/AqX4+z/QFBax0Tv4SrNeqMQsDqAZn0alPdu F/C3B/2QxhSP6yrT1TOvU+f6FoUpBSMqyaN1LVUeJyuYIZQS0BLbfK+0Nlj+j/lNInyh wtg62K/dds6I8JGQGKo8SjugZfqEyewcVGpRqAaFwqTe7L4Td2ipjeXnX+Dk+K6hjy7F NEO2OTH+UTvFAYZ6uJtdOyWVDGXtPuvdZ2IquzOVN1Q7bplRGqWMFHNS6ITZmJcCG3vA N8sw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771860782; x=1772465582; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Bh1Wf4/F4tNNy2xPKuGIBcMs4pns1ou1zgoJMq3edJw=; b=VHe7tTw0d2p96BWlbxCIb1UM+z0gVOWFRhqcUIrwQ49F6aoz0OabXAMNyaJUzZcyeU 9clStFDpEu5PiubqTTeiMRbgrwbqdxXy+BhRg4xEYVX6jVrIy7d+65uhfKCQvYEp2l80 FOYhkVT/Hjt8/3j/mZyvZKec7F7lZrYhSUwYWfDHGCi8Mw3qQ/Hxg6P3VbXLIXUHwhY7 cy3OMFtZ6LNuQWjd+v15qW7i0jx6W34F2DlAMB7lTtrFEvPAWiudhjsdRk9MfA8f5qQ2 yskkyFzJrSrs61jiEc3QyV9EHg81oxfWncQGOF6qOpkoeYln28XPM4Plj7mdn52zC3iS HttQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771860782; x=1772465582; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Bh1Wf4/F4tNNy2xPKuGIBcMs4pns1ou1zgoJMq3edJw=; b=Hxb9rmjdGoK1/e9pVP1ligM6P+hVtmvdGCfo1wcKkrEB25OWoj3GpoJ5tCPQ77JrpB AwQzCYrMS1wT8YjT1NjEPwe4eTGMXFsFuCYGoRzPujyZ+9GMtmr3tZ5aXgq+qpVoloAZ uV2kRtQSO/nDWQhqxoalTzde2xCf6Kw08cDarHRI72pRcJzObfZHOMat/i/pJcq+diUs SL8eP0Eha7hgVU/8j3uPTbuNCNU/k3IDzvxTh9BO+jFN1izYXNzN85+Ls/5iSTeG6QZU e0HiSS3zJ73XBJ7tdZ8QEyUcviDwoAtQ4UXtqX+aGIYztho90YtWsUvDc+/p7evB9Nq+ +qiQ== X-Gm-Message-State: AOJu0YxQrCeiB7EHRKceHnXMYaRJTXcarw7gCvXtvHjqvktvYDCRTowG R7pjhUqlxPjaunwrof10taytjaHDOD1hngQ0YJhDkgWInW6jzkvBerLtTqw2t9rVgLtwOw3in1z u2dP0EwDB6upRYbBXqRfbfmzbY2PkSGI= X-Gm-Gg: AZuq6aJi6Kf67kAEmBB4hKwlP/yHN6+xYn+12jcwFQxG41MEurRmTJdsxzZxSF2dvpJ gpZJvAKWWfztqmH9aHokZP5WUoRvfsOj1f2Z7F4AjNu3n8I5ruIvDUSMI+EZ4+TKhIr+AellwD1 1Jzz2L4vDJK5hEfhZIyKZudLAt2hrouMsIivQafCfBnQg0Yxxk0MitW3S0y4RBVh3Tle6LHK3P+ y97IvWygZWg4MlsWeeVSVTJ7xfJ2Jq3M9bUE1oAxeTe4IAt4EnHuSAsCjmBqmRQlWrRWuzTMRJv tOkLxSZh4mT5/B87iF7j8oDySxhEnl2aHkkZ8EZGSAc/dv4F/AzEtBV+Q95Cx9IpPGSMIb11vMf nUBW7+sPzB5UN8YRvfviGGugSaew= X-Received: by 2002:a05:622a:15c1:b0:4ee:ee46:842f with SMTP id d75a77b69052e-5070bba5213mr119884321cf.9.1771860781908; Mon, 23 Feb 2026 07:33:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: John Naylor Date: Mon, 23 Feb 2026 22:32:50 +0700 X-Gm-Features: AaiRm50Mg_-7mIcaZeAHIvZX4B4EZKBJllzSzDzw-BE6htl22aKBr-tEWfEBbgc Message-ID: Subject: Re: centralize CPU feature detection To: Zsolt Parragi Cc: PostgreSQL Hackers , root , Nathan Bossart Content-Type: multipart/mixed; boundary="0000000000007f8502064b7f7c5a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f8502064b7f7c5a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 20, 2026 at 3:26=E2=80=AFPM Zsolt Parragi wrote: > > 1-3 looks good to me, other than the need for the proper commit messages. I've committed 0001. > There's a typo in " Are ZMM registeres enabled?" in 3. Fixed. 0002 and 0003 are attached with draft commit messages. There was also a cosmetic mistake in an enum member name, whose correction was squashed in the wrong direction -- this has been fixed. I also added the new typedef for pgindent and restored a lost comment for pg_comp_crc32c_choose(). This seems committable, but will double-check everything works correctly. --=20 John Naylor Amazon Web Services --0000000000007f8502064b7f7c5a Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0002-Centralize-detection-of-x86-CPU-features.patch" Content-Disposition: attachment; filename="v5-0002-Centralize-detection-of-x86-CPU-features.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzc43pc1 RnJvbSA3NDM0MWY1YWRkNGZlN2JkNDQ4MmY4MGMzNGRlMjA4MjYxNDk2NGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIE5heWxvciA8am9obi5uYXlsb3JAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IFRodSwgMTIgRmViIDIwMjYgMTI6NDU6MjMgKzA3MDAKU3ViamVjdDogW1BBVENI IHY1IDIvM10gQ2VudHJhbGl6ZSBkZXRlY3Rpb24gb2YgeDg2IENQVSBmZWF0dXJlcwoKV2Ugbm93 IG1haW50YWluIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRoYXQgaW5kaWNhdGUgd2hpY2ggZmVhdHVy ZXMgd2VyZQpkZXRlY3RlZCBhdCBydW50aW1lLiBXaGVuIGNvZGUgd2FudHMgdG8gY2hlY2sgZm9y IGEgZ2l2ZW4gZmVhdHVyZSwKdGhlIGFycmF5IGlzIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBpZiBp dCBoYXMgYmVlbiBpbnRpYWxpemVkIGFuZCBpZgpub3QsIGEgc2luZ2xlIGZ1bmN0aW9uIGNoZWNr cyBhbGwgZmVhdHVyZXMgYXQgb25jZS4KCk1vdmUgYWxsIHg4NiBmZWF0dXJlIGRldGVjdGlvbiB0 byBwZ19jcHVfeDg2LmMuIENvZGUgdGhhdCBjaG9vc2VzCmZ1bmN0aW9uIHBvaW50ZXJzIHdhcyBv ZnRlbiBpbiB0aGUgc2FtZSBmaWxlIHdoZXJlIHRoZSBzcGVjaWFsCmZ1bmN0aW9ucyBhcmUgZGVm aW5lZCwgYnV0IG5vdyB0aGF0IGlzIGFsd2F5cyB0aGUgY2FzZS4KClJldmlld2VkLWJ5OiBac29s dCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0NBTldDQVpiZ0VVRnc3THVZU1ZlSj1Uajk4UjVIb09CMUZmZXFrM2FMdmJ3 NXJVNU5Ud0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9pbmNsdWRlL3BvcnQvcGdfY3B1LmggICAg ICAgIHwgNTAgKysrKysrKysrKysrKysrKysrCiBzcmMvcG9ydC9wZ19jcHVfeDg2LmMgICAgICAg ICAgICB8IDYzICsrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9wb3J0L3BnX2NyYzMyY19zc2U0 Mi5jICAgICAgIHwgMzIgKysrKysrKysrKysKIHNyYy9wb3J0L3BnX3BvcGNvdW50X3g4Ni5jICAg ICAgIHwgOTEgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9u cygrKSwgMTI0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3Bv cnQvcGdfY3B1LmgKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3J0L3BnX2NwdS5oIGIvc3Jj L2luY2x1ZGUvcG9ydC9wZ19jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYjkzYjgyOGQzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3Bn X2NwdS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX2Nw dS5oCisgKgkgIFJ1bnRpbWUgQ1BVIGZlYXR1cmUgZGV0ZWN0aW9uCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3BvcnQvcGdfY3B1LmgKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19DUFVfSAorI2RlZmluZSBQR19D UFVfSAorCisjaWYgZGVmaW5lZChVU0VfU1NFMikgfHwgZGVmaW5lZChfX2kzODZfXykKKwordHlw ZWRlZiBlbnVtIFg4NkZlYXR1cmVJZAoreworCS8qIEhhdmUgd2UgcnVuIGZlYXR1cmUgZGV0ZWN0 aW9uPyAqLworCUlOSVRfUEdfWDg2LAorCisJLyogc2NhbGFyIHJlZ2lzdGVycyBhbmQgMTI4LWJp dCBYTU0gcmVnaXN0ZXJzICovCisJUEdfU1NFNF8yLAorCVBHX1BPUENOVCwKKworCS8qIDUxMi1i aXQgWk1NIHJlZ2lzdGVycyAqLworCVBHX0FWWDUxMl9CVywKKwlQR19BVlg1MTJfVkwsCisJUEdf QVZYNTEyX1ZQQ0xNVUxRRFEsCisJUEdfQVZYNTEyX1ZQT1BDTlREUSwKK30gWDg2RmVhdHVyZUlk OworI2RlZmluZSBYODZGZWF0dXJlc1NpemUgKFBHX0FWWDUxMl9WUE9QQ05URFEgKyAxKQorCitl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBYODZGZWF0dXJlc1tdOworCitleHRlcm4gdm9pZCBzZXRf eDg2X2ZlYXR1cmVzKHZvaWQpOworCitzdGF0aWMgaW5saW5lIGJvb2wKK3g4Nl9mZWF0dXJlX2F2 YWlsYWJsZShYODZGZWF0dXJlSWQgZmVhdHVyZSkKK3sKKwlpZiAoWDg2RmVhdHVyZXNbSU5JVF9Q R19YODZdID09IGZhbHNlKQorCQlzZXRfeDg2X2ZlYXR1cmVzKCk7CisKKwlyZXR1cm4gWDg2RmVh dHVyZXNbZmVhdHVyZV07Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBkZWZpbmVkKFVTRV9TU0UyKSB8 fCBkZWZpbmVkKF9faTM4Nl9fKSAqLworCisjZW5kaWYJCQkJCQkJLyogUEdfQ1BVX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L3BnX2NwdV94ODYuYyBiL3NyYy9wb3J0L3BnX2NwdV94ODYuYwpp bmRleCA5OThhNzBmZmE0MS4uODg4NjNmOTc2MmMgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2Nw dV94ODYuYworKysgYi9zcmMvcG9ydC9wZ19jcHVfeDg2LmMKQEAgLTEsMTIgKzEsNyBAQAogLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgogICogcGdfY3B1X3g4Ni5jCi0gKgkgIENob29zZSBiZXR3ZWVu IEludGVsIFNTRSA0LjIgYW5kIHNvZnR3YXJlIENSQy0zMkMgaW1wbGVtZW50YXRpb24uCi0gKgot ICogT24gZmlyc3QgY2FsbCwgY2hlY2tzIGlmIHRoZSBDUFUgd2UncmUgcnVubmluZyBvbiBzdXBw b3J0cyBJbnRlbCBTU0UKLSAqIDQuMi4gSWYgaXQgZG9lcywgdXNlIHRoZSBzcGVjaWFsIFNTRSBp bnN0cnVjdGlvbnMgZm9yIENSQy0zMkMKLSAqIGNvbXB1dGF0aW9uLiBPdGhlcndpc2UsIGZhbGwg YmFjayB0byB0aGUgcHVyZSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbgotICogKHNsaWNpbmctYnkt OCkuCisgKgkgIFJ1bnRpbWUgQ1BVIGZlYXR1cmUgZGV0ZWN0aW9uIGZvciB4ODYKICAqCiAgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0 aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCkBAIC0zNCw3ICsyOSwxMSBAQAogI2luY2x1ZGUg PGltbWludHJpbi5oPgogI2VuZGlmCiAKLSNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgorI2lu Y2x1ZGUgInBvcnQvcGdfY3B1LmgiCisKKworLyogYXJyYXkgaW5kZXhlZCBieSBlbnVtIFg4NkZl YXR1cmVJZCAqLworYm9vbAkJWDg2RmVhdHVyZXNbWDg2RmVhdHVyZXNTaXplXSA9IHswfTsKIAog LyoKICAqIERvZXMgWEdFVEJWIHNheSB0aGUgWk1NIHJlZ2lzdGVycyBhcmUgZW5hYmxlZD8KQEAg LTU2LDIyICs1NSwxMyBAQCB6bW1fcmVnc19hdmFpbGFibGUodm9pZCkKIH0KIAogLyoKLSAqIFRo aXMgZ2V0cyBjYWxsZWQgb24gdGhlIGZpcnN0IGNhbGwuIEl0IHJlcGxhY2VzIHRoZSBmdW5jdGlv biBwb2ludGVyCi0gKiBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRlZCBkaXJlY3Rs eSB0byB0aGUgY2hvc2VuIGltcGxlbWVudGF0aW9uLgorICogUGFyc2UgdGhlIENQVSBJRCBpbmZv IGZvciBydW50aW1lIGNoZWNrcy4KICAqLwotc3RhdGljIHBnX2NyYzMyYwotcGdfY29tcF9jcmMz MmNfY2hvb3NlKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pCit2 b2lkCitzZXRfeDg2X2ZlYXR1cmVzKHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGV4eFs0XSA9IHsw LCAwLCAwLCAwfTsKIAotCS8qCi0JICogU2V0IGZhbGxiYWNrLiBXZSBtdXN0IGd1YXJkIHNpbmNl IHNsaWNpbmctYnktOCBpcyBub3QgdmlzaWJsZQotCSAqIGV2ZXJ5d2hlcmUuCi0JICovCi0jaWZk ZWYgVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sKLQlwZ19jb21wX2NyYzMyYyA9 IHBnX2NvbXBfY3JjMzJjX3NiODsKLSNlbmRpZgotCiAjaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BV SUQpCiAJX19nZXRfY3B1aWQoMSwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7 CiAjZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKQpAQCAtODAsMzQgKzcwLDMzIEBAIHBnX2NvbXBf Y3JjMzJjX2Nob29zZShwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVu KQogI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUKICNlbmRpZgogCi0JaWYg KChleHhbMl0gJiAoMSA8PCAyMCkpICE9IDApCS8qIFNTRSA0LjIgKi8KLQl7Ci0JCXBnX2NvbXBf Y3JjMzJjID0gcGdfY29tcF9jcmMzMmNfc3NlNDI7CisJWDg2RmVhdHVyZXNbUEdfU1NFNF8yXSA9 IGV4eFsyXSA+PiAyMCAmIDE7CisJWDg2RmVhdHVyZXNbUEdfUE9QQ05UXSA9IGV4eFsyXSA+PiAy MyAmIDE7CiAKLQkJaWYgKGV4eFsyXSAmICgxIDw8IDI3KSAmJgkvKiBPU1hTQVZFICovCi0JCQl6 bW1fcmVnc19hdmFpbGFibGUoKSkKLQkJewotCQkJLyogc2Vjb25kIGNwdWlkIGNhbGwgb24gbGVh ZiA3IHRvIGNoZWNrIGV4dGVuZGVkIEFWWC01MTIgc3VwcG9ydCAqLworCS8qIEFsbCB0aGVzZSBm ZWF0dXJlcyBkZXBlbmQgb24gT1NYU0FWRSAqLworCWlmIChleHhbMl0gJiAoMSA8PCAyNykpCisJ eworCQkvKiBzZWNvbmQgY3B1aWQgY2FsbCBvbiBsZWFmIDcgdG8gY2hlY2sgZXh0ZW5kZWQgQVZY LTUxMiBzdXBwb3J0ICovCiAKLQkJCW1lbXNldChleHgsIDAsIDQgKiBzaXplb2YoZXh4WzBdKSk7 CisJCW1lbXNldChleHgsIDAsIDQgKiBzaXplb2YoZXh4WzBdKSk7CiAKICNpZiBkZWZpbmVkKEhB VkVfX0dFVF9DUFVJRF9DT1VOVCkKLQkJCV9fZ2V0X2NwdWlkX2NvdW50KDcsIDAsICZleHhbMF0s ICZleHhbMV0sICZleHhbMl0sICZleHhbM10pOworCQlfX2dldF9jcHVpZF9jb3VudCg3LCAwLCAm ZXh4WzBdLCAmZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKICNlbGlmIGRlZmluZWQoSEFWRV9f Q1BVSURFWCkKLQkJCV9fY3B1aWRleChleHgsIDcsIDApOworCQlfX2NwdWlkZXgoZXh4LCA3LCAw KTsKICNlbmRpZgogCi0jaWZkZWYgVVNFX0FWWDUxMl9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNL Ci0JCQlpZiAoZXh4WzJdICYgKDEgPDwgMTApICYmCS8qIFZQQ0xNVUxRRFEgKi8KLQkJCQlleHhb MV0gJiAoMSA8PCAzMSkpIC8qIEFWWDUxMi1WTCAqLwotCQkJCXBnX2NvbXBfY3JjMzJjID0gcGdf Y29tcF9jcmMzMmNfYXZ4NTEyOwotI2VuZGlmCisJCWlmICh6bW1fcmVnc19hdmFpbGFibGUoKSkK KwkJeworCQkJWDg2RmVhdHVyZXNbUEdfQVZYNTEyX0JXXSA9IGV4eFsxXSA+PiAzMCAmIDE7CisJ CQlYODZGZWF0dXJlc1tQR19BVlg1MTJfVkxdID0gZXh4WzFdID4+IDMxICYgMTsKKworCQkJWDg2 RmVhdHVyZXNbUEdfQVZYNTEyX1ZQQ0xNVUxRRFFdID0gZXh4WzJdID4+IDEwICYgMTsKKwkJCVg4 NkZlYXR1cmVzW1BHX0FWWDUxMl9WUE9QQ05URFFdID0gZXh4WzJdID4+IDE0ICYgMTsKIAkJfQog CX0KIAotCXJldHVybiBwZ19jb21wX2NyYzMyYyhjcmMsIGRhdGEsIGxlbik7CisJWDg2RmVhdHVy ZXNbSU5JVF9QR19YODZdID0gdHJ1ZTsKIH0KIAotcGdfY3JjMzJjCSgqcGdfY29tcF9jcmMzMmMp IChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKSA9IHBnX2NvbXBf Y3JjMzJjX2Nob29zZTsKLQogI2VuZGlmCQkJCQkJCS8qIGRlZmluZWQoVVNFX1NTRTIpIHx8IGRl ZmluZWQoX19pMzg2X18pICovCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jcmMzMmNfc3NlNDIu YyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zc2U0Mi5jCmluZGV4IGMxMjc5ZDMxZmJkLi44ZmUwNWYw Yjg1MCAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyLmMKKysrIGIvc3JjL3Bv cnQvcGdfY3JjMzJjX3NzZTQyLmMKQEAgLTIwLDYgKzIwLDkgQEAKICNlbmRpZgogCiAjaW5jbHVk ZSAicG9ydC9wZ19jcmMzMmMuaCIKKyNpbmNsdWRlICJwb3J0L3BnX2NwdS5oIgorCitzdGF0aWMg cGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX2Nob29zZShwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lk ICpkYXRhLCBzaXplX3QgbGVuKTsKIAogcGdfYXR0cmlidXRlX25vX3Nhbml0aXplX2FsaWdubWVu dCgpCiBwZ19hdHRyaWJ1dGVfdGFyZ2V0KCJzc2U0LjIiKQpAQCAtMTU4LDQgKzE2MSwzMyBAQCBw Z19jb21wX2NyYzMyY19hdng1MTIocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6 ZV90IGxlbikKIAlyZXR1cm4gcGdfY29tcF9jcmMzMmNfc3NlNDIoY3JjMCwgYnVmLCBsZW4pOwog fQogCisjZW5kaWYJCQkJCQkJLyogVVNFX0FWWDUxMl9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNL ICovCisKKy8qCisgKiBUaGlzIGdldHMgY2FsbGVkIG9uIHRoZSBmaXJzdCBjYWxsLiBJdCByZXBs YWNlcyB0aGUgZnVuY3Rpb24gcG9pbnRlcgorICogc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIGFy ZSByb3V0ZWQgZGlyZWN0bHkgdG8gdGhlIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KKyAqLworc3Rh dGljIHBnX2NyYzMyYworcGdfY29tcF9jcmMzMmNfY2hvb3NlKHBnX2NyYzMyYyBjcmMsIGNvbnN0 IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pCit7CisJLyoKKwkgKiBTZXQgZmFsbGJhY2suIFdlIG11 c3QgZ3VhcmQgc2luY2Ugc2xpY2luZy1ieS04IGlzIG5vdCB2aXNpYmxlCisJICogZXZlcnl3aGVy ZS4KKwkgKi8KKyNpZmRlZiBVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSworCXBn X2NvbXBfY3JjMzJjID0gcGdfY29tcF9jcmMzMmNfc2I4OwogI2VuZGlmCisKKwlpZiAoeDg2X2Zl YXR1cmVfYXZhaWxhYmxlKFBHX1NTRTRfMikpCisJCXBnX2NvbXBfY3JjMzJjID0gcGdfY29tcF9j cmMzMmNfc3NlNDI7CisKKyNpZmRlZiBVU0VfQVZYNTEyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hF Q0sKKwlpZiAoeDg2X2ZlYXR1cmVfYXZhaWxhYmxlKFBHX0FWWDUxMl9WTCkgJiYKKwkJeDg2X2Zl YXR1cmVfYXZhaWxhYmxlKFBHX0FWWDUxMl9WUENMTVVMUURRKSkKKwkJcGdfY29tcF9jcmMzMmMg PSBwZ19jb21wX2NyYzMyY19hdng1MTI7CisjZW5kaWYKKworCXJldHVybiBwZ19jb21wX2NyYzMy YyhjcmMsIGRhdGEsIGxlbik7Cit9OworCitwZ19jcmMzMmMJKCpwZ19jb21wX2NyYzMyYykgKHBn X2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pID0gcGdfY29tcF9jcmMz MmNfY2hvb3NlOwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfcG9wY291bnRfeDg2LmMgYi9zcmMv cG9ydC9wZ19wb3Bjb3VudF94ODYuYwppbmRleCA2YmNlMDg5NDMyZi4uYTk5NjEzZjE4MTggMTAw NjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Ni5jCisrKyBiL3NyYy9wb3J0L3BnX3Bv cGNvdW50X3g4Ni5jCkBAIC0xNCwxOSArMTQsMTIgQEAKIAogI2lmZGVmIEhBVkVfWDg2XzY0X1BP UENOVFEKIAotI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKSB8fCBkZWZpbmVkKEhBVkVfX0dF VF9DUFVJRF9DT1VOVCkKLSNpbmNsdWRlIDxjcHVpZC5oPgotI2VuZGlmCi0KICNpZmRlZiBVU0Vf QVZYNTEyX1BPUENOVF9XSVRIX1JVTlRJTUVfQ0hFQ0sKICNpbmNsdWRlIDxpbW1pbnRyaW4uaD4K ICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX19DUFVJRCkgfHwgZGVmaW5lZChIQVZFX19DUFVJ REVYKQotI2luY2x1ZGUgPGludHJpbi5oPgotI2VuZGlmCi0KICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCisjaW5jbHVkZSAicG9ydC9wZ19jcHUuaCIKIAogLyoKICAqIFRoZSBTU0U0LjIg dmVyc2lvbnMgYXJlIGJ1aWx0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSBhcmUgYnVpbGRpbmcg dGhlCkBAIC01OCw4NCArNTEsOSBAQCBzdGF0aWMgdWludDY0IHBnX3BvcGNvdW50X21hc2tlZF9j aG9vc2UoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMsIGJpdHM4IG1hc2spOwogdWludDY0CQko KnBnX3BvcGNvdW50X29wdGltaXplZCkgKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKSA9IHBn X3BvcGNvdW50X2Nob29zZTsKIHVpbnQ2NAkJKCpwZ19wb3Bjb3VudF9tYXNrZWRfb3B0aW1pemVk KSAoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMsIGJpdHM4IG1hc2spID0gcGdfcG9wY291bnRf bWFza2VkX2Nob29zZTsKIAotLyoKLSAqIFJldHVybiB0cnVlIGlmIENQVUlEIGluZGljYXRlcyB0 aGF0IHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gaXMgYXZhaWxhYmxlLgotICovCi1zdGF0aWMgYm9v bAotcGdfcG9wY291bnRfc3NlNDJfYXZhaWxhYmxlKHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGV4 eFs0XSA9IHswLCAwLCAwLCAwfTsKLQotI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKQotCV9f Z2V0X2NwdWlkKDEsICZleHhbMF0sICZleHhbMV0sICZleHhbMl0sICZleHhbM10pOwotI2VsaWYg ZGVmaW5lZChIQVZFX19DUFVJRCkKLQlfX2NwdWlkKGV4eCwgMSk7Ci0jZWxzZQotI2Vycm9yIGNw dWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUKLSNlbmRpZgotCi0JcmV0dXJuIChleHhbMl0g JiAoMSA8PCAyMykpICE9IDA7CS8qIFBPUENOVCAqLwotfQogCiAjaWZkZWYgVVNFX0FWWDUxMl9Q T1BDTlRfV0lUSF9SVU5USU1FX0NIRUNLCiAKLS8qCi0gKiBEb2VzIENQVUlEIHNheSB0aGVyZSdz IHN1cHBvcnQgZm9yIFhTQVZFIGluc3RydWN0aW9ucz8KLSAqLwotc3RhdGljIGlubGluZSBib29s Ci14c2F2ZV9hdmFpbGFibGUodm9pZCkKLXsKLQl1bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAs IDAsIDB9OwotCi0jaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpCi0JX19nZXRfY3B1aWQoMSwg JmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7Ci0jZWxpZiBkZWZpbmVkKEhBVkVf X0NQVUlEKQotCV9fY3B1aWQoZXh4LCAxKTsKLSNlbHNlCi0jZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rp b24gbm90IGF2YWlsYWJsZQotI2VuZGlmCi0JcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyNykpICE9 IDA7CS8qIG9zeHNhdmUgKi8KLX0KLQotLyoKLSAqIERvZXMgWEdFVEJWIHNheSB0aGUgWk1NIHJl Z2lzdGVycyBhcmUgZW5hYmxlZD8KLSAqCi0gKiBOQjogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciB2ZXJpZnlpbmcgdGhhdCB4c2F2ZV9hdmFpbGFibGUoKSByZXR1cm5zIHRydWUKLSAqIGJlZm9y ZSBjYWxsaW5nIHRoaXMuCi0gKi8KLSNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKLXBnX2F0 dHJpYnV0ZV90YXJnZXQoInhzYXZlIikKLSNlbmRpZgotc3RhdGljIGlubGluZSBib29sCi16bW1f cmVnc19hdmFpbGFibGUodm9pZCkKLXsKLSNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKLQly ZXR1cm4gKF94Z2V0YnYoMCkgJiAweGU2KSA9PSAweGU2OwotI2Vsc2UKLQlyZXR1cm4gZmFsc2U7 Ci0jZW5kaWYKLX0KLQotLyoKLSAqIERvZXMgQ1BVSUQgc2F5IHRoZXJlJ3Mgc3VwcG9ydCBmb3Ig QVZYLTUxMiBwb3Bjb3VudCBhbmQgYnl0ZS1hbmQtd29yZAotICogaW5zdHJ1Y3Rpb25zPwotICov Ci1zdGF0aWMgaW5saW5lIGJvb2wKLWF2eDUxMl9wb3BjbnRfYXZhaWxhYmxlKHZvaWQpCi17Ci0J dW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLQotI2lmIGRlZmluZWQoSEFWRV9f R0VUX0NQVUlEX0NPVU5UKQotCV9fZ2V0X2NwdWlkX2NvdW50KDcsIDAsICZleHhbMF0sICZleHhb MV0sICZleHhbMl0sICZleHhbM10pOwotI2VsaWYgZGVmaW5lZChIQVZFX19DUFVJREVYKQotCV9f Y3B1aWRleChleHgsIDcsIDApOwotI2Vsc2UKLSNlcnJvciBjcHVpZCBpbnN0cnVjdGlvbiBub3Qg YXZhaWxhYmxlCi0jZW5kaWYKLQlyZXR1cm4gKGV4eFsyXSAmICgxIDw8IDE0KSkgIT0gMCAmJiAv KiBhdng1MTItdnBvcGNudGRxICovCi0JCShleHhbMV0gJiAoMSA8PCAzMCkpICE9IDA7CS8qIGF2 eDUxMi1idyAqLwotfQotCiAvKgogICogUmV0dXJucyB0cnVlIGlmIHRoZSBDUFUgc3VwcG9ydHMg dGhlIGluc3RydWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFWWC01MTIKICAqIHBnX3BvcGNvdW50 KCkgaW1wbGVtZW50YXRpb24uCkBAIC0xNDMsOSArNjEsOCBAQCBhdng1MTJfcG9wY250X2F2YWls YWJsZSh2b2lkKQogc3RhdGljIGJvb2wKIHBnX3BvcGNvdW50X2F2eDUxMl9hdmFpbGFibGUodm9p ZCkKIHsKLQlyZXR1cm4geHNhdmVfYXZhaWxhYmxlKCkgJiYKLQkJem1tX3JlZ3NfYXZhaWxhYmxl KCkgJiYKLQkJYXZ4NTEyX3BvcGNudF9hdmFpbGFibGUoKTsKKwlyZXR1cm4geDg2X2ZlYXR1cmVf YXZhaWxhYmxlKFBHX0FWWDUxMl9CVykgJiYKKwkJeDg2X2ZlYXR1cmVfYXZhaWxhYmxlKFBHX0FW WDUxMl9WUE9QQ05URFEpOwogfQogCiAjZW5kaWYJCQkJCQkJLyogVVNFX0FWWDUxMl9QT1BDTlRf V0lUSF9SVU5USU1FX0NIRUNLICovCkBAIC0xNTksNyArNzYsNyBAQCBwZ19wb3Bjb3VudF9hdng1 MTJfYXZhaWxhYmxlKHZvaWQpCiBzdGF0aWMgaW5saW5lIHZvaWQKIGNob29zZV9wb3Bjb3VudF9m dW5jdGlvbnModm9pZCkKIHsKLQlpZiAocGdfcG9wY291bnRfc3NlNDJfYXZhaWxhYmxlKCkpCisJ aWYgKHg4Nl9mZWF0dXJlX2F2YWlsYWJsZShQR19QT1BDTlQpKQogCXsKIAkJcGdfcG9wY291bnRf b3B0aW1pemVkID0gcGdfcG9wY291bnRfc3NlNDI7CiAJCXBnX3BvcGNvdW50X21hc2tlZF9vcHRp bWl6ZWQgPSBwZ19wb3Bjb3VudF9tYXNrZWRfc3NlNDI7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDI0MTk0NTczNGVjLi4wNDFiOTk5NzZjNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTMzOTQsNiArMzM5NCw3IEBAIFg1MDlfTkFNRQogWDUwOV9OQU1FX0VOVFJZCiBYNTA5 X1NUT1JFCiBYNTA5X1NUT1JFX0NUWAorWDg2RmVhdHVyZUlkCiBYTFRXX09wZXIKIFhMb2dDdGxE YXRhCiBYTG9nQ3RsSW5zZXJ0Ci0tIAoyLjUzLjAKCg== --0000000000007f8502064b7f7c5a Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0003-Refactor-detection-of-x86-ZMM-registers.patch" Content-Disposition: attachment; filename="v5-0003-Refactor-detection-of-x86-ZMM-registers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlzc43oh0 RnJvbSAxMjZhZGM3OTQxMmM4MDg2MzBhOTRiZjg3YzhlYjZlMDFkYTBhNjlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIE5heWxvciA8am9obi5uYXlsb3JAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IE1vbiwgMjMgRmViIDIwMjYgMjE6MTc6NDkgKzA3MDAKU3ViamVjdDogW1BBVENI IHY1IDMvM10gUmVmYWN0b3IgZGV0ZWN0aW9uIG9mIHg4NiBaTU0gcmVnaXN0ZXJzCgotIENhbGwg X3hnZXRidiB3aXRoaW4geDg2X3NldF9ydW50aW1lX2ZlYXR1cmVzIHJhdGhlciB0aGFuIGluIGEK ICBzZXBhcmF0ZSBmdW5jdGlvbgotIFVzZSBzeW1ib2xzIGZvciBYQ1IgbWFzayBiaXRzIHJhdGhl ciB0aGFuIGEgbWFnaWMgY29uc3RhbnQKCkEgZnV0dXJlIGNvbW1pdCB3aWxsIGJ1aWxkIG9uIHRo aXMgdG8gZGV0ZWN0IFlNTSByZWdpc3RlcnMgd2l0aG91dApjb2RlIGR1cGxpY2F0aW9uLgoKUmV2 aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FOV0NBWmJnRVVGdzdMdVlTVmVKPVRqOThSNUhv T0IxRmZlcWszYUx2Ync1clU1TlR3QG1haWwuZ21haWwuY29tCi0tLQogc3JjL3BvcnQvcGdfY3B1 X3g4Ni5jIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9wb3J0L3BnX2NwdV94ODYuYyBiL3NyYy9wb3J0L3BnX2NwdV94ODYuYwppbmRleCA4 ODg2M2Y5NzYyYy4uYjBlMDA0OGY1NjEgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2NwdV94ODYu YworKysgYi9zcmMvcG9ydC9wZ19jcHVfeDg2LmMKQEAgLTMxLDMyICszMSwyOSBAQAogCiAjaW5j bHVkZSAicG9ydC9wZ19jcHUuaCIKIAorLyogWFNBVkUgc3RhdGUgY29tcG9uZW50IGJpdHMgdGhh dCB3ZSBuZWVkICovCisjZGVmaW5lIFhNTQkJCSgxPDwxKQorI2RlZmluZSBZTU0JCQkoMTw8MikK KyNkZWZpbmUgT1BNQVNLCQkoMTw8NSkKKyNkZWZpbmUgWk1NMF8xNQkJKDE8PDYpCisjZGVmaW5l IFpNTTE2XzMxCSgxPDw3KQorCiAKIC8qIGFycmF5IGluZGV4ZWQgYnkgZW51bSBYODZGZWF0dXJl SWQgKi8KIGJvb2wJCVg4NkZlYXR1cmVzW1g4NkZlYXR1cmVzU2l6ZV0gPSB7MH07CiAKLS8qCi0g KiBEb2VzIFhHRVRCViBzYXkgdGhlIFpNTSByZWdpc3RlcnMgYXJlIGVuYWJsZWQ/Ci0gKgotICog TkI6IENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgdmVyaWZ5aW5nIHRoYXQgb3N4c2F2ZSBpcyBh dmFpbGFibGUKLSAqIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gKi8KLSNpZmRlZiBIQVZFX1hTQVZF X0lOVFJJTlNJQ1MKLXBnX2F0dHJpYnV0ZV90YXJnZXQoInhzYXZlIikKLSNlbmRpZgogc3RhdGlj IGJvb2wKLXptbV9yZWdzX2F2YWlsYWJsZSh2b2lkKQorbWFza19hdmFpbGFibGUodWludDMyIHZh bHVlLCB1aW50MzIgbWFzaykKIHsKLSNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKLQlyZXR1 cm4gKF94Z2V0YnYoMCkgJiAweGU2KSA9PSAweGU2OwotI2Vsc2UKLQlyZXR1cm4gZmFsc2U7Ci0j ZW5kaWYKKwlyZXR1cm4gKHZhbHVlICYgbWFzaykgPT0gbWFzazsKIH0KIAogLyoKICAqIFBhcnNl IHRoZSBDUFUgSUQgaW5mbyBmb3IgcnVudGltZSBjaGVja3MuCiAgKi8KKyNpZmRlZiBIQVZFX1hT QVZFX0lOVFJJTlNJQ1MKK3BnX2F0dHJpYnV0ZV90YXJnZXQoInhzYXZlIikKKyNlbmRpZgogdm9p ZAogc2V0X3g4Nl9mZWF0dXJlcyh2b2lkKQogewpAQCAtNzYsMTcgKzczLDI0IEBAIHNldF94ODZf ZmVhdHVyZXModm9pZCkKIAkvKiBBbGwgdGhlc2UgZmVhdHVyZXMgZGVwZW5kIG9uIE9TWFNBVkUg Ki8KIAlpZiAoZXh4WzJdICYgKDEgPDwgMjcpKQogCXsKLQkJLyogc2Vjb25kIGNwdWlkIGNhbGwg b24gbGVhZiA3IHRvIGNoZWNrIGV4dGVuZGVkIEFWWC01MTIgc3VwcG9ydCAqLworCQl1aW50MzIJ CXhjcjBfdmFsID0gMDsKIAorCQkvKiBzZWNvbmQgY3B1aWQgY2FsbCBvbiBsZWFmIDcgdG8gY2hl Y2sgZXh0ZW5kZWQgQVZYLTUxMiBzdXBwb3J0ICovCiAJCW1lbXNldChleHgsIDAsIDQgKiBzaXpl b2YoZXh4WzBdKSk7Ci0KICNpZiBkZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKIAkJX19n ZXRfY3B1aWRfY291bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7 CiAjZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlERVgpCiAJCV9fY3B1aWRleChleHgsIDcsIDApOwog I2VuZGlmCiAKLQkJaWYgKHptbV9yZWdzX2F2YWlsYWJsZSgpKQorI2lmZGVmIEhBVkVfWFNBVkVf SU5UUklOU0lDUworCQkvKiBnZXQgdmFsdWUgb2YgRXh0ZW5kZWQgQ29udHJvbCBSZWdpc3RlciAq LworCQl4Y3IwX3ZhbCA9IF94Z2V0YnYoMCk7CisjZW5kaWYKKworCQkvKiBBcmUgWk1NIHJlZ2lz dGVycyBlbmFibGVkPyAqLworCQlpZiAobWFza19hdmFpbGFibGUoeGNyMF92YWwsIFhNTSB8IFlN TSB8CisJCQkJCQkgICBPUE1BU0sgfCBaTU0wXzE1IHwgWk1NMTZfMzEpKQogCQl7CiAJCQlYODZG ZWF0dXJlc1tQR19BVlg1MTJfQlddID0gZXh4WzFdID4+IDMwICYgMTsKIAkJCVg4NkZlYXR1cmVz W1BHX0FWWDUxMl9WTF0gPSBleHhbMV0gPj4gMzEgJiAxOwotLSAKMi41My4wCgo= --0000000000007f8502064b7f7c5a--