[Clang] Add queryable feature 'ext_vector_type_boolean' for SIMD masks (#154227)
Summary: We added boolean vectors in clang 15 and wish to extend them further in clang-22. However, there's no way to query for their support as they are separate to the normal extended vector type. This adds a feature so we can check for it as a feature directly.
This commit is contained in:
parent
410a1341b5
commit
2f6b747997
@ -635,11 +635,12 @@ C and C++. For example:
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
Boolean vectors are a Clang extension of the ext vector type. Boolean vectors
|
||||
are intended, though not guaranteed, to map to vector mask registers. The size
|
||||
parameter of a boolean vector type is the number of bits in the vector. The
|
||||
boolean vector is dense and each bit in the boolean vector is one vector
|
||||
element.
|
||||
element. Query for this feature with ``__has_feature(ext_vector_type_boolean)``.
|
||||
|
||||
The semantics of boolean vectors borrows from C bit-fields with the following
|
||||
differences:
|
||||
|
@ -128,6 +128,7 @@ FEATURE(attribute_overloadable, true)
|
||||
FEATURE(attribute_unavailable_with_message, true)
|
||||
FEATURE(attribute_unused_on_fields, true)
|
||||
FEATURE(attribute_diagnose_if_objc, true)
|
||||
FEATURE(ext_vector_type_boolean, true)
|
||||
FEATURE(blocks, LangOpts.Blocks)
|
||||
FEATURE(c_thread_safety_attributes, true)
|
||||
FEATURE(cxx_exceptions, LangOpts.CXXExceptions)
|
||||
|
@ -112,3 +112,7 @@ void Sizeof() {
|
||||
static_assert(sizeof(Bool195) == 32);
|
||||
static_assert(sizeof(Bool257) == 64);
|
||||
}
|
||||
|
||||
#if !__has_feature(ext_vector_type_boolean)
|
||||
#error "FAIL"
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user