From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id F3AF13858D39 for ; Sun, 26 Dec 2021 13:11:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F3AF13858D39 Received: by mail-pg1-x52f.google.com with SMTP id 200so11422990pgg.3 for ; Sun, 26 Dec 2021 05:11:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=5v607BftS5yuiSTCRYGhiJ6NT6CmOoQCEWe4M2hgjHM=; b=ujoJ0HbP5VM7+g6vxmua2wBSr3hufbsU7Q5QpiLq6PPTQxc6GzGOi/UlxSdUa3NgVP sLf0Alrn1JCr67bdFZkYJagsRTp1PMZA6FFi41CpwsAmiq+1XvkJmIJyavtzgQA8vrXm WjzKttBJKuuARJDcI/WH7113TtdB8IA9Lu1GTW0Cx2jm9cZnr0mgw04HmyskISgasLLx eb7+IQKYNE2JtuRuyNjeEks4h9hO2mQLCelyvrzF5wDQa0sap4/ae3gs2tMFnojo6ekk i94o0iUxo4yWn3hMHfqF8MxIb48AbMKVzMab7zhHrTEpraiWLJkllw4hgFcFMLPiqIfG Dhqw== X-Gm-Message-State: AOAM5313lzHQnAqzEwrApLLFCt2X8QdcUwuQEAt/BXcT6kciayCR/Nwu M0Xv312zJCZJ4pJUpQz6IccQS/sH6vGjXBbAnRw= X-Google-Smtp-Source: ABdhPJyMKI55ygOGrCWZ5lLgP8t6V+akqnAA84Mps6C37zIHJLkdIyyRdwDUy6FNtj4Q4Q8sDUvgowH9aAuBkkJybEo= X-Received: by 2002:a63:e50b:: with SMTP id r11mr12025036pgh.210.1640524315833; Sun, 26 Dec 2021 05:11:55 -0800 (PST) MIME-Version: 1.0 References: <20211225142853.154884-1-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Sun, 26 Dec 2021 05:11:19 -0800 Message-ID: Subject: Re: [PATCH v3] i386: Check AX input in any_mul_highpart peepholes To: Uros Bizjak Cc: "gcc-patches@gcc.gnu.org" , Roger Sayle Content-Type: multipart/mixed; boundary="00000000000017a0d505d40c55d6" X-Spam-Status: No, score=-3028.7 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: Sun, 26 Dec 2021 13:11:59 -0000 --00000000000017a0d505d40c55d6 Content-Type: text/plain; charset="UTF-8" On Sun, Dec 26, 2021 at 2:31 AM Uros Bizjak wrote: > > On Sat, Dec 25, 2021 at 3:28 PM H.J. Lu wrote: > > > > When applying peephole optimization to transform > > > > mov imm, %reg0 > > mov %reg1, %AX_REG > > imul %reg0 > > > > to > > > > mov imm, %AX_REG > > imul %reg1 > > > > disable peephole optimization if reg1 == AX_REG. > > > > gcc/ > > > > PR bootstrap/103785 > > * config/i386/i386.md: Swap operand order in comments and check > > AX input in any_mul_highpart peepholes. > > > > gcc/testsuite/ > > > > PR bootstrap/103785 > > * gcc.target/i386/pr103785.c: New test. > > --- > > gcc/config/i386/i386.md | 9 ++++-- > > gcc/testsuite/gcc.target/i386/pr103785.c | 38 ++++++++++++++++++++++++ > > 2 files changed, 44 insertions(+), 3 deletions(-) > > create mode 100644 gcc/testsuite/gcc.target/i386/pr103785.c > > > > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > > index 284b9507466..1c1ec227f71 100644 > > --- a/gcc/config/i386/i386.md > > +++ b/gcc/config/i386/i386.md > > @@ -8578,7 +8578,7 @@ > > (set_attr "mode" "SI")]) > > > > ;; Highpart multiplication peephole2s to tweak register allocation. > > -;; mov %rdx,imm; mov %rax,%rdi; imulq %rdx -> mov %rax,imm; imulq %rdi > > +;; mov imm,%rdx; mov %rdi,%rax; imulq %rdx -> mov imm,%rax; imulq %rdi > > (define_peephole2 > > [(set (match_operand:SWI48 0 "general_reg_operand") > > (match_operand:SWI48 1 "immediate_operand")) > > @@ -8588,7 +8588,8 @@ > > (any_mul_highpart:SWI48 (match_dup 2) (match_dup 0))) > > (clobber (match_dup 2)) > > (clobber (reg:CC FLAGS_REG))])] > > - "REGNO (operands[0]) != REGNO (operands[2]) > > + "REGNO (operands[3]) != AX_REG > > + && REGNO (operands[0]) != REGNO (operands[2]) > > && REGNO (operands[0]) != REGNO (operands[3]) > > && (REGNO (operands[0]) == REGNO (operands[4]) > > || peep2_reg_dead_p (3, operands[0]))" > > @@ -8608,7 +8609,9 @@ > > (any_mul_highpart:SI (match_dup 2) (match_dup 0)))) > > (clobber (match_dup 2)) > > (clobber (reg:CC FLAGS_REG))])] > > - "REGNO (operands[0]) != REGNO (operands[2]) > > + "REGNO (operands[3]) != AX_REG > > Please also add TARGET_64BIT here, this DImode zero-extend pattern > applies to 64bit targets only. > > OK with the above change. This is the patch I am checking in. Thanks. > Thanks, > Uros. > > > + && REGNO (operands[0]) != REGNO (operands[2]) > > + && REGNO (operands[2]) != REGNO (operands[3]) > > && REGNO (operands[0]) != REGNO (operands[3]) > > && (REGNO (operands[0]) == REGNO (operands[4]) > > || peep2_reg_dead_p (3, operands[0]))" > > diff --git a/gcc/testsuite/gcc.target/i386/pr103785.c b/gcc/testsuite/gcc.target/i386/pr103785.c > > new file mode 100644 > > index 00000000000..5503b965256 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/i386/pr103785.c > > @@ -0,0 +1,38 @@ > > +/* { dg-do run } */ > > +/* { dg-options "-O2" } */ > > + > > +#include > > + > > +struct wrapper_t > > +{ > > + long k; > > + long e; > > +}; > > + > > +struct wrapper_t **table; > > + > > +__attribute__ ((weak, regparm (2))) > > +void > > +update (long k, long e) > > +{ > > + struct wrapper_t *elmt; > > + > > + elmt = table[k % 3079]; > > + if (elmt == 0) > > + return; > > + elmt->e = e; > > +} > > + > > +int > > +main () > > +{ > > + table = (struct wrapper_t **) malloc (20 * sizeof (struct wrapper_t *)); > > + for (int i = 0; i < 20; i++) > > + table[i] = (struct wrapper_t *) calloc (sizeof (struct wrapper_t), 1); > > + if (table[10]->e != 0) > > + abort (); > > + update (10, 20); > > + if (table[10]->e != 20) > > + abort (); > > + return 0; > > +} > > -- > > 2.33.1 > > -- H.J. --00000000000017a0d505d40c55d6 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-i386-Check-AX-input-in-any_mul_highpart-peepholes.patch" Content-Disposition: attachment; filename="0001-i386-Check-AX-input-in-any_mul_highpart-peepholes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxn9r9jm0 RnJvbSA1MzMwMGIwNTY0NGM5Y2MwZWQ0MDY3ZDExMjgxMThlOThhMzU4NGQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjQgRGVjIDIwMjEgMTI6NTA6MjEgLTA4MDAKU3ViamVjdDogW1BBVENIXSBpMzg2OiBD aGVjayBBWCBpbnB1dCBpbiBhbnlfbXVsX2hpZ2hwYXJ0IHBlZXBob2xlcwoKV2hlbiBhcHBseWlu ZyBwZWVwaG9sZSBvcHRpbWl6YXRpb24gdG8gdHJhbnNmb3JtCgoJbW92IGltbSwgJXJlZzAKCW1v diAlcmVnMSwgJUFYX1JFRwoJaW11bCAlcmVnMAoKdG8KCgltb3YgaW1tLCAlQVhfUkVHCglpbXVs ICVyZWcxCgpkaXNhYmxlIHBlZXBob2xlIG9wdGltaXphdGlvbiBpZiByZWcxID09IEFYX1JFRy4K CmdjYy8KCglQUiB0YXJnZXQvMTAzNzg1CgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IFN3YXAgb3Bl cmFuZCBvcmRlciBpbiBjb21tZW50cyBhbmQgY2hlY2sKCUFYIGlucHV0IGluIGFueV9tdWxfaGln aHBhcnQgcGVlcGhvbGVzLgoKZ2NjL3Rlc3RzdWl0ZS8KCglQUiB0YXJnZXQvMTAzNzg1CgkqIGdj Yy50YXJnZXQvaTM4Ni9wcjEwMzc4NS5jOiBOZXcgdGVzdC4KLS0tCiBnY2MvY29uZmlnL2kzODYv aTM4Ni5tZCAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLQogZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHIxMDM3ODUuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTAzNzg1LmMKCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1k CmluZGV4IDI4NGI5NTA3NDY2Li5lZWE1ZDVkM2YwMSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9p Mzg2L2kzODYubWQKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKQEAgLTg1NzgsNyArODU3 OCw3IEBACiAgICAoc2V0X2F0dHIgIm1vZGUiICJTSSIpXSkKIAogOzsgSGlnaHBhcnQgbXVsdGlw bGljYXRpb24gcGVlcGhvbGUycyB0byB0d2VhayByZWdpc3RlciBhbGxvY2F0aW9uLgotOzsgbW92 ICVyZHgsaW1tOyBtb3YgJXJheCwlcmRpOyBpbXVscSAlcmR4ICAtPiAgbW92ICVyYXgsaW1tOyBp bXVscSAlcmRpCis7OyBtb3YgaW1tLCVyZHg7IG1vdiAlcmRpLCVyYXg7IGltdWxxICVyZHggIC0+ ICBtb3YgaW1tLCVyYXg7IGltdWxxICVyZGkKIChkZWZpbmVfcGVlcGhvbGUyCiAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlNXSTQ4IDAgImdlbmVyYWxfcmVnX29wZXJhbmQiKQogCShtYXRjaF9vcGVy YW5kOlNXSTQ4IDEgImltbWVkaWF0ZV9vcGVyYW5kIikpCkBAIC04NTg4LDcgKzg1ODgsOCBAQAog CQkgICAoYW55X211bF9oaWdocGFydDpTV0k0OCAobWF0Y2hfZHVwIDIpIChtYXRjaF9kdXAgMCkp KQogCSAgICAgIChjbG9iYmVyIChtYXRjaF9kdXAgMikpCiAJICAgICAgKGNsb2JiZXIgKHJlZzpD QyBGTEFHU19SRUcpKV0pXQotICAiUkVHTk8gKG9wZXJhbmRzWzBdKSAhPSBSRUdOTyAob3BlcmFu ZHNbMl0pCisgICJSRUdOTyAob3BlcmFuZHNbM10pICE9IEFYX1JFRworICAgJiYgUkVHTk8gKG9w ZXJhbmRzWzBdKSAhPSBSRUdOTyAob3BlcmFuZHNbMl0pCiAgICAmJiBSRUdOTyAob3BlcmFuZHNb MF0pICE9IFJFR05PIChvcGVyYW5kc1szXSkKICAgICYmIChSRUdOTyAob3BlcmFuZHNbMF0pID09 IFJFR05PIChvcGVyYW5kc1s0XSkKICAgICAgICB8fCBwZWVwMl9yZWdfZGVhZF9wICgzLCBvcGVy YW5kc1swXSkpIgpAQCAtODYwOCw3ICs4NjA5LDEwIEBACiAJCSAgICAgKGFueV9tdWxfaGlnaHBh cnQ6U0kgKG1hdGNoX2R1cCAyKSAobWF0Y2hfZHVwIDApKSkpCiAJICAgICAgKGNsb2JiZXIgKG1h dGNoX2R1cCAyKSkKIAkgICAgICAoY2xvYmJlciAocmVnOkNDIEZMQUdTX1JFRykpXSldCi0gICJS RUdOTyAob3BlcmFuZHNbMF0pICE9IFJFR05PIChvcGVyYW5kc1syXSkKKyAgIlRBUkdFVF82NEJJ VAorICAgJiYgUkVHTk8gKG9wZXJhbmRzWzNdKSAhPSBBWF9SRUcKKyAgICYmIFJFR05PIChvcGVy YW5kc1swXSkgIT0gUkVHTk8gKG9wZXJhbmRzWzJdKQorICAgJiYgUkVHTk8gKG9wZXJhbmRzWzJd KSAhPSBSRUdOTyAob3BlcmFuZHNbM10pCiAgICAmJiBSRUdOTyAob3BlcmFuZHNbMF0pICE9IFJF R05PIChvcGVyYW5kc1szXSkKICAgICYmIChSRUdOTyAob3BlcmFuZHNbMF0pID09IFJFR05PIChv cGVyYW5kc1s0XSkKICAgICAgICB8fCBwZWVwMl9yZWdfZGVhZF9wICgzLCBvcGVyYW5kc1swXSkp IgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDM3ODUuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTAzNzg1LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU1MDNiOTY1MjU2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDM3ODUuYwpAQCAtMCwwICsxLDM4IEBA CisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCisjaW5j bHVkZSA8c3RkbGliLmg+CisKK3N0cnVjdCB3cmFwcGVyX3QKK3sKKyAgbG9uZyBrOworICBsb25n IGU7Cit9OworCitzdHJ1Y3Qgd3JhcHBlcl90ICoqdGFibGU7CisKK19fYXR0cmlidXRlX18gKCh3 ZWFrLCByZWdwYXJtICgyKSkpCit2b2lkCit1cGRhdGUgKGxvbmcgaywgbG9uZyBlKQoreworICBz dHJ1Y3Qgd3JhcHBlcl90ICplbG10OworCisgIGVsbXQgPSB0YWJsZVtrICUgMzA3OV07CisgIGlm IChlbG10ID09IDApCisgICAgcmV0dXJuOworICBlbG10LT5lID0gZTsKK30KKworaW50CittYWlu ICgpCit7CisgIHRhYmxlID0gKHN0cnVjdCB3cmFwcGVyX3QgKiopIG1hbGxvYyAoMjAgKiBzaXpl b2YgKHN0cnVjdCB3cmFwcGVyX3QgKikpOworICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyBpKysp CisgICAgdGFibGVbaV0gPSAoc3RydWN0IHdyYXBwZXJfdCAqKSBjYWxsb2MgKHNpemVvZiAoc3Ry dWN0IHdyYXBwZXJfdCksIDEpOworICBpZiAodGFibGVbMTBdLT5lICE9IDApCisgICAgYWJvcnQg KCk7CisgIHVwZGF0ZSAoMTAsIDIwKTsKKyAgaWYgKHRhYmxlWzEwXS0+ZSAhPSAyMCkKKyAgICBh Ym9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9Ci0tIAoyLjMzLjEKCg== --00000000000017a0d505d40c55d6--