[llvm] [RISCV] Support Xsfvqmaccdod and Xsfvqmaccqoq extensions (PR #68295)

Brandon Wu via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 10 19:40:08 PDT 2023


================
@@ -178,6 +178,19 @@ multiclass CustomSiFiveVCIX<string suffix, VCIXType type,
                                              InTyRs1, 1>;
 }
 
+let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
+class CustomSiFiveVMACC<bits<6> funct6, RISCVVFormat opv, string opcodestr>
+    : RVInstVCCustom2<funct6{5-2}, opv.Value, (outs VR:$rd), (ins VR:$rs1, VR:$rs2),
+                      opcodestr, "$rd, $rs1, $rs2"> {
+  let vm = 1;
+  let funct6_lo2 = funct6{1-0};
+}
+}
+
+multiclass CustomSiFiveVMACC<bits<6> funct6, RISCVVFormat opv, string opcodestr> {
+  def _VV : CustomSiFiveVMACC<funct6, opv, opcodestr>;
----------------
4vtomat wrote:

Since `VPatVQMACC` use `VPatTernaryNoMaskWithPolicy` which defines the pseudo instruction matching pattern as `(!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX)` which takes `kind`, so if we don't define them as `_VV` we can't reuse and need to define one on our own.

https://github.com/llvm/llvm-project/pull/68295


More information about the llvm-commits mailing list