This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH v3] [AArch64] PR63870 Improve error messages for NEON single lane memory access intrinsics
- From: Charles Baylis <charles dot baylis at linaro dot org>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, James Greenhalgh <James dot Greenhalgh at arm dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>, Marcus Shawcroft <Marcus dot Shawcroft at arm dot com>
- Cc: Tejas Belagod <Tejas dot Belagod at arm dot com>, Alan Lawrence <alan dot lawrence at arm dot com>
- Date: Thu, 16 Jul 2015 11:10:59 +0100
- Subject: Re: [PATCH v3] [AArch64] PR63870 Improve error messages for NEON single lane memory access intrinsics
- Authentication-results: sourceware.org; auth=none
- References: <CADnVucDdKS54zr9V05heLUfXUCGV+nuDdwJj9jxFtiehre7fUA at mail dot gmail dot com>
Ping?
On 26 June 2015 at 20:14, Charles Baylis <charles.baylis@linaro.org> wrote:
> Since the last ping, I've tweaked the test cases a bit...
>
> Since I've been working on doing the same changes for the ARM backend,
> I've moved the tests into the advsimd-intrinsics directory, marked as
> XFAIL for ARM targets for now. The gcc/ part of the patch is
> unchanged.
>
> gcc/ChangeLog:
>
> <DATE> Charles Baylis <charles.baylis@linaro.org>
>
> PR target/63870
> * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
> Add qualifier_struct_load_store_lane_index.
> (aarch64_types_loadstruct_lane_qualifiers): Use
> qualifier_struct_load_store_lane_index for lane index argument for
> last argument.
> (aarch64_types_storestruct_lane_qualifiers): Ditto.
> (builtin_simd_arg): Add SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
> (aarch64_simd_expand_args): Add new argument describing mode of
> builtin. Check lane bounds for arguments with
> SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
> (aarch64_simd_expand_builtin): Emit error for incorrect lane indices
> if marked with SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
> (aarch64_simd_expand_builtin): Handle arguments with
> qualifier_struct_load_store_lane_index. Pass machine mode of builtin to
> aarch64_simd_expand_args.
> * config/aarch64/aarch64-simd-builtins.def: Declare ld[234]_lane and
> vst[234]_lane with BUILTIN_VALLDIF.
> * config/aarch64/aarch64-simd.md:
> (aarch64_vec_load_lanesoi_lane<mode>): Use VALLDIF iterator. Perform
> endianness reversal on lane index.
> (aarch64_vec_load_lanesci_lane<mode>): Ditto.
> (aarch64_vec_load_lanesxi_lane<mode>): Ditto.
> (vec_store_lanesoi_lane<mode>): Use VALLDIF iterator. Fix typo
> in attribute.
> (vec_store_lanesci_lane<mode>): Use VALLDIF iterator.
> (vec_store_lanesxi_lane<mode>): Ditto.
> (aarch64_ld2_lane<mode>): Use VALLDIF iterator. Remove endianness
> reversal of lane index.
> (aarch64_ld3_lane<mode>): Ditto.
> (aarch64_ld4_lane<mode>): Ditto.
> (aarch64_st2_lane<mode>): Ditto.
> (aarch64_st3_lane<mode>): Ditto.
> (aarch64_st4_lane<mode>): Ditto.
> * config/aarch64/arm_neon.h (__LD2_LANE_FUNC): Rename mode parameter
> to qmode. Add new mode parameter. Update uses.
> (__LD3_LANE_FUNC): Ditto.
> (__LD4_LANE_FUNC): Ditto.
> (__ST2_LANE_FUNC): Ditto.
> (__ST3_LANE_FUNC): Ditto.
> (__ST4_LANE_FUNC): Ditto.
>
> gcc/testsuite/ChangeLog:
>
> <DATE> Charles Baylis <charles.baylis@linaro.org>
>
> gcc/testsuite/ChangeLog:
>
> <DATE> Charles Baylis <charles.baylis@linaro.org>
>
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_p8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s8_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u16_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u32_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u64_indices_1.c:
> New test.
> * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u8_indices_1.c:
> New test.