[RISCV] Stop isInterleaveShuffle from producing illegal extract_subvectors.
The definition for ISD::EXTRACT_SUBVECTOR says the index must be aligned to the known minimum elements of the extracted type. We mostly got away with this but it turns out there are places that depend on this. For example, this code in getNode for ISD::EXTRACT_SUBVECTOR ``` // EXTRACT_SUBVECTOR of CONCAT_VECTOR can be simplified if the pieces of // the concat have the same type as the extract. if (N1.getOpcode() == ISD::CONCAT_VECTORS && N1.getNumOperands() > 0 && VT == N1.getOperand(0).getValueType()) { unsigned Factor = VT.getVectorMinNumElements(); return N1.getOperand(N2C->getZExtValue() / Factor); } ``` This depends on N2C->getZExtValue() being evenly divisible by Factor. Reviewed By: luke Differential Revision: https://reviews.llvm.org/D153380
Loading
Please sign in to comment