[llvm] [RISCV] Consistently use hasVInstructionsF16/BF16(). NFC (PR #191592)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 10 20:47:18 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/191592.diff
3 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVFeatures.td (+1-4)
- (modified) llvm/lib/Target/RISCV/RISCVISelLowering.cpp (+7-6)
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td (+4-4)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVFeatures.td b/llvm/lib/Target/RISCV/RISCVFeatures.td
index 534a7aa09fa62..8116ec12048d6 100644
--- a/llvm/lib/Target/RISCV/RISCVFeatures.td
+++ b/llvm/lib/Target/RISCV/RISCVFeatures.td
@@ -693,9 +693,6 @@ def HasStdExtZvabd : Predicate<"Subtarget->hasStdExtZvabd()">,
def FeatureStdExtZvfbfa
: RISCVExperimentalExtension<0, 1, "Additional BF16 vector compute support",
[FeatureStdExtZve32f, FeatureStdExtZfbfmin]>;
-def HasStdExtZvfbfa : Predicate<"Subtarget->hasStdExtZvfbfa()">,
- AssemblerPredicate<(all_of FeatureStdExtZvfbfa),
- "'Zvfbfa' (Additional BF16 vector compute support)">;
def FeatureStdExtZvfbfmin
: RISCVExtension<1, 0, "Vector BF16 Converts", [FeatureStdExtZve32f]>;
@@ -907,7 +904,7 @@ def HasVInstructionsAnyF : Predicate<"Subtarget->hasVInstructionsAnyF()">,
"(Vector Extensions for Embedded Processors)">;
def HasVInstructionsF16Minimal : Predicate<"Subtarget->hasVInstructionsF16Minimal()">,
- AssemblerPredicate<(any_of FeatureStdExtZvfhmin, FeatureStdExtZvfh),
+ AssemblerPredicate<(any_of FeatureStdExtZvfh),
"'Zvfhmin' (Vector Half-Precision Floating-Point Minimal) or "
"'Zvfh' (Vector Half-Precision Floating-Point)">;
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 73210f3743aa6..b2cfe2bfb62dc 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -1706,7 +1706,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
// available.
setOperationAction(ISD::BUILD_VECTOR, MVT::bf16, Custom);
}
- if (Subtarget.hasStdExtZvfbfa()) {
+ if (Subtarget.hasVInstructionsBF16()) {
setOperationAction(ZvfbfaOps, VT, Custom);
setOperationAction(ZvfbfaVPOps, VT, Custom);
setCondCodeAction(VFPCCToExpand, VT, Expand);
@@ -1721,7 +1721,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
if (!isTypeLegal(F32VecVT))
continue;
- if (Subtarget.hasStdExtZvfbfa())
+ if (Subtarget.hasVInstructionsBF16())
setOperationPromotedToType(ZvfbfaPromoteOps, VT, F32VecVT);
else
setOperationPromotedToType(ZvfhminZvfbfminPromoteOps, VT, F32VecVT);
@@ -4629,7 +4629,7 @@ static SDValue lowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG,
// Proper support for f16 requires Zvfh. bf16 always requires special
// handling. We need to cast the scalar to integer and create an integer
// build_vector.
- if ((EltVT == MVT::f16 && !Subtarget.hasStdExtZvfh()) ||
+ if ((EltVT == MVT::f16 && !Subtarget.hasVInstructionsF16()) ||
(EltVT == MVT::bf16 && !Subtarget.hasVInstructionsBF16())) {
MVT IVT = VT.changeVectorElementType(MVT::i16);
SmallVector<SDValue, 16> NewOps(Op.getNumOperands());
@@ -5021,7 +5021,7 @@ static SDValue lowerScalarSplat(SDValue Passthru, SDValue Scalar, SDValue VL,
MVT XLenVT = Subtarget.getXLenVT();
if (VT.isFloatingPoint()) {
- if ((EltVT == MVT::f16 && !Subtarget.hasStdExtZvfh()) ||
+ if ((EltVT == MVT::f16 && !Subtarget.hasVInstructionsF16()) ||
(EltVT == MVT::bf16 && !Subtarget.hasVInstructionsBF16())) {
if ((EltVT == MVT::bf16 && Subtarget.hasStdExtZfbfmin()) ||
(EltVT == MVT::f16 && Subtarget.hasStdExtZfhmin()))
@@ -8417,7 +8417,7 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
case ISD::SPLAT_VECTOR: {
MVT VT = Op.getSimpleValueType();
MVT EltVT = VT.getVectorElementType();
- if ((EltVT == MVT::f16 && !Subtarget.hasStdExtZvfh()) ||
+ if ((EltVT == MVT::f16 && !Subtarget.hasVInstructionsF16()) ||
EltVT == MVT::bf16) {
SDLoc DL(Op);
SDValue Elt;
@@ -18594,7 +18594,8 @@ NodeExtensionHelper::getSupportedFoldings(const SDNode *Root,
case RISCVISD::VFNMADD_VL:
case RISCVISD::VFNMSUB_VL:
Strategies.push_back(canFoldToVWWithSameExtension);
- if (Subtarget.hasStdExtZvfbfa() && Root->getOpcode() != RISCVISD::FMUL_VL)
+ if (Subtarget.hasVInstructionsBF16() &&
+ Root->getOpcode() != RISCVISD::FMUL_VL)
// TODO: Once other widen operations are supported we can merge
// canFoldToVWWithSameExtension and canFoldToVWWithSameExtBF16.
Strategies.push_back(canFoldToVWWithSameExtBF16);
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td
index 603bb9abfce11..f6489c8a273fb 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td
@@ -270,7 +270,7 @@ multiclass VPseudoVNCVTD_W_RM_BF16 {
forcePassthruRead=true>;
}
-let Predicates = [HasStdExtZvfbfa], AltFmtType = IS_ALTFMT in {
+let Predicates = [HasVInstructionsBF16], AltFmtType = IS_ALTFMT in {
let mayRaiseFPException = true in {
defm PseudoVFADD_ALT : VPseudoVALU_VV_VF_RM_BF16;
defm PseudoVFSUB_ALT : VPseudoVALU_VV_VF_RM_BF16;
@@ -375,7 +375,7 @@ let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in {
defm PseudoVFSLIDE1UP_ALT : VPseudoVSLD1_VF<"@earlyclobber $rd">;
defm PseudoVFSLIDE1DOWN_ALT : VPseudoVSLD1_VF;
-} // Predicates = [HasStdExtZvfbfa], AltFmtType = IS_ALTFMT
+} // Predicates = [HasVInstructionsBF16], AltFmtType = IS_ALTFMT
//===----------------------------------------------------------------------===//
// Patterns
@@ -490,7 +490,7 @@ multiclass VPatConversionVF_WF_BF16<string intrinsic, string instruction,
}
}
-let Predicates = [HasStdExtZvfbfa] in {
+let Predicates = [HasVInstructionsBF16] in {
defm : VPatBinaryV_VV_VX_RM<"int_riscv_vfadd", "PseudoVFADD_ALT",
AllBF16Vectors, isSEWAware = 1>;
defm : VPatBinaryV_VV_VX_RM<"int_riscv_vfsub", "PseudoVFSUB_ALT",
@@ -581,4 +581,4 @@ defm : VPatConversionVF_WF_BF16<"int_riscv_vfncvt_rod_f_f_w", "PseudoVFNCVT_ROD_
isSEWAware=1>;
defm : VPatBinaryV_VX<"int_riscv_vfslide1up", "PseudoVFSLIDE1UP_ALT", AllBF16Vectors>;
defm : VPatBinaryV_VX<"int_riscv_vfslide1down", "PseudoVFSLIDE1DOWN_ALT", AllBF16Vectors>;
-} // Predicates = [HasStdExtZvfbfa]
+} // Predicates = [HasVInstructionsBF16]
``````````
</details>
https://github.com/llvm/llvm-project/pull/191592
More information about the llvm-commits
mailing list