From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28569 invoked by alias); 14 Jan 2007 12:59:50 -0000 Received: (qmail 28560 invoked by uid 22791); 14 Jan 2007 12:59:48 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate6.de.ibm.com (HELO mtagate6.de.ibm.com) (195.212.29.155) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sun, 14 Jan 2007 12:59:41 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate6.de.ibm.com (8.13.8/8.13.8) with ESMTP id l0ECxcAE204752 for ; Sun, 14 Jan 2007 12:59:38 GMT Received: from d12av04.megacenter.de.ibm.com (d12av04.megacenter.de.ibm.com [9.149.165.229]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.2) with ESMTP id l0ECxcf91187928 for ; Sun, 14 Jan 2007 13:59:38 +0100 Received: from d12av04.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av04.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l0ECxcE8025808 for ; Sun, 14 Jan 2007 13:59:38 +0100 Received: from d12mc102.megacenter.de.ibm.com (d12mc102.megacenter.de.ibm.com [9.149.167.114]) by d12av04.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l0ECxc03025805; Sun, 14 Jan 2007 13:59:38 +0100 In-Reply-To: <4aca3dc20701090824h390805a9ue67b5ee25fde89ec@mail.gmail.com> Subject: Re: [PATCH] limit vectorization to large enough trip-counts To: "Daniel Berlin" Cc: gcc-patches@gcc.gnu.org X-Mailer: Lotus Notes Release 7.0 HF277 June 21, 2006 Message-ID: From: Dorit Nuzman Date: Sun, 14 Jan 2007 12:59:00 -0000 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=4DBBF8F0DFD2D6EC8f9e8a93df938690918c4DBBF8F0DFD2D6EC" Content-Disposition: inline X-IsSubscribed: yes 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 X-SW-Source: 2007-01/txt/msg01162.txt.bz2 --0__=4DBBF8F0DFD2D6EC8f9e8a93df938690918c4DBBF8F0DFD2D6EC Content-type: text/plain; charset=US-ASCII Content-length: 1136 "Daniel Berlin" wrote on 09/01/2007 18:24:57: > > > Assuming it passes regression tests and bootstrap, and you add a > changelog, feel free to check it in. passed bootstrap and the vectorization tests on powerpc-linux. Also added an invoke.texi entry - checked 'make info', 'make dvi'. Committed to mainline. Here's the patch that was committed. thanks, dorit ChangeLog: * param.h (MIN_VECT_LOOP_BOUND): New. * params.def (MIN_VECT_LOOP_BOUND): New. * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another argument - minimum threshold for number of iterations. * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another argument to declaration. * tree-vect-analyze.c (vect_analyze_operations): Check value of MIN_VECT_LOOP_BOUND. * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call slpeel_tree_peel_loop_to_edge with additional argument. (vect_do_peeling_for_alignment): Likewise. * doc/invoke.texi (min-vect-loop-bound): Document new param option. (See attached file: minvectloop.txt) --0__=4DBBF8F0DFD2D6EC8f9e8a93df938690918c4DBBF8F0DFD2D6EC Content-type: text/plain; name="minvectloop.txt" Content-Disposition: attachment; filename="minvectloop.txt" Content-transfer-encoding: base64 Content-length: 12652 SW5kZXg6IGRvYy9pbnZva2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CioqKiBkb2MvaW52b2tlLnRleGkJKHJldmlzaW9uIDEyMDc2NSkKLS0tIGRv Yy9pbnZva2UudGV4aQkod29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKiog aW5saW5pbmcgZm9yIGNvZGUgaGF2aW5nIGxhcmdlIGFic3RyYWN0aQoqKiog NjEzMCw2MTM1ICoqKioKLS0tIDYxMzAsNjE0MSAtLS0tCiAgcGFzcyB0aGUg YXJndW1lbnRzIHRvIG90aGVyIGZ1bmN0aW9ucykgYW5kIGRlY3JlYXNlIGlu bGluaW5nIGZvciBjb2RlIHdpdGggbG93CiAgYWJzdHJhY3Rpb24gcGVuYWx0 eS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2LgogIAorIEBpdGVtIG1pbi12 ZWN0LWxvb3AtYm91bmQKKyBUaGUgbWluaW11bSBudW1iZXIgb2YgaXRlcmF0 aW9ucyB1bmRlciB3aGljaCBhIGxvb3Agd2lsbCBub3QgZ2V0IHZlY3Rvcml6 ZWQgCisgd2hlbiBAb3B0aW9uey1mdHJlZS12ZWN0b3JpemV9IGlzIHVzZWQu ICBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgYWZ0ZXIgCisgdmVjdG9yaXph dGlvbiBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIHNwZWNp ZmllZCBieSB0aGlzIG9wdGlvbgorIHRvIGFsbG93IHZlY3Rvcml6YXRpb24u ICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorIAogIEBpdGVtIG1heC11bnJv bGxlZC1pbnNucwogIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnN0cnVjdGlv bnMgdGhhdCBhIGxvb3Agc2hvdWxkIGhhdmUgaWYgdGhhdCBsb29wCiAgaXMg dW5yb2xsZWQsIGFuZCBpZiB0aGUgbG9vcCBpcyB1bnJvbGxlZCwgaXQgZGV0 ZXJtaW5lcyBob3cgbWFueSB0aW1lcwpJbmRleDogcGFyYW1zLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQoqKiogcGFyYW1zLmgJKHJldmlzaW9uIDEyMDc2 NSkKLS0tIHBhcmFtcy5oCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioqKioq KiB0eXBlZGVmIGVudW0gY29tcGlsZXJfcGFyYW0KKioqIDExOCwxMjMgKioq KgotLS0gMTE4LDEyNSAtLS0tCiAgICBQQVJBTV9WQUxVRSAoUEFSQU1fTUFY X0lOTElORV9JTlNOU19BVVRPKQogICNkZWZpbmUgTUFYX1ZBUklBQkxFX0VY UEFOU0lPTlMgXAogICAgUEFSQU1fVkFMVUUgKFBBUkFNX01BWF9WQVJJQUJM RV9FWFBBTlNJT05TKQorICNkZWZpbmUgTUlOX1ZFQ1RfTE9PUF9CT1VORCBc CisgICBQQVJBTV9WQUxVRSAoUEFSQU1fTUlOX1ZFQ1RfTE9PUF9CT1VORCkK ICAjZGVmaW5lIE1BWF9ERUxBWV9TTE9UX0lOU05fU0VBUkNIIFwKICAgIFBB UkFNX1ZBTFVFIChQQVJBTV9NQVhfREVMQVlfU0xPVF9JTlNOX1NFQVJDSCkK ICAjZGVmaW5lIE1BWF9ERUxBWV9TTE9UX0xJVkVfU0VBUkNIIFwKSW5kZXg6 IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CioqKiBDaGFuZ2VM b2cJKHJldmlzaW9uIDEyMDc2NSkKLS0tIENoYW5nZUxvZwkod29ya2luZyBj b3B5KQoqKioqKioqKioqKioqKioKKioqIDEsMyAqKioqCi0tLSAxLDE4IC0t LS0KKyAyMDA3LTAxLTE0ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0u Y29tPgorIAorIAkqIHBhcmFtLmggKE1JTl9WRUNUX0xPT1BfQk9VTkQpOiBO ZXcuCisgCSogcGFyYW1zLmRlZiAoTUlOX1ZFQ1RfTE9PUF9CT1VORCk6IE5l dy4KKyAJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc2xwZWVsX3RyZWVfcGVlbF9s b29wX3RvX2VkZ2UpOiBUYWtlcyBhbm90aGVyCisgCWFyZ3VtZW50IC0gbWlu aW11bSB0aHJlc2hvbGQgZm9yIG51bWJlciBvZiBpdGVyYXRpb25zLiAKKyAJ KiB0cmVlLXZlY3Rvcml6ZXIuaCAoc2xwZWVsX3RyZWVfcGVlbF9sb29wX3Rv X2VkZ2UpOiBBZGQgYW5vdGhlcgorIAlhcmd1bWVudCB0byBkZWNsYXJhdGlv bi4KKyAJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfb3Bl cmF0aW9ucyk6IENoZWNrIHZhbHVlIG9mIAorIAlNSU5fVkVDVF9MT09QX0JP VU5ELgorIAkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9kb19wZWVs aW5nX2Zvcl9sb29wX2JvdW5kKTogQ2FsbAorIAlzbHBlZWxfdHJlZV9wZWVs X2xvb3BfdG9fZWRnZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnQuCisgCSh2 ZWN0X2RvX3BlZWxpbmdfZm9yX2FsaWdubWVudCk6IExpa2V3aXNlLgorIAkq IGRvYy9pbnZva2UudGV4aSAobWluLXZlY3QtbG9vcC1ib3VuZCk6IERvY3Vt ZW50IG5ldyBwYXJhbSBvcHRpb24uCisgCiAgMjAwNy0wMS0xMyAgWmRlbmVr IER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgogIAogIAkqIGlwYS1yZWZlcmVu Y2UuYyAoYW5hbHl6ZV9mdW5jdGlvbik6IENvbnNpZGVyIGFsc28gYWRkcmVz c2VzIHRha2VuCkluZGV4OiB0cmVlLXZlY3Rvcml6ZXIuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CioqKiB0cmVlLXZlY3Rvcml6ZXIuYwkocmV2aXNpb24g MTIwNzY1KQotLS0gdHJlZS12ZWN0b3JpemVyLmMJKHdvcmtpbmcgY29weSkK KioqKioqKioqKioqKioqIHNscGVlbF92ZXJpZnlfY2ZnX2FmdGVyX3BlZWxp bmcgKHN0cnVjdCAKKioqIDEwNjQsMTA3MCAqKioqCiAgc3RydWN0IGxvb3Aq CiAgc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UgKHN0cnVjdCBsb29w ICpsb29wLCAKICAJCQkgICAgICAgZWRnZSBlLCB0cmVlIGZpcnN0X25pdGVy cywgCiEgCQkJICAgICAgIHRyZWUgbml0ZXJzLCBib29sIHVwZGF0ZV9maXJz dF9sb29wX2NvdW50KQogIHsKICAgIHN0cnVjdCBsb29wICpuZXdfbG9vcCA9 IE5VTEwsICpmaXJzdF9sb29wLCAqc2Vjb25kX2xvb3A7CiAgICBlZGdlIHNr aXBfZTsKLS0tIDEwNjQsMTA3MSAtLS0tCiAgc3RydWN0IGxvb3AqCiAgc2xw ZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UgKHN0cnVjdCBsb29wICpsb29w LCAKICAJCQkgICAgICAgZWRnZSBlLCB0cmVlIGZpcnN0X25pdGVycywgCiEg CQkJICAgICAgIHRyZWUgbml0ZXJzLCBib29sIHVwZGF0ZV9maXJzdF9sb29w X2NvdW50LAohIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgdGgpCiAgewogICAg c3RydWN0IGxvb3AgKm5ld19sb29wID0gTlVMTCwgKmZpcnN0X2xvb3AsICpz ZWNvbmRfbG9vcDsKICAgIGVkZ2Ugc2tpcF9lOwoqKioqKioqKioqKioqKiog c2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UgKHN0cnVjdCBsbwoqKiog MTE1NywxMTYzICoqKioKICAKICAgIHByZV9jb25kaXRpb24gPQogICAgICBm b2xkX2J1aWxkMiAoTEVfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsIGZpcnN0 X25pdGVycywgCiEgICAgICAgICAgICAgICAgICBidWlsZF9pbnRfY3N0IChU UkVFX1RZUEUgKGZpcnN0X25pdGVycyksIDApKTsKICAgIHNraXBfZSA9IHNs cGVlbF9hZGRfbG9vcF9ndWFyZCAoYmJfYmVmb3JlX2ZpcnN0X2xvb3AsIHBy ZV9jb25kaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJiX2JlZm9yZV9zZWNvbmRfbG9vcCwgYmJfYmVmb3JlX2ZpcnN0X2xv b3ApOwogICAgc2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNfZm9yX2d1YXJkMSAo c2tpcF9lLCBmaXJzdF9sb29wLAotLS0gMTE1OCwxMTY1IC0tLS0KICAKICAg IHByZV9jb25kaXRpb24gPQogICAgICBmb2xkX2J1aWxkMiAoTEVfRVhQUiwg Ym9vbGVhbl90eXBlX25vZGUsIGZpcnN0X25pdGVycywgCiEgCWJ1aWxkX2lu dF9jc3QgKFRSRUVfVFlQRSAoZmlyc3Rfbml0ZXJzKSwgdGgpKTsKISAKICAg IHNraXBfZSA9IHNscGVlbF9hZGRfbG9vcF9ndWFyZCAoYmJfYmVmb3JlX2Zp cnN0X2xvb3AsIHByZV9jb25kaXRpb24sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJiX2JlZm9yZV9zZWNvbmRfbG9vcCwgYmJfYmVm b3JlX2ZpcnN0X2xvb3ApOwogICAgc2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNf Zm9yX2d1YXJkMSAoc2tpcF9lLCBmaXJzdF9sb29wLApJbmRleDogdHJlZS12 ZWN0b3JpemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogdHJlZS12 ZWN0b3JpemVyLmgJKHJldmlzaW9uIDEyMDc2NSkKLS0tIHRyZWUtdmVjdG9y aXplci5oCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioqKioqKiBleHRlcm4g Yml0bWFwIHZlY3RfbWVtc3ltc190b19yZW5hbWU7CioqKiAzNDIsMzQ4ICoq KioKICAgICBkaXZpZGUgYnkgdGhlIHZlY3Rvcml6YXRpb24gZmFjdG9yLCBh bmQgdG8gcGVlbCB0aGUgZmlyc3QgZmV3IGl0ZXJhdGlvbnMKICAgICB0byBm b3JjZSB0aGUgYWxpZ25tZW50IG9mIGRhdGEgcmVmZXJlbmNlcyBpbiB0aGUg bG9vcC4gICovCiAgZXh0ZXJuIHN0cnVjdCBsb29wICpzbHBlZWxfdHJlZV9w ZWVsX2xvb3BfdG9fZWRnZSAKISAgIChzdHJ1Y3QgbG9vcCAqLCBlZGdlLCB0 cmVlLCB0cmVlLCBib29sKTsKICBleHRlcm4gdm9pZCBzbHBlZWxfbWFrZV9s b29wX2l0ZXJhdGVfbnRpbWVzIChzdHJ1Y3QgbG9vcCAqLCB0cmVlKTsKICBl eHRlcm4gYm9vbCBzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AgKHN0cnVj dCBsb29wICosIGVkZ2UpOwogICNpZmRlZiBFTkFCTEVfQ0hFQ0tJTkcKLS0t IDM0MiwzNDggLS0tLQogICAgIGRpdmlkZSBieSB0aGUgdmVjdG9yaXphdGlv biBmYWN0b3IsIGFuZCB0byBwZWVsIHRoZSBmaXJzdCBmZXcgaXRlcmF0aW9u cwogICAgIHRvIGZvcmNlIHRoZSBhbGlnbm1lbnQgb2YgZGF0YSByZWZlcmVu Y2VzIGluIHRoZSBsb29wLiAgKi8KICBleHRlcm4gc3RydWN0IGxvb3AgKnNs cGVlbF90cmVlX3BlZWxfbG9vcF90b19lZGdlIAohICAgKHN0cnVjdCBsb29w ICosIGVkZ2UsIHRyZWUsIHRyZWUsIGJvb2wsIHVuc2lnbmVkIGludCk7CiAg ZXh0ZXJuIHZvaWQgc2xwZWVsX21ha2VfbG9vcF9pdGVyYXRlX250aW1lcyAo c3RydWN0IGxvb3AgKiwgdHJlZSk7CiAgZXh0ZXJuIGJvb2wgc2xwZWVsX2Nh bl9kdXBsaWNhdGVfbG9vcF9wIChzdHJ1Y3QgbG9vcCAqLCBlZGdlKTsKICAj aWZkZWYgRU5BQkxFX0NIRUNLSU5HCkluZGV4OiB0cmVlLXZlY3QtYW5hbHl6 ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIHRyZWUtdmVjdC1hbmFs eXplLmMJKHJldmlzaW9uIDEyMDc2NSkKLS0tIHRyZWUtdmVjdC1hbmFseXpl LmMJKHdvcmtpbmcgY29weSkKKioqKioqKioqKioqKioqIHZlY3RfYW5hbHl6 ZV9vcGVyYXRpb25zIChsb29wX3ZlY19pbmZvIGwKKioqIDM2OCwzNzQgKioq KgogICAgICAgICAgdmVjdG9yaXphdGlvbl9mYWN0b3IsIExPT1BfVklORk9f SU5UX05JVEVSUyAobG9vcF92aW5mbykpOwogIAogICAgaWYgKExPT1BfVklO Rk9fTklURVJTX0tOT1dOX1AgKGxvb3BfdmluZm8pCiEgICAgICAgJiYgTE9P UF9WSU5GT19JTlRfTklURVJTIChsb29wX3ZpbmZvKSA8IHZlY3Rvcml6YXRp b25fZmFjdG9yKQogICAgICB7CiAgICAgICAgaWYgKHZlY3RfcHJpbnRfZHVt cF9pbmZvIChSRVBPUlRfVU5WRUNUT1JJWkVEX0xPT1BTKSkKICAJZnByaW50 ZiAodmVjdF9kdW1wLCAibm90IHZlY3Rvcml6ZWQ6IGl0ZXJhdGlvbiBjb3Vu dCB0b28gc21hbGwuIik7Ci0tLSAzNjgsMzc3IC0tLS0KICAgICAgICAgIHZl Y3Rvcml6YXRpb25fZmFjdG9yLCBMT09QX1ZJTkZPX0lOVF9OSVRFUlMgKGxv b3BfdmluZm8pKTsKICAKICAgIGlmIChMT09QX1ZJTkZPX05JVEVSU19LTk9X Tl9QIChsb29wX3ZpbmZvKQohICAgICAgICYmICgoTE9PUF9WSU5GT19JTlRf TklURVJTIChsb29wX3ZpbmZvKSA8IHZlY3Rvcml6YXRpb25fZmFjdG9yKQoh IAkgIHx8IChMT09QX1ZJTkZPX0lOVF9OSVRFUlMgKGxvb3BfdmluZm8pIDw9 CiEgCQkoKHVuc2lnbmVkKSAoUEFSQU1fVkFMVUUgKFBBUkFNX01JTl9WRUNU X0xPT1BfQk9VTkQpKSAKISAJCQkJCSAgICogdmVjdG9yaXphdGlvbl9mYWN0 b3IpKSkpCiAgICAgIHsKICAgICAgICBpZiAodmVjdF9wcmludF9kdW1wX2lu Zm8gKFJFUE9SVF9VTlZFQ1RPUklaRURfTE9PUFMpKQogIAlmcHJpbnRmICh2 ZWN0X2R1bXAsICJub3QgdmVjdG9yaXplZDogaXRlcmF0aW9uIGNvdW50IHRv byBzbWFsbC4iKTsKSW5kZXg6IHRyZWUtdmVjdC10cmFuc2Zvcm0uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CioqKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMJ KHJldmlzaW9uIDEyMDc2NSkKLS0tIHRyZWUtdmVjdC10cmFuc2Zvcm0uYwko d29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKiogU29mdHdhcmUgRm91bmRh dGlvbiwgNTEgRnJhbmtsaW4gU3RyZWV0LAoqKiogMzUsNDAgKioqKgotLS0g MzUsNDEgLS0tLQogICNpbmNsdWRlICJjZmdsb29wLmgiCiAgI2luY2x1ZGUg ImV4cHIuaCIKICAjaW5jbHVkZSAib3B0YWJzLmgiCisgI2luY2x1ZGUgInBh cmFtcy5oIgogICNpbmNsdWRlICJyZWNvZy5oIgogICNpbmNsdWRlICJ0cmVl LWRhdGEtcmVmLmgiCiAgI2luY2x1ZGUgInRyZWUtY2hyZWMuaCIKKioqKioq KioqKioqKioqIHZlY3RfZG9fcGVlbGluZ19mb3JfbG9vcF9ib3VuZCAobG9v cF92ZWMKKioqIDQyNzYsNDI4MSAqKioqCi0tLSA0Mjc3LDQyODMgLS0tLQog ICAgZWRnZSB1cGRhdGVfZTsKICAgIGJhc2ljX2Jsb2NrIHByZWhlYWRlcjsK ICAgIGludCBsb29wX251bTsKKyAgIHVuc2lnbmVkIGludCB0aDsKICAKICAg IGlmICh2ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQog ICAgICBmcHJpbnRmICh2ZWN0X2R1bXAsICI9PT0gdmVjdF9kb19wZWVsaW5n X2Zvcl9sb29wX2JvdW5kID09PSIpOwoqKioqKioqKioqKioqKiogdmVjdF9k b19wZWVsaW5nX2Zvcl9sb29wX2JvdW5kIChsb29wX3ZlYwoqKiogNDI5MSw0 Mjk4ICoqKioKICAJCQkJICAgJnJhdGlvX211bHRfdmZfbmFtZSwgcmF0aW8p OwogIAogICAgbG9vcF9udW0gID0gbG9vcC0+bnVtOyAKICAgIG5ld19sb29w ID0gc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UgKGxvb3AsIHNpbmds ZV9leGl0IChsb29wKSwKISAJCQkJCSAgICByYXRpb19tdWx0X3ZmX25hbWUs IG5pX25hbWUsIGZhbHNlKTsKICAgIGdjY19hc3NlcnQgKG5ld19sb29wKTsK ICAgIGdjY19hc3NlcnQgKGxvb3BfbnVtID09IGxvb3AtPm51bSk7CiAgI2lm ZGVmIEVOQUJMRV9DSEVDS0lORwotLS0gNDI5Myw0MzAzIC0tLS0KICAJCQkJ ICAgJnJhdGlvX211bHRfdmZfbmFtZSwgcmF0aW8pOwogIAogICAgbG9vcF9u dW0gID0gbG9vcC0+bnVtOyAKKyAgIC8qIFRocmVzaG9sZCBmb3IgdmVjdG9y aXplZCBsb29wLiAgKi8KKyAgIHRoID0gKFBBUkFNX1ZBTFVFIChQQVJBTV9N SU5fVkVDVF9MT09QX0JPVU5EKSkgKiAKKyAJCQlMT09QX1ZJTkZPX1ZFQ1Rf RkFDVE9SIChsb29wX3ZpbmZvKTsKICAgIG5ld19sb29wID0gc2xwZWVsX3Ry ZWVfcGVlbF9sb29wX3RvX2VkZ2UgKGxvb3AsIHNpbmdsZV9leGl0IChsb29w KSwKISAJCQkJCSAgICByYXRpb19tdWx0X3ZmX25hbWUsIG5pX25hbWUsIGZh bHNlLCB0aCk7CiAgICBnY2NfYXNzZXJ0IChuZXdfbG9vcCk7CiAgICBnY2Nf YXNzZXJ0IChsb29wX251bSA9PSBsb29wLT5udW0pOwogICNpZmRlZiBFTkFC TEVfQ0hFQ0tJTkcKKioqKioqKioqKioqKioqIHZlY3RfZG9fcGVlbGluZ19m b3JfYWxpZ25tZW50IChsb29wX3ZlY18KKioqIDQ1MTcsNDUyMyAqKioqCiAg ICAvKiBQZWVsIHRoZSBwcm9sb2cgbG9vcCBhbmQgaXRlcmF0ZSBpdCBuaXRl cnNfb2ZfcHJvbG9nX2xvb3AuICAqLwogICAgbmV3X2xvb3AgPSAKICAJc2xw ZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2UgKGxvb3AsIGxvb3BfcHJlaGVh ZGVyX2VkZ2UgKGxvb3ApLCAKISAJCQkJICAgICAgIG5pdGVyc19vZl9wcm9s b2dfbG9vcCwgbmlfbmFtZSwgdHJ1ZSk7IAogICAgZ2NjX2Fzc2VydCAobmV3 X2xvb3ApOwogICNpZmRlZiBFTkFCTEVfQ0hFQ0tJTkcKICAgIHNscGVlbF92 ZXJpZnlfY2ZnX2FmdGVyX3BlZWxpbmcgKG5ld19sb29wLCBsb29wKTsKLS0t IDQ1MjIsNDUyOCAtLS0tCiAgICAvKiBQZWVsIHRoZSBwcm9sb2cgbG9vcCBh bmQgaXRlcmF0ZSBpdCBuaXRlcnNfb2ZfcHJvbG9nX2xvb3AuICAqLwogICAg bmV3X2xvb3AgPSAKICAJc2xwZWVsX3RyZWVfcGVlbF9sb29wX3RvX2VkZ2Ug KGxvb3AsIGxvb3BfcHJlaGVhZGVyX2VkZ2UgKGxvb3ApLCAKISAJCQkJICAg ICAgIG5pdGVyc19vZl9wcm9sb2dfbG9vcCwgbmlfbmFtZSwgdHJ1ZSwgMCk7 IAogICAgZ2NjX2Fzc2VydCAobmV3X2xvb3ApOwogICNpZmRlZiBFTkFCTEVf Q0hFQ0tJTkcKICAgIHNscGVlbF92ZXJpZnlfY2ZnX2FmdGVyX3BlZWxpbmcg KG5ld19sb29wLCBsb29wKTsKSW5kZXg6IHBhcmFtcy5kZWYKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQoqKiogcGFyYW1zLmRlZgkocmV2aXNpb24gMTIwNzY1 KQotLS0gcGFyYW1zLmRlZgkod29ya2luZyBjb3B5KQoqKioqKioqKioqKioq KiogREVGUEFSQU0gKFBBUkFNX01BWF9WQVJJQUJMRV9FWFBBTlNJT05TLAoq KiogMTQ2LDE1MSAqKioqCi0tLSAxNDYsMTU3IC0tLS0KICAJICAiSWYgLWZ2 YXJpYWJsZS1leHBhbnNpb24taW4tdW5yb2xsZXIgaXMgdXNlZCwgdGhlIG1h eGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gaW5kaXZpZHVhbCB2YXJp YWJsZSB3aWxsIGJlIGV4cGFuZGVkIGR1cmluZyBsb29wIHVucm9sbGluZyIs CiAgICAgICAgICAgIDEsIDAsIDApCiAgICAgICAKKyAvKiBMaW1pdCBsb29w IGF1dG92ZWN0b3JpemF0aW9uIHRvIGxvb3BzIHdpdGggbGFyZ2UgZW5vdWdo IGl0ZXJhdGlvbiBjb3VudC4gICovCisgREVGUEFSQU0gKFBBUkFNX01JTl9W RUNUX0xPT1BfQk9VTkQsCisgCSAgIm1pbi12ZWN0LWxvb3AtYm91bmQiLAor IAkgICJJZiAtZnRyZWUtdmVjdG9yaXplIGlzIHVzZWQsIHRoZSBtaW5pbWFs IGxvb3AgYm91bmQgb2YgYSBsb29wIHRvIGJlIGNvbnNpZGVyZWQgZm9yIHZl Y3Rvcml6YXRpb24iLAorIAkgIDAsIDAsIDApCisgCiAgLyogVGhlIG1heGlt dW0gbnVtYmVyIG9mIGluc3RydWN0aW9ucyB0byBjb25zaWRlciB3aGVuIGxv b2tpbmcgZm9yIGFuCiAgICAgaW5zdHJ1Y3Rpb24gdG8gZmlsbCBhIGRlbGF5 IHNsb3QuICBJZiBtb3JlIHRoYW4gdGhpcyBhcmJpdHJhcnkKICAgICBudW1i ZXIgb2YgaW5zdHJ1Y3Rpb25zIGlzIHNlYXJjaGVkLCB0aGUgdGltZSBzYXZp bmdzIGZyb20gZmlsbGluZwo= --0__=4DBBF8F0DFD2D6EC8f9e8a93df938690918c4DBBF8F0DFD2D6EC--