From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by sourceware.org (Postfix) with ESMTPS id C6B37385840C for ; Mon, 24 Oct 2022 20:02:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C6B37385840C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lf1-x132.google.com with SMTP id g12so7949196lfh.3 for ; Mon, 24 Oct 2022 13:02:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ivYwAkhNakdwfzNJuIhdVDJpsT4e0rQgG69NWAAUyMA=; b=UdA26gP2u5gXA/JqNbKAnElLOjhTdR6bSDP5wulhyKd6/oAzs1rffnbrmucRLH5Xoz NLK0H5KJtb5SzOo+Naz7uaA8nN01iHLdACqV+2kh+xTQmOgyGlJqqavvZjEAfukQmjeG MQMTT9AGfUsXcmFSBS+PaCcyiof//2rrXdt8bAd4x121rz546NYFJ5KmiqfR8gyMXr4O 3Q4M9GTtWM9qGRF5Di7xdpjRajazPbXENdYZon+0rmzwc6Ob8MMlIqv+80eykh9YDgyJ 8V9SyaVDTPk03NveWsBMSYQ5XNAZbhNYKuigIBGshJhZWIQCBdEjpnE9LC1MXdLS3Hx9 UorA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ivYwAkhNakdwfzNJuIhdVDJpsT4e0rQgG69NWAAUyMA=; b=YzU3lC+dsjSGZ4a8WcllRdN38fRNrOiZAU+cmi4MimFIXXTkQsrGEY2vMYWO4XHtME pyYIMmJh8rAijq2piTftNeq8paQwJ2HAgzp7Ge4QI5pwKdojN9RDYAw6pvrm2c6wl2Q8 zJou9XV0EVH+FOS+3nczc07V4rPq+pa2djgHKOmiStgWrwJxnFHQ/kmq8mY7Qao80wYI C4XsOdWnozTv+8/3LseaONsHmUYeeEG16MQ+DOzO9Rpus0hSMoQrkrwMB391z7Ur6zYq win2VdyVMKEA+ZMGLw/OTBYWV/awGWTi7beqfCHbcbmMXRTYkejmjo4Rq8RWvc2y5Hwy oOaw== X-Gm-Message-State: ACrzQf1fW/7w1iw34LvuGageNh4JmjojkKsob8g5vFgyohk+Nd5l1FTi HV2JiqfzuwxQN/GTzCs5F3vb15rwQNKh9LYUuhg= X-Google-Smtp-Source: AMsMyM5/s7s6tSUb64OvGBofsIBzzEq9DzMzmLM1ucFtdll72sQCXsnC2KjE+crG/vBrjLPKXpjZ9NX0luV+PXFdl5A= X-Received: by 2002:ac2:5475:0:b0:4a2:4f8f:f01d with SMTP id e21-20020ac25475000000b004a24f8ff01dmr11990308lfn.386.1666641747182; Mon, 24 Oct 2022 13:02:27 -0700 (PDT) MIME-Version: 1.0 References: <20221020165734.1113688-1-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Mon, 24 Oct 2022 13:01:50 -0700 Message-ID: Subject: [PATCH v2] Always use TYPE_MODE instead of DECL_MODE for vector field To: Richard Biener Cc: Jakub Jelinek , GCC Patches Content-Type: multipart/mixed; boundary="0000000000004f42e205ebcd4514" X-Spam-Status: No, score=-3023.4 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000004f42e205ebcd4514 Content-Type: text/plain; charset="UTF-8" On Mon, Oct 24, 2022 at 12:12 AM Richard Biener wrote: > > On Fri, Oct 21, 2022 at 6:18 PM H.J. Lu wrote: > > > > On Fri, Oct 21, 2022 at 2:33 AM Richard Biener > > wrote: > > > > > > On Thu, Oct 20, 2022 at 6:58 PM H.J. Lu via Gcc-patches > > > wrote: > > > > > > > > commit e034c5c895722e0092d2239cd8c2991db77d6d39 > > > > Author: Jakub Jelinek > > > > Date: Sat Dec 2 08:54:47 2017 +0100 > > > > > > > > PR target/78643 > > > > PR target/80583 > > > > * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield > > > > is BLKmode for vector field with vector raw mode, use TYPE_MODE > > > > instead of DECL_MODE. > > > > > > > > fixed the case where DECL_MODE of a vector field is BLKmode and its > > > > TYPE_MODE is a vector mode because of target attribute. Remove the > > > > BLKmode check for the case where DECL_MODE of a vector field is a vector > > > > mode and its TYPE_MODE is BLKmode because of target attribute. > > > > > > > > gcc/ > > > > > > > > PR target/107304 > > > > * expr.c (get_inner_reference): Always use TYPE_MODE for vector > > > > field with vector raw mode. > > > > > > > > gcc/testsuite/ > > > > > > > > PR target/107304 > > > > * gcc.target/i386/pr107304.c: New test. > > > > --- > > > > gcc/expr.cc | 3 +- > > > > gcc/testsuite/gcc.target/i386/pr107304.c | 39 ++++++++++++++++++++++++ > > > > 2 files changed, 40 insertions(+), 2 deletions(-) > > > > create mode 100644 gcc/testsuite/gcc.target/i386/pr107304.c > > > > > > > > diff --git a/gcc/expr.cc b/gcc/expr.cc > > > > index efe387e6173..9145193c2c1 100644 > > > > --- a/gcc/expr.cc > > > > +++ b/gcc/expr.cc > > > > @@ -7905,8 +7905,7 @@ get_inner_reference (tree exp, poly_int64_pod *pbitsize, > > > > /* For vector fields re-check the target flags, as DECL_MODE > > > > could have been set with different target flags than > > > > the current function has. */ > > > > - if (mode == BLKmode > > > > - && VECTOR_TYPE_P (TREE_TYPE (field)) > > > > + if (VECTOR_TYPE_P (TREE_TYPE (field)) > > > > && VECTOR_MODE_P (TYPE_MODE_RAW (TREE_TYPE (field)))) > > > > > > Isn't the check on TYPE_MODE_RAW also wrong then? Btw, the mode could > > > > TYPE_MODE_RAW is always set to a vector mode for a vector type: > > > > /* Find an appropriate mode for the vector type. */ > > if (TYPE_MODE (type) == VOIDmode) > > SET_TYPE_MODE (type, > > mode_for_vector (SCALAR_TYPE_MODE (innertype), > > nunits).else_blk ()); > > But mode_for_vector can return a MODE_INT! You are right. > /* For integers, try mapping it to a same-sized scalar mode. */ > if (GET_MODE_CLASS (innermode) == MODE_INT) > { > poly_uint64 nbits = nunits * GET_MODE_BITSIZE (innermode); > if (int_mode_for_size (nbits, 0).exists (&mode) > && have_regs_of_mode[mode]) > return mode; > > > But TYPE_MODE returns BLKmode if the vector mode is unsupported. > > > > > also be an integer mode. > > > > For a vector field, mode is either BLK mode or the vector mode. Jakub, > > can you comment on it? > > I think that for > > typedef int v2si __attribute__((vector_size(8))); > > struct X { int i; v2si j; }; > > v2si should get DImode with -mno-sse? > Currently GCC generates (insn 31 32 33 (set (subreg:DI (reg:V2SI 105) 0) (reg:DI 84 [ _3 ])) "y2.c":12:11 -1 (nil)) With my patch, v2si gets DImode directly without SUBREG. Here is the v2 patch with the update commit message: Remove the BLKmode check for the case where DECL_MODE of a vector field is a vector mode and its TYPE_MODE isn't a vector mode because of target attribute. OK for master? Thanks. -- H.J. --0000000000004f42e205ebcd4514 Content-Type: application/x-patch; name="v2-0001-Always-use-TYPE_MODE-instead-of-DECL_MODE-for-vec.patch" Content-Disposition: attachment; filename="v2-0001-Always-use-TYPE_MODE-instead-of-DECL_MODE-for-vec.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l9n7d3a10 RnJvbSAyNTk5NTU0OWQ1NDFhYzMwZjE3ZDI4ZDUxZDUzNDgzMjk4ZmE3NGUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTkgT2N0IDIwMjIgMTI6NTM6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIIHYyXSBBbHdh eXMgdXNlIFRZUEVfTU9ERSBpbnN0ZWFkIG9mIERFQ0xfTU9ERSBmb3IgdmVjdG9yIGZpZWxkCgpj b21taXQgZTAzNGM1Yzg5NTcyMmUwMDkyZDIyMzljZDhjMjk5MWRiNzdkNmQzOQpBdXRob3I6IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+CkRhdGU6ICAgU2F0IERlYyAyIDA4OjU0OjQ3 IDIwMTcgKzAxMDAKCglQUiB0YXJnZXQvNzg2NDMKCVBSIHRhcmdldC84MDU4MwoJKiBleHByLmMg KGdldF9pbm5lcl9yZWZlcmVuY2UpOiBJZiBERUNMX01PREUgb2YgYSBub24tYml0ZmllbGQKCWlz IEJMS21vZGUgZm9yIHZlY3RvciBmaWVsZCB3aXRoIHZlY3RvciByYXcgbW9kZSwgdXNlIFRZUEVf TU9ERQoJaW5zdGVhZCBvZiBERUNMX01PREUuCgpmaXhlZCB0aGUgY2FzZSB3aGVyZSBERUNMX01P REUgb2YgYSB2ZWN0b3IgZmllbGQgaXMgQkxLbW9kZSBhbmQgaXRzClRZUEVfTU9ERSBpcyBhIHZl Y3RvciBtb2RlIGJlY2F1c2Ugb2YgdGFyZ2V0IGF0dHJpYnV0ZS4gIFJlbW92ZSB0aGUKQkxLbW9k ZSBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlcmUgREVDTF9NT0RFIG9mIGEgdmVjdG9yIGZpZWxkIGlz IGEgdmVjdG9yCm1vZGUgYW5kIGl0cyBUWVBFX01PREUgaXNuJ3QgYSB2ZWN0b3IgbW9kZSBiZWNh dXNlIG9mIHRhcmdldCBhdHRyaWJ1dGUuCgpnY2MvCgoJUFIgdGFyZ2V0LzEwNzMwNAoJKiBleHBy LmMgKGdldF9pbm5lcl9yZWZlcmVuY2UpOiBBbHdheXMgdXNlIFRZUEVfTU9ERSBmb3IgdmVjdG9y CglmaWVsZCB3aXRoIHZlY3RvciByYXcgbW9kZS4KCmdjYy90ZXN0c3VpdGUvCgoJUFIgdGFyZ2V0 LzEwNzMwNAoJKiBnY2MudGFyZ2V0L2kzODYvcHIxMDczMDQuYzogTmV3IHRlc3QuCi0tLQogZ2Nj L2V4cHIuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCiBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjEwNzMwNC5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysr KysrCiAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDczMDQu YwoKZGlmZiAtLWdpdCBhL2djYy9leHByLmNjIGIvZ2NjL2V4cHIuY2MKaW5kZXggZWZlMzg3ZTYx NzMuLjkxNDUxOTNjMmMxIDEwMDY0NAotLS0gYS9nY2MvZXhwci5jYworKysgYi9nY2MvZXhwci5j YwpAQCAtNzkwNSw4ICs3OTA1LDcgQEAgZ2V0X2lubmVyX3JlZmVyZW5jZSAodHJlZSBleHAsIHBv bHlfaW50NjRfcG9kICpwYml0c2l6ZSwKIAkgIC8qIEZvciB2ZWN0b3IgZmllbGRzIHJlLWNoZWNr IHRoZSB0YXJnZXQgZmxhZ3MsIGFzIERFQ0xfTU9ERQogCSAgICAgY291bGQgaGF2ZSBiZWVuIHNl dCB3aXRoIGRpZmZlcmVudCB0YXJnZXQgZmxhZ3MgdGhhbgogCSAgICAgdGhlIGN1cnJlbnQgZnVu Y3Rpb24gaGFzLiAgKi8KLQkgIGlmIChtb2RlID09IEJMS21vZGUKLQkgICAgICAmJiBWRUNUT1Jf VFlQRV9QIChUUkVFX1RZUEUgKGZpZWxkKSkKKwkgIGlmIChWRUNUT1JfVFlQRV9QIChUUkVFX1RZ UEUgKGZpZWxkKSkKIAkgICAgICAmJiBWRUNUT1JfTU9ERV9QIChUWVBFX01PREVfUkFXIChUUkVF X1RZUEUgKGZpZWxkKSkpKQogCSAgICBtb2RlID0gVFlQRV9NT0RFIChUUkVFX1RZUEUgKGZpZWxk KSk7CiAJfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDcz MDQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTA3MzA0LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0ZDY4Nzk1ZTdmCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDczMDQuYwpAQCAtMCwwICsx LDM5IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzAgLW1h cmNoPXRpZ2VybGFrZSIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3R5cGVkZWYgdW5p b24geworICB1aW50OF90IHYgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyNTYpKSkgX19hdHRyaWJ1 dGVfXyAoKHZlY3Rvcl9zaXplKDY0ICogc2l6ZW9mKHVpbnQ4X3QpKSkpOworICB1aW50OF90IGlb NjRdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMjU2KSkpOworfSBzdHJlc3NfdmVjX3U4XzY0X3Q7 CisKK3R5cGVkZWYgc3RydWN0IHsKKyBzdHJ1Y3QgeworICBzdHJlc3NfdmVjX3U4XzY0X3QgczsK KyAgc3RyZXNzX3ZlY191OF82NF90IG87CisgIHN0cmVzc192ZWNfdThfNjRfdCBtYXNrMTsKKyAg c3RyZXNzX3ZlY191OF82NF90IG1hc2syOworIH0gdThfNjQ7Cit9IHN0cmVzc192ZWNfZGF0YV90 OworCitfX2F0dHJpYnV0ZV9fKCh0YXJnZXRfY2xvbmVzKCJhcmNoPWFsZGVybGFrZSIsICJkZWZh dWx0IikpKSAKK3ZvaWQKK3N0cmVzc192ZWNzaHVmX3U4XzY0KHN0cmVzc192ZWNfZGF0YV90ICpk YXRhKQoreworICBzdHJlc3NfdmVjX3U4XzY0X3QgKl9fcmVzdHJpY3QgczsKKyAgc3RyZXNzX3Zl Y191OF82NF90ICpfX3Jlc3RyaWN0IG1hc2sxOworICBzdHJlc3NfdmVjX3U4XzY0X3QgKl9fcmVz dHJpY3QgbWFzazI7CisgIHJlZ2lzdGVyIGludCBpOworCisgIHMgPSAmZGF0YS0+dThfNjQuczsK KyAgbWFzazEgPSAmZGF0YS0+dThfNjQubWFzazE7CisgIG1hc2syID0gJmRhdGEtPnU4XzY0Lm1h c2syOworCisgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewkvKiB3YXMgaSA8IDY1NTM2ICov CisgICAgICBzdHJlc3NfdmVjX3U4XzY0X3QgdG1wOworCisgICAgICB0bXAudiA9IF9fYnVpbHRp bl9zaHVmZmxlKHMtPnYsIG1hc2sxLT52KTsKKyAgICAgIHMtPnYgPSBfX2J1aWx0aW5fc2h1ZmZs ZSh0bXAudiwgbWFzazItPnYpOworICB9Cit9Ci0tIAoyLjM3LjMKCg== --0000000000004f42e205ebcd4514--