From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16790 invoked by alias); 21 Jul 2014 09:46:34 -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 16728 invoked by uid 89); 21 Jul 2014 09:46:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qg0-f46.google.com Received: from mail-qg0-f46.google.com (HELO mail-qg0-f46.google.com) (209.85.192.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 21 Jul 2014 09:46:26 +0000 Received: by mail-qg0-f46.google.com with SMTP id z60so5091144qgd.5 for ; Mon, 21 Jul 2014 02:46:24 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.106.225 with SMTP id e88mr37145196qgf.20.1405935984557; Mon, 21 Jul 2014 02:46:24 -0700 (PDT) Received: by 10.140.49.111 with HTTP; Mon, 21 Jul 2014 02:46:24 -0700 (PDT) In-Reply-To: <002a01cfa19e$8752d0d0$95f87270$@arm.com> References: <002a01cfa19e$8752d0d0$95f87270$@arm.com> Date: Mon, 21 Jul 2014 09:47:00 -0000 Message-ID: Subject: Fwd: [PATCH 1/3]Improve induction variable elimination From: "Bin.Cheng" To: Zdenek Dvorak Cc: gcc-patches List Content-Type: multipart/mixed; boundary=001a113a8626efe5eb04feb0fade X-IsSubscribed: yes X-SW-Source: 2014-07/txt/msg01391.txt.bz2 --001a113a8626efe5eb04feb0fade Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1525 Hi, forward to Zdenek for the review. Thanks, bin ---------- Forwarded message ---------- From: Bin Cheng Date: Thu, Jul 17, 2014 at 10:07 AM Subject: [PATCH 1/3]Improve induction variable elimination To: gcc-patches@gcc.gnu.org Hi, This is a series of three patches improving induction variable elimination. Currently GCC only eliminates iv for very specific case when the loop's latch could run zero times, i.e., when may_be_zero field of loop niter information evaluates to true. In fact, it's so specific that iv_elimination_compare_lt rarely succeeds during either GCC bootstrap or spec2000/spec2006 compilation. Though intrusive data shows these patches don't help iv elimination that much for GCC bootstrap, they do capture 5%~15% more eliminations for compiling spec2000/2006. Detailed numbers are like: 2k/int 2k/fp 2k6/int 2k6/fp improve ~9.6% ~4.8% ~5.5% ~14.4% All patches pass bootstrap and regression test on x86_64/x86. I will bootstrap and test them on aarch64/arm platforms too. The first patch turns to tree operand_equal_p to check the number of iterations in iv_elimination_lt. Though I think this change isn't necessary for current code, it's needed if we further relax iv elimination for cases in which sign/unsigned conversion is involved. Thanks, bin 2014-07-17 Bin Cheng * tree-ssa-loop-ivopts.c (iv_elimination_compare_lt): Check number of iteration using tree comparison. --001a113a8626efe5eb04feb0fade Content-Type: text/plain; charset=US-ASCII; name="iv_elimination-improve-a-20140716.txt" Content-Disposition: attachment; filename="iv_elimination-improve-a-20140716.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: 8304e601d6cef52c_0.1 Content-length: 2384 SW5kZXg6IGdjYy90cmVlLXNzYS1sb29wLWl2b3B0cy5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gZ2NjL3RyZWUtc3NhLWxvb3AtaXZvcHRzLmMJ KHJldmlzaW9uIDIxMjM4NykNCisrKyBnY2MvdHJlZS1zc2EtbG9vcC1pdm9w dHMuYwkod29ya2luZyBjb3B5KQ0KQEAgLTQ2MDUsNyArNDYwNSw3IEBAIGl2 X2VsaW1pbmF0aW9uX2NvbXBhcmVfbHQgKHN0cnVjdCBpdm9wdHNfZGF0YSAq ZGF0DQogCQkJICAgc3RydWN0IHRyZWVfbml0ZXJfZGVzYyAqbml0ZXIpDQog ew0KICAgdHJlZSBjYW5kX3R5cGUsIGEsIGIsIG1ieiwgbml0X3R5cGUgPSBU UkVFX1RZUEUgKG5pdGVyLT5uaXRlciksIG9mZnNldDsNCi0gIHN0cnVjdCBh ZmZfdHJlZSBuaXQsIHRtcGEsIHRtcGI7DQorICBzdHJ1Y3QgYWZmX3RyZWUg bml0LCB0bXAxLCB0bXBhLCB0bXBiOw0KICAgZW51bSB0cmVlX2NvZGUgY29t cDsNCiAgIEhPU1RfV0lERV9JTlQgc3RlcDsNCiANCkBAIC00NjYxLDE1ICs0 NjYxLDE5IEBAIGl2X2VsaW1pbmF0aW9uX2NvbXBhcmVfbHQgKHN0cnVjdCBp dm9wdHNfZGF0YSAqZGF0DQogICAgIHJldHVybiBmYWxzZTsNCiANCiAgIC8q IEV4cGVjdGVkIG51bWJlciBvZiBpdGVyYXRpb25zIGlzIEIgLSBBIC0gMS4g IENoZWNrIHRoYXQgaXQgbWF0Y2hlcw0KLSAgICAgdGhlIGFjdHVhbCBudW1i ZXIsIGkuZS4sIHRoYXQgQiAtIEEgLSBOSVRFUiA9IDEuICAqLw0KKyAgICAg dGhlIGFjdHVhbCBudW1iZXIsIGkuZS4sIHRoYXQgQiAtIEEgPSBOSVRFUiAr IDEuICAqLw0KICAgdHJlZV90b19hZmZfY29tYmluYXRpb24gKG5pdGVyLT5u aXRlciwgbml0X3R5cGUsICZuaXQpOw0KLSAgdHJlZV90b19hZmZfY29tYmlu YXRpb24gKGZvbGRfY29udmVydCAobml0X3R5cGUsIGEpLCBuaXRfdHlwZSwg JnRtcGEpOw0KLSAgdHJlZV90b19hZmZfY29tYmluYXRpb24gKGZvbGRfY29u dmVydCAobml0X3R5cGUsIGIpLCBuaXRfdHlwZSwgJnRtcGIpOw0KLSAgYWZm X2NvbWJpbmF0aW9uX3NjYWxlICgmbml0LCAtMSk7DQotICBhZmZfY29tYmlu YXRpb25fc2NhbGUgKCZ0bXBhLCAtMSk7DQotICBhZmZfY29tYmluYXRpb25f YWRkICgmdG1wYiwgJnRtcGEpOw0KLSAgYWZmX2NvbWJpbmF0aW9uX2FkZCAo JnRtcGIsICZuaXQpOw0KLSAgaWYgKHRtcGIubiAhPSAwIHx8IHRtcGIub2Zm c2V0ICE9IDEpDQorICBhZmZfY29tYmluYXRpb25fY29uc3QgKCZ0bXAxLCBu aXRfdHlwZSwgMSk7DQorICB0cmVlX3RvX2FmZl9jb21iaW5hdGlvbiAoYiwg VFJFRV9UWVBFIChiKSwgJnRtcGIpOw0KKyAgYWZmX2NvbWJpbmF0aW9uX2Fk ZCAoJm5pdCwgJnRtcDEpOw0KKyAgaWYgKGEgIT0gaW50ZWdlcl96ZXJvX25v ZGUpDQorICAgIHsNCisgICAgICB0cmVlX3RvX2FmZl9jb21iaW5hdGlvbiAo YSwgVFJFRV9UWVBFIChiKSwgJnRtcGEpOw0KKyAgICAgIGFmZl9jb21iaW5h dGlvbl9zY2FsZSAoJnRtcGEsIC0xKTsNCisgICAgICBhZmZfY29tYmluYXRp b25fYWRkICgmdG1wYiwgJnRtcGEpOw0KKyAgICB9DQorICBpZiAoIW9wZXJh bmRfZXF1YWxfcCAoYWZmX2NvbWJpbmF0aW9uX3RvX3RyZWUgKCZuaXQpLA0K KwkJCWFmZl9jb21iaW5hdGlvbl90b190cmVlICgmdG1wYiksIDApKQ0KICAg ICByZXR1cm4gZmFsc2U7DQogDQogICAvKiBGaW5hbGx5LCBjaGVjayB0aGF0 IENBTkQtPklWLT5CQVNFIC0gQ0FORC0+SVYtPlNURVAgKiBBIGRvZXMgbm90 DQo= --001a113a8626efe5eb04feb0fade--