================
@@ -2739,6 +2754,64 @@ let append Predicates = [IsRV64] in {
def : Pat<(v2i32 (riscv_pnclipup_w GPR:$rs1, GPR:$rs2)),
(PNCLIPUP_W GPR:$rs1, GPR:$rs2)>;
+ // Packed "Q-format" multiply parts accumulate
+ def : Pat<(v2i32 (riscv_pmqacc_h00 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQACC_W_H00 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(v2i32 (riscv_pmqacc_h01 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQACC_W_H01 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(v2i32 (riscv_pmqacc_h11 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQACC_W_H11 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(v2i32 (riscv_pmqracc_h00 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQRACC_W_H00 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(v2i32 (riscv_pmqracc_h01 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQRACC_W_H01 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(v2i32 (riscv_pmqracc_h11 (v2i32 GPR:$rd),
+ (v4i16 GPR:$rs1), (v4i16 GPR:$rs2))),
+ (PMQRACC_W_H11 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+
+ def : Pat<(XLenVT (riscv_mqacc_w00 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQACC_W00 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(XLenVT (riscv_mqacc_w01 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQACC_W01 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(XLenVT (riscv_mqacc_w11 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQACC_W11 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(XLenVT (riscv_mqracc_w00 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQRACC_W00 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(XLenVT (riscv_mqracc_w01 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQRACC_W01 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+ def : Pat<(XLenVT (riscv_mqracc_w11 (XLenVT GPR:$rd),
+ (v2i32 GPR:$rs1), (v2i32 GPR:$rs2))),
+ (MQRACC_W11 GPR:$rd, GPR:$rs1, GPR:$rs2)>;
+
+ def : Pat<(XLenVT (riscv_pmqacc_w_h00 (XLenVT GPR:$rd),
----------------
TelGome wrote:
Done. The i32-result RV64 form now reuses the existing riscv_pmqacc_h00
packed-halfword SDNode.
https://github.com/llvm/llvm-project/pull/217918
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits