diff options
author | Charles Baylis <charles.baylis@linaro.org> | 2014-12-03 12:57:03 +0000 |
---|---|---|
committer | Charles Baylis <charles.baylis@linaro.org> | 2015-06-05 14:20:25 +0100 |
commit | 6ab58182de1936deaa1b83ec787306878d1ae999 (patch) | |
tree | fdc9649bc247ad49dfb4ae9aeca3f9c21ed3ff09 /gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c | |
parent | 0ea7cdf701d6084984237858ec8106c6c90302c0 (diff) |
[AArch64] PR63870 Improve error messages for NEON single lane memory alinaro-local/cbaylis-test1
ccess intrinsics
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.target/aarch64/simd/vld2_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld2q_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld3q_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vld4q_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst2q_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst3q_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4_lane_u8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_f32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_f64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_p8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_s16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_s32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_s64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_s8_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_u16_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_u32_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_u64_indices_1.c: New test.
* gcc.target/aarch64/simd/vst4q_lane_u8_indices_1.c: New test.
Change-Id: Ib17adaf64e631cf8d00a1a1a6c12409d2d7f4239
Diffstat (limited to 'gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c')
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c new file mode 100644 index 00000000000..60d8a623414 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/simd/vld4_lane_s32_indices_1.c @@ -0,0 +1,10 @@ +#include <arm_neon.h> + +int32x2x4_t +f_vld4_lane_s32 (int32_t * p, int32x2x4_t v) +{ + int32x2x4_t res; + res = vld4_lane_s32 (p, v, 2); /* { dg-error "lane 2 out of range 0 - 1" "" { target *-*-* } 0 } */ + res = vld4_lane_s32 (p, v, -1); /* { dg-error "lane -1 out of range 0 - 1" "" { target *-*-* } 0 } */ + return res; +} |