@@ -2517,6 +2517,29 @@ multiclass XVPseudoVFRDIV_VF_RM {
2517
2517
}
2518
2518
}
2519
2519
2520
+ multiclass XVPseudoVWMUL_VV_VF_RM {
2521
+ foreach m = MxListWXTHeadV in {
2522
+ defvar mx = m.MX;
2523
+ defvar WriteVFWMulV_MX = !cast<SchedWrite>("WriteVFWMulV_" # mx);
2524
+ defvar ReadVFWMulV_MX = !cast<SchedRead>("ReadVFWMulV_" # mx);
2525
+
2526
+ defm "" : XVPseudoBinaryW_VV_RM<m>,
2527
+ Sched<[WriteVFWMulV_MX, ReadVFWMulV_MX, ReadVFWMulV_MX, ReadVMask]>;
2528
+ }
2529
+
2530
+ foreach f = FPListXTHeadV in {
2531
+ foreach m = f.MxListFW in {
2532
+ defvar mx = m.MX;
2533
+ defvar WriteVFWMulF_MX = !cast<SchedWrite>("WriteVFWMulF_" # mx);
2534
+ defvar ReadVFWMulV_MX = !cast<SchedRead>("ReadVFWMulV_" # mx);
2535
+ defvar ReadVFWMulF_MX = !cast<SchedRead>("ReadVFWMulF_" # mx);
2536
+
2537
+ defm "" : XVPseudoBinaryW_VF_RM<m, f>,
2538
+ Sched<[WriteVFWMulF_MX, ReadVFWMulV_MX, ReadVFWMulF_MX, ReadVMask]>;
2539
+ }
2540
+ }
2541
+ }
2542
+
2520
2543
multiclass XVPseudoVALU_MM {
2521
2544
foreach m = MxListXTHeadV in {
2522
2545
defvar mx = m.MX;
@@ -3980,6 +4003,18 @@ let Predicates = [HasVendorXTHeadV] in {
3980
4003
AllFloatXVectors, isSEWAware=1>;
3981
4004
} // Predicates = [HasVendorXTHeadV]
3982
4005
4006
+ //===----------------------------------------------------------------------===//
4007
+ // 14.5. Vector Single-Width Floating-Point Add/Subtract Instructions
4008
+ //===----------------------------------------------------------------------===//
4009
+ let Predicates = [HasVendorXTHeadV], mayRaiseFPException = true, hasSideEffects = 0 in {
4010
+ defm PseudoTH_VFWMUL : XVPseudoVWMUL_VV_VF_RM;
4011
+ }
4012
+
4013
+ let Predicates = [HasVendorXTHeadV] in {
4014
+ defm : XVPatBinaryW_VV_VX_RM<"int_riscv_th_vfwmul", "PseudoTH_VFWMUL",
4015
+ AllWidenableFloatXVectors>;
4016
+ }
4017
+
3983
4018
//===----------------------------------------------------------------------===//
3984
4019
// 16.1. Vector Mask-Register Logical Operations
3985
4020
//===----------------------------------------------------------------------===//
0 commit comments