On Mon, Jul 4, 2016 at 3:22 PM, Matthew Wahab
<matthew.wa...@foss.arm.com> wrote:
> On 17/05/16 15:52, Matthew Wahab wrote:
>> Support for using the half-precision floating point operations added by
>> the
>> ARMv8.2-A FP16 extension is based on the macros and intrinsics added to
>> the
>> ACLE for the extension.
>>
>> This patch adds executable tests for the ACLE Adv.SIMD (NEON) intrinsics
>> to
>> the advsimd-intrinsics testsuite.
>
> The tests added in the previous version of the patch, which only tested
> the f16 variants of intrinsics, are dropped. Instead, this patch extends
> the existing intrinsics tests to support the new f16 variants. Where the
> intrinsic is new, a new test for the intrinsic is added with f16 as the
> only variant. (This is consistent with existing practice, e.g vcvt.c.)
> The new tests are based on similar existing tests, e.g. maxnm_1.c is
> derived from max.c and the vcvt{a,m,p}_1.c tests, via vcvtX.inc, are
> based on vcvt.c.
>
> Since they are only available when the FP16 arithmetic instructions are
> enabled, advsimd-intrinsics.exp is updated to set -march=armv8.2+fp when
> the hardware supports it and the tests for the f16 intrinscs are guarded
> with __ARM_FEATURE_FP16_VECTOR_ARITHMETIC. Where a test has only f16
> variants, the test file itself is also guarded with
> dg-require-effective-target arm_v8_2a_fp16_neon_hw so that it reports
> UNSUPPORTED rather than PASS if FP16 isn't supported.
>
> Tested the series for arm-none-linux-gnueabihf with native bootstrap and
> make check and for arm-none-eabi and armeb-none-eabi with make check on
> an ARMv8.2-A emulator. Also tested the advsimd-intrinscs tests
> cross-compiled
> for aarch64-none-elf on an ARMv8.2-A emulator.
>
> Ok for trunk?

OK.

Thanks,
Ramana
> Matthew
>
> testsuite/
> 2016-07-04  Matthew Wahab  <matthew.wa...@arm.com>
>
>         * gcc.target/advsimd-intrinsics/advsimd-intrinsics.exp: Enable
>         -march=armv8.2-a+fp16 when supported by the hardware.
>         * gcc.target/aarch64/advsimd-intrinsics/binary_op_float.inc: New.
>         * gcc.target/aarch64/advsimd-intrinsics/binary_op_no64.inc:
>         Add F16 tests, enabled if macro HAS_FLOAT16_VARIANT is defined.  Add
>         semi-colons to a macro invocations.
>         * gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc: Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/cmp_zero_op.inc: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vabd.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vabs.c: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vadd.c: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcage.c:
> Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcagt.c:
> Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcale.c:
> Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcalt.c:
> Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vceq.c: Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/vceqz_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcge.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vcgez_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcgt.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vcgtz_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcle.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vclez_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vclt.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vcltz_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vcvt.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.  Also fix some white-space.
>         * gcc.target/aarch64/advsimd-intrinsics/vcvtX.inc: New.
>         * gcc.target/aarch64/advsimd-intrinsics/vcvta_1.c: New.
>         * gcc.target/aarch64/advsimd-intrinsics/vcvtm_1.c: New.
>         * gcc.target/aarch64/advsimd-intrinsics/vcvtp_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vfma.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.  Also fix some long lines and white-space.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vfms.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.  Also fix some long lines and white-space.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmax.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vmaxnm_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmin.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vminnm_1.c: New.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmul.c: Add F16
>         tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
>         defined.
>         * gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vneg.c:
>         Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpadd.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmax.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmin.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecps.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnd.c:
>         Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/vrndX.inc: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnda.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndm.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndn.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndp.c:
>         Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndx.c:
>         Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/vrsqrte.c: Likewise.
>         * gcc.target/aarch64/advsimd-intrinsics/vrsqrts.c: Likewise.
>         * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vsub.c:
>         Likewise.
>

Reply via email to