-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Labels
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?