diff --git a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp --- a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp +++ b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp @@ -361,9 +361,8 @@ // type until it is legal. This would e.g. return 4 for <6 x i64>, instead of // 3. static unsigned getNumVectorRegs(Type *Ty) { - assert(Ty->isVectorTy() && "Expected vector type"); - unsigned WideBits = - getScalarSizeInBits(Ty) * cast(Ty)->getNumElements(); + auto *VTy = cast(Ty); + unsigned WideBits = getScalarSizeInBits(Ty) * VTy->getNumElements(); assert(WideBits > 0 && "Could not compute size of vector"); return ((WideBits % 128U) ? ((WideBits / 128U) + 1) : (WideBits / 128U)); } @@ -464,7 +463,7 @@ return DivInstrCost; } else if (ST->hasVector()) { - auto *VTy = cast(Ty); + auto *VTy = cast(Ty); unsigned VF = VTy->getNumElements(); unsigned NumVectors = getNumVectorRegs(Ty); @@ -585,8 +584,8 @@ assert (SrcTy->isVectorTy() && DstTy->isVectorTy()); assert (SrcTy->getPrimitiveSizeInBits() > DstTy->getPrimitiveSizeInBits() && "Packing must reduce size of vector type."); - assert(cast(SrcTy)->getNumElements() == - cast(DstTy)->getNumElements() && + assert(cast(SrcTy)->getNumElements() == + cast(DstTy)->getNumElements() && "Packing should not change number of elements."); // TODO: Since fp32 is expanded, the extract cost should always be 0. @@ -602,7 +601,7 @@ unsigned Cost = 0; unsigned Log2Diff = getElSizeLog2Diff(SrcTy, DstTy); - unsigned VF = cast(SrcTy)->getNumElements(); + unsigned VF = cast(SrcTy)->getNumElements(); for (unsigned P = 0; P < Log2Diff; ++P) { if (NumParts > 1) NumParts /= 2; @@ -675,8 +674,8 @@ unsigned SystemZTTIImpl:: getBoolVecToIntConversionCost(unsigned Opcode, Type *Dst, const Instruction *I) { - assert (Dst->isVectorTy()); - unsigned VF = cast(Dst)->getNumElements(); + auto *DstVTy = cast(Dst); + unsigned VF = DstVTy->getNumElements(); unsigned Cost = 0; // If we know what the widths of the compared operands, get any cost of // converting it to match Dst. Otherwise assume same widths. @@ -725,8 +724,8 @@ } } else if (ST->hasVector()) { - auto *SrcVecTy = cast(Src); - auto *DstVecTy = cast(Dst); + auto *SrcVecTy = cast(Src); + auto *DstVecTy = cast(Dst); unsigned VF = SrcVecTy->getNumElements(); unsigned NumDstVectors = getNumVectorRegs(Dst); unsigned NumSrcVectors = getNumVectorRegs(Src); @@ -857,7 +856,7 @@ } } else if (ST->hasVector()) { - unsigned VF = cast(ValTy)->getNumElements(); + unsigned VF = cast(ValTy)->getNumElements(); // Called with a compare instruction. if (Opcode == Instruction::ICmp || Opcode == Instruction::FCmp) { @@ -1102,7 +1101,7 @@ // Return the ceiling of dividing A by B. auto ceil = [](unsigned A, unsigned B) { return (A + B - 1) / B; }; - unsigned NumElts = cast(VecTy)->getNumElements(); + unsigned NumElts = cast(VecTy)->getNumElements(); assert(Factor > 1 && NumElts % Factor == 0 && "Invalid interleave factor"); unsigned VF = NumElts / Factor; unsigned NumEltsPerVecReg = (128U / getScalarSizeInBits(VecTy));