diff options
author | jgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-18 10:00:29 +0000 |
---|---|---|
committer | jgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-18 10:00:29 +0000 |
commit | 6612f29877bd28ab6dd906f3e03fc715741d1591 (patch) | |
tree | 7b878eb0dde13d7a71f43064ee3131e7120be2a1 /gcc/config/arm/arm_neon.h | |
parent | ad9bc4323011647de9e3c487b995b9ec83a64b7a (diff) | |
download | gcc-6612f29877bd28ab6dd906f3e03fc715741d1591.tar.gz |
[Patch ARM Refactor Builtins 7/8] Use qualifiers arrays when initialising builtins and fix type mangling
gcc/
* config/arm/arm-builtins.c (arm_scalar_builtin_types): New.
(enum arm_simd_type): Likewise.
(struct arm_simd_type_info): Likewise
(arm_mangle_builtin_scalar_type): Likewise.
(arm_mangle_builtin_vector_type): Likewise.
(arm_mangle_builtin_type): Likewise.
(arm_simd_builtin_std_type): Likewise.
(arm_lookup_simd_builtin_type): Likewise.
(arm_simd_builtin_type): Likewise.
(arm_init_simd_builtin_types): Likewise.
(arm_init_simd_builtin_scalar_types): Likewise.
(arm_init_neon_builtins): Rewrite using qualifiers.
* config/arm/arm-protos.h (arm_mangle_builtin_type): New.
* config/arm/arm-simd-builtin-types.def: New file.
* config/arm/t-arm (arm-builtins.o): Depend on it.
* config/arm/arm.c (arm_mangle_type): Call arm_mangle_builtin_type.
* config/arm/arm_neon.h (int8x8_t): Use new internal type.
(int16x4_t): Likewise.
(int32x2_t): Likewise.
(float16x4_t): Likewise.
(float32x2_t): Likewise.
(poly8x8_t): Likewise.
(poly16x4_t): Likewise.
(uint8x8_t): Likewise.
(uint16x4_t): Likewise.
(uint32x2_t): Likewise.
(int8x16_t): Likewise.
(int16x8_t): Likewise.
(int32x4_t): Likewise.
(int64x2_t): Likewise.
(float32x4_t): Likewise.
(poly8x16_t): Likewise.
(poly16x8_t): Likewise.
(uint8x16_t): Likewise.
(uint16x8_t): Likewise.
(uint32x4_t): Likewise.
(uint64x2_t): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217699 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/arm_neon.h')
-rw-r--r-- | gcc/config/arm/arm_neon.h | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index d27d970a846..e58b772ee29 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -37,37 +37,42 @@ extern "C" { #include <stdint.h> -typedef __builtin_neon_qi int8x8_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_hi int16x4_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_si int32x2_t __attribute__ ((__vector_size__ (8))); +typedef __simd64_int8_t int8x8_t; +typedef __simd64_int16_t int16x4_t; +typedef __simd64_int32_t int32x2_t; typedef __builtin_neon_di int64x1_t; -typedef __builtin_neon_hf float16x4_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_sf float32x2_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_poly8 poly8x8_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_poly16 poly16x4_t __attribute__ ((__vector_size__ (8))); +typedef __simd64_float16_t float16x4_t; +typedef __simd64_float32_t float32x2_t; +typedef __simd64_poly8_t poly8x8_t; +typedef __simd64_poly16_t poly16x4_t; #ifdef __ARM_FEATURE_CRYPTO typedef __builtin_neon_poly64 poly64x1_t; #endif -typedef __builtin_neon_uqi uint8x8_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_uhi uint16x4_t __attribute__ ((__vector_size__ (8))); -typedef __builtin_neon_usi uint32x2_t __attribute__ ((__vector_size__ (8))); +typedef __simd64_uint8_t uint8x8_t; +typedef __simd64_uint16_t uint16x4_t; +typedef __simd64_uint32_t uint32x2_t; typedef __builtin_neon_udi uint64x1_t; -typedef __builtin_neon_qi int8x16_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_hi int16x8_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_si int32x4_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_di int64x2_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_sf float32x4_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_poly8 poly8x16_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_poly16 poly16x8_t __attribute__ ((__vector_size__ (16))); + +typedef __simd128_int8_t int8x16_t; +typedef __simd128_int16_t int16x8_t; +typedef __simd128_int32_t int32x4_t; +typedef __simd128_int64_t int64x2_t; +typedef __simd128_float32_t float32x4_t; +typedef __simd128_poly8_t poly8x16_t; +typedef __simd128_poly16_t poly16x8_t; #ifdef __ARM_FEATURE_CRYPTO -typedef __builtin_neon_poly64 poly64x2_t __attribute__ ((__vector_size__ (16))); +typedef __builtin_neon_poly64 poly64x2_t __attribute__ ((__vector_size__ (16))); #endif -typedef __builtin_neon_uqi uint8x16_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_uhi uint16x8_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_usi uint32x4_t __attribute__ ((__vector_size__ (16))); -typedef __builtin_neon_udi uint64x2_t __attribute__ ((__vector_size__ (16))); + +typedef __simd128_uint8_t uint8x16_t; +typedef __simd128_uint16_t uint16x8_t; +typedef __simd128_uint32_t uint32x4_t; +typedef __simd128_uint64_t uint64x2_t; typedef float float32_t; + +/* The Poly types are user visible and live in their own world, + keep them that way. */ typedef __builtin_neon_poly8 poly8_t; typedef __builtin_neon_poly16 poly16_t; #ifdef __ARM_FEATURE_CRYPTO |