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 7FA6D3858D33 for ; Tue, 27 Jun 2023 05:13:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7FA6D3858D33 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-5704ddda6dfso45335887b3.1 for ; Mon, 26 Jun 2023 22:13:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687842823; x=1690434823; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=qFoLUSt4FMDSHqQOcxE850DzV/tweZB1Xi57Ni5lo5o=; b=HEix1O+rIbzzKybF4IGELK727ZJAqz22mUYeXTE9U2FBOdGy59STyFU+TVHGfsVhgh Ey3Gg1P/2rzdTr25pppGSiMFjsmTZz7xth/LT+7UzbCd+RYdqg3T1Krbu/iscpSQFMix ynyrXggmae0y69Uz0UaBoYeFBW1PgJuCIsBBCTnvTQPFNKoX1BGJT4DTUpSkqMA05oeV +CQaOAX2JwAiKB2axXRbbSOtZID4ylhK462QGwRbzXwYz6E/keDhWt2WEbrPI1h25NLI ZlEaPOqyq7AjlMJv3l1k38E2WjSwrgGDNVaNMmsMk1bURcnuUPwH7g35kUaQI/iKn+1t Xp6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687842823; x=1690434823; h=content-transfer-encoding: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=qFoLUSt4FMDSHqQOcxE850DzV/tweZB1Xi57Ni5lo5o=; b=QMOe4LfIyqDzHM87BPYf3Zzk5nU7faYtnZOct3OqrsIrwW0pWUbdPxz4mRRIkEblbh L8CH2mXgVXHZo7Cn5PXrpLTeZ5Ex4KKLvwV081t2QlJEBtQHcla5gKLCViMv5gZl68em NNiJyZ8ZZBRW1h18bRWLB991mRwKGs4//gqu0gtxBhN39C05Kg667I7GJCBNS1u45hVT 43dj8mHc23XtwSfu1QdLcFVJSPxBtl8yIflvD2OyeON+wMDCPRnHo8Gc5VHI4hGLiFBo InXNbylmHCHZuCx2thz+shnaRhkAVDB2bZtk4zqS80e61aoXRSdIKW9PDjIeFERB15fu sJCg== X-Gm-Message-State: AC+VfDyKQBT0W1tprlMlkTbZ7VcNeOlLFCoCHMbQaoeQZF5HQYSvSgiy iyLA6wRYaw5OdY4kx2tkNPR2VoXYY0L7DjD8/ZI= X-Google-Smtp-Source: ACHHUZ7g/1MkpnH5+QMn+6IcrhxwCcP0IFMynAcnltQF3hkz7elXMlGsoHD1c/9OzCSp1QhlpDUM0jHidFtGCdJ/c6Q= X-Received: by 2002:a25:dbcf:0:b0:c11:d5a9:d260 with SMTP id g198-20020a25dbcf000000b00c11d5a9d260mr10234316ybf.49.1687842822674; Mon, 26 Jun 2023 22:13:42 -0700 (PDT) MIME-Version: 1.0 References: <20230626085417.1357574-1-hongtao.liu@intel.com> In-Reply-To: <20230626085417.1357574-1-hongtao.liu@intel.com> From: Hongtao Liu Date: Tue, 27 Jun 2023 13:13:31 +0800 Message-ID: Subject: Re: [PATCH] Issue a warning for conversion between short and __bf16 under TARGET_AVX512BF16. To: liuhongt Cc: gcc-patches@gcc.gnu.org, hjl.tools@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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_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 Mon, Jun 26, 2023 at 4:54=E2=80=AFPM liuhongt wr= ote: > > __bfloat16 is redefined from typedef short to real __bf16 since GCC > V13. The patch issues an warning for potential silent implicit > conversion between __bf16 and short where users may only expect a > data movement. > > To avoid too many false positive, warning is only under > TARGET_AVX512BF16. > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,} > Ok for trunk? Ready to install. > > gcc/ChangeLog: > > * config/i386/i386.cc (ix86_invalid_conversion): New function. > (TARGET_INVALID_CONVERSION): Define as > ix86_invalid_conversion. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/bf16_short_warn.c: New test. > --- > gcc/config/i386/i386.cc | 32 +++++++++++++++++++ > .../gcc.target/i386/bf16_short_warn.c | 17 ++++++++++ > 2 files changed, 49 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/bf16_short_warn.c > > diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc > index 0761965344b..dc02eac6203 100644 > --- a/gcc/config/i386/i386.cc > +++ b/gcc/config/i386/i386.cc > @@ -22718,6 +22718,35 @@ x86_emit_floatuns (rtx operands[2]) > > emit_label (donelab); > } > + > +/* Return the diagnostic message string if conversion from FROMTYPE to > + TOTYPE is not allowed, NULL otherwise. > + Currently it's used to warn for silent implicit conversion between __= bf16 > + and short, since __bfloat16 is refined as real __bf16 instead of shor= t > + since GCC13. */ > + > +static const char * > +ix86_invalid_conversion (const_tree fromtype, const_tree totype) > +{ > + if (element_mode (fromtype) !=3D element_mode (totype) > + && (TARGET_AVX512BF16 || TARGET_AVXNECONVERT)) > + { > + /* Warn for silent implicit conversion where user may expect > + a bitcast. */ > + if ((TYPE_MODE (fromtype) =3D=3D BFmode > + && TYPE_MODE (totype) =3D=3D HImode) > + || (TYPE_MODE (totype) =3D=3D BFmode > + && TYPE_MODE (fromtype) =3D=3D HImode)) > + warning (0, "%<__bfloat16%> is redefined from typedef % " > + "to real %<__bf16%> since GCC V13, be careful of " > + "implicit conversion between %<__bf16%> and %; " > + "a explicit bitcast may be needed here"); > + } > + > + /* Conversion allowed. */ > + return NULL; > +} > + > > /* Target hook for scalar_mode_supported_p. */ > static bool > @@ -25009,6 +25038,9 @@ ix86_run_selftests (void) > # define TARGET_MERGE_DECL_ATTRIBUTES merge_dllimport_decl_attributes > #endif > > +#undef TARGET_INVALID_CONVERSION > +#define TARGET_INVALID_CONVERSION ix86_invalid_conversion > + > #undef TARGET_COMP_TYPE_ATTRIBUTES > #define TARGET_COMP_TYPE_ATTRIBUTES ix86_comp_type_attributes > > diff --git a/gcc/testsuite/gcc.target/i386/bf16_short_warn.c b/gcc/testsu= ite/gcc.target/i386/bf16_short_warn.c > new file mode 100644 > index 00000000000..3e47a815200 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/bf16_short_warn.c > @@ -0,0 +1,17 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2" } */ > + > +#include > +typedef struct { > +short payload; > +} BFloat16; > + > +__attribute__((target("avx512vl,avx512bf16"))) > +BFloat16 tobf16_avx512(float f) > +{ > + BFloat16 r; > + __m128bh m =3D _mm_cvtneps_pbh(_mm_set_ss(f)); > + r.payload =3D m[0]; /* { dg-warning " be careful of implicit convers= ion between '__bf16' and 'short'" } */ > + return r; > +} > + > -- > 2.39.1.388.g2fc9e9ca3c > --=20 BR, Hongtao