From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by sourceware.org (Postfix) with ESMTPS id 9383D3854810 for ; Fri, 21 Oct 2022 09:33:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9383D3854810 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-ed1-x533.google.com with SMTP id a67so3542404edf.12 for ; Fri, 21 Oct 2022 02:33: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=326o92j9W+iZXR6u+te5JVSz4VddDM3gDb1YoVFOfuE=; b=Ru1sb0TW6+xp6t2lfcLhwWQTZOQhmuNopjs6k9v9I3xsGKKu7cctnBwOh+UHHwpCHO XW3qFqbsL/vqVcYHoTT6TwYR6PejiLnMLkiLpQs17nNWCOlB2YIvxHmG4q4DW7GFuYKo 0RrzgeNuTv5m/myTUBYL+E7z2l0FEZFtXr57MO6GbQkpPFbVToYn6xxTZNO0t0GAfNGV JYfryOlWh1QZQ0r7ryoPGJwH2d7Uw2pRLpU9ESsAclQK5aNlc5J/HHYKzn75CosHJytE xAog/8G1KUIrut0nwhPavT0leAhwQYPNXHeArcWKeKi7gwlvsc4wzs8ggUEL2pe0LwDj WuFg== 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=326o92j9W+iZXR6u+te5JVSz4VddDM3gDb1YoVFOfuE=; b=jvmrTVFVLQ2gwl+4Z+vEIZczLbX2AqoOY6g8b6kK9m5k7oThTjKj+pz6ZzxPA9lCRv /lIxlNcmfyVpdp+RR2mGxj7mupmh5P5PG3vTu+pPsERcpK0n51YbkOl2cZtb+p4mDeT6 ozfII2hMJI3Z2wGMIVmw2RPbt7Ebjx/QpQVu7R50GamG9xw2SRMV6Ln0TpftMv1z+MQL P+2/PuRP69O01f5Q+gZWBTQm9EmC1S3PVVsrQFIWFBvKZ3N3LS3K2mXm40OPcv7MIPKL 1Z63oQzxXp+Ek00TVIx6XAb6wHyQBir1sJxLtr6WJ8pZokH2A9qTeqGrvT1Eop+ImfKG 5PGQ== X-Gm-Message-State: ACrzQf2cD4p7+LoDXDtqNVPM2k/N7kb3sbX3XZ/jCoS08Gq1FIorsccx YJiR9bwuC1IBDDRKiyr8LRYB0vaiCxpXWETNLY8= X-Google-Smtp-Source: AMsMyM7I9MaauvPVDy/W4JY3z7fyzJk6f4DhWU1gp2XvCsyHgAe9iIr6PEvm7aQz8SYAWrWsQOEDbRMKaD9eNxiQ/i8= X-Received: by 2002:a17:907:971c:b0:78e:63f:c766 with SMTP id jg28-20020a170907971c00b0078e063fc766mr14664496ejc.330.1666344806910; Fri, 21 Oct 2022 02:33:26 -0700 (PDT) MIME-Version: 1.0 References: <20221020165734.1113688-1-hjl.tools@gmail.com> In-Reply-To: <20221020165734.1113688-1-hjl.tools@gmail.com> From: Richard Biener Date: Fri, 21 Oct 2022 11:33:14 +0200 Message-ID: Subject: Re: [PATCH] Always use TYPE_MODE instead of DECL_MODE for vector field To: "H.J. Lu" Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.0 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: 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 also be an integer mode. > mode = TYPE_MODE (TREE_TYPE (field)); > } > diff --git a/gcc/testsuite/gcc.target/i386/pr107304.c b/gcc/testsuite/gcc.target/i386/pr107304.c > new file mode 100644 > index 00000000000..24d68795e7f > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr107304.c > @@ -0,0 +1,39 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -march=tigerlake" } */ > + > +#include > + > +typedef union { > + uint8_t v __attribute__((aligned(256))) __attribute__ ((vector_size(64 * sizeof(uint8_t)))); > + uint8_t i[64] __attribute__((aligned(256))); > +} stress_vec_u8_64_t; > + > +typedef struct { > + struct { > + stress_vec_u8_64_t s; > + stress_vec_u8_64_t o; > + stress_vec_u8_64_t mask1; > + stress_vec_u8_64_t mask2; > + } u8_64; > +} stress_vec_data_t; > + > +__attribute__((target_clones("arch=alderlake", "default"))) > +void > +stress_vecshuf_u8_64(stress_vec_data_t *data) > +{ > + stress_vec_u8_64_t *__restrict s; > + stress_vec_u8_64_t *__restrict mask1; > + stress_vec_u8_64_t *__restrict mask2; > + register int i; > + > + s = &data->u8_64.s; > + mask1 = &data->u8_64.mask1; > + mask2 = &data->u8_64.mask2; > + > + for (i = 0; i < 256; i++) { /* was i < 65536 */ > + stress_vec_u8_64_t tmp; > + > + tmp.v = __builtin_shuffle(s->v, mask1->v); > + s->v = __builtin_shuffle(tmp.v, mask2->v); > + } > +} > -- > 2.37.3 >