[RISCV] Improve isInterleaveShuffle to handle interleaving the high half and...
[RISCV] Improve isInterleaveShuffle to handle interleaving the high half and low half of the same source. This is needed to support the new interleave intrinsics from D141924 for fixed vectors. I've reworked the core loop to operate in terms of half of a source. Making 4 possible half sources. The first element of the half is used to indicate which source using the same numbering as the shuffle where the second source elements are numbered after the first source. I've added restrictions to only match the first half of two vectors or the first and second half of a single vector. This was done to prevent regressions on the cases we have coverage for. I saw cases where generic DAG combine split a single interleave into 2 smaller interleaves a concat. We can revisit in the future. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D144143
Loading
Please sign in to comment