On 2023-04-06 12:03 p.m., Jakub Jelinek via Dwarf-discuss wrote:

> In GCC, one uses vector_size attribute to define such types, so say
> typedef int V __attribute__((vector_size (64)));
> where 64 is number of bytes the vector has (so for 4 byte int it is 16
> elements).
> I think Clang supports both these vectors and also ext_vector_size
> attribute, where the latter specifies number of elements rather than size
> and I think has a little bit different other properties.

Hmm.  So in the same program it is possible to have different flavors of
vector types.

Honza's blog post here talks about some of the differences
between Clang's ext_vector_size vectors and GNU vectors:

  http://hubicka.blogspot.com/2018/12/even-more-fun-with-building-and.html

and then Clang's documentation of the vector types lists the different
supported vector extensions:

  
https://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors

  "Supports the GCC, OpenCL, AltiVec, NEON and SVE vector extensions."

So now I'm wondering whether a consumer needs to distinguish the vector flavors.
Do we need some kind of encoding?  E.g., go back to array_type + vector 
attribute,
and give the new attribute an optional value to identifies the vector flavor?

Pedro Alves

> On 64-bit ARM at least (unsure about RISCV), one can also have variable
> number element vectors, where the number of elements of the vector is
> determined by reading some hw register.
> 
-- 
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss

Reply via email to