[llvm] [RISCV] Support Xsfvqmaccdod and Xsfvqmaccqoq extensions (PR #68295)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 16 19:24:06 PDT 2023
================
@@ -476,6 +524,31 @@ class GetFTypeInfo<int Sew> {
!eq(Scalar, f64) : "FPR64");
}
+multiclass VPatVMACC<string intrinsic, string instruction, string kind,
+ list<VTypeInfoToWide> info_pairs, ValueType vec_m1> {
+ foreach pair = info_pairs in {
+ defvar VdInfo = pair.Wti;
+ defvar Vs2Info = pair.Vti;
+ let Predicates = [HasVInstructions] in
+ def : VPatTernaryNoMaskWithPolicy<"int_riscv_sf_" # intrinsic,
+ "Pseudo" # instruction, kind, VdInfo.Vector,
+ vec_m1, Vs2Info.Vector,
+ Vs2Info.Log2SEW, Vs2Info.LMul,
+ VdInfo.RegClass, VR, Vs2Info.RegClass>;
+ }
+}
+
+defset list<VTypeInfoToWide> VQMACCInfoPairs = {
+ def : VTypeInfoToWide<VI8M1, VI32M1>;
+ def : VTypeInfoToWide<VI8M2, VI32M2>;
+ def : VTypeInfoToWide<VI8M4, VI32M4>;
+ def : VTypeInfoToWide<VI8M8, VI32M8>;
+}
+
+multiclass VPatVQMACC<string intrinsic, string instruction, string kind> {
+ defm : VPatVMACC<intrinsic, instruction, kind, VQMACCInfoPairs, vint8m1_t>;
----------------
topperc wrote:
Can we have `VPatVQMACC` inherit from `VPatVMACC`?
https://github.com/llvm/llvm-project/pull/68295
More information about the llvm-commits
mailing list