From 07312f0c2b87492f18a0fb44a091b0ff54f49b5f Mon Sep 17 00:00:00 2001 From: Anton Korobeynikov Date: Wed, 2 Sep 2009 18:59:09 +0000 Subject: [PATCH] Missed part from my V1DI'fication. This makes something around 50 tests from gcc NEON testsuite happy git-svn-id: https://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk@80814 91177308-0d34-0410-b5e6-96231b3b80d8 --- gcc/config/arm/arm.c | 49 ++++++++++++++++++++--------------------------- gcc/config/arm/arm_neon.h | 36 +++++++++++++++++----------------- gcc/config/arm/neon.ml | 6 +++--- 3 files changed, 42 insertions(+), 49 deletions(-) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 3fc97c9e..981b6d77 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -16688,7 +16688,6 @@ arm_init_neon_builtins (void) #define pv4hi_TN V4HI2_type_node #define pv2si_TN V2SI2_type_node #define pv2sf_TN V2SF2_type_node -#define pdi_TN DI1_type_node #define pv16qi_TN V16QI2_type_node #define pv8hi_TN V8HI2_type_node @@ -16701,7 +16700,7 @@ arm_init_neon_builtins (void) #define pv4hi_TN V4HI_pointer_node #define pv2si_TN V2SI_pointer_node #define pv2sf_TN V2SF_pointer_node -#define pdi_TN intDI_pointer_node +#define pv1di_TN V1DI_pointer_node #define pv16qi_TN V16QI_pointer_node #define pv8hi_TN V8HI_pointer_node @@ -16816,12 +16815,8 @@ arm_init_neon_builtins (void) "__builtin_neon_v4hi2"); tree V2SI2_type_node = build_multivec_type (V2SI_type_node, 2, "__builtin_neon_v2si2"); - tree V1DI2_type_node = build_multivec_type (V1DI_type_node, 1, + tree V1DI2_type_node = build_multivec_type (V1DI_type_node, 2, "__builtin_neon_v1di2"); - tree DI1_type_node = build_multivec_type (neon_intDI_type_node, 1, - "__builtin_neon_di1"); - tree DI2_type_node = build_multivec_type (neon_intDI_type_node, 2, - "__builtin_neon_di2"); tree V2SF2_type_node = build_multivec_type (V2SF_type_node, 2, "__builtin_neon_v2sf2"); tree V8QI3_type_node = build_multivec_type (V8QI_type_node, 3, @@ -16830,8 +16825,8 @@ arm_init_neon_builtins (void) "__builtin_neon_v4hi3"); tree V2SI3_type_node = build_multivec_type (V2SI_type_node, 3, "__builtin_neon_v2si3"); - tree DI3_type_node = build_multivec_type (neon_intDI_type_node, 3, - "__builtin_neon_di3"); + tree V1DI3_type_node = build_multivec_type (V1DI_type_node, 3, + "__builtin_neon_v1di2"); tree V2SF3_type_node = build_multivec_type (V2SF_type_node, 3, "__builtin_neon_v2sf3"); tree V8QI4_type_node = build_multivec_type (V8QI_type_node, 4, @@ -16840,8 +16835,8 @@ arm_init_neon_builtins (void) "__builtin_neon_v4hi4"); tree V2SI4_type_node = build_multivec_type (V2SI_type_node, 4, "__builtin_neon_v2si4"); - tree DI4_type_node = build_multivec_type (neon_intDI_type_node, 4, - "__builtin_neon_di4"); + tree V1DI4_type_node = build_multivec_type (V1DI_type_node, 4, + "__builtin_neon_v1di2"); tree V2SF4_type_node = build_multivec_type (V2SF_type_node, 4, "__builtin_neon_v2sf4"); tree V16QI2_type_node = build_multivec_type (V16QI_type_node, 2, @@ -16880,17 +16875,17 @@ arm_init_neon_builtins (void) tree V8QI2_type_node = intTI_type_node; tree V4HI2_type_node = intTI_type_node; tree V2SI2_type_node = intTI_type_node; - tree DI2_type_node = intTI_type_node; + tree V1DI2_type_node = intTI_type_node; tree V2SF2_type_node = intTI_type_node; tree V8QI3_type_node = intEI_type_node; tree V4HI3_type_node = intEI_type_node; tree V2SI3_type_node = intEI_type_node; - tree DI3_type_node = intEI_type_node; + tree V1DI3_type_node = intEI_type_node; tree V2SF3_type_node = intEI_type_node; tree V8QI4_type_node = intOI_type_node; tree V4HI4_type_node = intOI_type_node; tree V2SI4_type_node = intOI_type_node; - tree DI4_type_node = intOI_type_node; + tree V1DI4_type_node = intOI_type_node; tree V2SF4_type_node = intOI_type_node; tree V16QI2_type_node = intOI_type_node; tree V8HI2_type_node = intOI_type_node; @@ -17359,7 +17354,7 @@ arm_init_neon_builtins (void) tree ti_ftype_const_si_pointer = build_function_type_list (V2SI2_type_node, const_intSI_pointer_node, NULL); tree ti_ftype_const_di_pointer = - build_function_type_list (DI2_type_node, const_intDI_pointer_node, NULL); + build_function_type_list (V1DI2_type_node, const_intDI_pointer_node, NULL); tree ti_ftype_const_sf_pointer = build_function_type_list (V2SF2_type_node, const_float_pointer_node, NULL); @@ -17431,7 +17426,7 @@ arm_init_neon_builtins (void) V2SI2_type_node, NULL); tree void_ftype_di_pointer_ti = build_function_type_list (void_type_node, intDI_pointer_node, - DI2_type_node, NULL); + V1DI2_type_node, NULL); tree void_ftype_sf_pointer_ti = build_function_type_list (void_type_node, float_pointer_node, V2SF2_type_node, NULL); @@ -17508,7 +17503,7 @@ arm_init_neon_builtins (void) tree ei_ftype_const_si_pointer = build_function_type_list (V2SI3_type_node, const_intSI_pointer_node, NULL); tree ei_ftype_const_di_pointer = - build_function_type_list (DI3_type_node, const_intDI_pointer_node, NULL); + build_function_type_list (V1DI3_type_node, const_intDI_pointer_node, NULL); tree ei_ftype_const_sf_pointer = build_function_type_list (V2SF3_type_node, const_float_pointer_node, NULL); @@ -17559,7 +17554,7 @@ arm_init_neon_builtins (void) V2SI3_type_node, NULL); tree void_ftype_di_pointer_ei = build_function_type_list (void_type_node, intDI_pointer_node, - DI3_type_node, NULL); + V1DI3_type_node, NULL); tree void_ftype_sf_pointer_ei = build_function_type_list (void_type_node, float_pointer_node, V2SF3_type_node, NULL); @@ -17605,7 +17600,7 @@ arm_init_neon_builtins (void) /* Load size-4 structure operations, double-word. */ tree oi_ftype_const_di_pointer = - build_function_type_list (DI4_type_node, const_intDI_pointer_node, NULL); + build_function_type_list (V1DI4_type_node, const_intDI_pointer_node, NULL); /* Load size-4 structure operations, quad-word. */ tree xi_ftype_const_qi_pointer = @@ -17636,7 +17631,7 @@ arm_init_neon_builtins (void) /* Store size-4 structure operations, double-word. */ tree void_ftype_di_pointer_oi = build_function_type_list (void_type_node, intDI_pointer_node, - DI4_type_node, NULL); + V1DI4_type_node, NULL); /* Store size-4 structure operations, quad-word. */ tree void_ftype_qi_pointer_xi = @@ -17709,32 +17704,30 @@ arm_init_neon_builtins (void) "__builtin_neon_v4hi2"); (*lang_hooks.types.register_builtin_type) (V2SI2_type_node, "__builtin_neon_v2si2"); - (*lang_hooks.types.register_builtin_type) (DI1_type_node, - "__builtin_neon_di1"); - (*lang_hooks.types.register_builtin_type) (DI2_type_node, - "__builtin_neon_di2"); (*lang_hooks.types.register_builtin_type) (V2SF2_type_node, "__builtin_neon_v2sf2"); + (*lang_hooks.types.register_builtin_type) (V1DI2_type_node, + "__builtin_neon_v1di2"); (*lang_hooks.types.register_builtin_type) (V8QI3_type_node, "__builtin_neon_v8qi3"); (*lang_hooks.types.register_builtin_type) (V4HI3_type_node, "__builtin_neon_v4hi3"); (*lang_hooks.types.register_builtin_type) (V2SI3_type_node, "__builtin_neon_v2si3"); - (*lang_hooks.types.register_builtin_type) (DI3_type_node, - "__builtin_neon_di3"); (*lang_hooks.types.register_builtin_type) (V2SF3_type_node, "__builtin_neon_v2sf3"); + (*lang_hooks.types.register_builtin_type) (V1DI3_type_node, + "__builtin_neon_v1di3"); (*lang_hooks.types.register_builtin_type) (V8QI4_type_node, "__builtin_neon_v8qi4"); (*lang_hooks.types.register_builtin_type) (V4HI4_type_node, "__builtin_neon_v4hi4"); (*lang_hooks.types.register_builtin_type) (V2SI4_type_node, "__builtin_neon_v2si4"); - (*lang_hooks.types.register_builtin_type) (DI4_type_node, - "__builtin_neon_di4"); (*lang_hooks.types.register_builtin_type) (V2SF4_type_node, "__builtin_neon_v2sf4"); + (*lang_hooks.types.register_builtin_type) (V1DI4_type_node, + "__builtin_neon_v1di4"); (*lang_hooks.types.register_builtin_type) (V16QI2_type_node, "__builtin_neon_v16qi2"); (*lang_hooks.types.register_builtin_type) (V8HI2_type_node, diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index e38b3f00..ff92d7f4 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -4717,14 +4717,14 @@ typedef struct poly16x8x4_t #define vld2_s64(__a) \ ({ \ - union { int64x1x2_t __i; __builtin_neon_di2 __o; } __rv; \ + union { int64x1x2_t __i; __builtin_neon_v1di2 __o; } __rv; \ __rv.__o = __builtin_neon_vld2v1di (__a); \ __rv.__i; \ }) #define vld2_u64(__a) \ ({ \ - union { uint64x1x2_t __i; __builtin_neon_di2 __o; } __rv; \ + union { uint64x1x2_t __i; __builtin_neon_v1di2 __o; } __rv; \ __rv.__o = __builtin_neon_vld2v1di (__a); \ __rv.__i; \ }) @@ -4977,14 +4977,14 @@ typedef struct poly16x8x4_t #define vld2_dup_s64(__a) \ ({ \ - union { int64x1x2_t __i; __builtin_neon_di2 __o; } __rv; \ + union { int64x1x2_t __i; __builtin_neon_v1di2 __o; } __rv; \ __rv.__o = __builtin_neon_vld2_dupv1di (__a); \ __rv.__i; \ }) #define vld2_dup_u64(__a) \ ({ \ - union { uint64x1x2_t __i; __builtin_neon_di2 __o; } __rv; \ + union { uint64x1x2_t __i; __builtin_neon_v1di2 __o; } __rv; \ __rv.__o = __builtin_neon_vld2_dupv1di (__a); \ __rv.__i; \ }) @@ -5045,13 +5045,13 @@ typedef struct poly16x8x4_t #define vst2_s64(__a, __b) \ ({ \ - union { int64x1x2_t __i; __builtin_neon_di2 __o; } __bu = { __b }; \ + union { int64x1x2_t __i; __builtin_neon_v1di2 __o; } __bu = { __b }; \ __builtin_neon_vst2v1di (__a, __bu.__o); \ }) #define vst2_u64(__a, __b) \ ({ \ - union { uint64x1x2_t __i; __builtin_neon_di2 __o; } __bu = { __b }; \ + union { uint64x1x2_t __i; __builtin_neon_v1di2 __o; } __bu = { __b }; \ __builtin_neon_vst2v1di (__a, __bu.__o); \ }) @@ -5264,14 +5264,14 @@ typedef struct poly16x8x4_t #define vld3_s64(__a) \ ({ \ - union { int64x1x3_t __i; __builtin_neon_di3 __o; } __rv; \ + union { int64x1x3_t __i; __builtin_neon_v1di3 __o; } __rv; \ __rv.__o = __builtin_neon_vld3v1di (__a); \ __rv.__i; \ }) #define vld3_u64(__a) \ ({ \ - union { uint64x1x3_t __i; __builtin_neon_di3 __o; } __rv; \ + union { uint64x1x3_t __i; __builtin_neon_v1di3 __o; } __rv; \ __rv.__o = __builtin_neon_vld3v1di (__a); \ __rv.__i; \ }) @@ -5524,14 +5524,14 @@ typedef struct poly16x8x4_t #define vld3_dup_s64(__a) \ ({ \ - union { int64x1x3_t __i; __builtin_neon_di3 __o; } __rv; \ + union { int64x1x3_t __i; __builtin_neon_v1di3 __o; } __rv; \ __rv.__o = __builtin_neon_vld3_dupv1di (__a); \ __rv.__i; \ }) #define vld3_dup_u64(__a) \ ({ \ - union { uint64x1x3_t __i; __builtin_neon_di3 __o; } __rv; \ + union { uint64x1x3_t __i; __builtin_neon_v1di3 __o; } __rv; \ __rv.__o = __builtin_neon_vld3_dupv1di (__a); \ __rv.__i; \ }) @@ -5592,13 +5592,13 @@ typedef struct poly16x8x4_t #define vst3_s64(__a, __b) \ ({ \ - union { int64x1x3_t __i; __builtin_neon_di3 __o; } __bu = { __b }; \ + union { int64x1x3_t __i; __builtin_neon_v1di3 __o; } __bu = { __b }; \ __builtin_neon_vst3v1di (__a, __bu.__o); \ }) #define vst3_u64(__a, __b) \ ({ \ - union { uint64x1x3_t __i; __builtin_neon_di3 __o; } __bu = { __b }; \ + union { uint64x1x3_t __i; __builtin_neon_v1di3 __o; } __bu = { __b }; \ __builtin_neon_vst3v1di (__a, __bu.__o); \ }) @@ -5811,14 +5811,14 @@ typedef struct poly16x8x4_t #define vld4_s64(__a) \ ({ \ - union { int64x1x4_t __i; __builtin_neon_di4 __o; } __rv; \ + union { int64x1x4_t __i; __builtin_neon_v1di4 __o; } __rv; \ __rv.__o = __builtin_neon_vld4v1di (__a); \ __rv.__i; \ }) #define vld4_u64(__a) \ ({ \ - union { uint64x1x4_t __i; __builtin_neon_di4 __o; } __rv; \ + union { uint64x1x4_t __i; __builtin_neon_v1di4 __o; } __rv; \ __rv.__o = __builtin_neon_vld4v1di (__a); \ __rv.__i; \ }) @@ -6071,14 +6071,14 @@ typedef struct poly16x8x4_t #define vld4_dup_s64(__a) \ ({ \ - union { int64x1x4_t __i; __builtin_neon_di4 __o; } __rv; \ + union { int64x1x4_t __i; __builtin_neon_v1di4 __o; } __rv; \ __rv.__o = __builtin_neon_vld4_dupv1di (__a); \ __rv.__i; \ }) #define vld4_dup_u64(__a) \ ({ \ - union { uint64x1x4_t __i; __builtin_neon_di4 __o; } __rv; \ + union { uint64x1x4_t __i; __builtin_neon_v1di4 __o; } __rv; \ __rv.__o = __builtin_neon_vld4_dupv1di (__a); \ __rv.__i; \ }) @@ -6139,13 +6139,13 @@ typedef struct poly16x8x4_t #define vst4_s64(__a, __b) \ ({ \ - union { int64x1x4_t __i; __builtin_neon_di4 __o; } __bu = { __b }; \ + union { int64x1x4_t __i; __builtin_neon_v1di4 __o; } __bu = { __b }; \ __builtin_neon_vst4v1di (__a, __bu.__o); \ }) #define vst4_u64(__a, __b) \ ({ \ - union { uint64x1x4_t __i; __builtin_neon_di4 __o; } __bu = { __b }; \ + union { uint64x1x4_t __i; __builtin_neon_v1di4 __o; } __bu = { __b }; \ __builtin_neon_vst4v1di (__a, __bu.__o); \ }) diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml index e0ce5b82..6c10c409 100644 --- a/gcc/config/arm/neon.ml +++ b/gcc/config/arm/neon.ml @@ -1781,17 +1781,17 @@ let string_of_inttype = function B_TId8mode -> "__builtin_neon_v8qi2" | B_TId16mode -> "__builtin_neon_v4hi2" | B_TId32mode -> "__builtin_neon_v2si2" - | B_TId64mode -> "__builtin_neon_di2" + | B_TId64mode -> "__builtin_neon_v1di2" | B_TIdSFmode -> "__builtin_neon_v2sf2" | B_EId8mode -> "__builtin_neon_v8qi3" | B_EId16mode -> "__builtin_neon_v4hi3" | B_EId32mode -> "__builtin_neon_v2si3" - | B_EId64mode -> "__builtin_neon_di3" + | B_EId64mode -> "__builtin_neon_v1di3" | B_EIdSFmode -> "__builtin_neon_v2sf3" | B_OId8mode -> "__builtin_neon_v8qi4" | B_OId16mode -> "__builtin_neon_v4hi4" | B_OId32mode -> "__builtin_neon_v2si4" - | B_OId64mode -> "__builtin_neon_di4" + | B_OId64mode -> "__builtin_neon_v1di4" | B_OIdSFmode -> "__builtin_neon_v2sf4" | B_OIq8mode -> "__builtin_neon_v16qi2" | B_OIq16mode -> "__builtin_neon_v8hi2" -- 2.11.4.GIT