mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[LegalizeTypes] Remove WidenVecRes_Shift and just use WidenVecRes_Binary
This function seems to allow for the shift amount to have a different type than the result, but I don't think we do that anywhere else for vector shifts. We also don't have any support for legalizing the shift amount alone if the result is legal and the shift amount type isn't. The code coverage report here shows this code as uncovered http://lab.llvm.org:8080/coverage/coverage-reports/coverage/Users/buildslave/jenkins/workspace/coverage/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp.html Differential Revision: https://reviews.llvm.org/D86475
This commit is contained in:
parent
2ad3f5c93b
commit
9399c083fb
@ -888,7 +888,6 @@ private:
|
||||
SDValue WidenVecRes_Convert_StrictFP(SDNode *N);
|
||||
SDValue WidenVecRes_FCOPYSIGN(SDNode *N);
|
||||
SDValue WidenVecRes_POWI(SDNode *N);
|
||||
SDValue WidenVecRes_Shift(SDNode *N);
|
||||
SDValue WidenVecRes_Unary(SDNode *N);
|
||||
SDValue WidenVecRes_InregOp(SDNode *N);
|
||||
|
||||
|
@ -2800,6 +2800,9 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
|
||||
case ISD::OR:
|
||||
case ISD::SUB:
|
||||
case ISD::XOR:
|
||||
case ISD::SHL:
|
||||
case ISD::SRA:
|
||||
case ISD::SRL:
|
||||
case ISD::FMINNUM:
|
||||
case ISD::FMAXNUM:
|
||||
case ISD::FMINIMUM:
|
||||
@ -2864,12 +2867,6 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
|
||||
Res = WidenVecRes_POWI(N);
|
||||
break;
|
||||
|
||||
case ISD::SHL:
|
||||
case ISD::SRA:
|
||||
case ISD::SRL:
|
||||
Res = WidenVecRes_Shift(N);
|
||||
break;
|
||||
|
||||
case ISD::ANY_EXTEND_VECTOR_INREG:
|
||||
case ISD::SIGN_EXTEND_VECTOR_INREG:
|
||||
case ISD::ZERO_EXTEND_VECTOR_INREG:
|
||||
@ -3489,25 +3486,6 @@ SDValue DAGTypeLegalizer::WidenVecRes_POWI(SDNode *N) {
|
||||
return DAG.getNode(N->getOpcode(), SDLoc(N), WidenVT, InOp, ShOp);
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::WidenVecRes_Shift(SDNode *N) {
|
||||
EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(), N->getValueType(0));
|
||||
SDValue InOp = GetWidenedVector(N->getOperand(0));
|
||||
SDValue ShOp = N->getOperand(1);
|
||||
|
||||
EVT ShVT = ShOp.getValueType();
|
||||
if (getTypeAction(ShVT) == TargetLowering::TypeWidenVector) {
|
||||
ShOp = GetWidenedVector(ShOp);
|
||||
ShVT = ShOp.getValueType();
|
||||
}
|
||||
EVT ShWidenVT = EVT::getVectorVT(*DAG.getContext(),
|
||||
ShVT.getVectorElementType(),
|
||||
WidenVT.getVectorNumElements());
|
||||
if (ShVT != ShWidenVT)
|
||||
ShOp = ModifyToType(ShOp, ShWidenVT);
|
||||
|
||||
return DAG.getNode(N->getOpcode(), SDLoc(N), WidenVT, InOp, ShOp);
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::WidenVecRes_Unary(SDNode *N) {
|
||||
// Unary op widening.
|
||||
EVT WidenVT = TLI.getTypeToTransformTo(*DAG.getContext(), N->getValueType(0));
|
||||
|
Loading…
Reference in New Issue
Block a user