Lines Matching refs:OpcodeStr
22 string OpcodeStr,
34 OpcodeStr#"\t{"#AttSrcAsm#", $dst|"#
41 OpcodeStr#"\t{"#AttSrcAsm#", $dst {${mask}}|"#
56 OpcodeStr#"\t{"#AttSrcAsm#", $dst {${mask}} {z}|"#
67 string OpcodeStr,
76 AVX512_maskable_custom<O, F, Outs, Ins, MaskingIns, ZeroMaskingIns, OpcodeStr,
90 dag Outs, dag Ins, string OpcodeStr,
99 OpcodeStr, AttSrcAsm, IntelSrcAsm,
112 dag Outs, dag Ins, string OpcodeStr,
122 OpcodeStr, AttSrcAsm, IntelSrcAsm, RHS,
130 dag Outs, dag Ins, string OpcodeStr,
133 AVX512_maskable<O, F, _, Outs, Ins, OpcodeStr, AttSrcAsm, IntelSrcAsm,
141 dag Outs, dag NonTiedIns, string OpcodeStr,
152 OpcodeStr, AttSrcAsm, IntelSrcAsm,
163 dag Outs, dag NonTiedIns, string OpcodeStr,
170 OpcodeStr, AttSrcAsm, IntelSrcAsm, (null_frag),
176 dag Outs, dag NonTiedIns, string OpcodeStr,
182 AVX512_maskable_3src<O, F, _, Outs, NonTiedIns, OpcodeStr, AttSrcAsm,
188 string OpcodeStr,
194 OpcodeStr, AttSrcAsm, IntelSrcAsm, Pattern, [], [],
199 string OpcodeStr,
206 OpcodeStr, AttSrcAsm, IntelSrcAsm, Pattern, [], [],
214 string OpcodeStr,
221 OpcodeStr#"\t{"#AttSrcAsm#", $dst|"#
226 OpcodeStr#"\t{"#AttSrcAsm#", $dst {${mask}}|"#
235 string OpcodeStr,
239 AVX512_maskable_custom_cmp<O, F, Outs, Ins, MaskingIns, OpcodeStr,
245 dag Outs, dag Ins, string OpcodeStr,
250 OpcodeStr, AttSrcAsm, IntelSrcAsm, RHS,
257 string OpcodeStr,
260 AVX512_maskable_custom<O, F, Outs, Ins, MaskingIns, ZeroMaskingIns, OpcodeStr,
268 dag Outs, dag NonTiedIns, string OpcodeStr,
276 OpcodeStr, AttSrcAsm, IntelSrcAsm,
1038 multiclass avx512_broadcast_rm_split<bits<8> opc, string OpcodeStr,
1048 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
1057 !strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}} {z}|",
1071 !strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}}|",
1085 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
1096 !strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}} {z}|",
1113 !strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}}|",
1127 multiclass avx512_broadcast_rm<bits<8> opc, string OpcodeStr,
1132 avx512_broadcast_rm_split<opc, OpcodeStr, SchedRR, SchedRM,
1136 multiclass avx512_fp_broadcast_sd<bits<8> opc, string OpcodeStr,
1139 defm Z : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256,
1146 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256,
1153 multiclass avx512_fp_broadcast_ss<bits<8> opc, string OpcodeStr,
1156 defm Z : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256,
1163 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256,
1167 defm Z128 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256,
1254 multiclass avx512_int_broadcast_rm_vl<bits<8> opc, string OpcodeStr,
1258 defm Z : avx512_broadcast_rm<opc, OpcodeStr, WriteShuffle256,
1264 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, WriteShuffle256,
1268 defm Z128 : avx512_broadcast_rm<opc, OpcodeStr, WriteShuffle,
1284 multiclass avx512_subvec_broadcast_rm<bits<8> opc, string OpcodeStr,
1289 (ins _Src.MemOp:$src), OpcodeStr, "$src", "$src",
1298 multiclass avx512_subvec_broadcast_rm_dq<bits<8> opc, string OpcodeStr,
1304 (ins _Src.MemOp:$src), OpcodeStr, "$src", "$src",
1550 multiclass avx512_common_broadcast_32x2<bits<8> opc, string OpcodeStr,
1554 defm Z : avx512_broadcast_rm_split<opc, OpcodeStr, WriteShuffle256,
1559 defm Z256 : avx512_broadcast_rm_split<opc, OpcodeStr, WriteShuffle256,
1565 multiclass avx512_common_broadcast_i32x2<bits<8> opc, string OpcodeStr,
1568 avx512_common_broadcast_32x2<opc, OpcodeStr, _Dst, _Src> {
1571 defm Z128 : avx512_broadcast_rm_split<opc, OpcodeStr, WriteShuffle,
1585 multiclass avx512_mask_broadcastm<bits<8> opc, string OpcodeStr,
1588 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
1593 multiclass avx512_mask_broadcast<bits<8> opc, string OpcodeStr,
1596 defm Z : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info512, KRC>, EVEX_V512;
1598 defm Z256 : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info256, KRC>, EVEX_V256;
1599 defm Z128 : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info128, KRC>, EVEX_V128;
1610 multiclass avx512_perm_i<bits<8> opc, string OpcodeStr,
1617 OpcodeStr, "$src3, $src2", "$src2, $src3",
1624 OpcodeStr, "$src3, $src2", "$src2, $src3",
1631 multiclass avx512_perm_i_mb<bits<8> opc, string OpcodeStr,
1638 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
1646 multiclass avx512_perm_i_sizes<bits<8> opc, string OpcodeStr,
1650 defm NAME#Z: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info512,
1652 avx512_perm_i_mb<opc, OpcodeStr, sched, VTInfo.info512,
1655 defm NAME#Z128: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info128,
1657 avx512_perm_i_mb<opc, OpcodeStr, sched, VTInfo.info128,
1659 defm NAME#Z256: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info256,
1661 avx512_perm_i_mb<opc, OpcodeStr, sched, VTInfo.info256,
1666 multiclass avx512_perm_i_sizes_bw<bits<8> opc, string OpcodeStr,
1672 defm NAME#Z: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info512,
1675 defm NAME#Z128: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info128,
1677 defm NAME#Z256: avx512_perm_i<opc, OpcodeStr, sched, VTInfo.info256,
1733 multiclass avx512_perm_t<bits<8> opc, string OpcodeStr,
1739 OpcodeStr, "$src3, $src2", "$src2, $src3",
1745 OpcodeStr, "$src3, $src2", "$src2, $src3",
1751 multiclass avx512_perm_t_mb<bits<8> opc, string OpcodeStr,
1757 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
1765 multiclass avx512_perm_t_sizes<bits<8> opc, string OpcodeStr,
1769 defm NAME#Z: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info512,
1771 avx512_perm_t_mb<opc, OpcodeStr, sched, VTInfo.info512,
1774 defm NAME#Z128: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info128,
1776 avx512_perm_t_mb<opc, OpcodeStr, sched, VTInfo.info128,
1778 defm NAME#Z256: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info256,
1780 avx512_perm_t_mb<opc, OpcodeStr, sched, VTInfo.info256,
1785 multiclass avx512_perm_t_sizes_bw<bits<8> opc, string OpcodeStr,
1790 defm NAME#Z: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info512,
1793 defm NAME#Z128: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info128,
1795 defm NAME#Z256: avx512_perm_t<opc, OpcodeStr, sched, VTInfo.info256,
1819 multiclass WriteFVarBlendask<bits<8> opc, string OpcodeStr,
1824 !strconcat(OpcodeStr,
1829 !strconcat(OpcodeStr,
1834 !strconcat(OpcodeStr,
1840 !strconcat(OpcodeStr,
1846 !strconcat(OpcodeStr,
1852 !strconcat(OpcodeStr,
1859 multiclass WriteFVarBlendask_rmb<bits<8> opc, string OpcodeStr,
1864 !strconcat(OpcodeStr,
1872 !strconcat(OpcodeStr,
1880 !strconcat(OpcodeStr,
1888 multiclass blendmask_dq<bits<8> opc, string OpcodeStr, X86SchedWriteWidths sched,
1890 defm Z : WriteFVarBlendask<opc, OpcodeStr, sched.ZMM, VTInfo.info512>,
1891 WriteFVarBlendask_rmb<opc, OpcodeStr, sched.ZMM, VTInfo.info512>,
1895 defm Z256 : WriteFVarBlendask<opc, OpcodeStr, sched.YMM, VTInfo.info256>,
1896 WriteFVarBlendask_rmb<opc, OpcodeStr, sched.YMM, VTInfo.info256>,
1898 defm Z128 : WriteFVarBlendask<opc, OpcodeStr, sched.XMM, VTInfo.info128>,
1899 WriteFVarBlendask_rmb<opc, OpcodeStr, sched.XMM, VTInfo.info128>,
1904 multiclass blendmask_bw<bits<8> opc, string OpcodeStr, X86SchedWriteWidths sched,
1907 defm Z : WriteFVarBlendask<opc, OpcodeStr, sched.ZMM, VTInfo.info512>,
1911 defm Z256 : WriteFVarBlendask<opc, OpcodeStr, sched.YMM, VTInfo.info256>,
1913 defm Z128 : WriteFVarBlendask<opc, OpcodeStr, sched.XMM, VTInfo.info128>,
2010 multiclass avx512_icmp_packed<bits<8> opc, string OpcodeStr,
2016 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2021 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2026 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
2032 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
2037 multiclass avx512_icmp_packed_rmb<bits<8> opc, string OpcodeStr,
2040 avx512_icmp_packed<opc, OpcodeStr, sched, _, IsCommutable> {
2044 !strconcat(OpcodeStr, "\t{${src2}", _.BroadcastStr, ", $src1, $dst",
2050 !strconcat(OpcodeStr,
2058 multiclass avx512_icmp_packed_vl<bits<8> opc, string OpcodeStr,
2063 defm Z : avx512_icmp_packed<opc, OpcodeStr, sched.ZMM,
2067 defm Z256 : avx512_icmp_packed<opc, OpcodeStr, sched.YMM,
2069 defm Z128 : avx512_icmp_packed<opc, OpcodeStr, sched.XMM,
2074 multiclass avx512_icmp_packed_rmb_vl<bits<8> opc, string OpcodeStr,
2079 defm Z : avx512_icmp_packed_rmb<opc, OpcodeStr, sched.ZMM,
2083 defm Z256 : avx512_icmp_packed_rmb<opc, OpcodeStr, sched.YMM,
2085 defm Z128 : avx512_icmp_packed_rmb<opc, OpcodeStr, sched.XMM,
2456 multiclass avx512_scalar_fpclass<bits<8> opc, string OpcodeStr,
2462 OpcodeStr#_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2468 OpcodeStr#_.Suffix#
2476 OpcodeStr#_.Suffix#
2484 OpcodeStr#_.Suffix#
2496 multiclass avx512_vector_fpclass<bits<8> opc, string OpcodeStr,
2502 OpcodeStr#_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2508 OpcodeStr#_.Suffix#
2516 OpcodeStr#_.Suffix#"{"#mem#"}"#
2524 OpcodeStr#_.Suffix#"{"#mem#"}"#
2532 OpcodeStr#_.Suffix#"\t{$src2, ${src1}"#
2541 OpcodeStr#_.Suffix#"\t{$src2, ${src1}"#
2552 def : InstAlias<OpcodeStr#_.Suffix#mem#
2556 def : InstAlias<OpcodeStr#_.Suffix#mem#
2560 def : InstAlias<OpcodeStr#_.Suffix#mem#
2565 def : InstAlias<OpcodeStr#_.Suffix#mem#
2572 multiclass avx512_vector_fpclass_all<string OpcodeStr, AVX512VLVectorVTInfo _,
2576 defm Z : avx512_vector_fpclass<opc, OpcodeStr, sched.ZMM,
2580 defm Z128 : avx512_vector_fpclass<opc, OpcodeStr, sched.XMM,
2582 defm Z256 : avx512_vector_fpclass<opc, OpcodeStr, sched.YMM,
2587 multiclass avx512_fp_fpclass_all<string OpcodeStr, bits<8> opcVec,
2589 defm PH : avx512_vector_fpclass_all<OpcodeStr, avx512vl_f16_info, opcVec,
2592 defm SHZ : avx512_scalar_fpclass<opcScalar, OpcodeStr,
2595 defm PS : avx512_vector_fpclass_all<OpcodeStr, avx512vl_f32_info, opcVec,
2598 defm PD : avx512_vector_fpclass_all<OpcodeStr, avx512vl_f64_info, opcVec,
2601 defm SSZ : avx512_scalar_fpclass<opcScalar, OpcodeStr,
2604 defm SDZ : avx512_scalar_fpclass<opcScalar, OpcodeStr,
2618 string OpcodeStr, RegisterClass KRC, ValueType vvt,
2623 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
2626 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
2630 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
2636 string OpcodeStr, RegisterClass KRC,
2640 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
2643 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
2781 multiclass avx512_mask_unop<bits<8> opc, string OpcodeStr,
2786 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
2791 multiclass avx512_mask_unop_all<bits<8> opc, string OpcodeStr,
2794 defm B : avx512_mask_unop<opc, !strconcat(OpcodeStr, "b"), VK8, OpNode,
2796 defm W : avx512_mask_unop<opc, !strconcat(OpcodeStr, "w"), VK16, OpNode,
2798 defm D : avx512_mask_unop<opc, !strconcat(OpcodeStr, "d"), VK32, OpNode,
2800 defm Q : avx512_mask_unop<opc, !strconcat(OpcodeStr, "q"), VK64, OpNode,
2821 multiclass avx512_mask_binop<bits<8> opc, string OpcodeStr,
2827 !strconcat(OpcodeStr,
2833 multiclass avx512_mask_binop_all<bits<8> opc, string OpcodeStr,
2837 defm B : avx512_mask_binop<opc, !strconcat(OpcodeStr, "b"), VK8, OpNode,
2839 defm W : avx512_mask_binop<opc, !strconcat(OpcodeStr, "w"), VK16, OpNode,
2841 defm D : avx512_mask_binop<opc, !strconcat(OpcodeStr, "d"), VK32, OpNode,
2843 defm Q : avx512_mask_binop<opc, !strconcat(OpcodeStr, "q"), VK64, OpNode,
2907 multiclass avx512_mask_testop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2912 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
2917 multiclass avx512_mask_testop_w<bits<8> opc, string OpcodeStr, SDNode OpNode,
2920 defm B : avx512_mask_testop<opc, OpcodeStr#"b", VK8, OpNode, sched, HasDQI>,
2922 defm W : avx512_mask_testop<opc, OpcodeStr#"w", VK16, OpNode, sched, prdW>,
2924 defm Q : avx512_mask_testop<opc, OpcodeStr#"q", VK64, OpNode, sched, HasBWI>,
2926 defm D : avx512_mask_testop<opc, OpcodeStr#"d", VK32, OpNode, sched, HasBWI>,
2935 multiclass avx512_mask_shiftop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2939 !strconcat(OpcodeStr,
2945 multiclass avx512_mask_shiftop_w<bits<8> opc1, bits<8> opc2, string OpcodeStr,
2947 defm W : avx512_mask_shiftop<opc1, !strconcat(OpcodeStr, "w"), VK16, OpNode,
2950 defm B : avx512_mask_shiftop<opc1, !strconcat(OpcodeStr, "b"), VK8, OpNode,
2953 defm Q : avx512_mask_shiftop<opc2, !strconcat(OpcodeStr, "q"), VK64, OpNode,
2955 defm D : avx512_mask_shiftop<opc2, !strconcat(OpcodeStr, "d"), VK32, OpNode,
3198 multiclass avx512_load<bits<8> opc, string OpcodeStr, string Name,
3205 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [],
3209 !strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}} {z}|",
3218 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
3227 !strconcat(OpcodeStr, "\t{$src1, ${dst} {${mask}}|",
3235 !strconcat(OpcodeStr, "\t{$src1, ${dst} {${mask}}|",
3245 OpcodeStr #"\t{$src, ${dst} {${mask}} {z}|"#
3262 multiclass avx512_alignedload_vl<bits<8> opc, string OpcodeStr,
3267 defm Z : avx512_load<opc, OpcodeStr, NAME, _.info512,
3272 defm Z256 : avx512_load<opc, OpcodeStr, NAME, _.info256,
3275 defm Z128 : avx512_load<opc, OpcodeStr, NAME, _.info128,
3281 multiclass avx512_load_vl<bits<8> opc, string OpcodeStr,
3287 defm Z : avx512_load<opc, OpcodeStr, NAME, _.info512, _.info512.LdFrag,
3291 defm Z256 : avx512_load<opc, OpcodeStr, NAME, _.info256, _.info256.LdFrag,
3293 defm Z128 : avx512_load<opc, OpcodeStr, NAME, _.info128, _.info128.LdFrag,
3298 multiclass avx512_store<bits<8> opc, string OpcodeStr, string BaseName,
3304 OpcodeStr # "\t{$src, $dst|$dst, $src}",
3309 OpcodeStr # "\t{$src, ${dst} {${mask}}|"#
3315 OpcodeStr # "\t{$src, ${dst} {${mask}} {z}|" #
3323 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
3329 OpcodeStr # "\t{$src, ${dst} {${mask}}|${dst} {${mask}}, $src}",
3336 def : InstAlias<OpcodeStr#".s\t{$src, $dst|$dst, $src}",
3339 def : InstAlias<OpcodeStr#".s\t{$src, ${dst} {${mask}}|${dst} {${mask}}, $src}",
3342 def : InstAlias<OpcodeStr#".s\t{$src, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src}",
3347 multiclass avx512_store_vl< bits<8> opc, string OpcodeStr,
3352 defm Z : avx512_store<opc, OpcodeStr, NAME, _.info512, store,
3355 defm Z256 : avx512_store<opc, OpcodeStr, NAME, _.info256, store,
3357 defm Z128 : avx512_store<opc, OpcodeStr, NAME, _.info128, store,
3362 multiclass avx512_alignedstore_vl<bits<8> opc, string OpcodeStr,
3367 defm Z : avx512_store<opc, OpcodeStr, NAME, _.info512, alignedstore,
3371 defm Z256 : avx512_store<opc, OpcodeStr, NAME, _.info256, alignedstore,
3373 defm Z128 : avx512_store<opc, OpcodeStr, NAME, _.info128, alignedstore,
4569 multiclass avx512_movnt<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
4574 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4579 multiclass avx512_movnt_vl<bits<8> opc, string OpcodeStr,
4583 defm Z : avx512_movnt<opc, OpcodeStr, VTInfo.info512, Sched.ZMM>, EVEX_V512;
4586 defm Z256 : avx512_movnt<opc, OpcodeStr, VTInfo.info256, Sched.YMM>, EVEX_V256;
4587 defm Z128 : avx512_movnt<opc, OpcodeStr, VTInfo.info128, Sched.XMM>, EVEX_V128;
4665 multiclass avx512_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4669 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
4676 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
4683 multiclass avx512_binop_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
4686 avx512_binop_rm<opc, OpcodeStr, OpNode, _, sched, IsCommutable> {
4688 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
4697 multiclass avx512_binop_rm_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
4702 defm Z : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info512, sched.ZMM,
4706 defm Z256 : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info256,
4708 defm Z128 : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info128,
4713 multiclass avx512_binop_rmb_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
4718 defm Z : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info512, sched.ZMM,
4722 defm Z256 : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info256,
4724 defm Z128 : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info128,
4729 multiclass avx512_binop_rm_vl_q<bits<8> opc, string OpcodeStr, SDNode OpNode,
4732 defm NAME : avx512_binop_rmb_vl<opc, OpcodeStr, OpNode, avx512vl_i64_info,
4737 multiclass avx512_binop_rm_vl_d<bits<8> opc, string OpcodeStr, SDNode OpNode,
4740 defm NAME : avx512_binop_rmb_vl<opc, OpcodeStr, OpNode, avx512vl_i32_info,
4744 multiclass avx512_binop_rm_vl_w<bits<8> opc, string OpcodeStr, SDNode OpNode,
4747 defm NAME : avx512_binop_rm_vl<opc, OpcodeStr, OpNode, avx512vl_i16_info,
4752 multiclass avx512_binop_rm_vl_b<bits<8> opc, string OpcodeStr, SDNode OpNode,
4755 defm NAME : avx512_binop_rm_vl<opc, OpcodeStr, OpNode, avx512vl_i8_info,
4760 multiclass avx512_binop_rm_vl_dq<bits<8> opc_d, bits<8> opc_q, string OpcodeStr,
4763 defm Q : avx512_binop_rm_vl_q<opc_q, OpcodeStr#"q", OpNode, sched, prd,
4766 defm D : avx512_binop_rm_vl_d<opc_d, OpcodeStr#"d", OpNode, sched, prd,
4770 multiclass avx512_binop_rm_vl_bw<bits<8> opc_b, bits<8> opc_w, string OpcodeStr,
4773 defm W : avx512_binop_rm_vl_w<opc_w, OpcodeStr#"w", OpNode, sched, prd,
4776 defm B : avx512_binop_rm_vl_b<opc_b, OpcodeStr#"b", OpNode, sched, prd,
4782 string OpcodeStr, SDNode OpNode,
4785 defm NAME : avx512_binop_rm_vl_dq<opc_d, opc_q, OpcodeStr, OpNode,
4787 avx512_binop_rm_vl_bw<opc_b, opc_w, OpcodeStr, OpNode,
4791 multiclass avx512_binop_rm2<bits<8> opc, string OpcodeStr,
4797 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
4805 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
4814 OpcodeStr,
4854 multiclass avx512_binop_all<bits<8> opc, string OpcodeStr,
4860 defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, sched.ZMM, OpNode,
4865 defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, sched.YMM, OpNode,
4869 defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, sched.XMM, OpNode,
4880 multiclass avx512_packs_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
4885 OpcodeStr,
4894 multiclass avx512_packs_rm<bits<8> opc, string OpcodeStr,
4899 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
4907 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
4915 multiclass avx512_packs_all_i32_i16<bits<8> opc, string OpcodeStr,
4918 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, v16i32_info,
4920 avx512_packs_rmb<opc, OpcodeStr, OpNode, v16i32_info,
4923 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, v8i32x_info,
4925 avx512_packs_rmb<opc, OpcodeStr, OpNode, v8i32x_info,
4928 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, v4i32x_info,
4930 avx512_packs_rmb<opc, OpcodeStr, OpNode, v4i32x_info,
4935 multiclass avx512_packs_all_i16_i8<bits<8> opc, string OpcodeStr,
4938 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, v32i16_info, v64i8_info,
4941 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, v16i16x_info,
4944 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, v8i16x_info,
4950 multiclass avx512_vpmadd<bits<8> opc, string OpcodeStr,
4954 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info512,
4958 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info256,
4961 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info128,
5350 multiclass avx512_fp_scalar<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5355 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5361 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5369 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5376 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5384 multiclass avx512_fp_scalar_round<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5388 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
5394 multiclass avx512_fp_scalar_sae<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5399 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5405 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5415 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5422 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5430 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5437 multiclass avx512_binop_s_round<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
5440 defm SSZ : avx512_fp_scalar<opc, OpcodeStr#"ss", f32x_info, OpNode, VecNode,
5442 avx512_fp_scalar_round<opc, OpcodeStr#"ss", f32x_info, RndNode,
5445 defm SDZ : avx512_fp_scalar<opc, OpcodeStr#"sd", f64x_info, OpNode, VecNode,
5447 avx512_fp_scalar_round<opc, OpcodeStr#"sd", f64x_info, RndNode,
5451 defm SHZ : avx512_fp_scalar<opc, OpcodeStr#"sh", f16x_info, OpNode,
5453 avx512_fp_scalar_round<opc, OpcodeStr#"sh", f16x_info, RndNode,
5458 multiclass avx512_binop_s_sae<bits<8> opc, string OpcodeStr, SDNode OpNode,
5461 defm SSZ : avx512_fp_scalar_sae<opc, OpcodeStr#"ss", f32x_info, OpNode,
5464 defm SDZ : avx512_fp_scalar_sae<opc, OpcodeStr#"sd", f64x_info, OpNode,
5468 defm SHZ : avx512_fp_scalar_sae<opc, OpcodeStr#"sh", f16x_info, OpNode,
5488 multiclass avx512_comutable_binop_s<bits<8> opc, string OpcodeStr,
5494 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5501 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5533 multiclass avx512_fp_packed<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
5544 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#suffix,
5551 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr#suffix,
5557 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr#suffix,
5567 multiclass avx512_fp_round_packed<bits<8> opc, string OpcodeStr,
5574 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr#suffix,
5581 multiclass avx512_fp_sae_packed<bits<8> opc, string OpcodeStr,
5586 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5592 multiclass avx512_fp_binop_p<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
5598 defm PSZ : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v16f32_info,
5601 defm PDZ : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v8f64_info,
5608 defm PSZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v4f32x_info,
5611 defm PSZ256 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v8f32x_info,
5614 defm PDZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v2f64x_info,
5618 defm PDZ256 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v4f64x_info,
5624 multiclass avx512_fp_binop_ph<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
5628 defm PHZ : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v32f16_info,
5633 defm PHZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v8f16x_info,
5636 defm PHZ256 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v16f16x_info,
5643 multiclass avx512_fp_binop_p_round<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd,
5646 defm PHZ : avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, sched.PH.ZMM,
5650 defm PSZ : avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, sched.PS.ZMM,
5653 defm PDZ : avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, sched.PD.ZMM,
5659 multiclass avx512_fp_binop_p_sae<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd,
5662 defm PHZ : avx512_fp_sae_packed<opc, OpcodeStr, OpNodeRnd, sched.PH.ZMM,
5666 defm PSZ : avx512_fp_sae_packed<opc, OpcodeStr, OpNodeRnd, sched.PS.ZMM,
5669 defm PDZ : avx512_fp_sae_packed<opc, OpcodeStr, OpNodeRnd, sched.PD.ZMM,
5719 multiclass avx512_fp_scalef_p<bits<8> opc, string OpcodeStr, SDNode OpNode,
5723 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5728 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr#_.Suffix,
5733 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr#_.Suffix,
5741 multiclass avx512_fp_scalef_scalar<bits<8> opc, string OpcodeStr, SDNode OpNode,
5745 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5750 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr#_.Suffix,
5757 multiclass avx512_fp_scalef_all<bits<8> opc, bits<8> opcScaler, string OpcodeStr,
5760 defm PHZ : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.ZMM, v32f16_info>,
5761 avx512_fp_round_packed<opc, OpcodeStr, X86scalefRnd, sched.ZMM, v32f16_info>,
5763 defm SHZ : avx512_fp_scalef_scalar<opcScaler, OpcodeStr, X86scalefs, sched.Scl, f16x_info>,
5764 … avx512_fp_scalar_round<opcScaler, OpcodeStr#"sh", f16x_info, X86scalefsRnd, sched.Scl>,
5767 defm PSZ : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.ZMM, v16f32_info>,
5768 avx512_fp_round_packed<opc, OpcodeStr, X86scalefRnd, sched.ZMM, v16f32_info>,
5770 defm PDZ : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.ZMM, v8f64_info>,
5771 avx512_fp_round_packed<opc, OpcodeStr, X86scalefRnd, sched.ZMM, v8f64_info>,
5773 defm SSZ : avx512_fp_scalef_scalar<opcScaler, OpcodeStr, X86scalefs, sched.Scl, f32x_info>,
5774 avx512_fp_scalar_round<opcScaler, OpcodeStr#"ss", f32x_info,
5777 defm SDZ : avx512_fp_scalef_scalar<opcScaler, OpcodeStr, X86scalefs, sched.Scl, f64x_info>,
5778 avx512_fp_scalar_round<opcScaler, OpcodeStr#"sd", f64x_info,
5784 defm PSZ128 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.XMM, v4f32x_info>,
5786 defm PSZ256 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.YMM, v8f32x_info>,
5788 defm PDZ128 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.XMM, v2f64x_info>,
5790 defm PDZ256 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.YMM, v4f64x_info>,
5795 defm PHZ128 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.XMM, v8f16x_info>,
5797 defm PHZ256 : avx512_fp_scalef_p<opc, OpcodeStr, X86scalef, sched.YMM, v16f16x_info>,
5807 multiclass avx512_vptest<bits<8> opc, string OpcodeStr,
5813 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5819 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
5827 multiclass avx512_vptest_mb<bits<8> opc, string OpcodeStr,
5831 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
5839 multiclass avx512_vptest_dq_sizes<bits<8> opc, string OpcodeStr,
5843 defm Z : avx512_vptest<opc, OpcodeStr, sched.ZMM, _.info512>,
5844 avx512_vptest_mb<opc, OpcodeStr, sched.ZMM, _.info512>, EVEX_V512;
5847 defm Z256 : avx512_vptest<opc, OpcodeStr, sched.YMM, _.info256>,
5848 avx512_vptest_mb<opc, OpcodeStr, sched.YMM, _.info256>, EVEX_V256;
5849 defm Z128 : avx512_vptest<opc, OpcodeStr, sched.XMM, _.info128>,
5850 avx512_vptest_mb<opc, OpcodeStr, sched.XMM, _.info128>, EVEX_V128;
5854 multiclass avx512_vptest_dq<bits<8> opc, string OpcodeStr,
5856 defm D : avx512_vptest_dq_sizes<opc, OpcodeStr#"d", sched,
5858 defm Q : avx512_vptest_dq_sizes<opc, OpcodeStr#"q", sched,
5862 multiclass avx512_vptest_wb<bits<8> opc, string OpcodeStr,
5865 defm WZ: avx512_vptest<opc, OpcodeStr#"w", sched.ZMM,
5867 defm BZ: avx512_vptest<opc, OpcodeStr#"b", sched.ZMM,
5872 defm WZ256: avx512_vptest<opc, OpcodeStr#"w", sched.YMM,
5874 defm WZ128: avx512_vptest<opc, OpcodeStr#"w", sched.XMM,
5876 defm BZ256: avx512_vptest<opc, OpcodeStr#"b", sched.YMM,
5878 defm BZ128: avx512_vptest<opc, OpcodeStr#"b", sched.XMM,
5883 multiclass avx512_vptest_all_forms<bits<8> opc_wb, bits<8> opc_dq, string OpcodeStr,
5885 avx512_vptest_wb<opc_wb, OpcodeStr, sched>,
5886 avx512_vptest_dq<opc_dq, OpcodeStr, sched>;
5898 string OpcodeStr, SDNode OpNode,
5902 (ins _.RC:$src1, u8imm:$src2), OpcodeStr,
5907 (ins _.MemOp:$src1, u8imm:$src2), OpcodeStr,
5916 string OpcodeStr, SDNode OpNode,
5920 (ins _.ScalarMemOp:$src1, u8imm:$src2), OpcodeStr,
5926 multiclass avx512_shift_rrm<bits<8> opc, string OpcodeStr, SDNode OpNode,
5932 (ins _.RC:$src1, VR128X:$src2), OpcodeStr,
5937 (ins _.RC:$src1, i128mem:$src2), OpcodeStr,
5945 multiclass avx512_shift_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
5950 defm Z : avx512_shift_rrm<opc, OpcodeStr, OpNode, sched.ZMM, SrcVT,
5954 defm Z256 : avx512_shift_rrm<opc, OpcodeStr, OpNode, sched.YMM, SrcVT,
5957 defm Z128 : avx512_shift_rrm<opc, OpcodeStr, OpNode, sched.XMM, SrcVT,
5964 string OpcodeStr, SDNode OpNode,
5966 defm D : avx512_shift_sizes<opcd, OpcodeStr#"d", OpNode, sched, v4i32,
5968 defm Q : avx512_shift_sizes<opcq, OpcodeStr#"q", OpNode, sched, v2i64,
5970 defm W : avx512_shift_sizes<opcw, OpcodeStr#"w", OpNode, sched, v8i16,
5975 string OpcodeStr, SDNode OpNode,
5979 defm Z: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
5981 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode, sched.ZMM,
5984 defm Z256: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
5986 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode, sched.YMM,
5988 defm Z128: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
5990 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode, sched.XMM,
5996 string OpcodeStr, SDNode OpNode,
5999 defm WZ: avx512_shift_rmi<opcw, ImmFormR, ImmFormM, OpcodeStr, OpNode,
6002 defm WZ256: avx512_shift_rmi<opcw, ImmFormR, ImmFormM, OpcodeStr, OpNode,
6004 defm WZ128: avx512_shift_rmi<opcw, ImmFormR, ImmFormM, OpcodeStr, OpNode,
6011 string OpcodeStr, SDNode OpNode,
6013 defm D: avx512_shift_rmi_sizes<opcd, ImmFormR, ImmFormM, OpcodeStr#"d", OpNode,
6015 defm Q: avx512_shift_rmi_sizes<opcq, ImmFormR, ImmFormM, OpcodeStr#"q", OpNode,
6077 multiclass avx512_var_shift<bits<8> opc, string OpcodeStr, SDNode OpNode,
6081 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
6086 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
6095 multiclass avx512_var_shift_mb<bits<8> opc, string OpcodeStr, SDNode OpNode,
6099 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
6107 multiclass avx512_var_shift_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
6110 defm Z : avx512_var_shift<opc, OpcodeStr, OpNode, sched.ZMM, _.info512>,
6111 avx512_var_shift_mb<opc, OpcodeStr, OpNode, sched.ZMM, _.info512>, EVEX_V512;
6114 defm Z256 : avx512_var_shift<opc, OpcodeStr, OpNode, sched.YMM, _.info256>,
6115 avx512_var_shift_mb<opc, OpcodeStr, OpNode, sched.YMM, _.info256>, EVEX_V256;
6116 defm Z128 : avx512_var_shift<opc, OpcodeStr, OpNode, sched.XMM, _.info128>,
6117 avx512_var_shift_mb<opc, OpcodeStr, OpNode, sched.XMM, _.info128>, EVEX_V128;
6121 multiclass avx512_var_shift_types<bits<8> opc, string OpcodeStr,
6123 defm D : avx512_var_shift_sizes<opc, OpcodeStr#"d", OpNode, sched,
6125 defm Q : avx512_var_shift_sizes<opc, OpcodeStr#"q", OpNode, sched,
6130 multiclass avx512_var_shift_lowering<AVX512VLVectorVTInfo _, string OpcodeStr,
6136 (!cast<Instruction>(OpcodeStr#"Zrr")
6144 (!cast<Instruction>(OpcodeStr#"Zrr")
6150 multiclass avx512_var_shift_w<bits<8> opc, string OpcodeStr,
6153 defm WZ: avx512_var_shift<opc, OpcodeStr, OpNode, sched.ZMM, v32i16_info>,
6157 defm WZ256: avx512_var_shift<opc, OpcodeStr, OpNode, sched.YMM, v16i16x_info>,
6159 defm WZ128: avx512_var_shift<opc, OpcodeStr, OpNode, sched.XMM, v8i16x_info>,
6288 multiclass avx512_vperm_dq_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
6291 defm Z : avx512_var_shift<opc, OpcodeStr, OpNode, sched, _.info512>,
6292 avx512_var_shift_mb<opc, OpcodeStr, OpNode, sched, _.info512>, EVEX_V512;
6295 defm Z256 : avx512_var_shift<opc, OpcodeStr, OpNode, sched, _.info256>,
6296 avx512_var_shift_mb<opc, OpcodeStr, OpNode, sched, _.info256>, EVEX_V256;
6300 string OpcodeStr, SDNode OpNode,
6303 defm Z: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
6305 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
6308 defm Z256: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
6310 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
6314 multiclass avx512_vperm_bw<bits<8> opc, string OpcodeStr,
6318 defm Z: avx512_var_shift<opc, OpcodeStr, OpNode, sched, _.info512>,
6321 defm Z256: avx512_var_shift<opc, OpcodeStr, OpNode, sched, _.info256>,
6323 defm Z128: avx512_var_shift<opc, OpcodeStr, OpNode, sched, _.info128>,
6353 multiclass avx512_permil_vec<bits<8> OpcVar, string OpcodeStr, SDNode OpNode,
6357 (ins _.RC:$src1, Ctrl.RC:$src2), OpcodeStr,
6363 (ins _.RC:$src1, Ctrl.MemOp:$src2), OpcodeStr,
6371 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
6381 multiclass avx512_permil_vec_common<string OpcodeStr, bits<8> OpcVar,
6386 defm Z : avx512_permil_vec<OpcVar, OpcodeStr, X86VPermilpv, sched.ZMM,
6390 defm Z128 : avx512_permil_vec<OpcVar, OpcodeStr, X86VPermilpv, sched.XMM,
6392 defm Z256 : avx512_permil_vec<OpcVar, OpcodeStr, X86VPermilpv, sched.YMM,
6397 multiclass avx512_permil<string OpcodeStr, bits<8> OpcImm, bits<8> OpcVar,
6399 defm NAME: avx512_permil_vec_common<OpcodeStr, OpcVar, SchedWriteFVarShuffle,
6401 defm NAME: avx512_shift_rmi_sizes<OpcImm, MRMSrcReg, MRMSrcMem, OpcodeStr,
6431 multiclass avx512_pshufb_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
6434 defm Z: avx512_var_shift<opc, OpcodeStr, OpNode, sched.ZMM, v64i8_info>,
6438 defm Z256: avx512_var_shift<opc, OpcodeStr, OpNode, sched.YMM, v32i8x_info>,
6440 defm Z128: avx512_var_shift<opc, OpcodeStr, OpNode, sched.XMM, v16i8x_info>,
6469 multiclass avx512_mov_hilo_packed<bits<8> opc, string OpcodeStr,
6475 !strconcat(OpcodeStr,
6542 multiclass avx512_fma3p_213_rm<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6549 OpcodeStr, "$src3, $src2", "$src2, $src3",
6556 OpcodeStr, "$src3, $src2", "$src2, $src3",
6564 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
6575 multiclass avx512_fma3_213_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
6582 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6588 multiclass avx512_fma3p_213_common<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6594 defm Z : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6596 avx512_fma3_213_round<opc, OpcodeStr, OpNodeRnd, sched.ZMM,
6601 defm Z256 : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6604 defm Z128 : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6610 multiclass avx512_fma3p_213_f<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6612 defm PH : avx512_fma3p_213_common<opc, OpcodeStr#"ph", OpNode, MaskOpNode,
6615 defm PS : avx512_fma3p_213_common<opc, OpcodeStr#"ps", OpNode, MaskOpNode,
6618 defm PD : avx512_fma3p_213_common<opc, OpcodeStr#"pd", OpNode, MaskOpNode,
6637 multiclass avx512_fma3p_231_rm<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6644 OpcodeStr, "$src3, $src2", "$src2, $src3",
6651 OpcodeStr, "$src3, $src2", "$src2, $src3",
6659 OpcodeStr, "${src3}"#_.BroadcastStr#", $src2",
6672 multiclass avx512_fma3_231_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
6679 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6685 multiclass avx512_fma3p_231_common<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6691 defm Z : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6693 avx512_fma3_231_round<opc, OpcodeStr, OpNodeRnd, sched.ZMM,
6698 defm Z256 : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6701 defm Z128 : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6707 multiclass avx512_fma3p_231_f<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6709 defm PH : avx512_fma3p_231_common<opc, OpcodeStr#"ph", OpNode, MaskOpNode,
6712 defm PS : avx512_fma3p_231_common<opc, OpcodeStr#"ps", OpNode, MaskOpNode,
6715 defm PD : avx512_fma3p_231_common<opc, OpcodeStr#"pd", OpNode, MaskOpNode,
6733 multiclass avx512_fma3p_132_rm<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6740 OpcodeStr, "$src3, $src2", "$src2, $src3",
6749 OpcodeStr, "$src3, $src2", "$src2, $src3",
6759 OpcodeStr, "${src3}"#_.BroadcastStr#", $src2",
6770 multiclass avx512_fma3_132_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
6777 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6783 multiclass avx512_fma3p_132_common<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6789 defm Z : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6791 avx512_fma3_132_round<opc, OpcodeStr, OpNodeRnd, sched.ZMM,
6796 defm Z256 : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6799 defm Z128 : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, MaskOpNode,
6805 multiclass avx512_fma3p_132_f<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
6807 defm PH : avx512_fma3p_132_common<opc, OpcodeStr#"ph", OpNode, MaskOpNode,
6810 defm PS : avx512_fma3p_132_common<opc, OpcodeStr#"ps", OpNode, MaskOpNode,
6813 defm PD : avx512_fma3p_132_common<opc, OpcodeStr#"pd", OpNode, MaskOpNode,
6832 multiclass avx512_fma3s_common<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
6836 (ins _.RC:$src2, _.RC:$src3), OpcodeStr,
6842 (ins _.RC:$src2, _.IntScalarMemOp:$src3), OpcodeStr,
6850 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc", (null_frag), 1, 1>,
6856 !strconcat(OpcodeStr,
6861 !strconcat(OpcodeStr,
6869 !strconcat(OpcodeStr,
6878 string OpcodeStr, SDPatternOperator OpNode, SDNode OpNodeRnd,
6881 defm NAME#213#SUFF#Z: avx512_fma3s_common<opc213, OpcodeStr#"213"#_.Suffix, _,
6891 defm NAME#231#SUFF#Z: avx512_fma3s_common<opc231, OpcodeStr#"231"#_.Suffix, _,
6901 defm NAME#132#SUFF#Z: avx512_fma3s_common<opc132, OpcodeStr#"132"#_.Suffix, _,
6912 string OpcodeStr, SDPatternOperator OpNode, SDNode OpNodeRnd> {
6914 defm NAME : avx512_fma3s_all<opc213, opc231, opc132, OpcodeStr, OpNode,
6917 defm NAME : avx512_fma3s_all<opc213, opc231, opc132, OpcodeStr, OpNode,
6922 defm NAME : avx512_fma3s_all<opc213, opc231, opc132, OpcodeStr, OpNode,
7167 multiclass avx512_pmadd52_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7174 OpcodeStr, "$src3, $src2", "$src2, $src3",
7180 OpcodeStr, "$src3, $src2", "$src2, $src3",
7187 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
7198 multiclass avx512_pmadd52_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
7201 defm Z : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, sched.ZMM, _.info512>,
7205 defm Z256 : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, sched.YMM, _.info256>,
7207 defm Z128 : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, sched.XMM, _.info128>,
7625 multiclass avx512_cvt_fp_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7629 (ins _.RC:$src1, _Src.RC:$src2), OpcodeStr,
7635 (ins _.RC:$src1, _Src.IntScalarMemOp:$src2), OpcodeStr,
7645 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
7650 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
7656 multiclass avx512_cvt_fp_sae_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7661 (ins _.RC:$src1, _Src.RC:$src2), OpcodeStr,
7669 multiclass avx512_cvt_fp_rc_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7674 (ins _.RC:$src1, _Src.RC:$src2, AVX512RC:$rc), OpcodeStr,
7681 multiclass avx512_cvt_fp_scalar_trunc<bits<8> opc, string OpcodeStr,
7687 defm Z : avx512_cvt_fp_scalar<opc, OpcodeStr, _dst, _src, OpNode, sched>,
7688 avx512_cvt_fp_rc_scalar<opc, OpcodeStr, _dst, _src,
7693 multiclass avx512_cvt_fp_scalar_extend<bits<8> opc, string OpcodeStr,
7699 defm Z : avx512_cvt_fp_scalar<opc, OpcodeStr, _dst, _src, OpNode, sched>,
7700 avx512_cvt_fp_sae_scalar<opc, OpcodeStr, _dst, _src, OpNodeSAE, sched>,
7774 multiclass avx512_vcvt_fp<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7787 OpcodeStr, "$src", "$src",
7801 OpcodeStr#Alias, "$src", "$src",
7811 OpcodeStr,
7832 multiclass avx512_vcvt_fp_sae<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7837 (ins _Src.RC:$src), OpcodeStr,
7844 multiclass avx512_vcvt_fp_rc<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7849 (ins _Src.RC:$src, AVX512RC:$rc), OpcodeStr,
7856 multiclass avx512_vcvt_fpextend<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
7863 : avx512_vcvt_fp<opc, OpcodeStr, _, _Src, OpNode, MaskOpNode, sched, Broadcast,
7869 multiclass avx512_cvt_extend<bits<8> opc, string OpcodeStr,
7873 defm Z : avx512_vcvt_fpextend<opc, OpcodeStr, _dst.info512, _src.info256,
7875 avx512_vcvt_fp_sae<opc, OpcodeStr, _dst.info512, _src.info256,
7879 defm Z128 : avx512_vcvt_fpextend<opc, OpcodeStr, _dst.info128, _src.info128,
7883 defm Z256 : avx512_vcvt_fpextend<opc, OpcodeStr, _dst.info256, _src.info128,
7889 multiclass avx512_cvt_trunc<bits<8> opc, string OpcodeStr,
7896 defm Z : avx512_vcvt_fp<opc, OpcodeStr, _dst.info256, _src.info512,
7898 avx512_vcvt_fp_rc<opc, OpcodeStr, _dst.info256, _src.info512,
7902 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, _dst.info128, _src.info128,
7906 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, _dst.info128, _src.info256,
7940 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
7942 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
7945 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|"
7949 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
7951 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
7955 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
7960 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
7962 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
7965 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|"
7969 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
7971 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
7975 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
7989 multiclass avx512_cvtph2pd<bits<8> opc, string OpcodeStr,
7992 defm Z : avx512_vcvt_fpextend<opc, OpcodeStr, v8f64_info, v8f16x_info,
7994 avx512_vcvt_fp_sae<opc, OpcodeStr, v8f64_info, v8f16x_info,
8000 defm Z128 : avx512_vcvt_fpextend<opc, OpcodeStr, v2f64x_info, v8f16x_info,
8003 defm Z256 : avx512_vcvt_fpextend<opc, OpcodeStr, v4f64x_info, v8f16x_info,
8010 multiclass avx512_cvtpd2ph<bits<8> opc, string OpcodeStr, X86SchedWriteWidths sched> {
8012 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v8f64_info,
8014 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f16x_info, v8f64_info,
8018 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v2f64x_info, null_frag,
8021 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v4f64x_info, null_frag,
8025 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
8028 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8031 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8034 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
8037 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
8041 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
8046 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
8049 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|"
8053 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|"
8057 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
8060 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
8064 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
8069 def : InstAlias<OpcodeStr#"z\t{$src, $dst|$dst, $src}",
8072 def : InstAlias<OpcodeStr#"z\t{$src, $dst {${mask}}|"
8076 def : InstAlias<OpcodeStr#"z\t{$src, $dst {${mask}} {z}|"
8080 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst|$dst, ${src}{1to8}}",
8083 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst {${mask}}|"
8087 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst {${mask}} {z}|"
8164 multiclass avx512_cvtdq2pd<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8170 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f64_info, v8i32x_info, OpNode,
8174 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2f64x_info, v4i32x_info,
8184 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f64x_info, v4i32x_info, OpNode,
8190 multiclass avx512_cvtdq2ps<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8194 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16f32_info, v16i32_info, OpNode,
8196 avx512_vcvt_fp_rc<opc, OpcodeStr, v16f32_info, v16i32_info,
8200 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v4i32x_info, OpNode,
8202 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8f32x_info, v8i32x_info, OpNode,
8208 multiclass avx512_cvttps2dq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8212 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode,
8214 avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f32_info,
8218 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode,
8220 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode,
8226 multiclass avx512_cvtps2dq<bits<8> opc, string OpcodeStr, SDNode OpNode,
8230 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode,
8232 avx512_vcvt_fp_rc<opc, OpcodeStr, v16i32_info, v16f32_info,
8236 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode,
8238 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode,
8244 multiclass avx512_cvttpd2dq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8248 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode,
8250 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f64_info,
8258 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info,
8261 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
8265 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
8268 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8271 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8274 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
8277 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
8281 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
8286 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
8289 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8292 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8295 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
8298 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
8302 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
8309 multiclass avx512_cvtpd2dq<bits<8> opc, string OpcodeStr, SDNode OpNode,
8313 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode,
8315 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i32x_info, v8f64_info,
8323 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info,
8326 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
8330 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
8332 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8335 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8338 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
8341 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
8345 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
8350 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
8352 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8355 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8358 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
8361 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
8365 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
8372 multiclass avx512_cvtpd2qq<bits<8> opc, string OpcodeStr, SDNode OpNode,
8376 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode,
8378 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i64_info, v8f64_info,
8382 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode,
8384 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode,
8390 multiclass avx512_cvttpd2qq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8394 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode,
8396 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f64_info,
8400 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode,
8402 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode,
8408 multiclass avx512_cvtqq2pd<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8412 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f64_info, v8i64_info, OpNode,
8414 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f64_info, v8i64_info,
8418 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2f64x_info, v2i64x_info, OpNode,
8420 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f64x_info, v4i64x_info, OpNode,
8426 multiclass avx512_cvtps2qq<bits<8> opc, string OpcodeStr, SDNode OpNode,
8430 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode,
8432 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i64_info, v8f32x_info,
8438 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
8447 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode,
8453 multiclass avx512_cvttps2qq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8457 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode,
8459 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f32x_info,
8465 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
8474 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode,
8481 multiclass avx512_cvtqq2ps_dq2ph<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
8487 defm Z : avx512_vcvt_fp<opc, OpcodeStr, _dst.info256, _src.info512, OpNode,
8489 avx512_vcvt_fp_rc<opc, OpcodeStr, _dst.info256, _src.info512,
8497 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, _dst.info128, _src.info128, null_frag,
8501 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, _dst.info128, _src.info256, OpNode,
8535 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
8538 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
8541 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
8544 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
8547 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
8551 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
8556 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
8559 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|"
8563 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|"
8567 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
8570 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
8574 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
9068 string OpcodeStr, Domain d,
9072 !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"), []>,
9142 multiclass avx512_fp14_s<bits<8> opc, string OpcodeStr, SDNode OpNode,
9147 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9152 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9182 multiclass avx512_fp14_p<bits<8> opc, string OpcodeStr, SDNode OpNode,
9186 (ins _.RC:$src), OpcodeStr, "$src", "$src",
9190 (ins _.MemOp:$src), OpcodeStr, "$src", "$src",
9195 (ins _.ScalarMemOp:$src), OpcodeStr,
9203 multiclass avx512_fp14_p_vl_all<bits<8> opc, string OpcodeStr, SDNode OpNode,
9206 defm 14PSZ : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14ps"), OpNode, sched.ZMM,
9208 defm 14PDZ : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14pd"), OpNode, sched.ZMM,
9212 defm PHZ : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ph"), OpNode, sched.ZMM,
9217 defm 14PSZ128 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14ps"),
9220 defm 14PSZ256 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14ps"),
9223 defm 14PDZ128 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14pd"),
9226 defm 14PDZ256 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "14pd"),
9231 defm PHZ128 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ph"),
9234 defm PHZ256 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ph"),
9244 multiclass avx512_fp28_s<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
9249 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9255 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9261 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9268 multiclass avx512_fp28_s_ass<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
9272 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9276 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9281 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9288 multiclass avx512_eri_s_ass<bits<8> opc, string OpcodeStr,
9290 defm SSZ : avx512_fp28_s_ass<opc, OpcodeStr#"ss", f32x_info, sched>,
9292 defm SDZ : avx512_fp28_s_ass<opc, OpcodeStr#"sd", f64x_info, sched>,
9299 multiclass avx512_eri_s<bits<8> opc, string OpcodeStr, SDNode OpNode,
9301 defm SSZ : avx512_fp28_s<opc, OpcodeStr#"ss", f32x_info, OpNode, OpNodeSAE,
9303 defm SDZ : avx512_fp28_s<opc, OpcodeStr#"sd", f64x_info, OpNode, OpNodeSAE,
9307 multiclass avx512_vgetexpsh<bits<8> opc, string OpcodeStr, SDNode OpNode,
9310 defm SHZ : avx512_fp28_s<opc, OpcodeStr#"sh", f16x_info, OpNode, OpNodeSAE, sched>,
9320 multiclass avx512_fp28_p<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
9324 (ins _.RC:$src), OpcodeStr, "$src", "$src",
9329 (ins _.MemOp:$src), OpcodeStr, "$src", "$src",
9335 (ins _.ScalarMemOp:$src), OpcodeStr,
9342 multiclass avx512_fp28_p_sae<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
9346 (ins _.RC:$src), OpcodeStr,
9352 multiclass avx512_fp28_p_ass<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
9357 (ins _.RC:$src), OpcodeStr, "$src", "$src",
9361 (ins _.MemOp:$src), OpcodeStr, "$src", "$src",
9366 (ins _.ScalarMemOp:$src), OpcodeStr,
9372 multiclass avx512_fp28_p_sae_ass<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
9376 (ins _.RC:$src), OpcodeStr,
9381 multiclass avx512_eri_ass<bits<8> opc, string OpcodeStr,
9383 defm PSZ : avx512_fp28_p_ass<opc, OpcodeStr#"ps", v16f32_info, sched.ZMM>,
9384 avx512_fp28_p_sae_ass<opc, OpcodeStr#"ps", v16f32_info, sched.ZMM>,
9386 defm PDZ : avx512_fp28_p_ass<opc, OpcodeStr#"pd", v8f64_info, sched.ZMM>,
9387 avx512_fp28_p_sae_ass<opc, OpcodeStr#"pd", v8f64_info, sched.ZMM>,
9395 multiclass avx512_eri<bits<8> opc, string OpcodeStr, SDNode OpNode,
9397 defm PSZ : avx512_fp28_p<opc, OpcodeStr#"ps", v16f32_info, OpNode, sched.ZMM>,
9398 avx512_fp28_p_sae<opc, OpcodeStr#"ps", v16f32_info, OpNodeSAE, sched.ZMM>,
9400 defm PDZ : avx512_fp28_p<opc, OpcodeStr#"pd", v8f64_info, OpNode, sched.ZMM>,
9401 avx512_fp28_p_sae<opc, OpcodeStr#"pd", v8f64_info, OpNodeSAE, sched.ZMM>,
9405 multiclass avx512_fp_unaryop_packed<bits<8> opc, string OpcodeStr,
9409 defm PSZ128 : avx512_fp28_p<opc, OpcodeStr#"ps", v4f32x_info, OpNode,
9412 defm PSZ256 : avx512_fp28_p<opc, OpcodeStr#"ps", v8f32x_info, OpNode,
9415 defm PDZ128 : avx512_fp28_p<opc, OpcodeStr#"pd", v2f64x_info, OpNode,
9418 defm PDZ256 : avx512_fp28_p<opc, OpcodeStr#"pd", v4f64x_info, OpNode,
9424 multiclass avx512_vgetexp_fp16<bits<8> opc, string OpcodeStr, SDNode OpNode,
9427 defm PHZ : avx512_fp28_p<opc, OpcodeStr#"ph", v32f16_info, OpNode, sched.ZMM>,
9428 avx512_fp28_p_sae<opc, OpcodeStr#"ph", v32f16_info, OpNodeSAE, sched.ZMM>,
9431 defm PHZ128 : avx512_fp28_p<opc, OpcodeStr#"ph", v8f16x_info, OpNode, sched.XMM>,
9433 defm PHZ256 : avx512_fp28_p<opc, OpcodeStr#"ph", v16f16x_info, OpNode, sched.YMM>,
9444 multiclass avx512_sqrt_packed_round<bits<8> opc, string OpcodeStr,
9448 (ins _.RC:$src, AVX512RC:$rc), OpcodeStr, "$rc, $src", "$src, $rc",
9453 multiclass avx512_sqrt_packed<bits<8> opc, string OpcodeStr,
9457 (ins _.RC:$src), OpcodeStr, "$src", "$src",
9462 (ins _.MemOp:$src), OpcodeStr, "$src", "$src",
9467 (ins _.ScalarMemOp:$src), OpcodeStr,
9476 multiclass avx512_sqrt_packed_all<bits<8> opc, string OpcodeStr,
9479 defm PHZ : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ph"),
9483 defm PHZ128 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ph"),
9486 defm PHZ256 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ph"),
9490 defm PSZ : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"),
9493 defm PDZ : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"),
9498 defm PSZ128 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"),
9501 defm PSZ256 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"),
9504 defm PDZ128 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"),
9507 defm PDZ256 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"),
9514 multiclass avx512_sqrt_packed_all_round<bits<8> opc, string OpcodeStr,
9517 defm PHZ : avx512_sqrt_packed_round<opc, !strconcat(OpcodeStr, "ph"),
9520 defm PSZ : avx512_sqrt_packed_round<opc, !strconcat(OpcodeStr, "ps"),
9523 defm PDZ : avx512_sqrt_packed_round<opc, !strconcat(OpcodeStr, "pd"),
9528 multiclass avx512_sqrt_scalar<bits<8> opc, string OpcodeStr, X86FoldableSchedWrite sched,
9532 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9538 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9545 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
9555 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
9560 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
9578 multiclass avx512_sqrt_scalar_all<bits<8> opc, string OpcodeStr,
9580 defm SHZ : avx512_sqrt_scalar<opc, OpcodeStr#"sh", sched.PH.Scl, f16x_info, NAME#"SH", HasFP16>,
9582 defm SSZ : avx512_sqrt_scalar<opc, OpcodeStr#"ss", sched.PS.Scl, f32x_info, NAME#"SS">,
9584 defm SDZ : avx512_sqrt_scalar<opc, OpcodeStr#"sd", sched.PD.Scl, f64x_info, NAME#"SD">,
9593 multiclass avx512_rndscale_scalar<bits<8> opc, string OpcodeStr,
9597 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
9605 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
9613 OpcodeStr,
9622 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
9628 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
9695 multiclass avx512_trunc_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
9702 OpcodeStr # "\t{$src, $dst|$dst, $src}",
9709 OpcodeStr # "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
9717 OpcodeStr # "\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
9727 OpcodeStr # "\t{$src, $dst|$dst, $src}", []>,
9732 OpcodeStr # "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}", []>,
9751 multiclass avx512_trunc<bits<8> opc, string OpcodeStr, SDNode OpNode128,
9765 defm Z128: avx512_trunc_common<opc, OpcodeStr, OpNode128, MaskNode128, sched.XMM,
9770 defm Z256: avx512_trunc_common<opc, OpcodeStr, OpNode256, MaskNode256, sched.YMM,
9776 defm Z: avx512_trunc_common<opc, OpcodeStr, OpNode512, MaskNode512, sched.ZMM,
9782 multiclass avx512_trunc_qb<bits<8> opc, string OpcodeStr,
9786 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, InVecNode, InVecNode,
9793 multiclass avx512_trunc_qw<bits<8> opc, string OpcodeStr, SDNode OpNode,
9798 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, InVecNode, OpNode,
9805 multiclass avx512_trunc_qd<bits<8> opc, string OpcodeStr, SDNode OpNode,
9810 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, OpNode, OpNode,
9817 multiclass avx512_trunc_db<bits<8> opc, string OpcodeStr, SDNode OpNode,
9822 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, InVecNode, OpNode,
9829 multiclass avx512_trunc_dw<bits<8> opc, string OpcodeStr, SDNode OpNode,
9834 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, OpNode, OpNode,
9841 multiclass avx512_trunc_wb<bits<8> opc, string OpcodeStr, SDNode OpNode,
9846 defm NAME: avx512_trunc<opc, OpcodeStr, InVecNode, OpNode, OpNode,
9980 multiclass avx512_pmovx_common<bits<8> opc, string OpcodeStr, X86FoldableSchedWrite sched,
9985 (ins SrcInfo.RC:$src), OpcodeStr ,"$src", "$src",
9990 (ins x86memop:$src), OpcodeStr ,"$src", "$src",
9996 multiclass avx512_pmovx_bw<bits<8> opc, string OpcodeStr,
10001 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v8i16x_info,
10005 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v16i16x_info,
10010 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v32i16_info,
10016 multiclass avx512_pmovx_bd<bits<8> opc, string OpcodeStr,
10021 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v4i32x_info,
10025 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v8i32x_info,
10030 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v16i32_info,
10036 multiclass avx512_pmovx_bq<bits<8> opc, string OpcodeStr,
10041 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v2i64x_info,
10045 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v4i64x_info,
10050 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v8i64_info,
10056 multiclass avx512_pmovx_wd<bits<8> opc, string OpcodeStr,
10061 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v4i32x_info,
10065 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v8i32x_info,
10070 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v16i32_info,
10076 multiclass avx512_pmovx_wq<bits<8> opc, string OpcodeStr,
10081 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v2i64x_info,
10085 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v4i64x_info,
10090 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v8i64_info,
10096 multiclass avx512_pmovx_dq<bits<8> opc, string OpcodeStr,
10102 defm Z128: avx512_pmovx_common<opc, OpcodeStr, sched.XMM, v2i64x_info,
10106 defm Z256: avx512_pmovx_common<opc, OpcodeStr, sched.YMM, v4i64x_info,
10111 defm Z : avx512_pmovx_common<opc, OpcodeStr, sched.ZMM, v8i64_info,
10256 multiclass avx512_gather<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
10262 !strconcat(OpcodeStr#_.Suffix,
10269 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
10270 defm NAME#D#SUFF#Z: avx512_gather<dopc, OpcodeStr#"d", _.info512,
10272 defm NAME#Q#SUFF#Z: avx512_gather<qopc, OpcodeStr#"q", _.info512,
10275 defm NAME#D#SUFF#Z256: avx512_gather<dopc, OpcodeStr#"d", _.info256,
10277 defm NAME#Q#SUFF#Z256: avx512_gather<qopc, OpcodeStr#"q", _.info256,
10279 defm NAME#D#SUFF#Z128: avx512_gather<dopc, OpcodeStr#"d", _.info128,
10281 defm NAME#Q#SUFF#Z128: avx512_gather<qopc, OpcodeStr#"q", _.info128,
10287 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
10288 defm NAME#D#SUFF#Z: avx512_gather<dopc, OpcodeStr#"d", _.info512, vz512mem>,
10290 defm NAME#Q#SUFF#Z: avx512_gather<qopc, OpcodeStr#"q", _.info256, vz256mem>,
10293 defm NAME#D#SUFF#Z256: avx512_gather<dopc, OpcodeStr#"d", _.info256,
10295 defm NAME#Q#SUFF#Z256: avx512_gather<qopc, OpcodeStr#"q", _.info128,
10297 defm NAME#D#SUFF#Z128: avx512_gather<dopc, OpcodeStr#"d", _.info128,
10299 defm NAME#Q#SUFF#Z128: avx512_gather<qopc, OpcodeStr#"q", _.info128,
10311 multiclass avx512_scatter<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
10319 !strconcat(OpcodeStr#_.Suffix,
10326 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
10327 defm NAME#D#SUFF#Z: avx512_scatter<dopc, OpcodeStr#"d", _.info512,
10329 defm NAME#Q#SUFF#Z: avx512_scatter<qopc, OpcodeStr#"q", _.info512,
10332 defm NAME#D#SUFF#Z256: avx512_scatter<dopc, OpcodeStr#"d", _.info256,
10334 defm NAME#Q#SUFF#Z256: avx512_scatter<qopc, OpcodeStr#"q", _.info256,
10336 defm NAME#D#SUFF#Z128: avx512_scatter<dopc, OpcodeStr#"d", _.info128,
10338 defm NAME#Q#SUFF#Z128: avx512_scatter<qopc, OpcodeStr#"q", _.info128,
10344 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
10345 defm NAME#D#SUFF#Z: avx512_scatter<dopc, OpcodeStr#"d", _.info512, vz512mem>,
10347 defm NAME#Q#SUFF#Z: avx512_scatter<qopc, OpcodeStr#"q", _.info256, vz256mem>,
10350 defm NAME#D#SUFF#Z256: avx512_scatter<dopc, OpcodeStr#"d", _.info256,
10352 defm NAME#Q#SUFF#Z256: avx512_scatter<qopc, OpcodeStr#"q", _.info128,
10354 defm NAME#D#SUFF#Z128: avx512_scatter<dopc, OpcodeStr#"d", _.info128,
10356 defm NAME#Q#SUFF#Z128: avx512_scatter<qopc, OpcodeStr#"q", _.info128,
10368 multiclass avx512_gather_scatter_prefetch<bits<8> opc, Format F, string OpcodeStr,
10372 !strconcat(OpcodeStr, "\t{$src {${mask}}|{${mask}}, $src}"), []>,
10424 multiclass cvt_by_vec_width<bits<8> opc, X86VectorVTInfo Vec, string OpcodeStr, SchedWrite Sched> {
10426 !strconcat(OpcodeStr#Vec.Suffix, "\t{$src, $dst|$dst, $src}"),
10432 string OpcodeStr, Predicate prd> {
10434 defm Z : cvt_by_vec_width<opc, VTInfo.info512, OpcodeStr, WriteVecMoveZ>, EVEX_V512;
10437 defm Z256 : cvt_by_vec_width<opc, VTInfo.info256, OpcodeStr, WriteVecMoveY>, EVEX_V256;
10438 defm Z128 : cvt_by_vec_width<opc, VTInfo.info128, OpcodeStr, WriteVecMoveX>, EVEX_V128;
10447 multiclass convert_vector_to_mask_common<bits<8> opc, X86VectorVTInfo _, string OpcodeStr > {
10449 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
10467 multiclass avx512_convert_vector_to_mask<bits<8> opc, string OpcodeStr,
10470 defm Z : convert_vector_to_mask_common <opc, VTInfo.info512, OpcodeStr>,
10474 defm Z256 : convert_vector_to_mask_common<opc, VTInfo.info256, OpcodeStr>,
10476 defm Z128 : convert_vector_to_mask_common<opc, VTInfo.info128, OpcodeStr>,
10514 string OpcodeStr, X86FoldableSchedWrite sched> {
10516 (ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
10523 OpcodeStr # "\t{$src, $dst|$dst, $src}",
10529 OpcodeStr # "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
10548 multiclass compress_by_elt_width<bits<8> opc, string OpcodeStr,
10553 defm Z : compress_by_vec_width_common<opc, VTInfo.info512, OpcodeStr, sched>,
10557 defm Z256 : compress_by_vec_width_common<opc, VTInfo.info256, OpcodeStr, sched>,
10559 defm Z128 : compress_by_vec_width_common<opc, VTInfo.info128, OpcodeStr, sched>,
10576 string OpcodeStr, X86FoldableSchedWrite sched> {
10578 (ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
10583 (ins _.MemOp:$src1), OpcodeStr, "$src1", "$src1",
10612 multiclass expand_by_elt_width<bits<8> opc, string OpcodeStr,
10617 defm Z : expand_by_vec_width<opc, VTInfo.info512, OpcodeStr, sched>,
10621 defm Z256 : expand_by_vec_width<opc, VTInfo.info256, OpcodeStr, sched>,
10623 defm Z128 : expand_by_vec_width<opc, VTInfo.info128, OpcodeStr, sched>,
10642 multiclass avx512_unary_fp_packed_imm<bits<8> opc, string OpcodeStr,
10650 OpcodeStr#_.Suffix, "$src2, $src1", "$src1, $src2",
10656 OpcodeStr#_.Suffix, "$src2, $src1", "$src1, $src2",
10664 OpcodeStr#_.Suffix, "$src2, ${src1}"#_.BroadcastStr,
10675 multiclass avx512_unary_fp_sae_packed_imm<bits<8> opc, string OpcodeStr,
10681 OpcodeStr#_.Suffix, "$src2, {sae}, $src1",
10688 multiclass avx512_common_unary_fp_sae_packed_imm<string OpcodeStr,
10693 defm Z : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, MaskOpNode,
10695 avx512_unary_fp_sae_packed_imm<opc, OpcodeStr, OpNodeSAE,
10699 defm Z128 : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, MaskOpNode,
10701 defm Z256 : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, MaskOpNode,
10710 multiclass avx512_fp_packed_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
10715 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10722 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10729 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10740 multiclass avx512_3Op_rm_imm8<bits<8> opc, string OpcodeStr, SDNode OpNode,
10746 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10753 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10765 multiclass avx512_3Op_imm8<bits<8> opc, string OpcodeStr, SDNode OpNode,
10767 avx512_3Op_rm_imm8<opc, OpcodeStr, OpNode, sched, _, _>{
10772 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10782 multiclass avx512_fp_scalar_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
10787 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10794 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10803 multiclass avx512_fp_sae_packed_imm<bits<8> opc, string OpcodeStr,
10809 OpcodeStr, "$src3, {sae}, $src2, $src1",
10818 multiclass avx512_fp_sae_scalar_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
10823 OpcodeStr, "$src3, {sae}, $src2, $src1",
10831 multiclass avx512_common_fp_sae_packed_imm<string OpcodeStr,
10835 defm Z : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, sched.ZMM, _.info512>,
10836 avx512_fp_sae_packed_imm<opc, OpcodeStr, OpNodeSAE, sched.ZMM, _.info512>,
10841 defm Z128 : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, sched.XMM, _.info128>,
10843 defm Z256 : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, sched.YMM, _.info256>,
10863 multiclass avx512_common_3Op_imm8<string OpcodeStr, AVX512VLVectorVTInfo _,
10867 defm Z : avx512_3Op_imm8<opc, OpcodeStr, OpNode, sched.ZMM, _.info512>,
10871 defm Z128 : avx512_3Op_imm8<opc, OpcodeStr, OpNode, sched.XMM, _.info128>,
10873 defm Z256 : avx512_3Op_imm8<opc, OpcodeStr, OpNode, sched.YMM, _.info256>,
10878 multiclass avx512_common_fp_sae_scalar_imm<string OpcodeStr,
10882 defm Z : avx512_fp_scalar_imm<opc, OpcodeStr, OpNode, sched.XMM, _>,
10883 avx512_fp_sae_scalar_imm<opc, OpcodeStr, OpNodeSAE, sched.XMM, _>;
10887 multiclass avx512_common_unary_fp_sae_packed_imm_all<string OpcodeStr,
10891 defm PH : avx512_common_unary_fp_sae_packed_imm<OpcodeStr, avx512vl_f16_info,
10894 defm PS : avx512_common_unary_fp_sae_packed_imm<OpcodeStr, avx512vl_f32_info,
10897 defm PD : avx512_common_unary_fp_sae_packed_imm<OpcodeStr, avx512vl_f64_info,
10948 multiclass avx512_shuff_packed_128_common<bits<8> opc, string OpcodeStr,
10955 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10962 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10971 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10983 multiclass avx512_shuff_packed_128<string OpcodeStr, X86FoldableSchedWrite sched,
10987 defm Z : avx512_shuff_packed_128_common<opc, OpcodeStr, sched,
10991 defm Z256 : avx512_shuff_packed_128_common<opc, OpcodeStr, sched,
11004 multiclass avx512_valign<bits<8> opc, string OpcodeStr,
11009 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
11014 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
11022 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
11031 multiclass avx512_valign_common<string OpcodeStr, X86SchedWriteWidths sched,
11034 defm Z : avx512_valign<0x03, OpcodeStr, sched.ZMM, _.info512>,
11038 defm Z128 : avx512_valign<0x03, OpcodeStr, sched.XMM, _.info128>,
11041 defm Z256 : avx512_valign<0x03, OpcodeStr, sched.YMM, _.info256>,
11068 multiclass avx512_vpalign_mask_lowering<string OpcodeStr, SDNode OpNode,
11076 (!cast<Instruction>(OpcodeStr#"rrik") To.RC:$src0, To.KRCWM:$mask,
11085 (!cast<Instruction>(OpcodeStr#"rrikz") To.KRCWM:$mask,
11095 (!cast<Instruction>(OpcodeStr#"rmik") To.RC:$src0, To.KRCWM:$mask,
11105 (!cast<Instruction>(OpcodeStr#"rmikz") To.KRCWM:$mask,
11110 multiclass avx512_vpalign_mask_lowering_mb<string OpcodeStr, SDNode OpNode,
11114 avx512_vpalign_mask_lowering<OpcodeStr, OpNode, From, To, ImmXForm> {
11118 (!cast<Instruction>(OpcodeStr#"rmbi") To.RC:$src1, addr:$src2,
11128 (!cast<Instruction>(OpcodeStr#"rmbik") To.RC:$src0, To.KRCWM:$mask,
11139 (!cast<Instruction>(OpcodeStr#"rmbikz") To.KRCWM:$mask,
11174 multiclass avx512_unary_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
11178 (ins _.RC:$src1), OpcodeStr,
11184 (ins _.MemOp:$src1), OpcodeStr,
11192 multiclass avx512_unary_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
11194 avx512_unary_rm<opc, OpcodeStr, OpNode, sched, _> {
11196 (ins _.ScalarMemOp:$src1), OpcodeStr,
11204 multiclass avx512_unary_rm_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
11208 defm Z : avx512_unary_rm<opc, OpcodeStr, OpNode, sched.ZMM, VTInfo.info512>,
11212 defm Z256 : avx512_unary_rm<opc, OpcodeStr, OpNode, sched.YMM, VTInfo.info256>,
11214 defm Z128 : avx512_unary_rm<opc, OpcodeStr, OpNode, sched.XMM, VTInfo.info128>,
11219 multiclass avx512_unary_rmb_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
11223 defm Z : avx512_unary_rmb<opc, OpcodeStr, OpNode, sched.ZMM, VTInfo.info512>,
11227 defm Z256 : avx512_unary_rmb<opc, OpcodeStr, OpNode, sched.YMM, VTInfo.info256>,
11229 defm Z128 : avx512_unary_rmb<opc, OpcodeStr, OpNode, sched.XMM, VTInfo.info128>,
11234 multiclass avx512_unary_rm_vl_dq<bits<8> opc_d, bits<8> opc_q, string OpcodeStr,
11237 defm Q : avx512_unary_rmb_vl<opc_q, OpcodeStr#"q", OpNode, sched,
11239 defm D : avx512_unary_rmb_vl<opc_d, OpcodeStr#"d", OpNode, sched,
11243 multiclass avx512_unary_rm_vl_bw<bits<8> opc_b, bits<8> opc_w, string OpcodeStr,
11246 defm W : avx512_unary_rm_vl<opc_w, OpcodeStr#"w", OpNode, sched,
11248 defm B : avx512_unary_rm_vl<opc_b, OpcodeStr#"b", OpNode, sched,
11254 string OpcodeStr, SDNode OpNode,
11256 defm NAME : avx512_unary_rm_vl_dq<opc_d, opc_q, OpcodeStr, OpNode, sched,
11258 avx512_unary_rm_vl_bw<opc_b, opc_w, OpcodeStr, OpNode, sched,
11327 multiclass avx512_replicate<bits<8> opc, string OpcodeStr, SDNode OpNode,
11329 defm NAME: avx512_unary_rm_vl<opc, OpcodeStr, OpNode, sched,
11342 multiclass avx512_movddup_128<bits<8> opc, string OpcodeStr,
11346 (ins _.RC:$src), OpcodeStr, "$src", "$src",
11350 (ins _.ScalarMemOp:$src), OpcodeStr, "$src", "$src",
11357 multiclass avx512_movddup_common<bits<8> opc, string OpcodeStr,
11359 defm Z : avx512_unary_rm<opc, OpcodeStr, X86Movddup, sched.ZMM,
11363 defm Z256 : avx512_unary_rm<opc, OpcodeStr, X86Movddup, sched.YMM,
11365 defm Z128 : avx512_movddup_128<opc, OpcodeStr, sched.XMM,
11370 multiclass avx512_movddup<bits<8> opc, string OpcodeStr,
11372 defm NAME: avx512_movddup_common<opc, OpcodeStr, sched,
11424 multiclass avx512_extract_elt_bw_m<bits<8> opc, string OpcodeStr, SDNode OpNode,
11428 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11434 multiclass avx512_extract_elt_b<string OpcodeStr, X86VectorVTInfo _> {
11438 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11443 defm NAME : avx512_extract_elt_bw_m<0x14, OpcodeStr, X86pextrb, _>, TA, PD;
11447 multiclass avx512_extract_elt_w<string OpcodeStr, X86VectorVTInfo _> {
11451 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11459 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
11462 defm NAME : avx512_extract_elt_bw_m<0x15, OpcodeStr, X86pextrw, _>, TA, PD;
11466 multiclass avx512_extract_elt_dq<string OpcodeStr, X86VectorVTInfo _,
11471 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11478 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11491 multiclass avx512_insert_elt_m<bits<8> opc, string OpcodeStr, SDNode OpNode,
11496 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11502 multiclass avx512_insert_elt_bw<bits<8> opc, string OpcodeStr, SDNode OpNode,
11507 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11512 defm NAME : avx512_insert_elt_m<opc, OpcodeStr, OpNode, _, LdFrag, timm>;
11516 multiclass avx512_insert_elt_dq<bits<8> opc, string OpcodeStr,
11521 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11526 defm NAME : avx512_insert_elt_m<opc, OpcodeStr, insertelt, _,
11569 multiclass avx512_shufp<string OpcodeStr, AVX512VLVectorVTInfo VTInfo_FP>{
11570 defm NAME: avx512_common_3Op_imm8<OpcodeStr, VTInfo_FP, 0xC6, X86Shufp,
11584 Format MRMm, string OpcodeStr,
11588 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11593 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11601 Format MRMm, string OpcodeStr,
11604 defm Z : avx512_shift_packed<opc, OpNode, MRMr, MRMm, OpcodeStr,
11607 defm Z256 : avx512_shift_packed<opc, OpNode, MRMr, MRMm, OpcodeStr,
11609 defm Z128 : avx512_shift_packed<opc, OpNode, MRMr, MRMm, OpcodeStr,
11621 string OpcodeStr, X86FoldableSchedWrite sched,
11626 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11633 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11642 string OpcodeStr, X86SchedWriteWidths sched,
11645 defm Z : avx512_psadbw_packed<opc, OpNode, OpcodeStr, sched.ZMM,
11648 defm Z256 : avx512_psadbw_packed<opc, OpNode, OpcodeStr, sched.YMM,
11650 defm Z128 : avx512_psadbw_packed<opc, OpNode, OpcodeStr, sched.XMM,
11720 multiclass avx512_ternlog<bits<8> opc, string OpcodeStr, SDNode OpNode,
11726 OpcodeStr, "$src4, $src3, $src2", "$src2, $src3, $src4",
11734 OpcodeStr, "$src4, $src3, $src2", "$src2, $src3, $src4",
11743 OpcodeStr, "$src4, ${src3}"#_.BroadcastStr#", $src2",
11866 multiclass avx512_common_ternlog<string OpcodeStr, X86SchedWriteWidths sched,
11869 defm Z : avx512_ternlog<0x25, OpcodeStr, X86vpternlog, sched.ZMM,
11872 defm Z128 : avx512_ternlog<0x25, OpcodeStr, X86vpternlog, sched.XMM,
11874 defm Z256 : avx512_ternlog<0x25, OpcodeStr, X86vpternlog, sched.YMM,
11985 multiclass avx512_fixupimm_packed<bits<8> opc, string OpcodeStr,
11992 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
11999 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12007 OpcodeStr#_.Suffix, "$src4, ${src3}"#_.BroadcastStr#", $src2",
12017 multiclass avx512_fixupimm_packed_sae<bits<8> opc, string OpcodeStr,
12020 : avx512_fixupimm_packed<opc, OpcodeStr, sched, _, TblVT> {
12024 OpcodeStr#_.Suffix, "$src4, {sae}, $src3, $src2",
12034 multiclass avx512_fixupimm_scalar<bits<8> opc, string OpcodeStr,
12041 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12049 OpcodeStr#_.Suffix, "$src4, {sae}, $src3, $src2",
12058 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12668 multiclass avx512_binop_all2<bits<8> opc, string OpcodeStr,
12675 defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, sched.ZMM, OpNode,
12680 defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, sched.YMM, OpNode,
12684 defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, sched.XMM, OpNode,
12698 multiclass avx512_cvtps2bf16<bits<8> opc, string OpcodeStr,
12702 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16bf16x_info, v16f32_info,
12707 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v8bf16x_info, v4f32x_info,
12710 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8bf16x_info, v8f32x_info,
12717 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
12720 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
12723 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
12726 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
12809 multiclass avx512_dpbf16ps_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
12814 OpcodeStr, "$src3, $src2", "$src2, $src3",
12820 OpcodeStr, "$src3, $src2", "$src2, $src3",
12828 OpcodeStr,
12837 multiclass avx512_dpbf16ps_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
12841 defm Z : avx512_dpbf16ps_rm<opc, OpcodeStr, OpNode, sched.ZMM, _.info512,
12845 defm Z256 : avx512_dpbf16ps_rm<opc, OpcodeStr, OpNode, sched.YMM, _.info256,
12847 defm Z128 : avx512_dpbf16ps_rm<opc, OpcodeStr, OpNode, sched.XMM, _.info128,
12951 multiclass avx512_cvtph2w<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
12957 defm Z : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info512, _Src.info512,
12959 avx512_vcvt_fp_rc<opc, OpcodeStr, _Dst.info512, _Src.info512,
12963 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info128, _Src.info128,
12965 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info256, _Src.info256,
12971 multiclass avx512_cvttph2w<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
12976 defm Z : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info512, _Src.info512,
12978 avx512_vcvt_fp_sae<opc, OpcodeStr, _Dst.info512, _Src.info512,
12982 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info128, _Src.info128,
12984 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, _Dst.info256, _Src.info256,
13015 multiclass avx512_cvtph2dq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
13019 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f16x_info, OpNode,
13021 avx512_vcvt_fp_rc<opc, OpcodeStr, v16i32_info, v16f16x_info,
13025 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v8f16x_info, OpNode,
13027 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f16x_info, OpNode,
13033 multiclass avx512_cvttph2dq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
13037 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f16x_info, OpNode,
13039 avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f16x_info,
13043 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v8f16x_info, OpNode,
13045 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f16x_info, OpNode,
13069 multiclass avx512_cvtph2qq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
13073 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f16x_info, OpNode,
13075 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i64_info, v8f16x_info,
13081 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v8f16x_info, OpNode,
13086 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v8f16x_info, OpNode,
13093 multiclass avx512_cvttph2qq<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
13097 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f16x_info, OpNode,
13099 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f16x_info,
13105 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v8f16x_info, OpNode,
13109 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v8f16x_info, OpNode,
13133 multiclass avx512_cvtqq2ph<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
13141 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v8i64_info, OpNode,
13143 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f16x_info, v8i64_info,
13147 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v2i64x_info,
13150 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8f16x_info, v4i64x_info,
13155 def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
13158 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
13161 def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
13164 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
13167 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
13171 def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
13176 def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
13179 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|"
13183 def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|"
13187 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
13190 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
13194 def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
13199 def : InstAlias<OpcodeStr#"z\t{$src, $dst|$dst, $src}",
13202 def : InstAlias<OpcodeStr#"z\t{$src, $dst {${mask}}|"
13206 def : InstAlias<OpcodeStr#"z\t{$src, $dst {${mask}} {z}|"
13210 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst|$dst, ${src}{1to8}}",
13213 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst {${mask}}|"
13217 def : InstAlias<OpcodeStr#"z\t{${src}{1to8}, $dst {${mask}} {z}|"
13456 …multiclass avx512_cfmaop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode, X86VectorVTInfo _, bit I…
13459 OpcodeStr, "$src3, $src2", "$src2, $src3",
13464 OpcodeStr, "$src3, $src2", "$src2, $src3",
13469 …OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"), !strconcat("$src2, ${src3}", _.Broadca…
13474 multiclass avx512_cfmaop_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
13479 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
13485 multiclass avx512_cfmaop_common<bits<8> opc, string OpcodeStr, SDNode OpNode, SDNode OpNodeRnd, bit…
13487 defm Z : avx512_cfmaop_rm<opc, OpcodeStr, OpNode, v16f32_info, IsCommutable>,
13488 avx512_cfmaop_round<opc, OpcodeStr, OpNodeRnd, v16f32_info>,
13492 …defm Z256 : avx512_cfmaop_rm<opc, OpcodeStr, OpNode, v8f32x_info, IsCommutable>, EVEX_V256, Sched<…
13493 …defm Z128 : avx512_cfmaop_rm<opc, OpcodeStr, OpNode, v4f32x_info, IsCommutable>, EVEX_V128, Sched<…
13497 multiclass avx512_cfmulop_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
13500 defm Z : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v16f32_info,
13502 avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, WriteFMAZ, v16f32_info,
13506 defm Z256 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v8f32x_info,
13508 defm Z128 : avx512_fp_packed<opc, OpcodeStr, OpNode, MaskOpNode, v4f32x_info,
13527 multiclass avx512_cfmaop_sh_common<bits<8> opc, string OpcodeStr, SDNode OpNode, SDNode OpNodeRnd,
13531 (ins VR128X:$src2, VR128X:$src3), OpcodeStr,
13536 (ins VR128X:$src2, ssmem:$src3), OpcodeStr,
13541 (ins VR128X:$src2, VR128X:$src3, AVX512RC:$rc), OpcodeStr,
13548 multiclass avx512_cfmbinop_sh_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
13552 (ins VR128X:$src1, VR128X:$src2), OpcodeStr,
13558 (ins VR128X:$src1, ssmem:$src2), OpcodeStr,
13564 (ins VR128X:$src1, VR128X:$src2, AVX512RC:$rc), OpcodeStr,