mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[CodeGen] Remove calls to getVectorNumElements in DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR
In DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR I have replaced calls to getVectorNumElements with getVectorMinNumElements, since this code path works for both fixed and scalable vector types. For scalable vectors the index will be multiplied by VSCALE. Fixes warnings in this test: sve-sext-zext.ll Differential revision: https://reviews.llvm.org/D83198 (cherry picked from commit 5d84eafc6b86a42e261af8d753c3a823e0e7c67e)
This commit is contained in:
parent
df55a6ed72
commit
ebd7adf1d6
@ -2197,13 +2197,19 @@ SDValue DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR(SDNode *N) {
|
||||
SDValue Idx = N->getOperand(1);
|
||||
SDLoc dl(N);
|
||||
SDValue Lo, Hi;
|
||||
|
||||
if (SubVT.isScalableVector() !=
|
||||
N->getOperand(0).getValueType().isScalableVector())
|
||||
report_fatal_error("Extracting a fixed-length vector from an illegal "
|
||||
"scalable vector is not yet supported");
|
||||
|
||||
GetSplitVector(N->getOperand(0), Lo, Hi);
|
||||
|
||||
uint64_t LoElts = Lo.getValueType().getVectorNumElements();
|
||||
uint64_t LoElts = Lo.getValueType().getVectorMinNumElements();
|
||||
uint64_t IdxVal = cast<ConstantSDNode>(Idx)->getZExtValue();
|
||||
|
||||
if (IdxVal < LoElts) {
|
||||
assert(IdxVal + SubVT.getVectorNumElements() <= LoElts &&
|
||||
assert(IdxVal + SubVT.getVectorMinNumElements() <= LoElts &&
|
||||
"Extracted subvector crosses vector split!");
|
||||
return DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, SubVT, Lo, Idx);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user