Skip to content

Commit 1145582

Browse files
committed
Addressed latest comments
1 parent 6c34f44 commit 1145582

File tree

2 files changed

+17
-31
lines changed

2 files changed

+17
-31
lines changed

llvm/lib/Analysis/ConstantFolding.cpp

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3755,9 +3755,9 @@ static Constant *ConstantFoldFixedVectorCall(
37553755
return nullptr;
37563756
}
37573757
case Intrinsic::vector_extract: {
3758-
auto *Vec = dyn_cast<Constant>(Operands[0]);
3759-
auto *Idx = cast<ConstantInt>(Operands[1]);
3760-
if (!Vec || !Idx || !isa<FixedVectorType>(Vec->getType()))
3758+
auto *Idx = dyn_cast<ConstantInt>(Operands[1]);
3759+
Constant *Vec = Operands[0];
3760+
if (!Idx || !isa<FixedVectorType>(Vec->getType()))
37613761
return nullptr;
37623762

37633763
unsigned NumElements = FVTy->getNumElements();
@@ -3786,10 +3786,10 @@ static Constant *ConstantFoldFixedVectorCall(
37863786
return ConstantVector::get(Result);
37873787
}
37883788
case Intrinsic::vector_insert: {
3789-
auto *Vec = dyn_cast<Constant>(Operands[0]);
3790-
auto *SubVec = dyn_cast<Constant>(Operands[1]);
3789+
Constant *Vec = Operands[0];
3790+
Constant *SubVec = Operands[1];
37913791
auto *Idx = dyn_cast<ConstantInt>(Operands[2]);
3792-
if (!Vec || !SubVec || !Idx || !isa<FixedVectorType>(Vec->getType()))
3792+
if (!Idx || !isa<FixedVectorType>(Vec->getType()))
37933793
return nullptr;
37943794

37953795
unsigned SubVecNumElements =
@@ -3804,41 +3804,27 @@ static Constant *ConstantFoldFixedVectorCall(
38043804
// Make sure indices are in the range [0, VecNumElements), otherwise the
38053805
// result is a poison value.
38063806
if (IdxN >= VecNumElements || IdxN + SubVecNumElements > VecNumElements ||
3807-
(IdxN && (SubVecNumElements % IdxN) != 0))
3807+
(IdxN % SubVecNumElements) != 0)
38083808
return PoisonValue::get(FVTy);
38093809

3810-
unsigned I = 0;
3811-
for (; I < IdxN; ++I) {
3812-
Constant *Elt = Vec->getAggregateElement(I);
3813-
if (!Elt)
3814-
return nullptr;
3815-
Result[I] = Elt;
3816-
}
3817-
for (; I < IdxN + SubVecNumElements; ++I) {
3818-
Constant *Elt = SubVec->getAggregateElement(I - IdxN);
3819-
if (!Elt)
3820-
return nullptr;
3821-
Result[I] = Elt;
3822-
}
3823-
for (; I < VecNumElements; ++I) {
3824-
Constant *Elt = Vec->getAggregateElement(I);
3810+
for (unsigned I = 0; I < VecNumElements; ++I) {
3811+
Constant *Elt;
3812+
if (I >= IdxN && I < IdxN + SubVecNumElements)
3813+
Elt = SubVec->getAggregateElement(I - IdxN);
3814+
else
3815+
Elt = Vec->getAggregateElement(I);
38253816
if (!Elt)
38263817
return nullptr;
38273818
Result[I] = Elt;
38283819
}
38293820
return ConstantVector::get(Result);
38303821
}
38313822
case Intrinsic::vector_interleave2: {
3832-
auto *Vec0 = dyn_cast<Constant>(Operands[0]);
3833-
auto *Vec1 = dyn_cast<Constant>(Operands[1]);
3834-
if (!Vec0 || !Vec1)
3835-
return nullptr;
3836-
38373823
unsigned NumElements =
3838-
cast<FixedVectorType>(Vec0->getType())->getNumElements();
3824+
cast<FixedVectorType>(Operands[0]->getType())->getNumElements();
38393825
for (unsigned I = 0; I < NumElements; ++I) {
3840-
Constant *Elt0 = Vec0->getAggregateElement(I);
3841-
Constant *Elt1 = Vec1->getAggregateElement(I);
3826+
Constant *Elt0 = Operands[0]->getAggregateElement(I);
3827+
Constant *Elt1 = Operands[1]->getAggregateElement(I);
38423828
if (!Elt0 || !Elt1)
38433829
return nullptr;
38443830
Result[2 * I] = Elt0;

llvm/test/Transforms/InstSimplify/ConstProp/vector-calls.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ define <8 x i32> @fold_vector_interleave2() {
7979
; CHECK-LABEL: define <8 x i32> @fold_vector_interleave2() {
8080
; CHECK-NEXT: ret <8 x i32> <i32 1, i32 5, i32 2, i32 6, i32 3, i32 7, i32 4, i32 8>
8181
;
82-
%1 = call<8 x i32> @llvm.vector.interleave2.v8i32(<4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32> <i32 5, i32 6, i32 7, i32 8>)
82+
%1 = call <8 x i32> @llvm.vector.interleave2.v8i32(<4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32> <i32 5, i32 6, i32 7, i32 8>)
8383
ret <8 x i32> %1
8484
}
8585

0 commit comments

Comments
 (0)