@@ -4855,27 +4855,29 @@ multiclass avx512_binop_all<bits<8> opc, string OpcodeStr,
4855
4855
X86SchedWriteWidths sched,
4856
4856
AVX512VLVectorVTInfo _SrcVTInfo,
4857
4857
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> {
4859
4862
let Predicates = [prd] in
4860
4863
defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, sched.ZMM, OpNode,
4861
4864
_SrcVTInfo.info512, _DstVTInfo.info512,
4862
- v8i64_info, IsCommutable>,
4863
- EVEX_V512, EVEX_CD8<64, CD8VF>, REX_W;
4865
+ _VTInfo512>, EVEX_V512;
4864
4866
let Predicates = [HasVLX, prd] in {
4865
4867
defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, sched.YMM, OpNode,
4866
4868
_SrcVTInfo.info256, _DstVTInfo.info256,
4867
- v4i64x_info, IsCommutable>,
4868
- EVEX_V256, EVEX_CD8<64, CD8VF>, REX_W;
4869
+ _VTInfo256>, EVEX_V256;
4869
4870
defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, sched.XMM, OpNode,
4870
4871
_SrcVTInfo.info128, _DstVTInfo.info128,
4871
- v2i64x_info, IsCommutable>,
4872
- EVEX_V128, EVEX_CD8<64, CD8VF>, REX_W;
4872
+ _VTInfo128>, EVEX_V128;
4873
4873
}
4874
4874
}
4875
4875
4876
4876
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;
4879
4881
4880
4882
multiclass avx512_packs_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
4881
4883
X86VectorVTInfo _Src, X86VectorVTInfo _Dst,
@@ -12670,34 +12672,12 @@ defm VP2INTERSECTD : avx512_vp2intersect<SchedWriteVecALU, avx512vl_i32_info>;
12670
12672
defm VP2INTERSECTQ : avx512_vp2intersect<SchedWriteVecALU, avx512vl_i64_info>, REX_W;
12671
12673
}
12672
12674
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
-
12696
12675
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>;
12701
12681
12702
12682
// Truncate Float to BFloat16
12703
12683
multiclass avx512_cvtps2bf16<bits<8> opc, string OpcodeStr,
0 commit comments