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