* [PATCH/RFA] gdbtypes.c simplify SIMD types
@ 2002-05-03 14:10 Elena Zannoni
2002-05-06 9:47 ` Andrew Cagney
2002-05-06 10:37 ` Elena Zannoni
0 siblings, 2 replies; 3+ messages in thread
From: Elena Zannoni @ 2002-05-03 14:10 UTC (permalink / raw)
To: gdb-patches
Following up from the thread:
http://sources.redhat.com/ml/gdb/2002-04/msg00472.html
Here is a patch that simplifies the representation of the SIMD types,
eliminating the structure wrapper.
I also renamed the types to something a bit more meaningful.
Next step would be to switch the i386 registers to use these types.
Elena
2002-05-03 Elena Zannoni <ezannoni@redhat.com>
* gdbtypes.c (init_vector_type): New function.
(build_builtin_type_vec128): Simplify the representation of SIMD
registers.
(build_gdbtypes): Initialize new builtin vector types.
(_initialize_gdbtypes): Register new vector types with gdbarch.
(builtin_type_v4_float, builtin_type_v4_int32,
builtin_type_v8_int16, builtin_type_v16_int8,
builtin_type_v2_int32, builtin_type_v4_int16,
builtin_type_v8_int8): New (renamed) SIMD types.
Index: gdbtypes.c
===================================================================
RCS file: /cvs/uberbaum/gdb/gdbtypes.c,v
retrieving revision 1.44
diff -u -p -r1.44 gdbtypes.c
--- gdbtypes.c 26 Apr 2002 20:08:18 -0000 1.44
+++ gdbtypes.c 3 May 2002 18:53:38 -0000
@@ -71,6 +71,17 @@ struct type *builtin_type_uint64;
struct type *builtin_type_int128;
struct type *builtin_type_uint128;
struct type *builtin_type_bool;
+
+/* 128 bit long vector types */
+struct type *builtin_type_v4_float;
+struct type *builtin_type_v4_int32;
+struct type *builtin_type_v8_int16;
+struct type *builtin_type_v16_int8;
+/* 64 bit long vector types */
+struct type *builtin_type_v2_int32;
+struct type *builtin_type_v4_int16;
+struct type *builtin_type_v8_int8;
+
struct type *builtin_type_v4sf;
struct type *builtin_type_v4si;
struct type *builtin_type_v16qi;
@@ -804,18 +815,30 @@ init_simd_type (char *name,
}
static struct type *
+init_vector_type (struct type *elt_type, int n)
+{
+ struct type *array_type;
+
+ array_type = create_array_type (0, elt_type,
+ create_range_type (0, builtin_type_int,
+ 0, n-1));
+ TYPE_FLAGS (array_type) |= TYPE_FLAG_VECTOR;
+ return array_type;
+}
+
+static struct type *
build_builtin_type_vec128 (void)
{
/* Construct a type for the 128 bit registers. The type we're
building is this: */
#if 0
- union __gdb_builtin_type_vec128
+ union __gdb_builtin_type_vec128
{
- struct __builtin_v16qi v16qi;
- struct __builtin_v8hi v8hi;
- struct __builtin_v4si v4si;
- struct __builtin_v4sf v4sf;
- uint128_t uint128;
+ int128_t uint128;
+ float v4_float[4];
+ int32_t v4_int32[4];
+ int16_t v8_int16[8];
+ int8_t v16_int8[16];
};
#endif
@@ -823,10 +846,10 @@ build_builtin_type_vec128 (void)
t = init_composite_type ("__gdb_builtin_type_vec128", TYPE_CODE_UNION);
append_composite_type_field (t, "uint128", builtin_type_int128);
- append_composite_type_field (t, "v4sf", builtin_type_v4sf);
- append_composite_type_field (t, "v4si", builtin_type_v4si);
- append_composite_type_field (t, "v8hi", builtin_type_v8hi);
- append_composite_type_field (t, "v16qi", builtin_type_v16qi);
+ append_composite_type_field (t, "v4_float", builtin_type_v4_float);
+ append_composite_type_field (t, "v4_int32", builtin_type_v4_int32);
+ append_composite_type_field (t, "v8_int16", builtin_type_v8_int16);
+ append_composite_type_field (t, "v16_int8", builtin_type_v16_int8);
return t;
}
@@ -3282,9 +3305,18 @@ build_gdbtypes (void)
builtin_type_v2si
= init_simd_type ("__builtin_v2si", builtin_type_int32, "f", 2);
+ /* 128 bit vectors. */
+ builtin_type_v4_float = init_vector_type (builtin_type_float, 4);
+ builtin_type_v4_int32 = init_vector_type (builtin_type_int32, 4);
+ builtin_type_v8_int16 = init_vector_type (builtin_type_int16, 8);
+ builtin_type_v16_int8 = init_vector_type (builtin_type_int8, 16);
+ /* 64 bit vectors. */
+ builtin_type_v2_int32 = init_vector_type (builtin_type_int32, 2);
+ builtin_type_v4_int16 = init_vector_type (builtin_type_int16, 4);
+ builtin_type_v8_int8 = init_vector_type (builtin_type_int8, 8);
+
/* Vector types. */
- builtin_type_vec128
- = build_builtin_type_vec128 ();
+ builtin_type_vec128 = build_builtin_type_vec128 ();
/* Pointer/Address types. */
@@ -3373,6 +3405,13 @@ _initialize_gdbtypes (void)
register_gdbarch_swap (&builtin_type_v8hi, sizeof (struct type *), NULL);
register_gdbarch_swap (&builtin_type_v4hi, sizeof (struct type *), NULL);
register_gdbarch_swap (&builtin_type_v2si, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v4_float, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v4_int32, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v8_int16, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v16_int8, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v2_int32, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v8_int8, sizeof (struct type *), NULL);
+ register_gdbarch_swap (&builtin_type_v4_int16, sizeof (struct type *), NULL);
register_gdbarch_swap (&builtin_type_vec128, sizeof (struct type *), NULL);
REGISTER_GDBARCH_SWAP (builtin_type_void_data_ptr);
REGISTER_GDBARCH_SWAP (builtin_type_void_func_ptr);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH/RFA] gdbtypes.c simplify SIMD types
2002-05-03 14:10 [PATCH/RFA] gdbtypes.c simplify SIMD types Elena Zannoni
@ 2002-05-06 9:47 ` Andrew Cagney
2002-05-06 10:37 ` Elena Zannoni
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Cagney @ 2002-05-06 9:47 UTC (permalink / raw)
To: Elena Zannoni; +Cc: gdb-patches
> #if 0
> - union __gdb_builtin_type_vec128
> + union __gdb_builtin_type_vec128
> {
> - struct __builtin_v16qi v16qi;
> - struct __builtin_v8hi v8hi;
> - struct __builtin_v4si v4si;
> - struct __builtin_v4sf v4sf;
> - uint128_t uint128;
> + int128_t uint128;
> + float v4_float[4];
> + int32_t v4_int32[4];
> + int16_t v8_int16[8];
> + int8_t v16_int8[16];
> };
> #endif
Hmm, much better! Now where was that MMX patch.
Andrew
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH/RFA] gdbtypes.c simplify SIMD types
2002-05-03 14:10 [PATCH/RFA] gdbtypes.c simplify SIMD types Elena Zannoni
2002-05-06 9:47 ` Andrew Cagney
@ 2002-05-06 10:37 ` Elena Zannoni
1 sibling, 0 replies; 3+ messages in thread
From: Elena Zannoni @ 2002-05-06 10:37 UTC (permalink / raw)
To: gdb-patches
Elena Zannoni writes:
>
> Following up from the thread:
> http://sources.redhat.com/ml/gdb/2002-04/msg00472.html
>
> Here is a patch that simplifies the representation of the SIMD types,
> eliminating the structure wrapper.
>
> I also renamed the types to something a bit more meaningful.
>
> Next step would be to switch the i386 registers to use these types.
>
> Elena
>
Committed.
Elena
> 2002-05-03 Elena Zannoni <ezannoni@redhat.com>
>
> * gdbtypes.c (init_vector_type): New function.
> (build_builtin_type_vec128): Simplify the representation of SIMD
> registers.
> (build_gdbtypes): Initialize new builtin vector types.
> (_initialize_gdbtypes): Register new vector types with gdbarch.
> (builtin_type_v4_float, builtin_type_v4_int32,
> builtin_type_v8_int16, builtin_type_v16_int8,
> builtin_type_v2_int32, builtin_type_v4_int16,
> builtin_type_v8_int8): New (renamed) SIMD types.
>
> Index: gdbtypes.c
> ===================================================================
> RCS file: /cvs/uberbaum/gdb/gdbtypes.c,v
> retrieving revision 1.44
> diff -u -p -r1.44 gdbtypes.c
> --- gdbtypes.c 26 Apr 2002 20:08:18 -0000 1.44
> +++ gdbtypes.c 3 May 2002 18:53:38 -0000
> @@ -71,6 +71,17 @@ struct type *builtin_type_uint64;
> struct type *builtin_type_int128;
> struct type *builtin_type_uint128;
> struct type *builtin_type_bool;
> +
> +/* 128 bit long vector types */
> +struct type *builtin_type_v4_float;
> +struct type *builtin_type_v4_int32;
> +struct type *builtin_type_v8_int16;
> +struct type *builtin_type_v16_int8;
> +/* 64 bit long vector types */
> +struct type *builtin_type_v2_int32;
> +struct type *builtin_type_v4_int16;
> +struct type *builtin_type_v8_int8;
> +
> struct type *builtin_type_v4sf;
> struct type *builtin_type_v4si;
> struct type *builtin_type_v16qi;
> @@ -804,18 +815,30 @@ init_simd_type (char *name,
> }
>
> static struct type *
> +init_vector_type (struct type *elt_type, int n)
> +{
> + struct type *array_type;
> +
> + array_type = create_array_type (0, elt_type,
> + create_range_type (0, builtin_type_int,
> + 0, n-1));
> + TYPE_FLAGS (array_type) |= TYPE_FLAG_VECTOR;
> + return array_type;
> +}
> +
> +static struct type *
> build_builtin_type_vec128 (void)
> {
> /* Construct a type for the 128 bit registers. The type we're
> building is this: */
> #if 0
> - union __gdb_builtin_type_vec128
> + union __gdb_builtin_type_vec128
> {
> - struct __builtin_v16qi v16qi;
> - struct __builtin_v8hi v8hi;
> - struct __builtin_v4si v4si;
> - struct __builtin_v4sf v4sf;
> - uint128_t uint128;
> + int128_t uint128;
> + float v4_float[4];
> + int32_t v4_int32[4];
> + int16_t v8_int16[8];
> + int8_t v16_int8[16];
> };
> #endif
>
> @@ -823,10 +846,10 @@ build_builtin_type_vec128 (void)
>
> t = init_composite_type ("__gdb_builtin_type_vec128", TYPE_CODE_UNION);
> append_composite_type_field (t, "uint128", builtin_type_int128);
> - append_composite_type_field (t, "v4sf", builtin_type_v4sf);
> - append_composite_type_field (t, "v4si", builtin_type_v4si);
> - append_composite_type_field (t, "v8hi", builtin_type_v8hi);
> - append_composite_type_field (t, "v16qi", builtin_type_v16qi);
> + append_composite_type_field (t, "v4_float", builtin_type_v4_float);
> + append_composite_type_field (t, "v4_int32", builtin_type_v4_int32);
> + append_composite_type_field (t, "v8_int16", builtin_type_v8_int16);
> + append_composite_type_field (t, "v16_int8", builtin_type_v16_int8);
>
> return t;
> }
> @@ -3282,9 +3305,18 @@ build_gdbtypes (void)
> builtin_type_v2si
> = init_simd_type ("__builtin_v2si", builtin_type_int32, "f", 2);
>
> + /* 128 bit vectors. */
> + builtin_type_v4_float = init_vector_type (builtin_type_float, 4);
> + builtin_type_v4_int32 = init_vector_type (builtin_type_int32, 4);
> + builtin_type_v8_int16 = init_vector_type (builtin_type_int16, 8);
> + builtin_type_v16_int8 = init_vector_type (builtin_type_int8, 16);
> + /* 64 bit vectors. */
> + builtin_type_v2_int32 = init_vector_type (builtin_type_int32, 2);
> + builtin_type_v4_int16 = init_vector_type (builtin_type_int16, 4);
> + builtin_type_v8_int8 = init_vector_type (builtin_type_int8, 8);
> +
> /* Vector types. */
> - builtin_type_vec128
> - = build_builtin_type_vec128 ();
> + builtin_type_vec128 = build_builtin_type_vec128 ();
>
> /* Pointer/Address types. */
>
> @@ -3373,6 +3405,13 @@ _initialize_gdbtypes (void)
> register_gdbarch_swap (&builtin_type_v8hi, sizeof (struct type *), NULL);
> register_gdbarch_swap (&builtin_type_v4hi, sizeof (struct type *), NULL);
> register_gdbarch_swap (&builtin_type_v2si, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v4_float, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v4_int32, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v8_int16, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v16_int8, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v2_int32, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v8_int8, sizeof (struct type *), NULL);
> + register_gdbarch_swap (&builtin_type_v4_int16, sizeof (struct type *), NULL);
> register_gdbarch_swap (&builtin_type_vec128, sizeof (struct type *), NULL);
> REGISTER_GDBARCH_SWAP (builtin_type_void_data_ptr);
> REGISTER_GDBARCH_SWAP (builtin_type_void_func_ptr);
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-05-06 17:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-03 14:10 [PATCH/RFA] gdbtypes.c simplify SIMD types Elena Zannoni
2002-05-06 9:47 ` Andrew Cagney
2002-05-06 10:37 ` Elena Zannoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox