Hi,
On Thu, 18 Jun 2020 at 15:30, Srinath Parvathaneni <srinath.parvathan...@arm.com> wrote: > > Hello, > > In GCC testsuite the MVE scalar shift execution tests > (mve_scalar_shifts[1-4].c) are failings > because of executing them on target hardware which doesn't support MVE > instructions. This patch > restricts those tests to execute only on target hardware that support MVE > instructions. > > Regression tested on arm-none-eabi and found no regressions. > > Ok for master? Ok for GCC-10 branch? > > Thanks, > Srinath. > > 2020-06-18 Srinath Parvathaneni <srinath.parvathan...@arm.com> > > gcc/ > * doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item. > (arm_mve_hw): Likewise. > > gcc/testsuite/ > * gcc.target/arm/mve/mve.exp (check_effective_target_arm_mve_hw): > Check > availability of hardware supporting MVE instructions. > * lib/target-supports.exp (check_effective_target_arm_mve_hw): Define. > > > ############### Attachment also inlined for ease of reply > ############### > > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi > index > e5554c4666eb217844598352ced5a9597652f07c..a12af822443ad41afba816ed640d80d182859239 > 100644 > --- a/gcc/doc/sourcebuild.texi > +++ b/gcc/doc/sourcebuild.texi > @@ -1925,6 +1925,15 @@ ARM target supports options to generate instructions > from ARMv8.1-M with > the M-Profile Vector Extension (MVE). Some multilibs may be incompatible > with these options. > > +@item arm_v8_1m_mve_fp_ok > +ARM target supports options to generate instructions from ARMv8.1-M with > +the Half-precision floating-point instructions (HP), Floating-point Extension > +(FP) along with M-Profile Vector Extension (MVE). Some multilibs may be > +incompatible with these options. > + > +@item arm_mve_hw > +Test system supports executing MVE instructions. > + > @item arm_v8m_main_cde > ARM target supports options to generate instructions from ARMv8-M with > the Custom Datapath Extension (CDE). Some multilibs may be incompatible > diff --git a/gcc/testsuite/gcc.target/arm/mve/mve.exp > b/gcc/testsuite/gcc.target/arm/mve/mve.exp > index > e84cb068940e2cb4ed7bbdd51b14d52cec3e323f..aaa3b78b2a9400070d0ca33cb0e98bd0fad7d408 > 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/mve.exp > +++ b/gcc/testsuite/gcc.target/arm/mve/mve.exp > @@ -24,6 +24,11 @@ if ![istarget arm*-*-*] then { > # Load support procs. > load_lib gcc-dg.exp > > +# Exit immediately if the target does not support MVE instructions. > +if ![check_effective_target_arm_mve_hw] then { > + return > +} So you are going to skip all tests, not only the ones with "dg-do run", right? Don't you want to add this effective target test to the offending tests only? Thanks, Christophe > + > # If a testcase doesn't have special options, use these. > global DEFAULT_CFLAGS > if ![info exists DEFAULT_CFLAGS] then { > diff --git a/gcc/testsuite/lib/target-supports.exp > b/gcc/testsuite/lib/target-supports.exp > index > 862a0735b49582f7f35a9a4009f5752cf8f7e3ba..ab0ee32fc911622b4716c272df4e656698b81a70 > 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -4671,6 +4671,24 @@ proc check_effective_target_arm_cmse_ok {} { > } "-mcmse"]; > } > > +# Return 1 if the target supports executing MVE instructions, 0 > +# otherwise. > + > +proc check_effective_target_arm_mve_hw {} { > + return [check_runtime arm_mve_hw_available { > + int > + main (void) > + { > + long long a = 16; > + int b = 3; > + asm ("sqrshrl %Q1, %R1, #64, %2" > + : "=l" (a) > + : "0" (a), "r" (b)); > + return (a != 2); > + } > + } ""] > +} > + > # Return 1 if this is an ARM target where ARMv8-M Security Extensions with > # clearing instructions (clrm, vscclrm, vstr/vldr with FPCXT) is available. > >