From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 124086 invoked by alias); 13 Oct 2016 11:24:32 -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 123990 invoked by uid 89); 13 Oct 2016 11:24:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=peel, peeled, *loop, TYPE_SIGN X-HELO: mail-lf0-f66.google.com Received: from mail-lf0-f66.google.com (HELO mail-lf0-f66.google.com) (209.85.215.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 13 Oct 2016 11:24:06 +0000 Received: by mail-lf0-f66.google.com with SMTP id x23so6432678lfi.1 for ; Thu, 13 Oct 2016 04:24:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=s1bNeQ/LgaoSpz47oauNhAtWqZq7LI4NE9PJgkXaCWI=; b=LwTgUHDsZK5JOcP46j2PyYtw/sZt84v6KjyfQ6y1oHqAoxXSt/7OMMUlOL3Rex4Sa4 ofkVJgdb3RqvmDc2ahimQfaEIY/PjaOmyw3kRSFupGLf+5BjEjo8cc8MM9ECD9ntoxMR sfRJZF7ALuRQyYcEp7TUo0kZg0modg4SGKDcWEPFyvTDm3A0bj80+deqil4sxTB84QrH j0RcMfRprTftpwBDvLTobBCdjXKGqzjPfRvK3vlCopfbOGvjNE/+E6nXrcctn1tubRfe mqDX09Rwhp40rf88aDdyNmh4KVlF74OFBaUyvEQ4tqgD1y15b6hTgRmN9rlk+qWE1q+3 VIZQ== X-Gm-Message-State: AA6/9Rn8a+QspgEPfM0Js6GbeEkPIvLAwPCxHIZ5zCHnnM2s/XnnVDAweQL2df5dsGICgkh27/yXzqifBriq9g== X-Received: by 10.28.62.7 with SMTP id l7mr1835878wma.97.1476357843864; Thu, 13 Oct 2016 04:24:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.80.172.100 with HTTP; Thu, 13 Oct 2016 04:24:03 -0700 (PDT) In-Reply-To: <556100e4-1813-16da-de42-5857c7470bd0@redhat.com> References: <556100e4-1813-16da-de42-5857c7470bd0@redhat.com> From: "Bin.Cheng" Date: Thu, 13 Oct 2016 11:24:00 -0000 Message-ID: Subject: Re: [PATCH GCC 9/9]Prove no-overflow in computation of LOOP_VINFO_NITERS and improve code generation To: Jeff Law Cc: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary=001a1148eaeed8b8e4053ebd589c X-IsSubscribed: yes X-SW-Source: 2016-10/txt/msg01013.txt.bz2 --001a1148eaeed8b8e4053ebd589c Content-Type: text/plain; charset=UTF-8 Content-length: 2025 On Mon, Sep 12, 2016 at 8:58 PM, Jeff Law wrote: > On 09/06/2016 12:54 PM, Bin Cheng wrote: >> >> Hi, >> LOOP_VINFO_NITERS is computed as LOOP_VINFO_NITERSM1 + 1, which could >> overflow in loop niters' type. Vectorizer needs to generate more code >> computing vectorized niters if overflow does happen. However, For common >> loops, there is no overflow actually, this patch tries to prove the >> no-overflow information and use that to improve code generation. At the >> moment, no-overflow information comes either from loop niter analysis, or >> the truth that we know loop is peeled for non-zero iterations in prologue >> peeling. For the latter case, it doesn't matter if the original >> LOOP_VINFO_NITERS overflows or not, because computation LOOP_VINFO_NITERS - >> LOOP_VINFO_PEELING_FOR_ALIGNMENT cancels the overflow by underflow. >> >> Thanks, >> bin >> >> 2016-09-01 Bin Cheng >> >> * tree-vect-loop.c (loop_niters_no_overflow): New func. >> (vect_transform_loop): Call loop_niters_no_overflow. Pass the >> no-overflow information to vect_do_peeling_for_loop_bound and >> vect_gen_vector_loop_niters. >> > OK when prereqs are all approved. Hi, I revised this patch using widest_int comparison for trees, rather than int. Attached new patch is committed. Also committed all patches in peel refactoring patch set, they are posted at: https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00326.html https://gcc.gnu.org/ml/gcc-patches/2016-10/msg01012.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00328.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00329.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00330.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00331.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00332.html https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00333.html The patch set bootstrap and test again on x86_64 and AArch64. No regression found. I will keep eyes on possible fallouts. Thanks, bin > > jeff --001a1148eaeed8b8e4053ebd589c Content-Type: text/plain; charset=US-ASCII; name="009-prove-no_overflow-for-vect-niters-20161001.txt" Content-Disposition: attachment; filename="009-prove-no_overflow-for-vect-niters-20161001.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iu899sj80 Content-length: 3091 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jIGIvZ2NjL3RyZWUt dmVjdC1sb29wLmMKaW5kZXggMDQ3MDQ0NS4uOWNjYTliNyAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmMKKysrIGIvZ2NjL3RyZWUtdmVjdC1s b29wLmMKQEAgLTY2MjAsNiArNjYyMCwzOSBAQCB2ZWN0X2xvb3Bfa2lsbF9k ZWJ1Z191c2VzIChzdHJ1Y3QgbG9vcCAqbG9vcCwgZ2ltcGxlICpzdG10KQog ICAgIH0KIH0KIAorLyogR2l2ZW4gbG9vcCByZXByZXNlbnRlZCBieSBMT09Q X1ZJTkZPLCByZXR1cm4gdHJ1ZSBpZiBjb21wdXRhdGlvbiBvZgorICAgTE9P UF9WSU5GT19OSVRFUlMgKD0gTE9PUF9WSU5GT19OSVRFUlNNMSArIDEpIGRv ZXNuJ3Qgb3ZlcmZsb3csIGZhbHNlCisgICBvdGhlcndpc2UuICAqLworCitz dGF0aWMgYm9vbAorbG9vcF9uaXRlcnNfbm9fb3ZlcmZsb3cgKGxvb3BfdmVj X2luZm8gbG9vcF92aW5mbykKK3sKKyAgLyogQ29uc3RhbnQgY2FzZS4gICov CisgIGlmIChMT09QX1ZJTkZPX05JVEVSU19LTk9XTl9QIChsb29wX3ZpbmZv KSkKKyAgICB7CisgICAgICB0cmVlIGNzdF9uaXRlcnMgPSBMT09QX1ZJTkZP X05JVEVSUyAobG9vcF92aW5mbyk7CisgICAgICB0cmVlIGNzdF9uaXRlcnNt MSA9IExPT1BfVklORk9fTklURVJTTTEgKGxvb3BfdmluZm8pOworCisgICAg ICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGNzdF9uaXRlcnMpID09IElOVEVH RVJfQ1NUKTsKKyAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoY3N0X25p dGVyc20xKSA9PSBJTlRFR0VSX0NTVCk7CisgICAgICBpZiAod2k6OnRvX3dp ZGVzdCAoY3N0X25pdGVyc20xKSA8IHdpOjp0b193aWRlc3QgKGNzdF9uaXRl cnMpKQorCXJldHVybiB0cnVlOworICAgIH0KKworICB3aWRlc3RfaW50IG1h eDsKKyAgc3RydWN0IGxvb3AgKmxvb3AgPSBMT09QX1ZJTkZPX0xPT1AgKGxv b3BfdmluZm8pOworICAvKiBDaGVjayB0aGUgdXBwZXIgYm91bmQgb2YgbG9v cCBuaXRlcnMuICAqLworICBpZiAoZ2V0X21heF9sb29wX2l0ZXJhdGlvbnMg KGxvb3AsICZtYXgpKQorICAgIHsKKyAgICAgIHRyZWUgdHlwZSA9IFRSRUVf VFlQRSAoTE9PUF9WSU5GT19OSVRFUlMgKGxvb3BfdmluZm8pKTsKKyAgICAg IHNpZ25vcCBzZ24gPSBUWVBFX1NJR04gKHR5cGUpOworICAgICAgd2lkZXN0 X2ludCB0eXBlX21heCA9IHdpZGVzdF9pbnQ6OmZyb20gKHdpOjptYXhfdmFs dWUgKHR5cGUpLCBzZ24pOworICAgICAgaWYgKG1heCA8IHR5cGVfbWF4KQor CXJldHVybiB0cnVlOworICAgIH0KKyAgcmV0dXJuIGZhbHNlOworfQorCiAv KiBGdW5jdGlvbiB2ZWN0X3RyYW5zZm9ybV9sb29wLgogCiAgICBUaGUgYW5h bHlzaXMgcGhhc2UgaGFzIGRldGVybWluZWQgdGhhdCB0aGUgbG9vcCBpcyB2 ZWN0b3JpemFibGUuCkBAIC02NzA3LDggKzY3NDAsOSBAQCB2ZWN0X3RyYW5z Zm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pCiAgIHRyZWUg bml0ZXJzID0gdmVjdF9idWlsZF9sb29wX25pdGVycyAobG9vcF92aW5mbyk7 CiAgIExPT1BfVklORk9fTklURVJTX1VOQ0hBTkdFRCAobG9vcF92aW5mbykg PSBuaXRlcnM7CiAgIHRyZWUgbml0ZXJzbTEgPSB1bnNoYXJlX2V4cHIgKExP T1BfVklORk9fTklURVJTTTEgKGxvb3BfdmluZm8pKTsKKyAgYm9vbCBuaXRl cnNfbm9fb3ZlcmZsb3cgPSBsb29wX25pdGVyc19ub19vdmVyZmxvdyAobG9v cF92aW5mbyk7CiAgIHZlY3RfZG9fcGVlbGluZyAobG9vcF92aW5mbywgbml0 ZXJzLCBuaXRlcnNtMSwgJm5pdGVyc192ZWN0b3IsIHRoLAotCQkgICBjaGVj a19wcm9maXRhYmlsaXR5LCBmYWxzZSk7CisJCSAgIGNoZWNrX3Byb2ZpdGFi aWxpdHksIG5pdGVyc19ub19vdmVyZmxvdyk7CiAgIGlmIChuaXRlcnNfdmVj dG9yID09IE5VTExfVFJFRSkKICAgICB7CiAgICAgICBpZiAoTE9PUF9WSU5G T19OSVRFUlNfS05PV05fUCAobG9vcF92aW5mbykpCkBAIC02NzE3LDcgKzY3 NTEsNyBAQCB2ZWN0X3RyYW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8pCiAJCQkgICBMT09QX1ZJTkZPX0lOVF9OSVRFUlMgKGxvb3Bf dmluZm8pIC8gdmYpOwogICAgICAgZWxzZQogCXZlY3RfZ2VuX3ZlY3Rvcl9s b29wX25pdGVycyAobG9vcF92aW5mbywgbml0ZXJzLCAmbml0ZXJzX3ZlY3Rv ciwKLQkJCQkgICAgIGZhbHNlKTsKKwkJCQkgICAgIG5pdGVyc19ub19vdmVy Zmxvdyk7CiAgICAgfQogCiAgIC8qIDEpIE1ha2Ugc3VyZSB0aGUgbG9vcCBo ZWFkZXIgaGFzIGV4YWN0bHkgdHdvIGVudHJpZXMK --001a1148eaeed8b8e4053ebd589c--