From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x1135.google.com (mail-yw1-x1135.google.com [IPv6:2607:f8b0:4864:20::1135]) by sourceware.org (Postfix) with ESMTPS id 72B343858D39 for ; Wed, 31 Aug 2022 09:53:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 72B343858D39 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-x1135.google.com with SMTP id 00721157ae682-33dc31f25f9so301804907b3.11 for ; Wed, 31 Aug 2022 02:53:20 -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; bh=EyvU93KlXRTHGeuDAiuTVkxmz287MqCY3+pXeq07TUA=; b=F9Ps/FMJqNp1vip4Y9mY2PbDGKRQPiYYl+u63L/W6QM1ZeYEdsIcLq64uy/guHSQMS OW82RAaSvdDs4utouf4VcpW6izPh9l6zilTkWdgICSu14+776OYn26J5MOB3qS4bdSm7 lszDMEWrQ0VVk/OsgOpxTdKAUX6e7esWylD1T8h98R3bqBAMTLI/I5aDYGmHuQ0y6rnx +dR93kDHC3e4qH+lrdRKcMjdoP4eAxMnRLgXQhGt+pxG/8rTB7NhmOPOIFiVs4OnN9UU 5viUPs8GObewButRPlVcq3nhCVqnzOZqsyPB++gTZxemRAKo/aGWyrNtHuy1U2bFcXIn KRDA== 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; bh=EyvU93KlXRTHGeuDAiuTVkxmz287MqCY3+pXeq07TUA=; b=224Az0l0XI6Yc862DqI2htn0yxmE7s0DKo1vnEUZPSUqMyK5zWAvIfLj0BO0nyCp5e n3nq0d/fQ+C0dXshp5tDgEnowjZG/qJHNfVuztJD7K1xVdRuwgDetVlJqlY3BgNgq6Qb gMkk94imEFkMoDoGi8PH4h7EMkyQq+/vcPD/Dv7sc+SYJ0Ve+woBFZUphhe/SHq0Vpai 6jlRHuGowgkdwC1mHWr5G9RfBC+Y+iEqw6TkUaG3LCyKrGyOuxICe2oxurnylnO1dXDM Cw0RLE5RYAgF59pN2621I42kfA9NH2YkDg2hm0pIJhghbo84Xc8/wM90cB6eCJywuzdn +AlQ== X-Gm-Message-State: ACgBeo0AOXpDvGXXvyqDJBlk9mIRnzcZ36SRrm3P6Tudfn8y+SR6tPp6 U/e201RRWrpEBvOEnnv+y21+Z3Yb/TAZ7qnxaus= X-Google-Smtp-Source: AA6agR6yxmIPtMfxon9A7QVbDTP7Zb5Ss6XHnDO08gZOH7HiYjqHvN066YJt4tfzxvS/gHLYHPeoZJcDamRqnd75nqo= X-Received: by 2002:a81:4fd5:0:b0:340:ec27:64ee with SMTP id d204-20020a814fd5000000b00340ec2764eemr13366059ywb.475.1661939599804; Wed, 31 Aug 2022 02:53:19 -0700 (PDT) MIME-Version: 1.0 References: <20220831064846.1305576-1-lingling.kong@intel.com> In-Reply-To: From: Hongtao Liu Date: Wed, 31 Aug 2022 17:55:28 +0800 Message-ID: Subject: Re: [PATCH] x86: Handle V8BF in expand_vec_perm_broadcast_1 To: "Kong, Lingling" Cc: "Liu, Hongtao" , "gcc-patches@gcc.gnu.org" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_NUMSUBJECT,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 Wed, Aug 31, 2022 at 2:52 PM Kong, Lingling via Gcc-patches wrote: > > Hi, > > Handle E_V8BFmode in expand_vec_perm_broadcast_1 and ix86_expand_vector_init_duplicate. > Ok for trunk? > > gcc/ChangeLog: > > PR target/106742 > * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): > Handle V8BF mode. > (expand_vec_perm_broadcast_1): Ditto. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/pr106742.c: New test. > --- > gcc/config/i386/i386-expand.cc | 17 ++++++++++++----- > gcc/testsuite/gcc.target/i386/pr106742.c | 10 ++++++++++ > 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr106742.c > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 4b216308a18..a08222fe1b6 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -15030,11 +15030,15 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, machine_mode mode, > dperm.op0 = dperm.op1 = gen_reg_rtx (mode); > dperm.one_operand_p = true; > > - if (mode == V8HFmode) > + if (mode == V8HFmode || mode == V8BFmode) > { > - tmp1 = force_reg (HFmode, val); > + rtx (*gen_vec_set_0) (rtx, rtx, rtx) = NULL; > + tmp1 = mode == V8HFmode ? force_reg (HFmode, val) > + : force_reg (BFmode, val); tmp1 = force_reg (GET_MODE_INNER (mode), val); > tmp2 = gen_reg_rtx (mode); > - emit_insn (gen_vec_setv8hf_0 (tmp2, CONST0_RTX (mode), tmp1)); > + gen_vec_set_0 = mode == V8HFmode ? gen_vec_setv8hf_0 > + : gen_vec_setv8bf_0; add @ to vec_set_0 as (define_insn "@vec_set_0" and pass mode to vec_set_0 as emit_insn (gen_vec_set_0 (mode, tmp2, CONST0_RTX (mode), tmp1)); > + emit_insn (gen_vec_set_0 (tmp2, CONST0_RTX (mode), tmp1)); > tmp1 = gen_lowpart (mode, tmp2); > } > else > @@ -21822,17 +21826,20 @@ expand_vec_perm_broadcast_1 (struct expand_vec_perm_d *d) > return true; > > case E_V8HFmode: > + case E_V8BFmode: > /* This can be implemented via interleave and pshufd. */ > if (d->testing_p) > return true; > > if (elt >= nelt2) > { > - gen = gen_vec_interleave_highv8hf; > + gen = vmode == V8HFmode ? gen_vec_interleave_highv8hf > + : gen_vec_interleave_highv8bf; Similar, add @ to define_insn and pass gen_vec_interleave. > elt -= nelt2; > } > else > - gen = gen_vec_interleave_lowv8hf; > + gen = vmode == V8HFmode ? gen_vec_interleave_lowv8hf > + : gen_vec_interleave_lowv8bf; > nelt2 /= 2; > > dest = gen_reg_rtx (vmode); > diff --git a/gcc/testsuite/gcc.target/i386/pr106742.c b/gcc/testsuite/gcc.target/i386/pr106742.c > new file mode 100644 > index 00000000000..4a53cd49902 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr106742.c > @@ -0,0 +1,10 @@ > +/* { dg-do compile } */ > +/* { dg-options " -msse2 -mno-avx2 -O1" } */ > +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); > + > +v8bf > +vec_init_dup_v8bf (__bf16 a1) > +{ > + return __extension__ (v8bf) { a1, a1, a1, a1, a1, a1, a1, a1 }; } > +/* { dg-final { scan-assembler-times "punpcklwd" 1} } */ > -- > 2.18.2 > -- BR, Hongtao