[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