From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25735 invoked by alias); 18 Jun 2008 23:16:38 -0000 Received: (qmail 25726 invoked by uid 22791); 18 Jun 2008 23:16:38 -0000 X-Spam-Check-By: sourceware.org Received: from fk-out-0910.google.com (HELO fk-out-0910.google.com) (209.85.128.191) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 18 Jun 2008 23:16:20 +0000 Received: by fk-out-0910.google.com with SMTP id 19so491436fkr.8 for ; Wed, 18 Jun 2008 16:16:17 -0700 (PDT) Received: by 10.78.142.14 with SMTP id p14mr713023hud.51.1213830977381; Wed, 18 Jun 2008 16:16:17 -0700 (PDT) Received: by 10.78.192.7 with HTTP; Wed, 18 Jun 2008 16:16:17 -0700 (PDT) Message-ID: <6dc9ffc80806181616l51a6110esca357324054c7d9a@mail.gmail.com> Date: Wed, 18 Jun 2008 23:16:00 -0000 From: "H.J. Lu" To: "Jan Hubicka" Subject: Re: RFC: Extend x86-64 psABI for 256bit AVX register Cc: "Jakub Jelinek" , "Jan Hubicka" , discuss@x86-64.org, GCC , "Girkar, Milind" , "Dmitriev, Serguei N" , "Kreitzer, David L" , "Michael Meissner" , "Dwarakanath Rajagopal" In-Reply-To: <20080616014913.GG13387@atrey.karlin.mff.cuni.cz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2657_15931201.1213830977360" References: <20080609144054.GA13869@atrey.karlin.mff.cuni.cz> <20080610113220.GD13869@atrey.karlin.mff.cuni.cz> <6dc9ffc80806100647p2c199dbcj5a3650ad97837c63@mail.gmail.com> <20080610145014.GH17032@kam.mff.cuni.cz> <20080610151122.GZ3726@sunsite.mff.cuni.cz> <6dc9ffc80806100841s291c8491g16767b36aac9a796@mail.gmail.com> <20080610154857.GE20774@kam.mff.cuni.cz> <20080611144912.GA7049@lucon.org> <20080615225203.GA9026@sunsite.mff.cuni.cz> <20080616014913.GG13387@atrey.karlin.mff.cuni.cz> X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2008-06/txt/msg00408.txt.bz2 ------=_Part_2657_15931201.1213830977360 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1889 Hi, Here is the AVX patch for x86-64 psABI proposed at gcc submmit 2008. H.J. --- On Sun, Jun 15, 2008 at 6:49 PM, Jan Hubicka wrote: >> On Wed, Jun 11, 2008 at 07:49:12AM -0700, H.J. Lu wrote: >> > > I guess we all agree on passing variadic arguments on stack (that is >> > > only those belonging on ...) and rest in registers. It seems easiest in >> > > regard to future register set extensions too. Only negative thing is >> > > that calls to variadic functions will become bit longer, but I guess it >> > > is not big deal. (the fact that register passing conventions are shorter >> > > and variadic functions tends to be called many times was also original >> > > motivation to support register passing on pretty much everything for >> > > varargs in psABI) >> > > >> > >> > There is no precedent for passing named parameters in registers but >> > unnamed parameters on the stack. On IA32 for the __m128 types, we >> > pass ALL __m128 parameters on the stack for varargs functions, not >> > just the unnamed ones. I think we should do the same for x86-64. >> >> Why should the 32-bit ABI influence x86-64 ABI decisions? >> There are clear advantages of passing __m128 named arguments in registers >> (shorter/faster code both on the caller and callee side) and there >> are advantages of passing __m128 unnamed arguments on the stack >> (for va_arg to work, they need to be on the stack, and if they >> are passed in registers, the callee would need to push them >> to the stack). > > For record I would also preffer passing all named AVX arguments in > registers. x86-64 ABI was designed for performance not for backward > compatibility, so it should be consistent with original idea and I think > that ABIs are divergent anough so this won't cause too much of extra > confussion. But I am happy with both solutions. > > Honza >> >> Jakub > -- H.J. ------=_Part_2657_15931201.1213830977360 Content-Type: application/octet-stream; name=avx-5.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fhmjkcoe0 Content-Disposition: attachment; filename=avx-5.patch Content-length: 12160 SW5kZXg6IGxvdy1sZXZlbC1zeXMtaW5mby50ZXgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gbG93LWxldmVsLXN5cy1pbmZvLnRleAkocmV2aXNpb24g MjE3KQorKysgbG93LWxldmVsLXN5cy1pbmZvLnRleAkod29ya2luZyBjb3B5 KQpAQCAtMjUsOCArMjUsOCBAQCBvYmplY3QsIGFuZCB0aGUgdGVybSBcZW1w aHtcdGV4dGluZGV4e1xzCiBcc3Vic3Vic2VjdGlvbntGdW5kYW1lbnRhbCBU eXBlc30KIAogRmlndXJlflxyZWZ7YmFzaWMtdHlwZXN9IHNob3dzIHRoZSBj b3JyZXNwb25kZW5jZSBiZXR3ZWVuIElTTyBDJ3MKLXNjYWxhciB0eXBlcyBh bmQgdGhlIHByb2Nlc3NvcidzLiAgXGNvZGV7X19pbnQxMjh9LAotXGNvZGV7 X19mbG9hdDEyOH0sIFxjb2Rle19fbTY0fSBhbmQgXGNvZGV7X19tMTI4fSB0 eXBlcyBhcmUgb3B0aW9uYWwuCitzY2FsYXIgdHlwZXMgYW5kIHRoZSBwcm9j ZXNzb3Incy4gIFxjb2Rle19faW50MTI4fSwgXGNvZGV7X19mbG9hdDEyOH0s CitcY29kZXtfX202NH0sIFxjb2Rle19fbTEyOH0gYW5kIFxjb2Rle19fbTI1 Nn0gdHlwZXMgYXJlIG9wdGlvbmFsLgogCiBcYmVnaW57ZmlndXJlfQogICBc Y2FwdGlvbntTY2FsYXIgVHlwZXN9XGxhYmVse2Jhc2ljLXR5cGVzfQpAQCAt OTEsOCArOTEsMTAgQEAgc2NhbGFyIHR5cGVzIGFuZCB0aGUgcHJvY2Vzc29y J3MuICBcY29kZQogICAgIFBhY2tlZCAmIFx0ZXh0dHR7X19tNjR9JF57XGRh Z2dlclxkYWdnZXJ9JCAmIDggJiA4ICYgXE1NWHt9IGFuZCBcdGhyZWVkbm93 IFxcCiAgICAgXGNsaW5lezItNX0KICAgICAmIFx0ZXh0dHR7X19tMTI4fSRe e1xkYWdnZXJcZGFnZ2VyfSQgJiAxNiAmIDE2ICYgU1NFIGFuZCBTU0UtMiBc XAorICAgIFxjbGluZXsyLTV9CisgICAgJiBcdGV4dHR0e19fbTI1Nn0kXntc ZGFnZ2VyXGRhZ2dlcn0kICYgMzIgJiAzMiAmIEFWWCBcXAogXG5vYWxpZ257 XHNtYWxsc2tpcH0KLVxjbGluZXsxLTJ9CitcY2xpbmV7MS01fQogXG11bHRp Y29sdW1uezN9e2x9e1xzbWFsbCAkXlxkYWdnZXIkIFRoaXMgdHlwZSBpcyBj YWxsZWQgXHRleHR0dHtib29sfQogaW4gQysrLn1cXAogXG11bHRpY29sdW1u ezN9e2x9e1xzbWFsbCAkXntcZGFnZ2VyXGRhZ2dlcn0kIFRoZXNlIHR5cGVz IGFyZSBvcHRpb25hbC59XFwKQEAgLTEzNCw4ICsxMzYsOCBAQCBhbnkgbm9u emVybyB2YWx1ZSBpcyBjb25zaWRlcmVkIFxjb2Rle3RyCiBMaWtlIHRoZSBJ bnRlbDM4NiBhcmNoaXRlY3R1cmUsIHRoZSBceEFSQ0ggYXJjaGl0ZWN0dXJl IGluIGdlbmVyYWwKIGRvZXMgbm90IHJlcXVpcmUgYWxsIGRhdGEgYWNjZXNz ZXMgdG8gYmUgcHJvcGVybHkgYWxpZ25lZC4gIE1pc2FsaWduZWQKIGRhdGEg YWNjZXNzZXMgYXJlIHNsb3dlciB0aGFuIGFsaWduZWQgYWNjZXNzZXMKLWJ1 dCBvdGhlcndpc2UgYmVoYXZlIGlkZW50aWNhbGx5LiAgVGhlIG9ubHkgZXhj ZXB0aW9uIGlzIHRoYXQKLVxjb2Rle19fbTEyOH0gbXVzdCBhbHdheXMgYmUg YWxpZ25lZCBwcm9wZXJseS4KK2J1dCBvdGhlcndpc2UgYmVoYXZlIGlkZW50 aWNhbGx5LiAgVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgdGhhdAorXGNvZGV7 X19tMTI4fSBhbmQgXGNvZGV7X19tMjU2fSBtdXN0IGFsd2F5cyBiZSBhbGln bmVkIHByb3Blcmx5LgogCiBcc3Vic3Vic2VjdGlvbntBZ2dyZWdhdGVzIGFu ZCBVbmlvbnN9CiAKQEAgLTE5NCw5ICsxOTYsOSBAQCBpbnRlZ3JhbCB2YWx1 ZXMgb2YgYSBzcGVjaWZpZWQgc2l6ZS4KIFxIcnVsZQogXGVuZHtmaWd1cmV9 CiAKLVRoZSBBQkkgZG9lcyBub3QgcGVybWl0IGJpdC1maWVsZHMgaGF2aW5n IHRoZSB0eXBlIFx0ZXh0dHR7X19tNjR9IG9yCi1cdGV4dHR0e19fbTEyOH0u ICBQcm9ncmFtcyB1c2luZyBiaXQtZmllbGRzIG9mIHRoZXNlIHR5cGVzIGFy ZSBub3QKLXBvcnRhYmxlLgorVGhlIEFCSSBkb2VzIG5vdCBwZXJtaXQgYml0 LWZpZWxkcyBoYXZpbmcgdGhlIHR5cGUgXHRleHR0dHtfX202NH0sCitcdGV4 dHR0e19fbTEyOH0gb3IgXHRleHR0dHtfX20yNTZ9LiAgUHJvZ3JhbXMgdXNp bmcgYml0LWZpZWxkcyBvZgordGhlc2UgdHlwZXMgYXJlIG5vdCBwb3J0YWJs ZS4KIAogQml0LWZpZWxkcyB0aGF0IGFyZSBuZWl0aGVyIHNpZ25lZCBub3Ig dW5zaWduZWQKIGFsd2F5cyBoYXZlIG5vbi1uZWdhdGl2ZSB2YWx1ZXMuIEFs dGhvdWdoIHRoZXkgbWF5IGhhdmUgdHlwZSBjaGFyLApAQCAtMjQwLDYgKzI0 MiwxNSBAQCB0aGUgeDg3IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBtYXkg YmUgCiBtb2RlIGFzIGEgNjQtYml0IHJlZ2lzdGVyLiAgQWxsIG9mIHRoZXNl IHJlZ2lzdGVycyBhcmUgZ2xvYmFsIHRvIGFsbAogcHJvY2VkdXJlcyBhY3Rp dmUgZm9yIGEgZ2l2ZW4gdGhyZWFkLgogCitJbnRlbFx0ZXh0c3VwZXJzY3Jp cHR7XHRleHRyZWdpc3RlcmVkfSBBVlgKKyhJbnRlbFx0ZXh0c3VwZXJzY3Jp cHR7XHRleHRyZWdpc3RlcmVkfSBBZHZhbmNlZCBWZWN0b3IKK0V4dGVuc2lv bnMpIHByb3ZpZGVzIDE2IDI1Ni1iaXQgd2lkZSBBVlggcmVnaXN0ZXJzCiso XHJlZ3t5bW0wfSAtIFxyZWd7eW1tMTV9KS4gIFRoZSBsb3dlciAxMjgtYml0 cyBvZiBccmVne3ltbTB9IC0gXHJlZ3t5bW0xNX0KK2FyZSBhbGlhc2VkIHRv IHRoZSByZXNwZWN0aXZlIDEyOGItYml0IFNTRSByZWdpc3RlcnMgKFxyZWd7 eG1tMH0gLQorXHJlZ3t4bW0xNX0pLiBGb3IgcHVycG9zZXMgb2YgcGFyYW1l dGVyIHBhc3NpbmcgYW5kIGZ1bmN0aW9uIHJldHVybiwKK1xyZWd7eG1tTn0g YW5kIFxyZWd7eW1tTn0gcmVmZXIgdG8gdGhlIHNhbWUgcmVnaXN0ZXIuIE9u bHkgb25lIG9mIHRoZW0KK2NhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUu CisKIFRoaXMgc3Vic2VjdGlvbiBkaXNjdXNzZXMgdXNhZ2Ugb2YgZWFjaCBy ZWdpc3Rlci4gIFJlZ2lzdGVycyBcUkJQLCBcUkJYIGFuZAogXHJlZ3tyMTJ9 IHRocm91Z2ggXHJlZ3tyMTV9IGBgYmVsb25nJycgdG8gdGhlIGNhbGxpbmcg ZnVuY3Rpb24gYW5kIHRoZQogY2FsbGVkIGZ1bmN0aW9uIGlzIHJlcXVpcmVk IHRvIHByZXNlcnZlIHRoZWlyIHZhbHVlcy4gIEluIG90aGVyIHdvcmRzLApA QCAtMzAwLDkgKzMxMSwxMCBAQCBzdGFjay4gIFRoaXMgc3RhY2sgZ3Jvd3Mg ZG93bndhcmRzIGZyb20gCiBcSHJ1bGUKIFxlbmR7ZmlndXJlfQogCi1UaGUg ZW5kIG9mIHRoZSBpbnB1dCBhcmd1bWVudCBhcmVhIHNoYWxsIGJlIGFsaWdu ZWQgb24gYSAxNiBieXRlCi1ib3VuZGFyeS4gIEluIG90aGVyIHdvcmRzLCB0 aGUgdmFsdWUgJChcUlNQIC0gOCkkIGlzIGFsd2F5cyBhIG11bHRpcGxlCi1v ZiAkMTYkIHdoZW4gY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZnVu Y3Rpb24gZW50cnkgcG9pbnQuICBUaGUKK1RoZSBlbmQgb2YgdGhlIGlucHV0 IGFyZ3VtZW50IGFyZWEgc2hhbGwgYmUgYWxpZ25lZCBvbiBhIDE2ICgzMiwg aWYKK1x0ZXh0dHR7X19tMjU2fSBpcyBwYXNzZWQgb24gc3RhY2spIGJ5dGUg Ym91bmRhcnkuICBJbiBvdGhlcgord29yZHMsIHRoZSB2YWx1ZSAkKFxSU1Ag LSA4KSQgaXMgYWx3YXlzIGEgbXVsdGlwbGUgb2YgJDE2JCAoJDMyJCkgd2hl bgorY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZnVuY3Rpb24gZW50 cnkgcG9pbnQuICBUaGUKIHN0YWNrIHBvaW50ZXIsIFxSU1AsIGFsd2F5cyBw b2ludHMgdG8gdGhlIGVuZCBvZiB0aGUgbGF0ZXN0IGFsbG9jYXRlZAogc3Rh Y2sgZnJhbWUuICBcZm9vdG5vdGV7VGhlIGNvbnZlbnRpb25hbCB1c2Ugb2Yg XFJCUHt9IGFzIGEgZnJhbWUKICAgcG9pbnRlciBmb3IgdGhlIHN0YWNrIGZy YW1lIG1heSBiZSBhdm9pZGVkIGJ5IHVzaW5nIFxSU1AgKHRoZSBzdGFjawpA QCAtMzMzLDkgKzM0NSwxMCBAQCBjbGFzc2VzIGFyZSBjb3JyZXNwb25kaW5n IHRvIFx4QVJDSCByZWdpCiBcYmVnaW57ZGVzY3JpcHRpb259CiBcaXRlbVtJ TlRFR0VSXSBUaGlzIGNsYXNzIGNvbnNpc3RzIG9mIGludGVncmFsIHR5cGVz IHRoYXQgZml0IGludG8gb25lIG9mCiAgIHRoZSBnZW5lcmFsIHB1cnBvc2Ug cmVnaXN0ZXJzLgotXGl0ZW1bU1NFXSBUaGUgY2xhc3MgY29uc2lzdHMgb2Yg dHlwZXMgdGhhdCBmaXRzIGludG8gYSBTU0UgcmVnaXN0ZXIuCitcaXRlbVtT U0VdIFRoZSBjbGFzcyBjb25zaXN0cyBvZiB0eXBlcyB0aGF0IGZpdCBpbnRv IGEgU1NFIHJlZ2lzdGVyLgogXGl0ZW1bU1NFVVBdIFRoZSBjbGFzcyBjb25z aXN0cyBvZiB0eXBlcyB0aGF0IGZpdCBpbnRvIGEgU1NFIHJlZ2lzdGVyCiAg IGFuZCBjYW4gYmUgcGFzc2VkIGFuZCByZXR1cm5lZCBpbiB0aGUgbW9zdCBz aWduaWZpY2FudCBoYWxmIG9mIGl0LgorXGl0ZW1bQVZYXSBUaGUgY2xhc3Mg Y29uc2lzdHMgb2YgdHlwZXMgdGhhdCBmaXQgaW50byBhIEFWWCByZWdpc3Rl ci4KIFxpdGVtW1g4NywgWDg3VVBdIFRoZXNlIGNsYXNzZXMgY29uc2lzdHMg b2YgdHlwZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIHZpYQogICB0aGUgeDg3 IEZQVS4KIFxpdGVtW0NPTVBMRVhcX1g4N10gVGhpcyBjbGFzcyBjb25zaXN0 cyBvZiB0eXBlcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQKQEAgLTM2MSw2ICsz NzQsNyBAQCBUaGUgYmFzaWMgdHlwZXMgYXJlIGFzc2lnbmVkIHRoZWlyIG5h dHVyCiBcaXRlbSBBcmd1bWVudHMgb2YgdHlwZXMgXGNvZGV7X19mbG9hdDEy OH0sIFxjb2Rle19EZWNpbWFsMTI4fQogICBhbmQgXGNvZGV7X19tMTI4fSBh cmUgc3BsaXQgaW50byB0d28gaGFsdmVzLiAgVGhlIGxlYXN0IHNpZ25pZmlj YW50CiAgIG9uZXMgYmVsb25nIHRvIGNsYXNzIFNTRSwgdGhlIG1vc3Qgc2ln bmlmaWNhbnQgb25lIHRvIGNsYXNzIFNTRVVQLgorXGl0ZW0gQXJndW1lbnRz IG9mIHR5cGUgXGNvZGV7X19tMjU2fSBhcmUgaW4gY2xhc3MgQVZYLgogXGl0 ZW0gVGhlIDY0LWJpdCBtYW50aXNzYSBvZiBhcmd1bWVudHMgb2YgdHlwZSBc Y29kZXtsb25nIGRvdWJsZX0KICAgYmVsb25ncyB0byBjbGFzcyBYODcsIHRo ZSAxNi1iaXQgZXhwb25lbnQgcGx1cyA2IGJ5dGVzIG9mIHBhZGRpbmcKICAg YmVsb25ncyB0byBjbGFzcyBYODdVUC4KQEAgLTQ2OCw2ICs0ODIsOSBAQCBs ZWZ0LXRvLXJpZ2h0IG9yZGVyKSBmb3IgcGFzc2luZyBhcyBmb2xsCiBcaXRl bSBJZiB0aGUgY2xhc3MgaXMgU1NFVVAsIHRoZSBcZWlnaHRieXRlIGlzIHBh c3NlZCBpbiB0aGUgdXBwZXIKICAgIGhhbGYgb2YgdGhlIGxhc3QgdXNlZCBT U0UgcmVnaXN0ZXIuCiAKK1xpdGVtIElmIHRoZSBjbGFzcyBpcyBBVlgsIHRo ZSBuZXh0IGF2YWlsYWJsZSBBVlggcmVnaXN0ZXIgaXMgdXNlZCwgdGhlCisg ICByZWdpc3RlcnMgYXJlIHRha2VuIGluIHRoZSBvcmRlciBmcm9tIFxyZWd7 eW1tMH0gdG8gXHJlZ3t5bW03fS4KKwogXGl0ZW0gSWYgdGhlIGNsYXNzIGlz IFg4NywgWDg3VVAgb3IgQ09NUExFWFxfWDg3LCBpdCBpcyBwYXNzZWQgaW4g bWVtb3J5LgogXGVuZHtlbnVtZXJhdGV9CiAKQEAgLTU0NCw2ICs1NjEsOSBA QCB0aGUgbnVtYmVyIG9mIFNTRSByZWdpc3RlcnMgdXNlZC4gVGhlIGNvCiBt YXRjaCBleGFjdGx5IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzLCBidXQgbXVz dCBiZSBhbiB1cHBlciBib3VuZCBvbgogdGhlIG51bWJlciBvZiBTU0UgcmVn aXN0ZXJzIHVzZWQgYW5kIGlzIGluIHRoZSByYW5nZSAwLS04IGluY2x1c2l2 ZS4KIAorV2hlbiBwYXNzaW5nIFx0ZXh0dHR7X19tMjU2fSBhcmd1bWVudHMg dG8gZnVuY3Rpb25zIHRoYXQgdXNlIHZhcmFyZ3MKK29yIHN0ZGFyZywgZnVu Y3Rpb24gcHJvdG90eXBlcyBtdXN0IGJlIHByb3ZpZGVkLiAgT3RoZXJ3aXNl LCB0aGUKK3J1bi10aW1lIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KIAogXHBh cmFncmFwaHtSZXR1cm5pbmcgb2YgVmFsdWVzfQogVGhlIHJldHVybmluZyBv ZiB2YWx1ZXMgaXMgZG9uZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBh bGdvcml0aG06CkBAIC01NjcsNiArNTg3LDkgQEAgVGhlIHJldHVybmluZyBv ZiB2YWx1ZXMgaXMgZG9uZSBhY2NvcmRpbgogXGl0ZW0gSWYgdGhlIGNsYXNz IGlzIFNTRVVQLCB0aGUgXGVpZ2h0Ynl0ZSBpcyBwYXNzZWQgaW4gdGhlIHVw cGVyIGhhbGYgb2YgdGhlCiAgICBsYXN0IHVzZWQgU1NFIHJlZ2lzdGVyLgog CitcaXRlbSBJZiB0aGUgY2xhc3MgaXMgQVZYLCB0aGUgbmV4dCBhdmFpbGFi bGUgQVZYIHJlZ2lzdGVyIG9mIHRoZQorICAgc2VxdWVuY2UgXHJlZ3t5bW0w fSwgXHJlZ3t5bW0xfSBpcyB1c2VkLgorCiBcaXRlbSBJZiB0aGUgY2xhc3Mg aXMgWDg3LCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQgb24gdGhlIFg4NyBzdGFj ayBpbgogICAgXHJlZ3tzdDB9IGFzIDgwLWJpdCB4ODcgbnVtYmVyLgogCkBA IC01OTgsMTMgKzYyMSwxNSBAQCBzdHJ1Y3RwYXJtIHM7XFwKIGludCBlLCBm LCBnLCBoLCBpLCBqLCBrO1xcCiBsb25nIGRvdWJsZSBsZDtcXAogZG91Ymxl IG0sIG47XFwKK19fbTI1NiB5O1xcCiBcXAogZXh0ZXJuIHZvaWQgZnVuYyAo aW50IGUsIGludCBmLFxcCiBccGhhbnRvbXtleHRlcm4gdm9pZCBmdW5jICh9 c3RydWN0cGFybSBzLCBpbnQgZywgaW50IGgsXFwKIFxwaGFudG9te2V4dGVy biB2b2lkIGZ1bmMgKH1sb25nIGRvdWJsZSBsZCwgZG91YmxlIG0sXFwKK1xw aGFudG9te2V4dGVybiB2b2lkIGZ1bmMgKH1fX20yNTYgeSxcXAogXHBoYW50 b217ZXh0ZXJuIHZvaWQgZnVuYyAofWRvdWJsZSBuLCBpbnQgaSwgaW50IGos IGludCBrKTtcXAogXFwKLWZ1bmMgKGUsIGYsIHMsIGcsIGgsIGxkLCBtLCBu LCBpLCBqLCBrKTtcXAorZnVuYyAoZSwgZiwgcywgZywgaCwgbGQsIG0sIHks IG4sIGksIGosIGspO1xcCiBcY2xpbmV7MS0xfQogXGVuZHt0YWJ1bGFyfQog fQpAQCAtNjIyLDEyICs2NDcsMTIgQEAgZnVuYyAoZSwgZiwgcywgZywgaCwg bGQsIG0sIG4sIGksIGosIGspOwogXG11bHRpY29sdW1uezJ9e2N9e0Zsb2F0 aW5nIFBvaW50IFJlZ2lzdGVyc30gJgogXG11bHRpY29sdW1uezJ9e2N9e1N0 YWNrIEZyYW1lIE9mZnNldH1cXAogXGhsaW5lCi1cUkRJOiAmXGNvZGV7ZX0g JiBccmVne3htbTB9OiAmXGNvZGV7cy5kfSAmXGNvZGV7MDp9JiBcY29kZXts ZH0gXFwKLVxSU0k6ICZcY29kZXtmfSAmIFxyZWd7eG1tMX06ICZcY29kZXtt fSYgXGNvZGV7MTY6fSYgXGNvZGV7an0gXFwKLVxSRFg6ICZcY29kZXtzLmEs cy5ifSAmIFxyZWd7eG1tMn06ICZcY29kZXtufSZcY29kZXsyNDp9JiBcY29k ZXtrfSBcXAotXFJDWDogJlxjb2Rle2d9ICYgJiAmIFxcCi1ccmVne3I4fTom XGNvZGV7aH0gJiAmJiAmIFxcCi1ccmVne3I5fTomXGNvZGV7aX0gJiAmJiAm IFxcCitcUkRJOiAgICAmXGNvZGV7ZX0gICAgICAmXHJlZ3t4bW0wfTomXGNv ZGV7cy5kfSZcY29kZXswOn0gJlxjb2Rle2xkfSBcXAorXFJTSTogICAgJlxj b2Rle2Z9ICAgICAgJlxyZWd7eG1tMX06Jlxjb2Rle219ICAmXGNvZGV7MTY6 fSZcY29kZXtqfSBcXAorXFJEWDogICAgJlxjb2Rle3MuYSxzLmJ9JlxyZWd7 eW1tMn06Jlxjb2Rle3l9ICAmXGNvZGV7MjQ6fSZcY29kZXtrfSBcXAorXFJD WDogICAgJlxjb2Rle2d9ICAgICAgJlxyZWd7eG1tM306Jlxjb2Rle259ICAm ICAgICAgICAgICYgXFwKK1xyZWd7cjh9OiZcY29kZXtofSAgICAgICYgICAg ICAgICAgICYgICAgICAgICAgJiAgICAgICAgICAmIFxcCitccmVne3I5fTom XGNvZGV7aX0gICAgICAmICAgICAgICAgICAmICAgICAgICAgICYgICAgICAg ICAgJiBcXAogXGVuZHt0YWJ1bGFyfQogCiBcZW5ke2NlbnRlcn0KQEAgLTE5 NTcsNiArMTk4MiwxMCBAQCB0aGUgZnVuY3Rpb24gaW4gU1NFIHJlZ2lzdGVy cy4lCiAlJSUgWFhYOiBSZWFsbHkgb25seSBmbG9hdGluZyBwb2ludGVyIHBh cmFtZXRlcnM/CiAlJSUgWFhYOiBVc2UgJWFsIG9yICVyYXg/CiAKK1doZW4g XHRleHR0dHtfX20yNTZ9IGlzIHBhc3NlZCBhcyB2YXJpYWJsZS1hcmd1bWVu dCwgaXQgc2hvdWxkIGFsd2F5cworYmUgcGFzc2VkIG9uIHN0YWNrLiBPbmx5 IG5hbWVkIFx0ZXh0dHR7X19tMjU2fSBhcmd1bWVudHMgbWF5IGJlIHBhc3Nl ZAoraW4gcmVnaXN0ZXIgYXMgc3BlY2lmaWVkIGluIHNlY3Rpb24gXHJlZntz ZWMtY2FsbGluZy1jb252ZW50aW9uc30uCisKIFxiZWdpbntmaWd1cmV9W0hd CiBcSHJ1bGUKIFxjYXB0aW9ue1BhcmFtZXRlciBQYXNzaW5nIEV4YW1wbGUg d2l0aCBWYXJpYWJsZS1Bcmd1bWVudCBMaXN0fQpAQCAtMTk2OCwxMCArMTk5 NywxMSBAQCB0aGUgZnVuY3Rpb24gaW4gU1NFIHJlZ2lzdGVycy4lCiBpbnQg YSwgYjtcXAogbG9uZyBkb3VibGUgbGQ7XFwKIGRvdWJsZSBtLCBuO1xcCitf X20yNTYgdSwgeTtcXAogXFwKLWV4dGVybiB2b2lkIGZ1bmMgKGludCBhLCBk b3VibGUgIG0sLi4uKTtcXAorZXh0ZXJuIHZvaWQgZnVuYyAoaW50IGEsIGRv dWJsZSBtLCBfX20yNTYgdSwgLi4uKTtcXAogXFwKLWZ1bmMgKGEsIG0sIGIs IGxkLCBuKTtcXAorZnVuYyAoYSwgbSwgdSwgYiwgbGQsIHksIG4pO1xcCiBc Y2xpbmV7MS0xfQogXGVuZHt0YWJ1bGFyfQogfQpAQCAtMTk4OSw5ICsyMDE5 LDkgQEAgZnVuYyAoYSwgbSwgYiwgbGQsIG4pO1xcCiBcbXVsdGljb2x1bW57 Mn17Y317RmxvYXRpbmcgUG9pbnQgUmVnaXN0ZXJzfSAmCiBcbXVsdGljb2x1 bW57Mn17Y317U3RhY2sgRnJhbWUgT2Zmc2V0fVxcCiBcaGxpbmUKLVxSREk6 ICZcY29kZXthfSAmIFxyZWd7eG1tMH06ICZcY29kZXttfSAmXGNvZGV7MDp9 JiBcY29kZXtsZH0gXFwKLVxSU0k6ICZcY29kZXtifSAmIFxyZWd7eG1tMX06 ICZcY29kZXtufSYgJiAgXFwKLVxSQVg6ICYgMiAmICYgJiBcXAorXFJESTog Jlxjb2Rle2F9JlxyZWd7eG1tMH06Jlxjb2Rle219Jlxjb2RlezA6fSAmXGNv ZGV7bGR9IFxcCitcUlNJOiAmXGNvZGV7Yn0mXHJlZ3t5bW0xfTomXGNvZGV7 dX0mXGNvZGV7MzI6fSZcY29kZXt5fSBcXAorXFJBWDogJiAzICAgICAgJlxy ZWd7eG1tMn06Jlxjb2Rle259JiBcXAogXGVuZHt0YWJ1bGFyfQogXGVuZHtj ZW50ZXJ9CiBcSHJ1bGUK ------=_Part_2657_15931201.1213830977360--