From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id B8E2E385DC22 for ; Mon, 7 Jun 2021 18:10:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B8E2E385DC22 Received: by mail-ed1-x52f.google.com with SMTP id w21so21388744edv.3 for ; Mon, 07 Jun 2021 11:10:46 -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=ienji2yTpHLLZb3xg1IG15MLT5Z6bNWtM0CjcoIl85Y=; b=tlOrKTaPJzXcRB70Xgn5FnDeMKAaTuNw5pbbknK9bR9lZp9tS0B+wUZdDQbcBF5bID VNSTQN7cD1H2EwER+xdp0SBthdBR2GgqiqbKxd10R1ig3zd5I7tmcyV5/53ryDiFeCyl hgzORZZt94qd9dVeejBrNplZqzhGr3eGJ+w7Pfj5zOZQ9FkiIVxGkSkI2E7VObtf9cv8 zKcZrk+iYyl5AW9QrtIIdWAGFgLWpJhQqhfDCKyOGm7jm+MVqxHWlB/05vZXtMeSyX5d 476WPWCDwPnCXObfYFE9uHSbiTR7ZhhSzD1ijW6w6OcG8FpIuW894OywG8U3ETzwgoOk xUmQ== X-Gm-Message-State: AOAM530kbLSXONFe9VQYMwHXmpAQ7eEZmGXB5w3oplE4SVyOd7UpXhdY KDGoIRKcflng17uKVDWwSWmXrF2wGv7mudnID54= X-Google-Smtp-Source: ABdhPJwmwKqF7VkJ9zoY67wWCvVrkBPIe7fH0ZLk6rQB7vWYnYGt1PbrtJoHT4wwlbPMEz2weIRCoaMv1qwwNdknMTc= X-Received: by 2002:a05:6402:885:: with SMTP id e5mr21662924edy.248.1623089445846; Mon, 07 Jun 2021 11:10:45 -0700 (PDT) MIME-Version: 1.0 References: <20210605151844.470344-1-hjl.tools@gmail.com> <20210605151844.470344-2-hjl.tools@gmail.com> In-Reply-To: From: Richard Biener Date: Mon, 7 Jun 2021 20:10:34 +0200 Message-ID: Subject: Re: [PATCH v2 1/2] Allow vec_duplicate_optab to fail To: "H.J. Lu" Cc: GCC Patches , Uros Bizjak , Jakub Jelinek , Richard Sandiford Content-Type: multipart/mixed; boundary="000000000000dbe6af05c430f5d8" X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, 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: Mon, 07 Jun 2021 18:10:48 -0000 --000000000000dbe6af05c430f5d8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 7, 2021 at 7:59 PM Richard Biener wrote: > > On Mon, Jun 7, 2021 at 4:19 PM H.J. Lu wrote: > > > > On Mon, Jun 7, 2021 at 12:12 AM Richard Sandiford > > wrote: > > > > > > "H.J. Lu" writes: > > > > Update vec_duplicate to allow to fail so that backend can only allo= w > > > > broadcasting an integer constant to a vector when broadcast instruc= tion > > > > is available. > > > > > > I'm not sure why we need this to fail though. Once the optab is defi= ned > > > for target X, the optab should handle all duplicates for target X, > > > even if there are different strategies it can use. > > > > > > AIUI the case you want to make conditional is the constant case. > > > I guess the first question is: why don't we simplify those CONSTRUCTO= Rs > > > to VECTOR_CSTs in gimple? I'm surprised we still see the constant ca= se > > > as a constructor here. > > > > The particular testcase for vec_duplicate is gcc.dg/pr100239.c. > > > > > If we can't rely on that happening, then would it work to change: > > > > > > /* Try using vec_duplicate_optab for uniform vectors. */ > > > if (!TREE_SIDE_EFFECTS (exp) > > > && VECTOR_MODE_P (mode) > > > && eltmode =3D=3D GET_MODE_INNER (mode) > > > && ((icode =3D optab_handler (vec_duplicate_optab, mode)) > > > !=3D CODE_FOR_nothing) > > > && (elt =3D uniform_vector_p (exp))) > > > > > > to something like: > > > > > > /* Try using vec_duplicate_optab for uniform vectors. */ > > > if (!TREE_SIDE_EFFECTS (exp) > > > && VECTOR_MODE_P (mode) > > > && eltmode =3D=3D GET_MODE_INNER (mode) > > > && (elt =3D uniform_vector_p (exp))) > > > { > > > if (TREE_CODE (elt) =3D=3D INTEGER_CST > > > || TREE_CODE (elt) =3D=3D POLY_INT_CST > > > || TREE_CODE (elt) =3D=3D REAL_CST > > > || TREE_CODE (elt) =3D=3D FIXED_CST) > > > { > > > rtx src =3D gen_const_vec_duplicate (mode, expand_nor= mal (node)); > > > emit_move_insn (target, src); > > > break; > > > } > > > =E2=80=A6 > > > } > > > > I will give it a try. > > I can confirm that veclower leaves us with an unfolded constant CTOR. > If you file a PR to remind me I'll fix that. The attached untested patch fixes this for the testcase. Richard. > Richard. > > > Thanks. > > > > -- > > H.J. --000000000000dbe6af05c430f5d8 Content-Type: application/octet-stream; name=p Content-Disposition: attachment; filename=p Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpmxjg4l0 RnJvbSAzYzg5ZWJmY2JlYWFmZGQ5YmJmMzFhMzAwNTkzMzY1ZWI5MjkwNmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+CkRh dGU6IE1vbiwgNyBKdW4gMjAyMSAyMDowODoxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIG1pZGRs ZS1lbmQvIC0gbWFrZSBzdXJlIHRvIGdlbmVyYXRlIFZFQ1RPUl9DU1QgaW4gbG93ZXJpbmcKCldo ZW4gdmVjdG9yIGxvd2VyaW5nIGNyZWF0ZXMgcGllY2V3aXNlIG9wcyBtYWtlIHN1cmUgdG8gY3Jl YXRlClZFQ1RPUl9DU1RzIGluc3RlYWQgb2YgQ09OU1RSVUNUT1JzIHdoZW4gcG9zc2libGUuCgoy MDIxLTA2LTA3ICBSaWNoYXJkIEJpZW5lciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS12 ZWN0LWdlbmVyaWMuYyAoKTogQnVpbGQgYSBWRUNUT1JfQ1NUIGlmIGFsbAoJZWxlbWVudHMgYXJl IGNvbnN0YW50LgotLS0KIGdjYy90cmVlLXZlY3QtZ2VuZXJpYy5jIHwgMzQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmMgYi9n Y2MvdHJlZS12ZWN0LWdlbmVyaWMuYwppbmRleCBkOWMwYWM5ZGU3ZS4uNWYzZjlmYTAwNWUgMTAw NjQ0Ci0tLSBhL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jCisrKyBiL2djYy90cmVlLXZlY3QtZ2Vu ZXJpYy5jCkBAIC0zMjgsMTYgKzMyOCwyMiBAQCBleHBhbmRfdmVjdG9yX3BpZWNld2lzZSAoZ2lt cGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwgZWxlbV9vcF9mdW5jIGYsCiAgIGlmICghcmV0X3R5cGUp CiAgICAgcmV0X3R5cGUgPSB0eXBlOwogICB2ZWNfYWxsb2MgKHYsIChudW5pdHMgKyBkZWx0YSAt IDEpIC8gZGVsdGEpOworICBib29sIGNvbnN0YW50X3AgPSB0cnVlOwogICBmb3IgKGkgPSAwOyBp IDwgbnVuaXRzOwogICAgICAgIGkgKz0gZGVsdGEsIGluZGV4ID0gaW50X2NvbnN0X2Jpbm9wIChQ TFVTX0VYUFIsIGluZGV4LCBwYXJ0X3dpZHRoKSkKICAgICB7CiAgICAgICB0cmVlIHJlc3VsdCA9 IGYgKGdzaSwgaW5uZXJfdHlwZSwgYSwgYiwgaW5kZXgsIHBhcnRfd2lkdGgsIGNvZGUsCiAJCSAg ICAgICByZXRfdHlwZSk7CisgICAgICBpZiAoIUNPTlNUQU5UX0NMQVNTX1AgKHJlc3VsdCkpCisJ Y29uc3RhbnRfcCA9IGZhbHNlOwogICAgICAgY29uc3RydWN0b3JfZWx0IGNlID0ge05VTExfVFJF RSwgcmVzdWx0fTsKICAgICAgIHYtPnF1aWNrX3B1c2ggKGNlKTsKICAgICB9CiAKLSAgcmV0dXJu IGJ1aWxkX2NvbnN0cnVjdG9yIChyZXRfdHlwZSwgdik7CisgIGlmIChjb25zdGFudF9wKQorICAg IHJldHVybiBidWlsZF92ZWN0b3JfZnJvbV9jdG9yIChyZXRfdHlwZSwgdik7CisgIGVsc2UKKyAg ICByZXR1cm4gYnVpbGRfY29uc3RydWN0b3IgKHJldF90eXBlLCB2KTsKIH0KIAogLyogRXhwYW5k IGEgdmVjdG9yIG9wZXJhdGlvbiB0byBzY2FsYXJzIHdpdGggdGhlIGZyZWVkb20gdG8gdXNlCkBA IC0xMTA1LDYgKzExMTEsNyBAQCBleHBhbmRfdmVjdG9yX2NvbmRpdGlvbiAoZ2ltcGxlX3N0bXRf aXRlcmF0b3IgKmdzaSwgYml0bWFwIGRjZV9zc2FfbmFtZXMpCiAKICAgaW50IG51bml0cyA9IG51 bml0c19mb3Jfa25vd25fcGllY2V3aXNlX29wICh0eXBlKTsKICAgdmVjX2FsbG9jICh2LCBudW5p dHMpOworICBib29sIGNvbnN0YW50X3AgPSB0cnVlOwogICBmb3IgKGludCBpID0gMDsgaSA8IG51 bml0czsgaSsrKQogICAgIHsKICAgICAgIHRyZWUgYWEsIHJlc3VsdDsKQEAgLTExMjksNiArMTEz Niw4IEBAIGV4cGFuZF92ZWN0b3JfY29uZGl0aW9uIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3Np LCBiaXRtYXAgZGNlX3NzYV9uYW1lcykKICAgICAgIGVsc2UKIAlhYSA9IHRyZWVfdmVjX2V4dHJh Y3QgKGdzaSwgY29uZF90eXBlLCBhLCB3aWR0aCwgaW5kZXgpOwogICAgICAgcmVzdWx0ID0gZ2lt cGxpZnlfYnVpbGQzIChnc2ksIENPTkRfRVhQUiwgaW5uZXJfdHlwZSwgYWEsIGJiLCBjYyk7Cisg ICAgICBpZiAoIUNPTlNUQU5UX0NMQVNTX1AgKHJlc3VsdCkpCisJY29uc3RhbnRfcCA9IGZhbHNl OwogICAgICAgY29uc3RydWN0b3JfZWx0IGNlID0ge05VTExfVFJFRSwgcmVzdWx0fTsKICAgICAg IHYtPnF1aWNrX3B1c2ggKGNlKTsKICAgICAgIGluZGV4ID0gaW50X2NvbnN0X2Jpbm9wIChQTFVT X0VYUFIsIGluZGV4LCB3aWR0aCk7CkBAIC0xMTM4LDcgKzExNDcsMTAgQEAgZXhwYW5kX3ZlY3Rv cl9jb25kaXRpb24gKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGJpdG1hcCBkY2Vfc3NhX25h bWVzKQogCWNvbXBfaW5kZXggPSBpbnRfY29uc3RfYmlub3AgKFBMVVNfRVhQUiwgY29tcF9pbmRl eCwgY29tcF93aWR0aCk7CiAgICAgfQogCi0gIGNvbnN0ciA9IGJ1aWxkX2NvbnN0cnVjdG9yICh0 eXBlLCB2KTsKKyAgaWYgKGNvbnN0YW50X3ApCisgICAgY29uc3RyID0gYnVpbGRfdmVjdG9yX2Zy b21fY3RvciAodHlwZSwgdik7CisgIGVsc2UKKyAgICBjb25zdHIgPSBidWlsZF9jb25zdHJ1Y3Rv ciAodHlwZSwgdik7CiAgIGdpbXBsZV9hc3NpZ25fc2V0X3Joc19mcm9tX3RyZWUgKGdzaSwgY29u c3RyKTsKICAgdXBkYXRlX3N0bXQgKGdzaV9zdG10ICgqZ3NpKSk7CiAKQEAgLTE1NzgsNiArMTU5 MCw3IEBAIGxvd2VyX3ZlY19wZXJtIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQogICAgICAg ICAgICAgICAidmVjdG9yIHNodWZmbGluZyBvcGVyYXRpb24gd2lsbCBiZSBleHBhbmRlZCBwaWVj ZXdpc2UiKTsKIAogICB2ZWNfYWxsb2MgKHYsIGVsZW1lbnRzKTsKKyAgYm9vbCBjb25zdGFudF9w ID0gdHJ1ZTsKICAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzOyBpKyspCiAgICAgewogICAgICAg c2kgPSBzaXplX2ludCAoaSk7CkBAIC0xNjM5LDEwICsxNjUyLDE1IEBAIGxvd2VyX3ZlY19wZXJt IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQogCSAgICB0ID0gdjBfdmFsOwogICAgICAgICB9 CiAKKyAgICAgIGlmICghQ09OU1RBTlRfQ0xBU1NfUCAodCkpCisJY29uc3RhbnRfcCA9IGZhbHNl OwogICAgICAgQ09OU1RSVUNUT1JfQVBQRU5EX0VMVCAodiwgTlVMTF9UUkVFLCB0KTsKICAgICB9 CiAKLSAgY29uc3RyID0gYnVpbGRfY29uc3RydWN0b3IgKHZlY3RfdHlwZSwgdik7CisgIGlmIChj b25zdGFudF9wKQorICAgIGNvbnN0ciA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX2N0b3IgKHZlY3RfdHlw ZSwgdik7CisgIGVsc2UKKyAgICBjb25zdHIgPSBidWlsZF9jb25zdHJ1Y3RvciAodmVjdF90eXBl LCB2KTsKICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzX2Zyb21fdHJlZSAoZ3NpLCBjb25zdHIpOwog ICB1cGRhdGVfc3RtdCAoZ3NpX3N0bXQgKCpnc2kpKTsKIH0KQEAgLTIwMTQsNiArMjAzMiw3IEBA IGV4cGFuZF92ZWN0b3JfY29udmVyc2lvbiAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSkKIAkJ fQogCiAJICAgICAgdmVjX2FsbG9jICh2LCAobnVuaXRzICsgZGVsdGEgLSAxKSAvIGRlbHRhICog Mik7CisJICAgICAgYm9vbCBjb25zdGFudF9wID0gdHJ1ZTsKIAkgICAgICBmb3IgKGkgPSAwOyBp IDwgbnVuaXRzOwogCQkgICBpICs9IGRlbHRhLCBpbmRleCA9IGludF9jb25zdF9iaW5vcCAoUExV U19FWFBSLCBpbmRleCwKIAkJCQkJCQlwYXJ0X3dpZHRoKSkKQEAgLTIwMjQsMTIgKzIwNDMsMTkg QEAgZXhwYW5kX3ZlY3Rvcl9jb252ZXJzaW9uIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQog CQkJCQkgIGluZGV4KTsKIAkJICB0cmVlIHJlc3VsdCA9IGdpbXBsaWZ5X2J1aWxkMSAoZ3NpLCBj b2RlMSwgY3JldGRfdHlwZSwgYSk7CiAJCSAgY29uc3RydWN0b3JfZWx0IGNlID0geyBOVUxMX1RS RUUsIHJlc3VsdCB9OworCQkgIGlmICghQ09OU1RBTlRfQ0xBU1NfUCAoY2UudmFsdWUpKQorCQkg ICAgY29uc3RhbnRfcCA9IGZhbHNlOwogCQkgIHYtPnF1aWNrX3B1c2ggKGNlKTsKIAkJICBjZS52 YWx1ZSA9IGdpbXBsaWZ5X2J1aWxkMSAoZ3NpLCBjb2RlMiwgY3JldGRfdHlwZSwgYSk7CisJCSAg aWYgKCFDT05TVEFOVF9DTEFTU19QIChjZS52YWx1ZSkpCisJCSAgICBjb25zdGFudF9wID0gZmFs c2U7CiAJCSAgdi0+cXVpY2tfcHVzaCAoY2UpOwogCQl9CiAKLQkgICAgICBuZXdfcmhzID0gYnVp bGRfY29uc3RydWN0b3IgKHJldF90eXBlLCB2KTsKKwkgICAgICBpZiAoY29uc3RhbnRfcCkKKwkJ bmV3X3JocyA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX2N0b3IgKHJldF90eXBlLCB2KTsKKwkgICAgICBl bHNlCisJCW5ld19yaHMgPSBidWlsZF9jb25zdHJ1Y3RvciAocmV0X3R5cGUsIHYpOwogCSAgICAg IGcgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChsaHMsIG5ld19yaHMpOwogCSAgICAgIGdzaV9yZXBs YWNlIChnc2ksIGcsIGZhbHNlKTsKIAkgICAgICByZXR1cm47Ci0tIAoyLjE3LjEKCg== --000000000000dbe6af05c430f5d8--