From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by sourceware.org (Postfix) with ESMTPS id ADEAA385802A for ; Thu, 15 Sep 2022 03:45:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ADEAA385802A 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-yw1-x1130.google.com with SMTP id 00721157ae682-3321c2a8d4cso204955827b3.5 for ; Wed, 14 Sep 2022 20:45:48 -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; bh=p8+pM7vQ4R8Lx45NXGcx52fqGmZSqpJNbuY8AjiyJbI=; b=R5htKs0kU97SOdD2X+U5ELKpG0khFXzYOXsfi7EdPay0lNKaIjxl50bm3UF+XD8Ws7 H0DFUwwiXjsqllXRClCyrQpoJIA9ZWyHlDm3dPdnDIsxvNrm+NYimGO8adWRZYNAcnxU 1NnsTP9w8bUZBgEgthI3rjFLl/LOYIb38iONZqgv+MyVaWHfkRd9CGs+3ymSRzg0WujE 774E3v0yQS4h59J8JShwKw016v4DjVOF0KkoPZj9FP3bteGpExHN88KW5WKXjwnJfUKS VKJYGQRoKq56Hyb/OOIwCNfGAsMIFFtC0ld0ytbLsOen0cZHjlBqektMHOdWCzUAf+ad 0nGQ== 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; bh=p8+pM7vQ4R8Lx45NXGcx52fqGmZSqpJNbuY8AjiyJbI=; b=egpwTf35ak8VeamsibYs+Joz9zmnXNrkewjjzFtCI82HS7chRVrR6bxsK+uSEV/r1K VxECp+3OrbzdOjGEOIptMWV5ciuHxaJqIzL1xt3Jvfc38/VEW5QQb4ogFJi2qa2Av5J4 aSYKwGxEne/9QhBVW/tCt66YIYHl8esMlE3+VCuQoK1k4fqQ76VMtXSxGABeisx9n+AJ dBQGmMjQfyqkHZyzZsIcGcdPDrexLVoOlR2V8DkTZXMwDAkiPwRX3Yu8+FrJUovKGHhs ncy1iFlsnClI0opHHZfyh9jvw3YcFl8NgGVXoZ4wUCuzB50WjP96WJgtZ1GOwTFNrTPe 5d4g== X-Gm-Message-State: ACgBeo1/hdCis1eN9Rrdd7SClOYRJSHkDUuq7VmPqELSSLWKG1IeZkoi Rnw8nOdx0T9km2YEDFOVRjDBm4CD6AAr+M0nydUq29pxYkk= X-Google-Smtp-Source: AA6agR5qlP/y1ifdpe/tJWAX27nH6j/OTVrSuaSJgw613RRpvb+BsiQ3vTvy8PWKeC/caWayaTzvayApMp+kMido39E= X-Received: by 2002:a81:9914:0:b0:345:46ca:98fc with SMTP id q20-20020a819914000000b0034546ca98fcmr33380969ywg.508.1663213548079; Wed, 14 Sep 2022 20:45:48 -0700 (PDT) MIME-Version: 1.0 References: <20220915033043.3484071-1-lingling.kong@intel.com> In-Reply-To: From: Hongtao Liu Date: Thu, 15 Sep 2022 11:45:36 +0800 Message-ID: Subject: Re: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] To: "Kong, Lingling" Cc: "gcc-patches@gcc.gnu.org" , "Liu, Hongtao" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.6 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,T_SCC_BODY_TEXT_LINE 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, Sep 15, 2022 at 11:36 AM Kong, Lingling via Gcc-patches wrote: > > Hi > > The patch is to fix vec_init_dup_v16bf, add correct handle for v16bf mode in ix86_expand_vector_init_duplicate. > Add testcase with sse2 without avx2. > > OK for master? > > gcc/ChangeLog: > > PR target/106887 > * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): > Fixed V16BF mode case. > > gcc/testsuite/ChangeLog: > > PR target/106887 > * gcc.target/i386/vect-bfloat16-2c.c: New test. > --- > gcc/config/i386/i386-expand.cc | 1 + > .../gcc.target/i386/vect-bfloat16-2c.c | 76 +++++++++++++++++++ > 2 files changed, 77 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index d7b49c99dc8..9451c561489 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -15111,6 +15111,7 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, machine_mode mode, > { > machine_mode hvmode = (mode == V16HImode ? V8HImode > : mode == V16HFmode ? V8HFmode > + : mode == V16BFmode ? V8BFmode Can it be written as switch case? > : V16QImode); > rtx x = gen_reg_rtx (hvmode); > > diff --git a/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > new file mode 100644 > index 00000000000..bead94e46a1 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > @@ -0,0 +1,76 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mf16c -msse2 -mno-avx2 -O2" } */ > + > +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); typedef > +__bf16 v16bf __attribute__ ((__vector_size__ (32))); > + > +#define VEC_EXTRACT(V,S,IDX) \ > + S \ > + __attribute__((noipa)) \ > + vec_extract_##V##_##IDX (V v) \ > + { \ > + return v[IDX]; \ > + } > + > +#define VEC_SET(V,S,IDX) \ > + V \ > + __attribute__((noipa)) \ > + vec_set_##V##_##IDX (V v, S s) \ > + { \ > + v[IDX] = s; \ > + return v; \ > + } > + > +v8bf > +vec_init_v8bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8) { > + return __extension__ (v8bf) {a1, a2, a3, a4, a5, a6, a7, a8}; } > + > +v16bf > +vec_init_v16bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8, > + __bf16 a9, __bf16 a10, __bf16 a11, __bf16 a12, > + __bf16 a13, __bf16 a14, __bf16 a15, __bf16 a16) { > + return __extension__ (v16bf) {a1, a2, a3, a4, a5, a6, a7, a8, > + a9, a10, a11, a12, a13, a14, a15, a16}; } > + > +v8bf > +vec_init_dup_v8bf (__bf16 a1) > +{ > + return __extension__ (v8bf) {a1, a1, a1, a1, a1, a1, a1, a1}; } > + > +v16bf > +vec_init_dup_v16bf (__bf16 a1) > +{ > + return __extension__ (v16bf) {a1, a1, a1, a1, a1, a1, a1, a1, > + a1, a1, a1, a1, a1, a1, a1, a1}; > +} > + > +/* { dg-final { scan-assembler-times "vpunpcklwd" 12 } } */ > +/* { dg-final { scan-assembler-times "vpunpckldq" 6 } } */ > +/* { dg-final { scan-assembler-times "vpunpcklqdq" 3 } } */ > + > +VEC_EXTRACT (v8bf, __bf16, 0); > +VEC_EXTRACT (v8bf, __bf16, 4); > +VEC_EXTRACT (v16bf, __bf16, 0); > +VEC_EXTRACT (v16bf, __bf16, 3); > +VEC_EXTRACT (v16bf, __bf16, 8); > +VEC_EXTRACT (v16bf, __bf16, 15); > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$8" 1 } } */ > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$6" 1 } } */ > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$14" 1 } } */ > +/* { dg-final { scan-assembler-times "vextract" 4 } } */ > + > +VEC_SET (v8bf, __bf16, 4); > +VEC_SET (v16bf, __bf16, 3); > +VEC_SET (v16bf, __bf16, 8); > +VEC_SET (v16bf, __bf16, 15); > +/* { dg-final { scan-assembler-times "vpblendw" 3 { target { ! ia32 } } > +} } */ > + > +/* { dg-final { scan-assembler-times "vpinsrw" 30 { target ia32 } } } > +*/ > + > -- > 2.18.2 > -- BR, Hongtao