Index: llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp =================================================================== --- llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp +++ llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp @@ -14,7 +14,7 @@ static int getInstSeqCost(RISCVMatInt::InstSeq &Res, bool HasRVC) { if (!HasRVC) - return Res.size(); + return Res.size() * 100; int Cost = 0; for (auto Instr : Res) { @@ -392,7 +392,7 @@ InstSeq MatSeq = generateInstSeq(Chunk.getSExtValue(), ActiveFeatures); Cost += getInstSeqCost(MatSeq, HasRVC); } - return std::max(1, Cost); + return Cost; } OpndKind Inst::getOpndKind() const { Index: llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp =================================================================== --- llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp +++ llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp @@ -35,7 +35,7 @@ // Otherwise, we check how many instructions it will take to materialise. const DataLayout &DL = getDataLayout(); return RISCVMatInt::getIntMatCost(Imm, DL.getTypeSizeInBits(Ty), - getST()->getFeatureBits()); + getST()->getFeatureBits()) / 100; } InstructionCost RISCVTTIImpl::getIntImmCostInst(unsigned Opcode, unsigned Idx,