Lines Matching refs:OpcodeStr
20 multiclass sse12_fp_scalar<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
28 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
29 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
35 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
36 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
66 multiclass sse12_fp_packed<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
74 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
75 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
81 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
82 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
90 string OpcodeStr, X86MemOperand x86memop,
97 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
98 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
104 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
105 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
212 X86MemOperand x86memop, string OpcodeStr,
216 defm V#NAME : sse12_move_rr<OpNode, vt, OpcodeStr,
221 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
227 defm NAME : sse12_move_rr<OpNode, vt, OpcodeStr,
232 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
236 def : InstAlias<"v"#OpcodeStr#".s\t{$src2, $src1, $dst|$dst, $src1, $src2}",
239 def : InstAlias<OpcodeStr#".s\t{$src2, $dst|$dst, $src2}",
246 PatFrag mem_pat, PatFrag vzloadfrag, string OpcodeStr,
249 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
253 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
260 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
264 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
1897 PatFrag ld_frag, string OpcodeStr, Domain d,
1901 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
1906 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
1916 PatFrags mem_frags, string OpcodeStr,
1921 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
1926 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
2263 multiclass PDI_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
2271 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
2272 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
2278 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
2279 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
2285 multiclass PDI_binop_all<bits<8> opc, string OpcodeStr, SDNode Opcode,
2290 defm V#NAME : PDI_binop_rm<opc, !strconcat("v", OpcodeStr), Opcode, OpVT128,
2295 defm NAME : PDI_binop_rm<opc, OpcodeStr, Opcode, OpVT128, VR128,
2299 defm V#NAME#Y : PDI_binop_rm<opc, !strconcat("v", OpcodeStr), Opcode,
2323 multiclass sse12_fp_packed_logical<bits<8> opc, string OpcodeStr,
2327 !strconcat(OpcodeStr, "ps"), f256mem, sched.YMM,
2331 !strconcat(OpcodeStr, "pd"), f256mem, sched.YMM,
2335 !strconcat(OpcodeStr, "ps"), f128mem, sched.XMM,
2339 !strconcat(OpcodeStr, "pd"), f128mem, sched.XMM,
2345 !strconcat(OpcodeStr, "ps"), f128mem, sched.XMM,
2349 !strconcat(OpcodeStr, "pd"), f128mem, sched.XMM,
2646 multiclass basic_sse12_fp_binop_p<bits<8> opc, string OpcodeStr,
2650 defm V#NAME#PS : sse12_fp_packed<opc, !strconcat(OpcodeStr, "ps"), OpNode,
2653 defm V#NAME#PD : sse12_fp_packed<opc, !strconcat(OpcodeStr, "pd"), OpNode,
2657 defm V#NAME#PSY : sse12_fp_packed<opc, !strconcat(OpcodeStr, "ps"),
2660 defm V#NAME#PDY : sse12_fp_packed<opc, !strconcat(OpcodeStr, "pd"),
2666 defm PS : sse12_fp_packed<opc, !strconcat(OpcodeStr, "ps"), OpNode, VR128,
2669 defm PD : sse12_fp_packed<opc, !strconcat(OpcodeStr, "pd"), OpNode, VR128,
2676 multiclass basic_sse12_fp_binop_s<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
2679 defm V#NAME#SS : sse12_fp_scalar<opc, !strconcat(OpcodeStr, "ss"),
2682 defm V#NAME#SD : sse12_fp_scalar<opc, !strconcat(OpcodeStr, "sd"),
2687 defm SS : sse12_fp_scalar<opc, !strconcat(OpcodeStr, "ss"),
2690 defm SD : sse12_fp_scalar<opc, !strconcat(OpcodeStr, "sd"),
2697 multiclass basic_sse12_fp_binop_s_int<bits<8> opc, string OpcodeStr,
2702 !strconcat(OpcodeStr, "ss"), ssmem, sse_load_f32,
2705 !strconcat(OpcodeStr, "sd"), sdmem, sse_load_f64,
2710 !strconcat(OpcodeStr, "ss"), ssmem, sse_load_f32,
2713 !strconcat(OpcodeStr, "sd"), sdmem, sse_load_f64,
2847 multiclass sse_fp_unop_s<bits<8> opc, string OpcodeStr, RegisterClass RC,
2853 !strconcat(OpcodeStr, "\t{$src1, $dst|$dst, $src1}"),
2858 !strconcat(OpcodeStr, "\t{$src1, $dst|$dst, $src1}"),
2866 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"), []>,
2870 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"), []>,
2912 multiclass avx_fp_unop_s<bits<8> opc, string OpcodeStr, RegisterClass RC,
2918 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2922 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2928 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2933 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2958 multiclass sse1_fp_unop_p<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
2962 !strconcat("v", OpcodeStr,
2967 !strconcat("v", OpcodeStr,
2972 !strconcat("v", OpcodeStr,
2977 !strconcat("v", OpcodeStr,
2984 !strconcat(OpcodeStr, "ps\t{$src, $dst|$dst, $src}"),
2988 !strconcat(OpcodeStr, "ps\t{$src, $dst|$dst, $src}"),
2994 multiclass sse2_fp_unop_p<bits<8> opc, string OpcodeStr,
2998 !strconcat("v", OpcodeStr,
3003 !strconcat("v", OpcodeStr,
3008 !strconcat("v", OpcodeStr,
3013 !strconcat("v", OpcodeStr,
3020 !strconcat(OpcodeStr, "pd\t{$src, $dst|$dst, $src}"),
3024 !strconcat(OpcodeStr, "pd\t{$src, $dst|$dst, $src}"),
3029 multiclass sse1_fp_unop_s_intr<string OpcodeStr, Predicate AVXTarget> {
3031 !cast<Intrinsic>("int_x86_sse_"#OpcodeStr#_ss),
3034 !cast<Intrinsic>("int_x86_sse_"#OpcodeStr#_ss),
3039 multiclass sse1_fp_unop_s<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
3041 defm SS : sse_fp_unop_s<opc, OpcodeStr#ss, FR32, f32mem,
3043 defm V#NAME#SS : avx_fp_unop_s<opc, "v"#OpcodeStr#ss, FR32, f32,
3048 multiclass sse2_fp_unop_s<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
3050 defm SD : sse_fp_unop_s<opc, OpcodeStr#sd, FR64, f64mem,
3052 defm V#NAME#SD : avx_fp_unop_s<opc, "v"#OpcodeStr#sd, FR64, f64,
3474 multiclass PDI_binop_rm2<bits<8> opc, string OpcodeStr, SDNode OpNode,
3482 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3483 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3489 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3490 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3580 string OpcodeStr, SDNode OpNode,
3590 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3591 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3597 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3598 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3605 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3606 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3612 string OpcodeStr, SDNode OpNode,
3618 defm V#NAME : PDI_binop_rmi<opc, opc2, ImmForm, !strconcat("v", OpcodeStr),
3622 defm V#NAME#Y : PDI_binop_rmi<opc, opc2, ImmForm, !strconcat("v", OpcodeStr),
3627 defm NAME : PDI_binop_rmi<opc, opc2, ImmForm, OpcodeStr, OpNode, OpNode2,
3632 multiclass PDI_binop_ri<bits<8> opc, Format ImmForm, string OpcodeStr,
3637 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3638 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3643 multiclass PDI_binop_ri_all<bits<8> opc, Format ImmForm, string OpcodeStr,
3646 defm V#NAME : PDI_binop_ri<opc, ImmForm, !strconcat("v", OpcodeStr), OpNode,
3649 defm V#NAME#Y : PDI_binop_ri<opc, ImmForm, !strconcat("v", OpcodeStr), OpNode,
3653 defm NAME : PDI_binop_ri<opc, ImmForm, OpcodeStr, OpNode, VR128, v16i8,
3713 multiclass sse2_pshuffle<string OpcodeStr, ValueType vt128, ValueType vt256,
3719 !strconcat("v", OpcodeStr,
3726 !strconcat("v", OpcodeStr,
3737 !strconcat("v", OpcodeStr,
3744 !strconcat("v", OpcodeStr,
3755 !strconcat(OpcodeStr,
3762 !strconcat(OpcodeStr,
3784 multiclass sse2_pack<bits<8> opc, string OpcodeStr, ValueType OutVT,
3791 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3792 !strconcat(OpcodeStr,
3800 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3801 !strconcat(OpcodeStr,
3809 multiclass sse4_pack<bits<8> opc, string OpcodeStr, ValueType OutVT,
3816 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3817 !strconcat(OpcodeStr,
3825 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
3826 !strconcat(OpcodeStr,
3885 multiclass sse2_unpack<bits<8> opc, string OpcodeStr, ValueType vt,
3892 !strconcat(OpcodeStr,"\t{$src2, $dst|$dst, $src2}"),
3893 !strconcat(OpcodeStr,"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
3899 !strconcat(OpcodeStr,"\t{$src2, $dst|$dst, $src2}"),
3900 !strconcat(OpcodeStr,"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4418 multiclass sse3_replicate_sfp<bits<8> op, SDNode OpNode, string OpcodeStr,
4422 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4426 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4484 multiclass sse3_replicate_dfp<string OpcodeStr, X86SchedWriteWidths sched> {
4486 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4490 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4498 multiclass sse3_replicate_dfp_y<string OpcodeStr, X86SchedWriteWidths sched> {
4500 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4504 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4554 multiclass sse3_addsub<string OpcodeStr, ValueType vt, RegisterClass RC,
4561 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4562 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4568 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4569 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4607 multiclass S3D_Int<bits<8> o, string OpcodeStr, ValueType vt, RegisterClass RC,
4614 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4615 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4621 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4622 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4627 multiclass S3_Int<bits<8> o, string OpcodeStr, ValueType vt, RegisterClass RC,
4634 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4635 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4641 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4642 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4691 multiclass SS3I_unop_rm<bits<8> opc, string OpcodeStr, ValueType vt,
4695 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4701 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4708 multiclass SS3I_unop_rm_y<bits<8> opc, string OpcodeStr, ValueType vt,
4712 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4718 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
4757 multiclass SS3I_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4765 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4766 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4772 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4773 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4780 multiclass SS3I_binop_rm_int<bits<8> opc, string OpcodeStr,
4787 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4788 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4794 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
4795 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
4801 multiclass SS3I_binop_rm_int_y<bits<8> opc, string OpcodeStr,
4807 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
4812 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
5010 multiclass SS41I_pmovx_rrrm<bits<8> opc, string OpcodeStr, X86MemOperand MemOp,
5014 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
5018 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
5022 multiclass SS41I_pmovx_rm_all<bits<8> opc, string OpcodeStr,
5025 defm NAME : SS41I_pmovx_rrrm<opc, OpcodeStr, MemOp, VR128, VR128,
5028 defm V#NAME : SS41I_pmovx_rrrm<opc, !strconcat("v", OpcodeStr), MemOp,
5032 defm V#NAME#Y : SS41I_pmovx_rrrm<opc, !strconcat("v", OpcodeStr), MemYOp,
5037 multiclass SS41I_pmovx_rm<bits<8> opc, string OpcodeStr, X86MemOperand MemOp,
5039 defm PMOVSX#NAME : SS41I_pmovx_rm_all<opc, !strconcat("pmovsx", OpcodeStr),
5042 !strconcat("pmovzx", OpcodeStr),
5236 multiclass SS41I_extract8<bits<8> opc, string OpcodeStr> {
5239 !strconcat(OpcodeStr,
5247 !strconcat(OpcodeStr,
5260 multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> {
5264 !strconcat(OpcodeStr,
5271 !strconcat(OpcodeStr,
5290 multiclass SS41I_extract32<bits<8> opc, string OpcodeStr> {
5293 !strconcat(OpcodeStr,
5300 !strconcat(OpcodeStr,
5312 multiclass SS41I_extract64<bits<8> opc, string OpcodeStr> {
5315 !strconcat(OpcodeStr,
5322 !strconcat(OpcodeStr,
5335 multiclass SS41I_extractf32<bits<8> opc, string OpcodeStr> {
5338 !strconcat(OpcodeStr,
5345 !strconcat(OpcodeStr,
5484 multiclass sse41_fp_unop_p<bits<8> opc, string OpcodeStr,
5493 !strconcat(OpcodeStr,
5501 !strconcat(OpcodeStr,
5510 string OpcodeStr, X86FoldableSchedWrite sched> {
5514 !strconcat(OpcodeStr,
5521 !strconcat(OpcodeStr,
5529 !strconcat(OpcodeStr,
5536 !strconcat(OpcodeStr,
5543 string OpcodeStr, X86FoldableSchedWrite sched> {
5548 !strconcat(OpcodeStr,
5555 !strconcat(OpcodeStr,
5563 !strconcat(OpcodeStr,
5570 !strconcat(OpcodeStr,
5578 string OpcodeStr, X86FoldableSchedWrite sched,
5586 !strconcat(OpcodeStr,
5588 !strconcat(OpcodeStr,
5596 !strconcat(OpcodeStr,
5598 !strconcat(OpcodeStr,
5609 !strconcat(OpcodeStr,
5611 !strconcat(OpcodeStr,
5619 !strconcat(OpcodeStr,
5621 !strconcat(OpcodeStr,
5758 multiclass avx_bittest<bits<8> opc, string OpcodeStr, RegisterClass RC,
5762 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
5766 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
5824 multiclass SS41I_unop_rm_int_v16<bits<8> opc, string OpcodeStr,
5829 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
5834 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
5851 multiclass SS48I_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
5859 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
5860 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
5866 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
5867 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
5984 multiclass SS41I_binop_rmi_int<bits<8> opc, string OpcodeStr,
5992 !strconcat(OpcodeStr,
5994 !strconcat(OpcodeStr,
6001 !strconcat(OpcodeStr,
6003 !strconcat(OpcodeStr,
6011 multiclass SS41I_binop_rmi<bits<8> opc, string OpcodeStr, SDNode OpNode,
6019 !strconcat(OpcodeStr,
6021 !strconcat(OpcodeStr,
6028 !strconcat(OpcodeStr,
6030 !strconcat(OpcodeStr,
6167 multiclass SS41I_blend_rmi<bits<8> opc, string OpcodeStr, SDNode OpNode,
6176 !strconcat(OpcodeStr,
6178 !strconcat(OpcodeStr,
6185 !strconcat(OpcodeStr,
6187 !strconcat(OpcodeStr,
6315 multiclass SS41I_quaternary_avx<bits<8> opc, string OpcodeStr, RegisterClass RC,
6321 !strconcat(OpcodeStr,
6329 !strconcat(OpcodeStr,
6449 multiclass SS41I_ternary<bits<8> opc, string OpcodeStr, ValueType VT,
6454 !strconcat(OpcodeStr,
6462 !strconcat(OpcodeStr,
6574 multiclass SS42I_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
6581 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
6582 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
6588 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
6589 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
6741 multiclass SHAI_binop<bits<8> Opc, string OpcodeStr, Intrinsic IntId,
6746 !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6747 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6756 !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6757 !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6806 multiclass AESI_binop_rm_int<bits<8> opc, string OpcodeStr,
6810 let AsmString = OpcodeStr#
7080 class avx_broadcast_rm<bits<8> opc, string OpcodeStr, RegisterClass RC,
7084 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7091 class avx2_broadcast_rr<bits<8> opc, string OpcodeStr, RegisterClass RC,
7094 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7307 multiclass avx_movmask_rm<bits<8> opc_rm, bits<8> opc_mr, string OpcodeStr,
7314 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7319 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7324 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7329 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7354 multiclass avx_vnni_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7359 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
7366 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
7376 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
7383 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
7415 multiclass avx_permil<bits<8> opc_rm, bits<8> opc_rmi, string OpcodeStr,
7424 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7429 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7436 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7441 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7549 multiclass AVX2_blend_rmi<bits<8> opc, string OpcodeStr, SDNode OpNode,
7556 !strconcat(OpcodeStr,
7562 !strconcat(OpcodeStr,
7644 multiclass avx2_broadcast<bits<8> opc, string OpcodeStr,
7649 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7654 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7659 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7664 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
7806 multiclass avx2_perm<bits<8> opc, string OpcodeStr,
7812 !strconcat(OpcodeStr,
7819 !strconcat(OpcodeStr,
7832 multiclass avx2_perm_imm<bits<8> opc, string OpcodeStr, PatFrag mem_frag,
7838 !strconcat(OpcodeStr,
7845 !strconcat(OpcodeStr,
7937 multiclass avx2_pmovmask<string OpcodeStr,
7944 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7949 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7954 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7959 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
8012 multiclass avx2_var_shift<bits<8> opc, string OpcodeStr, SDNode OpNode,
8016 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
8022 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
8030 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
8036 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
8056 multiclass avx2_gather<bits<8> opc, string OpcodeStr, RegisterClass RC256,
8061 !strconcat(OpcodeStr,
8066 !strconcat(OpcodeStr,
8105 multiclass GF2P8MULB_rm<string OpcodeStr, ValueType OpVT,
8111 OpcodeStr#"\t{$src2, $dst|$dst, $src2}",
8112 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}") in {
8181 multiclass avx_ifma_rm<bits<8> opc, string OpcodeStr, SDNode OpNode> {
8187 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8194 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8201 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8208 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8219 multiclass avx_dotprod_rm<bits<8> Opc, string OpcodeStr, ValueType OpVT,
8227 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8232 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8278 multiclass AVX_NE_CONVERT_BASE<bits<8> Opcode, string OpcodeStr,
8281 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
8283 (!cast<Intrinsic>("int_x86_"#OpcodeStr#"128") addr:$src))]>,
8286 !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
8288 (!cast<Intrinsic>("int_x86_"#OpcodeStr#"256") addr:$src))]>,
8429 multiclass avx_vnni_int16<bits<8> opc, string OpcodeStr, bit IsCommutable> {
8433 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8435 (v4i32 (!cast<Intrinsic>("int_x86_avx2_"#OpcodeStr#"_128")
8441 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8443 (v4i32 (!cast<Intrinsic>("int_x86_avx2_"#OpcodeStr#"_128")
8450 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8452 (v8i32 (!cast<Intrinsic>("int_x86_avx2_"#OpcodeStr#"_256")
8458 !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
8460 (v8i32 (!cast<Intrinsic>("int_x86_avx2_"#OpcodeStr#"_256")