public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] [ARM] PR63870 vldN_lane/vstN_lane error messages
@ 2015-11-08  0:27 charles.baylis
  2015-11-08  0:27 ` [PATCH 1/4] [ARM] PR63870 Add qualifiers for NEON builtins charles.baylis
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: charles.baylis @ 2015-11-08  0:27 UTC (permalink / raw)
  To: Ramana.Radhakrishnan, kyrylo.tkachov, alan.lawrence; +Cc: rearnsha, gcc-patches

From: Charles Baylis <charles.baylis@linaro.org>

Previous discussion: https://gcc.gnu.org/ml/gcc-patches/2015-10/msg00657.html

This is a minor update to the previous patch set, fixing one coding style issue
in the first patch, and adding a fourth patch for which there are two options,
described below.

  [ARM] PR63870 Add qualifiers for NEON builtins
  [ARM] PR63870 Mark lane indices of vldN/vstN with appropriate
    qualifier
  [ARM] PR63870 Add test cases

These two patches are alternate options. Alan suggested removing the error
checks at assembly time, since the user-supplied lane number is always be
checked earlier. I thought it might be better to catch this case as an internal
error, to guard against future bugs.. If we don't use the internal error, then
the assembler will catch use of invalid lane numbers. Not sure which is
prefered, so both options are presented. Either one can be applied:
  [ARM] PR63870 Use internal_error() for invalid lane numbers
  [ARM] PR63870 Remove error for invalid lane numbers

Passes make check for arm-unknown-linux-gnueabihf and
armeb-unknown-linux-gnueabihf with no regressions. As mentioned in the last
thread, the new *_f16 tests fail on armeb-* due to unrelated problems with
half float moves. 

OK for trunk? I prefer patch 4a, but will commit 4b if that is prefered.

 gcc/config/arm/arm-builtins.c                      | 52 +++++++-----
 gcc/config/arm/arm.c                               |  1 +
 gcc/config/arm/arm.h                               |  3 +
 gcc/config/arm/neon.md                             | 97 ++++++++--------------
 .../advsimd-intrinsics/vld2_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld2_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld2_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld2q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld2q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld2q_lane_u8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld3_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld3_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld3q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld3q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld3q_lane_u8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld4_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld4_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vld4q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vld4q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vld4q_lane_u8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst2_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst2_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst2q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst2q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst2q_lane_u8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst3_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst3_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst3q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst3q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst3q_lane_u8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_f16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_f32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_f64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_p8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst4_lane_s16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_s32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_s64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_s8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst4_lane_u16_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_u32_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_u64_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4_lane_u8_indices_1.c    |  5 +-
 .../advsimd-intrinsics/vst4q_lane_f16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_f32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_f64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_p8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4q_lane_s16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_s32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_s64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_s8_indices_1.c   |  5 +-
 .../advsimd-intrinsics/vst4q_lane_u16_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_u32_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_u64_indices_1.c  |  5 +-
 .../advsimd-intrinsics/vst4q_lane_u8_indices_1.c   |  5 +-
 148 files changed, 358 insertions(+), 515 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2015-11-12 13:13 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-08  0:27 [PATCH v3 0/4] [ARM] PR63870 vldN_lane/vstN_lane error messages charles.baylis
2015-11-08  0:27 ` [PATCH 1/4] [ARM] PR63870 Add qualifiers for NEON builtins charles.baylis
2015-11-09  9:03   ` Ramana Radhakrishnan
2015-11-12 13:12     ` Charles Baylis
2015-11-08  0:27 ` [PATCH 2/4] [ARM] PR63870 Mark lane indices of vldN/vstN with appropriate qualifier charles.baylis
2015-11-09  9:14   ` Ramana Radhakrishnan
2015-11-08  0:27 ` [PATCH 3/4] [ARM] PR63870 Add test cases charles.baylis
2015-11-09  9:19   ` Ramana Radhakrishnan
2015-11-08  0:27 ` [PATCH 4b/4] [ARM] PR63870 Remove error for invalid lane numbers charles.baylis
2015-11-09 13:35   ` Ramana Radhakrishnan
2015-11-12 13:13     ` Charles Baylis
2015-11-11 11:23   ` Kyrill Tkachov
2015-11-11 12:08     ` Charles Baylis
2015-11-11 12:10       ` Kyrill Tkachov
2015-11-12  2:54         ` Charles Baylis
2015-11-08  0:27 ` [PATCH 4a/4] [ARM] PR63870 Use internal_error() " charles.baylis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).