Author: Joseph Huber Date: 2025-03-07T13:55:39-06:00 New Revision: fefb6858da42053268b53c07aff8e1cf84dc1ada
URL: https://github.com/llvm/llvm-project/commit/fefb6858da42053268b53c07aff8e1cf84dc1ada DIFF: https://github.com/llvm/llvm-project/commit/fefb6858da42053268b53c07aff8e1cf84dc1ada.diff LOG: [Clang][Docs] Fix ``ext_vector_type`` code block documentation Added: Modified: clang/include/clang/Basic/AttrDocs.td Removed: ################################################################################ diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index a1b08ac23ee9d..1f2f02a4453fc 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -1116,10 +1116,10 @@ template instantiation, so the value for ``T::number`` is known. def ExtVectorTypeDocs : Documentation { let Category = DocCatFunction; let Content = [{ -The ext_vector_type(N) attribute specifies that a type is a vector with N +The ``ext_vector_type(N)`` attribute specifies that a type is a vector with N elements, directly mapping to an LLVM vector type. Originally from OpenCL, it -allows element access the array subscript operator ``[]``, ``sN`` where ``N`` is -a hexadecimal value, or ``x``, ``y``, ``z``, ``w`` for graphics-style indexing. +allows element access the array subscript operator ``[]``, ``sN`` where N is +a hexadecimal value, or ``x, y, z, w`` for graphics-style indexing. This attribute enables efficient SIMD operations and is usable in general-purpose code. @@ -1128,17 +1128,16 @@ general-purpose code. template <typename T, uint32_t N> constexpr T simd_reduce(T [[clang::ext_vector_type(N)]] v) { static_assert((N & (N - 1)) == 0, "N must be a power of two"); - if constexpr (N == 1) { + if constexpr (N == 1) return v[0]; - } else { - T [[clang::ext_vector_type(N / 2)]] reduced = v.hi + v.lo; - return simd_reduce(reduced); - } + else + return simd_reduce<T, N / 2>(v.hi + v.lo); } The vector type also supports swizzling up to sixteen elements. This can be done -using the object accessors. The OpenCL documentation lists the full list of -accepted values. +using the object accessors. The OpenCL documentation lists all of the accepted +values. + .. code-block:: c++ using f16_x16 = _Float16 __attribute__((ext_vector_type(16))); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits