> Vector registers > > It has been the long standing existing practice to treat hardware > vector registers as arrays of a fundamental base type. To deliniate > these hardware register arrays from arrays in the language source they > have been given the DW_AT_GNU_vector attribute. This proposal simply > standardizes the existing behavior. > > In Section 2.2 Attribute Types, DW_AT_vector and > DW_AT_variable_vector_width shall be added to Table 2.2 > > -------------------------------------------------------------------- > DW_AT_vector | A hardware vector register > DW_AT_variable_vector_width | Array bound for hardware > | implementation defined vector register > | width > --------------------------------------------------------------------
I don't understand what tags this DW_AT_vector attribute would apply to. Vector registers aren't *types*, they're *locations*, so it doesn't really make sense to me to put this attribute on a DW_TAG_array_type. We don't have DW_TAGs that describe registers; the ABI defines the registers and DWARF producers and consumers should understand and agree on the sizes and shapes of the various registers. In Tony's proposal, the new attribute modifies a base type, thus introducing a vector type, which might get placed in a vector register. But there, I don't see how the vector base type is fundamentally different from an array type. It seems it's just a dodge to make it a base type so that we can put whole vectors on the stack. Maybe what we're looking for is a DW_TAG_vector_type, whose DW_AT_type attribute gives the base type for each element of the vector. This seems to be more DWARF-like, and if we decide there's a reason to allow stack entries with vector types, we can do that. -cary -- Dwarf-discuss mailing list Dwarf-discuss@lists.dwarfstd.org https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss