@@ -1334,6 +1334,44 @@ def HasVendorXSfvfnrclipxfqf
13341334 AssemblerPredicate<(all_of FeatureVendorXSfvfnrclipxfqf),
13351335 "'XSfvfnrclipxfqf' (SiFive FP32-to-int8 Ranged Clip Instructions)">;
13361336
1337+ // Note: XSfvfbfexp16e depends on either Zvfbfmin _or_ Zvfbfa, which cannot be expressed here in
1338+ // TableGen. Instead, we check that in RISCVISAInfo.
1339+ def FeatureVendorXSfvfbfexp16e
1340+ : RISCVExtension<0, 5,
1341+ "SiFive Vector Floating-Point Exponential Function Instruction, BFloat16">;
1342+ def HasVendorXSfvfbfexp16e : Predicate<"Subtarget->hasVendorXSfvfbfexp16e()">;
1343+
1344+ def FeatureVendorXSfvfexp16e
1345+ : RISCVExtension<0, 5,
1346+ "SiFive Vector Floating-Point Exponential Function Instruction, Half Precision",
1347+ [FeatureStdExtZvfh]>;
1348+ def HasVendorXSfvfexp16e : Predicate<"Subtarget->hasVendorXSfvfexp16e()">;
1349+
1350+ def FeatureVendorXSfvfexp32e
1351+ : RISCVExtension<0, 5,
1352+ "SiFive Vector Floating-Point Exponential Function Instruction, Single Precision",
1353+ [FeatureStdExtZve32f]>;
1354+ def HasVendorXSfvfexp32e : Predicate<"Subtarget->hasVendorXSfvfexp32e()">;
1355+
1356+ def HasVendorXSfvfexpAnyFloat : Predicate<"Subtarget->hasVendorXSfvfexp16e() || Subtarget->hasVendorXSfvfexp32e()">;
1357+ def HasVendorXSfvfexpAny : Predicate<"Subtarget->hasVendorXSfvfbfexp16e() || Subtarget->hasVendorXSfvfexp16e() || Subtarget->hasVendorXSfvfexp32e()">,
1358+ AssemblerPredicate<(any_of FeatureVendorXSfvfbfexp16e, FeatureVendorXSfvfexp16e, FeatureVendorXSfvfexp32e),
1359+ "'Xsfvfbfexp16e/Xsfvfexp16e/Xsfvfexp32e' (SiFive Vector Floating-Point Exponential Function Instruction)">;
1360+
1361+ def FeatureVendorXSfvfexpa
1362+ : RISCVExtension<0, 2,
1363+ "SiFive Vector Floating-Point Exponential Approximation Instruction",
1364+ [FeatureStdExtZve32f]>;
1365+ def HasVendorXSfvfexpa : Predicate<"Subtarget->hasVendorXSfvfexpa()">,
1366+ AssemblerPredicate<(all_of FeatureVendorXSfvfexpa),
1367+ "'Xsfvfexpa' (SiFive Vector Floating-Point Exponential Approximation Instruction)">;
1368+
1369+ def FeatureVendorXSfvfexpa64e
1370+ : RISCVExtension<0, 2,
1371+ "SiFive Vector Floating-Point Exponential Approximation Instruction with Double-Precision",
1372+ [FeatureVendorXSfvfexpa, FeatureStdExtZve64d]>;
1373+ def HasVendorXSfvfexpa64e : Predicate<"Subtarget->hasVendorXSfvfexpa64e()">;
1374+
13371375def FeatureVendorXSiFivecdiscarddlone
13381376 : RISCVExtension<1, 0,
13391377 "SiFive sf.cdiscard.d.l1 Instruction", []>;
0 commit comments