@@ -2108,7 +2108,7 @@ multiclass VPseudoBinaryV_VM<LMULInfo m, bit CarryOut = 0, bit CarryIn = 1,
2108
2108
}
2109
2109
2110
2110
multiclass VPseudoTiedBinaryV_VM<LMULInfo m> {
2111
- def "_VVM" # "_" # m.MX # "_TU" :
2111
+ def "_VVM" # "_" # m.MX:
2112
2112
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2113
2113
m.vrclass, m.vrclass, m, 1, "">;
2114
2114
}
@@ -2123,7 +2123,7 @@ multiclass VPseudoBinaryV_XM<LMULInfo m, bit CarryOut = 0, bit CarryIn = 1,
2123
2123
}
2124
2124
2125
2125
multiclass VPseudoTiedBinaryV_XM<LMULInfo m> {
2126
- def "_VXM" # "_" # m.MX # "_TU" :
2126
+ def "_VXM" # "_" # m.MX:
2127
2127
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2128
2128
m.vrclass, GPR, m, 1, "">;
2129
2129
}
@@ -2136,12 +2136,7 @@ multiclass VPseudoVMRG_FM {
2136
2136
defvar ReadVFMergeV_MX = !cast<SchedRead>("ReadVFMergeV_" # mx);
2137
2137
defvar ReadVFMergeF_MX = !cast<SchedRead>("ReadVFMergeF_" # mx);
2138
2138
2139
- def "_V" # f.FX # "M_" # mx :
2140
- VPseudoBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2141
- m.vrclass, f.fprclass, m, /*CarryIn=*/1, "">,
2142
- Sched<[WriteVFMergeV_MX, ReadVFMergeV_MX, ReadVFMergeF_MX, ReadVMask]>;
2143
- // Tied version to allow codegen control over the tail elements
2144
- def "_V" # f.FX # "M_" # mx # "_TU":
2139
+ def "_V" # f.FX # "M_" # mx:
2145
2140
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2146
2141
m.vrclass, f.fprclass, m, /*CarryIn=*/1, "">,
2147
2142
Sched<[WriteVFMergeV_MX, ReadVFMergeV_MX, ReadVFMergeF_MX, ReadVMask]>;
@@ -2159,7 +2154,7 @@ multiclass VPseudoBinaryV_IM<LMULInfo m, bit CarryOut = 0, bit CarryIn = 1,
2159
2154
}
2160
2155
2161
2156
multiclass VPseudoTiedBinaryV_IM<LMULInfo m> {
2162
- def "_VIM" # "_" # m.MX # "_TU" :
2157
+ def "_VIM" # "_" # m.MX:
2163
2158
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2164
2159
m.vrclass, simm5, m, 1, "">;
2165
2160
}
@@ -2833,28 +2828,15 @@ multiclass VPseudoVMRG_VM_XM_IM {
2833
2828
defvar ReadVIMergeV_MX = !cast<SchedRead>("ReadVIMergeV_" # mx);
2834
2829
defvar ReadVIMergeX_MX = !cast<SchedRead>("ReadVIMergeX_" # mx);
2835
2830
2836
- def "_VVM" # "_" # m.MX :
2837
- VPseudoBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2838
- m.vrclass, m.vrclass, m, 1, "">,
2839
- Sched<[WriteVIMergeV_MX, ReadVIMergeV_MX, ReadVIMergeV_MX, ReadVMask]>;
2840
- def "_VXM" # "_" # m.MX :
2841
- VPseudoBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2842
- m.vrclass, GPR, m, 1, "">,
2843
- Sched<[WriteVIMergeX_MX, ReadVIMergeV_MX, ReadVIMergeX_MX, ReadVMask]>;
2844
- def "_VIM" # "_" # m.MX :
2845
- VPseudoBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2846
- m.vrclass, simm5, m, 1, "">,
2847
- Sched<[WriteVIMergeI_MX, ReadVIMergeV_MX, ReadVMask]>;
2848
- // Tied versions to allow codegen control over the tail elements
2849
- def "_VVM" # "_" # m.MX # "_TU" :
2831
+ def "_VVM" # "_" # m.MX:
2850
2832
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2851
2833
m.vrclass, m.vrclass, m, 1, "">,
2852
2834
Sched<[WriteVIMergeV_MX, ReadVIMergeV_MX, ReadVIMergeV_MX, ReadVMask]>;
2853
- def "_VXM" # "_" # m.MX # "_TU" :
2835
+ def "_VXM" # "_" # m.MX:
2854
2836
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2855
2837
m.vrclass, GPR, m, 1, "">,
2856
2838
Sched<[WriteVIMergeX_MX, ReadVIMergeV_MX, ReadVIMergeX_MX, ReadVMask]>;
2857
- def "_VIM" # "_" # m.MX # "_TU" :
2839
+ def "_VIM" # "_" # m.MX:
2858
2840
VPseudoTiedBinaryCarryIn<GetVRegNoV0<m.vrclass>.R,
2859
2841
m.vrclass, simm5, m, 1, "">,
2860
2842
Sched<[WriteVIMergeI_MX, ReadVIMergeV_MX, ReadVMask]>;
@@ -2870,13 +2852,6 @@ multiclass VPseudoVCALU_VM_XM_IM {
2870
2852
defvar ReadVICALUV_MX = !cast<SchedRead>("ReadVICALUV_" # mx);
2871
2853
defvar ReadVICALUX_MX = !cast<SchedRead>("ReadVICALUX_" # mx);
2872
2854
2873
- defm "" : VPseudoBinaryV_VM<m>,
2874
- Sched<[WriteVICALUV_MX, ReadVICALUV_MX, ReadVICALUV_MX, ReadVMask]>;
2875
- defm "" : VPseudoBinaryV_XM<m>,
2876
- Sched<[WriteVICALUX_MX, ReadVICALUV_MX, ReadVICALUX_MX, ReadVMask]>;
2877
- defm "" : VPseudoBinaryV_IM<m>,
2878
- Sched<[WriteVICALUI_MX, ReadVICALUV_MX, ReadVMask]>;
2879
- // Tied versions to allow codegen control over the tail elements
2880
2855
defm "" : VPseudoTiedBinaryV_VM<m>,
2881
2856
Sched<[WriteVICALUV_MX, ReadVICALUV_MX, ReadVICALUV_MX, ReadVMask]>;
2882
2857
defm "" : VPseudoTiedBinaryV_XM<m>,
@@ -2894,11 +2869,6 @@ multiclass VPseudoVCALU_VM_XM {
2894
2869
defvar ReadVICALUV_MX = !cast<SchedRead>("ReadVICALUV_" # mx);
2895
2870
defvar ReadVICALUX_MX = !cast<SchedRead>("ReadVICALUX_" # mx);
2896
2871
2897
- defm "" : VPseudoBinaryV_VM<m>,
2898
- Sched<[WriteVICALUV_MX, ReadVICALUV_MX, ReadVICALUV_MX, ReadVMask]>;
2899
- defm "" : VPseudoBinaryV_XM<m>,
2900
- Sched<[WriteVICALUX_MX, ReadVICALUV_MX, ReadVICALUX_MX, ReadVMask]>;
2901
- // Tied versions to allow codegen control over the tail elements
2902
2872
defm "" : VPseudoTiedBinaryV_VM<m>,
2903
2873
Sched<[WriteVICALUV_MX, ReadVICALUV_MX, ReadVICALUV_MX, ReadVMask]>;
2904
2874
defm "" : VPseudoTiedBinaryV_XM<m>,
@@ -4410,23 +4380,13 @@ multiclass VPatBinaryCarryInTAIL<string intrinsic,
4410
4380
VReg result_reg_class,
4411
4381
VReg op1_reg_class,
4412
4382
DAGOperand op2_kind> {
4413
- def : Pat<(result_type (!cast<Intrinsic>(intrinsic)
4414
- (result_type undef),
4415
- (op1_type op1_reg_class:$rs1),
4416
- (op2_type op2_kind:$rs2),
4417
- (mask_type V0),
4418
- VLOpFrag)),
4419
- (!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX)
4420
- (op1_type op1_reg_class:$rs1),
4421
- (op2_type op2_kind:$rs2),
4422
- (mask_type V0), GPR:$vl, sew)>;
4423
4383
def : Pat<(result_type (!cast<Intrinsic>(intrinsic)
4424
4384
(result_type result_reg_class:$merge),
4425
4385
(op1_type op1_reg_class:$rs1),
4426
4386
(op2_type op2_kind:$rs2),
4427
4387
(mask_type V0),
4428
4388
VLOpFrag)),
4429
- (!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX#"_TU" )
4389
+ (!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX)
4430
4390
(result_type result_reg_class:$merge),
4431
4391
(op1_type op1_reg_class:$rs1),
4432
4392
(op2_type op2_kind:$rs2),
@@ -6486,19 +6446,12 @@ foreach vti = AllFloatVectors in {
6486
6446
foreach fvti = AllFloatVectors in {
6487
6447
defvar instr = !cast<Instruction>("PseudoVMERGE_VIM_"#fvti.LMul.MX);
6488
6448
let Predicates = GetVTypePredicates<fvti>.Predicates in
6489
- def : Pat<(fvti.Vector (int_riscv_vfmerge (fvti.Vector undef),
6490
- (fvti.Vector fvti.RegClass:$rs2),
6491
- (fvti.Scalar (fpimm0)),
6492
- (fvti.Mask V0), VLOpFrag)),
6493
- (instr fvti.RegClass:$rs2, 0, (fvti.Mask V0), GPR:$vl, fvti.Log2SEW)>;
6494
- defvar instr_tu = !cast<Instruction>("PseudoVMERGE_VIM_"#fvti.LMul.MX#"_TU");
6495
- let Predicates = GetVTypePredicates<fvti>.Predicates in
6496
6449
def : Pat<(fvti.Vector (int_riscv_vfmerge (fvti.Vector fvti.RegClass:$merge),
6497
6450
(fvti.Vector fvti.RegClass:$rs2),
6498
6451
(fvti.Scalar (fpimm0)),
6499
6452
(fvti.Mask V0), VLOpFrag)),
6500
- (instr_tu fvti.RegClass:$merge, fvti.RegClass:$rs2, 0,
6501
- (fvti.Mask V0), GPR:$vl, fvti.Log2SEW)>;
6453
+ (instr fvti.RegClass:$merge, fvti.RegClass:$rs2, 0,
6454
+ (fvti.Mask V0), GPR:$vl, fvti.Log2SEW)>;
6502
6455
}
6503
6456
6504
6457
//===----------------------------------------------------------------------===//
0 commit comments