Skip to content

Commit ec89b5c

Browse files
committed
Explicitly use VFMV_V_F
1 parent b50a648 commit ec89b5c

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,12 +1156,14 @@ RISCVTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
11561156
ICA.getArgTypes()[0], CmpInst::BAD_ICMP_PREDICATE,
11571157
CostKind);
11581158
case Intrinsic::experimental_vp_splat: {
1159+
auto LT = getTypeLegalizationCost(RetTy);
11591160
// TODO: Lower i1 experimental_vp_splat
1160-
if (cast<VectorType>(RetTy)->getElementType()->isIntegerTy(1))
1161+
if (LT.second.getScalarType() == MVT::i1)
11611162
return InstructionCost::getInvalid();
1162-
auto LT = getTypeLegalizationCost(RetTy);
1163-
return LT.first *
1164-
getRISCVInstructionCost(RISCV::VMV_V_X, LT.second, CostKind);
1163+
return LT.first * getRISCVInstructionCost(LT.second.isFloatingPoint()
1164+
? RISCV::VFMV_V_F
1165+
: RISCV::VMV_V_X,
1166+
LT.second, CostKind);
11651167
}
11661168
case Intrinsic::vp_reduce_add:
11671169
case Intrinsic::vp_reduce_fadd:

0 commit comments

Comments
 (0)