@@ -1946,6 +1946,21 @@ multiclass XVPseudoVDIV_VV_VX {
1946
1946
}
1947
1947
}
1948
1948
1949
+ multiclass XVPseudoVWMUL_VV_VX {
1950
+ foreach m = MxListWXTHeadV in {
1951
+ defvar mx = m.MX;
1952
+ defvar WriteVIWMulV_MX = !cast<SchedWrite>("WriteVIWMulV_" # mx);
1953
+ defvar WriteVIWMulX_MX = !cast<SchedWrite>("WriteVIWMulX_" # mx);
1954
+ defvar ReadVIWMulV_MX = !cast<SchedRead>("ReadVIWMulV_" # mx);
1955
+ defvar ReadVIWMulX_MX = !cast<SchedRead>("ReadVIWMulX_" # mx);
1956
+
1957
+ defm "" : XVPseudoBinaryW_VV<m>,
1958
+ Sched<[WriteVIWMulV_MX, ReadVIWMulV_MX, ReadVIWMulV_MX, ReadVMask]>;
1959
+ defm "" : XVPseudoBinaryW_VX<m>,
1960
+ Sched<[WriteVIWMulX_MX, ReadVIWMulV_MX, ReadVIWMulX_MX, ReadVMask]>;
1961
+ }
1962
+ }
1963
+
1949
1964
//===----------------------------------------------------------------------===//
1950
1965
// Helpers to define the intrinsic patterns for the XTHeadVector extension.
1951
1966
//===----------------------------------------------------------------------===//
@@ -2644,6 +2659,21 @@ let Predicates = [HasVendorXTHeadV] in {
2644
2659
defm : XVPatBinaryV_VV_VX<"int_riscv_th_vrem", "PseudoTH_VREM", AllIntegerXVectors, isSEWAware=1>;
2645
2660
} // Predicates = [HasVendorXTHeadV]
2646
2661
2662
+ //===----------------------------------------------------------------------===//
2663
+ // 12.11. Vector Widening Integer Multiply Instructions
2664
+ //===----------------------------------------------------------------------===//
2665
+ let Predicates = [HasVendorXTHeadV] in {
2666
+ defm PseudoTH_VWMUL : XVPseudoVWMUL_VV_VX;
2667
+ defm PseudoTH_VWMULU : XVPseudoVWMUL_VV_VX;
2668
+ defm PseudoTH_VWMULSU : XVPseudoVWMUL_VV_VX;
2669
+ } // Predicates = [HasVendorXTHeadV]
2670
+
2671
+ let Predicates = [HasVendorXTHeadV] in {
2672
+ defm : XVPatBinaryW_VV_VX<"int_riscv_th_vwmul", "PseudoTH_VWMUL", AllWidenableIntXVectors>;
2673
+ defm : XVPatBinaryW_VV_VX<"int_riscv_th_vwmulu", "PseudoTH_VWMULU", AllWidenableIntXVectors>;
2674
+ defm : XVPatBinaryW_VV_VX<"int_riscv_th_vwmulsu", "PseudoTH_VWMULSU", AllWidenableIntXVectors>;
2675
+ } // Predicates = [HasVendorXTHeadV]
2676
+
2647
2677
//===----------------------------------------------------------------------===//
2648
2678
// 12.14. Vector Integer Merge and Move Instructions
2649
2679
//===----------------------------------------------------------------------===//
0 commit comments