Skip to content

Commit 59d7df4

Browse files
authored
[NFC][X86] Refactor: merge avx512_binop_all2 into avx512_binop_all (#104561)
1 parent 7bef16a commit 59d7df4

File tree

1 file changed

+16
-36
lines changed

1 file changed

+16
-36
lines changed

llvm/lib/Target/X86/X86InstrAVX512.td

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4855,27 +4855,29 @@ multiclass avx512_binop_all<bits<8> opc, string OpcodeStr,
48554855
X86SchedWriteWidths sched,
48564856
AVX512VLVectorVTInfo _SrcVTInfo,
48574857
AVX512VLVectorVTInfo _DstVTInfo,
4858-
SDNode OpNode, Predicate prd, bit IsCommutable = 0> {
4858+
SDNode OpNode, Predicate prd,
4859+
X86VectorVTInfo _VTInfo512 = _SrcVTInfo.info512,
4860+
X86VectorVTInfo _VTInfo256 = _SrcVTInfo.info256,
4861+
X86VectorVTInfo _VTInfo128 = _SrcVTInfo.info128> {
48594862
let Predicates = [prd] in
48604863
defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, sched.ZMM, OpNode,
48614864
_SrcVTInfo.info512, _DstVTInfo.info512,
4862-
v8i64_info, IsCommutable>,
4863-
EVEX_V512, EVEX_CD8<64, CD8VF>, REX_W;
4865+
_VTInfo512>, EVEX_V512;
48644866
let Predicates = [HasVLX, prd] in {
48654867
defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, sched.YMM, OpNode,
48664868
_SrcVTInfo.info256, _DstVTInfo.info256,
4867-
v4i64x_info, IsCommutable>,
4868-
EVEX_V256, EVEX_CD8<64, CD8VF>, REX_W;
4869+
_VTInfo256>, EVEX_V256;
48694870
defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, sched.XMM, OpNode,
48704871
_SrcVTInfo.info128, _DstVTInfo.info128,
4871-
v2i64x_info, IsCommutable>,
4872-
EVEX_V128, EVEX_CD8<64, CD8VF>, REX_W;
4872+
_VTInfo128>, EVEX_V128;
48734873
}
48744874
}
48754875

48764876
defm VPMULTISHIFTQB : avx512_binop_all<0x83, "vpmultishiftqb", SchedWriteVecALU,
4877-
avx512vl_i8_info, avx512vl_i8_info,
4878-
X86multishift, HasVBMI, 0>, T8;
4877+
avx512vl_i8_info, avx512vl_i8_info,
4878+
X86multishift, HasVBMI, v8i64_info,
4879+
v4i64x_info, v2i64x_info>, T8,
4880+
EVEX_CD8<64, CD8VF>, REX_W;
48794881

48804882
multiclass avx512_packs_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
48814883
X86VectorVTInfo _Src, X86VectorVTInfo _Dst,
@@ -12670,34 +12672,12 @@ defm VP2INTERSECTD : avx512_vp2intersect<SchedWriteVecALU, avx512vl_i32_info>;
1267012672
defm VP2INTERSECTQ : avx512_vp2intersect<SchedWriteVecALU, avx512vl_i64_info>, REX_W;
1267112673
}
1267212674

12673-
multiclass avx512_binop_all2<bits<8> opc, string OpcodeStr,
12674-
X86SchedWriteWidths sched,
12675-
AVX512VLVectorVTInfo _SrcVTInfo,
12676-
AVX512VLVectorVTInfo _DstVTInfo,
12677-
SDNode OpNode, Predicate prd,
12678-
bit IsCommutable = 0> {
12679-
let Predicates = [prd] in
12680-
defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, sched.ZMM, OpNode,
12681-
_SrcVTInfo.info512, _DstVTInfo.info512,
12682-
_SrcVTInfo.info512, IsCommutable>,
12683-
EVEX_V512, EVEX_CD8<32, CD8VF>;
12684-
let Predicates = [HasVLX, prd] in {
12685-
defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, sched.YMM, OpNode,
12686-
_SrcVTInfo.info256, _DstVTInfo.info256,
12687-
_SrcVTInfo.info256, IsCommutable>,
12688-
EVEX_V256, EVEX_CD8<32, CD8VF>;
12689-
defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, sched.XMM, OpNode,
12690-
_SrcVTInfo.info128, _DstVTInfo.info128,
12691-
_SrcVTInfo.info128, IsCommutable>,
12692-
EVEX_V128, EVEX_CD8<32, CD8VF>;
12693-
}
12694-
}
12695-
1269612675
let ExeDomain = SSEPackedSingle in
12697-
defm VCVTNE2PS2BF16 : avx512_binop_all2<0x72, "vcvtne2ps2bf16",
12698-
SchedWriteCvtPD2PS, //FIXME: Should be SchedWriteCvtPS2BF
12699-
avx512vl_f32_info, avx512vl_bf16_info,
12700-
X86cvtne2ps2bf16, HasBF16, 0>, T8, XD;
12676+
defm VCVTNE2PS2BF16 : avx512_binop_all<0x72, "vcvtne2ps2bf16",
12677+
SchedWriteCvtPD2PS, //FIXME: Should be SchedWriteCvtPS2BF
12678+
avx512vl_f32_info, avx512vl_bf16_info,
12679+
X86cvtne2ps2bf16, HasBF16>, T8, XD,
12680+
EVEX_CD8<32, CD8VF>;
1270112681

1270212682
// Truncate Float to BFloat16
1270312683
multiclass avx512_cvtps2bf16<bits<8> opc, string OpcodeStr,

0 commit comments

Comments
 (0)