[llvm] b577438 - [SelectionDAG] Update documentation for VECTOR_[DE]INTERLEAVE nodes. NFC (#141644)
via llvm-commits
llvm-commits at lists.llvm.org
Wed May 28 01:30:17 PDT 2025
Author: Luke Lau
Date: 2025-05-28T09:30:14+01:00
New Revision: b577438a879327dfb79b13bfc0122dd0434ebd92
URL: https://github.com/llvm/llvm-project/commit/b577438a879327dfb79b13bfc0122dd0434ebd92
DIFF: https://github.com/llvm/llvm-project/commit/b577438a879327dfb79b13bfc0122dd0434ebd92.diff
LOG: [SelectionDAG] Update documentation for VECTOR_[DE]INTERLEAVE nodes. NFC (#141644)
These can now support an arbitrary factor determined by the number of
operands/results. Fixes #141565
Added:
Modified:
llvm/include/llvm/CodeGen/ISDOpcodes.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/CodeGen/ISDOpcodes.h b/llvm/include/llvm/CodeGen/ISDOpcodes.h
index 99c8725e98b0d..b4522b764980c 100644
--- a/llvm/include/llvm/CodeGen/ISDOpcodes.h
+++ b/llvm/include/llvm/CodeGen/ISDOpcodes.h
@@ -599,17 +599,25 @@ enum NodeType {
/// vector, but not the other way around.
EXTRACT_SUBVECTOR,
- /// VECTOR_DEINTERLEAVE(VEC1, VEC2) - Returns two vectors with all input and
- /// output vectors having the same type. The first output contains the even
- /// indices from CONCAT_VECTORS(VEC1, VEC2), with the second output
- /// containing the odd indices. The relative order of elements within an
- /// output match that of the concatenated input.
+ /// VECTOR_DEINTERLEAVE(VEC1, VEC2, ...) - Returns N vectors from N input
+ /// vectors, where N is the factor to deinterleave. All input and output
+ /// vectors must have the same type.
+ ///
+ /// Each output contains the deinterleaved indices for a specific field from
+ /// CONCAT_VECTORS(VEC1, VEC2, ...):
+ ///
+ /// Result[I][J] = CONCAT_VECTORS(...)[I + N * J]
VECTOR_DEINTERLEAVE,
- /// VECTOR_INTERLEAVE(VEC1, VEC2) - Returns two vectors with all input and
- /// output vectors having the same type. The first output contains the
- /// result of interleaving the low half of CONCAT_VECTORS(VEC1, VEC2), with
- /// the second output containing the result of interleaving the high half.
+ /// VECTOR_INTERLEAVE(VEC1, VEC2, ...) - Returns N vectors from N input
+ /// vectors, where N is the factor to interleave. All input and
+ /// output vectors must have the same type.
+ ///
+ /// All input vectors are interleaved into one wide vector, which is then
+ /// chunked into equal sized parts:
+ ///
+ /// Interleaved[I] = VEC(I % N)[I / N]
+ /// Result[J] = EXTRACT_SUBVECTOR(Interleaved, J * getVectorMinNumElements())
VECTOR_INTERLEAVE,
/// VECTOR_REVERSE(VECTOR) - Returns a vector, of the same type as VECTOR,
More information about the llvm-commits
mailing list