Skip to content

Commit 4d9b75d

Browse files
committed
[RISCV] use class for VPatTruncSatClipMaxMinBase and VPatTruncSatClipUMin
1 parent d29ebba commit 4d9b75d

File tree

1 file changed

+41
-37
lines changed

1 file changed

+41
-37
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2339,43 +2339,43 @@ defm : VPatBinaryVL_VV_VX<riscv_ssubsat_vl, "PseudoVSSUB">;
23392339
defm : VPatBinaryVL_VV_VX<riscv_usubsat_vl, "PseudoVSSUBU">;
23402340

23412341
// 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)>;
23742374

23752375
multiclass VPatTruncSatClipMaxMin<string inst, VTypeInfo vti, VTypeInfo wti,
23762376
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>;
23792379
}
23802380

23812381
multiclass VPatTruncSatClip<VTypeInfo vti, VTypeInfo wti> {
@@ -2384,9 +2384,13 @@ multiclass VPatTruncSatClip<VTypeInfo vti, VTypeInfo wti> {
23842384
defvar sminval = !sub(!shl(1, !sub(sew, 1)), 1);
23852385
defvar smaxval = !sub(0, !shl(1, !sub(sew, 1)));
23862386

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+
23902394
}
23912395

23922396
foreach vtiToWti = AllWidenableIntVectors in

0 commit comments

Comments
 (0)