@@ -17757,7 +17757,7 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17757
17757
"Unmatched number of shufflevectors and indices");
17758
17758
17759
17759
VectorType *VecTy = Shuffles[0]->getType();
17760
- Type *EltTy = VecTy->getVectorElementType ();
17760
+ Type *EltTy = VecTy->getElementType ();
17761
17761
17762
17762
const DataLayout &DL = LI->getModule()->getDataLayout();
17763
17763
@@ -17772,8 +17772,7 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17772
17772
// A pointer vector can not be the return type of the ldN intrinsics. Need to
17773
17773
// load integer vectors first and then convert to pointer vectors.
17774
17774
if (EltTy->isPointerTy())
17775
- VecTy =
17776
- VectorType::get(DL.getIntPtrType(EltTy), VecTy->getVectorNumElements());
17775
+ VecTy = VectorType::get(DL.getIntPtrType(EltTy), VecTy->getNumElements());
17777
17776
17778
17777
IRBuilder<> Builder(LI);
17779
17778
@@ -17783,15 +17782,15 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17783
17782
if (NumLoads > 1) {
17784
17783
// If we're going to generate more than one load, reset the sub-vector type
17785
17784
// to something legal.
17786
- VecTy = VectorType::get(VecTy->getVectorElementType (),
17787
- VecTy->getVectorNumElements () / NumLoads);
17785
+ VecTy = VectorType::get(VecTy->getElementType (),
17786
+ VecTy->getNumElements () / NumLoads);
17788
17787
17789
17788
// We will compute the pointer operand of each load from the original base
17790
17789
// address using GEPs. Cast the base address to a pointer to the scalar
17791
17790
// element type.
17792
17791
BaseAddr = Builder.CreateBitCast(
17793
- BaseAddr, VecTy->getVectorElementType()->getPointerTo(
17794
- LI->getPointerAddressSpace()));
17792
+ BaseAddr,
17793
+ VecTy->getElementType()->getPointerTo( LI->getPointerAddressSpace()));
17795
17794
}
17796
17795
17797
17796
assert(isTypeLegal(EVT::getEVT(VecTy)) && "Illegal vldN vector type!");
@@ -17816,8 +17815,8 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17816
17815
"expected interleave factor of 2 or 4 for MVE");
17817
17816
Intrinsic::ID LoadInts =
17818
17817
Factor == 2 ? Intrinsic::arm_mve_vld2q : Intrinsic::arm_mve_vld4q;
17819
- Type *VecEltTy = VecTy->getVectorElementType()->getPointerTo(
17820
- LI->getPointerAddressSpace());
17818
+ Type *VecEltTy =
17819
+ VecTy->getElementType()->getPointerTo( LI->getPointerAddressSpace());
17821
17820
Type *Tys[] = {VecTy, VecEltTy};
17822
17821
Function *VldnFunc =
17823
17822
Intrinsic::getDeclaration(LI->getModule(), LoadInts, Tys);
@@ -17837,9 +17836,8 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17837
17836
// If we're generating more than one load, compute the base address of
17838
17837
// subsequent loads as an offset from the previous.
17839
17838
if (LoadCount > 0)
17840
- BaseAddr =
17841
- Builder.CreateConstGEP1_32(VecTy->getVectorElementType(), BaseAddr,
17842
- VecTy->getVectorNumElements() * Factor);
17839
+ BaseAddr = Builder.CreateConstGEP1_32(VecTy->getElementType(), BaseAddr,
17840
+ VecTy->getNumElements() * Factor);
17843
17841
17844
17842
CallInst *VldN = createLoadIntrinsic(BaseAddr);
17845
17843
@@ -17854,8 +17852,8 @@ bool ARMTargetLowering::lowerInterleavedLoad(
17854
17852
// Convert the integer vector to pointer vector if the element is pointer.
17855
17853
if (EltTy->isPointerTy())
17856
17854
SubVec = Builder.CreateIntToPtr(
17857
- SubVec, VectorType::get(SV->getType()->getVectorElementType (),
17858
- VecTy->getVectorNumElements ()));
17855
+ SubVec, VectorType::get(SV->getType()->getElementType (),
17856
+ VecTy->getNumElements ()));
17859
17857
17860
17858
SubVecs[SV].push_back(SubVec);
17861
17859
}
@@ -17908,11 +17906,10 @@ bool ARMTargetLowering::lowerInterleavedStore(StoreInst *SI,
17908
17906
"Invalid interleave factor");
17909
17907
17910
17908
VectorType *VecTy = SVI->getType();
17911
- assert(VecTy->getVectorNumElements() % Factor == 0 &&
17912
- "Invalid interleaved store");
17909
+ assert(VecTy->getNumElements() % Factor == 0 && "Invalid interleaved store");
17913
17910
17914
- unsigned LaneLen = VecTy->getVectorNumElements () / Factor;
17915
- Type *EltTy = VecTy->getVectorElementType ();
17911
+ unsigned LaneLen = VecTy->getNumElements () / Factor;
17912
+ Type *EltTy = VecTy->getElementType ();
17916
17913
VectorType *SubVecTy = VectorType::get(EltTy, LaneLen);
17917
17914
17918
17915
const DataLayout &DL = SI->getModule()->getDataLayout();
@@ -17935,8 +17932,8 @@ bool ARMTargetLowering::lowerInterleavedStore(StoreInst *SI,
17935
17932
Type *IntTy = DL.getIntPtrType(EltTy);
17936
17933
17937
17934
// Convert to the corresponding integer vector.
17938
- Type *IntVecTy =
17939
- VectorType::get( IntTy, Op0->getType()->getVectorNumElements ());
17935
+ Type *IntVecTy = VectorType::get(
17936
+ IntTy, cast<VectorType>( Op0->getType())->getNumElements ());
17940
17937
Op0 = Builder.CreatePtrToInt(Op0, IntVecTy);
17941
17938
Op1 = Builder.CreatePtrToInt(Op1, IntVecTy);
17942
17939
@@ -17950,14 +17947,14 @@ bool ARMTargetLowering::lowerInterleavedStore(StoreInst *SI,
17950
17947
// If we're going to generate more than one store, reset the lane length
17951
17948
// and sub-vector type to something legal.
17952
17949
LaneLen /= NumStores;
17953
- SubVecTy = VectorType::get(SubVecTy->getVectorElementType (), LaneLen);
17950
+ SubVecTy = VectorType::get(SubVecTy->getElementType (), LaneLen);
17954
17951
17955
17952
// We will compute the pointer operand of each store from the original base
17956
17953
// address using GEPs. Cast the base address to a pointer to the scalar
17957
17954
// element type.
17958
17955
BaseAddr = Builder.CreateBitCast(
17959
- BaseAddr, SubVecTy->getVectorElementType()->getPointerTo(
17960
- SI->getPointerAddressSpace()));
17956
+ BaseAddr,
17957
+ SubVecTy->getElementType()->getPointerTo( SI->getPointerAddressSpace()));
17961
17958
}
17962
17959
17963
17960
assert(isTypeLegal(EVT::getEVT(SubVecTy)) && "Illegal vstN vector type!");
@@ -17987,7 +17984,7 @@ bool ARMTargetLowering::lowerInterleavedStore(StoreInst *SI,
17987
17984
"expected interleave factor of 2 or 4 for MVE");
17988
17985
Intrinsic::ID StoreInts =
17989
17986
Factor == 2 ? Intrinsic::arm_mve_vst2q : Intrinsic::arm_mve_vst4q;
17990
- Type *EltPtrTy = SubVecTy->getVectorElementType ()->getPointerTo(
17987
+ Type *EltPtrTy = SubVecTy->getElementType ()->getPointerTo(
17991
17988
SI->getPointerAddressSpace());
17992
17989
Type *Tys[] = {EltPtrTy, SubVecTy};
17993
17990
Function *VstNFunc =
@@ -18009,7 +18006,7 @@ bool ARMTargetLowering::lowerInterleavedStore(StoreInst *SI,
18009
18006
// If we generating more than one store, we compute the base address of
18010
18007
// subsequent stores as an offset from the previous.
18011
18008
if (StoreCount > 0)
18012
- BaseAddr = Builder.CreateConstGEP1_32(SubVecTy->getVectorElementType (),
18009
+ BaseAddr = Builder.CreateConstGEP1_32(SubVecTy->getElementType (),
18013
18010
BaseAddr, LaneLen * Factor);
18014
18011
18015
18012
SmallVector<Value *, 4> Shuffles;
0 commit comments