diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index 3f608d711d79f9..04d3e9ff31b129 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -5640,21 +5640,18 @@ SDValue RISCVTargetLowering::lowerVECTOR_REVERSE(SDValue Op, MVT VecVT = Op.getSimpleValueType(); unsigned EltSize = VecVT.getScalarSizeInBits(); unsigned MinSize = VecVT.getSizeInBits().getKnownMinValue(); - - unsigned MaxVLMAX = 0; - unsigned VectorBitsMax = Subtarget.getMaxRVVVectorSizeInBits(); - if (VectorBitsMax != 0) - MaxVLMAX = - RISCVTargetLowering::computeVLMAX(VectorBitsMax, EltSize, MinSize); + unsigned VectorBitsMax = Subtarget.getRealMaxVLen(); + unsigned MaxVLMAX = + RISCVTargetLowering::computeVLMAX(VectorBitsMax, EltSize, MinSize); unsigned GatherOpc = RISCVISD::VRGATHER_VV_VL; MVT IntVT = VecVT.changeVectorElementTypeToInteger(); - // If this is SEW=8 and VLMAX is unknown or more than 256, we need + // If this is SEW=8 and VLMAX is potentially more than 256, we need // to use vrgatherei16.vv. // TODO: It's also possible to use vrgatherei16.vv for other types to // decrease register width for the index calculation. - if ((MaxVLMAX == 0 || MaxVLMAX > 256) && EltSize == 8) { + if (MaxVLMAX > 256 && EltSize == 8) { // If this is LMUL=8, we have to split before can use vrgatherei16.vv. // Reverse each half, then reassemble them in reverse order. // NOTE: It's also possible that after splitting that VLMAX no longer