@@ -2339,43 +2339,43 @@ defm : VPatBinaryVL_VV_VX<riscv_ssubsat_vl, "PseudoVSSUB">;
2339
2339
defm : VPatBinaryVL_VV_VX<riscv_usubsat_vl, "PseudoVSSUBU">;
2340
2340
2341
2341
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
2342
- multiclass VPatTruncSatClipMaxMinBase<string inst, VTypeInfo vti, VTypeInfo wti ,
2343
- SDPatternOperator op1, int op1_value, SDPatternOperator op2, int op2_value> {
2344
- let Predicates = !listconcat(GetVTypePredicates<vti>.Predicates ,
2345
- GetVTypePredicates<wti>.Predicates) in
2346
- def : Pat<(vti.Vector (riscv_trunc_vector_vl
2347
- (wti.Vector (op1
2348
- (wti.Vector (op2
2349
- (wti .Vector wti.RegClass:$rs1),
2350
- (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef), op2_value, (XLenVT srcvalue))),
2351
- (wti.Vector undef),(wti.Mask V0), VLOpFrag)),
2352
- (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef), op1_value, (XLenVT srcvalue)) ),
2353
- (wti.Vector undef), (wti.Mask V0 ), VLOpFrag )),
2354
- (vti .Mask V0), VLOpFrag)),
2355
- (!cast<Instruction>(inst#"_WI_"#vti.LMul.MX#"_MASK")
2356
- (vti .Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, 0 ,
2357
- (vti.Mask V0), 0, GPR:$vl, vti.Log2SEW, TA_MA)>;
2358
- }
2359
-
2360
- multiclass VPatTruncSatClipUMin<VTypeInfo vti, VTypeInfo wti, int uminval> {
2361
- let Predicates = !listconcat(GetVTypePredicates<vti>.Predicates,
2362
- GetVTypePredicates<wti>.Predicates) in
2363
- def : Pat<(vti.Vector (riscv_trunc_vector_vl
2364
- (wti.Vector (riscv_umin_vl
2365
- (wti .Vector wti.RegClass:$rs1),
2366
- (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef), uminval, (XLenVT srcvalue))),
2367
- (wti.Vector undef), ( wti.Mask V0), VLOpFrag) ),
2368
- (vti.Mask V0 ), VLOpFrag )),
2369
- (!cast<Instruction>("PseudoVNCLIPU_WI_"#vti.LMul.MX#"_MASK")
2370
- (vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, 0 ,
2371
- (vti.Mask V0), 0, GPR:$vl, vti.Log2SEW, TA_MA)>;
2372
- }
2373
-
2342
+ class VPatTruncSatClipMaxMinBase<string inst,
2343
+ VTypeInfo vti,
2344
+ VTypeInfo wti ,
2345
+ SDPatternOperator op1,
2346
+ int op1_value,
2347
+ SDPatternOperator op2,
2348
+ int op2_value> :
2349
+ Pat<(vti .Vector (riscv_trunc_vector_vl
2350
+ (wti.Vector (op1
2351
+ (wti.Vector (op2
2352
+ (wti.Vector wti.RegClass:$rs1 ),
2353
+ (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef ), op2_value, (XLenVT srcvalue) )),
2354
+ (wti.Vector undef),(wti .Mask V0), VLOpFrag)),
2355
+ (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef), op1_value, (XLenVT srcvalue))),
2356
+ (wti .Vector undef), ( wti.Mask V0), VLOpFrag)) ,
2357
+ (vti.Mask V0), VLOpFrag)),
2358
+ (!cast<Instruction>(inst#"_WI_"#vti.LMul.MX#"_MASK")
2359
+ (vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, 0,
2360
+ ( vti.Mask V0), 0, GPR:$vl, vti.Log2SEW, TA_MA)>;
2361
+
2362
+ class VPatTruncSatClipUMin<VTypeInfo vti,
2363
+ VTypeInfo wti,
2364
+ int uminval> :
2365
+ Pat<(vti .Vector (riscv_trunc_vector_vl
2366
+ (wti.Vector (riscv_umin_vl
2367
+ (wti.Vector wti.RegClass:$rs1 ),
2368
+ (wti.Vector (riscv_vmv_v_x_vl (wti.Vector undef ), uminval, (XLenVT srcvalue) )),
2369
+ (wti.Vector undef), (wti.Mask V0), VLOpFrag)),
2370
+ (vti.Mask V0), VLOpFrag)) ,
2371
+ (!cast<Instruction>("PseudoVNCLIPU_WI_"# vti.LMul.MX#"_MASK")
2372
+ (vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, 0,
2373
+ (vti.Mask V0), 0, GPR:$vl, vti.Log2SEW, TA_MA)>;
2374
2374
2375
2375
multiclass VPatTruncSatClipMaxMin<string inst, VTypeInfo vti, VTypeInfo wti,
2376
2376
SDPatternOperator max, int maxval, SDPatternOperator min, int minval> {
2377
- defm : VPatTruncSatClipMaxMinBase<inst, vti, wti, max, maxval, min, minval>;
2378
- defm : VPatTruncSatClipMaxMinBase<inst, vti, wti, min, minval, max, maxval>;
2377
+ def : VPatTruncSatClipMaxMinBase<inst, vti, wti, max, maxval, min, minval>;
2378
+ def : VPatTruncSatClipMaxMinBase<inst, vti, wti, min, minval, max, maxval>;
2379
2379
}
2380
2380
2381
2381
multiclass VPatTruncSatClip<VTypeInfo vti, VTypeInfo wti> {
@@ -2384,9 +2384,13 @@ multiclass VPatTruncSatClip<VTypeInfo vti, VTypeInfo wti> {
2384
2384
defvar sminval = !sub(!shl(1, !sub(sew, 1)), 1);
2385
2385
defvar smaxval = !sub(0, !shl(1, !sub(sew, 1)));
2386
2386
2387
- defm : VPatTruncSatClipMaxMin<"PseudoVNCLIP", vti, wti, riscv_smin_vl,
2388
- sminval, riscv_smax_vl, smaxval>;
2389
- defm : VPatTruncSatClipUMin<vti, wti, uminval>;
2387
+ let Predicates = !listconcat(GetVTypePredicates<vti>.Predicates,
2388
+ GetVTypePredicates<wti>.Predicates) in {
2389
+ defm : VPatTruncSatClipMaxMin<"PseudoVNCLIP", vti, wti, riscv_smin_vl,
2390
+ sminval, riscv_smax_vl, smaxval>;
2391
+ def : VPatTruncSatClipUMin<vti, wti, uminval>;
2392
+ }
2393
+
2390
2394
}
2391
2395
2392
2396
foreach vtiToWti = AllWidenableIntVectors in
0 commit comments