From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108551 invoked by alias); 23 Jun 2017 10:10:24 -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 108532 invoked by uid 89); 23 Jun 2017 10:10:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ua0-f173.google.com Received: from mail-ua0-f173.google.com (HELO mail-ua0-f173.google.com) (209.85.217.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 23 Jun 2017 10:10:20 +0000 Received: by mail-ua0-f173.google.com with SMTP id z22so33957524uah.1 for ; Fri, 23 Jun 2017 03:10:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=OClG6+3Lt9X4FPzz+YNKKbQle25WPSbRnLnx8RSuEOA=; b=N8WDm39+32KR0dM8LtgQ0EgpTyC8L3RHZliVFv+54qewvRa1h3YvTjZfndm+o+gziB FDazFVratstQ9FjyHAJ+FwFkyYAy1HAdjzPZukC/e3UDJFqhlQP8Nac0/BmR7vqHUKvZ KN/vg4vMS0l0ufcrZJmRAWpppRCJBaVHmGtHx+/Ag0kRHfr5MFvFSSFNC4rVO04GdTVl tRs/5bHdkZ82jWm5GSLuCVlYyNDOLzcToKD+Rmp1ISvIal07G/x48nNEyZ2i6+npon1/ 3x1qPtKkdE5mWghVncG/+q+HjTZfZP0Gp2MoUjmmwcC1f6yqAR9T9gGTnYb4G33pU4iH xnTw== X-Gm-Message-State: AKS2vOwFHjiKcJq7IfBk2xGfuTtxKxCqZIrs+/FUpitlbrQT4r+oHfx5 kvQTbTzucOUfU6OZ1+pLeDvpa66UIRG1 X-Received: by 10.159.48.1 with SMTP id h1mr5666905uab.102.1498212618696; Fri, 23 Jun 2017 03:10:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.49.142 with HTTP; Fri, 23 Jun 2017 03:10:18 -0700 (PDT) In-Reply-To: References: From: "Bin.Cheng" Date: Fri, 23 Jun 2017 10:10:00 -0000 Message-ID: Subject: Re: [PATCH GCC][01/13]Introduce internal function IFN_LOOP_DIST_ALIAS To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="f403045e1f42ef938a05529dced7" X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg01751.txt.bz2 --f403045e1f42ef938a05529dced7 Content-Type: text/plain; charset="UTF-8" Content-length: 1498 On Mon, Jun 12, 2017 at 6:02 PM, Bin Cheng wrote: > Hi, > I was asked by upstream to split the loop distribution patch into small ones. > It is hard because data structure and algorithm are closely coupled together. > Anyway, this is the patch series with smaller patches. Basically I tried to > separate data structure and bug-fix changes apart with one as the main patch. > Note I only made necessary code refactoring in order to separate patch, apart > from that, there is no change against the last version. > > This is the first patch introducing new internal function IFN_LOOP_DIST_ALIAS. > GCC will distribute loops under condition of this function call. > > Bootstrap and test on x86_64 and AArch64. Is it OK? Hi, I need to update this patch fixing an issue in vect_loop_dist_alias_call. The previous patch fails to find some IFN_LOOP_DIST_ALIAS calls. Bootstrap and test in series. Is it OK? Thanks, bin > > Thanks, > bin > 2017-06-07 Bin Cheng > > * cfgloop.h (struct loop): New field ldist_alias_id. > * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change. > * internal-fn.c (expand_LOOP_DIST_ALIAS): New function. > * internal-fn.def (LOOP_DIST_ALIAS): New. > * tree-vectorizer.c (vect_loop_dist_alias_call): New function. > (fold_loop_dist_alias_call): New function. > (vectorize_loops): Fold IFN_LOOP_DIST_ALIAS call depending on > successful vectorization or not. --f403045e1f42ef938a05529dced7 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-ifn_loop_dist_alias-20170608.txt.patch" Content-Disposition: attachment; filename="0001-ifn_loop_dist_alias-20170608.txt.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j49p3scw1 Content-length: 8943 RnJvbSBhYjgzMzRjNWYxMDljNTkzNjEwZGYzZWZjZjFhYTVhMmVkY2Y2YmU5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCaW4gQ2hlbmcgPGJp bmNoZTAxQGUxMDg0NTEtbGluLmNhbWJyaWRnZS5hcm0uY29tPgpEYXRlOiBX ZWQsIDcgSnVuIDIwMTcgMTM6MDQ6MDMgKzAxMDAKU3ViamVjdDogW1BBVENI IDAxLzEzXSBpZm5fbG9vcF9kaXN0X2FsaWFzLTIwMTcwNjA4LnR4dAoKLS0t CiBnY2MvY2ZnbG9vcC5oICAgICAgICAgfCAgOSArKysrKysKIGdjYy9jZmds b29wbWFuaXAuYyAgICB8ICAzICstCiBnY2MvaW50ZXJuYWwtZm4uYyAgICAg fCAgOCArKysrKysKIGdjYy9pbnRlcm5hbC1mbi5kZWYgICB8ICAxICsKIGdj Yy90cmVlLXZlY3Rvcml6ZXIuYyB8IDc5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNSBmaWxlcyBjaGFu Z2VkLCA5OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2djYy9jZmdsb29wLmggYi9nY2MvY2ZnbG9vcC5oCmluZGV4IGE4 YmVjMWQuLmJlNDE4N2EgMTAwNjQ0Ci0tLSBhL2djYy9jZmdsb29wLmgKKysr IGIvZ2NjL2NmZ2xvb3AuaApAQCAtMjI1LDYgKzIyNSwxNSBAQCBzdHJ1Y3Qg R1RZICgoY2hhaW5fbmV4dCAoIiVoLm5leHQiKSkpIGxvb3AgewogICAgICBi dWlsdGlucy4gICovCiAgIHRyZWUgc2ltZHVpZDsKIAorICAvKiBGb3IgbG9v cHMgZ2VuZXJhdGVkIGJ5IGRpc3RyaWJ1dGlvbiB3aXRoIHJ1bnRpbWUgYWxp YXMgY2hlY2tzLCB0aGlzCisgICAgIGlzIGEgdW5pcXVlIGlkZW50aWZpZXIg b2YgdGhlIG9yaWdpbmFsIGRpc3RyaWJ1dGVkIGxvb3AuICBHZW5lcmFsbHkK KyAgICAgaXQgaXMgdGhlIG51bWJlciBvZiB0aGUgb3JpZ2luYWwgbG9vcC4g IElGTl9MT09QX0RJU1RfQUxJQVMgYnVpbHRpbgorICAgICB1c2VzIHRoaXMg aWQgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LiAgR2l2ZSBhIGxvb3Agd2l0aCBh biBpZCwgd2UgY2FuCisgICAgIGxvb2sgdXB3YXJkIGluIGRvbWluYW5jZSB0 cmVlIGZvciB0aGUgY29ycmVzcG9uZGluZyBJRk5fTE9PUF9ESVNUX0FMSUFT CisgICAgIGJ1aWxkaW4uICBOb3RlIHRoaXMgaWQgaGFzIG5vIG1lYW5saW5n IGFmdGVyIElGTl9MT09QX0RJU1RfQUxJQVMgaXMKKyAgICAgZm9sZGVkIGFu ZCBlbGltaW5hdGVkLiAgKi8KKyAgaW50IGxkaXN0X2FsaWFzX2lkOworCiAg IC8qIFVwcGVyIGJvdW5kIG9uIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIGEg bG9vcC4gICovCiAgIHN0cnVjdCBuYl9pdGVyX2JvdW5kICpib3VuZHM7CiAK ZGlmZiAtLWdpdCBhL2djYy9jZmdsb29wbWFuaXAuYyBiL2djYy9jZmdsb29w bWFuaXAuYwppbmRleCBkNzY0YWI5Li5hZGIyZjY1IDEwMDY0NAotLS0gYS9n Y2MvY2ZnbG9vcG1hbmlwLmMKKysrIGIvZ2NjL2NmZ2xvb3BtYW5pcC5jCkBA IC0xNjUzLDcgKzE2NTMsOCBAQCBmb3JjZV9zaW5nbGVfc3VjY19sYXRjaGVz ICh2b2lkKQogCiAgIFRIRU5fUFJPQiBpcyB0aGUgcHJvYmFiaWxpdHkgb2Yg dGhlbiBicmFuY2ggb2YgdGhlIGNvbmRpdGlvbi4KICAgRUxTRV9QUk9CIGlz IHRoZSBwcm9iYWJpbGl0eSBvZiBlbHNlIGJyYW5jaC4gTm90ZSB0aGF0IHRo ZXkgbWF5IGJlIGJvdGgKLSAgUkVHX0JSX1BST0JfQkFTRSB3aGVuIGNvbmRp dGlvbiBpcyBJRk5fTE9PUF9WRUNUT1JJWkVELiAgKi8KKyAgUkVHX0JSX1BS T0JfQkFTRSB3aGVuIGNvbmRpdGlvbiBpcyBJRk5fTE9PUF9WRUNUT1JJWkVE IG9yCisgIElGTl9MT09QX0RJU1RfQUxJQVMuICAqLwogCiBzdGF0aWMgYmFz aWNfYmxvY2sKIGx2X2FkanVzdF9sb29wX2VudHJ5X2VkZ2UgKGJhc2ljX2Js b2NrIGZpcnN0X2hlYWQsIGJhc2ljX2Jsb2NrIHNlY29uZF9oZWFkLApkaWZm IC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmMgYi9nY2MvaW50ZXJuYWwtZm4u YwppbmRleCA3NWZlMDI3Li45NmU0MGNiIDEwMDY0NAotLS0gYS9nY2MvaW50 ZXJuYWwtZm4uYworKysgYi9nY2MvaW50ZXJuYWwtZm4uYwpAQCAtMjI1MCw2 ICsyMjUwLDE0IEBAIGV4cGFuZF9MT09QX1ZFQ1RPUklaRUQgKGludGVybmFs X2ZuLCBnY2FsbCAqKQogICBnY2NfdW5yZWFjaGFibGUgKCk7CiB9CiAKKy8q IFRoaXMgc2hvdWxkIGdldCBmb2xkZWQgaW4gdHJlZS12ZWN0b3JpemVyLmMu ICAqLworCitzdGF0aWMgdm9pZAorZXhwYW5kX0xPT1BfRElTVF9BTElBUyAo aW50ZXJuYWxfZm4sIGdjYWxsICopCit7CisgIGdjY191bnJlYWNoYWJsZSAo KTsKK30KKwogLyogRXhwYW5kIE1BU0tfTE9BRCBjYWxsIFNUTVQgdXNpbmcg b3B0YWIgT1BUQUIuICAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEv Z2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYKaW5k ZXggZTE2MmQ4MS4uNzljMTlmYiAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFs LWZuLmRlZgorKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmCkBAIC0xNTgsNiAr MTU4LDcgQEAgREVGX0lOVEVSTkFMX0ZOIChHT01QX1NJTURfTEFTVF9MQU5F LCBFQ0ZfQ09OU1QgfCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxMKQog REVGX0lOVEVSTkFMX0ZOIChHT01QX1NJTURfT1JERVJFRF9TVEFSVCwgRUNG X0xFQUYgfCBFQ0ZfTk9USFJPVywgTlVMTCkKIERFRl9JTlRFUk5BTF9GTiAo R09NUF9TSU1EX09SREVSRURfRU5ELCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9X LCBOVUxMKQogREVGX0lOVEVSTkFMX0ZOIChMT09QX1ZFQ1RPUklaRUQsIEVD Rl9OT1ZPUFMgfCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxMKQorREVG X0lOVEVSTkFMX0ZOIChMT09QX0RJU1RfQUxJQVMsIEVDRl9OT1ZPUFMgfCBF Q0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxMKQogREVGX0lOVEVSTkFMX0ZO IChBTk5PVEFURSwgIEVDRl9DT05TVCB8IEVDRl9MRUFGIHwgRUNGX05PVEhS T1csIE5VTEwpCiBERUZfSU5URVJOQUxfRk4gKFVCU0FOX05VTEwsIEVDRl9M RUFGIHwgRUNGX05PVEhST1csICIuUi4iKQogREVGX0lOVEVSTkFMX0ZOIChV QlNBTl9CT1VORFMsIEVDRl9MRUFGIHwgRUNGX05PVEhST1csIE5VTEwpCmRp ZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0b3JpemVyLmMgYi9nY2MvdHJlZS12 ZWN0b3JpemVyLmMKaW5kZXggMWJlZjJlNC4uMDVlOWY4NCAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtdmVjdG9yaXplci5jCisrKyBiL2djYy90cmVlLXZlY3Rv cml6ZXIuYwpAQCAtNDY5LDYgKzQ2OSw2NyBAQCBmb2xkX2xvb3BfdmVjdG9y aXplZF9jYWxsIChnaW1wbGUgKmcsIHRyZWUgdmFsdWUpCiAgICAgfQogfQog CisvKiBJZiBMT09QIGhhcyBiZWVuIHZlcnNpb25lZCBkdXJpbmcgbG9vcCBk aXN0cmlidXRpb24sIHJldHVybiB0aGUgaW50ZXJuYWwKKyAgIGNhbGwgZ3Vh cmRpbmcgaXQuICAqLworCitzdGF0aWMgZ2ltcGxlICoKK3ZlY3RfbG9vcF9k aXN0X2FsaWFzX2NhbGwgKHN0cnVjdCBsb29wICpsb29wKQoreworICBnaW1w bGVfc3RtdF9pdGVyYXRvciBnc2k7CisgIGdpbXBsZSAqZzsKKyAgYmFzaWNf YmxvY2sgYmIgPSBsb29wX3ByZWhlYWRlcl9lZGdlIChsb29wKS0+c3JjOwor ICBiYXNpY19ibG9jayBlbnRyeSA9IEVOVFJZX0JMT0NLX1BUUl9GT1JfRk4g KGNmdW4pOworICBzdHJ1Y3QgbG9vcCAqb3V0ZXJfbG9vcCA9IGJiLT5sb29w X2ZhdGhlcjsKKworICAvKiBMb29rIHVwd2FyZCBpbiBkb21pbmFuY2UgdHJl ZS4gICovCisgIGZvciAoOyBiYiAhPSBlbnRyeSAmJiBmbG93X2JiX2luc2lk ZV9sb29wX3AgKG91dGVyX2xvb3AsIGJiKTsKKyAgICAgICBiYiA9IGdldF9p bW1lZGlhdGVfZG9taW5hdG9yIChDRElfRE9NSU5BVE9SUywgYmIpKQorICAg IHsKKyAgICAgIGlmIChiYi0+bG9vcF9mYXRoZXIgIT0gb3V0ZXJfbG9vcCkK Kwljb250aW51ZTsKKworICAgICAgZyA9IGxhc3Rfc3RtdCAoYmIpOworICAg ICAgaWYgKGcgPT0gTlVMTCB8fCBnaW1wbGVfY29kZSAoZykgIT0gR0lNUExF X0NPTkQpCisJY29udGludWU7CisKKyAgICAgIGdzaSA9IGdzaV9mb3Jfc3Rt dCAoZyk7CisgICAgICBnc2lfcHJldiAoJmdzaSk7CisgICAgICBpZiAoZ3Np X2VuZF9wIChnc2kpKQorCWNvbnRpbnVlOworCisgICAgICBnID0gZ3NpX3N0 bXQgKGdzaSk7CisgICAgICAvKiBUaGUgZ3VhcmRpbmcgaW50ZXJuYWwgZnVu Y3Rpb24gY2FsbCBtdXN0IGhhdmUgdGhlIHNhbWUgZGlzdHJpYnV0aW9uCisJ IGFsaWFzIGlkLiAgKi8KKyAgICAgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5h bF9wIChnLCBJRk5fTE9PUF9ESVNUX0FMSUFTKQorCSAgJiYgKHRyZWVfdG9f c2h3aSAoZ2ltcGxlX2NhbGxfYXJnIChnLCAwKSkgPT0gbG9vcC0+bGRpc3Rf YWxpYXNfaWQpKQorCXJldHVybiBnOworICAgIH0KKyAgcmV0dXJuIE5VTEw7 Cit9CisKKy8qIEZvbGQgTE9PUF9ESVNUX0FMSUFTIGludGVybmFsIGNhbGwg c3RtdCBhY2NvcmRpbmcgdG8gS0VFUF9QIGFuZCB1cGRhdGUKKyAgIGFueSBp bW1lZGlhdGUgdXNlcyBvZiBpdCdzIExIUy4gIFN0bXQgaXMgZm9sZGVkIHRv IGl0cyBzZWNvbmQgYXJndW1lbnQKKyAgIGlmIEtFRVBfUCBpcyB0cnVlLCBv dGhlcndpc2UgdG8gYm9vbGVhbl9mYWxzZV9ub2RlLiAgKi8KKworc3RhdGlj IHZvaWQKK2ZvbGRfbG9vcF9kaXN0X2FsaWFzX2NhbGwgKGdpbXBsZSAqZywg Ym9vbCBrZWVwX3ApCit7CisgIHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhz IChnKTsKKyAgdXNlX29wZXJhbmRfcCB1c2VfcDsKKyAgaW1tX3VzZV9pdGVy YXRvciBpdGVyOworICBnaW1wbGUgKnVzZV9zdG10OworICBnaW1wbGVfc3Rt dF9pdGVyYXRvciBnc2kgPSBnc2lfZm9yX3N0bXQgKGcpOworICB0cmVlIGZv bGRlZF92YWx1ZSA9IGtlZXBfcCA/IGdpbXBsZV9jYWxsX2FyZyAoZywgMSkg OiBib29sZWFuX2ZhbHNlX25vZGU7CisKKyAgdXBkYXRlX2NhbGxfZnJvbV90 cmVlICgmZ3NpLCBmb2xkZWRfdmFsdWUpOworICBGT1JfRUFDSF9JTU1fVVNF X1NUTVQgKHVzZV9zdG10LCBpdGVyLCBsaHMpCisgICAgeworICAgICAgRk9S X0VBQ0hfSU1NX1VTRV9PTl9TVE1UICh1c2VfcCwgaXRlcikKKwlTRVRfVVNF ICh1c2VfcCwgZm9sZGVkX3ZhbHVlKTsKKyAgICAgIHVwZGF0ZV9zdG10ICh1 c2Vfc3RtdCk7CisgICAgfQorfQorCiAvKiBTZXQgdGhlIHVpZHMgb2YgYWxs IHRoZSBzdGF0ZW1lbnRzIGluIGJhc2ljIGJsb2NrcyBpbnNpZGUgbG9vcAog ICAgcmVwcmVzZW50ZWQgYnkgTE9PUF9WSU5GTy4gTE9PUF9WRUNUT1JJWkVE X0NBTEwgaXMgdGhlIGludGVybmFsCiAgICBjYWxsIGd1YXJkaW5nIHRoZSBs b29wIHdoaWNoIGhhcyBiZWVuIGlmIGNvbnZlcnRlZC4gICovCkBAIC01OTUs NyArNjU2LDcgQEAgdmVjdG9yaXplX2xvb3BzICh2b2lkKQogICAgIGVsc2UK ICAgICAgIHsKIAlsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIG9yaWdfbG9v cF92aW5mbzsKLQlnaW1wbGUgKmxvb3BfdmVjdG9yaXplZF9jYWxsOworCWdp bXBsZSAqbG9vcF92ZWN0b3JpemVkX2NhbGwsICpsb29wX2Rpc3RfYWxpYXNf Y2FsbDsKICAgICAgICB0cnlfdmVjdG9yaXplOgogCWlmICghKChmbGFnX3Ry ZWVfbG9vcF92ZWN0b3JpemUKIAkgICAgICAgJiYgb3B0aW1pemVfbG9vcF9u ZXN0X2Zvcl9zcGVlZF9wIChsb29wKSkKQEAgLTYwMyw2ICs2NjQsNyBAQCB2 ZWN0b3JpemVfbG9vcHMgKHZvaWQpCiAJICBjb250aW51ZTsKIAlvcmlnX2xv b3BfdmluZm8gPSBOVUxMOwogCWxvb3BfdmVjdG9yaXplZF9jYWxsID0gdmVj dF9sb29wX3ZlY3Rvcml6ZWRfY2FsbCAobG9vcCk7CisJbG9vcF9kaXN0X2Fs aWFzX2NhbGwgPSB2ZWN0X2xvb3BfZGlzdF9hbGlhc19jYWxsIChsb29wKTsK ICAgICAgICB2ZWN0b3JpemVfZXBpbG9ndWU6CiAJdmVjdF9sb2NhdGlvbiA9 IGZpbmRfbG9vcF9sb2NhdGlvbiAobG9vcCk7CiAgICAgICAgIGlmIChMT0NB VElPTl9MT0NVUyAodmVjdF9sb2NhdGlvbikgIT0gVU5LTk9XTl9MT0NBVElP TgpAQCAtNzEwLDYgKzc3MiwxMiBAQCB2ZWN0b3JpemVfbG9vcHMgKHZvaWQp CiAJICAgIGxvb3BfdmVjdG9yaXplZF9jYWxsID0gTlVMTDsKIAkgICAgcmV0 IHw9IFRPRE9fY2xlYW51cF9jZmc7CiAJICB9CisJaWYgKGxvb3BfZGlzdF9h bGlhc19jYWxsKQorCSAgeworCSAgICBmb2xkX2xvb3BfZGlzdF9hbGlhc19j YWxsIChsb29wX2Rpc3RfYWxpYXNfY2FsbCwgdHJ1ZSk7CisJICAgIGxvb3Bf ZGlzdF9hbGlhc19jYWxsID0gTlVMTDsKKwkgICAgcmV0IHw9IFRPRE9fY2xl YW51cF9jZmc7CisJICB9CiAKIAlpZiAobmV3X2xvb3ApCiAJICB7CkBAIC03 NDMsNiArODExLDE1IEBAIHZlY3Rvcml6ZV9sb29wcyAodm9pZCkKIAkgICAg ICB7CiAJCWZvbGRfbG9vcF92ZWN0b3JpemVkX2NhbGwgKGcsIGJvb2xlYW5f ZmFsc2Vfbm9kZSk7CiAJCXJldCB8PSBUT0RPX2NsZWFudXBfY2ZnOworCQln ID0gTlVMTDsKKwkgICAgICB9CisJICAgIGVsc2UKKwkgICAgICBnID0gdmVj dF9sb29wX2Rpc3RfYWxpYXNfY2FsbCAobG9vcCk7CisKKwkgICAgaWYgKGcp CisJICAgICAgeworCQlmb2xkX2xvb3BfZGlzdF9hbGlhc19jYWxsIChnLCBm YWxzZSk7CisJCXJldCB8PSBUT0RPX2NsZWFudXBfY2ZnOwogCSAgICAgIH0K IAkgIH0KICAgICAgIH0KLS0gCjEuOS4xCgo= --f403045e1f42ef938a05529dced7--