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