https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71233
James Greenhalgh <jgreenhalgh at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jgreenhalgh at gcc dot gnu.org --- Comment #15 from James Greenhalgh <jgreenhalgh at gcc dot gnu.org> --- (In reply to Christophe Lyon from comment #6) > I used the perl script and intrinsics list to build several subsets: > > # List of duplicates: (a few intrinsics are listed twice > # with different prototypes, it's likely a bug in the documentation, > # not sure where to report this?) > perl neon_intrinsics.pl < intrinsics.txt |awk '{print $3;}' |sort |uniq -c > |sort -n| grep -v '^ *1 ' 2 vqrdmlah_laneq_s16 2 vqrdmlah_lane_s16 2 vqrdmlahq_laneq_s16 2 vqrdmlahq_lane_s16 2 vqrdmlsh_laneq_s16 2 vqrdmlsh_lane_s16 2 vqrdmlshq_laneq_s16 2 vqrdmlshq_lane_s16 These are bugs s16 should be s32 for all of these. I've fixed them for the next spec release. 2 vreinterpretq_u64_p64 2 vreinterpret_u64_p64 These are just duplicates. I've fixed them for the next spec release. 2 vshll_high_n_s16 2 vshll_high_n_s32 2 vshll_high_n_s8 2 vshll_high_n_u16 2 vshll_high_n_u32 2 vshll_high_n_u8 2 vshll_n_s16 2 vshll_n_s32 2 vshll_n_s8 2 vshll_n_u16 2 vshll_n_u32 2 vshll_n_u8 These are all attempts to encode that two different instructions can be generated depending on whether the 'n' parameter is equal to the number of bits in the vector lane. For example, vshll_n_s16 (int8x8_t a, __builtin_constant_p(n)) Generates SSHLL if 0 <= n < 16, and SHLL if n == 16. I agree that having two entries for these can be confusing, but you can think of them as "false positives" for now. I'll think about how I could improve the documentation to allow us to give this information without duplicating the prototypes.