From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 123776 invoked by alias); 6 Sep 2016 18:54: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 123371 invoked by uid 89); 6 Sep 2016 18:54:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=Prove, H*c:HHH, H*MI:outlook X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 06 Sep 2016 18:54:13 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp0211.outbound.protection.outlook.com [213.199.154.211]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-44-Xi8QHAoXNa62jQ1XlIIvCg-1; Tue, 06 Sep 2016 19:54:09 +0100 Received: from VI1PR0802MB2176.eurprd08.prod.outlook.com (10.172.12.21) by VI1PR0802MB2174.eurprd08.prod.outlook.com (10.172.12.19) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9; Tue, 6 Sep 2016 18:54:08 +0000 Received: from VI1PR0802MB2176.eurprd08.prod.outlook.com ([10.172.12.21]) by VI1PR0802MB2176.eurprd08.prod.outlook.com ([10.172.12.21]) with mapi id 15.01.0609.016; Tue, 6 Sep 2016 18:54:08 +0000 From: Bin Cheng To: "gcc-patches@gcc.gnu.org" CC: nd Subject: [PATCH GCC 9/9]Prove no-overflow in computation of LOOP_VINFO_NITERS and improve code generation Date: Tue, 06 Sep 2016 19:49:00 -0000 Message-ID: x-ms-office365-filtering-correlation-id: 1d4cfdff-f942-47c1-bae4-08d3d6872ed9 x-microsoft-exchange-diagnostics: 1;VI1PR0802MB2174;20:QMu6bcgExWhM+NuTXgYZymfk/5Mh4p3HLgU7WvvbGC37FMjw9EfYJZQKNQE4vnMmtoAOQvY06co4Xwsy8nfjy+2NWFxLeqOY1woP3RKlq1iLyOB6iiLjsASs5UYiZ7AC1MCWJKCHJWnxHX+Wk0XSlzbzUNjZ5Tpf642KXAjJ+r8= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2174; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(102415321)(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:VI1PR0802MB2174;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2174; x-forefront-prvs: 0057EE387C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(7916002)(189002)(199003)(377424004)(87936001)(106356001)(106116001)(105586002)(33656002)(101416001)(77096005)(2900100001)(54356999)(50986999)(5002640100001)(99936001)(97736004)(11100500001)(92566002)(2501003)(86362001)(110136002)(189998001)(4326007)(8676002)(81156014)(81166006)(8936002)(122556002)(9686002)(450100001)(76576001)(2906002)(66066001)(3280700002)(3846002)(6116002)(102836003)(68736007)(19580405001)(19580395003)(586003)(74316002)(305945005)(7846002)(7736002)(3660700001)(10400500002)(5660300001)(2351001)(229853001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0802MB2174;H:VI1PR0802MB2176.eurprd08.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Sep 2016 18:54:08.1910 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2174 X-MC-Unique: Xi8QHAoXNa62jQ1XlIIvCg-1 Content-Type: multipart/mixed; boundary="_002_AM4PR0802MB2163653E39696F2F965E9CE2E7F90AM4PR0802MB2163_" X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00335.txt.bz2 --_002_AM4PR0802MB2163653E39696F2F965E9CE2E7F90AM4PR0802MB2163_ Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Content-length: 1008 Hi, LOOP_VINFO_NITERS is computed as LOOP_VINFO_NITERSM1 + 1, which could overf= low in loop niters' type. Vectorizer needs to generate more code computing= vectorized niters if overflow does happen. However, For common loops, the= re is no overflow actually, this patch tries to prove the no-overflow infor= mation and use that to improve code generation. At the moment, no-overflow= information comes either from loop niter analysis, or the truth that we kn= ow loop is peeled for non-zero iterations in prologue peeling. For the lat= ter case, it doesn't matter if the original LOOP_VINFO_NITERS overflows or = not, because computation LOOP_VINFO_NITERS - LOOP_VINFO_PEELING_FOR_ALIGNME= NT 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.= --_002_AM4PR0802MB2163653E39696F2F965E9CE2E7F90AM4PR0802MB2163_ Content-Type: text/plain; name=009-prove-no_overflow-for-vect-niters-20160902.txt Content-Description: 009-prove-no_overflow-for-vect-niters-20160902.txt Content-Disposition: attachment; filename="009-prove-no_overflow-for-vect-niters-20160902.txt"; size=2208; creation-date="Tue, 06 Sep 2016 17:59:56 GMT"; modification-date="Tue, 06 Sep 2016 17:59:56 GMT" Content-Transfer-Encoding: base64 Content-length: 2994 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jIGIvZ2NjL3RyZWUt dmVjdC1sb29wLmMKaW5kZXggMGQzN2Y1NS4uMmVmMWY5YiAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmMKKysrIGIvZ2NjL3RyZWUtdmVjdC1s b29wLmMKQEAgLTY2MTAsNiArNjYxMCwzOCBAQCB2ZWN0X2xvb3Bfa2lsbF9k ZWJ1Z191c2VzIChzdHJ1Y3QgbG9vcCAqbG9vcCwgZ2ltcGxlICpzdG10KQog ICAgIH0KIH0KIAorLyogR2l2ZW4gbG9vcCByZXByZXNlbnRlZCBieSBMT09Q X1ZJTkZPLCByZXR1cm4gdHJ1ZSBpZiBjb21wdXRhdGlvbiBvZgorICAgTE9P UF9WSU5GT19OSVRFUlMgKD0gTE9PUF9WSU5GT19OSVRFUlNNMSArIDEpIGRv ZXNuJ3Qgb3ZlcmZsb3csIGZhbHNlCisgICBvdGhlcndpc2UuICAqLworCitz dGF0aWMgYm9vbAorbG9vcF9uaXRlcnNfbm9fb3ZlcmZsb3cgKGxvb3BfdmVj X2luZm8gbG9vcF92aW5mbykKK3sKKyAgLyogQ29uc3RhbnQgY2FzZS4gICov CisgIGlmIChMT09QX1ZJTkZPX05JVEVSU19LTk9XTl9QIChsb29wX3ZpbmZv KSkKKyAgICB7CisgICAgICBpbnQgY3N0X25pdGVycyA9IExPT1BfVklORk9f SU5UX05JVEVSUyAobG9vcF92aW5mbyk7CisgICAgICB0cmVlIGNzdF9uaXRl cnNtMSA9IExPT1BfVklORk9fTklURVJTTTEgKGxvb3BfdmluZm8pOworCisg ICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGNzdF9uaXRlcnNtMSkgPT0g SU5URUdFUl9DU1QpOworICAgICAgaWYgKHdpOjp0b193aWRlc3QgKGNzdF9u aXRlcnNtMSkgPCBjc3Rfbml0ZXJzKQorCXJldHVybiB0cnVlOworICAgIH0K KworICB3aWRlc3RfaW50IG1heDsKKyAgc3RydWN0IGxvb3AgKmxvb3AgPSBM T09QX1ZJTkZPX0xPT1AgKGxvb3BfdmluZm8pOworICAvKiBDaGVjayB0aGUg dXBwZXIgYm91bmQgb2YgbG9vcCBuaXRlcnMuICAqLworICBpZiAoZ2V0X21h eF9sb29wX2l0ZXJhdGlvbnMgKGxvb3AsICZtYXgpKQorICAgIHsKKyAgICAg IHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAoTE9PUF9WSU5GT19OSVRFUlMgKGxv b3BfdmluZm8pKTsKKyAgICAgIHNpZ25vcCBzZ24gPSBUWVBFX1NJR04gKHR5 cGUpOworICAgICAgd2lkZXN0X2ludCB0eXBlX21heCA9IHdpZGVzdF9pbnQ6 OmZyb20gKHdpOjptYXhfdmFsdWUgKHR5cGUpLCBzZ24pOworICAgICAgaWYg KG1heCA8IHR5cGVfbWF4KQorCXJldHVybiB0cnVlOworICAgIH0KKyAgcmV0 dXJuIGZhbHNlOworfQorCiAvKiBGdW5jdGlvbiB2ZWN0X3RyYW5zZm9ybV9s b29wLgogCiAgICBUaGUgYW5hbHlzaXMgcGhhc2UgaGFzIGRldGVybWluZWQg dGhhdCB0aGUgbG9vcCBpcyB2ZWN0b3JpemFibGUuCkBAIC02Njk3LDggKzY3 MjksOSBAQCB2ZWN0X3RyYW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8pCiAgIHRyZWUgbml0ZXJzID0gdmVjdF9idWlsZF9sb29wX25p dGVycyAobG9vcF92aW5mbyk7CiAgIExPT1BfVklORk9fTklURVJTX1VOQ0hB TkdFRCAobG9vcF92aW5mbykgPSBuaXRlcnM7CiAgIHRyZWUgbml0ZXJzbTEg PSB1bnNoYXJlX2V4cHIgKExPT1BfVklORk9fTklURVJTTTEgKGxvb3Bfdmlu Zm8pKTsKKyAgYm9vbCBuaXRlcnNfbm9fb3ZlcmZsb3cgPSBsb29wX25pdGVy c19ub19vdmVyZmxvdyAobG9vcF92aW5mbyk7CiAgIHZlY3RfZG9fcGVlbGlu ZyAobG9vcF92aW5mbywgbml0ZXJzLCBuaXRlcnNtMSwgJm5pdGVyc192ZWN0 b3IsIHRoLAotCQkgICBjaGVja19wcm9maXRhYmlsaXR5LCBmYWxzZSk7CisJ CSAgIGNoZWNrX3Byb2ZpdGFiaWxpdHksIG5pdGVyc19ub19vdmVyZmxvdyk7 CiAgIGlmIChuaXRlcnNfdmVjdG9yID09IE5VTExfVFJFRSkKICAgICB7CiAg ICAgICBpZiAoTE9PUF9WSU5GT19OSVRFUlNfS05PV05fUCAobG9vcF92aW5m bykpCkBAIC02NzA3LDcgKzY3NDAsNyBAQCB2ZWN0X3RyYW5zZm9ybV9sb29w IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pCiAJCQkgICBMT09QX1ZJTkZP X0lOVF9OSVRFUlMgKGxvb3BfdmluZm8pIC8gdmYpOwogICAgICAgZWxzZQog CXZlY3RfZ2VuX3ZlY3Rvcl9sb29wX25pdGVycyAobG9vcF92aW5mbywgbml0 ZXJzLCAmbml0ZXJzX3ZlY3RvciwKLQkJCQkgICAgIGZhbHNlKTsKKwkJCQkg ICAgIG5pdGVyc19ub19vdmVyZmxvdyk7CiAgICAgfQogCiAgIC8qIDEpIE1h a2Ugc3VyZSB0aGUgbG9vcCBoZWFkZXIgaGFzIGV4YWN0bHkgdHdvIGVudHJp ZXMK --_002_AM4PR0802MB2163653E39696F2F965E9CE2E7F90AM4PR0802MB2163_--