[Bug target/71233] [ARM, AArch64] missing AdvSIMD intrinsics

jgreenhalgh at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 24 10:19:00 GMT 2017


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.


More information about the Gcc-bugs mailing list