@@ -4239,8 +4239,8 @@ static SDValue lowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG,
42394239 if ((EltVT == MVT::f16 && !Subtarget.hasStdExtZvfh()) || EltVT == MVT::bf16) {
42404240 MVT IVT = VT.changeVectorElementType(MVT::i16);
42414241 SmallVector<SDValue, 16> NewOps(Op.getNumOperands());
4242- for (unsigned I = 0, E = Op.getNumOperands(); I != E; ++I ) {
4243- SDValue Elem = Op.getOperand(I );
4242+ for (const auto &[I, U] : enumerate(Op->ops()) ) {
4243+ SDValue Elem = U.get( );
42444244 if ((EltVT == MVT::bf16 && Subtarget.hasStdExtZfbfmin()) ||
42454245 (EltVT == MVT::f16 && Subtarget.hasStdExtZfhmin())) {
42464246 // Called by LegalizeDAG, we need to use XLenVT operations since we
@@ -4379,16 +4379,16 @@ static SDValue lowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG,
43794379 SDValue UndefElem = DAG.getUNDEF(Op->getOperand(0)->getValueType(0));
43804380 SubVecAOps.reserve(NumElts);
43814381 SubVecBOps.reserve(NumElts);
4382- for (unsigned i = 0; i < NumElts; i++ ) {
4383- SDValue Elem = Op->getOperand(i );
4384- if (i < NumElts / 2) {
4382+ for (const auto &[Idx, U] : enumerate(Op->ops()) ) {
4383+ SDValue Elem = U.get( );
4384+ if (Idx < NumElts / 2) {
43854385 SubVecAOps.push_back(Elem);
43864386 SubVecBOps.push_back(UndefElem);
43874387 } else {
43884388 SubVecAOps.push_back(UndefElem);
43894389 SubVecBOps.push_back(Elem);
43904390 }
4391- bool SelectMaskVal = (i < NumElts / 2);
4391+ bool SelectMaskVal = (Idx < NumElts / 2);
43924392 MaskVals.push_back(DAG.getConstant(SelectMaskVal, DL, XLenVT));
43934393 }
43944394 assert(SubVecAOps.size() == NumElts && SubVecBOps.size() == NumElts &&
@@ -4769,16 +4769,15 @@ static bool isAlternating(const std::array<std::pair<int, int>, 2> &SrcInfo,
47694769 ArrayRef<int> Mask, unsigned Factor,
47704770 bool RequiredPolarity) {
47714771 int NumElts = Mask.size();
4772- for (int i = 0; i != NumElts; ++i) {
4773- int M = Mask[i];
4772+ for (const auto &[Idx, M] : enumerate(Mask)) {
47744773 if (M < 0)
47754774 continue;
47764775 int Src = M >= NumElts;
4777- int Diff = (int)i - (M % NumElts);
4776+ int Diff = (int)Idx - (M % NumElts);
47784777 bool C = Src == SrcInfo[1].first && Diff == SrcInfo[1].second;
47794778 assert(C != (Src == SrcInfo[0].first && Diff == SrcInfo[0].second) &&
47804779 "Must match exactly one of the two slides");
4781- if (RequiredPolarity != (C == (i / Factor) % 2))
4780+ if (RequiredPolarity != (C == (Idx / Factor) % 2))
47824781 return false;
47834782 }
47844783 return true;
@@ -5503,18 +5502,18 @@ static SDValue lowerShuffleViaVRegSplitting(ShuffleVectorSDNode *SVN,
55035502static bool isCompressMask(ArrayRef<int> Mask) {
55045503 int Last = -1;
55055504 bool SawUndef = false;
5506- for (unsigned i = 0; i < Mask.size(); i++ ) {
5507- if (Mask[i] == -1) {
5505+ for (const auto &[Idx, M] : enumerate(Mask) ) {
5506+ if (M == -1) {
55085507 SawUndef = true;
55095508 continue;
55105509 }
55115510 if (SawUndef)
55125511 return false;
5513- if (i > (unsigned)Mask[i] )
5512+ if (Idx > (unsigned)M )
55145513 return false;
5515- if (Mask[i] <= Last)
5514+ if (M <= Last)
55165515 return false;
5517- Last = Mask[i] ;
5516+ Last = M ;
55185517 }
55195518 return true;
55205519}
@@ -5906,8 +5905,8 @@ static SDValue lowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG,
59065905 // otherwise reuse the even stream for the undef one. This improves
59075906 // spread(2) shuffles.
59085907 bool LaneIsUndef[2] = { true, true};
5909- for (unsigned i = 0; i < Mask.size(); i++ )
5910- LaneIsUndef[i % 2] &= (Mask[i] == -1);
5908+ for (const auto &[Idx, M] : enumerate(Mask) )
5909+ LaneIsUndef[Idx % 2] &= (M == -1);
59115910
59125911 int Size = Mask.size();
59135912 SDValue EvenV, OddV;
@@ -6019,14 +6018,14 @@ static SDValue lowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG,
60196018 // undefined in the mask. If the mask ends up all true (or undef), it
60206019 // will be folded away by general logic.
60216020 SmallVector<SDValue> MaskVals;
6022- for (unsigned i = 0; i != Mask.size(); ++i ) {
6023- int M = Mask[i];
6024- if (M < 0 || (SrcInfo[1].second > 0 && i < (unsigned)SrcInfo[1].second)) {
6021+ for (const auto &[Idx, M] : enumerate(Mask) ) {
6022+ if (M < 0 ||
6023+ (SrcInfo[1].second > 0 && Idx < (unsigned)SrcInfo[1].second)) {
60256024 MaskVals.push_back(DAG.getUNDEF(XLenVT));
60266025 continue;
60276026 }
60286027 int Src = M >= (int)NumElts;
6029- int Diff = (int)i - (M % NumElts);
6028+ int Diff = (int)Idx - (M % NumElts);
60306029 bool C = Src == SrcInfo[1].first && Diff == SrcInfo[1].second;
60316030 assert(C ^ (Src == SrcInfo[0].first && Diff == SrcInfo[0].second) &&
60326031 "Must match exactly one of the two slides");
@@ -21938,22 +21937,21 @@ void RISCVTargetLowering::analyzeInputArgs(
2193821937 MachineFunction &MF, CCState &CCInfo,
2193921938 const SmallVectorImpl<ISD::InputArg> &Ins, bool IsRet,
2194021939 RISCVCCAssignFn Fn) const {
21941- unsigned NumArgs = Ins.size();
2194221940 FunctionType *FType = MF.getFunction().getFunctionType();
2194321941
21944- for (unsigned i = 0; i != NumArgs; ++i ) {
21945- MVT ArgVT = Ins[i] .VT;
21946- ISD::ArgFlagsTy ArgFlags = Ins[i] .Flags;
21942+ for (const auto &[Idx, In] : enumerate(Ins) ) {
21943+ MVT ArgVT = In .VT;
21944+ ISD::ArgFlagsTy ArgFlags = In .Flags;
2194721945
2194821946 Type *ArgTy = nullptr;
2194921947 if (IsRet)
2195021948 ArgTy = FType->getReturnType();
21951- else if (Ins[i] .isOrigArg())
21952- ArgTy = FType->getParamType(Ins[i] .getOrigArgIndex());
21949+ else if (In .isOrigArg())
21950+ ArgTy = FType->getParamType(In .getOrigArgIndex());
2195321951
21954- if (Fn(i , ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo,
21952+ if (Fn(Idx , ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo,
2195521953 /*IsFixed=*/true, IsRet, ArgTy)) {
21956- LLVM_DEBUG(dbgs() << "InputArg #" << i << " has unhandled type "
21954+ LLVM_DEBUG(dbgs() << "InputArg #" << Idx << " has unhandled type "
2195721955 << ArgVT << '\n');
2195821956 llvm_unreachable(nullptr);
2195921957 }
@@ -21964,16 +21962,14 @@ void RISCVTargetLowering::analyzeOutputArgs(
2196421962 MachineFunction &MF, CCState &CCInfo,
2196521963 const SmallVectorImpl<ISD::OutputArg> &Outs, bool IsRet,
2196621964 CallLoweringInfo *CLI, RISCVCCAssignFn Fn) const {
21967- unsigned NumArgs = Outs.size();
21968-
21969- for (unsigned i = 0; i != NumArgs; i++) {
21970- MVT ArgVT = Outs[i].VT;
21971- ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
21972- Type *OrigTy = CLI ? CLI->getArgs()[Outs[i].OrigArgIndex].Ty : nullptr;
21973-
21974- if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo,
21975- Outs[i].IsFixed, IsRet, OrigTy)) {
21976- LLVM_DEBUG(dbgs() << "OutputArg #" << i << " has unhandled type "
21965+ for (const auto &[Idx, Out] : enumerate(Outs)) {
21966+ MVT ArgVT = Out.VT;
21967+ ISD::ArgFlagsTy ArgFlags = Out.Flags;
21968+ Type *OrigTy = CLI ? CLI->getArgs()[Out.OrigArgIndex].Ty : nullptr;
21969+
21970+ if (Fn(Idx, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, CCInfo, Out.IsFixed,
21971+ IsRet, OrigTy)) {
21972+ LLVM_DEBUG(dbgs() << "OutputArg #" << Idx << " has unhandled type "
2197721973 << ArgVT << "\n");
2197821974 llvm_unreachable(nullptr);
2197921975 }
0 commit comments