> -----Original Message----- > From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of > Christophe Lyon via Gcc-patches > Sent: 23 March 2021 14:33 > To: gcc-patches@gcc.gnu.org > Subject: [PATCH 8/8] testsuite/arm: Add arm_dsp_ok effective target and > use it in arm/acle/dsp_arith.c > > gcc.target/arm/acle/dsp_arith.c uses DSP intrinsics, which arm_acle.h > defines only with __ARM_FEATURE_DSP, so make the test check for that > property rather than arm_qbit_ok. > > However, the existing arm_dsp effective target only checks if DSP > features are supported with the current multilib rather than trying > -march and -mfloat-abi options. Thus we introduce a similar effective > target, arm_dsp_ok and associated dg-add-options. > > This makes dsp_arith.c unsupported rather than failed when no option > combination is suitable, for instance when running the tests with > -mcpu=cortex-m3. Ok. Thanks for working on these, Kyrill > > 2021-03-19 Christophe Lyon <christophe.l...@linaro.org> > > gcc/ > * doc/sourcebuild.texi (arm_dsp_ok, arm_dsp): Document. > > gcc/testsuite/ > * lib/target-supports.exp > (check_effective_target_arm_dsp_ok_nocache) > (check_effective_target_arm_dsp_ok, add_options_for_arm_dsp): > New. > * gcc.target/arm/acle/dsp_arith.c: Use arm_dsp_ok effective target > and add arm_dsp options. > --- > gcc/doc/sourcebuild.texi | 11 ++++++++ > gcc/testsuite/gcc.target/arm/acle/dsp_arith.c | 4 +-- > gcc/testsuite/lib/target-supports.exp | 40 > +++++++++++++++++++++++++++ > 3 files changed, 53 insertions(+), 2 deletions(-) > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi > index 1fa3656..2bc362b 100644 > --- a/gcc/doc/sourcebuild.texi > +++ b/gcc/doc/sourcebuild.texi > @@ -2044,6 +2044,12 @@ ARM Target supports options suitable for > accessing the Q-bit manipulation > intrinsics from @code{arm_acle.h}. > Some multilibs may be incompatible with these options. > > +@item arm_dsp_ok > +@anchor{arm_dsp_ok} > +ARM Target supports options suitable for accessing the DSP intrinsics > +from @code{arm_acle.h}. > +Some multilibs may be incompatible with these options. > + > @item arm_softfp_ok > @anchor{arm_softfp_ok} > ARM target supports the @code{-mfloat-abi=softfp} option. > @@ -2778,6 +2784,11 @@ Add options to enable generation of the > @code{VFMAL} and @code{VFMSL} > instructions, if this is supported by the target; see the > @ref{arm_fp16fml_neon_ok} effective target keyword. > > +@item arm_dsp > +Add options for ARM DSP intrinsics support, if this is supported by > +the target; see the @ref{arm_dsp_ok,,arm_dsp_ok effective target > +keyword}. > + > @item bind_pic_locally > Add the target-specific flags needed to enable functions to bind > locally when using pic/PIC passes in the testsuite. > diff --git a/gcc/testsuite/gcc.target/arm/acle/dsp_arith.c > b/gcc/testsuite/gcc.target/arm/acle/dsp_arith.c > index 9ebd55a..7bf458e 100644 > --- a/gcc/testsuite/gcc.target/arm/acle/dsp_arith.c > +++ b/gcc/testsuite/gcc.target/arm/acle/dsp_arith.c > @@ -1,6 +1,6 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target arm_qbit_ok } */ > -/* { dg-add-options arm_qbit } */ > +/* { dg-require-effective-target arm_dsp_ok } */ > +/* { dg-add-options arm_dsp } */ > > #include <arm_acle.h> > > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target- > supports.exp > index 1af7619..733b6c8 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -4200,6 +4200,46 @@ proc add_options_for_arm_qbit { flags } { > return "$flags $et_arm_qbit_flags" > } > > +# Return 1 if this is an ARM target supporting the DSP intrinsics from > +# arm_acle.h. Some multilibs may be incompatible with these options. > +# Also set et_arm_dsp_flags to the best options to add. > +# arm_acle.h includes stdint.h which can cause trouble with incompatible > +# -mfloat-abi= options. > +# check_effective_target_arm_dsp also exists, which checks the current > +# multilib, without trying other options. > + > +proc check_effective_target_arm_dsp_ok_nocache { } { > + global et_arm_dsp_flags > + set et_arm_dsp_flags "" > + foreach flags {"" "-march=armv5te" "-march=armv5te -mfloat- > abi=softfp" "-march=armv5te -mfloat-abi=hard"} { > + if { [check_no_compiler_messages_nocache et_arm_dsp_ok object { > + #include <arm_acle.h> > + int dummy; > + #ifndef __ARM_FEATURE_DSP > + #error not DSP > + #endif > + } "$flags"] } { > + set et_arm_dsp_flags $flags > + return 1 > + } > + } > + > + return 0 > +} > + > +proc check_effective_target_arm_dsp_ok { } { > + return [check_cached_effective_target et_arm_dsp_flags \ > + check_effective_target_arm_dsp_ok_nocache] > +} > + > +proc add_options_for_arm_dsp { flags } { > + if { ! [check_effective_target_arm_dsp_ok] } { > + return "$flags" > + } > + global et_arm_dsp_flags > + return "$flags $et_arm_dsp_flags" > +} > + > # Return 1 if this is an ARM target supporting -mfpu=neon without any > # -mfloat-abi= option. Useful in tests where add_options is not > # supported (such as lto tests). > -- > 2.7.4
RE: [PATCH 8/8] testsuite/arm: Add arm_dsp_ok effective target and use it in arm/acle/dsp_arith.c
Kyrylo Tkachov via Gcc-patches Tue, 23 Mar 2021 07:59:30 -0700
- RE: [PATCH 3/8] testsuite/arm: Remove... Kyrylo Tkachov via Gcc-patches
- [PATCH 4/8] testsuite/arm: Add arm_softfp_... Christophe Lyon via Gcc-patches
- RE: [PATCH 4/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- [PATCH 5/8] testsuite/arm: Add arm_hard_ok... Christophe Lyon via Gcc-patches
- RE: [PATCH 5/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- [PATCH 6/8] testsuite/arm: Fix -mfloat-abi... Christophe Lyon via Gcc-patches
- RE: [PATCH 6/8] testsuite/arm: Fix -m... Kyrylo Tkachov via Gcc-patches
- [PATCH 7/8] testsuite/arm: Fix -mfloat-abi... Christophe Lyon via Gcc-patches
- RE: [PATCH 7/8] testsuite/arm: Fix -m... Kyrylo Tkachov via Gcc-patches
- [PATCH 8/8] testsuite/arm: Add arm_dsp_ok ... Christophe Lyon via Gcc-patches
- RE: [PATCH 8/8] testsuite/arm: Add ar... Kyrylo Tkachov via Gcc-patches
- Re: [PATCH 8/8] testsuite/arm: Ad... Christophe Lyon via Gcc-patches