xref: /freebsd/contrib/llvm-project/llvm/lib/Target/X86/X86IntrinsicsInfo.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
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   CVTPS2PH_MASK,
66   CVTPD2DQ_MASK,
67   CVTQQ2PS_MASK,
68   TRUNCATE_TO_MEM_VI8,
69   TRUNCATE_TO_MEM_VI16,
70   TRUNCATE_TO_MEM_VI32,
71   FIXUPIMM,
72   FIXUPIMM_MASKZ,
73   GATHER_AVX2,
74   ROUNDP,
75   ROUNDS,
76   RDPRU
77 };
78 
79 struct IntrinsicData {
80 
81   uint16_t Id;
82   IntrinsicType Type;
83   uint16_t Opc0;
84   uint16_t Opc1;
85 
86   bool operator<(const IntrinsicData &RHS) const { return Id < RHS.Id; }
87   bool operator==(const IntrinsicData &RHS) const { return RHS.Id == Id; }
88   friend bool operator<(const IntrinsicData &LHS, unsigned Id) {
89     return LHS.Id < Id;
90   }
91 };
92 
93 #define X86_INTRINSIC_DATA(id, type, op0, op1)                                 \
94   { Intrinsic::x86_##id, type, op0, op1 }
95 
96 /*
97  * IntrinsicsWithChain - the table should be sorted by Intrinsic ID - in
98  * the alphabetical order.
99  */
100 static const IntrinsicData IntrinsicsWithChain[] = {
101     X86_INTRINSIC_DATA(avx2_gather_d_d, GATHER_AVX2, 0, 0),
102     X86_INTRINSIC_DATA(avx2_gather_d_d_256, GATHER_AVX2, 0, 0),
103     X86_INTRINSIC_DATA(avx2_gather_d_pd, GATHER_AVX2, 0, 0),
104     X86_INTRINSIC_DATA(avx2_gather_d_pd_256, GATHER_AVX2, 0, 0),
105     X86_INTRINSIC_DATA(avx2_gather_d_ps, GATHER_AVX2, 0, 0),
106     X86_INTRINSIC_DATA(avx2_gather_d_ps_256, GATHER_AVX2, 0, 0),
107     X86_INTRINSIC_DATA(avx2_gather_d_q, GATHER_AVX2, 0, 0),
108     X86_INTRINSIC_DATA(avx2_gather_d_q_256, GATHER_AVX2, 0, 0),
109     X86_INTRINSIC_DATA(avx2_gather_q_d, GATHER_AVX2, 0, 0),
110     X86_INTRINSIC_DATA(avx2_gather_q_d_256, GATHER_AVX2, 0, 0),
111     X86_INTRINSIC_DATA(avx2_gather_q_pd, GATHER_AVX2, 0, 0),
112     X86_INTRINSIC_DATA(avx2_gather_q_pd_256, GATHER_AVX2, 0, 0),
113     X86_INTRINSIC_DATA(avx2_gather_q_ps, GATHER_AVX2, 0, 0),
114     X86_INTRINSIC_DATA(avx2_gather_q_ps_256, GATHER_AVX2, 0, 0),
115     X86_INTRINSIC_DATA(avx2_gather_q_q, GATHER_AVX2, 0, 0),
116     X86_INTRINSIC_DATA(avx2_gather_q_q_256, GATHER_AVX2, 0, 0),
117 
118     X86_INTRINSIC_DATA(avx512_gather_dpd_512, GATHER, 0, 0),
119     X86_INTRINSIC_DATA(avx512_gather_dpi_512, GATHER, 0, 0),
120     X86_INTRINSIC_DATA(avx512_gather_dpq_512, GATHER, 0, 0),
121     X86_INTRINSIC_DATA(avx512_gather_dps_512, GATHER, 0, 0),
122     X86_INTRINSIC_DATA(avx512_gather_qpd_512, GATHER, 0, 0),
123     X86_INTRINSIC_DATA(avx512_gather_qpi_512, GATHER, 0, 0),
124     X86_INTRINSIC_DATA(avx512_gather_qpq_512, GATHER, 0, 0),
125     X86_INTRINSIC_DATA(avx512_gather_qps_512, GATHER, 0, 0),
126     X86_INTRINSIC_DATA(avx512_gather3div2_df, GATHER, 0, 0),
127     X86_INTRINSIC_DATA(avx512_gather3div2_di, GATHER, 0, 0),
128     X86_INTRINSIC_DATA(avx512_gather3div4_df, GATHER, 0, 0),
129     X86_INTRINSIC_DATA(avx512_gather3div4_di, GATHER, 0, 0),
130     X86_INTRINSIC_DATA(avx512_gather3div4_sf, GATHER, 0, 0),
131     X86_INTRINSIC_DATA(avx512_gather3div4_si, GATHER, 0, 0),
132     X86_INTRINSIC_DATA(avx512_gather3div8_sf, GATHER, 0, 0),
133     X86_INTRINSIC_DATA(avx512_gather3div8_si, GATHER, 0, 0),
134     X86_INTRINSIC_DATA(avx512_gather3siv2_df, GATHER, 0, 0),
135     X86_INTRINSIC_DATA(avx512_gather3siv2_di, GATHER, 0, 0),
136     X86_INTRINSIC_DATA(avx512_gather3siv4_df, GATHER, 0, 0),
137     X86_INTRINSIC_DATA(avx512_gather3siv4_di, GATHER, 0, 0),
138     X86_INTRINSIC_DATA(avx512_gather3siv4_sf, GATHER, 0, 0),
139     X86_INTRINSIC_DATA(avx512_gather3siv4_si, GATHER, 0, 0),
140     X86_INTRINSIC_DATA(avx512_gather3siv8_sf, GATHER, 0, 0),
141     X86_INTRINSIC_DATA(avx512_gather3siv8_si, GATHER, 0, 0),
142 
143     X86_INTRINSIC_DATA(avx512_mask_gather_dpd_512, GATHER, 0, 0),
144     X86_INTRINSIC_DATA(avx512_mask_gather_dpi_512, GATHER, 0, 0),
145     X86_INTRINSIC_DATA(avx512_mask_gather_dpq_512, GATHER, 0, 0),
146     X86_INTRINSIC_DATA(avx512_mask_gather_dps_512, GATHER, 0, 0),
147     X86_INTRINSIC_DATA(avx512_mask_gather_qpd_512, GATHER, 0, 0),
148     X86_INTRINSIC_DATA(avx512_mask_gather_qpi_512, GATHER, 0, 0),
149     X86_INTRINSIC_DATA(avx512_mask_gather_qpq_512, GATHER, 0, 0),
150     X86_INTRINSIC_DATA(avx512_mask_gather_qps_512, GATHER, 0, 0),
151     X86_INTRINSIC_DATA(avx512_mask_gather3div2_df, GATHER, 0, 0),
152     X86_INTRINSIC_DATA(avx512_mask_gather3div2_di, GATHER, 0, 0),
153     X86_INTRINSIC_DATA(avx512_mask_gather3div4_df, GATHER, 0, 0),
154     X86_INTRINSIC_DATA(avx512_mask_gather3div4_di, GATHER, 0, 0),
155     X86_INTRINSIC_DATA(avx512_mask_gather3div4_sf, GATHER, 0, 0),
156     X86_INTRINSIC_DATA(avx512_mask_gather3div4_si, GATHER, 0, 0),
157     X86_INTRINSIC_DATA(avx512_mask_gather3div8_sf, GATHER, 0, 0),
158     X86_INTRINSIC_DATA(avx512_mask_gather3div8_si, GATHER, 0, 0),
159     X86_INTRINSIC_DATA(avx512_mask_gather3siv2_df, GATHER, 0, 0),
160     X86_INTRINSIC_DATA(avx512_mask_gather3siv2_di, GATHER, 0, 0),
161     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_df, GATHER, 0, 0),
162     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_di, GATHER, 0, 0),
163     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_sf, GATHER, 0, 0),
164     X86_INTRINSIC_DATA(avx512_mask_gather3siv4_si, GATHER, 0, 0),
165     X86_INTRINSIC_DATA(avx512_mask_gather3siv8_sf, GATHER, 0, 0),
166     X86_INTRINSIC_DATA(avx512_mask_gather3siv8_si, GATHER, 0, 0),
167 
168     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_128, TRUNCATE_TO_MEM_VI8,
169                        X86ISD::VTRUNC, 0),
170     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_256, TRUNCATE_TO_MEM_VI8,
171                        X86ISD::VTRUNC, 0),
172     X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_512, TRUNCATE_TO_MEM_VI8,
173                        X86ISD::VTRUNC, 0),
174     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_128, TRUNCATE_TO_MEM_VI16,
175                        X86ISD::VTRUNC, 0),
176     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_256, TRUNCATE_TO_MEM_VI16,
177                        X86ISD::VTRUNC, 0),
178     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_512, TRUNCATE_TO_MEM_VI16,
179                        X86ISD::VTRUNC, 0),
180     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_128, TRUNCATE_TO_MEM_VI8,
181                        X86ISD::VTRUNC, 0),
182     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_256, TRUNCATE_TO_MEM_VI8,
183                        X86ISD::VTRUNC, 0),
184     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_512, TRUNCATE_TO_MEM_VI8,
185                        X86ISD::VTRUNC, 0),
186     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_128, TRUNCATE_TO_MEM_VI32,
187                        X86ISD::VTRUNC, 0),
188     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_256, TRUNCATE_TO_MEM_VI32,
189                        X86ISD::VTRUNC, 0),
190     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_512, TRUNCATE_TO_MEM_VI32,
191                        X86ISD::VTRUNC, 0),
192     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_128, TRUNCATE_TO_MEM_VI16,
193                        X86ISD::VTRUNC, 0),
194     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_256, TRUNCATE_TO_MEM_VI16,
195                        X86ISD::VTRUNC, 0),
196     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_512, TRUNCATE_TO_MEM_VI16,
197                        X86ISD::VTRUNC, 0),
198     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_128, TRUNCATE_TO_MEM_VI8,
199                        X86ISD::VTRUNC, 0),
200     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_256, TRUNCATE_TO_MEM_VI8,
201                        X86ISD::VTRUNC, 0),
202     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_512, TRUNCATE_TO_MEM_VI8,
203                        X86ISD::VTRUNC, 0),
204     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_128, TRUNCATE_TO_MEM_VI8,
205                        X86ISD::VTRUNCS, 0),
206     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_256, TRUNCATE_TO_MEM_VI8,
207                        X86ISD::VTRUNCS, 0),
208     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_512, TRUNCATE_TO_MEM_VI8,
209                        X86ISD::VTRUNCS, 0),
210     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_128, TRUNCATE_TO_MEM_VI16,
211                        X86ISD::VTRUNCS, 0),
212     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_256, TRUNCATE_TO_MEM_VI16,
213                        X86ISD::VTRUNCS, 0),
214     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_512, TRUNCATE_TO_MEM_VI16,
215                        X86ISD::VTRUNCS, 0),
216     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_128, TRUNCATE_TO_MEM_VI8,
217                        X86ISD::VTRUNCS, 0),
218     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_256, TRUNCATE_TO_MEM_VI8,
219                        X86ISD::VTRUNCS, 0),
220     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_512, TRUNCATE_TO_MEM_VI8,
221                        X86ISD::VTRUNCS, 0),
222     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_128, TRUNCATE_TO_MEM_VI32,
223                        X86ISD::VTRUNCS, 0),
224     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_256, TRUNCATE_TO_MEM_VI32,
225                        X86ISD::VTRUNCS, 0),
226     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_512, TRUNCATE_TO_MEM_VI32,
227                        X86ISD::VTRUNCS, 0),
228     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_128, TRUNCATE_TO_MEM_VI16,
229                        X86ISD::VTRUNCS, 0),
230     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_256, TRUNCATE_TO_MEM_VI16,
231                        X86ISD::VTRUNCS, 0),
232     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_512, TRUNCATE_TO_MEM_VI16,
233                        X86ISD::VTRUNCS, 0),
234     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_128, TRUNCATE_TO_MEM_VI8,
235                        X86ISD::VTRUNCS, 0),
236     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_256, TRUNCATE_TO_MEM_VI8,
237                        X86ISD::VTRUNCS, 0),
238     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_512, TRUNCATE_TO_MEM_VI8,
239                        X86ISD::VTRUNCS, 0),
240     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_128, TRUNCATE_TO_MEM_VI8,
241                        X86ISD::VTRUNCUS, 0),
242     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_256, TRUNCATE_TO_MEM_VI8,
243                        X86ISD::VTRUNCUS, 0),
244     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_512, TRUNCATE_TO_MEM_VI8,
245                        X86ISD::VTRUNCUS, 0),
246     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_128, TRUNCATE_TO_MEM_VI16,
247                        X86ISD::VTRUNCUS, 0),
248     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_256, TRUNCATE_TO_MEM_VI16,
249                        X86ISD::VTRUNCUS, 0),
250     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_512, TRUNCATE_TO_MEM_VI16,
251                        X86ISD::VTRUNCUS, 0),
252     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_128, TRUNCATE_TO_MEM_VI8,
253                        X86ISD::VTRUNCUS, 0),
254     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_256, TRUNCATE_TO_MEM_VI8,
255                        X86ISD::VTRUNCUS, 0),
256     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_512, TRUNCATE_TO_MEM_VI8,
257                        X86ISD::VTRUNCUS, 0),
258     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_128, TRUNCATE_TO_MEM_VI32,
259                        X86ISD::VTRUNCUS, 0),
260     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_256, TRUNCATE_TO_MEM_VI32,
261                        X86ISD::VTRUNCUS, 0),
262     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_512, TRUNCATE_TO_MEM_VI32,
263                        X86ISD::VTRUNCUS, 0),
264     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_128, TRUNCATE_TO_MEM_VI16,
265                        X86ISD::VTRUNCUS, 0),
266     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_256, TRUNCATE_TO_MEM_VI16,
267                        X86ISD::VTRUNCUS, 0),
268     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_512, TRUNCATE_TO_MEM_VI16,
269                        X86ISD::VTRUNCUS, 0),
270     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_128, TRUNCATE_TO_MEM_VI8,
271                        X86ISD::VTRUNCUS, 0),
272     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_256, TRUNCATE_TO_MEM_VI8,
273                        X86ISD::VTRUNCUS, 0),
274     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_512, TRUNCATE_TO_MEM_VI8,
275                        X86ISD::VTRUNCUS, 0),
276 
277     X86_INTRINSIC_DATA(avx512_mask_scatter_dpd_512, SCATTER, 0, 0),
278     X86_INTRINSIC_DATA(avx512_mask_scatter_dpi_512, SCATTER, 0, 0),
279     X86_INTRINSIC_DATA(avx512_mask_scatter_dpq_512, SCATTER, 0, 0),
280     X86_INTRINSIC_DATA(avx512_mask_scatter_dps_512, SCATTER, 0, 0),
281     X86_INTRINSIC_DATA(avx512_mask_scatter_qpd_512, SCATTER, 0, 0),
282     X86_INTRINSIC_DATA(avx512_mask_scatter_qpi_512, SCATTER, 0, 0),
283     X86_INTRINSIC_DATA(avx512_mask_scatter_qpq_512, SCATTER, 0, 0),
284     X86_INTRINSIC_DATA(avx512_mask_scatter_qps_512, SCATTER, 0, 0),
285     X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_df, SCATTER, 0, 0),
286     X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_di, SCATTER, 0, 0),
287     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_df, SCATTER, 0, 0),
288     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_di, SCATTER, 0, 0),
289     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_sf, SCATTER, 0, 0),
290     X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_si, SCATTER, 0, 0),
291     X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_sf, SCATTER, 0, 0),
292     X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_si, SCATTER, 0, 0),
293     X86_INTRINSIC_DATA(avx512_mask_scattersiv2_df, SCATTER, 0, 0),
294     X86_INTRINSIC_DATA(avx512_mask_scattersiv2_di, SCATTER, 0, 0),
295     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_df, SCATTER, 0, 0),
296     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_di, SCATTER, 0, 0),
297     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_sf, SCATTER, 0, 0),
298     X86_INTRINSIC_DATA(avx512_mask_scattersiv4_si, SCATTER, 0, 0),
299     X86_INTRINSIC_DATA(avx512_mask_scattersiv8_sf, SCATTER, 0, 0),
300     X86_INTRINSIC_DATA(avx512_mask_scattersiv8_si, SCATTER, 0, 0),
301 
302     X86_INTRINSIC_DATA(avx512_scatter_dpd_512, SCATTER, 0, 0),
303     X86_INTRINSIC_DATA(avx512_scatter_dpi_512, SCATTER, 0, 0),
304     X86_INTRINSIC_DATA(avx512_scatter_dpq_512, SCATTER, 0, 0),
305     X86_INTRINSIC_DATA(avx512_scatter_dps_512, SCATTER, 0, 0),
306     X86_INTRINSIC_DATA(avx512_scatter_qpd_512, SCATTER, 0, 0),
307     X86_INTRINSIC_DATA(avx512_scatter_qpi_512, SCATTER, 0, 0),
308     X86_INTRINSIC_DATA(avx512_scatter_qpq_512, SCATTER, 0, 0),
309     X86_INTRINSIC_DATA(avx512_scatter_qps_512, SCATTER, 0, 0),
310     X86_INTRINSIC_DATA(avx512_scatterdiv2_df, SCATTER, 0, 0),
311     X86_INTRINSIC_DATA(avx512_scatterdiv2_di, SCATTER, 0, 0),
312     X86_INTRINSIC_DATA(avx512_scatterdiv4_df, SCATTER, 0, 0),
313     X86_INTRINSIC_DATA(avx512_scatterdiv4_di, SCATTER, 0, 0),
314     X86_INTRINSIC_DATA(avx512_scatterdiv4_sf, SCATTER, 0, 0),
315     X86_INTRINSIC_DATA(avx512_scatterdiv4_si, SCATTER, 0, 0),
316     X86_INTRINSIC_DATA(avx512_scatterdiv8_sf, SCATTER, 0, 0),
317     X86_INTRINSIC_DATA(avx512_scatterdiv8_si, SCATTER, 0, 0),
318     X86_INTRINSIC_DATA(avx512_scattersiv2_df, SCATTER, 0, 0),
319     X86_INTRINSIC_DATA(avx512_scattersiv2_di, SCATTER, 0, 0),
320     X86_INTRINSIC_DATA(avx512_scattersiv4_df, SCATTER, 0, 0),
321     X86_INTRINSIC_DATA(avx512_scattersiv4_di, SCATTER, 0, 0),
322     X86_INTRINSIC_DATA(avx512_scattersiv4_sf, SCATTER, 0, 0),
323     X86_INTRINSIC_DATA(avx512_scattersiv4_si, SCATTER, 0, 0),
324     X86_INTRINSIC_DATA(avx512_scattersiv8_sf, SCATTER, 0, 0),
325     X86_INTRINSIC_DATA(avx512_scattersiv8_si, SCATTER, 0, 0),
326     X86_INTRINSIC_DATA(rdpmc, RDPMC, X86::RDPMC, 0),
327     X86_INTRINSIC_DATA(rdpru, RDPRU, X86::RDPRU, 0),
328     X86_INTRINSIC_DATA(rdrand_16, RDRAND, X86ISD::RDRAND, 0),
329     X86_INTRINSIC_DATA(rdrand_32, RDRAND, X86ISD::RDRAND, 0),
330     X86_INTRINSIC_DATA(rdrand_64, RDRAND, X86ISD::RDRAND, 0),
331     X86_INTRINSIC_DATA(rdseed_16, RDSEED, X86ISD::RDSEED, 0),
332     X86_INTRINSIC_DATA(rdseed_32, RDSEED, X86ISD::RDSEED, 0),
333     X86_INTRINSIC_DATA(rdseed_64, RDSEED, X86ISD::RDSEED, 0),
334     X86_INTRINSIC_DATA(rdtsc, RDTSC, X86::RDTSC, 0),
335     X86_INTRINSIC_DATA(rdtscp, RDTSC, X86::RDTSCP, 0),
336     X86_INTRINSIC_DATA(xgetbv, XGETBV, X86::XGETBV, 0),
337     X86_INTRINSIC_DATA(xtest, XTEST, X86ISD::XTEST, 0),
338 };
339 
340 /*
341  * Find Intrinsic data by intrinsic ID
342  */
getIntrinsicWithChain(unsigned IntNo)343 static const IntrinsicData *getIntrinsicWithChain(unsigned IntNo) {
344   const IntrinsicData *Data = lower_bound(IntrinsicsWithChain, IntNo);
345   if (Data != std::end(IntrinsicsWithChain) && Data->Id == IntNo)
346     return Data;
347   return nullptr;
348 }
349 
350 /*
351  * IntrinsicsWithoutChain - the table should be sorted by Intrinsic ID - in
352  * the alphabetical order.
353  */
354 static const IntrinsicData IntrinsicsWithoutChain[] = {
355     X86_INTRINSIC_DATA(addcarry_32, ADX, X86ISD::ADC, X86ISD::ADD),
356     X86_INTRINSIC_DATA(addcarry_64, ADX, X86ISD::ADC, X86ISD::ADD),
357     X86_INTRINSIC_DATA(avx_addsub_pd_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
358     X86_INTRINSIC_DATA(avx_addsub_ps_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
359     X86_INTRINSIC_DATA(avx_blendv_pd_256, BLENDV, X86ISD::BLENDV, 0),
360     X86_INTRINSIC_DATA(avx_blendv_ps_256, BLENDV, X86ISD::BLENDV, 0),
361     X86_INTRINSIC_DATA(avx_cmp_pd_256, INTR_TYPE_3OP, X86ISD::CMPP, 0),
362     X86_INTRINSIC_DATA(avx_cmp_ps_256, INTR_TYPE_3OP, X86ISD::CMPP, 0),
363     X86_INTRINSIC_DATA(avx_cvt_pd2_ps_256, INTR_TYPE_1OP, X86ISD::VFPROUND, 0),
364     X86_INTRINSIC_DATA(avx_cvt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
365     X86_INTRINSIC_DATA(avx_cvt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
366     X86_INTRINSIC_DATA(avx_cvtt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
367     X86_INTRINSIC_DATA(avx_cvtt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
368     X86_INTRINSIC_DATA(avx_hadd_pd_256, INTR_TYPE_2OP, X86ISD::FHADD, 0),
369     X86_INTRINSIC_DATA(avx_hadd_ps_256, INTR_TYPE_2OP, X86ISD::FHADD, 0),
370     X86_INTRINSIC_DATA(avx_hsub_pd_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
371     X86_INTRINSIC_DATA(avx_hsub_ps_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
372     X86_INTRINSIC_DATA(avx_max_pd_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
373     X86_INTRINSIC_DATA(avx_max_ps_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
374     X86_INTRINSIC_DATA(avx_min_pd_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
375     X86_INTRINSIC_DATA(avx_min_ps_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
376     X86_INTRINSIC_DATA(avx_movmsk_pd_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
377     X86_INTRINSIC_DATA(avx_movmsk_ps_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
378     X86_INTRINSIC_DATA(avx_rcp_ps_256, INTR_TYPE_1OP, X86ISD::FRCP, 0),
379     X86_INTRINSIC_DATA(avx_round_pd_256, ROUNDP, X86ISD::VRNDSCALE, 0),
380     X86_INTRINSIC_DATA(avx_round_ps_256, ROUNDP, X86ISD::VRNDSCALE, 0),
381     X86_INTRINSIC_DATA(avx_rsqrt_ps_256, INTR_TYPE_1OP, X86ISD::FRSQRT, 0),
382     X86_INTRINSIC_DATA(avx_vpermilvar_pd, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0),
383     X86_INTRINSIC_DATA(avx_vpermilvar_pd_256, INTR_TYPE_2OP, X86ISD::VPERMILPV,
384                        0),
385     X86_INTRINSIC_DATA(avx_vpermilvar_ps, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0),
386     X86_INTRINSIC_DATA(avx_vpermilvar_ps_256, INTR_TYPE_2OP, X86ISD::VPERMILPV,
387                        0),
388     X86_INTRINSIC_DATA(avx2_packssdw, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
389     X86_INTRINSIC_DATA(avx2_packsswb, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
390     X86_INTRINSIC_DATA(avx2_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
391     X86_INTRINSIC_DATA(avx2_packuswb, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
392     X86_INTRINSIC_DATA(avx2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
393     X86_INTRINSIC_DATA(avx2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
394     X86_INTRINSIC_DATA(avx2_pblendvb, BLENDV, X86ISD::BLENDV, 0),
395     X86_INTRINSIC_DATA(avx2_permd, VPERM_2OP, X86ISD::VPERMV, 0),
396     X86_INTRINSIC_DATA(avx2_permps, VPERM_2OP, X86ISD::VPERMV, 0),
397     X86_INTRINSIC_DATA(avx2_phadd_d, INTR_TYPE_2OP, X86ISD::HADD, 0),
398     X86_INTRINSIC_DATA(avx2_phadd_w, INTR_TYPE_2OP, X86ISD::HADD, 0),
399     X86_INTRINSIC_DATA(avx2_phsub_d, INTR_TYPE_2OP, X86ISD::HSUB, 0),
400     X86_INTRINSIC_DATA(avx2_phsub_w, INTR_TYPE_2OP, X86ISD::HSUB, 0),
401     X86_INTRINSIC_DATA(avx2_pmadd_ub_sw, INTR_TYPE_2OP, X86ISD::VPMADDUBSW, 0),
402     X86_INTRINSIC_DATA(avx2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
403     X86_INTRINSIC_DATA(avx2_pmovmskb, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
404     X86_INTRINSIC_DATA(avx2_pmul_hr_sw, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
405     X86_INTRINSIC_DATA(avx2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0),
406     X86_INTRINSIC_DATA(avx2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0),
407     X86_INTRINSIC_DATA(avx2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
408     X86_INTRINSIC_DATA(avx2_pshuf_b, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
409     X86_INTRINSIC_DATA(avx2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0),
410     X86_INTRINSIC_DATA(avx2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0),
411     X86_INTRINSIC_DATA(avx2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0),
412     X86_INTRINSIC_DATA(avx2_pslli_d, VSHIFT, X86ISD::VSHLI, 0),
413     X86_INTRINSIC_DATA(avx2_pslli_q, VSHIFT, X86ISD::VSHLI, 0),
414     X86_INTRINSIC_DATA(avx2_pslli_w, VSHIFT, X86ISD::VSHLI, 0),
415     X86_INTRINSIC_DATA(avx2_psllv_d, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
416     X86_INTRINSIC_DATA(avx2_psllv_d_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
417     X86_INTRINSIC_DATA(avx2_psllv_q, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
418     X86_INTRINSIC_DATA(avx2_psllv_q_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
419     X86_INTRINSIC_DATA(avx2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0),
420     X86_INTRINSIC_DATA(avx2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0),
421     X86_INTRINSIC_DATA(avx2_psrai_d, VSHIFT, X86ISD::VSRAI, 0),
422     X86_INTRINSIC_DATA(avx2_psrai_w, VSHIFT, X86ISD::VSRAI, 0),
423     X86_INTRINSIC_DATA(avx2_psrav_d, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
424     X86_INTRINSIC_DATA(avx2_psrav_d_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
425     X86_INTRINSIC_DATA(avx2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0),
426     X86_INTRINSIC_DATA(avx2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0),
427     X86_INTRINSIC_DATA(avx2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0),
428     X86_INTRINSIC_DATA(avx2_psrli_d, VSHIFT, X86ISD::VSRLI, 0),
429     X86_INTRINSIC_DATA(avx2_psrli_q, VSHIFT, X86ISD::VSRLI, 0),
430     X86_INTRINSIC_DATA(avx2_psrli_w, VSHIFT, X86ISD::VSRLI, 0),
431     X86_INTRINSIC_DATA(avx2_psrlv_d, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
432     X86_INTRINSIC_DATA(avx2_psrlv_d_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
433     X86_INTRINSIC_DATA(avx2_psrlv_q, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
434     X86_INTRINSIC_DATA(avx2_psrlv_q_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
435     X86_INTRINSIC_DATA(avx2_vpdpbssd_128, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0),
436     X86_INTRINSIC_DATA(avx2_vpdpbssd_256, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0),
437     X86_INTRINSIC_DATA(avx2_vpdpbssds_128, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0),
438     X86_INTRINSIC_DATA(avx2_vpdpbssds_256, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0),
439     X86_INTRINSIC_DATA(avx2_vpdpbsud_128, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0),
440     X86_INTRINSIC_DATA(avx2_vpdpbsud_256, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0),
441     X86_INTRINSIC_DATA(avx2_vpdpbsuds_128, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0),
442     X86_INTRINSIC_DATA(avx2_vpdpbsuds_256, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0),
443     X86_INTRINSIC_DATA(avx2_vpdpbuud_128, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0),
444     X86_INTRINSIC_DATA(avx2_vpdpbuud_256, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0),
445     X86_INTRINSIC_DATA(avx2_vpdpbuuds_128, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0),
446     X86_INTRINSIC_DATA(avx2_vpdpbuuds_256, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0),
447     X86_INTRINSIC_DATA(avx512_add_pd_512, INTR_TYPE_2OP, ISD::FADD,
448                        X86ISD::FADD_RND),
449     X86_INTRINSIC_DATA(avx512_add_ps_512, INTR_TYPE_2OP, ISD::FADD,
450                        X86ISD::FADD_RND),
451     X86_INTRINSIC_DATA(avx512_conflict_d_128, INTR_TYPE_1OP, X86ISD::CONFLICT,
452                        0),
453     X86_INTRINSIC_DATA(avx512_conflict_d_256, INTR_TYPE_1OP, X86ISD::CONFLICT,
454                        0),
455     X86_INTRINSIC_DATA(avx512_conflict_d_512, INTR_TYPE_1OP, X86ISD::CONFLICT,
456                        0),
457     X86_INTRINSIC_DATA(avx512_conflict_q_128, INTR_TYPE_1OP, X86ISD::CONFLICT,
458                        0),
459     X86_INTRINSIC_DATA(avx512_conflict_q_256, INTR_TYPE_1OP, X86ISD::CONFLICT,
460                        0),
461     X86_INTRINSIC_DATA(avx512_conflict_q_512, INTR_TYPE_1OP, X86ISD::CONFLICT,
462                        0),
463     X86_INTRINSIC_DATA(avx512_cvtsi2sd64, INTR_TYPE_2OP,
464                        X86ISD::SCALAR_SINT_TO_FP,
465                        X86ISD::SCALAR_SINT_TO_FP_RND),
466     X86_INTRINSIC_DATA(avx512_cvtsi2ss32, INTR_TYPE_2OP,
467                        X86ISD::SCALAR_SINT_TO_FP,
468                        X86ISD::SCALAR_SINT_TO_FP_RND),
469     X86_INTRINSIC_DATA(avx512_cvtsi2ss64, INTR_TYPE_2OP,
470                        X86ISD::SCALAR_SINT_TO_FP,
471                        X86ISD::SCALAR_SINT_TO_FP_RND),
472     X86_INTRINSIC_DATA(avx512_cvttsd2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
473                        X86ISD::CVTTS2SI_SAE),
474     X86_INTRINSIC_DATA(avx512_cvttsd2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
475                        X86ISD::CVTTS2SI_SAE),
476     X86_INTRINSIC_DATA(avx512_cvttsd2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
477                        X86ISD::CVTTS2UI_SAE),
478     X86_INTRINSIC_DATA(avx512_cvttsd2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
479                        X86ISD::CVTTS2UI_SAE),
480     X86_INTRINSIC_DATA(avx512_cvttss2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
481                        X86ISD::CVTTS2SI_SAE),
482     X86_INTRINSIC_DATA(avx512_cvttss2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI,
483                        X86ISD::CVTTS2SI_SAE),
484     X86_INTRINSIC_DATA(avx512_cvttss2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
485                        X86ISD::CVTTS2UI_SAE),
486     X86_INTRINSIC_DATA(avx512_cvttss2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI,
487                        X86ISD::CVTTS2UI_SAE),
488     X86_INTRINSIC_DATA(avx512_cvtusi2ss, INTR_TYPE_2OP,
489                        X86ISD::SCALAR_UINT_TO_FP,
490                        X86ISD::SCALAR_UINT_TO_FP_RND),
491     X86_INTRINSIC_DATA(avx512_cvtusi642sd, INTR_TYPE_2OP,
492                        X86ISD::SCALAR_UINT_TO_FP,
493                        X86ISD::SCALAR_UINT_TO_FP_RND),
494     X86_INTRINSIC_DATA(avx512_cvtusi642ss, INTR_TYPE_2OP,
495                        X86ISD::SCALAR_UINT_TO_FP,
496                        X86ISD::SCALAR_UINT_TO_FP_RND),
497     X86_INTRINSIC_DATA(avx512_dbpsadbw_128, INTR_TYPE_3OP_IMM8,
498                        X86ISD::DBPSADBW, 0),
499     X86_INTRINSIC_DATA(avx512_dbpsadbw_256, INTR_TYPE_3OP_IMM8,
500                        X86ISD::DBPSADBW, 0),
501     X86_INTRINSIC_DATA(avx512_dbpsadbw_512, INTR_TYPE_3OP_IMM8,
502                        X86ISD::DBPSADBW, 0),
503     X86_INTRINSIC_DATA(avx512_div_pd_512, INTR_TYPE_2OP, ISD::FDIV,
504                        X86ISD::FDIV_RND),
505     X86_INTRINSIC_DATA(avx512_div_ps_512, INTR_TYPE_2OP, ISD::FDIV,
506                        X86ISD::FDIV_RND),
507     X86_INTRINSIC_DATA(avx512_fpclass_pd_128, INTR_TYPE_2OP, X86ISD::VFPCLASS,
508                        0),
509     X86_INTRINSIC_DATA(avx512_fpclass_pd_256, INTR_TYPE_2OP, X86ISD::VFPCLASS,
510                        0),
511     X86_INTRINSIC_DATA(avx512_fpclass_pd_512, INTR_TYPE_2OP, X86ISD::VFPCLASS,
512                        0),
513     X86_INTRINSIC_DATA(avx512_fpclass_ps_128, INTR_TYPE_2OP, X86ISD::VFPCLASS,
514                        0),
515     X86_INTRINSIC_DATA(avx512_fpclass_ps_256, INTR_TYPE_2OP, X86ISD::VFPCLASS,
516                        0),
517     X86_INTRINSIC_DATA(avx512_fpclass_ps_512, INTR_TYPE_2OP, X86ISD::VFPCLASS,
518                        0),
519     X86_INTRINSIC_DATA(avx512_kadd_b, INTR_TYPE_2OP, X86ISD::KADD, 0),
520     X86_INTRINSIC_DATA(avx512_kadd_d, INTR_TYPE_2OP, X86ISD::KADD, 0),
521     X86_INTRINSIC_DATA(avx512_kadd_q, INTR_TYPE_2OP, X86ISD::KADD, 0),
522     X86_INTRINSIC_DATA(avx512_kadd_w, INTR_TYPE_2OP, X86ISD::KADD, 0),
523     X86_INTRINSIC_DATA(avx512_mask_add_sd_round, INTR_TYPE_SCALAR_MASK,
524                        X86ISD::FADDS, X86ISD::FADDS_RND),
525     X86_INTRINSIC_DATA(avx512_mask_add_ss_round, INTR_TYPE_SCALAR_MASK,
526                        X86ISD::FADDS, X86ISD::FADDS_RND),
527     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_128, CMP_MASK_CC, X86ISD::CMPMM, 0),
528     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_256, CMP_MASK_CC, X86ISD::CMPMM, 0),
529     X86_INTRINSIC_DATA(avx512_mask_cmp_pd_512, CMP_MASK_CC, X86ISD::CMPMM,
530                        X86ISD::CMPMM_SAE),
531     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_128, CMP_MASK_CC, X86ISD::CMPMM, 0),
532     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_256, CMP_MASK_CC, X86ISD::CMPMM, 0),
533     X86_INTRINSIC_DATA(avx512_mask_cmp_ps_512, CMP_MASK_CC, X86ISD::CMPMM,
534                        X86ISD::CMPMM_SAE),
535     X86_INTRINSIC_DATA(avx512_mask_cmp_sd, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM,
536                        X86ISD::FSETCCM_SAE),
537     X86_INTRINSIC_DATA(avx512_mask_cmp_ss, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM,
538                        X86ISD::FSETCCM_SAE),
539 
540     X86_INTRINSIC_DATA(avx512_mask_compress, COMPRESS_EXPAND_IN_REG,
541                        X86ISD::COMPRESS, 0),
542     X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_128, CVTPD2DQ_MASK, X86ISD::CVTP2SI,
543                        X86ISD::MCVTP2SI),
544     X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_512, INTR_TYPE_1OP_MASK,
545                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
546     X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps, CVTPD2PS_MASK, X86ISD::VFPROUND,
547                        X86ISD::VMFPROUND),
548     X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps_512, INTR_TYPE_1OP_MASK,
549                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
550     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_128, INTR_TYPE_1OP_MASK,
551                        X86ISD::CVTP2SI, 0),
552     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_256, INTR_TYPE_1OP_MASK,
553                        X86ISD::CVTP2SI, 0),
554     X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_512, INTR_TYPE_1OP_MASK,
555                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
556     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_128, CVTPD2DQ_MASK,
557                        X86ISD::CVTP2UI, X86ISD::MCVTP2UI),
558     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_256, INTR_TYPE_1OP_MASK,
559                        X86ISD::CVTP2UI, 0),
560     X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_512, INTR_TYPE_1OP_MASK,
561                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
562     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_128, INTR_TYPE_1OP_MASK,
563                        X86ISD::CVTP2UI, 0),
564     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_256, INTR_TYPE_1OP_MASK,
565                        X86ISD::CVTP2UI, 0),
566     X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_512, INTR_TYPE_1OP_MASK,
567                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
568     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_128, INTR_TYPE_1OP_MASK,
569                        X86ISD::CVTP2SI, 0),
570     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_256, INTR_TYPE_1OP_MASK,
571                        X86ISD::CVTP2SI, 0),
572     X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_512, INTR_TYPE_1OP_MASK,
573                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
574     X86_INTRINSIC_DATA(avx512_mask_cvtps2pd_512, INTR_TYPE_1OP_MASK_SAE,
575                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
576     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_128, INTR_TYPE_1OP_MASK,
577                        X86ISD::CVTP2SI, 0),
578     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_256, INTR_TYPE_1OP_MASK,
579                        X86ISD::CVTP2SI, 0),
580     X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_512, INTR_TYPE_1OP_MASK,
581                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
582     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_128, INTR_TYPE_1OP_MASK,
583                        X86ISD::CVTP2UI, 0),
584     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_256, INTR_TYPE_1OP_MASK,
585                        X86ISD::CVTP2UI, 0),
586     X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_512, INTR_TYPE_1OP_MASK,
587                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
588     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_128, INTR_TYPE_1OP_MASK,
589                        X86ISD::CVTP2UI, 0),
590     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_256, INTR_TYPE_1OP_MASK,
591                        X86ISD::CVTP2UI, 0),
592     X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_512, INTR_TYPE_1OP_MASK,
593                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
594     X86_INTRINSIC_DATA(avx512_mask_cvtqq2ps_128, CVTQQ2PS_MASK, X86ISD::CVTSI2P,
595                        X86ISD::MCVTSI2P),
596     X86_INTRINSIC_DATA(avx512_mask_cvtsd2ss_round, INTR_TYPE_SCALAR_MASK_RND,
597                        X86ISD::VFPROUNDS, X86ISD::VFPROUNDS_RND),
598     X86_INTRINSIC_DATA(avx512_mask_cvtss2sd_round, INTR_TYPE_SCALAR_MASK_SAE,
599                        X86ISD::VFPEXTS, X86ISD::VFPEXTS_SAE),
600     X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_128, CVTPD2DQ_MASK,
601                        X86ISD::CVTTP2SI, X86ISD::MCVTTP2SI),
602     X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_512, INTR_TYPE_1OP_MASK_SAE,
603                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
604     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_128, INTR_TYPE_1OP_MASK,
605                        X86ISD::CVTTP2SI, 0),
606     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_256, INTR_TYPE_1OP_MASK,
607                        X86ISD::CVTTP2SI, 0),
608     X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_512, INTR_TYPE_1OP_MASK_SAE,
609                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
610     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_128, CVTPD2DQ_MASK,
611                        X86ISD::CVTTP2UI, X86ISD::MCVTTP2UI),
612     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_256, INTR_TYPE_1OP_MASK,
613                        X86ISD::CVTTP2UI, 0),
614     X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_512, INTR_TYPE_1OP_MASK_SAE,
615                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
616     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_128, INTR_TYPE_1OP_MASK,
617                        X86ISD::CVTTP2UI, 0),
618     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_256, INTR_TYPE_1OP_MASK,
619                        X86ISD::CVTTP2UI, 0),
620     X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_512, INTR_TYPE_1OP_MASK_SAE,
621                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
622     X86_INTRINSIC_DATA(avx512_mask_cvttps2dq_512, INTR_TYPE_1OP_MASK_SAE,
623                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
624     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_128, INTR_TYPE_1OP_MASK,
625                        X86ISD::CVTTP2SI, 0),
626     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_256, INTR_TYPE_1OP_MASK,
627                        X86ISD::CVTTP2SI, 0),
628     X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_512, INTR_TYPE_1OP_MASK_SAE,
629                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
630     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_128, INTR_TYPE_1OP_MASK,
631                        X86ISD::CVTTP2UI, 0),
632     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_256, INTR_TYPE_1OP_MASK,
633                        X86ISD::CVTTP2UI, 0),
634     X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_512, INTR_TYPE_1OP_MASK_SAE,
635                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
636     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_128, INTR_TYPE_1OP_MASK,
637                        X86ISD::CVTTP2UI, 0),
638     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_256, INTR_TYPE_1OP_MASK,
639                        X86ISD::CVTTP2UI, 0),
640     X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_512, INTR_TYPE_1OP_MASK_SAE,
641                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
642     X86_INTRINSIC_DATA(avx512_mask_cvtuqq2ps_128, CVTQQ2PS_MASK,
643                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
644     X86_INTRINSIC_DATA(avx512_mask_div_sd_round, INTR_TYPE_SCALAR_MASK,
645                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
646     X86_INTRINSIC_DATA(avx512_mask_div_ss_round, INTR_TYPE_SCALAR_MASK,
647                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
648     X86_INTRINSIC_DATA(avx512_mask_expand, COMPRESS_EXPAND_IN_REG,
649                        X86ISD::EXPAND, 0),
650     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_128, FIXUPIMM, X86ISD::VFIXUPIMM,
651                        0),
652     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_256, FIXUPIMM, X86ISD::VFIXUPIMM,
653                        0),
654     X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_512, FIXUPIMM, X86ISD::VFIXUPIMM,
655                        X86ISD::VFIXUPIMM_SAE),
656     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_128, FIXUPIMM, X86ISD::VFIXUPIMM,
657                        0),
658     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_256, FIXUPIMM, X86ISD::VFIXUPIMM,
659                        0),
660     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_512, FIXUPIMM, X86ISD::VFIXUPIMM,
661                        X86ISD::VFIXUPIMM_SAE),
662     X86_INTRINSIC_DATA(avx512_mask_fixupimm_sd, FIXUPIMM, X86ISD::VFIXUPIMMS,
663                        X86ISD::VFIXUPIMMS_SAE),
664     X86_INTRINSIC_DATA(avx512_mask_fixupimm_ss, FIXUPIMM, X86ISD::VFIXUPIMMS,
665                        X86ISD::VFIXUPIMMS_SAE),
666     X86_INTRINSIC_DATA(avx512_mask_fpclass_sd, FPCLASSS, X86ISD::VFPCLASSS, 0),
667     X86_INTRINSIC_DATA(avx512_mask_fpclass_ss, FPCLASSS, X86ISD::VFPCLASSS, 0),
668     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_128, INTR_TYPE_1OP_MASK,
669                        X86ISD::FGETEXP, 0),
670     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_256, INTR_TYPE_1OP_MASK,
671                        X86ISD::FGETEXP, 0),
672     X86_INTRINSIC_DATA(avx512_mask_getexp_pd_512, INTR_TYPE_1OP_MASK_SAE,
673                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
674     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_128, INTR_TYPE_1OP_MASK,
675                        X86ISD::FGETEXP, 0),
676     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_256, INTR_TYPE_1OP_MASK,
677                        X86ISD::FGETEXP, 0),
678     X86_INTRINSIC_DATA(avx512_mask_getexp_ps_512, INTR_TYPE_1OP_MASK_SAE,
679                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
680     X86_INTRINSIC_DATA(avx512_mask_getexp_sd, INTR_TYPE_SCALAR_MASK_SAE,
681                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
682     X86_INTRINSIC_DATA(avx512_mask_getexp_ss, INTR_TYPE_SCALAR_MASK_SAE,
683                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
684     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_128, INTR_TYPE_2OP_MASK_SAE,
685                        X86ISD::VGETMANT, 0),
686     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_256, INTR_TYPE_2OP_MASK_SAE,
687                        X86ISD::VGETMANT, 0),
688     X86_INTRINSIC_DATA(avx512_mask_getmant_pd_512, INTR_TYPE_2OP_MASK_SAE,
689                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
690     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_128, INTR_TYPE_2OP_MASK_SAE,
691                        X86ISD::VGETMANT, 0),
692     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_256, INTR_TYPE_2OP_MASK_SAE,
693                        X86ISD::VGETMANT, 0),
694     X86_INTRINSIC_DATA(avx512_mask_getmant_ps_512, INTR_TYPE_2OP_MASK_SAE,
695                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
696     X86_INTRINSIC_DATA(avx512_mask_getmant_sd, INTR_TYPE_3OP_SCALAR_MASK_SAE,
697                        X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE),
698     X86_INTRINSIC_DATA(avx512_mask_getmant_ss, INTR_TYPE_3OP_SCALAR_MASK_SAE,
699                        X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE),
700     X86_INTRINSIC_DATA(avx512_mask_max_sd_round, INTR_TYPE_SCALAR_MASK_SAE,
701                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
702     X86_INTRINSIC_DATA(avx512_mask_max_ss_round, INTR_TYPE_SCALAR_MASK_SAE,
703                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
704     X86_INTRINSIC_DATA(avx512_mask_min_sd_round, INTR_TYPE_SCALAR_MASK_SAE,
705                        X86ISD::FMINS, X86ISD::FMINS_SAE),
706     X86_INTRINSIC_DATA(avx512_mask_min_ss_round, INTR_TYPE_SCALAR_MASK_SAE,
707                        X86ISD::FMINS, X86ISD::FMINS_SAE),
708     X86_INTRINSIC_DATA(avx512_mask_mul_sd_round, INTR_TYPE_SCALAR_MASK,
709                        X86ISD::FMULS, X86ISD::FMULS_RND),
710     X86_INTRINSIC_DATA(avx512_mask_mul_ss_round, INTR_TYPE_SCALAR_MASK,
711                        X86ISD::FMULS, X86ISD::FMULS_RND),
712     X86_INTRINSIC_DATA(avx512_mask_pmov_db_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
713                        X86ISD::VMTRUNC),
714     X86_INTRINSIC_DATA(avx512_mask_pmov_db_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
715                        X86ISD::VMTRUNC),
716     X86_INTRINSIC_DATA(avx512_mask_pmov_db_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
717                        X86ISD::VMTRUNC),
718     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
719                        X86ISD::VMTRUNC),
720     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_256, TRUNCATE_TO_REG, ISD::TRUNCATE,
721                        X86ISD::VMTRUNC),
722     X86_INTRINSIC_DATA(avx512_mask_pmov_dw_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
723                        X86ISD::VMTRUNC),
724     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
725                        X86ISD::VMTRUNC),
726     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
727                        X86ISD::VMTRUNC),
728     X86_INTRINSIC_DATA(avx512_mask_pmov_qb_512, TRUNCATE_TO_REG, X86ISD::VTRUNC,
729                        X86ISD::VMTRUNC),
730     X86_INTRINSIC_DATA(avx512_mask_pmov_qd_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
731                        X86ISD::VMTRUNC),
732     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
733                        X86ISD::VMTRUNC),
734     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_256, TRUNCATE_TO_REG, X86ISD::VTRUNC,
735                        X86ISD::VMTRUNC),
736     X86_INTRINSIC_DATA(avx512_mask_pmov_qw_512, TRUNCATE_TO_REG, ISD::TRUNCATE,
737                        X86ISD::VMTRUNC),
738     X86_INTRINSIC_DATA(avx512_mask_pmov_wb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC,
739                        X86ISD::VMTRUNC),
740     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_128, TRUNCATE_TO_REG,
741                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
742     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_256, TRUNCATE_TO_REG,
743                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
744     X86_INTRINSIC_DATA(avx512_mask_pmovs_db_512, TRUNCATE_TO_REG,
745                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
746     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_128, TRUNCATE_TO_REG,
747                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
748     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_256, TRUNCATE_TO_REG,
749                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
750     X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_512, TRUNCATE_TO_REG,
751                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
752     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_128, TRUNCATE_TO_REG,
753                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
754     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_256, TRUNCATE_TO_REG,
755                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
756     X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_512, TRUNCATE_TO_REG,
757                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
758     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_128, TRUNCATE_TO_REG,
759                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
760     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_256, INTR_TYPE_1OP_MASK,
761                        X86ISD::VTRUNCS, 0),
762     X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_512, INTR_TYPE_1OP_MASK,
763                        X86ISD::VTRUNCS, 0),
764     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_128, TRUNCATE_TO_REG,
765                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
766     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_256, TRUNCATE_TO_REG,
767                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
768     X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_512, TRUNCATE_TO_REG,
769                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
770     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_128, TRUNCATE_TO_REG,
771                        X86ISD::VTRUNCS, X86ISD::VMTRUNCS),
772     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_256, INTR_TYPE_1OP_MASK,
773                        X86ISD::VTRUNCS, 0),
774     X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_512, INTR_TYPE_1OP_MASK,
775                        X86ISD::VTRUNCS, 0),
776     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_128, TRUNCATE_TO_REG,
777                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
778     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_256, TRUNCATE_TO_REG,
779                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
780     X86_INTRINSIC_DATA(avx512_mask_pmovus_db_512, TRUNCATE_TO_REG,
781                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
782     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_128, TRUNCATE_TO_REG,
783                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
784     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_256, TRUNCATE_TO_REG,
785                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
786     X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_512, TRUNCATE_TO_REG,
787                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
788     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_128, TRUNCATE_TO_REG,
789                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
790     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_256, TRUNCATE_TO_REG,
791                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
792     X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_512, TRUNCATE_TO_REG,
793                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
794     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_128, TRUNCATE_TO_REG,
795                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
796     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_256, INTR_TYPE_1OP_MASK,
797                        X86ISD::VTRUNCUS, 0),
798     X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_512, INTR_TYPE_1OP_MASK,
799                        X86ISD::VTRUNCUS, 0),
800     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_128, TRUNCATE_TO_REG,
801                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
802     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_256, TRUNCATE_TO_REG,
803                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
804     X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_512, TRUNCATE_TO_REG,
805                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
806     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_128, TRUNCATE_TO_REG,
807                        X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS),
808     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_256, INTR_TYPE_1OP_MASK,
809                        X86ISD::VTRUNCUS, 0),
810     X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_512, INTR_TYPE_1OP_MASK,
811                        X86ISD::VTRUNCUS, 0),
812     X86_INTRINSIC_DATA(avx512_mask_range_pd_128, INTR_TYPE_3OP_MASK_SAE,
813                        X86ISD::VRANGE, 0),
814     X86_INTRINSIC_DATA(avx512_mask_range_pd_256, INTR_TYPE_3OP_MASK_SAE,
815                        X86ISD::VRANGE, 0),
816     X86_INTRINSIC_DATA(avx512_mask_range_pd_512, INTR_TYPE_3OP_MASK_SAE,
817                        X86ISD::VRANGE, X86ISD::VRANGE_SAE),
818     X86_INTRINSIC_DATA(avx512_mask_range_ps_128, INTR_TYPE_3OP_MASK_SAE,
819                        X86ISD::VRANGE, 0),
820     X86_INTRINSIC_DATA(avx512_mask_range_ps_256, INTR_TYPE_3OP_MASK_SAE,
821                        X86ISD::VRANGE, 0),
822     X86_INTRINSIC_DATA(avx512_mask_range_ps_512, INTR_TYPE_3OP_MASK_SAE,
823                        X86ISD::VRANGE, X86ISD::VRANGE_SAE),
824     X86_INTRINSIC_DATA(avx512_mask_range_sd, INTR_TYPE_SCALAR_MASK,
825                        X86ISD::VRANGES, X86ISD::VRANGES_SAE),
826     X86_INTRINSIC_DATA(avx512_mask_range_ss, INTR_TYPE_SCALAR_MASK,
827                        X86ISD::VRANGES, X86ISD::VRANGES_SAE),
828     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_128, INTR_TYPE_2OP_MASK_SAE,
829                        X86ISD::VREDUCE, 0),
830     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_256, INTR_TYPE_2OP_MASK_SAE,
831                        X86ISD::VREDUCE, 0),
832     X86_INTRINSIC_DATA(avx512_mask_reduce_pd_512, INTR_TYPE_2OP_MASK_SAE,
833                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
834     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_128, INTR_TYPE_2OP_MASK_SAE,
835                        X86ISD::VREDUCE, 0),
836     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_256, INTR_TYPE_2OP_MASK_SAE,
837                        X86ISD::VREDUCE, 0),
838     X86_INTRINSIC_DATA(avx512_mask_reduce_ps_512, INTR_TYPE_2OP_MASK_SAE,
839                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
840     X86_INTRINSIC_DATA(avx512_mask_reduce_sd, INTR_TYPE_SCALAR_MASK,
841                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
842     X86_INTRINSIC_DATA(avx512_mask_reduce_ss, INTR_TYPE_SCALAR_MASK,
843                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
844     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_128, INTR_TYPE_2OP_MASK_SAE,
845                        X86ISD::VRNDSCALE, 0),
846     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_256, INTR_TYPE_2OP_MASK_SAE,
847                        X86ISD::VRNDSCALE, 0),
848     X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_512, INTR_TYPE_2OP_MASK_SAE,
849                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
850     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_128, INTR_TYPE_2OP_MASK_SAE,
851                        X86ISD::VRNDSCALE, 0),
852     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_256, INTR_TYPE_2OP_MASK_SAE,
853                        X86ISD::VRNDSCALE, 0),
854     X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_512, INTR_TYPE_2OP_MASK_SAE,
855                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
856     X86_INTRINSIC_DATA(avx512_mask_rndscale_sd, INTR_TYPE_SCALAR_MASK,
857                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
858     X86_INTRINSIC_DATA(avx512_mask_rndscale_ss, INTR_TYPE_SCALAR_MASK,
859                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
860     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_128, INTR_TYPE_2OP_MASK,
861                        X86ISD::SCALEF, 0),
862     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_256, INTR_TYPE_2OP_MASK,
863                        X86ISD::SCALEF, 0),
864     X86_INTRINSIC_DATA(avx512_mask_scalef_pd_512, INTR_TYPE_2OP_MASK,
865                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
866     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_128, INTR_TYPE_2OP_MASK,
867                        X86ISD::SCALEF, 0),
868     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_256, INTR_TYPE_2OP_MASK,
869                        X86ISD::SCALEF, 0),
870     X86_INTRINSIC_DATA(avx512_mask_scalef_ps_512, INTR_TYPE_2OP_MASK,
871                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
872     X86_INTRINSIC_DATA(avx512_mask_scalef_sd, INTR_TYPE_SCALAR_MASK,
873                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
874     X86_INTRINSIC_DATA(avx512_mask_scalef_ss, INTR_TYPE_SCALAR_MASK,
875                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
876     X86_INTRINSIC_DATA(avx512_mask_sqrt_sd, INTR_TYPE_SCALAR_MASK,
877                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
878     X86_INTRINSIC_DATA(avx512_mask_sqrt_ss, INTR_TYPE_SCALAR_MASK,
879                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
880     X86_INTRINSIC_DATA(avx512_mask_sub_sd_round, INTR_TYPE_SCALAR_MASK,
881                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
882     X86_INTRINSIC_DATA(avx512_mask_sub_ss_round, INTR_TYPE_SCALAR_MASK,
883                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
884     X86_INTRINSIC_DATA(avx512_mask_vcvtph2ps_512, INTR_TYPE_1OP_MASK_SAE,
885                        X86ISD::CVTPH2PS, X86ISD::CVTPH2PS_SAE),
886     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_128, CVTPS2PH_MASK,
887                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
888     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_256, CVTPS2PH_MASK,
889                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
890     X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_512, CVTPS2PH_MASK,
891                        X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
892 
893     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_128, FIXUPIMM_MASKZ,
894                        X86ISD::VFIXUPIMM, 0),
895     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_256, FIXUPIMM_MASKZ,
896                        X86ISD::VFIXUPIMM, 0),
897     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_512, FIXUPIMM_MASKZ,
898                        X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE),
899     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_128, FIXUPIMM_MASKZ,
900                        X86ISD::VFIXUPIMM, 0),
901     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_256, FIXUPIMM_MASKZ,
902                        X86ISD::VFIXUPIMM, 0),
903     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_512, FIXUPIMM_MASKZ,
904                        X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE),
905     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_sd, FIXUPIMM_MASKZ,
906                        X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE),
907     X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ss, FIXUPIMM_MASKZ,
908                        X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE),
909 
910     X86_INTRINSIC_DATA(avx512_max_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
911                        X86ISD::FMAX_SAE),
912     X86_INTRINSIC_DATA(avx512_max_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
913                        X86ISD::FMAX_SAE),
914     X86_INTRINSIC_DATA(avx512_min_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
915                        X86ISD::FMIN_SAE),
916     X86_INTRINSIC_DATA(avx512_min_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
917                        X86ISD::FMIN_SAE),
918     X86_INTRINSIC_DATA(avx512_mul_pd_512, INTR_TYPE_2OP, ISD::FMUL,
919                        X86ISD::FMUL_RND),
920     X86_INTRINSIC_DATA(avx512_mul_ps_512, INTR_TYPE_2OP, ISD::FMUL,
921                        X86ISD::FMUL_RND),
922     X86_INTRINSIC_DATA(avx512_packssdw_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
923     X86_INTRINSIC_DATA(avx512_packsswb_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
924     X86_INTRINSIC_DATA(avx512_packusdw_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
925     X86_INTRINSIC_DATA(avx512_packuswb_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
926     X86_INTRINSIC_DATA(avx512_pavg_b_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
927     X86_INTRINSIC_DATA(avx512_pavg_w_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
928     X86_INTRINSIC_DATA(avx512_permvar_df_256, VPERM_2OP, X86ISD::VPERMV, 0),
929     X86_INTRINSIC_DATA(avx512_permvar_df_512, VPERM_2OP, X86ISD::VPERMV, 0),
930     X86_INTRINSIC_DATA(avx512_permvar_di_256, VPERM_2OP, X86ISD::VPERMV, 0),
931     X86_INTRINSIC_DATA(avx512_permvar_di_512, VPERM_2OP, X86ISD::VPERMV, 0),
932     X86_INTRINSIC_DATA(avx512_permvar_hi_128, VPERM_2OP, X86ISD::VPERMV, 0),
933     X86_INTRINSIC_DATA(avx512_permvar_hi_256, VPERM_2OP, X86ISD::VPERMV, 0),
934     X86_INTRINSIC_DATA(avx512_permvar_hi_512, VPERM_2OP, X86ISD::VPERMV, 0),
935     X86_INTRINSIC_DATA(avx512_permvar_qi_128, VPERM_2OP, X86ISD::VPERMV, 0),
936     X86_INTRINSIC_DATA(avx512_permvar_qi_256, VPERM_2OP, X86ISD::VPERMV, 0),
937     X86_INTRINSIC_DATA(avx512_permvar_qi_512, VPERM_2OP, X86ISD::VPERMV, 0),
938     X86_INTRINSIC_DATA(avx512_permvar_sf_512, VPERM_2OP, X86ISD::VPERMV, 0),
939     X86_INTRINSIC_DATA(avx512_permvar_si_512, VPERM_2OP, X86ISD::VPERMV, 0),
940     X86_INTRINSIC_DATA(avx512_pmaddubs_w_512, INTR_TYPE_2OP, X86ISD::VPMADDUBSW,
941                        0),
942     X86_INTRINSIC_DATA(avx512_pmaddw_d_512, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
943     X86_INTRINSIC_DATA(avx512_pmul_hr_sw_512, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
944     X86_INTRINSIC_DATA(avx512_pmulh_w_512, INTR_TYPE_2OP, ISD::MULHS, 0),
945     X86_INTRINSIC_DATA(avx512_pmulhu_w_512, INTR_TYPE_2OP, ISD::MULHU, 0),
946     X86_INTRINSIC_DATA(avx512_pmultishift_qb_128, INTR_TYPE_2OP,
947                        X86ISD::MULTISHIFT, 0),
948     X86_INTRINSIC_DATA(avx512_pmultishift_qb_256, INTR_TYPE_2OP,
949                        X86ISD::MULTISHIFT, 0),
950     X86_INTRINSIC_DATA(avx512_pmultishift_qb_512, INTR_TYPE_2OP,
951                        X86ISD::MULTISHIFT, 0),
952     X86_INTRINSIC_DATA(avx512_psad_bw_512, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
953     X86_INTRINSIC_DATA(avx512_pshuf_b_512, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
954     X86_INTRINSIC_DATA(avx512_psll_d_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
955     X86_INTRINSIC_DATA(avx512_psll_q_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
956     X86_INTRINSIC_DATA(avx512_psll_w_512, INTR_TYPE_2OP, X86ISD::VSHL, 0),
957     X86_INTRINSIC_DATA(avx512_pslli_d_512, VSHIFT, X86ISD::VSHLI, 0),
958     X86_INTRINSIC_DATA(avx512_pslli_q_512, VSHIFT, X86ISD::VSHLI, 0),
959     X86_INTRINSIC_DATA(avx512_pslli_w_512, VSHIFT, X86ISD::VSHLI, 0),
960     X86_INTRINSIC_DATA(avx512_psllv_d_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
961     X86_INTRINSIC_DATA(avx512_psllv_q_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
962     X86_INTRINSIC_DATA(avx512_psllv_w_128, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
963     X86_INTRINSIC_DATA(avx512_psllv_w_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
964     X86_INTRINSIC_DATA(avx512_psllv_w_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0),
965     X86_INTRINSIC_DATA(avx512_psra_d_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
966     X86_INTRINSIC_DATA(avx512_psra_q_128, INTR_TYPE_2OP, X86ISD::VSRA, 0),
967     X86_INTRINSIC_DATA(avx512_psra_q_256, INTR_TYPE_2OP, X86ISD::VSRA, 0),
968     X86_INTRINSIC_DATA(avx512_psra_q_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
969     X86_INTRINSIC_DATA(avx512_psra_w_512, INTR_TYPE_2OP, X86ISD::VSRA, 0),
970     X86_INTRINSIC_DATA(avx512_psrai_d_512, VSHIFT, X86ISD::VSRAI, 0),
971     X86_INTRINSIC_DATA(avx512_psrai_q_128, VSHIFT, X86ISD::VSRAI, 0),
972     X86_INTRINSIC_DATA(avx512_psrai_q_256, VSHIFT, X86ISD::VSRAI, 0),
973     X86_INTRINSIC_DATA(avx512_psrai_q_512, VSHIFT, X86ISD::VSRAI, 0),
974     X86_INTRINSIC_DATA(avx512_psrai_w_512, VSHIFT, X86ISD::VSRAI, 0),
975     X86_INTRINSIC_DATA(avx512_psrav_d_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
976     X86_INTRINSIC_DATA(avx512_psrav_q_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
977     X86_INTRINSIC_DATA(avx512_psrav_q_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
978     X86_INTRINSIC_DATA(avx512_psrav_q_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
979     X86_INTRINSIC_DATA(avx512_psrav_w_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
980     X86_INTRINSIC_DATA(avx512_psrav_w_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
981     X86_INTRINSIC_DATA(avx512_psrav_w_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0),
982     X86_INTRINSIC_DATA(avx512_psrl_d_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
983     X86_INTRINSIC_DATA(avx512_psrl_q_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
984     X86_INTRINSIC_DATA(avx512_psrl_w_512, INTR_TYPE_2OP, X86ISD::VSRL, 0),
985     X86_INTRINSIC_DATA(avx512_psrli_d_512, VSHIFT, X86ISD::VSRLI, 0),
986     X86_INTRINSIC_DATA(avx512_psrli_q_512, VSHIFT, X86ISD::VSRLI, 0),
987     X86_INTRINSIC_DATA(avx512_psrli_w_512, VSHIFT, X86ISD::VSRLI, 0),
988     X86_INTRINSIC_DATA(avx512_psrlv_d_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
989     X86_INTRINSIC_DATA(avx512_psrlv_q_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
990     X86_INTRINSIC_DATA(avx512_psrlv_w_128, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
991     X86_INTRINSIC_DATA(avx512_psrlv_w_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
992     X86_INTRINSIC_DATA(avx512_psrlv_w_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0),
993     X86_INTRINSIC_DATA(avx512_pternlog_d_128, INTR_TYPE_4OP_IMM8,
994                        X86ISD::VPTERNLOG, 0),
995     X86_INTRINSIC_DATA(avx512_pternlog_d_256, INTR_TYPE_4OP_IMM8,
996                        X86ISD::VPTERNLOG, 0),
997     X86_INTRINSIC_DATA(avx512_pternlog_d_512, INTR_TYPE_4OP_IMM8,
998                        X86ISD::VPTERNLOG, 0),
999     X86_INTRINSIC_DATA(avx512_pternlog_q_128, INTR_TYPE_4OP_IMM8,
1000                        X86ISD::VPTERNLOG, 0),
1001     X86_INTRINSIC_DATA(avx512_pternlog_q_256, INTR_TYPE_4OP_IMM8,
1002                        X86ISD::VPTERNLOG, 0),
1003     X86_INTRINSIC_DATA(avx512_pternlog_q_512, INTR_TYPE_4OP_IMM8,
1004                        X86ISD::VPTERNLOG, 0),
1005     X86_INTRINSIC_DATA(avx512_rcp14_pd_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1006                        0),
1007     X86_INTRINSIC_DATA(avx512_rcp14_pd_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1008                        0),
1009     X86_INTRINSIC_DATA(avx512_rcp14_pd_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1010                        0),
1011     X86_INTRINSIC_DATA(avx512_rcp14_ps_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1012                        0),
1013     X86_INTRINSIC_DATA(avx512_rcp14_ps_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1014                        0),
1015     X86_INTRINSIC_DATA(avx512_rcp14_ps_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14,
1016                        0),
1017     X86_INTRINSIC_DATA(avx512_rcp14_sd, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S,
1018                        0),
1019     X86_INTRINSIC_DATA(avx512_rcp14_ss, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S,
1020                        0),
1021     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_128, INTR_TYPE_1OP_MASK,
1022                        X86ISD::RSQRT14, 0),
1023     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_256, INTR_TYPE_1OP_MASK,
1024                        X86ISD::RSQRT14, 0),
1025     X86_INTRINSIC_DATA(avx512_rsqrt14_pd_512, INTR_TYPE_1OP_MASK,
1026                        X86ISD::RSQRT14, 0),
1027     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_128, INTR_TYPE_1OP_MASK,
1028                        X86ISD::RSQRT14, 0),
1029     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_256, INTR_TYPE_1OP_MASK,
1030                        X86ISD::RSQRT14, 0),
1031     X86_INTRINSIC_DATA(avx512_rsqrt14_ps_512, INTR_TYPE_1OP_MASK,
1032                        X86ISD::RSQRT14, 0),
1033     X86_INTRINSIC_DATA(avx512_rsqrt14_sd, INTR_TYPE_SCALAR_MASK,
1034                        X86ISD::RSQRT14S, 0),
1035     X86_INTRINSIC_DATA(avx512_rsqrt14_ss, INTR_TYPE_SCALAR_MASK,
1036                        X86ISD::RSQRT14S, 0),
1037     X86_INTRINSIC_DATA(avx512_sitofp_round, INTR_TYPE_1OP, ISD::SINT_TO_FP,
1038                        X86ISD::SINT_TO_FP_RND),
1039     X86_INTRINSIC_DATA(avx512_sqrt_pd_512, INTR_TYPE_1OP, ISD::FSQRT,
1040                        X86ISD::FSQRT_RND),
1041     X86_INTRINSIC_DATA(avx512_sqrt_ps_512, INTR_TYPE_1OP, ISD::FSQRT,
1042                        X86ISD::FSQRT_RND),
1043     X86_INTRINSIC_DATA(avx512_sub_pd_512, INTR_TYPE_2OP, ISD::FSUB,
1044                        X86ISD::FSUB_RND),
1045     X86_INTRINSIC_DATA(avx512_sub_ps_512, INTR_TYPE_2OP, ISD::FSUB,
1046                        X86ISD::FSUB_RND),
1047     X86_INTRINSIC_DATA(avx512_uitofp_round, INTR_TYPE_1OP, ISD::UINT_TO_FP,
1048                        X86ISD::UINT_TO_FP_RND),
1049     X86_INTRINSIC_DATA(avx512_vcomi_sd, COMI_RM, X86ISD::COMI, X86ISD::UCOMI),
1050     X86_INTRINSIC_DATA(avx512_vcomi_ss, COMI_RM, X86ISD::COMI, X86ISD::UCOMI),
1051     X86_INTRINSIC_DATA(avx512_vcvtsd2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1052                        X86ISD::CVTS2SI_RND),
1053     X86_INTRINSIC_DATA(avx512_vcvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1054                        X86ISD::CVTS2SI_RND),
1055     X86_INTRINSIC_DATA(avx512_vcvtsd2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1056                        X86ISD::CVTS2UI_RND),
1057     X86_INTRINSIC_DATA(avx512_vcvtsd2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1058                        X86ISD::CVTS2UI_RND),
1059     X86_INTRINSIC_DATA(avx512_vcvtss2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1060                        X86ISD::CVTS2SI_RND),
1061     X86_INTRINSIC_DATA(avx512_vcvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1062                        X86ISD::CVTS2SI_RND),
1063     X86_INTRINSIC_DATA(avx512_vcvtss2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1064                        X86ISD::CVTS2UI_RND),
1065     X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1066                        X86ISD::CVTS2UI_RND),
1067     X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA,
1068                        X86ISD::FMADD_RND),
1069     X86_INTRINSIC_DATA(avx512_vfmadd_f64, INTR_TYPE_3OP, ISD::FMA,
1070                        X86ISD::FMADD_RND),
1071     X86_INTRINSIC_DATA(avx512_vfmadd_pd_512, INTR_TYPE_3OP, ISD::FMA,
1072                        X86ISD::FMADD_RND),
1073     X86_INTRINSIC_DATA(avx512_vfmadd_ps_512, INTR_TYPE_3OP, ISD::FMA,
1074                        X86ISD::FMADD_RND),
1075     X86_INTRINSIC_DATA(avx512_vfmaddsub_pd_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1076                        X86ISD::FMADDSUB_RND),
1077     X86_INTRINSIC_DATA(avx512_vfmaddsub_ps_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1078                        X86ISD::FMADDSUB_RND),
1079 
1080     X86_INTRINSIC_DATA(avx512_vpdpbusd_128, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1081     X86_INTRINSIC_DATA(avx512_vpdpbusd_256, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1082     X86_INTRINSIC_DATA(avx512_vpdpbusd_512, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
1083     X86_INTRINSIC_DATA(avx512_vpdpbusds_128, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1084                        0),
1085     X86_INTRINSIC_DATA(avx512_vpdpbusds_256, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1086                        0),
1087     X86_INTRINSIC_DATA(avx512_vpdpbusds_512, INTR_TYPE_3OP, X86ISD::VPDPBUSDS,
1088                        0),
1089     X86_INTRINSIC_DATA(avx512_vpdpwssd_128, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1090     X86_INTRINSIC_DATA(avx512_vpdpwssd_256, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1091     X86_INTRINSIC_DATA(avx512_vpdpwssd_512, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0),
1092     X86_INTRINSIC_DATA(avx512_vpdpwssds_128, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1093                        0),
1094     X86_INTRINSIC_DATA(avx512_vpdpwssds_256, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1095                        0),
1096     X86_INTRINSIC_DATA(avx512_vpdpwssds_512, INTR_TYPE_3OP, X86ISD::VPDPWSSDS,
1097                        0),
1098 
1099     X86_INTRINSIC_DATA(avx512_vpermi2var_d_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1100                        0),
1101     X86_INTRINSIC_DATA(avx512_vpermi2var_d_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1102                        0),
1103     X86_INTRINSIC_DATA(avx512_vpermi2var_d_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1104                        0),
1105     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1106                        0),
1107     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1108                        0),
1109     X86_INTRINSIC_DATA(avx512_vpermi2var_hi_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1110                        0),
1111     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1112                        0),
1113     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1114                        0),
1115     X86_INTRINSIC_DATA(avx512_vpermi2var_pd_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1116                        0),
1117     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1118                        0),
1119     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1120                        0),
1121     X86_INTRINSIC_DATA(avx512_vpermi2var_ps_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1122                        0),
1123     X86_INTRINSIC_DATA(avx512_vpermi2var_q_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1124                        0),
1125     X86_INTRINSIC_DATA(avx512_vpermi2var_q_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1126                        0),
1127     X86_INTRINSIC_DATA(avx512_vpermi2var_q_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1128                        0),
1129     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_128, INTR_TYPE_3OP, X86ISD::VPERMV3,
1130                        0),
1131     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_256, INTR_TYPE_3OP, X86ISD::VPERMV3,
1132                        0),
1133     X86_INTRINSIC_DATA(avx512_vpermi2var_qi_512, INTR_TYPE_3OP, X86ISD::VPERMV3,
1134                        0),
1135     X86_INTRINSIC_DATA(avx512_vpermilvar_pd_512, INTR_TYPE_2OP,
1136                        X86ISD::VPERMILPV, 0),
1137     X86_INTRINSIC_DATA(avx512_vpermilvar_ps_512, INTR_TYPE_2OP,
1138                        X86ISD::VPERMILPV, 0),
1139     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_128, IFMA_OP, X86ISD::VPMADD52H, 0),
1140     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_256, IFMA_OP, X86ISD::VPMADD52H, 0),
1141     X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_512, IFMA_OP, X86ISD::VPMADD52H, 0),
1142     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_128, IFMA_OP, X86ISD::VPMADD52L, 0),
1143     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_256, IFMA_OP, X86ISD::VPMADD52L, 0),
1144     X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_512, IFMA_OP, X86ISD::VPMADD52L, 0),
1145     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_128, INTR_TYPE_2OP,
1146                        X86ISD::VPSHUFBITQMB, 0),
1147     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_256, INTR_TYPE_2OP,
1148                        X86ISD::VPSHUFBITQMB, 0),
1149     X86_INTRINSIC_DATA(avx512_vpshufbitqmb_512, INTR_TYPE_2OP,
1150                        X86ISD::VPSHUFBITQMB, 0),
1151     // bfloat16
1152     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_128, INTR_TYPE_2OP,
1153                        X86ISD::CVTNE2PS2BF16, 0),
1154     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_256, INTR_TYPE_2OP,
1155                        X86ISD::CVTNE2PS2BF16, 0),
1156     X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_512, INTR_TYPE_2OP,
1157                        X86ISD::CVTNE2PS2BF16, 0),
1158     X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_256, INTR_TYPE_1OP,
1159                        X86ISD::CVTNEPS2BF16, 0),
1160     X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_512, INTR_TYPE_1OP,
1161                        X86ISD::CVTNEPS2BF16, 0),
1162     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_128, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1163                        0),
1164     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_256, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1165                        0),
1166     X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_512, INTR_TYPE_3OP, X86ISD::DPBF16PS,
1167                        0),
1168     X86_INTRINSIC_DATA(avx512bf16_mask_cvtneps2bf16_128, CVTNEPS2BF16_MASK,
1169                        X86ISD::CVTNEPS2BF16, X86ISD::MCVTNEPS2BF16),
1170     X86_INTRINSIC_DATA(avx512fp16_add_ph_512, INTR_TYPE_2OP, ISD::FADD,
1171                        X86ISD::FADD_RND),
1172     X86_INTRINSIC_DATA(avx512fp16_div_ph_512, INTR_TYPE_2OP, ISD::FDIV,
1173                        X86ISD::FDIV_RND),
1174     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_128, INTR_TYPE_2OP,
1175                        X86ISD::VFPCLASS, 0),
1176     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_256, INTR_TYPE_2OP,
1177                        X86ISD::VFPCLASS, 0),
1178     X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_512, INTR_TYPE_2OP,
1179                        X86ISD::VFPCLASS, 0),
1180     X86_INTRINSIC_DATA(avx512fp16_mask_add_sh_round, INTR_TYPE_SCALAR_MASK,
1181                        X86ISD::FADDS, X86ISD::FADDS_RND),
1182     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_128, CMP_MASK_CC, X86ISD::CMPMM,
1183                        0),
1184     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_256, CMP_MASK_CC, X86ISD::CMPMM,
1185                        0),
1186     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_512, CMP_MASK_CC, X86ISD::CMPMM,
1187                        X86ISD::CMPMM_SAE),
1188     X86_INTRINSIC_DATA(avx512fp16_mask_cmp_sh, CMP_MASK_SCALAR_CC,
1189                        X86ISD::FSETCCM, X86ISD::FSETCCM_SAE),
1190     X86_INTRINSIC_DATA(avx512fp16_mask_div_sh_round, INTR_TYPE_SCALAR_MASK,
1191                        X86ISD::FDIVS, X86ISD::FDIVS_RND),
1192     X86_INTRINSIC_DATA(avx512fp16_mask_fpclass_sh, FPCLASSS, X86ISD::VFPCLASSS,
1193                        0),
1194     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_128, INTR_TYPE_1OP_MASK,
1195                        X86ISD::FGETEXP, 0),
1196     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_256, INTR_TYPE_1OP_MASK,
1197                        X86ISD::FGETEXP, 0),
1198     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_512, INTR_TYPE_1OP_MASK_SAE,
1199                        X86ISD::FGETEXP, X86ISD::FGETEXP_SAE),
1200     X86_INTRINSIC_DATA(avx512fp16_mask_getexp_sh, INTR_TYPE_SCALAR_MASK_SAE,
1201                        X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE),
1202     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_128, INTR_TYPE_2OP_MASK_SAE,
1203                        X86ISD::VGETMANT, 0),
1204     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_256, INTR_TYPE_2OP_MASK_SAE,
1205                        X86ISD::VGETMANT, 0),
1206     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_512, INTR_TYPE_2OP_MASK_SAE,
1207                        X86ISD::VGETMANT, X86ISD::VGETMANT_SAE),
1208     X86_INTRINSIC_DATA(avx512fp16_mask_getmant_sh,
1209                        INTR_TYPE_3OP_SCALAR_MASK_SAE, X86ISD::VGETMANTS,
1210                        X86ISD::VGETMANTS_SAE),
1211     X86_INTRINSIC_DATA(avx512fp16_mask_max_sh_round, INTR_TYPE_SCALAR_MASK_SAE,
1212                        X86ISD::FMAXS, X86ISD::FMAXS_SAE),
1213     X86_INTRINSIC_DATA(avx512fp16_mask_min_sh_round, INTR_TYPE_SCALAR_MASK_SAE,
1214                        X86ISD::FMINS, X86ISD::FMINS_SAE),
1215     X86_INTRINSIC_DATA(avx512fp16_mask_mul_sh_round, INTR_TYPE_SCALAR_MASK,
1216                        X86ISD::FMULS, X86ISD::FMULS_RND),
1217     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_128, INTR_TYPE_1OP_MASK,
1218                        X86ISD::RCP14, 0),
1219     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_256, INTR_TYPE_1OP_MASK,
1220                        X86ISD::RCP14, 0),
1221     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_512, INTR_TYPE_1OP_MASK,
1222                        X86ISD::RCP14, 0),
1223     X86_INTRINSIC_DATA(avx512fp16_mask_rcp_sh, INTR_TYPE_SCALAR_MASK,
1224                        X86ISD::RCP14S, 0),
1225     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_128, INTR_TYPE_2OP_MASK_SAE,
1226                        X86ISD::VREDUCE, 0),
1227     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_256, INTR_TYPE_2OP_MASK_SAE,
1228                        X86ISD::VREDUCE, 0),
1229     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_512, INTR_TYPE_2OP_MASK_SAE,
1230                        X86ISD::VREDUCE, X86ISD::VREDUCE_SAE),
1231     X86_INTRINSIC_DATA(avx512fp16_mask_reduce_sh, INTR_TYPE_SCALAR_MASK,
1232                        X86ISD::VREDUCES, X86ISD::VREDUCES_SAE),
1233     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_128, INTR_TYPE_2OP_MASK_SAE,
1234                        X86ISD::VRNDSCALE, 0),
1235     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_256, INTR_TYPE_2OP_MASK_SAE,
1236                        X86ISD::VRNDSCALE, 0),
1237     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_512, INTR_TYPE_2OP_MASK_SAE,
1238                        X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE),
1239     X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_sh, INTR_TYPE_SCALAR_MASK,
1240                        X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE),
1241     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_128, INTR_TYPE_1OP_MASK,
1242                        X86ISD::RSQRT14, 0),
1243     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_256, INTR_TYPE_1OP_MASK,
1244                        X86ISD::RSQRT14, 0),
1245     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_512, INTR_TYPE_1OP_MASK,
1246                        X86ISD::RSQRT14, 0),
1247     X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_sh, INTR_TYPE_SCALAR_MASK,
1248                        X86ISD::RSQRT14S, 0),
1249     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_128, INTR_TYPE_2OP_MASK,
1250                        X86ISD::SCALEF, 0),
1251     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_256, INTR_TYPE_2OP_MASK,
1252                        X86ISD::SCALEF, 0),
1253     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_512, INTR_TYPE_2OP_MASK,
1254                        X86ISD::SCALEF, X86ISD::SCALEF_RND),
1255     X86_INTRINSIC_DATA(avx512fp16_mask_scalef_sh, INTR_TYPE_SCALAR_MASK,
1256                        X86ISD::SCALEFS, X86ISD::SCALEFS_RND),
1257     X86_INTRINSIC_DATA(avx512fp16_mask_sqrt_sh, INTR_TYPE_SCALAR_MASK,
1258                        X86ISD::FSQRTS, X86ISD::FSQRTS_RND),
1259     X86_INTRINSIC_DATA(avx512fp16_mask_sub_sh_round, INTR_TYPE_SCALAR_MASK,
1260                        X86ISD::FSUBS, X86ISD::FSUBS_RND),
1261     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtdq2ph_128, TRUNCATE_TO_REG,
1262                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1263     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_128, TRUNCATE_TO_REG,
1264                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1265     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_256, TRUNCATE_TO_REG,
1266                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1267     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_512, INTR_TYPE_1OP_MASK,
1268                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
1269     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_128, INTR_TYPE_1OP_MASK,
1270                        X86ISD::CVTP2SI, 0),
1271     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_256, INTR_TYPE_1OP_MASK,
1272                        X86ISD::CVTP2SI, 0),
1273     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_512, INTR_TYPE_1OP_MASK,
1274                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1275     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_128, INTR_TYPE_1OP_MASK,
1276                        X86ISD::VFPEXT, 0),
1277     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_256, INTR_TYPE_1OP_MASK,
1278                        X86ISD::VFPEXT, 0),
1279     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_512, INTR_TYPE_1OP_MASK_SAE,
1280                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
1281     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_128, INTR_TYPE_1OP_MASK,
1282                        X86ISD::VFPEXT, 0),
1283     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_256, INTR_TYPE_1OP_MASK,
1284                        ISD::FP_EXTEND, 0),
1285     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_512, INTR_TYPE_1OP_MASK_SAE,
1286                        ISD::FP_EXTEND, X86ISD::VFPEXT_SAE),
1287     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_128, INTR_TYPE_1OP_MASK,
1288                        X86ISD::CVTP2SI, 0),
1289     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_256, INTR_TYPE_1OP_MASK,
1290                        X86ISD::CVTP2SI, 0),
1291     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_512, INTR_TYPE_1OP_MASK,
1292                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1293     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_128, INTR_TYPE_1OP_MASK,
1294                        X86ISD::CVTP2UI, 0),
1295     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_256, INTR_TYPE_1OP_MASK,
1296                        X86ISD::CVTP2UI, 0),
1297     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_512, INTR_TYPE_1OP_MASK,
1298                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1299     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_128, INTR_TYPE_1OP_MASK,
1300                        X86ISD::CVTP2UI, 0),
1301     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_256, INTR_TYPE_1OP_MASK,
1302                        X86ISD::CVTP2UI, 0),
1303     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_512, INTR_TYPE_1OP_MASK,
1304                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1305     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_128, INTR_TYPE_1OP_MASK,
1306                        X86ISD::CVTP2UI, 0),
1307     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_256, INTR_TYPE_1OP_MASK,
1308                        X86ISD::CVTP2UI, 0),
1309     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_512, INTR_TYPE_1OP_MASK,
1310                        X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
1311     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_128, INTR_TYPE_1OP_MASK,
1312                        X86ISD::CVTP2SI, 0),
1313     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_256, INTR_TYPE_1OP_MASK,
1314                        X86ISD::CVTP2SI, 0),
1315     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_512, INTR_TYPE_1OP_MASK,
1316                        X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND),
1317     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_128, TRUNCATE_TO_REG,
1318                        X86ISD::VFPROUND, X86ISD::VMFPROUND),
1319     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_256, INTR_TYPE_1OP_MASK,
1320                        X86ISD::VFPROUND, 0),
1321     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_512, INTR_TYPE_1OP_MASK,
1322                        X86ISD::VFPROUND, X86ISD::VFPROUND_RND),
1323     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_128, TRUNCATE_TO_REG,
1324                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1325     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_256, TRUNCATE_TO_REG,
1326                        X86ISD::CVTSI2P, X86ISD::MCVTSI2P),
1327     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsd2sh_round,
1328                        INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS,
1329                        X86ISD::VFPROUNDS_RND),
1330     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2sd_round,
1331                        INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS,
1332                        X86ISD::VFPEXTS_SAE),
1333     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2ss_round,
1334                        INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS,
1335                        X86ISD::VFPEXTS_SAE),
1336     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtss2sh_round,
1337                        INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS,
1338                        X86ISD::VFPROUNDS_RND),
1339     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_128, INTR_TYPE_1OP_MASK,
1340                        X86ISD::CVTTP2SI, 0),
1341     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_256, INTR_TYPE_1OP_MASK,
1342                        X86ISD::CVTTP2SI, 0),
1343     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_512, INTR_TYPE_1OP_MASK_SAE,
1344                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1345     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_128, INTR_TYPE_1OP_MASK,
1346                        X86ISD::CVTTP2SI, 0),
1347     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_256, INTR_TYPE_1OP_MASK,
1348                        X86ISD::CVTTP2SI, 0),
1349     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_512, INTR_TYPE_1OP_MASK_SAE,
1350                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1351     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_128, INTR_TYPE_1OP_MASK,
1352                        X86ISD::CVTTP2UI, 0),
1353     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_256, INTR_TYPE_1OP_MASK,
1354                        X86ISD::CVTTP2UI, 0),
1355     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_512, INTR_TYPE_1OP_MASK_SAE,
1356                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1357     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_128, INTR_TYPE_1OP_MASK,
1358                        X86ISD::CVTTP2UI, 0),
1359     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_256, INTR_TYPE_1OP_MASK,
1360                        X86ISD::CVTTP2UI, 0),
1361     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_512, INTR_TYPE_1OP_MASK_SAE,
1362                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1363     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_128, INTR_TYPE_1OP_MASK,
1364                        X86ISD::CVTTP2UI, 0),
1365     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_256, INTR_TYPE_1OP_MASK,
1366                        X86ISD::CVTTP2UI, 0),
1367     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_512, INTR_TYPE_1OP_MASK_SAE,
1368                        X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
1369     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_128, INTR_TYPE_1OP_MASK,
1370                        X86ISD::CVTTP2SI, 0),
1371     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_256, INTR_TYPE_1OP_MASK,
1372                        X86ISD::CVTTP2SI, 0),
1373     X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_512, INTR_TYPE_1OP_MASK_SAE,
1374                        X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
1375     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtudq2ph_128, TRUNCATE_TO_REG,
1376                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1377     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_128, TRUNCATE_TO_REG,
1378                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1379     X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_256, TRUNCATE_TO_REG,
1380                        X86ISD::CVTUI2P, X86ISD::MCVTUI2P),
1381     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_128, CFMA_OP_MASK,
1382                        X86ISD::VFCMADDC, 0),
1383     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_256, CFMA_OP_MASK,
1384                        X86ISD::VFCMADDC, 0),
1385     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_512, CFMA_OP_MASK,
1386                        X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND),
1387     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_csh, CFMA_OP_MASK,
1388                        X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND),
1389     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_128, INTR_TYPE_2OP_MASK,
1390                        X86ISD::VFCMULC, 0),
1391     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_256, INTR_TYPE_2OP_MASK,
1392                        X86ISD::VFCMULC, 0),
1393     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_512, INTR_TYPE_2OP_MASK,
1394                        X86ISD::VFCMULC, X86ISD::VFCMULC_RND),
1395     X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_csh, INTR_TYPE_SCALAR_MASK,
1396                        X86ISD::VFCMULCSH, X86ISD::VFCMULCSH_RND),
1397     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_128, CFMA_OP_MASK,
1398                        X86ISD::VFMADDC, 0),
1399     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_256, CFMA_OP_MASK,
1400                        X86ISD::VFMADDC, 0),
1401     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_512, CFMA_OP_MASK,
1402                        X86ISD::VFMADDC, X86ISD::VFMADDC_RND),
1403     X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_csh, CFMA_OP_MASK,
1404                        X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND),
1405     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_128, INTR_TYPE_2OP_MASK,
1406                        X86ISD::VFMULC, 0),
1407     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_256, INTR_TYPE_2OP_MASK,
1408                        X86ISD::VFMULC, 0),
1409     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_512, INTR_TYPE_2OP_MASK,
1410                        X86ISD::VFMULC, X86ISD::VFMULC_RND),
1411     X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_csh, INTR_TYPE_SCALAR_MASK,
1412                        X86ISD::VFMULCSH, X86ISD::VFMULCSH_RND),
1413     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_128, CFMA_OP_MASKZ,
1414                        X86ISD::VFCMADDC, 0),
1415     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_256, CFMA_OP_MASKZ,
1416                        X86ISD::VFCMADDC, 0),
1417     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_512, CFMA_OP_MASKZ,
1418                        X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND),
1419     X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_csh, CFMA_OP_MASKZ,
1420                        X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND),
1421     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_128, CFMA_OP_MASKZ,
1422                        X86ISD::VFMADDC, 0),
1423     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_256, CFMA_OP_MASKZ,
1424                        X86ISD::VFMADDC, 0),
1425     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_512, CFMA_OP_MASKZ,
1426                        X86ISD::VFMADDC, X86ISD::VFMADDC_RND),
1427     X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_csh, CFMA_OP_MASKZ,
1428                        X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND),
1429     X86_INTRINSIC_DATA(avx512fp16_max_ph_128, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1430     X86_INTRINSIC_DATA(avx512fp16_max_ph_256, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1431     X86_INTRINSIC_DATA(avx512fp16_max_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX,
1432                        X86ISD::FMAX_SAE),
1433     X86_INTRINSIC_DATA(avx512fp16_min_ph_128, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1434     X86_INTRINSIC_DATA(avx512fp16_min_ph_256, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1435     X86_INTRINSIC_DATA(avx512fp16_min_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN,
1436                        X86ISD::FMIN_SAE),
1437     X86_INTRINSIC_DATA(avx512fp16_mul_ph_512, INTR_TYPE_2OP, ISD::FMUL,
1438                        X86ISD::FMUL_RND),
1439     X86_INTRINSIC_DATA(avx512fp16_sqrt_ph_512, INTR_TYPE_1OP, ISD::FSQRT,
1440                        X86ISD::FSQRT_RND),
1441     X86_INTRINSIC_DATA(avx512fp16_sub_ph_512, INTR_TYPE_2OP, ISD::FSUB,
1442                        X86ISD::FSUB_RND),
1443     X86_INTRINSIC_DATA(avx512fp16_vcomi_sh, COMI_RM, X86ISD::COMI,
1444                        X86ISD::UCOMI),
1445     /*fp16 scalar convert instruction*/
1446     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1447                        X86ISD::CVTS2SI_RND),
1448     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI,
1449                        X86ISD::CVTS2SI_RND),
1450     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1451                        X86ISD::CVTS2UI_RND),
1452     X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
1453                        X86ISD::CVTS2UI_RND),
1454     X86_INTRINSIC_DATA(avx512fp16_vcvtsi2sh, INTR_TYPE_2OP,
1455                        X86ISD::SCALAR_SINT_TO_FP,
1456                        X86ISD::SCALAR_SINT_TO_FP_RND),
1457     X86_INTRINSIC_DATA(avx512fp16_vcvtsi642sh, INTR_TYPE_2OP,
1458                        X86ISD::SCALAR_SINT_TO_FP,
1459                        X86ISD::SCALAR_SINT_TO_FP_RND),
1460     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si32, INTR_TYPE_1OP_SAE,
1461                        X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE),
1462     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si64, INTR_TYPE_1OP_SAE,
1463                        X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE),
1464     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi32, INTR_TYPE_1OP_SAE,
1465                        X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE),
1466     X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi64, INTR_TYPE_1OP_SAE,
1467                        X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE),
1468     X86_INTRINSIC_DATA(avx512fp16_vcvtusi2sh, INTR_TYPE_2OP,
1469                        X86ISD::SCALAR_UINT_TO_FP,
1470                        X86ISD::SCALAR_UINT_TO_FP_RND),
1471     X86_INTRINSIC_DATA(avx512fp16_vcvtusi642sh, INTR_TYPE_2OP,
1472                        X86ISD::SCALAR_UINT_TO_FP,
1473                        X86ISD::SCALAR_UINT_TO_FP_RND),
1474     X86_INTRINSIC_DATA(avx512fp16_vfmadd_f16, INTR_TYPE_3OP, ISD::FMA,
1475                        X86ISD::FMADD_RND),
1476     X86_INTRINSIC_DATA(avx512fp16_vfmadd_ph_512, INTR_TYPE_3OP, ISD::FMA,
1477                        X86ISD::FMADD_RND),
1478     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_128, INTR_TYPE_3OP,
1479                        X86ISD::FMADDSUB, 0),
1480     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_256, INTR_TYPE_3OP,
1481                        X86ISD::FMADDSUB, 0),
1482     X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_512, INTR_TYPE_3OP,
1483                        X86ISD::FMADDSUB, X86ISD::FMADDSUB_RND),
1484     X86_INTRINSIC_DATA(bmi_bextr_32, INTR_TYPE_2OP, X86ISD::BEXTR, 0),
1485     X86_INTRINSIC_DATA(bmi_bextr_64, INTR_TYPE_2OP, X86ISD::BEXTR, 0),
1486     X86_INTRINSIC_DATA(bmi_bzhi_32, INTR_TYPE_2OP, X86ISD::BZHI, 0),
1487     X86_INTRINSIC_DATA(bmi_bzhi_64, INTR_TYPE_2OP, X86ISD::BZHI, 0),
1488     X86_INTRINSIC_DATA(bmi_pdep_32, INTR_TYPE_2OP, X86ISD::PDEP, 0),
1489     X86_INTRINSIC_DATA(bmi_pdep_64, INTR_TYPE_2OP, X86ISD::PDEP, 0),
1490     X86_INTRINSIC_DATA(bmi_pext_32, INTR_TYPE_2OP, X86ISD::PEXT, 0),
1491     X86_INTRINSIC_DATA(bmi_pext_64, INTR_TYPE_2OP, X86ISD::PEXT, 0),
1492     X86_INTRINSIC_DATA(fma_vfmaddsub_pd, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0),
1493     X86_INTRINSIC_DATA(fma_vfmaddsub_pd_256, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1494                        0),
1495     X86_INTRINSIC_DATA(fma_vfmaddsub_ps, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0),
1496     X86_INTRINSIC_DATA(fma_vfmaddsub_ps_256, INTR_TYPE_3OP, X86ISD::FMADDSUB,
1497                        0),
1498     X86_INTRINSIC_DATA(sse_cmp_ps, INTR_TYPE_3OP, X86ISD::CMPP, 0),
1499     X86_INTRINSIC_DATA(sse_cmp_ss, INTR_TYPE_3OP, X86ISD::FSETCC, 0),
1500     X86_INTRINSIC_DATA(sse_comieq_ss, COMI, X86ISD::COMI, ISD::SETEQ),
1501     X86_INTRINSIC_DATA(sse_comige_ss, COMI, X86ISD::COMI, ISD::SETGE),
1502     X86_INTRINSIC_DATA(sse_comigt_ss, COMI, X86ISD::COMI, ISD::SETGT),
1503     X86_INTRINSIC_DATA(sse_comile_ss, COMI, X86ISD::COMI, ISD::SETLE),
1504     X86_INTRINSIC_DATA(sse_comilt_ss, COMI, X86ISD::COMI, ISD::SETLT),
1505     X86_INTRINSIC_DATA(sse_comineq_ss, COMI, X86ISD::COMI, ISD::SETNE),
1506     X86_INTRINSIC_DATA(sse_cvtss2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1507     X86_INTRINSIC_DATA(sse_cvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1508     X86_INTRINSIC_DATA(sse_cvttss2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1509     X86_INTRINSIC_DATA(sse_cvttss2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1510     X86_INTRINSIC_DATA(sse_max_ps, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1511     X86_INTRINSIC_DATA(sse_max_ss, INTR_TYPE_2OP, X86ISD::FMAXS, 0),
1512     X86_INTRINSIC_DATA(sse_min_ps, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1513     X86_INTRINSIC_DATA(sse_min_ss, INTR_TYPE_2OP, X86ISD::FMINS, 0),
1514     X86_INTRINSIC_DATA(sse_movmsk_ps, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1515     X86_INTRINSIC_DATA(sse_rcp_ps, INTR_TYPE_1OP, X86ISD::FRCP, 0),
1516     X86_INTRINSIC_DATA(sse_rsqrt_ps, INTR_TYPE_1OP, X86ISD::FRSQRT, 0),
1517     X86_INTRINSIC_DATA(sse_ucomieq_ss, COMI, X86ISD::UCOMI, ISD::SETEQ),
1518     X86_INTRINSIC_DATA(sse_ucomige_ss, COMI, X86ISD::UCOMI, ISD::SETGE),
1519     X86_INTRINSIC_DATA(sse_ucomigt_ss, COMI, X86ISD::UCOMI, ISD::SETGT),
1520     X86_INTRINSIC_DATA(sse_ucomile_ss, COMI, X86ISD::UCOMI, ISD::SETLE),
1521     X86_INTRINSIC_DATA(sse_ucomilt_ss, COMI, X86ISD::UCOMI, ISD::SETLT),
1522     X86_INTRINSIC_DATA(sse_ucomineq_ss, COMI, X86ISD::UCOMI, ISD::SETNE),
1523     X86_INTRINSIC_DATA(sse2_cmp_pd, INTR_TYPE_3OP, X86ISD::CMPP, 0),
1524     X86_INTRINSIC_DATA(sse2_cmp_sd, INTR_TYPE_3OP, X86ISD::FSETCC, 0),
1525     X86_INTRINSIC_DATA(sse2_comieq_sd, COMI, X86ISD::COMI, ISD::SETEQ),
1526     X86_INTRINSIC_DATA(sse2_comige_sd, COMI, X86ISD::COMI, ISD::SETGE),
1527     X86_INTRINSIC_DATA(sse2_comigt_sd, COMI, X86ISD::COMI, ISD::SETGT),
1528     X86_INTRINSIC_DATA(sse2_comile_sd, COMI, X86ISD::COMI, ISD::SETLE),
1529     X86_INTRINSIC_DATA(sse2_comilt_sd, COMI, X86ISD::COMI, ISD::SETLT),
1530     X86_INTRINSIC_DATA(sse2_comineq_sd, COMI, X86ISD::COMI, ISD::SETNE),
1531     X86_INTRINSIC_DATA(sse2_cvtpd2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
1532     X86_INTRINSIC_DATA(sse2_cvtpd2ps, INTR_TYPE_1OP, X86ISD::VFPROUND, 0),
1533     X86_INTRINSIC_DATA(sse2_cvtps2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0),
1534     X86_INTRINSIC_DATA(sse2_cvtsd2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1535     X86_INTRINSIC_DATA(sse2_cvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0),
1536     X86_INTRINSIC_DATA(sse2_cvtsd2ss, INTR_TYPE_2OP, X86ISD::VFPROUNDS, 0),
1537     X86_INTRINSIC_DATA(sse2_cvttpd2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
1538     X86_INTRINSIC_DATA(sse2_cvttps2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0),
1539     X86_INTRINSIC_DATA(sse2_cvttsd2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1540     X86_INTRINSIC_DATA(sse2_cvttsd2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0),
1541     X86_INTRINSIC_DATA(sse2_max_pd, INTR_TYPE_2OP, X86ISD::FMAX, 0),
1542     X86_INTRINSIC_DATA(sse2_max_sd, INTR_TYPE_2OP, X86ISD::FMAXS, 0),
1543     X86_INTRINSIC_DATA(sse2_min_pd, INTR_TYPE_2OP, X86ISD::FMIN, 0),
1544     X86_INTRINSIC_DATA(sse2_min_sd, INTR_TYPE_2OP, X86ISD::FMINS, 0),
1545     X86_INTRINSIC_DATA(sse2_movmsk_pd, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1546     X86_INTRINSIC_DATA(sse2_packssdw_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1547     X86_INTRINSIC_DATA(sse2_packsswb_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
1548     X86_INTRINSIC_DATA(sse2_packuswb_128, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
1549     X86_INTRINSIC_DATA(sse2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1550     X86_INTRINSIC_DATA(sse2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0),
1551     X86_INTRINSIC_DATA(sse2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0),
1552     X86_INTRINSIC_DATA(sse2_pmovmskb_128, INTR_TYPE_1OP, X86ISD::MOVMSK, 0),
1553     X86_INTRINSIC_DATA(sse2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0),
1554     X86_INTRINSIC_DATA(sse2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0),
1555     X86_INTRINSIC_DATA(sse2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0),
1556     X86_INTRINSIC_DATA(sse2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1557     X86_INTRINSIC_DATA(sse2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1558     X86_INTRINSIC_DATA(sse2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0),
1559     X86_INTRINSIC_DATA(sse2_pslli_d, VSHIFT, X86ISD::VSHLI, 0),
1560     X86_INTRINSIC_DATA(sse2_pslli_q, VSHIFT, X86ISD::VSHLI, 0),
1561     X86_INTRINSIC_DATA(sse2_pslli_w, VSHIFT, X86ISD::VSHLI, 0),
1562     X86_INTRINSIC_DATA(sse2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1563     X86_INTRINSIC_DATA(sse2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0),
1564     X86_INTRINSIC_DATA(sse2_psrai_d, VSHIFT, X86ISD::VSRAI, 0),
1565     X86_INTRINSIC_DATA(sse2_psrai_w, VSHIFT, X86ISD::VSRAI, 0),
1566     X86_INTRINSIC_DATA(sse2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1567     X86_INTRINSIC_DATA(sse2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1568     X86_INTRINSIC_DATA(sse2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0),
1569     X86_INTRINSIC_DATA(sse2_psrli_d, VSHIFT, X86ISD::VSRLI, 0),
1570     X86_INTRINSIC_DATA(sse2_psrli_q, VSHIFT, X86ISD::VSRLI, 0),
1571     X86_INTRINSIC_DATA(sse2_psrli_w, VSHIFT, X86ISD::VSRLI, 0),
1572     X86_INTRINSIC_DATA(sse2_ucomieq_sd, COMI, X86ISD::UCOMI, ISD::SETEQ),
1573     X86_INTRINSIC_DATA(sse2_ucomige_sd, COMI, X86ISD::UCOMI, ISD::SETGE),
1574     X86_INTRINSIC_DATA(sse2_ucomigt_sd, COMI, X86ISD::UCOMI, ISD::SETGT),
1575     X86_INTRINSIC_DATA(sse2_ucomile_sd, COMI, X86ISD::UCOMI, ISD::SETLE),
1576     X86_INTRINSIC_DATA(sse2_ucomilt_sd, COMI, X86ISD::UCOMI, ISD::SETLT),
1577     X86_INTRINSIC_DATA(sse2_ucomineq_sd, COMI, X86ISD::UCOMI, ISD::SETNE),
1578     X86_INTRINSIC_DATA(sse3_addsub_pd, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
1579     X86_INTRINSIC_DATA(sse3_addsub_ps, INTR_TYPE_2OP, X86ISD::ADDSUB, 0),
1580     X86_INTRINSIC_DATA(sse3_hadd_pd, INTR_TYPE_2OP, X86ISD::FHADD, 0),
1581     X86_INTRINSIC_DATA(sse3_hadd_ps, INTR_TYPE_2OP, X86ISD::FHADD, 0),
1582     X86_INTRINSIC_DATA(sse3_hsub_pd, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
1583     X86_INTRINSIC_DATA(sse3_hsub_ps, INTR_TYPE_2OP, X86ISD::FHSUB, 0),
1584     X86_INTRINSIC_DATA(sse41_blendvpd, BLENDV, X86ISD::BLENDV, 0),
1585     X86_INTRINSIC_DATA(sse41_blendvps, BLENDV, X86ISD::BLENDV, 0),
1586     X86_INTRINSIC_DATA(sse41_insertps, INTR_TYPE_3OP, X86ISD::INSERTPS, 0),
1587     X86_INTRINSIC_DATA(sse41_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0),
1588     X86_INTRINSIC_DATA(sse41_pblendvb, BLENDV, X86ISD::BLENDV, 0),
1589     X86_INTRINSIC_DATA(sse41_phminposuw, INTR_TYPE_1OP, X86ISD::PHMINPOS, 0),
1590     X86_INTRINSIC_DATA(sse41_round_pd, ROUNDP, X86ISD::VRNDSCALE, 0),
1591     X86_INTRINSIC_DATA(sse41_round_ps, ROUNDP, X86ISD::VRNDSCALE, 0),
1592     X86_INTRINSIC_DATA(sse41_round_sd, ROUNDS, X86ISD::VRNDSCALES, 0),
1593     X86_INTRINSIC_DATA(sse41_round_ss, ROUNDS, X86ISD::VRNDSCALES, 0),
1594     X86_INTRINSIC_DATA(sse4a_extrqi, INTR_TYPE_3OP, X86ISD::EXTRQI, 0),
1595     X86_INTRINSIC_DATA(sse4a_insertqi, INTR_TYPE_4OP_IMM8, X86ISD::INSERTQI, 0),
1596     X86_INTRINSIC_DATA(ssse3_phadd_d_128, INTR_TYPE_2OP, X86ISD::HADD, 0),
1597     X86_INTRINSIC_DATA(ssse3_phadd_w_128, INTR_TYPE_2OP, X86ISD::HADD, 0),
1598     X86_INTRINSIC_DATA(ssse3_phsub_d_128, INTR_TYPE_2OP, X86ISD::HSUB, 0),
1599     X86_INTRINSIC_DATA(ssse3_phsub_w_128, INTR_TYPE_2OP, X86ISD::HSUB, 0),
1600     X86_INTRINSIC_DATA(ssse3_pmadd_ub_sw_128, INTR_TYPE_2OP, X86ISD::VPMADDUBSW,
1601                        0),
1602     X86_INTRINSIC_DATA(ssse3_pmul_hr_sw_128, INTR_TYPE_2OP, X86ISD::MULHRS, 0),
1603     X86_INTRINSIC_DATA(ssse3_pshuf_b_128, INTR_TYPE_2OP, X86ISD::PSHUFB, 0),
1604     X86_INTRINSIC_DATA(subborrow_32, ADX, X86ISD::SBB, X86ISD::SUB),
1605     X86_INTRINSIC_DATA(subborrow_64, ADX, X86ISD::SBB, X86ISD::SUB),
1606     X86_INTRINSIC_DATA(tbm_bextri_u32, BEXTRI, X86ISD::BEXTRI, 0),
1607     X86_INTRINSIC_DATA(tbm_bextri_u64, BEXTRI, X86ISD::BEXTRI, 0),
1608     X86_INTRINSIC_DATA(vcvtps2ph_128, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0),
1609     X86_INTRINSIC_DATA(vcvtps2ph_256, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0),
1610 
1611     X86_INTRINSIC_DATA(vgf2p8affineinvqb_128, INTR_TYPE_3OP,
1612                        X86ISD::GF2P8AFFINEINVQB, 0),
1613     X86_INTRINSIC_DATA(vgf2p8affineinvqb_256, INTR_TYPE_3OP,
1614                        X86ISD::GF2P8AFFINEINVQB, 0),
1615     X86_INTRINSIC_DATA(vgf2p8affineinvqb_512, INTR_TYPE_3OP,
1616                        X86ISD::GF2P8AFFINEINVQB, 0),
1617     X86_INTRINSIC_DATA(vgf2p8affineqb_128, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
1618                        0),
1619     X86_INTRINSIC_DATA(vgf2p8affineqb_256, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
1620                        0),
1621     X86_INTRINSIC_DATA(vgf2p8affineqb_512, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB,
1622                        0),
1623     X86_INTRINSIC_DATA(vgf2p8mulb_128, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
1624     X86_INTRINSIC_DATA(vgf2p8mulb_256, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
1625     X86_INTRINSIC_DATA(vgf2p8mulb_512, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0),
1626 
1627     X86_INTRINSIC_DATA(xop_vpermil2pd, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0),
1628     X86_INTRINSIC_DATA(xop_vpermil2pd_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2,
1629                        0),
1630     X86_INTRINSIC_DATA(xop_vpermil2ps, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0),
1631     X86_INTRINSIC_DATA(xop_vpermil2ps_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2,
1632                        0),
1633     X86_INTRINSIC_DATA(xop_vpperm, INTR_TYPE_3OP, X86ISD::VPPERM, 0),
1634     X86_INTRINSIC_DATA(xop_vpshab, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
1635     X86_INTRINSIC_DATA(xop_vpshad, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
1636     X86_INTRINSIC_DATA(xop_vpshaq, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
1637     X86_INTRINSIC_DATA(xop_vpshaw, INTR_TYPE_2OP, X86ISD::VPSHA, 0),
1638     X86_INTRINSIC_DATA(xop_vpshlb, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
1639     X86_INTRINSIC_DATA(xop_vpshld, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
1640     X86_INTRINSIC_DATA(xop_vpshlq, INTR_TYPE_2OP, X86ISD::VPSHL, 0),
1641     X86_INTRINSIC_DATA(xop_vpshlw, INTR_TYPE_2OP, X86ISD::VPSHL, 0)};
1642 
1643 /*
1644  * Retrieve data for Intrinsic without chain.
1645  * Return nullptr if intrinsic is not defined in the table.
1646  */
getIntrinsicWithoutChain(unsigned IntNo)1647 static const IntrinsicData *getIntrinsicWithoutChain(unsigned IntNo) {
1648   const IntrinsicData *Data = lower_bound(IntrinsicsWithoutChain, IntNo);
1649   if (Data != std::end(IntrinsicsWithoutChain) && Data->Id == IntNo)
1650     return Data;
1651   return nullptr;
1652 }
1653 
verifyIntrinsicTables()1654 static void verifyIntrinsicTables() {
1655   assert(llvm::is_sorted(IntrinsicsWithoutChain) &&
1656          llvm::is_sorted(IntrinsicsWithChain) &&
1657          "Intrinsic data tables should be sorted by Intrinsic ID");
1658   assert((std::adjacent_find(std::begin(IntrinsicsWithoutChain),
1659                              std::end(IntrinsicsWithoutChain)) ==
1660           std::end(IntrinsicsWithoutChain)) &&
1661          (std::adjacent_find(std::begin(IntrinsicsWithChain),
1662                              std::end(IntrinsicsWithChain)) ==
1663           std::end(IntrinsicsWithChain)) &&
1664          "Intrinsic data tables should have unique entries");
1665 }
1666 } // namespace llvm
1667 
1668 #endif
1669