xref: /freebsd/contrib/llvm-project/llvm/lib/Target/X86/X86IntrinsicsInfo.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===-- X86IntrinsicsInfo.h - X86 Intrinsics ------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains the details for lowering X86 intrinsics
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H
14 #define LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H
15 
16 #include "X86ISelLowering.h"
17 #include "X86InstrInfo.h"
18 #include "llvm/IR/IntrinsicsX86.h"
19 
20 namespace llvm {
21 
22 enum IntrinsicType : uint16_t {
23   CVTNEPS2BF16_MASK,
24   GATHER,
25   SCATTER,
26   PREFETCH,
27   RDSEED,
28   RDRAND,
29   RDPMC,
30   RDTSC,
31   XTEST,
32   XGETBV,
33   ADX,
34   FPCLASSS,
35   INTR_TYPE_1OP,
36   INTR_TYPE_2OP,
37   INTR_TYPE_3OP,
38   INTR_TYPE_4OP_IMM8,
39   INTR_TYPE_3OP_IMM8,
40   CFMA_OP_MASK,
41   CFMA_OP_MASKZ,
42   CMP_MASK_CC,
43   CMP_MASK_SCALAR_CC,
44   VSHIFT,
45   COMI,
46   COMI_RM,
47   BLENDV,
48   BEXTRI,
49   CVTPD2PS_MASK,
50   INTR_TYPE_1OP_SAE,
51   INTR_TYPE_2OP_SAE,
52   INTR_TYPE_1OP_MASK_SAE,
53   INTR_TYPE_2OP_MASK_SAE,
54   INTR_TYPE_3OP_MASK_SAE,
55   INTR_TYPE_1OP_MASK,
56   INTR_TYPE_2OP_MASK,
57   IFMA_OP,
58   VPERM_2OP,
59   INTR_TYPE_SCALAR_MASK,
60   INTR_TYPE_SCALAR_MASK_SAE,
61   INTR_TYPE_SCALAR_MASK_RND,
62   INTR_TYPE_3OP_SCALAR_MASK_SAE,
63   COMPRESS_EXPAND_IN_REG,
64   TRUNCATE_TO_REG,
65   TRUNCATE2_TO_REG,
66   CVTPS2PH_MASK,
67   CVTPD2DQ_MASK,
68   CVTQQ2PS_MASK,
69   TRUNCATE_TO_MEM_VI8,
70   TRUNCATE_TO_MEM_VI16,
71   TRUNCATE_TO_MEM_VI32,
72   FIXUPIMM,
73   FIXUPIMM_MASKZ,
74   GATHER_AVX2,
75   ROUNDP,
76   ROUNDS,
77   RDPRU,
78   INTR_TYPE_CAST_MMX
79 };
80 
81 struct IntrinsicData {
82 
83   uint16_t Id;
84   IntrinsicType Type;
85   uint16_t Opc0;
86   uint16_t Opc1;
87 
88   bool operator<(const IntrinsicData &RHS) const { return Id < RHS.Id; }
89   bool operator==(const IntrinsicData &RHS) const { return RHS.Id == Id; }
90   friend bool operator<(const IntrinsicData &LHS, unsigned Id) {
91     return LHS.Id < Id;
92   }
93 };
94 
95 #define X86_INTRINSIC_DATA(id, type, op0, op1)                                 \
96   {Intrinsic::x86_##id, type, op0, op1}
97 
98 /*
99  * IntrinsicsWithChain - the table should be sorted by Intrinsic ID - in
100  * the alphabetical order.
101  */
102 static const IntrinsicData IntrinsicsWithChain[] = {
103     X86_INTRINSIC_DATA(avx2_gather_d_d, GATHER_AVX2, 0, 0),
104     X86_INTRINSIC_DATA(avx2_gather_d_d_256, GATHER_AVX2, 0, 0),
105     X86_INTRINSIC_DATA(avx2_gather_d_pd, GATHER_AVX2, 0, 0),
106     X86_INTRINSIC_DATA(avx2_gather_d_pd_256, GATHER_AVX2, 0, 0),
107     X86_INTRINSIC_DATA(avx2_gather_d_ps, GATHER_AVX2, 0, 0),
108     X86_INTRINSIC_DATA(avx2_gather_d_ps_256, GATHER_AVX2, 0, 0),
109     X86_INTRINSIC_DATA(avx2_gather_d_q, GATHER_AVX2, 0, 0),
110     X86_INTRINSIC_DATA(avx2_gather_d_q_256, GATHER_AVX2, 0, 0),
111     X86_INTRINSIC_DATA(avx2_gather_q_d, GATHER_AVX2, 0, 0),
112     X86_INTRINSIC_DATA(avx2_gather_q_d_256, GATHER_AVX2, 0, 0),
113     X86_INTRINSIC_DATA(avx2_gather_q_pd, GATHER_AVX2, 0, 0),
114     X86_INTRINSIC_DATA(avx2_gather_q_pd_256, GATHER_AVX2, 0, 0),
115     X86_INTRINSIC_DATA(avx2_gather_q_ps, GATHER_AVX2, 0, 0),
116     X86_INTRINSIC_DATA(avx2_gather_q_ps_256, GATHER_AVX2, 0, 0),
117     X86_INTRINSIC_DATA(avx2_gather_q_q, GATHER_AVX2, 0, 0),
118     X86_INTRINSIC_DATA(avx2_gather_q_q_256, GATHER_AVX2, 0, 0),
119 
120     X86_INTRINSIC_DATA(avx512_gather_dpd_512, GATHER, 0, 0),
121     X86_INTRINSIC_DATA(avx512_gather_dpi_512, GATHER, 0, 0),
122     X86_INTRINSIC_DATA(avx512_gather_dpq_512, GATHER, 0, 0),
123     X86_INTRINSIC_DATA(avx512_gather_dps_512, GATHER, 0, 0),
124     X86_INTRINSIC_DATA(avx512_gather_qpd_512, GATHER, 0, 0),
125     X86_INTRINSIC_DATA(avx512_gather_qpi_512, GATHER, 0, 0),
126     X86_INTRINSIC_DATA(avx512_gather_qpq_512, GATHER, 0, 0),
127     X86_INTRINSIC_DATA(avx512_gather_qps_512, GATHER, 0, 0),
128     X86_INTRINSIC_DATA(avx512_gather3div2_df, GATHER, 0, 0),
129     X86_INTRINSIC_DATA(avx512_gather3div2_di, GATHER, 0, 0),
130     X86_INTRINSIC_DATA(avx512_gather3div4_df, GATHER, 0, 0),
131     X86_INTRINSIC_DATA(avx512_gather3div4_di, GATHER, 0, 0),
132     X86_INTRINSIC_DATA(avx512_gather3div4_sf, GATHER, 0, 0),
133     X86_INTRINSIC_DATA(avx512_gather3div4_si, GATHER, 0, 0),
134     X86_INTRINSIC_DATA(avx512_gather3div8_sf, GATHER, 0, 0),
135     X86_INTRINSIC_DATA(avx512_gather3div8_si, GATHER, 0, 0),
136     X86_INTRINSIC_DATA(avx512_gather3siv2_df, GATHER, 0, 0),
137     X86_INTRINSIC_DATA(avx512_gather3siv2_di, GATHER, 0, 0),
138     X86_INTRINSIC_DATA(avx512_gather3siv4_df, GATHER, 0, 0),
139     X86_INTRINSIC_DATA(avx512_gather3siv4_di, GATHER, 0, 0),
140     X86_INTRINSIC_DATA(avx512_gather3siv4_sf, GATHER, 0, 0),
141     X86_INTRINSIC_DATA(avx512_gather3siv4_si, GATHER, 0, 0),
142     X86_INTRINSIC_DATA(avx512_gather3siv8_sf, GATHER, 0, 0),
143     X86_INTRINSIC_DATA(avx512_gather3siv8_si, GATHER, 0, 0),
144 
145     X86_INTRINSIC_DATA(avx512_mask_gather_dpd_512, GATHER, 0, 0),
146     X86_INTRINSIC_DATA(avx512_mask_gather_dpi_512, GATHER, 0, 0),
147     X86_INTRINSIC_DATA(avx512_mask_gather_dpq_512, GATHER, 0, 0),
148     X86_INTRINSIC_DATA(avx512_mask_gather_dps_512, GATHER, 0, 0),
149     X86_INTRINSIC_DATA(avx512_mask_gather_qpd_512, GATHER, 0, 0),
150     X86_INTRINSIC_DATA(avx512_mask_gather_qpi_512, GATHER, 0, 0),
151     X86_INTRINSIC_DATA(avx512_mask_gather_qpq_512, GATHER, 0, 0),
152     X86_INTRINSIC_DATA(avx512_mask_gather_qps_512, GATHER, 0, 0),
153     X86_INTRINSIC_DATA(avx512_mask_gather3div2_df, GATHER, 0, 0),
154     X86_INTRINSIC_DATA(avx512_mask_gather3div2_di, GATHER, 0, 0),
155     X86_INTRINSIC_DATA(avx512_mask_gather3div4_df, GATHER, 0, 0),
156     X86_INTRINSIC_DATA(avx512_mask_gather3div4_di, GATHER, 0, 0),
157     X86_INTRINSIC_DATA(avx512_mask_gather3div4_sf, GATHER, 0, 0),
158     X86_INTRINSIC_DATA(avx512_mask_gather3div4_si, GATHER, 0, 0),
159     X86_INTRINSIC_DATA(avx512_mask_gather3div8_sf, GATHER, 0, 0),
160     X86_INTRINSIC_DATA(avx512_mask_gather3div8_si, GATHER, 0, 0),
161     X86_INTRINSIC_DATA(avx512_mask_gather3siv2_df, GATHER, 0, 0),
162     X86_INTRINSIC_DATA(avx512_mask_gather3siv2_di, GATHER, 0, 0),
163     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_df, GATHER, 0, 0),
164     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_di, GATHER, 0, 0),
165     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_sf, GATHER, 0, 0),
166     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_si, GATHER, 0, 0),
167     X86_INTRINSIC_DATA(avx512_mask_gather3siv8_sf, GATHER, 0, 0),
168     X86_INTRINSIC_DATA(avx512_mask_gather3siv8_si, GATHER, 0, 0),
169 
170     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_128, TRUNCATE_TO_MEM_VI8,
171                        X86ISD::VTRUNC, 0),
172     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_256, TRUNCATE_TO_MEM_VI8,
173                        X86ISD::VTRUNC, 0),
174     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_512, TRUNCATE_TO_MEM_VI8,
175                        X86ISD::VTRUNC, 0),
176     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_128, TRUNCATE_TO_MEM_VI16,
177                        X86ISD::VTRUNC, 0),
178     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_256, TRUNCATE_TO_MEM_VI16,
179                        X86ISD::VTRUNC, 0),
180     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_512, TRUNCATE_TO_MEM_VI16,
181                        X86ISD::VTRUNC, 0),
182     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_128, TRUNCATE_TO_MEM_VI8,
183                        X86ISD::VTRUNC, 0),
184     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_256, TRUNCATE_TO_MEM_VI8,
185                        X86ISD::VTRUNC, 0),
186     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_512, TRUNCATE_TO_MEM_VI8,
187                        X86ISD::VTRUNC, 0),
188     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_128, TRUNCATE_TO_MEM_VI32,
189                        X86ISD::VTRUNC, 0),
190     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_256, TRUNCATE_TO_MEM_VI32,
191                        X86ISD::VTRUNC, 0),
192     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_512, TRUNCATE_TO_MEM_VI32,
193                        X86ISD::VTRUNC, 0),
194     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_128, TRUNCATE_TO_MEM_VI16,
195                        X86ISD::VTRUNC, 0),
196     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_256, TRUNCATE_TO_MEM_VI16,
197                        X86ISD::VTRUNC, 0),
198     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_512, TRUNCATE_TO_MEM_VI16,
199                        X86ISD::VTRUNC, 0),
200     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_128, TRUNCATE_TO_MEM_VI8,
201                        X86ISD::VTRUNC, 0),
202     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_256, TRUNCATE_TO_MEM_VI8,
203                        X86ISD::VTRUNC, 0),
204     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_512, TRUNCATE_TO_MEM_VI8,
205                        X86ISD::VTRUNC, 0),
206     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_128, TRUNCATE_TO_MEM_VI8,
207                        X86ISD::VTRUNCS, 0),
208     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_256, TRUNCATE_TO_MEM_VI8,
209                        X86ISD::VTRUNCS, 0),
210     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_512, TRUNCATE_TO_MEM_VI8,
211                        X86ISD::VTRUNCS, 0),
212     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_128, TRUNCATE_TO_MEM_VI16,
213                        X86ISD::VTRUNCS, 0),
214     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_256, TRUNCATE_TO_MEM_VI16,
215                        X86ISD::VTRUNCS, 0),
216     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_512, TRUNCATE_TO_MEM_VI16,
217                        X86ISD::VTRUNCS, 0),
218     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_128, TRUNCATE_TO_MEM_VI8,
219                        X86ISD::VTRUNCS, 0),
220     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_256, TRUNCATE_TO_MEM_VI8,
221                        X86ISD::VTRUNCS, 0),
222     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_512, TRUNCATE_TO_MEM_VI8,
223                        X86ISD::VTRUNCS, 0),
224     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_128, TRUNCATE_TO_MEM_VI32,
225                        X86ISD::VTRUNCS, 0),
226     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_256, TRUNCATE_TO_MEM_VI32,
227                        X86ISD::VTRUNCS, 0),
228     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_512, TRUNCATE_TO_MEM_VI32,
229                        X86ISD::VTRUNCS, 0),
230     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_128, TRUNCATE_TO_MEM_VI16,
231                        X86ISD::VTRUNCS, 0),
232     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_256, TRUNCATE_TO_MEM_VI16,
233                        X86ISD::VTRUNCS, 0),
234     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_512, TRUNCATE_TO_MEM_VI16,
235                        X86ISD::VTRUNCS, 0),
236     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_128, TRUNCATE_TO_MEM_VI8,
237                        X86ISD::VTRUNCS, 0),
238     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_256, TRUNCATE_TO_MEM_VI8,
239                        X86ISD::VTRUNCS, 0),
240     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_512, TRUNCATE_TO_MEM_VI8,
241                        X86ISD::VTRUNCS, 0),
242     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_128, TRUNCATE_TO_MEM_VI8,
243                        X86ISD::VTRUNCUS, 0),
244     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_256, TRUNCATE_TO_MEM_VI8,
245                        X86ISD::VTRUNCUS, 0),
246     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_512, TRUNCATE_TO_MEM_VI8,
247                        X86ISD::VTRUNCUS, 0),
248     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_128, TRUNCATE_TO_MEM_VI16,
249                        X86ISD::VTRUNCUS, 0),
250     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_256, TRUNCATE_TO_MEM_VI16,
251                        X86ISD::VTRUNCUS, 0),
252     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_512, TRUNCATE_TO_MEM_VI16,
253                        X86ISD::VTRUNCUS, 0),
254     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_128, TRUNCATE_TO_MEM_VI8,
255                        X86ISD::VTRUNCUS, 0),
256     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_256, TRUNCATE_TO_MEM_VI8,
257                        X86ISD::VTRUNCUS, 0),
258     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_512, TRUNCATE_TO_MEM_VI8,
259                        X86ISD::VTRUNCUS, 0),
260     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_128, TRUNCATE_TO_MEM_VI32,
261                        X86ISD::VTRUNCUS, 0),
262     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_256, TRUNCATE_TO_MEM_VI32,
263                        X86ISD::VTRUNCUS, 0),
264     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_512, TRUNCATE_TO_MEM_VI32,
265                        X86ISD::VTRUNCUS, 0),
266     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_128, TRUNCATE_TO_MEM_VI16,
267                        X86ISD::VTRUNCUS, 0),
268     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_256, TRUNCATE_TO_MEM_VI16,
269                        X86ISD::VTRUNCUS, 0),
270     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_512, TRUNCATE_TO_MEM_VI16,
271                        X86ISD::VTRUNCUS, 0),
272     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_128, TRUNCATE_TO_MEM_VI8,
273                        X86ISD::VTRUNCUS, 0),
274     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_256, TRUNCATE_TO_MEM_VI8,
275                        X86ISD::VTRUNCUS, 0),
276     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_512, TRUNCATE_TO_MEM_VI8,
277                        X86ISD::VTRUNCUS, 0),
278 
279     X86_INTRINSIC_DATA(avx512_mask_scatter_dpd_512, SCATTER, 0, 0),
280     X86_INTRINSIC_DATA(avx512_mask_scatter_dpi_512, SCATTER, 0, 0),
281     X86_INTRINSIC_DATA(avx512_mask_scatter_dpq_512, SCATTER, 0, 0),
282     X86_INTRINSIC_DATA(avx512_mask_scatter_dps_512, SCATTER, 0, 0),
283     X86_INTRINSIC_DATA(avx512_mask_scatter_qpd_512, SCATTER, 0, 0),
284     X86_INTRINSIC_DATA(avx512_mask_scatter_qpi_512, SCATTER, 0, 0),
285     X86_INTRINSIC_DATA(avx512_mask_scatter_qpq_512, SCATTER, 0, 0),
286     X86_INTRINSIC_DATA(avx512_mask_scatter_qps_512, SCATTER, 0, 0),
287     X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_df, SCATTER, 0, 0),
288     X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_di, SCATTER, 0, 0),
289     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_df, SCATTER, 0, 0),
290     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_di, SCATTER, 0, 0),
291     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_sf, SCATTER, 0, 0),
292     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_si, SCATTER, 0, 0),
293     X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_sf, SCATTER, 0, 0),
294     X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_si, SCATTER, 0, 0),
295     X86_INTRINSIC_DATA(avx512_mask_scattersiv2_df, SCATTER, 0, 0),
296     X86_INTRINSIC_DATA(avx512_mask_scattersiv2_di, SCATTER, 0, 0),
297     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_df, SCATTER, 0, 0),
298     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_di, SCATTER, 0, 0),
299     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_sf, SCATTER, 0, 0),
300     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_si, SCATTER, 0, 0),
301     X86_INTRINSIC_DATA(avx512_mask_scattersiv8_sf, SCATTER, 0, 0),
302     X86_INTRINSIC_DATA(avx512_mask_scattersiv8_si, SCATTER, 0, 0),
303 
304     X86_INTRINSIC_DATA(avx512_scatter_dpd_512, SCATTER, 0, 0),
305     X86_INTRINSIC_DATA(avx512_scatter_dpi_512, SCATTER, 0, 0),
306     X86_INTRINSIC_DATA(avx512_scatter_dpq_512, SCATTER, 0, 0),
307     X86_INTRINSIC_DATA(avx512_scatter_dps_512, SCATTER, 0, 0),
308     X86_INTRINSIC_DATA(avx512_scatter_qpd_512, SCATTER, 0, 0),
309     X86_INTRINSIC_DATA(avx512_scatter_qpi_512, SCATTER, 0, 0),
310     X86_INTRINSIC_DATA(avx512_scatter_qpq_512, SCATTER, 0, 0),
311     X86_INTRINSIC_DATA(avx512_scatter_qps_512, SCATTER, 0, 0),
312     X86_INTRINSIC_DATA(avx512_scatterdiv2_df, SCATTER, 0, 0),
313     X86_INTRINSIC_DATA(avx512_scatterdiv2_di, SCATTER, 0, 0),
314     X86_INTRINSIC_DATA(avx512_scatterdiv4_df, SCATTER, 0, 0),
315     X86_INTRINSIC_DATA(avx512_scatterdiv4_di, SCATTER, 0, 0),
316     X86_INTRINSIC_DATA(avx512_scatterdiv4_sf, SCATTER, 0, 0),
317     X86_INTRINSIC_DATA(avx512_scatterdiv4_si, SCATTER, 0, 0),
318     X86_INTRINSIC_DATA(avx512_scatterdiv8_sf, SCATTER, 0, 0),
319     X86_INTRINSIC_DATA(avx512_scatterdiv8_si, SCATTER, 0, 0),
320     X86_INTRINSIC_DATA(avx512_scattersiv2_df, SCATTER, 0, 0),
321     X86_INTRINSIC_DATA(avx512_scattersiv2_di, SCATTER, 0, 0),
322     X86_INTRINSIC_DATA(avx512_scattersiv4_df, SCATTER, 0, 0),
323     X86_INTRINSIC_DATA(avx512_scattersiv4_di, SCATTER, 0, 0),
324     X86_INTRINSIC_DATA(avx512_scattersiv4_sf, SCATTER, 0, 0),
325     X86_INTRINSIC_DATA(avx512_scattersiv4_si, SCATTER, 0, 0),
326     X86_INTRINSIC_DATA(avx512_scattersiv8_sf, SCATTER, 0, 0),
327     X86_INTRINSIC_DATA(avx512_scattersiv8_si, SCATTER, 0, 0),
328     X86_INTRINSIC_DATA(mmx_maskmovq, INTR_TYPE_CAST_MMX, 0, 0),
329     X86_INTRINSIC_DATA(mmx_movnt_dq, INTR_TYPE_CAST_MMX, 0, 0),
330     X86_INTRINSIC_DATA(rdpmc, RDPMC, X86::RDPMC, 0),
331     X86_INTRINSIC_DATA(rdpru, RDPRU, X86::RDPRU, 0),
332     X86_INTRINSIC_DATA(rdrand_16, RDRAND, X86ISD::RDRAND, 0),
333     X86_INTRINSIC_DATA(rdrand_32, RDRAND, X86ISD::RDRAND, 0),
334     X86_INTRINSIC_DATA(rdrand_64, RDRAND, X86ISD::RDRAND, 0),
335     X86_INTRINSIC_DATA(rdseed_16, RDSEED, X86ISD::RDSEED, 0),
336     X86_INTRINSIC_DATA(rdseed_32, RDSEED, X86ISD::RDSEED, 0),
337     X86_INTRINSIC_DATA(rdseed_64, RDSEED, X86ISD::RDSEED, 0),
338     X86_INTRINSIC_DATA(rdtsc, RDTSC, X86::RDTSC, 0),
339     X86_INTRINSIC_DATA(rdtscp, RDTSC, X86::RDTSCP, 0),
340     X86_INTRINSIC_DATA(xgetbv, XGETBV, X86::XGETBV, 0),
341     X86_INTRINSIC_DATA(xtest, XTEST, X86ISD::XTEST, 0),
342 };
343 
344 /*
345  * Find Intrinsic data by intrinsic ID
346  */
getIntrinsicWithChain(unsigned IntNo)347 static const IntrinsicData *getIntrinsicWithChain(unsigned IntNo) {
348   const IntrinsicData *Data = lower_bound(IntrinsicsWithChain, IntNo);
349   if (Data != std::end(IntrinsicsWithChain) && Data->Id == IntNo)
350     return Data;
351   return nullptr;
352 }
353 
354 /*
355  * IntrinsicsWithoutChain - the table should be sorted by Intrinsic ID - in
356  * the alphabetical order.
357  */
358 static const IntrinsicData IntrinsicsWithoutChain[] = {
359     X86_INTRINSIC_DATA(addcarry_32, ADX, X86ISD::ADC, X86ISD::ADD),
360     X86_INTRINSIC_DATA(addcarry_64, ADX, X86ISD::ADC, X86ISD::ADD),
361     X86_INTRINSIC_DATA(avx_addsub_pd_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
362     X86_INTRINSIC_DATA(avx_addsub_ps_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
363     X86_INTRINSIC_DATA(avx_blendv_pd_256, BLENDV, X86ISD::BLENDV, 0),
364     X86_INTRINSIC_DATA(avx_blendv_ps_256, BLENDV, X86ISD::BLENDV, 0),
365     X86_INTRINSIC_DATA(avx_cmp_pd_256, INTR_TYPE_3OP, X86ISD::CMPP, 0),
366     X86_INTRINSIC_DATA(avx_cmp_ps_256, INTR_TYPE_3OP, X86ISD::CMPP, 0),
367     X86_INTRINSIC_DATA(avx_cvt_pd2_ps_256, INTR_TYPE_1OP, X86ISD::VFPROUND, 0),
368     X86_INTRINSIC_DATA(avx_cvt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
369     X86_INTRINSIC_DATA(avx_cvt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
370     X86_INTRINSIC_DATA(avx_cvtt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
371     X86_INTRINSIC_DATA(avx_cvtt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
372     X86_INTRINSIC_DATA(avx_hadd_pd_256, INTR_TYPE_2OP, X86ISD::FHADD, 0),
373     X86_INTRINSIC_DATA(avx_hadd_ps_256, INTR_TYPE_2OP, X86ISD::FHADD, 0),
374     X86_INTRINSIC_DATA(avx_hsub_pd_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
375     X86_INTRINSIC_DATA(avx_hsub_ps_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
376     X86_INTRINSIC_DATA(avx_max_pd_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
377     X86_INTRINSIC_DATA(avx_max_ps_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
378     X86_INTRINSIC_DATA(avx_min_pd_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
379     X86_INTRINSIC_DATA(avx_min_ps_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
380     X86_INTRINSIC_DATA(avx_movmsk_pd_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
381     X86_INTRINSIC_DATA(avx_movmsk_ps_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
382     X86_INTRINSIC_DATA(avx_rcp_ps_256, INTR_TYPE_1OP, X86ISD::FRCP, 0),
383     X86_INTRINSIC_DATA(avx_round_pd_256, ROUNDP, X86ISD::VRNDSCALE, 0),
384     X86_INTRINSIC_DATA(avx_round_ps_256, ROUNDP, X86ISD::VRNDSCALE, 0),
385     X86_INTRINSIC_DATA(avx_rsqrt_ps_256, INTR_TYPE_1OP, X86ISD::FRSQRT, 0),
386     X86_INTRINSIC_DATA(avx_vpermilvar_pd, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0),
387     X86_INTRINSIC_DATA(avx_vpermilvar_pd_256, INTR_TYPE_2OP, X86ISD::VPERMILPV,
388                        0),
389     X86_INTRINSIC_DATA(avx_vpermilvar_ps, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0),
390     X86_INTRINSIC_DATA(avx_vpermilvar_ps_256, INTR_TYPE_2OP, X86ISD::VPERMILPV,
391                        0),
392     X86_INTRINSIC_DATA(avx10_fpclass_bf16_128, INTR_TYPE_2OP, X86ISD::VFPCLASS,
393                        0),
394     X86_INTRINSIC_DATA(avx10_fpclass_bf16_256, INTR_TYPE_2OP, X86ISD::VFPCLASS,
395                        0),
396     X86_INTRINSIC_DATA(avx10_fpclass_bf16_512, INTR_TYPE_2OP, X86ISD::VFPCLASS,
397                        0),
398     X86_INTRINSIC_DATA(avx10_mask_getexp_bf16_128, INTR_TYPE_1OP_MASK,
399                        X86ISD::FGETEXP, 0),
400     X86_INTRINSIC_DATA(avx10_mask_getexp_bf16_256, INTR_TYPE_1OP_MASK,
401                        X86ISD::FGETEXP, 0),
402     X86_INTRINSIC_DATA(avx10_mask_getexp_bf16_512, INTR_TYPE_1OP_MASK,
403                        X86ISD::FGETEXP, 0),
404     X86_INTRINSIC_DATA(avx10_mask_getmant_bf16_128, INTR_TYPE_2OP_MASK,
405                        X86ISD::VGETMANT, 0),
406     X86_INTRINSIC_DATA(avx10_mask_getmant_bf16_256, INTR_TYPE_2OP_MASK,
407                        X86ISD::VGETMANT, 0),
408     X86_INTRINSIC_DATA(avx10_mask_getmant_bf16_512, INTR_TYPE_2OP_MASK,
409                        X86ISD::VGETMANT, 0),
410     X86_INTRINSIC_DATA(avx10_mask_rcp_bf16_128, INTR_TYPE_1OP_MASK,
411                        X86ISD::RCP14, 0),
412     X86_INTRINSIC_DATA(avx10_mask_rcp_bf16_256, INTR_TYPE_1OP_MASK,
413                        X86ISD::RCP14, 0),
414     X86_INTRINSIC_DATA(avx10_mask_rcp_bf16_512, INTR_TYPE_1OP_MASK,
415                        X86ISD::RCP14, 0),
416     X86_INTRINSIC_DATA(avx10_mask_reduce_bf16_128, INTR_TYPE_2OP_MASK,
417                        X86ISD::VREDUCE, 0),
418     X86_INTRINSIC_DATA(avx10_mask_reduce_bf16_256, INTR_TYPE_2OP_MASK,
419                        X86ISD::VREDUCE, 0),
420     X86_INTRINSIC_DATA(avx10_mask_reduce_bf16_512, INTR_TYPE_2OP_MASK,
421                        X86ISD::VREDUCE, 0),
422     X86_INTRINSIC_DATA(avx10_mask_rndscale_bf16_128, INTR_TYPE_2OP_MASK,
423                        X86ISD::VRNDSCALE, 0),
424     X86_INTRINSIC_DATA(avx10_mask_rndscale_bf16_256, INTR_TYPE_2OP_MASK,
425                        X86ISD::VRNDSCALE, 0),
426     X86_INTRINSIC_DATA(avx10_mask_rndscale_bf16_512, INTR_TYPE_2OP_MASK,
427                        X86ISD::VRNDSCALE, 0),
428     X86_INTRINSIC_DATA(avx10_mask_rsqrt_bf16_128, INTR_TYPE_1OP_MASK,
429                        X86ISD::RSQRT14, 0),
430     X86_INTRINSIC_DATA(avx10_mask_rsqrt_bf16_256, INTR_TYPE_1OP_MASK,
431                        X86ISD::RSQRT14, 0),
432     X86_INTRINSIC_DATA(avx10_mask_rsqrt_bf16_512, INTR_TYPE_1OP_MASK,
433                        X86ISD::RSQRT14, 0),
434     X86_INTRINSIC_DATA(avx10_mask_scalef_bf16_128, INTR_TYPE_2OP_MASK,
435                        X86ISD::SCALEF, 0),
436     X86_INTRINSIC_DATA(avx10_mask_scalef_bf16_256, INTR_TYPE_2OP_MASK,
437                        X86ISD::SCALEF, 0),
438     X86_INTRINSIC_DATA(avx10_mask_scalef_bf16_512, INTR_TYPE_2OP_MASK,
439                        X86ISD::SCALEF, 0),
440     X86_INTRINSIC_DATA(avx10_mask_vcvt2ps2phx_128, INTR_TYPE_2OP_MASK,
441                        X86ISD::VFPROUND2, 0),
442     X86_INTRINSIC_DATA(avx10_mask_vcvt2ps2phx_256, INTR_TYPE_2OP_MASK,
443                        X86ISD::VFPROUND2, 0),
444     X86_INTRINSIC_DATA(avx10_mask_vcvt2ps2phx_512, INTR_TYPE_2OP_MASK,
445                        X86ISD::VFPROUND2, X86ISD::VFPROUND2_RND),
446     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8128, TRUNCATE2_TO_REG,
447                        X86ISD::VCVTBIASPH2BF8, X86ISD::VMCVTBIASPH2BF8),
448     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8256, INTR_TYPE_2OP_MASK,
449                        X86ISD::VCVTBIASPH2BF8, 0),
450     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8512, INTR_TYPE_2OP_MASK,
451                        X86ISD::VCVTBIASPH2BF8, 0),
452     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8s128, TRUNCATE2_TO_REG,
453                        X86ISD::VCVTBIASPH2BF8S, X86ISD::VMCVTBIASPH2BF8S),
454     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8s256, INTR_TYPE_2OP_MASK,
455                        X86ISD::VCVTBIASPH2BF8S, 0),
456     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2bf8s512, INTR_TYPE_2OP_MASK,
457                        X86ISD::VCVTBIASPH2BF8S, 0),
458     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8128, TRUNCATE2_TO_REG,
459                        X86ISD::VCVTBIASPH2HF8, X86ISD::VMCVTBIASPH2HF8),
460     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8256, INTR_TYPE_2OP_MASK,
461                        X86ISD::VCVTBIASPH2HF8, 0),
462     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8512, INTR_TYPE_2OP_MASK,
463                        X86ISD::VCVTBIASPH2HF8, 0),
464     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8s128, TRUNCATE2_TO_REG,
465                        X86ISD::VCVTBIASPH2HF8S, X86ISD::VMCVTBIASPH2HF8S),
466     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8s256, INTR_TYPE_2OP_MASK,
467                        X86ISD::VCVTBIASPH2HF8S, 0),
468     X86_INTRINSIC_DATA(avx10_mask_vcvtbiasph2hf8s512, INTR_TYPE_2OP_MASK,
469                        X86ISD::VCVTBIASPH2HF8S, 0),
470     X86_INTRINSIC_DATA(avx10_mask_vcvthf82ph128, INTR_TYPE_1OP_MASK,
471                        X86ISD::VCVTHF82PH, 0),
472     X86_INTRINSIC_DATA(avx10_mask_vcvthf82ph256, INTR_TYPE_1OP_MASK,
473                        X86ISD::VCVTHF82PH, 0),
474     X86_INTRINSIC_DATA(avx10_mask_vcvthf82ph512, INTR_TYPE_1OP_MASK,
475                        X86ISD::VCVTHF82PH, 0),
476     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8128, TRUNCATE_TO_REG,
477                        X86ISD::VCVTPH2BF8, X86ISD::VMCVTPH2BF8),
478     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8256, INTR_TYPE_1OP_MASK,
479                        X86ISD::VCVTPH2BF8, 0),
480     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8512, INTR_TYPE_1OP_MASK,
481                        X86ISD::VCVTPH2BF8, 0),
482     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8s128, TRUNCATE_TO_REG,
483                        X86ISD::VCVTPH2BF8S, X86ISD::VMCVTPH2BF8S),
484     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8s256, INTR_TYPE_1OP_MASK,
485                        X86ISD::VCVTPH2BF8S, 0),
486     X86_INTRINSIC_DATA(avx10_mask_vcvtph2bf8s512, INTR_TYPE_1OP_MASK,
487                        X86ISD::VCVTPH2BF8S, 0),
488     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8128, TRUNCATE_TO_REG,
489                        X86ISD::VCVTPH2HF8, X86ISD::VMCVTPH2HF8),
490     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8256, INTR_TYPE_1OP_MASK,
491                        X86ISD::VCVTPH2HF8, 0),
492     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8512, INTR_TYPE_1OP_MASK,
493                        X86ISD::VCVTPH2HF8, 0),
494     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8s128, TRUNCATE_TO_REG,
495                        X86ISD::VCVTPH2HF8S, X86ISD::VMCVTPH2HF8S),
496     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8s256, INTR_TYPE_1OP_MASK,
497                        X86ISD::VCVTPH2HF8S, 0),
498     X86_INTRINSIC_DATA(avx10_mask_vcvtph2hf8s512, INTR_TYPE_1OP_MASK,
499                        X86ISD::VCVTPH2HF8S, 0),
500     X86_INTRINSIC_DATA(avx10_mask_vcvtph2ibs128, INTR_TYPE_1OP_MASK,
501                        X86ISD::CVTP2IBS, 0),
502     X86_INTRINSIC_DATA(avx10_mask_vcvtph2ibs256, INTR_TYPE_1OP_MASK,
503                        X86ISD::CVTP2IBS, 0),
504     X86_INTRINSIC_DATA(avx10_mask_vcvtph2ibs512, INTR_TYPE_1OP_MASK,
505                        X86ISD::CVTP2IBS, X86ISD::CVTP2IBS_RND),
506     X86_INTRINSIC_DATA(avx10_mask_vcvtph2iubs128, INTR_TYPE_1OP_MASK,
507                        X86ISD::CVTP2IUBS, 0),
508     X86_INTRINSIC_DATA(avx10_mask_vcvtph2iubs256, INTR_TYPE_1OP_MASK,
509                        X86ISD::CVTP2IUBS, 0),
510     X86_INTRINSIC_DATA(avx10_mask_vcvtph2iubs512, INTR_TYPE_1OP_MASK,
511                        X86ISD::CVTP2IUBS, X86ISD::CVTP2IUBS_RND),
512     X86_INTRINSIC_DATA(avx10_mask_vcvtps2ibs128, INTR_TYPE_1OP_MASK,
513                        X86ISD::CVTP2IBS, 0),
514     X86_INTRINSIC_DATA(avx10_mask_vcvtps2ibs256, INTR_TYPE_1OP_MASK,
515                        X86ISD::CVTP2IBS, 0),
516     X86_INTRINSIC_DATA(avx10_mask_vcvtps2ibs512, INTR_TYPE_1OP_MASK,
517                        X86ISD::CVTP2IBS, X86ISD::CVTP2IBS_RND),
518     X86_INTRINSIC_DATA(avx10_mask_vcvtps2iubs128, INTR_TYPE_1OP_MASK,
519                        X86ISD::CVTP2IUBS, 0),
520     X86_INTRINSIC_DATA(avx10_mask_vcvtps2iubs256, INTR_TYPE_1OP_MASK,
521                        X86ISD::CVTP2IUBS, 0),
522     X86_INTRINSIC_DATA(avx10_mask_vcvtps2iubs512, INTR_TYPE_1OP_MASK,
523                        X86ISD::CVTP2IUBS, X86ISD::CVTP2IUBS_RND),
524     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_128, CVTPD2DQ_MASK,
525                        X86ISD::CVTTP2SIS, X86ISD::MCVTTP2SIS),
526     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_256, INTR_TYPE_1OP_MASK,
527                        X86ISD::CVTTP2SIS, 0),
528     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_round_512, INTR_TYPE_1OP_MASK,
529                        X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
530     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_128, INTR_TYPE_1OP_MASK,
531                        X86ISD::CVTTP2SIS, 0),
532     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_256, INTR_TYPE_1OP_MASK,
533                        X86ISD::CVTTP2SIS, 0),
534     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_round_512, INTR_TYPE_1OP_MASK,
535                        X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
536     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_128, CVTPD2DQ_MASK,
537                        X86ISD::CVTTP2UIS, X86ISD::MCVTTP2SIS),
538     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_256, INTR_TYPE_1OP_MASK,
539                        X86ISD::CVTTP2UIS, 0),
540     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_round_512, INTR_TYPE_1OP_MASK,
541                        X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
542     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_128, INTR_TYPE_1OP_MASK,
543                        X86ISD::CVTTP2UIS, 0),
544     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_256, INTR_TYPE_1OP_MASK,
545                        X86ISD::CVTTP2UIS, 0),
546     X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_round_512, INTR_TYPE_1OP_MASK,
547                        X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
548     X86_INTRINSIC_DATA(avx10_mask_vcvttph2ibs128, INTR_TYPE_1OP_MASK,
549                        X86ISD::CVTTP2IBS, 0),
550     X86_INTRINSIC_DATA(avx10_mask_vcvttph2ibs256, INTR_TYPE_1OP_MASK,
551                        X86ISD::CVTTP2IBS, 0),
552     X86_INTRINSIC_DATA(avx10_mask_vcvttph2ibs512, INTR_TYPE_1OP_MASK_SAE,
553                        X86ISD::CVTTP2IBS, X86ISD::CVTTP2IBS_SAE),
554     X86_INTRINSIC_DATA(avx10_mask_vcvttph2iubs128, INTR_TYPE_1OP_MASK,
555                        X86ISD::CVTTP2IUBS, 0),
556     X86_INTRINSIC_DATA(avx10_mask_vcvttph2iubs256, INTR_TYPE_1OP_MASK,
557                        X86ISD::CVTTP2IUBS, 0),
558     X86_INTRINSIC_DATA(avx10_mask_vcvttph2iubs512, INTR_TYPE_1OP_MASK_SAE,
559                        X86ISD::CVTTP2IUBS, X86ISD::CVTTP2IUBS_SAE),
560     X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_128, INTR_TYPE_1OP_MASK,
561                        X86ISD::CVTTP2SIS, 0),
562     X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_256, INTR_TYPE_1OP_MASK,
563                        X86ISD::CVTTP2SIS, 0),
564     X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_round_512, INTR_TYPE_1OP_MASK,
565                        X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
566     X86_INTRINSIC_DATA(avx10_mask_vcvttps2ibs128, INTR_TYPE_1OP_MASK,
567                        X86ISD::CVTTP2IBS, 0),
568     X86_INTRINSIC_DATA(avx10_mask_vcvttps2ibs256, INTR_TYPE_1OP_MASK,
569                        X86ISD::CVTTP2IBS, 0),
570     X86_INTRINSIC_DATA(avx10_mask_vcvttps2ibs512, INTR_TYPE_1OP_MASK,
571                        X86ISD::CVTTP2IBS, X86ISD::CVTTP2IBS_SAE),
572     X86_INTRINSIC_DATA(avx10_mask_vcvttps2iubs128, INTR_TYPE_1OP_MASK,
573                        X86ISD::CVTTP2IUBS, 0),
574     X86_INTRINSIC_DATA(avx10_mask_vcvttps2iubs256, INTR_TYPE_1OP_MASK,
575                        X86ISD::CVTTP2IUBS, 0),
576     X86_INTRINSIC_DATA(avx10_mask_vcvttps2iubs512, INTR_TYPE_1OP_MASK_SAE,
577                        X86ISD::CVTTP2IUBS, X86ISD::CVTTP2IUBS_SAE),
578     X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_128, INTR_TYPE_1OP_MASK,
579                        X86ISD::CVTTP2SIS, 0),
580     X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_256, INTR_TYPE_1OP_MASK,
581                        X86ISD::CVTTP2SIS, 0),
582     X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_round_512, INTR_TYPE_1OP_MASK,
583                        X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
584     X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_128, INTR_TYPE_1OP_MASK,
585                        X86ISD::CVTTP2UIS, 0),
586     X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_256, INTR_TYPE_1OP_MASK,
587                        X86ISD::CVTTP2UIS, 0),
588     X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_round_512, INTR_TYPE_1OP_MASK,
589                        X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
590     X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_128, INTR_TYPE_1OP_MASK,
591                        X86ISD::CVTTP2UIS, 0),
592     X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_256, INTR_TYPE_1OP_MASK,
593                        X86ISD::CVTTP2UIS, 0),
594     X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_round_512, INTR_TYPE_1OP_MASK,
595                        X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
596     X86_INTRINSIC_DATA(avx10_mask_vminmaxpd_round, INTR_TYPE_3OP_MASK_SAE,
597                        X86ISD::VMINMAX, X86ISD::VMINMAX_SAE),
598     X86_INTRINSIC_DATA(avx10_mask_vminmaxpd128, INTR_TYPE_3OP_MASK_SAE,
599                        X86ISD::VMINMAX, 0),
600     X86_INTRINSIC_DATA(avx10_mask_vminmaxpd256, INTR_TYPE_3OP_MASK_SAE,
601                        X86ISD::VMINMAX, 0),
602     X86_INTRINSIC_DATA(avx10_mask_vminmaxph_round, INTR_TYPE_3OP_MASK_SAE,
603                        X86ISD::VMINMAX, X86ISD::VMINMAX_SAE),
604     X86_INTRINSIC_DATA(avx10_mask_vminmaxph128, INTR_TYPE_3OP_MASK_SAE,
605                        X86ISD::VMINMAX, 0),
606     X86_INTRINSIC_DATA(avx10_mask_vminmaxph256, INTR_TYPE_3OP_MASK_SAE,
607                        X86ISD::VMINMAX, 0),
608     X86_INTRINSIC_DATA(avx10_mask_vminmaxps_round, INTR_TYPE_3OP_MASK_SAE,
609                        X86ISD::VMINMAX, X86ISD::VMINMAX_SAE),
610     X86_INTRINSIC_DATA(avx10_mask_vminmaxps128, INTR_TYPE_3OP_MASK_SAE,
611                        X86ISD::VMINMAX, 0),
612     X86_INTRINSIC_DATA(avx10_mask_vminmaxps256, INTR_TYPE_3OP_MASK_SAE,
613                        X86ISD::VMINMAX, 0),
614     X86_INTRINSIC_DATA(avx10_mask_vminmaxsd_round, INTR_TYPE_3OP_MASK_SAE,
615                        X86ISD::VMINMAXS, X86ISD::VMINMAXS_SAE),
616     X86_INTRINSIC_DATA(avx10_mask_vminmaxsh_round, INTR_TYPE_3OP_MASK_SAE,
617                        X86ISD::VMINMAXS, X86ISD::VMINMAXS_SAE),
618     X86_INTRINSIC_DATA(avx10_mask_vminmaxss_round, INTR_TYPE_3OP_MASK_SAE,
619                        X86ISD::VMINMAXS, X86ISD::VMINMAXS_SAE),
620     X86_INTRINSIC_DATA(avx10_vcomisbf16eq, COMI, X86ISD::COMI, ISD::SETEQ),
621     X86_INTRINSIC_DATA(avx10_vcomisbf16ge, COMI, X86ISD::COMI, ISD::SETGE),
622     X86_INTRINSIC_DATA(avx10_vcomisbf16gt, COMI, X86ISD::COMI, ISD::SETGT),
623     X86_INTRINSIC_DATA(avx10_vcomisbf16le, COMI, X86ISD::COMI, ISD::SETLE),
624     X86_INTRINSIC_DATA(avx10_vcomisbf16lt, COMI, X86ISD::COMI, ISD::SETLT),
625     X86_INTRINSIC_DATA(avx10_vcomisbf16neq, COMI, X86ISD::COMI, ISD::SETNE),
626     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8128, INTR_TYPE_2OP, X86ISD::VCVT2PH2BF8,
627                        0),
628     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8256, INTR_TYPE_2OP, X86ISD::VCVT2PH2BF8,
629                        0),
630     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8512, INTR_TYPE_2OP, X86ISD::VCVT2PH2BF8,
631                        0),
632     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8s128, INTR_TYPE_2OP,
633                        X86ISD::VCVT2PH2BF8S, 0),
634     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8s256, INTR_TYPE_2OP,
635                        X86ISD::VCVT2PH2BF8S, 0),
636     X86_INTRINSIC_DATA(avx10_vcvt2ph2bf8s512, INTR_TYPE_2OP,
637                        X86ISD::VCVT2PH2BF8S, 0),
638     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8128, INTR_TYPE_2OP, X86ISD::VCVT2PH2HF8,
639                        0),
640     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8256, INTR_TYPE_2OP, X86ISD::VCVT2PH2HF8,
641                        0),
642     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8512, INTR_TYPE_2OP, X86ISD::VCVT2PH2HF8,
643                        0),
644     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8s128, INTR_TYPE_2OP,
645                        X86ISD::VCVT2PH2HF8S, 0),
646     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8s256, INTR_TYPE_2OP,
647                        X86ISD::VCVT2PH2HF8S, 0),
648     X86_INTRINSIC_DATA(avx10_vcvt2ph2hf8s512, INTR_TYPE_2OP,
649                        X86ISD::VCVT2PH2HF8S, 0),
650     X86_INTRINSIC_DATA(avx10_vcvtbf162ibs128, INTR_TYPE_1OP, X86ISD::CVTP2IBS,
651                        0),
652     X86_INTRINSIC_DATA(avx10_vcvtbf162ibs256, INTR_TYPE_1OP, X86ISD::CVTP2IBS,
653                        0),
654     X86_INTRINSIC_DATA(avx10_vcvtbf162ibs512, INTR_TYPE_1OP, X86ISD::CVTP2IBS,
655                        0),
656     X86_INTRINSIC_DATA(avx10_vcvtbf162iubs128, INTR_TYPE_1OP, X86ISD::CVTP2IUBS,
657                        0),
658     X86_INTRINSIC_DATA(avx10_vcvtbf162iubs256, INTR_TYPE_1OP, X86ISD::CVTP2IUBS,
659                        0),
660     X86_INTRINSIC_DATA(avx10_vcvtbf162iubs512, INTR_TYPE_1OP, X86ISD::CVTP2IUBS,
661                        0),
662     X86_INTRINSIC_DATA(avx10_vcvttbf162ibs128, INTR_TYPE_1OP, X86ISD::CVTTP2IBS,
663                        0),
664     X86_INTRINSIC_DATA(avx10_vcvttbf162ibs256, INTR_TYPE_1OP, X86ISD::CVTTP2IBS,
665                        0),
666     X86_INTRINSIC_DATA(avx10_vcvttbf162ibs512, INTR_TYPE_1OP, X86ISD::CVTTP2IBS,
667                        0),
668     X86_INTRINSIC_DATA(avx10_vcvttbf162iubs128, INTR_TYPE_1OP,
669                        X86ISD::CVTTP2IUBS, 0),
670     X86_INTRINSIC_DATA(avx10_vcvttbf162iubs256, INTR_TYPE_1OP,
671                        X86ISD::CVTTP2IUBS, 0),
672     X86_INTRINSIC_DATA(avx10_vcvttbf162iubs512, INTR_TYPE_1OP,
673                        X86ISD::CVTTP2IUBS, 0),
674     X86_INTRINSIC_DATA(avx10_vcvttsd2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
675                        X86ISD::CVTTS2SIS_SAE),
676     X86_INTRINSIC_DATA(avx10_vcvttsd2sis64, INTR_TYPE_1OP_SAE,
677                        X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
678     X86_INTRINSIC_DATA(avx10_vcvttsd2usis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UIS,
679                        X86ISD::CVTTS2UIS_SAE),
680     X86_INTRINSIC_DATA(avx10_vcvttsd2usis64, INTR_TYPE_1OP_SAE,
681                        X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
682     X86_INTRINSIC_DATA(avx10_vcvttss2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
683                        X86ISD::CVTTS2SIS_SAE),
684     X86_INTRINSIC_DATA(avx10_vcvttss2sis64, INTR_TYPE_1OP_SAE,
685                        X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
686     X86_INTRINSIC_DATA(avx10_vcvttss2usis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UIS,
687                        X86ISD::CVTTS2UIS_SAE),
688     X86_INTRINSIC_DATA(avx10_vcvttss2usis64, INTR_TYPE_1OP_SAE,
689                        X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
690     X86_INTRINSIC_DATA(avx10_vdpphps_128, INTR_TYPE_3OP, X86ISD::DPFP16PS, 0),
691     X86_INTRINSIC_DATA(avx10_vdpphps_256, INTR_TYPE_3OP, X86ISD::DPFP16PS, 0),
692     X86_INTRINSIC_DATA(avx10_vdpphps_512, INTR_TYPE_3OP, X86ISD::DPFP16PS, 0),
693     X86_INTRINSIC_DATA(avx10_vminmaxbf16128, INTR_TYPE_3OP, X86ISD::VMINMAX, 0),
694     X86_INTRINSIC_DATA(avx10_vminmaxbf16256, INTR_TYPE_3OP, X86ISD::VMINMAX, 0),
695     X86_INTRINSIC_DATA(avx10_vminmaxbf16512, INTR_TYPE_3OP, X86ISD::VMINMAX, 0),
696     X86_INTRINSIC_DATA(avx10_vmpsadbw_512, INTR_TYPE_3OP_IMM8, X86ISD::MPSADBW,
697                        0),
698     X86_INTRINSIC_DATA(avx10_vpdpbssd_512, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0),
699     X86_INTRINSIC_DATA(avx10_vpdpbssds_512, INTR_TYPE_3OP, X86ISD::VPDPBSSDS,
700                        0),
701     X86_INTRINSIC_DATA(avx10_vpdpbsud_512, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0),
702     X86_INTRINSIC_DATA(avx10_vpdpbsuds_512, INTR_TYPE_3OP, X86ISD::VPDPBSUDS,
703                        0),
704     X86_INTRINSIC_DATA(avx10_vpdpbuud_512, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0),
705     X86_INTRINSIC_DATA(avx10_vpdpbuuds_512, INTR_TYPE_3OP, X86ISD::VPDPBUUDS,
706                        0),
707     X86_INTRINSIC_DATA(avx10_vpdpwsud_512, INTR_TYPE_3OP, X86ISD::VPDPWSUD, 0),
708     X86_INTRINSIC_DATA(avx10_vpdpwsuds_512, INTR_TYPE_3OP, X86ISD::VPDPWSUDS,
709                        0),
710     X86_INTRINSIC_DATA(avx10_vpdpwusd_512, INTR_TYPE_3OP, X86ISD::VPDPWUSD, 0),
711     X86_INTRINSIC_DATA(avx10_vpdpwusds_512, INTR_TYPE_3OP, X86ISD::VPDPWUSDS,
712                        0),
713     X86_INTRINSIC_DATA(avx10_vpdpwuud_512, INTR_TYPE_3OP, X86ISD::VPDPWUUD, 0),
714     X86_INTRINSIC_DATA(avx10_vpdpwuuds_512, INTR_TYPE_3OP, X86ISD::VPDPWUUDS,
715                        0),
716     X86_INTRINSIC_DATA(avx2_mpsadbw, INTR_TYPE_3OP_IMM8, X86ISD::MPSADBW, 0),
717     X86_INTRINSIC_DATA(avx2_packssdw, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
718     X86_INTRINSIC_DATA(avx2_packsswb, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
719     X86_INTRINSIC_DATA(avx2_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
720     X86_INTRINSIC_DATA(avx2_packuswb, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
721     X86_INTRINSIC_DATA(avx2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
722     X86_INTRINSIC_DATA(avx2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
723     X86_INTRINSIC_DATA(avx2_pblendvb, BLENDV, X86ISD::BLENDV, 0),
724     X86_INTRINSIC_DATA(avx2_permd, VPERM_2OP, X86ISD::VPERMV, 0),
725     X86_INTRINSIC_DATA(avx2_permps, VPERM_2OP, X86ISD::VPERMV, 0),
726     X86_INTRINSIC_DATA(avx2_phadd_d, INTR_TYPE_2OP, X86ISD::HADD, 0),
727     X86_INTRINSIC_DATA(avx2_phadd_w, INTR_TYPE_2OP, X86ISD::HADD, 0),
728     X86_INTRINSIC_DATA(avx2_phsub_d, INTR_TYPE_2OP, X86ISD::HSUB, 0),
729     X86_INTRINSIC_DATA(avx2_phsub_w, INTR_TYPE_2OP, X86ISD::HSUB, 0),
730     X86_INTRINSIC_DATA(avx2_pmadd_ub_sw, INTR_TYPE_2OP, X86ISD::VPMADDUBSW, 0),
731     X86_INTRINSIC_DATA(avx2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
732     X86_INTRINSIC_DATA(avx2_pmovmskb, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
733     X86_INTRINSIC_DATA(avx2_pmul_hr_sw, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
734     X86_INTRINSIC_DATA(avx2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0),
735     X86_INTRINSIC_DATA(avx2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0),
736     X86_INTRINSIC_DATA(avx2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
737     X86_INTRINSIC_DATA(avx2_pshuf_b, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
738     X86_INTRINSIC_DATA(avx2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0),
739     X86_INTRINSIC_DATA(avx2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0),
740     X86_INTRINSIC_DATA(avx2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0),
741     X86_INTRINSIC_DATA(avx2_pslli_d, VSHIFT, X86ISD::VSHLI, 0),
742     X86_INTRINSIC_DATA(avx2_pslli_q, VSHIFT, X86ISD::VSHLI, 0),
743     X86_INTRINSIC_DATA(avx2_pslli_w, VSHIFT, X86ISD::VSHLI, 0),
744     X86_INTRINSIC_DATA(avx2_psllv_d, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
745     X86_INTRINSIC_DATA(avx2_psllv_d_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
746     X86_INTRINSIC_DATA(avx2_psllv_q, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
747     X86_INTRINSIC_DATA(avx2_psllv_q_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
748     X86_INTRINSIC_DATA(avx2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0),
749     X86_INTRINSIC_DATA(avx2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0),
750     X86_INTRINSIC_DATA(avx2_psrai_d, VSHIFT, X86ISD::VSRAI, 0),
751     X86_INTRINSIC_DATA(avx2_psrai_w, VSHIFT, X86ISD::VSRAI, 0),
752     X86_INTRINSIC_DATA(avx2_psrav_d, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
753     X86_INTRINSIC_DATA(avx2_psrav_d_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
754     X86_INTRINSIC_DATA(avx2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0),
755     X86_INTRINSIC_DATA(avx2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0),
756     X86_INTRINSIC_DATA(avx2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0),
757     X86_INTRINSIC_DATA(avx2_psrli_d, VSHIFT, X86ISD::VSRLI, 0),
758     X86_INTRINSIC_DATA(avx2_psrli_q, VSHIFT, X86ISD::VSRLI, 0),
759     X86_INTRINSIC_DATA(avx2_psrli_w, VSHIFT, X86ISD::VSRLI, 0),
760     X86_INTRINSIC_DATA(avx2_psrlv_d, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
761     X86_INTRINSIC_DATA(avx2_psrlv_d_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
762     X86_INTRINSIC_DATA(avx2_psrlv_q, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
763     X86_INTRINSIC_DATA(avx2_psrlv_q_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
764     X86_INTRINSIC_DATA(avx2_vpdpbssd_128, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0),
765     X86_INTRINSIC_DATA(avx2_vpdpbssd_256, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0),
766     X86_INTRINSIC_DATA(avx2_vpdpbssds_128, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0),
767     X86_INTRINSIC_DATA(avx2_vpdpbssds_256, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0),
768     X86_INTRINSIC_DATA(avx2_vpdpbsud_128, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0),
769     X86_INTRINSIC_DATA(avx2_vpdpbsud_256, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0),
770     X86_INTRINSIC_DATA(avx2_vpdpbsuds_128, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0),
771     X86_INTRINSIC_DATA(avx2_vpdpbsuds_256, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0),
772     X86_INTRINSIC_DATA(avx2_vpdpbuud_128, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0),
773     X86_INTRINSIC_DATA(avx2_vpdpbuud_256, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0),
774     X86_INTRINSIC_DATA(avx2_vpdpbuuds_128, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0),
775     X86_INTRINSIC_DATA(avx2_vpdpbuuds_256, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0),
776     X86_INTRINSIC_DATA(avx2_vpdpwsud_128, INTR_TYPE_3OP, X86ISD::VPDPWSUD, 0),
777     X86_INTRINSIC_DATA(avx2_vpdpwsud_256, INTR_TYPE_3OP, X86ISD::VPDPWSUD, 0),
778     X86_INTRINSIC_DATA(avx2_vpdpwsuds_128, INTR_TYPE_3OP, X86ISD::VPDPWSUDS, 0),
779     X86_INTRINSIC_DATA(avx2_vpdpwsuds_256, INTR_TYPE_3OP, X86ISD::VPDPWSUDS, 0),
780     X86_INTRINSIC_DATA(avx2_vpdpwusd_128, INTR_TYPE_3OP, X86ISD::VPDPWUSD, 0),
781     X86_INTRINSIC_DATA(avx2_vpdpwusd_256, INTR_TYPE_3OP, X86ISD::VPDPWUSD, 0),
782     X86_INTRINSIC_DATA(avx2_vpdpwusds_128, INTR_TYPE_3OP, X86ISD::VPDPWUSDS, 0),
783     X86_INTRINSIC_DATA(avx2_vpdpwusds_256, INTR_TYPE_3OP, X86ISD::VPDPWUSDS, 0),
784     X86_INTRINSIC_DATA(avx2_vpdpwuud_128, INTR_TYPE_3OP, X86ISD::VPDPWUUD, 0),
785     X86_INTRINSIC_DATA(avx2_vpdpwuud_256, INTR_TYPE_3OP, X86ISD::VPDPWUUD, 0),
786     X86_INTRINSIC_DATA(avx2_vpdpwuuds_128, INTR_TYPE_3OP, X86ISD::VPDPWUUDS, 0),
787     X86_INTRINSIC_DATA(avx2_vpdpwuuds_256, INTR_TYPE_3OP, X86ISD::VPDPWUUDS, 0),
788     X86_INTRINSIC_DATA(avx512_add_pd_512, INTR_TYPE_2OP, ISD::FADD,
789                        X86ISD::FADD_RND),
790     X86_INTRINSIC_DATA(avx512_add_ps_512, INTR_TYPE_2OP, ISD::FADD,
791                        X86ISD::FADD_RND),
792     X86_INTRINSIC_DATA(avx512_conflict_d_128, INTR_TYPE_1OP, X86ISD::CONFLICT,
793                        0),
794     X86_INTRINSIC_DATA(avx512_conflict_d_256, INTR_TYPE_1OP, X86ISD::CONFLICT,
795                        0),
796     X86_INTRINSIC_DATA(avx512_conflict_d_512, INTR_TYPE_1OP, X86ISD::CONFLICT,
797                        0),
798     X86_INTRINSIC_DATA(avx512_conflict_q_128, INTR_TYPE_1OP, X86ISD::CONFLICT,
799                        0),
800     X86_INTRINSIC_DATA(avx512_conflict_q_256, INTR_TYPE_1OP, X86ISD::CONFLICT,
801                        0),
802     X86_INTRINSIC_DATA(avx512_conflict_q_512, INTR_TYPE_1OP, X86ISD::CONFLICT,
803                        0),
804     X86_INTRINSIC_DATA(avx512_cvtsi2sd64, INTR_TYPE_2OP,
805                        X86ISD::SCALAR_SINT_TO_FP,
806                        X86ISD::SCALAR_SINT_TO_FP_RND),
807     X86_INTRINSIC_DATA(avx512_cvtsi2ss32, INTR_TYPE_2OP,
808                        X86ISD::SCALAR_SINT_TO_FP,
809                        X86ISD::SCALAR_SINT_TO_FP_RND),
810     X86_INTRINSIC_DATA(avx512_cvtsi2ss64, INTR_TYPE_2OP,
811                        X86ISD::SCALAR_SINT_TO_FP,
812                        X86ISD::SCALAR_SINT_TO_FP_RND),
813     X86_INTRINSIC_DATA(avx512_cvttsd2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
814                        X86ISD::CVTTS2SI_SAE),
815     X86_INTRINSIC_DATA(avx512_cvttsd2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
816                        X86ISD::CVTTS2SI_SAE),
817     X86_INTRINSIC_DATA(avx512_cvttsd2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
818                        X86ISD::CVTTS2UI_SAE),
819     X86_INTRINSIC_DATA(avx512_cvttsd2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
820                        X86ISD::CVTTS2UI_SAE),
821     X86_INTRINSIC_DATA(avx512_cvttss2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
822                        X86ISD::CVTTS2SI_SAE),
823     X86_INTRINSIC_DATA(avx512_cvttss2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
824                        X86ISD::CVTTS2SI_SAE),
825     X86_INTRINSIC_DATA(avx512_cvttss2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
826                        X86ISD::CVTTS2UI_SAE),
827     X86_INTRINSIC_DATA(avx512_cvttss2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
828                        X86ISD::CVTTS2UI_SAE),
829     X86_INTRINSIC_DATA(avx512_cvtusi2ss, INTR_TYPE_2OP,
830                        X86ISD::SCALAR_UINT_TO_FP,
831                        X86ISD::SCALAR_UINT_TO_FP_RND),
832     X86_INTRINSIC_DATA(avx512_cvtusi642sd, INTR_TYPE_2OP,
833                        X86ISD::SCALAR_UINT_TO_FP,
834                        X86ISD::SCALAR_UINT_TO_FP_RND),
835     X86_INTRINSIC_DATA(avx512_cvtusi642ss, INTR_TYPE_2OP,
836                        X86ISD::SCALAR_UINT_TO_FP,
837                        X86ISD::SCALAR_UINT_TO_FP_RND),
838     X86_INTRINSIC_DATA(avx512_dbpsadbw_128, INTR_TYPE_3OP_IMM8,
839                        X86ISD::DBPSADBW, 0),
840     X86_INTRINSIC_DATA(avx512_dbpsadbw_256, INTR_TYPE_3OP_IMM8,
841                        X86ISD::DBPSADBW, 0),
842     X86_INTRINSIC_DATA(avx512_dbpsadbw_512, INTR_TYPE_3OP_IMM8,
843                        X86ISD::DBPSADBW, 0),
844     X86_INTRINSIC_DATA(avx512_div_pd_512, INTR_TYPE_2OP, ISD::FDIV,
845                        X86ISD::FDIV_RND),
846     X86_INTRINSIC_DATA(avx512_div_ps_512, INTR_TYPE_2OP, ISD::FDIV,
847                        X86ISD::FDIV_RND),
848     X86_INTRINSIC_DATA(avx512_fpclass_pd_128, INTR_TYPE_2OP, X86ISD::VFPCLASS,
849                        0),
850     X86_INTRINSIC_DATA(avx512_fpclass_pd_256, INTR_TYPE_2OP, X86ISD::VFPCLASS,
851                        0),
852     X86_INTRINSIC_DATA(avx512_fpclass_pd_512, INTR_TYPE_2OP, X86ISD::VFPCLASS,
853                        0),
854     X86_INTRINSIC_DATA(avx512_fpclass_ps_128, INTR_TYPE_2OP, X86ISD::VFPCLASS,
855                        0),
856     X86_INTRINSIC_DATA(avx512_fpclass_ps_256, INTR_TYPE_2OP, X86ISD::VFPCLASS,
857                        0),
858     X86_INTRINSIC_DATA(avx512_fpclass_ps_512, INTR_TYPE_2OP, X86ISD::VFPCLASS,
859                        0),
860     X86_INTRINSIC_DATA(avx512_kadd_b, INTR_TYPE_2OP, X86ISD::KADD, 0),
861     X86_INTRINSIC_DATA(avx512_kadd_d, INTR_TYPE_2OP, X86ISD::KADD, 0),
862     X86_INTRINSIC_DATA(avx512_kadd_q, INTR_TYPE_2OP, X86ISD::KADD, 0),
863     X86_INTRINSIC_DATA(avx512_kadd_w, INTR_TYPE_2OP, X86ISD::KADD, 0),
864     X86_INTRINSIC_DATA(avx512_mask_add_sd_round, INTR_TYPE_SCALAR_MASK,
865                        X86ISD::FADDS, X86ISD::FADDS_RND),
866     X86_INTRINSIC_DATA(avx512_mask_add_ss_round, INTR_TYPE_SCALAR_MASK,
867                        X86ISD::FADDS, X86ISD::FADDS_RND),
868     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_128, CMP_MASK_CC, X86ISD::CMPMM, 0),
869     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_256, CMP_MASK_CC, X86ISD::CMPMM, 0),
870     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_512, CMP_MASK_CC, X86ISD::CMPMM,
871                        X86ISD::CMPMM_SAE),
872     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_128, CMP_MASK_CC, X86ISD::CMPMM, 0),
873     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_256, CMP_MASK_CC, X86ISD::CMPMM, 0),
874     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_512, CMP_MASK_CC, X86ISD::CMPMM,
875                        X86ISD::CMPMM_SAE),
876     X86_INTRINSIC_DATA(avx512_mask_cmp_sd, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM,
877                        X86ISD::FSETCCM_SAE),
878     X86_INTRINSIC_DATA(avx512_mask_cmp_ss, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM,
879                        X86ISD::FSETCCM_SAE),
880 
881     X86_INTRINSIC_DATA(avx512_mask_compress, COMPRESS_EXPAND_IN_REG,
882                        X86ISD::COMPRESS, 0),
883     X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_128, CVTPD2DQ_MASK, X86ISD::CVTP2SI,
884                        X86ISD::MCVTP2SI),
885     X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_512, INTR_TYPE_1OP_MASK,
886                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
887     X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps, CVTPD2PS_MASK, X86ISD::VFPROUND,
888                        X86ISD::VMFPROUND),
889     X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps_512, INTR_TYPE_1OP_MASK,
890                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
891     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_128, INTR_TYPE_1OP_MASK,
892                        X86ISD::CVTP2SI, 0),
893     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_256, INTR_TYPE_1OP_MASK,
894                        X86ISD::CVTP2SI, 0),
895     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_512, INTR_TYPE_1OP_MASK,
896                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
897     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_128, CVTPD2DQ_MASK,
898                        X86ISD::CVTP2UI, X86ISD::MCVTP2UI),
899     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_256, INTR_TYPE_1OP_MASK,
900                        X86ISD::CVTP2UI, 0),
901     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_512, INTR_TYPE_1OP_MASK,
902                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
903     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_128, INTR_TYPE_1OP_MASK,
904                        X86ISD::CVTP2UI, 0),
905     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_256, INTR_TYPE_1OP_MASK,
906                        X86ISD::CVTP2UI, 0),
907     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_512, INTR_TYPE_1OP_MASK,
908                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
909     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_128, INTR_TYPE_1OP_MASK,
910                        X86ISD::CVTP2SI, 0),
911     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_256, INTR_TYPE_1OP_MASK,
912                        X86ISD::CVTP2SI, 0),
913     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_512, INTR_TYPE_1OP_MASK,
914                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
915     X86_INTRINSIC_DATA(avx512_mask_cvtps2pd_512, INTR_TYPE_1OP_MASK_SAE,
916                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
917     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_128, INTR_TYPE_1OP_MASK,
918                        X86ISD::CVTP2SI, 0),
919     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_256, INTR_TYPE_1OP_MASK,
920                        X86ISD::CVTP2SI, 0),
921     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_512, INTR_TYPE_1OP_MASK,
922                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
923     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_128, INTR_TYPE_1OP_MASK,
924                        X86ISD::CVTP2UI, 0),
925     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_256, INTR_TYPE_1OP_MASK,
926                        X86ISD::CVTP2UI, 0),
927     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_512, INTR_TYPE_1OP_MASK,
928                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
929     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_128, INTR_TYPE_1OP_MASK,
930                        X86ISD::CVTP2UI, 0),
931     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_256, INTR_TYPE_1OP_MASK,
932                        X86ISD::CVTP2UI, 0),
933     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_512, INTR_TYPE_1OP_MASK,
934                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
935     X86_INTRINSIC_DATA(avx512_mask_cvtqq2ps_128, CVTQQ2PS_MASK, X86ISD::CVTSI2P,
936                        X86ISD::MCVTSI2P),
937     X86_INTRINSIC_DATA(avx512_mask_cvtsd2ss_round, INTR_TYPE_SCALAR_MASK_RND,
938                        X86ISD::VFPROUNDS, X86ISD::VFPROUNDS_RND),
939     X86_INTRINSIC_DATA(avx512_mask_cvtss2sd_round, INTR_TYPE_SCALAR_MASK_SAE,
940                        X86ISD::VFPEXTS, X86ISD::VFPEXTS_SAE),
941     X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_128, CVTPD2DQ_MASK,
942                        X86ISD::CVTTP2SI, X86ISD::MCVTTP2SI),
943     X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_512, INTR_TYPE_1OP_MASK_SAE,
944                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
945     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_128, INTR_TYPE_1OP_MASK,
946                        X86ISD::CVTTP2SI, 0),
947     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_256, INTR_TYPE_1OP_MASK,
948                        X86ISD::CVTTP2SI, 0),
949     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_512, INTR_TYPE_1OP_MASK_SAE,
950                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
951     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_128, CVTPD2DQ_MASK,
952                        X86ISD::CVTTP2UI, X86ISD::MCVTTP2UI),
953     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_256, INTR_TYPE_1OP_MASK,
954                        X86ISD::CVTTP2UI, 0),
955     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_512, INTR_TYPE_1OP_MASK_SAE,
956                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
957     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_128, INTR_TYPE_1OP_MASK,
958                        X86ISD::CVTTP2UI, 0),
959     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_256, INTR_TYPE_1OP_MASK,
960                        X86ISD::CVTTP2UI, 0),
961     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_512, INTR_TYPE_1OP_MASK_SAE,
962                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
963     X86_INTRINSIC_DATA(avx512_mask_cvttps2dq_512, INTR_TYPE_1OP_MASK_SAE,
964                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
965     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_128, INTR_TYPE_1OP_MASK,
966                        X86ISD::CVTTP2SI, 0),
967     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_256, INTR_TYPE_1OP_MASK,
968                        X86ISD::CVTTP2SI, 0),
969     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_512, INTR_TYPE_1OP_MASK_SAE,
970                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
971     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_128, INTR_TYPE_1OP_MASK,
972                        X86ISD::CVTTP2UI, 0),
973     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_256, INTR_TYPE_1OP_MASK,
974                        X86ISD::CVTTP2UI, 0),
975     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_512, INTR_TYPE_1OP_MASK_SAE,
976                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
977     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_128, INTR_TYPE_1OP_MASK,
978                        X86ISD::CVTTP2UI, 0),
979     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_256, INTR_TYPE_1OP_MASK,
980                        X86ISD::CVTTP2UI, 0),
981     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_512, INTR_TYPE_1OP_MASK_SAE,
982                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
983     X86_INTRINSIC_DATA(avx512_mask_cvtuqq2ps_128, CVTQQ2PS_MASK,
984                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
985     X86_INTRINSIC_DATA(avx512_mask_div_sd_round, INTR_TYPE_SCALAR_MASK,
986                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
987     X86_INTRINSIC_DATA(avx512_mask_div_ss_round, INTR_TYPE_SCALAR_MASK,
988                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
989     X86_INTRINSIC_DATA(avx512_mask_expand, COMPRESS_EXPAND_IN_REG,
990                        X86ISD::EXPAND, 0),
991     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_128, FIXUPIMM, X86ISD::VFIXUPIMM,
992                        0),
993     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_256, FIXUPIMM, X86ISD::VFIXUPIMM,
994                        0),
995     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_512, FIXUPIMM, X86ISD::VFIXUPIMM,
996                        X86ISD::VFIXUPIMM_SAE),
997     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_128, FIXUPIMM, X86ISD::VFIXUPIMM,
998                        0),
999     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_256, FIXUPIMM, X86ISD::VFIXUPIMM,
1000                        0),
1001     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_512, FIXUPIMM, X86ISD::VFIXUPIMM,
1002                        X86ISD::VFIXUPIMM_SAE),
1003     X86_INTRINSIC_DATA(avx512_mask_fixupimm_sd, FIXUPIMM, X86ISD::VFIXUPIMMS,
1004                        X86ISD::VFIXUPIMMS_SAE),
1005     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ss, FIXUPIMM, X86ISD::VFIXUPIMMS,
1006                        X86ISD::VFIXUPIMMS_SAE),
1007     X86_INTRINSIC_DATA(avx512_mask_fpclass_sd, FPCLASSS, X86ISD::VFPCLASSS, 0),
1008     X86_INTRINSIC_DATA(avx512_mask_fpclass_ss, FPCLASSS, X86ISD::VFPCLASSS, 0),
1009     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_128, INTR_TYPE_1OP_MASK,
1010                        X86ISD::FGETEXP, 0),
1011     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_256, INTR_TYPE_1OP_MASK,
1012                        X86ISD::FGETEXP, 0),
1013     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_512, INTR_TYPE_1OP_MASK_SAE,
1014                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
1015     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_128, INTR_TYPE_1OP_MASK,
1016                        X86ISD::FGETEXP, 0),
1017     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_256, INTR_TYPE_1OP_MASK,
1018                        X86ISD::FGETEXP, 0),
1019     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_512, INTR_TYPE_1OP_MASK_SAE,
1020                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
1021     X86_INTRINSIC_DATA(avx512_mask_getexp_sd, INTR_TYPE_SCALAR_MASK_SAE,
1022                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
1023     X86_INTRINSIC_DATA(avx512_mask_getexp_ss, INTR_TYPE_SCALAR_MASK_SAE,
1024                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
1025     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_128, INTR_TYPE_2OP_MASK_SAE,
1026                        X86ISD::VGETMANT, 0),
1027     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_256, INTR_TYPE_2OP_MASK_SAE,
1028                        X86ISD::VGETMANT, 0),
1029     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_512, INTR_TYPE_2OP_MASK_SAE,
1030                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
1031     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_128, INTR_TYPE_2OP_MASK_SAE,
1032                        X86ISD::VGETMANT, 0),
1033     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_256, INTR_TYPE_2OP_MASK_SAE,
1034                        X86ISD::VGETMANT, 0),
1035     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_512, INTR_TYPE_2OP_MASK_SAE,
1036                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
1037     X86_INTRINSIC_DATA(avx512_mask_getmant_sd, INTR_TYPE_3OP_SCALAR_MASK_SAE,
1038                        X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE),
1039     X86_INTRINSIC_DATA(avx512_mask_getmant_ss, INTR_TYPE_3OP_SCALAR_MASK_SAE,
1040                        X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE),
1041     X86_INTRINSIC_DATA(avx512_mask_max_sd_round, INTR_TYPE_SCALAR_MASK_SAE,
1042                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
1043     X86_INTRINSIC_DATA(avx512_mask_max_ss_round, INTR_TYPE_SCALAR_MASK_SAE,
1044                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
1045     X86_INTRINSIC_DATA(avx512_mask_min_sd_round, INTR_TYPE_SCALAR_MASK_SAE,
1046                        X86ISD::FMINS, X86ISD::FMINS_SAE),
1047     X86_INTRINSIC_DATA(avx512_mask_min_ss_round, INTR_TYPE_SCALAR_MASK_SAE,
1048                        X86ISD::FMINS, X86ISD::FMINS_SAE),
1049     X86_INTRINSIC_DATA(avx512_mask_mul_sd_round, INTR_TYPE_SCALAR_MASK,
1050                        X86ISD::FMULS, X86ISD::FMULS_RND),
1051     X86_INTRINSIC_DATA(avx512_mask_mul_ss_round, INTR_TYPE_SCALAR_MASK,
1052                        X86ISD::FMULS, X86ISD::FMULS_RND),
1053     X86_INTRINSIC_DATA(avx512_mask_pmov_db_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1054                        X86ISD::VMTRUNC),
1055     X86_INTRINSIC_DATA(avx512_mask_pmov_db_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1056                        X86ISD::VMTRUNC),
1057     X86_INTRINSIC_DATA(avx512_mask_pmov_db_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
1058                        X86ISD::VMTRUNC),
1059     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1060                        X86ISD::VMTRUNC),
1061     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_256, TRUNCATE_TO_REG, ISD::TRUNCATE,
1062                        X86ISD::VMTRUNC),
1063     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
1064                        X86ISD::VMTRUNC),
1065     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1066                        X86ISD::VMTRUNC),
1067     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1068                        X86ISD::VMTRUNC),
1069     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_512, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1070                        X86ISD::VMTRUNC),
1071     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1072                        X86ISD::VMTRUNC),
1073     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1074                        X86ISD::VMTRUNC),
1075     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1076                        X86ISD::VMTRUNC),
1077     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
1078                        X86ISD::VMTRUNC),
1079     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
1080                        X86ISD::VMTRUNC),
1081     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_128, TRUNCATE_TO_REG,
1082                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1083     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_256, TRUNCATE_TO_REG,
1084                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1085     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_512, TRUNCATE_TO_REG,
1086                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1087     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_128, TRUNCATE_TO_REG,
1088                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1089     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_256, TRUNCATE_TO_REG,
1090                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1091     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_512, TRUNCATE_TO_REG,
1092                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1093     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_128, TRUNCATE_TO_REG,
1094                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1095     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_256, TRUNCATE_TO_REG,
1096                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1097     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_512, TRUNCATE_TO_REG,
1098                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1099     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_128, TRUNCATE_TO_REG,
1100                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1101     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_256, INTR_TYPE_1OP_MASK,
1102                        X86ISD::VTRUNCS, 0),
1103     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_512, INTR_TYPE_1OP_MASK,
1104                        X86ISD::VTRUNCS, 0),
1105     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_128, TRUNCATE_TO_REG,
1106                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1107     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_256, TRUNCATE_TO_REG,
1108                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1109     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_512, TRUNCATE_TO_REG,
1110                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1111     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_128, TRUNCATE_TO_REG,
1112                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
1113     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_256, INTR_TYPE_1OP_MASK,
1114                        X86ISD::VTRUNCS, 0),
1115     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_512, INTR_TYPE_1OP_MASK,
1116                        X86ISD::VTRUNCS, 0),
1117     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_128, TRUNCATE_TO_REG,
1118                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1119     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_256, TRUNCATE_TO_REG,
1120                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1121     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_512, TRUNCATE_TO_REG,
1122                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1123     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_128, TRUNCATE_TO_REG,
1124                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1125     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_256, TRUNCATE_TO_REG,
1126                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1127     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_512, TRUNCATE_TO_REG,
1128                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1129     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_128, TRUNCATE_TO_REG,
1130                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1131     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_256, TRUNCATE_TO_REG,
1132                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1133     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_512, TRUNCATE_TO_REG,
1134                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1135     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_128, TRUNCATE_TO_REG,
1136                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1137     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_256, INTR_TYPE_1OP_MASK,
1138                        X86ISD::VTRUNCUS, 0),
1139     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_512, INTR_TYPE_1OP_MASK,
1140                        X86ISD::VTRUNCUS, 0),
1141     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_128, TRUNCATE_TO_REG,
1142                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1143     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_256, TRUNCATE_TO_REG,
1144                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1145     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_512, TRUNCATE_TO_REG,
1146                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1147     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_128, TRUNCATE_TO_REG,
1148                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
1149     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_256, INTR_TYPE_1OP_MASK,
1150                        X86ISD::VTRUNCUS, 0),
1151     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_512, INTR_TYPE_1OP_MASK,
1152                        X86ISD::VTRUNCUS, 0),
1153     X86_INTRINSIC_DATA(avx512_mask_range_pd_128, INTR_TYPE_3OP_MASK_SAE,
1154                        X86ISD::VRANGE, 0),
1155     X86_INTRINSIC_DATA(avx512_mask_range_pd_256, INTR_TYPE_3OP_MASK_SAE,
1156                        X86ISD::VRANGE, 0),
1157     X86_INTRINSIC_DATA(avx512_mask_range_pd_512, INTR_TYPE_3OP_MASK_SAE,
1158                        X86ISD::VRANGE, X86ISD::VRANGE_SAE),
1159     X86_INTRINSIC_DATA(avx512_mask_range_ps_128, INTR_TYPE_3OP_MASK_SAE,
1160                        X86ISD::VRANGE, 0),
1161     X86_INTRINSIC_DATA(avx512_mask_range_ps_256, INTR_TYPE_3OP_MASK_SAE,
1162                        X86ISD::VRANGE, 0),
1163     X86_INTRINSIC_DATA(avx512_mask_range_ps_512, INTR_TYPE_3OP_MASK_SAE,
1164                        X86ISD::VRANGE, X86ISD::VRANGE_SAE),
1165     X86_INTRINSIC_DATA(avx512_mask_range_sd, INTR_TYPE_SCALAR_MASK,
1166                        X86ISD::VRANGES, X86ISD::VRANGES_SAE),
1167     X86_INTRINSIC_DATA(avx512_mask_range_ss, INTR_TYPE_SCALAR_MASK,
1168                        X86ISD::VRANGES, X86ISD::VRANGES_SAE),
1169     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_128, INTR_TYPE_2OP_MASK_SAE,
1170                        X86ISD::VREDUCE, 0),
1171     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_256, INTR_TYPE_2OP_MASK_SAE,
1172                        X86ISD::VREDUCE, 0),
1173     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_512, INTR_TYPE_2OP_MASK_SAE,
1174                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
1175     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_128, INTR_TYPE_2OP_MASK_SAE,
1176                        X86ISD::VREDUCE, 0),
1177     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_256, INTR_TYPE_2OP_MASK_SAE,
1178                        X86ISD::VREDUCE, 0),
1179     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_512, INTR_TYPE_2OP_MASK_SAE,
1180                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
1181     X86_INTRINSIC_DATA(avx512_mask_reduce_sd, INTR_TYPE_SCALAR_MASK,
1182                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
1183     X86_INTRINSIC_DATA(avx512_mask_reduce_ss, INTR_TYPE_SCALAR_MASK,
1184                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
1185     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_128, INTR_TYPE_2OP_MASK_SAE,
1186                        X86ISD::VRNDSCALE, 0),
1187     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_256, INTR_TYPE_2OP_MASK_SAE,
1188                        X86ISD::VRNDSCALE, 0),
1189     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_512, INTR_TYPE_2OP_MASK_SAE,
1190                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
1191     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_128, INTR_TYPE_2OP_MASK_SAE,
1192                        X86ISD::VRNDSCALE, 0),
1193     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_256, INTR_TYPE_2OP_MASK_SAE,
1194                        X86ISD::VRNDSCALE, 0),
1195     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_512, INTR_TYPE_2OP_MASK_SAE,
1196                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
1197     X86_INTRINSIC_DATA(avx512_mask_rndscale_sd, INTR_TYPE_SCALAR_MASK,
1198                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
1199     X86_INTRINSIC_DATA(avx512_mask_rndscale_ss, INTR_TYPE_SCALAR_MASK,
1200                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
1201     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_128, INTR_TYPE_2OP_MASK,
1202                        X86ISD::SCALEF, 0),
1203     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_256, INTR_TYPE_2OP_MASK,
1204                        X86ISD::SCALEF, 0),
1205     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_512, INTR_TYPE_2OP_MASK,
1206                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
1207     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_128, INTR_TYPE_2OP_MASK,
1208                        X86ISD::SCALEF, 0),
1209     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_256, INTR_TYPE_2OP_MASK,
1210                        X86ISD::SCALEF, 0),
1211     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_512, INTR_TYPE_2OP_MASK,
1212                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
1213     X86_INTRINSIC_DATA(avx512_mask_scalef_sd, INTR_TYPE_SCALAR_MASK,
1214                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
1215     X86_INTRINSIC_DATA(avx512_mask_scalef_ss, INTR_TYPE_SCALAR_MASK,
1216                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
1217     X86_INTRINSIC_DATA(avx512_mask_sqrt_sd, INTR_TYPE_SCALAR_MASK,
1218                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
1219     X86_INTRINSIC_DATA(avx512_mask_sqrt_ss, INTR_TYPE_SCALAR_MASK,
1220                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
1221     X86_INTRINSIC_DATA(avx512_mask_sub_sd_round, INTR_TYPE_SCALAR_MASK,
1222                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
1223     X86_INTRINSIC_DATA(avx512_mask_sub_ss_round, INTR_TYPE_SCALAR_MASK,
1224                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
1225     X86_INTRINSIC_DATA(avx512_mask_vcvtph2ps_512, INTR_TYPE_1OP_MASK_SAE,
1226                        X86ISD::CVTPH2PS, X86ISD::CVTPH2PS_SAE),
1227     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_128, CVTPS2PH_MASK,
1228                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
1229     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_256, CVTPS2PH_MASK,
1230                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
1231     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_512, CVTPS2PH_MASK,
1232                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
1233 
1234     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_128, FIXUPIMM_MASKZ,
1235                        X86ISD::VFIXUPIMM, 0),
1236     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_256, FIXUPIMM_MASKZ,
1237                        X86ISD::VFIXUPIMM, 0),
1238     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_512, FIXUPIMM_MASKZ,
1239                        X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE),
1240     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_128, FIXUPIMM_MASKZ,
1241                        X86ISD::VFIXUPIMM, 0),
1242     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_256, FIXUPIMM_MASKZ,
1243                        X86ISD::VFIXUPIMM, 0),
1244     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_512, FIXUPIMM_MASKZ,
1245                        X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE),
1246     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_sd, FIXUPIMM_MASKZ,
1247                        X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE),
1248     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ss, FIXUPIMM_MASKZ,
1249                        X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE),
1250 
1251     X86_INTRINSIC_DATA(avx512_max_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
1252                        X86ISD::FMAX_SAE),
1253     X86_INTRINSIC_DATA(avx512_max_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
1254                        X86ISD::FMAX_SAE),
1255     X86_INTRINSIC_DATA(avx512_min_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
1256                        X86ISD::FMIN_SAE),
1257     X86_INTRINSIC_DATA(avx512_min_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
1258                        X86ISD::FMIN_SAE),
1259     X86_INTRINSIC_DATA(avx512_mul_pd_512, INTR_TYPE_2OP, ISD::FMUL,
1260                        X86ISD::FMUL_RND),
1261     X86_INTRINSIC_DATA(avx512_mul_ps_512, INTR_TYPE_2OP, ISD::FMUL,
1262                        X86ISD::FMUL_RND),
1263     X86_INTRINSIC_DATA(avx512_packssdw_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1264     X86_INTRINSIC_DATA(avx512_packsswb_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1265     X86_INTRINSIC_DATA(avx512_packusdw_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
1266     X86_INTRINSIC_DATA(avx512_packuswb_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
1267     X86_INTRINSIC_DATA(avx512_pavg_b_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1268     X86_INTRINSIC_DATA(avx512_pavg_w_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1269     X86_INTRINSIC_DATA(avx512_permvar_df_256, VPERM_2OP, X86ISD::VPERMV, 0),
1270     X86_INTRINSIC_DATA(avx512_permvar_df_512, VPERM_2OP, X86ISD::VPERMV, 0),
1271     X86_INTRINSIC_DATA(avx512_permvar_di_256, VPERM_2OP, X86ISD::VPERMV, 0),
1272     X86_INTRINSIC_DATA(avx512_permvar_di_512, VPERM_2OP, X86ISD::VPERMV, 0),
1273     X86_INTRINSIC_DATA(avx512_permvar_hi_128, VPERM_2OP, X86ISD::VPERMV, 0),
1274     X86_INTRINSIC_DATA(avx512_permvar_hi_256, VPERM_2OP, X86ISD::VPERMV, 0),
1275     X86_INTRINSIC_DATA(avx512_permvar_hi_512, VPERM_2OP, X86ISD::VPERMV, 0),
1276     X86_INTRINSIC_DATA(avx512_permvar_qi_128, VPERM_2OP, X86ISD::VPERMV, 0),
1277     X86_INTRINSIC_DATA(avx512_permvar_qi_256, VPERM_2OP, X86ISD::VPERMV, 0),
1278     X86_INTRINSIC_DATA(avx512_permvar_qi_512, VPERM_2OP, X86ISD::VPERMV, 0),
1279     X86_INTRINSIC_DATA(avx512_permvar_sf_512, VPERM_2OP, X86ISD::VPERMV, 0),
1280     X86_INTRINSIC_DATA(avx512_permvar_si_512, VPERM_2OP, X86ISD::VPERMV, 0),
1281     X86_INTRINSIC_DATA(avx512_pmaddubs_w_512, INTR_TYPE_2OP, X86ISD::VPMADDUBSW,
1282                        0),
1283     X86_INTRINSIC_DATA(avx512_pmaddw_d_512, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
1284     X86_INTRINSIC_DATA(avx512_pmul_hr_sw_512, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
1285     X86_INTRINSIC_DATA(avx512_pmulh_w_512, INTR_TYPE_2OP, ISD::MULHS, 0),
1286     X86_INTRINSIC_DATA(avx512_pmulhu_w_512, INTR_TYPE_2OP, ISD::MULHU, 0),
1287     X86_INTRINSIC_DATA(avx512_pmultishift_qb_128, INTR_TYPE_2OP,
1288                        X86ISD::MULTISHIFT, 0),
1289     X86_INTRINSIC_DATA(avx512_pmultishift_qb_256, INTR_TYPE_2OP,
1290                        X86ISD::MULTISHIFT, 0),
1291     X86_INTRINSIC_DATA(avx512_pmultishift_qb_512, INTR_TYPE_2OP,
1292                        X86ISD::MULTISHIFT, 0),
1293     X86_INTRINSIC_DATA(avx512_psad_bw_512, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
1294     X86_INTRINSIC_DATA(avx512_pshuf_b_512, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
1295     X86_INTRINSIC_DATA(avx512_psll_d_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1296     X86_INTRINSIC_DATA(avx512_psll_q_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1297     X86_INTRINSIC_DATA(avx512_psll_w_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1298     X86_INTRINSIC_DATA(avx512_pslli_d_512, VSHIFT, X86ISD::VSHLI, 0),
1299     X86_INTRINSIC_DATA(avx512_pslli_q_512, VSHIFT, X86ISD::VSHLI, 0),
1300     X86_INTRINSIC_DATA(avx512_pslli_w_512, VSHIFT, X86ISD::VSHLI, 0),
1301     X86_INTRINSIC_DATA(avx512_psllv_d_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
1302     X86_INTRINSIC_DATA(avx512_psllv_q_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
1303     X86_INTRINSIC_DATA(avx512_psllv_w_128, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
1304     X86_INTRINSIC_DATA(avx512_psllv_w_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
1305     X86_INTRINSIC_DATA(avx512_psllv_w_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
1306     X86_INTRINSIC_DATA(avx512_psra_d_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1307     X86_INTRINSIC_DATA(avx512_psra_q_128, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1308     X86_INTRINSIC_DATA(avx512_psra_q_256, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1309     X86_INTRINSIC_DATA(avx512_psra_q_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1310     X86_INTRINSIC_DATA(avx512_psra_w_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1311     X86_INTRINSIC_DATA(avx512_psrai_d_512, VSHIFT, X86ISD::VSRAI, 0),
1312     X86_INTRINSIC_DATA(avx512_psrai_q_128, VSHIFT, X86ISD::VSRAI, 0),
1313     X86_INTRINSIC_DATA(avx512_psrai_q_256, VSHIFT, X86ISD::VSRAI, 0),
1314     X86_INTRINSIC_DATA(avx512_psrai_q_512, VSHIFT, X86ISD::VSRAI, 0),
1315     X86_INTRINSIC_DATA(avx512_psrai_w_512, VSHIFT, X86ISD::VSRAI, 0),
1316     X86_INTRINSIC_DATA(avx512_psrav_d_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1317     X86_INTRINSIC_DATA(avx512_psrav_q_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1318     X86_INTRINSIC_DATA(avx512_psrav_q_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1319     X86_INTRINSIC_DATA(avx512_psrav_q_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1320     X86_INTRINSIC_DATA(avx512_psrav_w_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1321     X86_INTRINSIC_DATA(avx512_psrav_w_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1322     X86_INTRINSIC_DATA(avx512_psrav_w_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
1323     X86_INTRINSIC_DATA(avx512_psrl_d_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1324     X86_INTRINSIC_DATA(avx512_psrl_q_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1325     X86_INTRINSIC_DATA(avx512_psrl_w_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1326     X86_INTRINSIC_DATA(avx512_psrli_d_512, VSHIFT, X86ISD::VSRLI, 0),
1327     X86_INTRINSIC_DATA(avx512_psrli_q_512, VSHIFT, X86ISD::VSRLI, 0),
1328     X86_INTRINSIC_DATA(avx512_psrli_w_512, VSHIFT, X86ISD::VSRLI, 0),
1329     X86_INTRINSIC_DATA(avx512_psrlv_d_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
1330     X86_INTRINSIC_DATA(avx512_psrlv_q_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
1331     X86_INTRINSIC_DATA(avx512_psrlv_w_128, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
1332     X86_INTRINSIC_DATA(avx512_psrlv_w_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
1333     X86_INTRINSIC_DATA(avx512_psrlv_w_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
1334     X86_INTRINSIC_DATA(avx512_pternlog_d_128, INTR_TYPE_4OP_IMM8,
1335                        X86ISD::VPTERNLOG, 0),
1336     X86_INTRINSIC_DATA(avx512_pternlog_d_256, INTR_TYPE_4OP_IMM8,
1337                        X86ISD::VPTERNLOG, 0),
1338     X86_INTRINSIC_DATA(avx512_pternlog_d_512, INTR_TYPE_4OP_IMM8,
1339                        X86ISD::VPTERNLOG, 0),
1340     X86_INTRINSIC_DATA(avx512_pternlog_q_128, INTR_TYPE_4OP_IMM8,
1341                        X86ISD::VPTERNLOG, 0),
1342     X86_INTRINSIC_DATA(avx512_pternlog_q_256, INTR_TYPE_4OP_IMM8,
1343                        X86ISD::VPTERNLOG, 0),
1344     X86_INTRINSIC_DATA(avx512_pternlog_q_512, INTR_TYPE_4OP_IMM8,
1345                        X86ISD::VPTERNLOG, 0),
1346     X86_INTRINSIC_DATA(avx512_rcp14_pd_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1347                        0),
1348     X86_INTRINSIC_DATA(avx512_rcp14_pd_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1349                        0),
1350     X86_INTRINSIC_DATA(avx512_rcp14_pd_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1351                        0),
1352     X86_INTRINSIC_DATA(avx512_rcp14_ps_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1353                        0),
1354     X86_INTRINSIC_DATA(avx512_rcp14_ps_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1355                        0),
1356     X86_INTRINSIC_DATA(avx512_rcp14_ps_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1357                        0),
1358     X86_INTRINSIC_DATA(avx512_rcp14_sd, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S,
1359                        0),
1360     X86_INTRINSIC_DATA(avx512_rcp14_ss, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S,
1361                        0),
1362     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_128, INTR_TYPE_1OP_MASK,
1363                        X86ISD::RSQRT14, 0),
1364     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_256, INTR_TYPE_1OP_MASK,
1365                        X86ISD::RSQRT14, 0),
1366     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_512, INTR_TYPE_1OP_MASK,
1367                        X86ISD::RSQRT14, 0),
1368     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_128, INTR_TYPE_1OP_MASK,
1369                        X86ISD::RSQRT14, 0),
1370     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_256, INTR_TYPE_1OP_MASK,
1371                        X86ISD::RSQRT14, 0),
1372     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_512, INTR_TYPE_1OP_MASK,
1373                        X86ISD::RSQRT14, 0),
1374     X86_INTRINSIC_DATA(avx512_rsqrt14_sd, INTR_TYPE_SCALAR_MASK,
1375                        X86ISD::RSQRT14S, 0),
1376     X86_INTRINSIC_DATA(avx512_rsqrt14_ss, INTR_TYPE_SCALAR_MASK,
1377                        X86ISD::RSQRT14S, 0),
1378     X86_INTRINSIC_DATA(avx512_sitofp_round, INTR_TYPE_1OP, ISD::SINT_TO_FP,
1379                        X86ISD::SINT_TO_FP_RND),
1380     X86_INTRINSIC_DATA(avx512_sqrt_pd_512, INTR_TYPE_1OP, ISD::FSQRT,
1381                        X86ISD::FSQRT_RND),
1382     X86_INTRINSIC_DATA(avx512_sqrt_ps_512, INTR_TYPE_1OP, ISD::FSQRT,
1383                        X86ISD::FSQRT_RND),
1384     X86_INTRINSIC_DATA(avx512_sub_pd_512, INTR_TYPE_2OP, ISD::FSUB,
1385                        X86ISD::FSUB_RND),
1386     X86_INTRINSIC_DATA(avx512_sub_ps_512, INTR_TYPE_2OP, ISD::FSUB,
1387                        X86ISD::FSUB_RND),
1388     X86_INTRINSIC_DATA(avx512_uitofp_round, INTR_TYPE_1OP, ISD::UINT_TO_FP,
1389                        X86ISD::UINT_TO_FP_RND),
1390     X86_INTRINSIC_DATA(avx512_vcomi_sd, COMI_RM, X86ISD::COMI, X86ISD::UCOMI),
1391     X86_INTRINSIC_DATA(avx512_vcomi_ss, COMI_RM, X86ISD::COMI, X86ISD::UCOMI),
1392     X86_INTRINSIC_DATA(avx512_vcvtsd2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1393                        X86ISD::CVTS2SI_RND),
1394     X86_INTRINSIC_DATA(avx512_vcvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1395                        X86ISD::CVTS2SI_RND),
1396     X86_INTRINSIC_DATA(avx512_vcvtsd2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1397                        X86ISD::CVTS2UI_RND),
1398     X86_INTRINSIC_DATA(avx512_vcvtsd2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1399                        X86ISD::CVTS2UI_RND),
1400     X86_INTRINSIC_DATA(avx512_vcvtss2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1401                        X86ISD::CVTS2SI_RND),
1402     X86_INTRINSIC_DATA(avx512_vcvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1403                        X86ISD::CVTS2SI_RND),
1404     X86_INTRINSIC_DATA(avx512_vcvtss2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1405                        X86ISD::CVTS2UI_RND),
1406     X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1407                        X86ISD::CVTS2UI_RND),
1408     X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA,
1409                        X86ISD::FMADD_RND),
1410     X86_INTRINSIC_DATA(avx512_vfmadd_f64, INTR_TYPE_3OP, ISD::FMA,
1411                        X86ISD::FMADD_RND),
1412     X86_INTRINSIC_DATA(avx512_vfmadd_pd_512, INTR_TYPE_3OP, ISD::FMA,
1413                        X86ISD::FMADD_RND),
1414     X86_INTRINSIC_DATA(avx512_vfmadd_ps_512, INTR_TYPE_3OP, ISD::FMA,
1415                        X86ISD::FMADD_RND),
1416     X86_INTRINSIC_DATA(avx512_vfmaddsub_pd_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1417                        X86ISD::FMADDSUB_RND),
1418     X86_INTRINSIC_DATA(avx512_vfmaddsub_ps_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1419                        X86ISD::FMADDSUB_RND),
1420 
1421     X86_INTRINSIC_DATA(avx512_vpdpbusd_128, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1422     X86_INTRINSIC_DATA(avx512_vpdpbusd_256, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1423     X86_INTRINSIC_DATA(avx512_vpdpbusd_512, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1424     X86_INTRINSIC_DATA(avx512_vpdpbusds_128, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1425                        0),
1426     X86_INTRINSIC_DATA(avx512_vpdpbusds_256, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1427                        0),
1428     X86_INTRINSIC_DATA(avx512_vpdpbusds_512, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1429                        0),
1430     X86_INTRINSIC_DATA(avx512_vpdpwssd_128, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1431     X86_INTRINSIC_DATA(avx512_vpdpwssd_256, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1432     X86_INTRINSIC_DATA(avx512_vpdpwssd_512, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1433     X86_INTRINSIC_DATA(avx512_vpdpwssds_128, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1434                        0),
1435     X86_INTRINSIC_DATA(avx512_vpdpwssds_256, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1436                        0),
1437     X86_INTRINSIC_DATA(avx512_vpdpwssds_512, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1438                        0),
1439 
1440     X86_INTRINSIC_DATA(avx512_vpermi2var_d_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1441                        0),
1442     X86_INTRINSIC_DATA(avx512_vpermi2var_d_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1443                        0),
1444     X86_INTRINSIC_DATA(avx512_vpermi2var_d_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1445                        0),
1446     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1447                        0),
1448     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1449                        0),
1450     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1451                        0),
1452     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1453                        0),
1454     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1455                        0),
1456     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1457                        0),
1458     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1459                        0),
1460     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1461                        0),
1462     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1463                        0),
1464     X86_INTRINSIC_DATA(avx512_vpermi2var_q_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1465                        0),
1466     X86_INTRINSIC_DATA(avx512_vpermi2var_q_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1467                        0),
1468     X86_INTRINSIC_DATA(avx512_vpermi2var_q_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1469                        0),
1470     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1471                        0),
1472     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1473                        0),
1474     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1475                        0),
1476     X86_INTRINSIC_DATA(avx512_vpermilvar_pd_512, INTR_TYPE_2OP,
1477                        X86ISD::VPERMILPV, 0),
1478     X86_INTRINSIC_DATA(avx512_vpermilvar_ps_512, INTR_TYPE_2OP,
1479                        X86ISD::VPERMILPV, 0),
1480     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_128, IFMA_OP, X86ISD::VPMADD52H, 0),
1481     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_256, IFMA_OP, X86ISD::VPMADD52H, 0),
1482     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_512, IFMA_OP, X86ISD::VPMADD52H, 0),
1483     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_128, IFMA_OP, X86ISD::VPMADD52L, 0),
1484     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_256, IFMA_OP, X86ISD::VPMADD52L, 0),
1485     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_512, IFMA_OP, X86ISD::VPMADD52L, 0),
1486     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_128, INTR_TYPE_2OP,
1487                        X86ISD::VPSHUFBITQMB, 0),
1488     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_256, INTR_TYPE_2OP,
1489                        X86ISD::VPSHUFBITQMB, 0),
1490     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_512, INTR_TYPE_2OP,
1491                        X86ISD::VPSHUFBITQMB, 0),
1492     // bfloat16
1493     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_128, INTR_TYPE_2OP,
1494                        X86ISD::VFPROUND2, 0),
1495     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_256, INTR_TYPE_2OP,
1496                        X86ISD::VFPROUND2, 0),
1497     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_512, INTR_TYPE_2OP,
1498                        X86ISD::VFPROUND2, 0),
1499     X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_256, INTR_TYPE_1OP,
1500                        X86ISD::CVTNEPS2BF16, 0),
1501     X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_512, INTR_TYPE_1OP,
1502                        X86ISD::CVTNEPS2BF16, 0),
1503     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_128, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1504                        0),
1505     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_256, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1506                        0),
1507     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_512, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1508                        0),
1509     X86_INTRINSIC_DATA(avx512bf16_mask_cvtneps2bf16_128, CVTNEPS2BF16_MASK,
1510                        X86ISD::CVTNEPS2BF16, X86ISD::MCVTNEPS2BF16),
1511     X86_INTRINSIC_DATA(avx512fp16_add_ph_512, INTR_TYPE_2OP, ISD::FADD,
1512                        X86ISD::FADD_RND),
1513     X86_INTRINSIC_DATA(avx512fp16_div_ph_512, INTR_TYPE_2OP, ISD::FDIV,
1514                        X86ISD::FDIV_RND),
1515     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_128, INTR_TYPE_2OP,
1516                        X86ISD::VFPCLASS, 0),
1517     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_256, INTR_TYPE_2OP,
1518                        X86ISD::VFPCLASS, 0),
1519     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_512, INTR_TYPE_2OP,
1520                        X86ISD::VFPCLASS, 0),
1521     X86_INTRINSIC_DATA(avx512fp16_mask_add_sh_round, INTR_TYPE_SCALAR_MASK,
1522                        X86ISD::FADDS, X86ISD::FADDS_RND),
1523     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_128, CMP_MASK_CC, X86ISD::CMPMM,
1524                        0),
1525     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_256, CMP_MASK_CC, X86ISD::CMPMM,
1526                        0),
1527     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_512, CMP_MASK_CC, X86ISD::CMPMM,
1528                        X86ISD::CMPMM_SAE),
1529     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_sh, CMP_MASK_SCALAR_CC,
1530                        X86ISD::FSETCCM, X86ISD::FSETCCM_SAE),
1531     X86_INTRINSIC_DATA(avx512fp16_mask_div_sh_round, INTR_TYPE_SCALAR_MASK,
1532                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
1533     X86_INTRINSIC_DATA(avx512fp16_mask_fpclass_sh, FPCLASSS, X86ISD::VFPCLASSS,
1534                        0),
1535     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_128, INTR_TYPE_1OP_MASK,
1536                        X86ISD::FGETEXP, 0),
1537     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_256, INTR_TYPE_1OP_MASK,
1538                        X86ISD::FGETEXP, 0),
1539     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_512, INTR_TYPE_1OP_MASK_SAE,
1540                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
1541     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_sh, INTR_TYPE_SCALAR_MASK_SAE,
1542                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
1543     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_128, INTR_TYPE_2OP_MASK_SAE,
1544                        X86ISD::VGETMANT, 0),
1545     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_256, INTR_TYPE_2OP_MASK_SAE,
1546                        X86ISD::VGETMANT, 0),
1547     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_512, INTR_TYPE_2OP_MASK_SAE,
1548                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
1549     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_sh,
1550                        INTR_TYPE_3OP_SCALAR_MASK_SAE, X86ISD::VGETMANTS,
1551                        X86ISD::VGETMANTS_SAE),
1552     X86_INTRINSIC_DATA(avx512fp16_mask_max_sh_round, INTR_TYPE_SCALAR_MASK_SAE,
1553                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
1554     X86_INTRINSIC_DATA(avx512fp16_mask_min_sh_round, INTR_TYPE_SCALAR_MASK_SAE,
1555                        X86ISD::FMINS, X86ISD::FMINS_SAE),
1556     X86_INTRINSIC_DATA(avx512fp16_mask_mul_sh_round, INTR_TYPE_SCALAR_MASK,
1557                        X86ISD::FMULS, X86ISD::FMULS_RND),
1558     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_128, INTR_TYPE_1OP_MASK,
1559                        X86ISD::RCP14, 0),
1560     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_256, INTR_TYPE_1OP_MASK,
1561                        X86ISD::RCP14, 0),
1562     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_512, INTR_TYPE_1OP_MASK,
1563                        X86ISD::RCP14, 0),
1564     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_sh, INTR_TYPE_SCALAR_MASK,
1565                        X86ISD::RCP14S, 0),
1566     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_128, INTR_TYPE_2OP_MASK_SAE,
1567                        X86ISD::VREDUCE, 0),
1568     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_256, INTR_TYPE_2OP_MASK_SAE,
1569                        X86ISD::VREDUCE, 0),
1570     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_512, INTR_TYPE_2OP_MASK_SAE,
1571                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
1572     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_sh, INTR_TYPE_SCALAR_MASK,
1573                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
1574     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_128, INTR_TYPE_2OP_MASK_SAE,
1575                        X86ISD::VRNDSCALE, 0),
1576     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_256, INTR_TYPE_2OP_MASK_SAE,
1577                        X86ISD::VRNDSCALE, 0),
1578     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_512, INTR_TYPE_2OP_MASK_SAE,
1579                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
1580     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_sh, INTR_TYPE_SCALAR_MASK,
1581                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
1582     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_128, INTR_TYPE_1OP_MASK,
1583                        X86ISD::RSQRT14, 0),
1584     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_256, INTR_TYPE_1OP_MASK,
1585                        X86ISD::RSQRT14, 0),
1586     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_512, INTR_TYPE_1OP_MASK,
1587                        X86ISD::RSQRT14, 0),
1588     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_sh, INTR_TYPE_SCALAR_MASK,
1589                        X86ISD::RSQRT14S, 0),
1590     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_128, INTR_TYPE_2OP_MASK,
1591                        X86ISD::SCALEF, 0),
1592     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_256, INTR_TYPE_2OP_MASK,
1593                        X86ISD::SCALEF, 0),
1594     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_512, INTR_TYPE_2OP_MASK,
1595                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
1596     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_sh, INTR_TYPE_SCALAR_MASK,
1597                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
1598     X86_INTRINSIC_DATA(avx512fp16_mask_sqrt_sh, INTR_TYPE_SCALAR_MASK,
1599                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
1600     X86_INTRINSIC_DATA(avx512fp16_mask_sub_sh_round, INTR_TYPE_SCALAR_MASK,
1601                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
1602     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtdq2ph_128, TRUNCATE_TO_REG,
1603                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1604     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_128, TRUNCATE_TO_REG,
1605                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1606     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_256, TRUNCATE_TO_REG,
1607                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1608     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_512, INTR_TYPE_1OP_MASK,
1609                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
1610     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_128, INTR_TYPE_1OP_MASK,
1611                        X86ISD::CVTP2SI, 0),
1612     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_256, INTR_TYPE_1OP_MASK,
1613                        X86ISD::CVTP2SI, 0),
1614     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_512, INTR_TYPE_1OP_MASK,
1615                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1616     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_128, INTR_TYPE_1OP_MASK,
1617                        X86ISD::VFPEXT, 0),
1618     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_256, INTR_TYPE_1OP_MASK,
1619                        X86ISD::VFPEXT, 0),
1620     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_512, INTR_TYPE_1OP_MASK_SAE,
1621                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
1622     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_128, INTR_TYPE_1OP_MASK,
1623                        X86ISD::VFPEXT, 0),
1624     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_256, INTR_TYPE_1OP_MASK,
1625                        ISD::FP_EXTEND, 0),
1626     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_512, INTR_TYPE_1OP_MASK_SAE,
1627                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
1628     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_128, INTR_TYPE_1OP_MASK,
1629                        X86ISD::CVTP2SI, 0),
1630     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_256, INTR_TYPE_1OP_MASK,
1631                        X86ISD::CVTP2SI, 0),
1632     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_512, INTR_TYPE_1OP_MASK,
1633                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1634     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_128, INTR_TYPE_1OP_MASK,
1635                        X86ISD::CVTP2UI, 0),
1636     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_256, INTR_TYPE_1OP_MASK,
1637                        X86ISD::CVTP2UI, 0),
1638     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_512, INTR_TYPE_1OP_MASK,
1639                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1640     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_128, INTR_TYPE_1OP_MASK,
1641                        X86ISD::CVTP2UI, 0),
1642     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_256, INTR_TYPE_1OP_MASK,
1643                        X86ISD::CVTP2UI, 0),
1644     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_512, INTR_TYPE_1OP_MASK,
1645                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1646     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_128, INTR_TYPE_1OP_MASK,
1647                        X86ISD::CVTP2UI, 0),
1648     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_256, INTR_TYPE_1OP_MASK,
1649                        X86ISD::CVTP2UI, 0),
1650     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_512, INTR_TYPE_1OP_MASK,
1651                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1652     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_128, INTR_TYPE_1OP_MASK,
1653                        X86ISD::CVTP2SI, 0),
1654     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_256, INTR_TYPE_1OP_MASK,
1655                        X86ISD::CVTP2SI, 0),
1656     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_512, INTR_TYPE_1OP_MASK,
1657                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1658     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_128, TRUNCATE_TO_REG,
1659                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1660     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_256, INTR_TYPE_1OP_MASK,
1661                        X86ISD::VFPROUND, 0),
1662     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_512, INTR_TYPE_1OP_MASK,
1663                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
1664     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_128, TRUNCATE_TO_REG,
1665                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1666     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_256, TRUNCATE_TO_REG,
1667                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1668     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsd2sh_round,
1669                        INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS,
1670                        X86ISD::VFPROUNDS_RND),
1671     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2sd_round,
1672                        INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS,
1673                        X86ISD::VFPEXTS_SAE),
1674     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2ss_round,
1675                        INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS,
1676                        X86ISD::VFPEXTS_SAE),
1677     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtss2sh_round,
1678                        INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS,
1679                        X86ISD::VFPROUNDS_RND),
1680     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_128, INTR_TYPE_1OP_MASK,
1681                        X86ISD::CVTTP2SI, 0),
1682     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_256, INTR_TYPE_1OP_MASK,
1683                        X86ISD::CVTTP2SI, 0),
1684     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_512, INTR_TYPE_1OP_MASK_SAE,
1685                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1686     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_128, INTR_TYPE_1OP_MASK,
1687                        X86ISD::CVTTP2SI, 0),
1688     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_256, INTR_TYPE_1OP_MASK,
1689                        X86ISD::CVTTP2SI, 0),
1690     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_512, INTR_TYPE_1OP_MASK_SAE,
1691                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1692     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_128, INTR_TYPE_1OP_MASK,
1693                        X86ISD::CVTTP2UI, 0),
1694     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_256, INTR_TYPE_1OP_MASK,
1695                        X86ISD::CVTTP2UI, 0),
1696     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_512, INTR_TYPE_1OP_MASK_SAE,
1697                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1698     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_128, INTR_TYPE_1OP_MASK,
1699                        X86ISD::CVTTP2UI, 0),
1700     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_256, INTR_TYPE_1OP_MASK,
1701                        X86ISD::CVTTP2UI, 0),
1702     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_512, INTR_TYPE_1OP_MASK_SAE,
1703                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1704     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_128, INTR_TYPE_1OP_MASK,
1705                        X86ISD::CVTTP2UI, 0),
1706     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_256, INTR_TYPE_1OP_MASK,
1707                        X86ISD::CVTTP2UI, 0),
1708     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_512, INTR_TYPE_1OP_MASK_SAE,
1709                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1710     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_128, INTR_TYPE_1OP_MASK,
1711                        X86ISD::CVTTP2SI, 0),
1712     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_256, INTR_TYPE_1OP_MASK,
1713                        X86ISD::CVTTP2SI, 0),
1714     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_512, INTR_TYPE_1OP_MASK_SAE,
1715                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1716     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtudq2ph_128, TRUNCATE_TO_REG,
1717                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1718     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_128, TRUNCATE_TO_REG,
1719                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1720     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_256, TRUNCATE_TO_REG,
1721                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1722     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_128, CFMA_OP_MASK,
1723                        X86ISD::VFCMADDC, 0),
1724     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_256, CFMA_OP_MASK,
1725                        X86ISD::VFCMADDC, 0),
1726     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_512, CFMA_OP_MASK,
1727                        X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND),
1728     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_csh, CFMA_OP_MASK,
1729                        X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND),
1730     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_128, INTR_TYPE_2OP_MASK,
1731                        X86ISD::VFCMULC, 0),
1732     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_256, INTR_TYPE_2OP_MASK,
1733                        X86ISD::VFCMULC, 0),
1734     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_512, INTR_TYPE_2OP_MASK,
1735                        X86ISD::VFCMULC, X86ISD::VFCMULC_RND),
1736     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_csh, INTR_TYPE_SCALAR_MASK,
1737                        X86ISD::VFCMULCSH, X86ISD::VFCMULCSH_RND),
1738     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_128, CFMA_OP_MASK,
1739                        X86ISD::VFMADDC, 0),
1740     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_256, CFMA_OP_MASK,
1741                        X86ISD::VFMADDC, 0),
1742     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_512, CFMA_OP_MASK,
1743                        X86ISD::VFMADDC, X86ISD::VFMADDC_RND),
1744     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_csh, CFMA_OP_MASK,
1745                        X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND),
1746     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_128, INTR_TYPE_2OP_MASK,
1747                        X86ISD::VFMULC, 0),
1748     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_256, INTR_TYPE_2OP_MASK,
1749                        X86ISD::VFMULC, 0),
1750     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_512, INTR_TYPE_2OP_MASK,
1751                        X86ISD::VFMULC, X86ISD::VFMULC_RND),
1752     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_csh, INTR_TYPE_SCALAR_MASK,
1753                        X86ISD::VFMULCSH, X86ISD::VFMULCSH_RND),
1754     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_128, CFMA_OP_MASKZ,
1755                        X86ISD::VFCMADDC, 0),
1756     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_256, CFMA_OP_MASKZ,
1757                        X86ISD::VFCMADDC, 0),
1758     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_512, CFMA_OP_MASKZ,
1759                        X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND),
1760     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_csh, CFMA_OP_MASKZ,
1761                        X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND),
1762     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_128, CFMA_OP_MASKZ,
1763                        X86ISD::VFMADDC, 0),
1764     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_256, CFMA_OP_MASKZ,
1765                        X86ISD::VFMADDC, 0),
1766     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_512, CFMA_OP_MASKZ,
1767                        X86ISD::VFMADDC, X86ISD::VFMADDC_RND),
1768     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_csh, CFMA_OP_MASKZ,
1769                        X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND),
1770     X86_INTRINSIC_DATA(avx512fp16_max_ph_128, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1771     X86_INTRINSIC_DATA(avx512fp16_max_ph_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1772     X86_INTRINSIC_DATA(avx512fp16_max_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
1773                        X86ISD::FMAX_SAE),
1774     X86_INTRINSIC_DATA(avx512fp16_min_ph_128, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1775     X86_INTRINSIC_DATA(avx512fp16_min_ph_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1776     X86_INTRINSIC_DATA(avx512fp16_min_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
1777                        X86ISD::FMIN_SAE),
1778     X86_INTRINSIC_DATA(avx512fp16_mul_ph_512, INTR_TYPE_2OP, ISD::FMUL,
1779                        X86ISD::FMUL_RND),
1780     X86_INTRINSIC_DATA(avx512fp16_sqrt_ph_512, INTR_TYPE_1OP, ISD::FSQRT,
1781                        X86ISD::FSQRT_RND),
1782     X86_INTRINSIC_DATA(avx512fp16_sub_ph_512, INTR_TYPE_2OP, ISD::FSUB,
1783                        X86ISD::FSUB_RND),
1784     X86_INTRINSIC_DATA(avx512fp16_vcomi_sh, COMI_RM, X86ISD::COMI,
1785                        X86ISD::UCOMI),
1786     /*fp16 scalar convert instruction*/
1787     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1788                        X86ISD::CVTS2SI_RND),
1789     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1790                        X86ISD::CVTS2SI_RND),
1791     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1792                        X86ISD::CVTS2UI_RND),
1793     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1794                        X86ISD::CVTS2UI_RND),
1795     X86_INTRINSIC_DATA(avx512fp16_vcvtsi2sh, INTR_TYPE_2OP,
1796                        X86ISD::SCALAR_SINT_TO_FP,
1797                        X86ISD::SCALAR_SINT_TO_FP_RND),
1798     X86_INTRINSIC_DATA(avx512fp16_vcvtsi642sh, INTR_TYPE_2OP,
1799                        X86ISD::SCALAR_SINT_TO_FP,
1800                        X86ISD::SCALAR_SINT_TO_FP_RND),
1801     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si32, INTR_TYPE_1OP_SAE,
1802                        X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE),
1803     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si64, INTR_TYPE_1OP_SAE,
1804                        X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE),
1805     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi32, INTR_TYPE_1OP_SAE,
1806                        X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE),
1807     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi64, INTR_TYPE_1OP_SAE,
1808                        X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE),
1809     X86_INTRINSIC_DATA(avx512fp16_vcvtusi2sh, INTR_TYPE_2OP,
1810                        X86ISD::SCALAR_UINT_TO_FP,
1811                        X86ISD::SCALAR_UINT_TO_FP_RND),
1812     X86_INTRINSIC_DATA(avx512fp16_vcvtusi642sh, INTR_TYPE_2OP,
1813                        X86ISD::SCALAR_UINT_TO_FP,
1814                        X86ISD::SCALAR_UINT_TO_FP_RND),
1815     X86_INTRINSIC_DATA(avx512fp16_vfmadd_f16, INTR_TYPE_3OP, ISD::FMA,
1816                        X86ISD::FMADD_RND),
1817     X86_INTRINSIC_DATA(avx512fp16_vfmadd_ph_512, INTR_TYPE_3OP, ISD::FMA,
1818                        X86ISD::FMADD_RND),
1819     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_128, INTR_TYPE_3OP,
1820                        X86ISD::FMADDSUB, 0),
1821     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_256, INTR_TYPE_3OP,
1822                        X86ISD::FMADDSUB, 0),
1823     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_512, INTR_TYPE_3OP,
1824                        X86ISD::FMADDSUB, X86ISD::FMADDSUB_RND),
1825     X86_INTRINSIC_DATA(bmi_bextr_32, INTR_TYPE_2OP, X86ISD::BEXTR, 0),
1826     X86_INTRINSIC_DATA(bmi_bextr_64, INTR_TYPE_2OP, X86ISD::BEXTR, 0),
1827     X86_INTRINSIC_DATA(bmi_bzhi_32, INTR_TYPE_2OP, X86ISD::BZHI, 0),
1828     X86_INTRINSIC_DATA(bmi_bzhi_64, INTR_TYPE_2OP, X86ISD::BZHI, 0),
1829     X86_INTRINSIC_DATA(bmi_pdep_32, INTR_TYPE_2OP, X86ISD::PDEP, 0),
1830     X86_INTRINSIC_DATA(bmi_pdep_64, INTR_TYPE_2OP, X86ISD::PDEP, 0),
1831     X86_INTRINSIC_DATA(bmi_pext_32, INTR_TYPE_2OP, X86ISD::PEXT, 0),
1832     X86_INTRINSIC_DATA(bmi_pext_64, INTR_TYPE_2OP, X86ISD::PEXT, 0),
1833     X86_INTRINSIC_DATA(fma_vfmaddsub_pd, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0),
1834     X86_INTRINSIC_DATA(fma_vfmaddsub_pd_256, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1835                        0),
1836     X86_INTRINSIC_DATA(fma_vfmaddsub_ps, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0),
1837     X86_INTRINSIC_DATA(fma_vfmaddsub_ps_256, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1838                        0),
1839 
1840     X86_INTRINSIC_DATA(mmx_packssdw, INTR_TYPE_CAST_MMX, 0, 0),
1841     X86_INTRINSIC_DATA(mmx_packsswb, INTR_TYPE_CAST_MMX, 0, 0),
1842     X86_INTRINSIC_DATA(mmx_packuswb, INTR_TYPE_CAST_MMX, 0, 0),
1843     X86_INTRINSIC_DATA(mmx_padd_b, INTR_TYPE_CAST_MMX, 0, 0),
1844     X86_INTRINSIC_DATA(mmx_padd_d, INTR_TYPE_CAST_MMX, 0, 0),
1845     X86_INTRINSIC_DATA(mmx_padd_q, INTR_TYPE_CAST_MMX, 0, 0),
1846     X86_INTRINSIC_DATA(mmx_padd_w, INTR_TYPE_CAST_MMX, 0, 0),
1847     X86_INTRINSIC_DATA(mmx_padds_b, INTR_TYPE_CAST_MMX, 0, 0),
1848     X86_INTRINSIC_DATA(mmx_padds_w, INTR_TYPE_CAST_MMX, 0, 0),
1849     X86_INTRINSIC_DATA(mmx_paddus_b, INTR_TYPE_CAST_MMX, 0, 0),
1850     X86_INTRINSIC_DATA(mmx_paddus_w, INTR_TYPE_CAST_MMX, 0, 0),
1851     X86_INTRINSIC_DATA(mmx_palignr_b, INTR_TYPE_CAST_MMX, 0, 0),
1852     X86_INTRINSIC_DATA(mmx_pand, INTR_TYPE_CAST_MMX, 0, 0),
1853     X86_INTRINSIC_DATA(mmx_pandn, INTR_TYPE_CAST_MMX, 0, 0),
1854     X86_INTRINSIC_DATA(mmx_pavg_b, INTR_TYPE_CAST_MMX, 0, 0),
1855     X86_INTRINSIC_DATA(mmx_pavg_w, INTR_TYPE_CAST_MMX, 0, 0),
1856     X86_INTRINSIC_DATA(mmx_pcmpeq_b, INTR_TYPE_CAST_MMX, 0, 0),
1857     X86_INTRINSIC_DATA(mmx_pcmpeq_d, INTR_TYPE_CAST_MMX, 0, 0),
1858     X86_INTRINSIC_DATA(mmx_pcmpeq_w, INTR_TYPE_CAST_MMX, 0, 0),
1859     X86_INTRINSIC_DATA(mmx_pcmpgt_b, INTR_TYPE_CAST_MMX, 0, 0),
1860     X86_INTRINSIC_DATA(mmx_pcmpgt_d, INTR_TYPE_CAST_MMX, 0, 0),
1861     X86_INTRINSIC_DATA(mmx_pcmpgt_w, INTR_TYPE_CAST_MMX, 0, 0),
1862     X86_INTRINSIC_DATA(mmx_pextr_w, INTR_TYPE_CAST_MMX, 0, 0),
1863     X86_INTRINSIC_DATA(mmx_pinsr_w, INTR_TYPE_CAST_MMX, 0, 0),
1864     X86_INTRINSIC_DATA(mmx_pmadd_wd, INTR_TYPE_CAST_MMX, 0, 0),
1865     X86_INTRINSIC_DATA(mmx_pmaxs_w, INTR_TYPE_CAST_MMX, 0, 0),
1866     X86_INTRINSIC_DATA(mmx_pmaxu_b, INTR_TYPE_CAST_MMX, 0, 0),
1867     X86_INTRINSIC_DATA(mmx_pmins_w, INTR_TYPE_CAST_MMX, 0, 0),
1868     X86_INTRINSIC_DATA(mmx_pminu_b, INTR_TYPE_CAST_MMX, 0, 0),
1869     X86_INTRINSIC_DATA(mmx_pmovmskb, INTR_TYPE_CAST_MMX, 0, 0),
1870     X86_INTRINSIC_DATA(mmx_pmulh_w, INTR_TYPE_CAST_MMX, 0, 0),
1871     X86_INTRINSIC_DATA(mmx_pmulhu_w, INTR_TYPE_CAST_MMX, 0, 0),
1872     X86_INTRINSIC_DATA(mmx_pmull_w, INTR_TYPE_CAST_MMX, 0, 0),
1873     X86_INTRINSIC_DATA(mmx_pmulu_dq, INTR_TYPE_CAST_MMX, 0, 0),
1874     X86_INTRINSIC_DATA(mmx_por, INTR_TYPE_CAST_MMX, 0, 0),
1875     X86_INTRINSIC_DATA(mmx_psad_bw, INTR_TYPE_CAST_MMX, 0, 0),
1876     X86_INTRINSIC_DATA(mmx_psll_d, INTR_TYPE_CAST_MMX, 0, 0),
1877     X86_INTRINSIC_DATA(mmx_psll_q, INTR_TYPE_CAST_MMX, 0, 0),
1878     X86_INTRINSIC_DATA(mmx_psll_w, INTR_TYPE_CAST_MMX, 0, 0),
1879     X86_INTRINSIC_DATA(mmx_pslli_d, INTR_TYPE_CAST_MMX, 0, 0),
1880     X86_INTRINSIC_DATA(mmx_pslli_q, INTR_TYPE_CAST_MMX, 0, 0),
1881     X86_INTRINSIC_DATA(mmx_pslli_w, INTR_TYPE_CAST_MMX, 0, 0),
1882     X86_INTRINSIC_DATA(mmx_psra_d, INTR_TYPE_CAST_MMX, 0, 0),
1883     X86_INTRINSIC_DATA(mmx_psra_w, INTR_TYPE_CAST_MMX, 0, 0),
1884     X86_INTRINSIC_DATA(mmx_psrai_d, INTR_TYPE_CAST_MMX, 0, 0),
1885     X86_INTRINSIC_DATA(mmx_psrai_w, INTR_TYPE_CAST_MMX, 0, 0),
1886     X86_INTRINSIC_DATA(mmx_psrl_d, INTR_TYPE_CAST_MMX, 0, 0),
1887     X86_INTRINSIC_DATA(mmx_psrl_q, INTR_TYPE_CAST_MMX, 0, 0),
1888     X86_INTRINSIC_DATA(mmx_psrl_w, INTR_TYPE_CAST_MMX, 0, 0),
1889     X86_INTRINSIC_DATA(mmx_psrli_d, INTR_TYPE_CAST_MMX, 0, 0),
1890     X86_INTRINSIC_DATA(mmx_psrli_q, INTR_TYPE_CAST_MMX, 0, 0),
1891     X86_INTRINSIC_DATA(mmx_psrli_w, INTR_TYPE_CAST_MMX, 0, 0),
1892     X86_INTRINSIC_DATA(mmx_psub_b, INTR_TYPE_CAST_MMX, 0, 0),
1893     X86_INTRINSIC_DATA(mmx_psub_d, INTR_TYPE_CAST_MMX, 0, 0),
1894     X86_INTRINSIC_DATA(mmx_psub_q, INTR_TYPE_CAST_MMX, 0, 0),
1895     X86_INTRINSIC_DATA(mmx_psub_w, INTR_TYPE_CAST_MMX, 0, 0),
1896     X86_INTRINSIC_DATA(mmx_psubs_b, INTR_TYPE_CAST_MMX, 0, 0),
1897     X86_INTRINSIC_DATA(mmx_psubs_w, INTR_TYPE_CAST_MMX, 0, 0),
1898     X86_INTRINSIC_DATA(mmx_psubus_b, INTR_TYPE_CAST_MMX, 0, 0),
1899     X86_INTRINSIC_DATA(mmx_psubus_w, INTR_TYPE_CAST_MMX, 0, 0),
1900     X86_INTRINSIC_DATA(mmx_punpckhbw, INTR_TYPE_CAST_MMX, 0, 0),
1901     X86_INTRINSIC_DATA(mmx_punpckhdq, INTR_TYPE_CAST_MMX, 0, 0),
1902     X86_INTRINSIC_DATA(mmx_punpckhwd, INTR_TYPE_CAST_MMX, 0, 0),
1903     X86_INTRINSIC_DATA(mmx_punpcklbw, INTR_TYPE_CAST_MMX, 0, 0),
1904     X86_INTRINSIC_DATA(mmx_punpckldq, INTR_TYPE_CAST_MMX, 0, 0),
1905     X86_INTRINSIC_DATA(mmx_punpcklwd, INTR_TYPE_CAST_MMX, 0, 0),
1906     X86_INTRINSIC_DATA(mmx_pxor, INTR_TYPE_CAST_MMX, 0, 0),
1907 
1908     X86_INTRINSIC_DATA(sse_cmp_ps, INTR_TYPE_3OP, X86ISD::CMPP, 0),
1909     X86_INTRINSIC_DATA(sse_cmp_ss, INTR_TYPE_3OP, X86ISD::FSETCC, 0),
1910     X86_INTRINSIC_DATA(sse_comieq_ss, COMI, X86ISD::COMI, ISD::SETEQ),
1911     X86_INTRINSIC_DATA(sse_comige_ss, COMI, X86ISD::COMI, ISD::SETGE),
1912     X86_INTRINSIC_DATA(sse_comigt_ss, COMI, X86ISD::COMI, ISD::SETGT),
1913     X86_INTRINSIC_DATA(sse_comile_ss, COMI, X86ISD::COMI, ISD::SETLE),
1914     X86_INTRINSIC_DATA(sse_comilt_ss, COMI, X86ISD::COMI, ISD::SETLT),
1915     X86_INTRINSIC_DATA(sse_comineq_ss, COMI, X86ISD::COMI, ISD::SETNE),
1916     X86_INTRINSIC_DATA(sse_cvtpd2pi, INTR_TYPE_CAST_MMX, 0, 0),
1917     X86_INTRINSIC_DATA(sse_cvtpi2pd, INTR_TYPE_CAST_MMX, 0, 0),
1918     X86_INTRINSIC_DATA(sse_cvtpi2ps, INTR_TYPE_CAST_MMX, 0, 0),
1919     X86_INTRINSIC_DATA(sse_cvtps2pi, INTR_TYPE_CAST_MMX, 0, 0),
1920     X86_INTRINSIC_DATA(sse_cvtss2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1921     X86_INTRINSIC_DATA(sse_cvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1922     X86_INTRINSIC_DATA(sse_cvttpd2pi, INTR_TYPE_CAST_MMX, 0, 0),
1923     X86_INTRINSIC_DATA(sse_cvttps2pi, INTR_TYPE_CAST_MMX, 0, 0),
1924     X86_INTRINSIC_DATA(sse_cvttss2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1925     X86_INTRINSIC_DATA(sse_cvttss2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1926     X86_INTRINSIC_DATA(sse_max_ps, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1927     X86_INTRINSIC_DATA(sse_max_ss, INTR_TYPE_2OP, X86ISD::FMAXS, 0),
1928     X86_INTRINSIC_DATA(sse_min_ps, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1929     X86_INTRINSIC_DATA(sse_min_ss, INTR_TYPE_2OP, X86ISD::FMINS, 0),
1930     X86_INTRINSIC_DATA(sse_movmsk_ps, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1931     X86_INTRINSIC_DATA(sse_pshuf_w, INTR_TYPE_CAST_MMX, 0, 0),
1932     X86_INTRINSIC_DATA(sse_rcp_ps, INTR_TYPE_1OP, X86ISD::FRCP, 0),
1933     X86_INTRINSIC_DATA(sse_rsqrt_ps, INTR_TYPE_1OP, X86ISD::FRSQRT, 0),
1934     X86_INTRINSIC_DATA(sse_ucomieq_ss, COMI, X86ISD::UCOMI, ISD::SETEQ),
1935     X86_INTRINSIC_DATA(sse_ucomige_ss, COMI, X86ISD::UCOMI, ISD::SETGE),
1936     X86_INTRINSIC_DATA(sse_ucomigt_ss, COMI, X86ISD::UCOMI, ISD::SETGT),
1937     X86_INTRINSIC_DATA(sse_ucomile_ss, COMI, X86ISD::UCOMI, ISD::SETLE),
1938     X86_INTRINSIC_DATA(sse_ucomilt_ss, COMI, X86ISD::UCOMI, ISD::SETLT),
1939     X86_INTRINSIC_DATA(sse_ucomineq_ss, COMI, X86ISD::UCOMI, ISD::SETNE),
1940     X86_INTRINSIC_DATA(sse2_cmp_pd, INTR_TYPE_3OP, X86ISD::CMPP, 0),
1941     X86_INTRINSIC_DATA(sse2_cmp_sd, INTR_TYPE_3OP, X86ISD::FSETCC, 0),
1942     X86_INTRINSIC_DATA(sse2_comieq_sd, COMI, X86ISD::COMI, ISD::SETEQ),
1943     X86_INTRINSIC_DATA(sse2_comige_sd, COMI, X86ISD::COMI, ISD::SETGE),
1944     X86_INTRINSIC_DATA(sse2_comigt_sd, COMI, X86ISD::COMI, ISD::SETGT),
1945     X86_INTRINSIC_DATA(sse2_comile_sd, COMI, X86ISD::COMI, ISD::SETLE),
1946     X86_INTRINSIC_DATA(sse2_comilt_sd, COMI, X86ISD::COMI, ISD::SETLT),
1947     X86_INTRINSIC_DATA(sse2_comineq_sd, COMI, X86ISD::COMI, ISD::SETNE),
1948     X86_INTRINSIC_DATA(sse2_cvtpd2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
1949     X86_INTRINSIC_DATA(sse2_cvtpd2ps, INTR_TYPE_1OP, X86ISD::VFPROUND, 0),
1950     X86_INTRINSIC_DATA(sse2_cvtps2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
1951     X86_INTRINSIC_DATA(sse2_cvtsd2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1952     X86_INTRINSIC_DATA(sse2_cvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1953     X86_INTRINSIC_DATA(sse2_cvtsd2ss, INTR_TYPE_2OP, X86ISD::VFPROUNDS, 0),
1954     X86_INTRINSIC_DATA(sse2_cvttpd2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
1955     X86_INTRINSIC_DATA(sse2_cvttps2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
1956     X86_INTRINSIC_DATA(sse2_cvttsd2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1957     X86_INTRINSIC_DATA(sse2_cvttsd2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1958     X86_INTRINSIC_DATA(sse2_max_pd, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1959     X86_INTRINSIC_DATA(sse2_max_sd, INTR_TYPE_2OP, X86ISD::FMAXS, 0),
1960     X86_INTRINSIC_DATA(sse2_min_pd, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1961     X86_INTRINSIC_DATA(sse2_min_sd, INTR_TYPE_2OP, X86ISD::FMINS, 0),
1962     X86_INTRINSIC_DATA(sse2_movmsk_pd, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1963     X86_INTRINSIC_DATA(sse2_packssdw_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1964     X86_INTRINSIC_DATA(sse2_packsswb_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1965     X86_INTRINSIC_DATA(sse2_packuswb_128, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
1966     X86_INTRINSIC_DATA(sse2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1967     X86_INTRINSIC_DATA(sse2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1968     X86_INTRINSIC_DATA(sse2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
1969     X86_INTRINSIC_DATA(sse2_pmovmskb_128, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1970     X86_INTRINSIC_DATA(sse2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0),
1971     X86_INTRINSIC_DATA(sse2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0),
1972     X86_INTRINSIC_DATA(sse2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
1973     X86_INTRINSIC_DATA(sse2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1974     X86_INTRINSIC_DATA(sse2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1975     X86_INTRINSIC_DATA(sse2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1976     X86_INTRINSIC_DATA(sse2_pslli_d, VSHIFT, X86ISD::VSHLI, 0),
1977     X86_INTRINSIC_DATA(sse2_pslli_q, VSHIFT, X86ISD::VSHLI, 0),
1978     X86_INTRINSIC_DATA(sse2_pslli_w, VSHIFT, X86ISD::VSHLI, 0),
1979     X86_INTRINSIC_DATA(sse2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1980     X86_INTRINSIC_DATA(sse2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1981     X86_INTRINSIC_DATA(sse2_psrai_d, VSHIFT, X86ISD::VSRAI, 0),
1982     X86_INTRINSIC_DATA(sse2_psrai_w, VSHIFT, X86ISD::VSRAI, 0),
1983     X86_INTRINSIC_DATA(sse2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1984     X86_INTRINSIC_DATA(sse2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1985     X86_INTRINSIC_DATA(sse2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1986     X86_INTRINSIC_DATA(sse2_psrli_d, VSHIFT, X86ISD::VSRLI, 0),
1987     X86_INTRINSIC_DATA(sse2_psrli_q, VSHIFT, X86ISD::VSRLI, 0),
1988     X86_INTRINSIC_DATA(sse2_psrli_w, VSHIFT, X86ISD::VSRLI, 0),
1989     X86_INTRINSIC_DATA(sse2_ucomieq_sd, COMI, X86ISD::UCOMI, ISD::SETEQ),
1990     X86_INTRINSIC_DATA(sse2_ucomige_sd, COMI, X86ISD::UCOMI, ISD::SETGE),
1991     X86_INTRINSIC_DATA(sse2_ucomigt_sd, COMI, X86ISD::UCOMI, ISD::SETGT),
1992     X86_INTRINSIC_DATA(sse2_ucomile_sd, COMI, X86ISD::UCOMI, ISD::SETLE),
1993     X86_INTRINSIC_DATA(sse2_ucomilt_sd, COMI, X86ISD::UCOMI, ISD::SETLT),
1994     X86_INTRINSIC_DATA(sse2_ucomineq_sd, COMI, X86ISD::UCOMI, ISD::SETNE),
1995     X86_INTRINSIC_DATA(sse3_addsub_pd, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
1996     X86_INTRINSIC_DATA(sse3_addsub_ps, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
1997     X86_INTRINSIC_DATA(sse3_hadd_pd, INTR_TYPE_2OP, X86ISD::FHADD, 0),
1998     X86_INTRINSIC_DATA(sse3_hadd_ps, INTR_TYPE_2OP, X86ISD::FHADD, 0),
1999     X86_INTRINSIC_DATA(sse3_hsub_pd, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
2000     X86_INTRINSIC_DATA(sse3_hsub_ps, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
2001     X86_INTRINSIC_DATA(sse41_blendvpd, BLENDV, X86ISD::BLENDV, 0),
2002     X86_INTRINSIC_DATA(sse41_blendvps, BLENDV, X86ISD::BLENDV, 0),
2003     X86_INTRINSIC_DATA(sse41_insertps, INTR_TYPE_3OP, X86ISD::INSERTPS, 0),
2004     X86_INTRINSIC_DATA(sse41_mpsadbw, INTR_TYPE_3OP_IMM8, X86ISD::MPSADBW, 0),
2005     X86_INTRINSIC_DATA(sse41_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
2006     X86_INTRINSIC_DATA(sse41_pblendvb, BLENDV, X86ISD::BLENDV, 0),
2007     X86_INTRINSIC_DATA(sse41_phminposuw, INTR_TYPE_1OP, X86ISD::PHMINPOS, 0),
2008     X86_INTRINSIC_DATA(sse41_round_pd, ROUNDP, X86ISD::VRNDSCALE, 0),
2009     X86_INTRINSIC_DATA(sse41_round_ps, ROUNDP, X86ISD::VRNDSCALE, 0),
2010     X86_INTRINSIC_DATA(sse41_round_sd, ROUNDS, X86ISD::VRNDSCALES, 0),
2011     X86_INTRINSIC_DATA(sse41_round_ss, ROUNDS, X86ISD::VRNDSCALES, 0),
2012     X86_INTRINSIC_DATA(sse4a_extrqi, INTR_TYPE_3OP, X86ISD::EXTRQI, 0),
2013     X86_INTRINSIC_DATA(sse4a_insertqi, INTR_TYPE_4OP_IMM8, X86ISD::INSERTQI, 0),
2014     X86_INTRINSIC_DATA(ssse3_pabs_b, INTR_TYPE_CAST_MMX, 0, 0),
2015     X86_INTRINSIC_DATA(ssse3_pabs_d, INTR_TYPE_CAST_MMX, 0, 0),
2016     X86_INTRINSIC_DATA(ssse3_pabs_w, INTR_TYPE_CAST_MMX, 0, 0),
2017     X86_INTRINSIC_DATA(ssse3_phadd_d, INTR_TYPE_CAST_MMX, 0, 0),
2018     X86_INTRINSIC_DATA(ssse3_phadd_d_128, INTR_TYPE_2OP, X86ISD::HADD, 0),
2019     X86_INTRINSIC_DATA(ssse3_phadd_sw, INTR_TYPE_CAST_MMX, 0, 0),
2020     X86_INTRINSIC_DATA(ssse3_phadd_w, INTR_TYPE_CAST_MMX, 0, 0),
2021     X86_INTRINSIC_DATA(ssse3_phadd_w_128, INTR_TYPE_2OP, X86ISD::HADD, 0),
2022     X86_INTRINSIC_DATA(ssse3_phsub_d, INTR_TYPE_CAST_MMX, 0, 0),
2023     X86_INTRINSIC_DATA(ssse3_phsub_d_128, INTR_TYPE_2OP, X86ISD::HSUB, 0),
2024     X86_INTRINSIC_DATA(ssse3_phsub_sw, INTR_TYPE_CAST_MMX, 0, 0),
2025     X86_INTRINSIC_DATA(ssse3_phsub_w, INTR_TYPE_CAST_MMX, 0, 0),
2026     X86_INTRINSIC_DATA(ssse3_phsub_w_128, INTR_TYPE_2OP, X86ISD::HSUB, 0),
2027     X86_INTRINSIC_DATA(ssse3_pmadd_ub_sw, INTR_TYPE_CAST_MMX, 0, 0),
2028     X86_INTRINSIC_DATA(ssse3_pmadd_ub_sw_128, INTR_TYPE_2OP, X86ISD::VPMADDUBSW,
2029                        0),
2030     X86_INTRINSIC_DATA(ssse3_pmul_hr_sw, INTR_TYPE_CAST_MMX, 0, 0),
2031     X86_INTRINSIC_DATA(ssse3_pmul_hr_sw_128, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
2032     X86_INTRINSIC_DATA(ssse3_pshuf_b, INTR_TYPE_CAST_MMX, 0, 0),
2033     X86_INTRINSIC_DATA(ssse3_pshuf_b_128, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
2034     X86_INTRINSIC_DATA(ssse3_psign_b, INTR_TYPE_CAST_MMX, 0, 0),
2035     X86_INTRINSIC_DATA(ssse3_psign_d, INTR_TYPE_CAST_MMX, 0, 0),
2036     X86_INTRINSIC_DATA(ssse3_psign_w, INTR_TYPE_CAST_MMX, 0, 0),
2037     X86_INTRINSIC_DATA(subborrow_32, ADX, X86ISD::SBB, X86ISD::SUB),
2038     X86_INTRINSIC_DATA(subborrow_64, ADX, X86ISD::SBB, X86ISD::SUB),
2039     X86_INTRINSIC_DATA(tbm_bextri_u32, BEXTRI, X86ISD::BEXTRI, 0),
2040     X86_INTRINSIC_DATA(tbm_bextri_u64, BEXTRI, X86ISD::BEXTRI, 0),
2041     X86_INTRINSIC_DATA(vcvtps2ph_128, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0),
2042     X86_INTRINSIC_DATA(vcvtps2ph_256, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0),
2043 
2044     X86_INTRINSIC_DATA(vgf2p8affineinvqb_128, INTR_TYPE_3OP,
2045                        X86ISD::GF2P8AFFINEINVQB, 0),
2046     X86_INTRINSIC_DATA(vgf2p8affineinvqb_256, INTR_TYPE_3OP,
2047                        X86ISD::GF2P8AFFINEINVQB, 0),
2048     X86_INTRINSIC_DATA(vgf2p8affineinvqb_512, INTR_TYPE_3OP,
2049                        X86ISD::GF2P8AFFINEINVQB, 0),
2050     X86_INTRINSIC_DATA(vgf2p8affineqb_128, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
2051                        0),
2052     X86_INTRINSIC_DATA(vgf2p8affineqb_256, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
2053                        0),
2054     X86_INTRINSIC_DATA(vgf2p8affineqb_512, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
2055                        0),
2056     X86_INTRINSIC_DATA(vgf2p8mulb_128, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
2057     X86_INTRINSIC_DATA(vgf2p8mulb_256, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
2058     X86_INTRINSIC_DATA(vgf2p8mulb_512, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
2059 
2060     X86_INTRINSIC_DATA(xop_vpermil2pd, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0),
2061     X86_INTRINSIC_DATA(xop_vpermil2pd_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2,
2062                        0),
2063     X86_INTRINSIC_DATA(xop_vpermil2ps, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0),
2064     X86_INTRINSIC_DATA(xop_vpermil2ps_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2,
2065                        0),
2066     X86_INTRINSIC_DATA(xop_vpperm, INTR_TYPE_3OP, X86ISD::VPPERM, 0),
2067     X86_INTRINSIC_DATA(xop_vpshab, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
2068     X86_INTRINSIC_DATA(xop_vpshad, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
2069     X86_INTRINSIC_DATA(xop_vpshaq, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
2070     X86_INTRINSIC_DATA(xop_vpshaw, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
2071     X86_INTRINSIC_DATA(xop_vpshlb, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
2072     X86_INTRINSIC_DATA(xop_vpshld, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
2073     X86_INTRINSIC_DATA(xop_vpshlq, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
2074     X86_INTRINSIC_DATA(xop_vpshlw, INTR_TYPE_2OP, X86ISD::VPSHL, 0)};
2075 
2076 /*
2077  * Retrieve data for Intrinsic without chain.
2078  * Return nullptr if intrinsic is not defined in the table.
2079  */
getIntrinsicWithoutChain(unsigned IntNo)2080 static const IntrinsicData *getIntrinsicWithoutChain(unsigned IntNo) {
2081   const IntrinsicData *Data = lower_bound(IntrinsicsWithoutChain, IntNo);
2082   if (Data != std::end(IntrinsicsWithoutChain) && Data->Id == IntNo)
2083     return Data;
2084   return nullptr;
2085 }
2086 
verifyIntrinsicTables()2087 static void verifyIntrinsicTables() {
2088   assert(llvm::is_sorted(IntrinsicsWithoutChain) &&
2089          llvm::is_sorted(IntrinsicsWithChain) &&
2090          "Intrinsic data tables should be sorted by Intrinsic ID");
2091   assert((std::adjacent_find(std::begin(IntrinsicsWithoutChain),
2092                              std::end(IntrinsicsWithoutChain)) ==
2093           std::end(IntrinsicsWithoutChain)) &&
2094          (std::adjacent_find(std::begin(IntrinsicsWithChain),
2095                              std::end(IntrinsicsWithChain)) ==
2096           std::end(IntrinsicsWithChain)) &&
2097          "Intrinsic data tables should have unique entries");
2098 }
2099 } // namespace llvm
2100 
2101 #endif
2102