Closed
Description
The AAPCS64, Appendix 11 (Neon) states that:
The AARCH64 architecture supports a number of short-vector operations. To facilitate accessing these types from C and C++ a number of extended types need to be added to the language.
Following the conventions used for adding types to C99 a number of additional types (internal types) are defined unconditionally.
These internal types are copied below:
Internal type (8) | Internal type (16) | Internal type (32) | Internal type (64) |
---|---|---|---|
__Int8x8_t | __Int16x4_t | __Int32x2_t | |
__Uint8x8_t | __Uint16x4_t | __Uint32x2_t | |
__Float16x4_t | __Float32x2_t | ||
__Poly8x8_t | __Poly16x4_t | ||
__Bfloat16x4_t | |||
__Int8x16_t | __Int16x8_t | __Int32x4_t | __Int64x2_t |
__Uint8x16_t | __Uint16x8_t | __Uint32x4_t | __Uint64x2_t |
__Float16x8_t | __Float32x4_t | __Float64x2_t | |
__Poly8x16_t | __Poly16x8_t | __Poly64x2_t | |
__Bfloat16x8_t |
Appendix 12 defines similar SVE types, such as __SVUint8_t
and __SVBool_t
.
While Clang defines the SVE types, it does not define the Neon types.
GCC defines both. https://godbolt.org/z/jjG9vbj85
Should Clang be defining the internal Neon types?