@@ -1598,10 +1598,10 @@ bool IRTranslator::translateGetElementPtr(const User &U,
1598
1598
// We might need to splat the base pointer into a vector if the offsets
1599
1599
// are vectors.
1600
1600
if (WantSplatVector && !PtrTy.isVector ()) {
1601
- BaseReg = MIRBuilder
1602
- . buildSplatBuildVector ( LLT::fixed_vector (VectorWidth, PtrTy),
1603
- BaseReg)
1604
- .getReg (0 );
1601
+ BaseReg =
1602
+ MIRBuilder
1603
+ . buildSplatVector ( LLT::fixed_vector (VectorWidth, PtrTy), BaseReg)
1604
+ .getReg (0 );
1605
1605
PtrIRTy = FixedVectorType::get (PtrIRTy, VectorWidth);
1606
1606
PtrTy = getLLTForType (*PtrIRTy, *DL);
1607
1607
OffsetIRTy = DL->getIndexType (PtrIRTy);
@@ -1639,10 +1639,8 @@ bool IRTranslator::translateGetElementPtr(const User &U,
1639
1639
LLT IdxTy = MRI->getType (IdxReg);
1640
1640
if (IdxTy != OffsetTy) {
1641
1641
if (!IdxTy.isVector () && WantSplatVector) {
1642
- IdxReg = MIRBuilder
1643
- .buildSplatBuildVector (OffsetTy.changeElementType (IdxTy),
1644
- IdxReg)
1645
- .getReg (0 );
1642
+ IdxReg = MIRBuilder.buildSplatVector (
1643
+ OffsetTy.changeElementType (IdxTy), IdxReg).getReg (0 );
1646
1644
}
1647
1645
1648
1646
IdxReg = MIRBuilder.buildSExtOrTrunc (OffsetTy, IdxReg).getReg (0 );
@@ -2999,19 +2997,6 @@ bool IRTranslator::translateExtractElement(const User &U,
2999
2997
3000
2998
bool IRTranslator::translateShuffleVector (const User &U,
3001
2999
MachineIRBuilder &MIRBuilder) {
3002
- // A ShuffleVector that has operates on scalable vectors is a splat vector
3003
- // where the value of the splat vector is the 0th element of the first
3004
- // operand, since the index mask operand is the zeroinitializer (undef and
3005
- // poison are treated as zeroinitializer here).
3006
- if (U.getOperand (0 )->getType ()->isScalableTy ()) {
3007
- Value *Op0 = U.getOperand (0 );
3008
- auto SplatVal = MIRBuilder.buildExtractVectorElementConstant (
3009
- LLT::scalar (Op0->getType ()->getScalarSizeInBits ()),
3010
- getOrCreateVReg (*Op0), 0 );
3011
- MIRBuilder.buildSplatVector (getOrCreateVReg (U), SplatVal);
3012
- return true ;
3013
- }
3014
-
3015
3000
ArrayRef<int > Mask;
3016
3001
if (auto *SVI = dyn_cast<ShuffleVectorInst>(&U))
3017
3002
Mask = SVI->getShuffleMask ();
0 commit comments