From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sourceware.org (Postfix) with ESMTPS id EE5523861016 for ; Wed, 5 Aug 2020 13:32:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org EE5523861016 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=inria.fr Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=marc.glisse@inria.fr X-IronPort-AV: E=Sophos;i="5.75,436,1589234400"; d="scan'208";a="355994195" Received: from grove.saclay.inria.fr ([193.55.177.244]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 05 Aug 2020 15:32:36 +0200 Date: Wed, 5 Aug 2020 15:32:32 +0200 (CEST) From: Marc Glisse X-X-Sender: glisse@grove.saclay.inria.fr To: gcc-patches@gcc.gnu.org Subject: VEC_COND_EXPR optimizations v2 In-Reply-To: Message-ID: References: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1048031986-1596634356=:2938132" X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_NUMSUBJECT, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Aug 2020 13:32:56 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-1048031986-1596634356=:2938132 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII New version that passed bootstrap+regtest during the night. When vector comparisons were forced to use vec_cond_expr, we lost a number of optimizations (my fault for not adding enough testcases to prevent that). This patch tries to unwrap vec_cond_expr a bit so some optimizations can still happen. I wasn't planning to add all those transformations together, but adding one caused a regression, whose fix introduced a second regression, etc. Restricting to constant folding would not be sufficient, we also need at least things like X|0 or X&X. The transformations are quite conservative with :s and folding only if everything simplifies, we may want to relax this later. And of course we are going to miss things like a?b:c + a?c:b -> b+c. In terms of number of operations, some transformations turning 2 VEC_COND_EXPR into VEC_COND_EXPR + BIT_IOR_EXPR + BIT_NOT_EXPR might not look like a gain... I expect the bit_not disappears in most cases, and VEC_COND_EXPR looks more costly than a simpler BIT_IOR_EXPR. I am a bit confused that with avx512 we get types like "vector(4) " with :2 and not :1 (is it a hack so true is 1 and not -1?), but that doesn't matter for this patch. 2020-08-05 Marc Glisse PR tree-optimization/95906 PR target/70314 * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e), (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): New transformations. (op (c ? a : b)): Update to match the new transformations. * gcc.dg/tree-ssa/andnot-2.c: New file. * gcc.dg/tree-ssa/pr95906.c: Likewise. * gcc.target/i386/pr70314.c: Likewise. -- Marc Glisse --8323329-1048031986-1596634356=:2938132 Content-Type: TEXT/x-diff; name=vec7.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: inline; filename=vec7.patch ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZA0KaW5k ZXggYTA1MmM5ZTNkYmMuLmY5Mjk3ZmNhZGJlIDEwMDY0NA0KLS0tIGEvZ2Nj L21hdGNoLnBkDQorKysgYi9nY2MvbWF0Y2gucGQNCkBAIC0zNDM2LDIwICsz NDM2LDY2IEBAIERFRklORV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChSSU5U KQ0KICAgKGlmIChpbnRlZ2VyX3plcm9wIChAMCkpDQogICAgQDIpKSkNCiAN Ci0vKiBTaW5rIHVuYXJ5IG9wZXJhdGlvbnMgdG8gY29uc3RhbnQgYnJhbmNo ZXMsIGJ1dCBvbmx5IGlmIHdlIGRvIGZvbGQgaXQgdG8NCi0gICBjb25zdGFu dHMuICAqLw0KKyNpZiBHSU1QTEUNCisvKiBTaW5rIHVuYXJ5IG9wZXJhdGlv bnMgdG8gYnJhbmNoZXMsIGJ1dCBvbmx5IGlmIHdlIGRvIGZvbGQgYm90aC4g ICovDQogKGZvciBvcCAobmVnYXRlIGJpdF9ub3QgYWJzIGFic3UpDQogIChz aW1wbGlmeQ0KLSAgKG9wICh2ZWNfY29uZCBAMCBWRUNUT1JfQ1NUQDEgVkVD VE9SX0NTVEAyKSkNCi0gICh3aXRoDQotICAgew0KLSAgICAgdHJlZSBjc3Qx LCBjc3QyOw0KLSAgICAgY3N0MSA9IGNvbnN0X3Vub3AgKG9wLCB0eXBlLCBA MSk7DQotICAgICBpZiAoY3N0MSkNCi0gICAgICAgY3N0MiA9IGNvbnN0X3Vu b3AgKG9wLCB0eXBlLCBAMik7DQotICAgfQ0KLSAgIChpZiAoY3N0MSAmJiBj c3QyKQ0KLSAgICAodmVjX2NvbmQgQDAgeyBjc3QxOyB9IHsgY3N0MjsgfSkp KSkpDQorICAob3AgKHZlY19jb25kOnMgQDAgQDEgQDIpKQ0KKyAgKHZlY19j b25kIEAwIChvcCEgQDEpIChvcCEgQDIpKSkpDQorDQorLyogU2luayBiaW5h cnkgb3BlcmF0aW9uIHRvIGJyYW5jaGVzLCBidXQgb25seSBpZiB3ZSBjYW4g Zm9sZCBpdC4gICovDQorKGZvciBvcCAodGNjX2NvbXBhcmlzb24gcGx1cyBt aW51cyBtdWx0IGJpdF9hbmQgYml0X2lvciBiaXRfeG9yDQorCSByZGl2IHRy dW5jX2RpdiBjZWlsX2RpdiBmbG9vcl9kaXYgcm91bmRfZGl2DQorCSB0cnVu Y19tb2QgY2VpbF9tb2QgZmxvb3JfbW9kIHJvdW5kX21vZCBtaW4gbWF4KQ0K Ky8qIChjID8gYSA6IGIpIG9wIChjID8gZCA6IGUpICAtLT4gIGMgPyAoYSBv cCBkKSA6IChiIG9wIGUpICovDQorIChzaW1wbGlmeQ0KKyAgKG9wICh2ZWNf Y29uZDpzIEAwIEAxIEAyKSAodmVjX2NvbmQ6cyBAMCBAMyBANCkpDQorICAo dmVjX2NvbmQgQDAgKG9wISBAMSBAMykgKG9wISBAMiBANCkpKQ0KKw0KKy8q IChjID8gYSA6IGIpIG9wIGQgIC0tPiAgYyA/IChhIG9wIGQpIDogKGIgb3Ag ZCkgKi8NCisgKHNpbXBsaWZ5DQorICAob3AgKHZlY19jb25kOnMgQDAgQDEg QDIpIEAzKQ0KKyAgKHZlY19jb25kIEAwIChvcCEgQDEgQDMpIChvcCEgQDIg QDMpKSkNCisgKHNpbXBsaWZ5DQorICAob3AgQDMgKHZlY19jb25kOnMgQDAg QDEgQDIpKQ0KKyAgKHZlY19jb25kIEAwIChvcCEgQDMgQDEpIChvcCEgQDMg QDIpKSkpDQorI2VuZGlmDQorDQorLyogKHYgPyB3IDogMCkgPyBhIDogYiBp cyBqdXN0ICh2ICYgdykgPyBhIDogYiAgKi8NCisoc2ltcGxpZnkNCisgKHZl Y19jb25kICh2ZWNfY29uZDpzIEAwIEAzIGludGVnZXJfemVyb3ApIEAxIEAy KQ0KKyAoaWYgKHR5cGVzX21hdGNoIChAMCwgQDMpKQ0KKyAgKHZlY19jb25k IChiaXRfYW5kIEAwIEAzKSBAMSBAMikpKQ0KKyhzaW1wbGlmeQ0KKyAodmVj X2NvbmQgKHZlY19jb25kOnMgQDAgaW50ZWdlcl9hbGxfb25lc3AgQDMpIEAx IEAyKQ0KKyAoaWYgKHR5cGVzX21hdGNoIChAMCwgQDMpKQ0KKyAgKHZlY19j b25kIChiaXRfaW9yIEAwIEAzKSBAMSBAMikpKQ0KKyhzaW1wbGlmeQ0KKyAo dmVjX2NvbmQgKHZlY19jb25kOnMgQDAgaW50ZWdlcl96ZXJvcCBAMykgQDEg QDIpDQorIChpZiAodHlwZXNfbWF0Y2ggKEAwLCBAMykpDQorICAodmVjX2Nv bmQgKGJpdF9pb3IgQDAgKGJpdF9ub3QgQDMpKSBAMiBAMSkpKQ0KKyhzaW1w bGlmeQ0KKyAodmVjX2NvbmQgKHZlY19jb25kOnMgQDAgQDMgaW50ZWdlcl9h bGxfb25lc3ApIEAxIEAyKQ0KKyAoaWYgKHR5cGVzX21hdGNoIChAMCwgQDMp KQ0KKyAgKHZlY19jb25kIChiaXRfYW5kIEAwIChiaXRfbm90IEAzKSkgQDIg QDEpKSkNCisNCisvKiBjMSA/IGMyID8gYSA6IGIgOiBiICAtLT4gIChjMSAm IGMyKSA/IGEgOiBiICAqLw0KKyhzaW1wbGlmeQ0KKyAodmVjX2NvbmQgQDAg KHZlY19jb25kOnMgQDEgQDIgQDMpIEAzKQ0KKyAoaWYgKHR5cGVzX21hdGNo IChAMCwgQDEpKQ0KKyAgKHZlY19jb25kIChiaXRfYW5kIEAwIEAxKSBAMiBA MykpKQ0KKyhzaW1wbGlmeQ0KKyAodmVjX2NvbmQgQDAgQDIgKHZlY19jb25k OnMgQDEgQDIgQDMpKQ0KKyAoaWYgKHR5cGVzX21hdGNoIChAMCwgQDEpKQ0K KyAgKHZlY19jb25kIChiaXRfaW9yIEAwIEAxKSBAMiBAMykpKQ0KKyhzaW1w bGlmeQ0KKyAodmVjX2NvbmQgQDAgKHZlY19jb25kOnMgQDEgQDIgQDMpIEAy KQ0KKyAoaWYgKHR5cGVzX21hdGNoIChAMCwgQDEpKQ0KKyAgKHZlY19jb25k IChiaXRfaW9yIChiaXRfbm90IEAwKSBAMSkgQDIgQDMpKSkNCisoc2ltcGxp ZnkNCisgKHZlY19jb25kIEAwIEAzICh2ZWNfY29uZDpzIEAxIEAyIEAzKSkN CisgKGlmICh0eXBlc19tYXRjaCAoQDAsIEAxKSkNCisgICh2ZWNfY29uZCAo Yml0X2FuZCAoYml0X25vdCBAMCkgQDEpIEAyIEAzKSkpDQogDQogLyogU2lt cGxpZmljYXRpb24gbW92ZWQgZnJvbSBmb2xkX2NvbmRfZXhwcl93aXRoX2Nv bXBhcmlzb24uICBJdCBtYXkgYWxzbw0KICAgIGJlIGV4dGVuZGVkLiAgKi8N CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9h bmRub3QtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvYW5k bm90LTIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwLi5lMDk1NWNlM2ZmZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvYW5kbm90LTIuYw0KQEAgLTAsMCAr MSwxMCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1v cHRpb25zICItTzIgLWZkdW1wLXRyZWUtZm9yd3Byb3AzLXJhdyAtdyAtV25v LXBzYWJpIiB9ICovDQorDQordHlwZWRlZiBsb25nIHZlYyBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKTsNCit2ZWMgZih2ZWMgeCl7DQorICB2 ZWMgeSA9IHggPCAxMDsNCisgIHJldHVybiB5ICYgKHkgPT0gMCk7DQorfQ0K Kw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIl9leHBy IiAiZm9yd3Byb3AzIiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy5kZy90cmVlLXNzYS9wcjk1OTA2LmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90cmVlLXNzYS9wcjk1OTA2LmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uM2Q4MjBhNThlOTMNCi0tLSAvZGV2 L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3By OTU5MDYuYw0KQEAgLTAsMCArMSwxMyBAQA0KKy8qIHsgZGctZG8gY29tcGls ZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtZm9y d3Byb3AzLXJhdyAtdyAtV25vLXBzYWJpIiB9ICovDQorDQorLy8gRklYTUU6 IHRoaXMgc2hvdWxkIGZ1cnRoZXIgb3B0aW1pemUgdG8gYSBNQVhfRVhQUg0K K3R5cGVkZWYgc2lnbmVkIGNoYXIgdjE2aTggX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSk7DQordjE2aTggZih2MTZpOCBhLCB2MTZpOCBiKQ0K K3sNCisgICAgdjE2aTggY21wID0gKGEgPiBiKTsNCisgICAgcmV0dXJuIChj bXAgJiBhKSB8ICh+Y21wICYgYik7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC1ub3QgImJpdF8oYW5kfGlvcilfZXhwciIgImZv cndwcm9wMyIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJ2ZWNfY29uZF9leHByIiAxICJmb3J3cHJvcDMiIH0gfSAq Lw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByNzAzMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By NzAzMTQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwLi5hYWQ4ZGQ5YjU3ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDMxNC5jDQpAQCAtMCwwICsx LDE1IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9w dGlvbnMgIi1tYXJjaD1za3lsYWtlLWF2eDUxMiAtTzIiIH0gKi8NCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNtcCIgMiB9IH0g Ki8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJhbmQi IH0gfSAqLw0KKw0KK3R5cGVkZWYgbG9uZyB2ZWMgX19hdHRyaWJ1dGVfXygo dmVjdG9yX3NpemUoMTYpKSk7DQordmVjIGYodmVjIHgsIHZlYyB5KXsNCisg IHJldHVybiAoeCA8IDUpICYgKHkgPCA4KTsNCit9DQorDQorLyogT24geDg2 XzY0LCBjdXJyZW50bHkNCisJdnBjbXBxCSQyLCAuTEMxKCVyaXApLCAleG1t MSwgJWsxDQorCXZwY21wcQkkMiwgLkxDMCglcmlwKSwgJXhtbTAsICVrMHsl azF9DQorCXZwbW92bTJxCSVrMCwgJXhtbTANCisqLw0K --8323329-1048031986-1596634356=:2938132--