[llvm] r360462 - [DAGCombiner] reduce code duplication; NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Fri May 10 13:02:30 PDT 2019
Author: spatel
Date: Fri May 10 13:02:30 2019
New Revision: 360462
URL: http://llvm.org/viewvc/llvm-project?rev=360462&view=rev
Log:
[DAGCombiner] reduce code duplication; NFC
Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=360462&r1=360461&r2=360462&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Fri May 10 13:02:30 2019
@@ -17573,9 +17573,9 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
// Combine an extract of an extract into a single extract_subvector.
// ext (ext X, C), 0 --> ext X, C
- if (isNullConstant(N->getOperand(1)) &&
- V.getOpcode() == ISD::EXTRACT_SUBVECTOR && V.hasOneUse() &&
- isa<ConstantSDNode>(V.getOperand(1))) {
+ SDValue Index = N->getOperand(1);
+ if (isNullConstant(Index) && V.getOpcode() == ISD::EXTRACT_SUBVECTOR &&
+ V.hasOneUse() && isa<ConstantSDNode>(V.getOperand(1))) {
if (TLI.isExtractSubvectorCheap(NVT, V.getOperand(0).getValueType(),
V.getConstantOperandVal(1)) &&
TLI.isOperationLegalOrCustom(ISD::EXTRACT_SUBVECTOR, NVT)) {
@@ -17590,8 +17590,7 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
// Vi if possible
// Only operand 0 is checked as 'concat' assumes all inputs of the same
// type.
- if (V.getOpcode() == ISD::CONCAT_VECTORS &&
- isa<ConstantSDNode>(N->getOperand(1)) &&
+ if (V.getOpcode() == ISD::CONCAT_VECTORS && isa<ConstantSDNode>(Index) &&
V.getOperand(0).getValueType() == NVT) {
unsigned Idx = N->getConstantOperandVal(1);
unsigned NumElems = NVT.getVectorNumElements();
@@ -17604,7 +17603,7 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
// If the input is a build vector. Try to make a smaller build vector.
if (V.getOpcode() == ISD::BUILD_VECTOR) {
- if (auto *Idx = dyn_cast<ConstantSDNode>(N->getOperand(1))) {
+ if (auto *IdxC = dyn_cast<ConstantSDNode>(Index)) {
EVT InVT = V.getValueType();
unsigned ExtractSize = NVT.getSizeInBits();
unsigned EltSize = InVT.getScalarSizeInBits();
@@ -17619,7 +17618,7 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
(NumElems == 1 ||
TLI.isOperationLegal(ISD::BUILD_VECTOR, ExtractVT))) &&
(!LegalTypes || TLI.isTypeLegal(ExtractVT))) {
- unsigned IdxVal = Idx->getZExtValue();
+ unsigned IdxVal = IdxC->getZExtValue();
IdxVal *= NVT.getScalarSizeInBits();
IdxVal /= EltSize;
@@ -17647,9 +17646,8 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
return SDValue();
// Only handle cases where both indexes are constants.
- auto *ExtIdx = dyn_cast<ConstantSDNode>(N->getOperand(1));
+ auto *ExtIdx = dyn_cast<ConstantSDNode>(Index);
auto *InsIdx = dyn_cast<ConstantSDNode>(V.getOperand(2));
-
if (InsIdx && ExtIdx) {
// Combine:
// (extract_subvec (insert_subvec V1, V2, InsIdx), ExtIdx)
@@ -17662,7 +17660,7 @@ SDValue DAGCombiner::visitEXTRACT_SUBVEC
return DAG.getNode(
ISD::EXTRACT_SUBVECTOR, SDLoc(N), NVT,
DAG.getBitcast(N->getOperand(0).getValueType(), V.getOperand(0)),
- N->getOperand(1));
+ Index);
}
}
More information about the llvm-commits
mailing list