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 0635E3858D35 for ; Thu, 30 Jul 2020 07:49:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0635E3858D35 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,413,1589234400"; d="scan'208";a="355607735" Received: from grove.saclay.inria.fr ([193.55.177.244]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 30 Jul 2020 09:49:13 +0200 Date: Thu, 30 Jul 2020 09:49:10 +0200 (CEST) From: Marc Glisse X-X-Sender: glisse@grove.saclay.inria.fr To: gcc-patches@gcc.gnu.org Subject: VEC_COND_EXPR optimizations Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1199518297-1596059937=:48307" Content-ID: X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, 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: Thu, 30 Jul 2020 07:49:16 -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-1199518297-1596059937=:48307 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; format=flowed Content-ID: 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. Using a simple fold_binary internally looks like an ok compromise to me. It remains cheap enough (not recursive, and vector instructions are not that frequent), while still allowing more than const_binop (X|0 or X&X for instance). 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. Regtest+bootstrap on x86_64-pc-linux-gnu 2020-07-30 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. * 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-1199518297-1596059937=:48307 Content-Type: TEXT/x-diff; name=vec5.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: inline; filename=vec5.patch ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZA0KaW5k ZXggYzZhZTdhN2RiN2EuLmFmNTJkNTYxNjJiIDEwMDY0NA0KLS0tIGEvZ2Nj L21hdGNoLnBkDQorKysgYi9nY2MvbWF0Y2gucGQNCkBAIC0zNDUxLDYgKzM0 NTEsNzcgQEAgREVGSU5FX0lOVF9BTkRfRkxPQVRfUk9VTkRfRk4gKFJJTlQp DQogICAgKGlmIChjc3QxICYmIGNzdDIpDQogICAgICh2ZWNfY29uZCBAMCB7 IGNzdDE7IH0geyBjc3QyOyB9KSkpKSkNCiANCisvKiBTaW5rIGJpbmFyeSBv cGVyYXRpb24gdG8gYnJhbmNoZXMsIGJ1dCBvbmx5IGlmIHdlIGNhbiBmb2xk IGl0LiAgKi8NCisjaWYgR0lNUExFDQorKGZvciBvcCAodGNjX2NvbXBhcmlz b24gcGx1cyBtaW51cyBtdWx0IGJpdF9hbmQgYml0X2lvciBiaXRfeG9yDQor CSByZGl2IHRydW5jX2RpdiBjZWlsX2RpdiBmbG9vcl9kaXYgcm91bmRfZGl2 DQorCSB0cnVuY19tb2QgY2VpbF9tb2QgZmxvb3JfbW9kIHJvdW5kX21vZCBt aW4gbWF4KQ0KKy8qIChjID8gYSA6IGIpIG9wIGQgIC0tPiAgYyA/IChhIG9w IGQpIDogKGIgb3AgZCkgKi8NCisgKHNpbXBsaWZ5DQorICAob3AgKHZlY19j b25kOnMgQDAgQDEgQDIpIEAzKQ0KKyAgKHdpdGgNCisgICB7DQorICAgICB0 cmVlIHJoczEsIHJoczIgPSBOVUxMOw0KKyAgICAgcmhzMSA9IGZvbGRfYmlu YXJ5IChvcCwgdHlwZSwgQDEsIEAzKTsNCisgICAgIGlmIChyaHMxICYmIGlz X2dpbXBsZV92YWwgKHJoczEpKQ0KKyAgICAgICByaHMyID0gZm9sZF9iaW5h cnkgKG9wLCB0eXBlLCBAMiwgQDMpOw0KKyAgIH0NCisgICAoaWYgKHJoczIg JiYgaXNfZ2ltcGxlX3ZhbCAocmhzMikpDQorICAgICh2ZWNfY29uZCBAMCB7 IHJoczE7IH0geyByaHMyOyB9KSkpKQ0KKyAoc2ltcGxpZnkNCisgIChvcCBA MyAodmVjX2NvbmQ6cyBAMCBAMSBAMikpDQorICAod2l0aA0KKyAgIHsNCisg ICAgIHRyZWUgcmhzMSwgcmhzMiA9IE5VTEw7DQorICAgICByaHMxID0gZm9s ZF9iaW5hcnkgKG9wLCB0eXBlLCBAMywgQDEpOw0KKyAgICAgaWYgKHJoczEg JiYgaXNfZ2ltcGxlX3ZhbCAocmhzMSkpDQorICAgICAgIHJoczIgPSBmb2xk X2JpbmFyeSAob3AsIHR5cGUsIEAzLCBAMik7DQorICAgfQ0KKyAgIChpZiAo cmhzMiAmJiBpc19naW1wbGVfdmFsIChyaHMyKSkNCisgICAgKHZlY19jb25k IEAwIHsgcmhzMTsgfSB7IHJoczI7IH0pKSkpDQorDQorLyogKGMgPyBhIDog Yikgb3AgKGMgPyBkIDogZSkgIC0tPiAgYyA/IChhIG9wIGQpIDogKGIgb3Ag ZSkgKi8NCisgKHNpbXBsaWZ5DQorICAob3AgKHZlY19jb25kOnMgQDAgQDEg QDIpICh2ZWNfY29uZDpzIEAwIEAzIEA0KSkNCisgICh3aXRoDQorICAgew0K KyAgICAgdHJlZSByaHMxLCByaHMyID0gTlVMTDsNCisgICAgIHJoczEgPSBm b2xkX2JpbmFyeSAob3AsIHR5cGUsIEAxLCBAMyk7DQorICAgICBpZiAocmhz MSAmJiBpc19naW1wbGVfdmFsIChyaHMxKSkNCisgICAgICAgcmhzMiA9IGZv bGRfYmluYXJ5IChvcCwgdHlwZSwgQDIsIEA0KTsNCisgICB9DQorICAgKGlm IChyaHMyICYmIGlzX2dpbXBsZV92YWwgKHJoczIpKQ0KKyAgICAodmVjX2Nv bmQgQDAgeyByaHMxOyB9IHsgcmhzMjsgfSkpKSkpDQorI2VuZGlmDQorDQor LyogKHYgPyB3IDogMCkgPyBhIDogYiBpcyBqdXN0ICh2ICYgdykgPyBhIDog YiAgKi8NCisoc2ltcGxpZnkNCisgKHZlY19jb25kICh2ZWNfY29uZDpzIEAw IEAzIGludGVnZXJfemVyb3ApIEAxIEAyKQ0KKyAodmVjX2NvbmQgKGJpdF9h bmQgQDAgQDMpIEAxIEAyKSkNCisoc2ltcGxpZnkNCisgKHZlY19jb25kICh2 ZWNfY29uZDpzIEAwIGludGVnZXJfYWxsX29uZXNwIEAzKSBAMSBAMikNCisg KHZlY19jb25kIChiaXRfaW9yIEAwIEAzKSBAMSBAMikpDQorKHNpbXBsaWZ5 DQorICh2ZWNfY29uZCAodmVjX2NvbmQ6cyBAMCBpbnRlZ2VyX3plcm9wIEAz KSBAMSBAMikNCisgKHZlY19jb25kIChiaXRfaW9yIEAwIChiaXRfbm90IEAz KSkgQDIgQDEpKQ0KKyhzaW1wbGlmeQ0KKyAodmVjX2NvbmQgKHZlY19jb25k OnMgQDAgQDMgaW50ZWdlcl9hbGxfb25lc3ApIEAxIEAyKQ0KKyAodmVjX2Nv bmQgKGJpdF9hbmQgQDAgKGJpdF9ub3QgQDMpKSBAMiBAMSkpDQorDQorLyog YzEgPyBjMiA/IGEgOiBiIDogYiAgLS0+ICAoYzEgJiBjMikgPyBhIDogYiAg Ki8NCisoc2ltcGxpZnkNCisgKHZlY19jb25kIEAwICh2ZWNfY29uZDpzIEAx IEAyIEAzKSBAMykNCisgKHZlY19jb25kIChiaXRfYW5kIEAwIEAxKSBAMiBA MykpDQorKHNpbXBsaWZ5DQorICh2ZWNfY29uZCBAMCBAMiAodmVjX2NvbmQ6 cyBAMSBAMiBAMykpDQorICh2ZWNfY29uZCAoYml0X2lvciBAMCBAMSkgQDIg QDMpKQ0KKyhzaW1wbGlmeQ0KKyAodmVjX2NvbmQgQDAgKHZlY19jb25kOnMg QDEgQDIgQDMpIEAyKQ0KKyAodmVjX2NvbmQgKGJpdF9pb3IgKGJpdF9ub3Qg QDApIEAxKSBAMiBAMykpDQorKHNpbXBsaWZ5DQorICh2ZWNfY29uZCBAMCBA MyAodmVjX2NvbmQ6cyBAMSBAMiBAMykpDQorICh2ZWNfY29uZCAoYml0X2Fu ZCAoYml0X25vdCBAMCkgQDEpIEAyIEAzKSkNCisNCiAvKiBTaW1wbGlmaWNh dGlvbiBtb3ZlZCBmcm9tIGZvbGRfY29uZF9leHByX3dpdGhfY29tcGFyaXNv bi4gIEl0IG1heSBhbHNvDQogICAgYmUgZXh0ZW5kZWQuICAqLw0KIC8qIFRo aXMgcGF0dGVybiBpbXBsZW1lbnRzIHR3byBraW5kcyBzaW1wbGlmaWNhdGlv bjoNCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9hbmRub3QtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev YW5kbm90LTIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwLi5lMDk1NWNlM2ZmZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvYW5kbm90LTIuYw0KQEAgLTAs MCArMSwxMCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBk Zy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtZm9yd3Byb3AzLXJhdyAtdyAt V25vLXBzYWJpIiB9ICovDQorDQordHlwZWRlZiBsb25nIHZlYyBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKTsNCit2ZWMgZih2ZWMgeCl7DQor ICB2ZWMgeSA9IHggPCAxMDsNCisgIHJldHVybiB5ICYgKHkgPT0gMCk7DQor fQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIl9l eHByIiAiZm9yd3Byb3AzIiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjk1OTA2LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy90cmVlLXNzYS9wcjk1OTA2LmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uM2Q4MjBhNThlOTMNCi0tLSAv ZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3ByOTU5MDYuYw0KQEAgLTAsMCArMSwxMyBAQA0KKy8qIHsgZGctZG8gY29t cGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUt Zm9yd3Byb3AzLXJhdyAtdyAtV25vLXBzYWJpIiB9ICovDQorDQorLy8gRklY TUU6IHRoaXMgc2hvdWxkIGZ1cnRoZXIgb3B0aW1pemUgdG8gYSBNQVhfRVhQ Ug0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgdjE2aTggX19hdHRyaWJ1dGVfXygo dmVjdG9yX3NpemUoMTYpKSk7DQordjE2aTggZih2MTZpOCBhLCB2MTZpOCBi KQ0KK3sNCisgICAgdjE2aTggY21wID0gKGEgPiBiKTsNCisgICAgcmV0dXJu IChjbXAgJiBhKSB8ICh+Y21wICYgYik7DQorfQ0KKw0KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgImJpdF8oYW5kfGlvcilfZXhwciIg ImZvcndwcm9wMyIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJ2ZWNfY29uZF9leHByIiAxICJmb3J3cHJvcDMiIH0g fSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByNzAzMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByNzAzMTQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwLi5hYWQ4ZGQ5YjU3ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDMxNC5jDQpAQCAtMCww ICsxLDE1IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRn LW9wdGlvbnMgIi1tYXJjaD1za3lsYWtlLWF2eDUxMiAtTzIiIH0gKi8NCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNtcCIgMiB9 IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJh bmQiIH0gfSAqLw0KKw0KK3R5cGVkZWYgbG9uZyB2ZWMgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoMTYpKSk7DQordmVjIGYodmVjIHgsIHZlYyB5KXsN CisgIHJldHVybiAoeCA8IDUpICYgKHkgPCA4KTsNCit9DQorDQorLyogT24g eDg2XzY0LCBjdXJyZW50bHkNCisJdnBjbXBxCSQyLCAuTEMxKCVyaXApLCAl eG1tMSwgJWsxDQorCXZwY21wcQkkMiwgLkxDMCglcmlwKSwgJXhtbTAsICVr MHslazF9DQorCXZwbW92bTJxCSVrMCwgJXhtbTANCisqLw0K --8323329-1199518297-1596059937=:48307--