From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by sourceware.org (Postfix) with ESMTPS id 2856E398241B for ; Wed, 4 Aug 2021 13:34:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2856E398241B Received: by mail-pj1-x1035.google.com with SMTP id e2-20020a17090a4a02b029016f3020d867so3563436pjh.3 for ; Wed, 04 Aug 2021 06:34:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XVtviCR4OdZ/srASQM8BO7MrkNngsXF4VGTZYZzO8bI=; b=OCZAUR2R6tkHgsaoNydru+vTHx8pGj4wIVRKV6Tul45mObRyZ8Pyqd++pCfYVJynht oCWJq6GQoG7gbtJb58reuGS7eX/XrPTv5Yeay4xapRyxb8jyXS65SdZff4dkWUFHokHP n32mLHjpYZsv6U7xXtPuUcvxmZI+SozlLZPyY/BAXfjFVi8/MiOvPZCwoAK23VkO9uua Lh9Li2MpwAjLkkTXaTuBnAQE0sDkQ+S3WEP3rr9M8r8E9coaK3JwU2O5jzI/VsqsZk9y PDnk02PYAKD5U5J4WU3HCJJZc9KI90IMdsga9nEAzyT5BNAgWvCwjslSRJdOxSmsz837 SJhw== X-Gm-Message-State: AOAM533RFz0T5K5r5htK+1P1Fm72FrwXheq574vzTUZTZ8zWApcmAOYc J10KzwRavqpjw46uNkCqoJJHXcakNc2tf1BjzLpLQ1J6 X-Google-Smtp-Source: ABdhPJwnF8fawQvQam7tM8AmKeC33qBeMmrEER79/F5RdI9xpHlS0eoRQOTzJh2pxsEKuMmn3JLRQDe+pZCiX5TgO6o= X-Received: by 2002:a17:90a:62cb:: with SMTP id k11mr9746636pjs.153.1628084070707; Wed, 04 Aug 2021 06:34:30 -0700 (PDT) MIME-Version: 1.0 References: <20210803135646.2545430-1-hjl.tools@gmail.com> In-Reply-To: <20210803135646.2545430-1-hjl.tools@gmail.com> From: "H.J. Lu" Date: Wed, 4 Aug 2021 06:33:54 -0700 Message-ID: Subject: [PATCH v2] x86: Update STORE_MAX_PIECES To: GCC Patches Content-Type: multipart/mixed; boundary="000000000000b331af05c8bbdc91" X-Spam-Status: No, score=-3031.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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, 04 Aug 2021 13:34:33 -0000 --000000000000b331af05c8bbdc91 Content-Type: text/plain; charset="UTF-8" On Tue, Aug 3, 2021 at 6:56 AM H.J. Lu wrote: > > 1. Update x86 STORE_MAX_PIECES to use OImode and XImode only if inter-unit > move is enabled since x86 uses vec_duplicate, which is enabled only when > inter-unit move is enabled, to implement store_by_pieces. > 2. Update op_by_pieces_d::op_by_pieces_d to set m_max_size to > STORE_MAX_PIECES for store_by_pieces and to COMPARE_MAX_PIECES for > compare_by_pieces. > > gcc/ > > PR target/101742 > * expr.c (op_by_pieces_d::op_by_pieces_d): Set m_max_size to > STORE_MAX_PIECES for store_by_pieces and to COMPARE_MAX_PIECES > for compare_by_pieces. > * config/i386/i386.h (STORE_MAX_PIECES): Use OImode and XImode > only if TARGET_INTER_UNIT_MOVES_TO_VEC is true. > > gcc/testsuite/ > > PR target/101742 > * gcc.target/i386/pr101742a.c: New test. > * gcc.target/i386/pr101742b.c: Likewise. > --- > gcc/config/i386/i386.h | 20 +++++++++++--------- > gcc/expr.c | 6 +++++- > gcc/testsuite/gcc.target/i386/pr101742a.c | 16 ++++++++++++++++ > gcc/testsuite/gcc.target/i386/pr101742b.c | 4 ++++ > 4 files changed, 36 insertions(+), 10 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr101742a.c > create mode 100644 gcc/testsuite/gcc.target/i386/pr101742b.c > > diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h > index bed9cd9da18..9b416abd5f4 100644 > --- a/gcc/config/i386/i386.h > +++ b/gcc/config/i386/i386.h > @@ -1783,15 +1783,17 @@ typedef struct ix86_args { > /* STORE_MAX_PIECES is the number of bytes at a time that we can > store efficiently. */ > #define STORE_MAX_PIECES \ > - ((TARGET_AVX512F && !TARGET_PREFER_AVX256) \ > - ? 64 \ > - : ((TARGET_AVX \ > - && !TARGET_PREFER_AVX128 \ > - && !TARGET_AVX256_SPLIT_UNALIGNED_STORE) \ > - ? 32 \ > - : ((TARGET_SSE2 \ > - && TARGET_SSE_UNALIGNED_STORE_OPTIMAL) \ > - ? 16 : UNITS_PER_WORD))) > + (TARGET_INTER_UNIT_MOVES_TO_VEC \ > + ? ((TARGET_AVX512F && !TARGET_PREFER_AVX256) \ > + ? 64 \ > + : ((TARGET_AVX \ > + && !TARGET_PREFER_AVX128 \ > + && !TARGET_AVX256_SPLIT_UNALIGNED_STORE) \ > + ? 32 \ > + : ((TARGET_SSE2 \ > + && TARGET_SSE_UNALIGNED_STORE_OPTIMAL) \ > + ? 16 : UNITS_PER_WORD))) \ > + : UNITS_PER_WORD) > > /* If a memory-to-memory move would take MOVE_RATIO or more simple > move-instruction pairs, we will do a cpymem or libcall instead. expr.c has been fixed. Here is the v2 patch for x86 backend. OK for master? Thanks. -- H.J. --000000000000b331af05c8bbdc91 Content-Type: application/x-patch; name="v2-0001-x86-Update-STORE_MAX_PIECES.patch" Content-Disposition: attachment; filename="v2-0001-x86-Update-STORE_MAX_PIECES.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krxj5aw40 RnJvbSAwZjhkOWM2NDNlYjVlNzRiZmM0OTUxYmY3ZDYwOGY0MGY1ZjY0Mjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMyBBdWcgMjAyMSAwNjoxNzoyMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIHg4Njog VXBkYXRlIFNUT1JFX01BWF9QSUVDRVMKClVwZGF0ZSBTVE9SRV9NQVhfUElFQ0VTIHRvIHVzZSBP SW1vZGUgYW5kIFhJbW9kZSBvbmx5IGlmIGludGVyLXVuaXQKbW92ZSBpcyBlbmFibGVkIHNpbmNl IHZlY19kdXBsaWNhdGUgZW5hYmxlZCBieSBpbnRlci11bml0IG1vdmUgaXMKdXNlZCB0byBpbXBs ZW1lbnQgc3RvcmVfYnlfcGllY2VzLgoKZ2NjLwoKCVBSIHRhcmdldC8xMDE3NDIKCSogY29uZmln L2kzODYvaTM4Ni5oIChTVE9SRV9NQVhfUElFQ0VTKTogVXNlIE9JbW9kZSBhbmQgWEltb2RlCglv bmx5IGlmIFRBUkdFVF9JTlRFUl9VTklUX01PVkVTX1RPX1ZFQyBpcyB0cnVlLgoKZ2NjL3Rlc3Rz dWl0ZS8KCglQUiB0YXJnZXQvMTAxNzQyCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjEwMTc0MmEuYzog TmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjEwMTc0MmIuYzogTGlrZXdpc2UuCi0tLQog Z2NjL2NvbmZpZy9pMzg2L2kzODYuaCAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysr Ky0tLS0tLS0tLQogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDE3NDJhLmMgfCAx NiArKysrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjEwMTc0 MmIuYyB8ICA0ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgOSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9wcjEwMTc0MmEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L3ByMTAxNzQyYi5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCBi L2djYy9jb25maWcvaTM4Ni9pMzg2LmgKaW5kZXggYmVkOWNkOWRhMTguLjliNDE2YWJkNWY0IDEw MDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9p Mzg2LmgKQEAgLTE3ODMsMTUgKzE3ODMsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgaXg4Nl9hcmdzIHsK IC8qIFNUT1JFX01BWF9QSUVDRVMgaXMgdGhlIG51bWJlciBvZiBieXRlcyBhdCBhIHRpbWUgdGhh dCB3ZSBjYW4KICAgIHN0b3JlIGVmZmljaWVudGx5LiAgKi8KICNkZWZpbmUgU1RPUkVfTUFYX1BJ RUNFUyBcCi0gICgoVEFSR0VUX0FWWDUxMkYgJiYgIVRBUkdFVF9QUkVGRVJfQVZYMjU2KSBcCi0g ICA/IDY0IFwKLSAgIDogKChUQVJHRVRfQVZYIFwKLSAgICAgICAmJiAhVEFSR0VUX1BSRUZFUl9B VlgxMjggXAotICAgICAgICYmICFUQVJHRVRfQVZYMjU2X1NQTElUX1VOQUxJR05FRF9TVE9SRSkg XAotICAgICAgPyAzMiBcCi0gICAgICA6ICgoVEFSR0VUX1NTRTIgXAotCSAgJiYgVEFSR0VUX1NT RV9VTkFMSUdORURfU1RPUkVfT1BUSU1BTCkgXAotCSA/IDE2IDogVU5JVFNfUEVSX1dPUkQpKSkK KyAgKFRBUkdFVF9JTlRFUl9VTklUX01PVkVTX1RPX1ZFQyBcCisgICA/ICgoVEFSR0VUX0FWWDUx MkYgJiYgIVRBUkdFVF9QUkVGRVJfQVZYMjU2KSBcCisgICAgICA/IDY0IFwKKyAgICAgIDogKChU QVJHRVRfQVZYIFwKKwkgICYmICFUQVJHRVRfUFJFRkVSX0FWWDEyOCBcCisJICAmJiAhVEFSR0VU X0FWWDI1Nl9TUExJVF9VTkFMSUdORURfU1RPUkUpIFwKKwkgID8gMzIgXAorCSAgOiAoKFRBUkdF VF9TU0UyIFwKKwkgICAgICAmJiBUQVJHRVRfU1NFX1VOQUxJR05FRF9TVE9SRV9PUFRJTUFMKSBc CisJICAgICAgPyAxNiA6IFVOSVRTX1BFUl9XT1JEKSkpIFwKKyAgIDogVU5JVFNfUEVSX1dPUkQp CiAKIC8qIElmIGEgbWVtb3J5LXRvLW1lbW9yeSBtb3ZlIHdvdWxkIHRha2UgTU9WRV9SQVRJTyBv ciBtb3JlIHNpbXBsZQogICAgbW92ZS1pbnN0cnVjdGlvbiBwYWlycywgd2Ugd2lsbCBkbyBhIGNw eW1lbSBvciBsaWJjYWxsIGluc3RlYWQuCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9wcjEwMTc0MmEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By MTAxNzQyYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42N2VhNDA1 ODdkZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By MTAxNzQyYS5jCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8zIC1tdHVuZT1uYW5vLXgyIiB9ICovCisKK2ludCBu MjsKKworX19hdHRyaWJ1dGVfXyAoKHNpbWQpKSBjaGFyCit3NyAodm9pZCkKK3sKKyAgc2hvcnQg aW50IHhiID0gbjI7CisgIGludCBxcDsKKworICBmb3IgKHFwID0gMDsgcXAgPCAyOyArK3FwKQor ICAgIHhiID0geGIgPCAxOworCisgIHJldHVybiB4YjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTAxNzQyYi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHIxMDE3NDJiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmJhMTkwNjQwNzdiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHIxMDE3NDJiLmMKQEAgLTAsMCArMSw0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtbXR1bmU9bmFuby14MiAtbXR1 bmUtY3RybD1zc2VfdW5hbGlnbmVkX3N0b3JlX29wdGltYWwiIH0gKi8KKworI2luY2x1ZGUgInBy MTAxNzQyYS5jIgotLSAKMi4zMS4xCgo= --000000000000b331af05c8bbdc91--