clang 22.0.0git
CIRGenBuiltinX86.cpp
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
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 contains code to emit x86/x86_64 Builtin calls as CIR or a function
10// call to be later resolved.
11//
12//===----------------------------------------------------------------------===//
13
14#include "CIRGenFunction.h"
15#include "CIRGenModule.h"
19
20using namespace clang;
21using namespace clang::CIRGen;
22
23template <typename... Operands>
24static mlir::Value emitIntrinsicCallOp(CIRGenFunction &cgf, const CallExpr *e,
25 const std::string &str,
26 const mlir::Type &resTy,
27 Operands &&...op) {
28 CIRGenBuilderTy &builder = cgf.getBuilder();
29 mlir::Location location = cgf.getLoc(e->getExprLoc());
30 return cir::LLVMIntrinsicCallOp::create(builder, location,
31 builder.getStringAttr(str), resTy,
32 std::forward<Operands>(op)...)
33 .getResult();
34}
35
36mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
37 const CallExpr *e) {
38 if (builtinID == Builtin::BI__builtin_cpu_is) {
39 cgm.errorNYI(e->getSourceRange(), "__builtin_cpu_is");
40 return {};
41 }
42 if (builtinID == Builtin::BI__builtin_cpu_supports) {
43 cgm.errorNYI(e->getSourceRange(), "__builtin_cpu_supports");
44 return {};
45 }
46 if (builtinID == Builtin::BI__builtin_cpu_init) {
47 cgm.errorNYI(e->getSourceRange(), "__builtin_cpu_init");
48 return {};
49 }
50
51 // Handle MSVC intrinsics before argument evaluation to prevent double
52 // evaluation.
54
55 // Find out if any arguments are required to be integer constant expressions.
57
58 // The operands of the builtin call
60
61 // `ICEArguments` is a bitmap indicating whether the argument at the i-th bit
62 // is required to be a constant integer expression.
63 unsigned iceArguments = 0;
65 getContext().GetBuiltinType(builtinID, error, &iceArguments);
66 assert(error == ASTContext::GE_None && "Error while getting builtin type.");
67
68 for (auto [idx, arg] : llvm::enumerate(e->arguments()))
69 ops.push_back(emitScalarOrConstFoldImmArg(iceArguments, idx, arg));
70
71 CIRGenBuilderTy &builder = getBuilder();
72 mlir::Type voidTy = builder.getVoidTy();
73
74 switch (builtinID) {
75 default:
76 return {};
77 case X86::BI_mm_clflush:
78 return emitIntrinsicCallOp(*this, e, "x86.sse2.clflush", voidTy, ops[0]);
79 case X86::BI_mm_lfence:
80 return emitIntrinsicCallOp(*this, e, "x86.sse2.lfence", voidTy);
81 case X86::BI_mm_pause:
82 return emitIntrinsicCallOp(*this, e, "x86.sse2.pause", voidTy);
83 case X86::BI_mm_mfence:
84 return emitIntrinsicCallOp(*this, e, "x86.sse2.mfence", voidTy);
85 case X86::BI_mm_sfence:
86 return emitIntrinsicCallOp(*this, e, "x86.sse.sfence", voidTy);
87 case X86::BI_mm_prefetch:
88 case X86::BI__rdtsc:
89 case X86::BI__builtin_ia32_rdtscp:
90 case X86::BI__builtin_ia32_lzcnt_u16:
91 case X86::BI__builtin_ia32_lzcnt_u32:
92 case X86::BI__builtin_ia32_lzcnt_u64:
93 case X86::BI__builtin_ia32_tzcnt_u16:
94 case X86::BI__builtin_ia32_tzcnt_u32:
95 case X86::BI__builtin_ia32_tzcnt_u64:
96 case X86::BI__builtin_ia32_undef128:
97 case X86::BI__builtin_ia32_undef256:
98 case X86::BI__builtin_ia32_undef512:
99 cgm.errorNYI(e->getSourceRange(),
100 std::string("unimplemented X86 builtin call: ") +
101 getContext().BuiltinInfo.getName(builtinID));
102 return {};
103 case X86::BI__builtin_ia32_vec_ext_v4hi:
104 case X86::BI__builtin_ia32_vec_ext_v16qi:
105 case X86::BI__builtin_ia32_vec_ext_v8hi:
106 case X86::BI__builtin_ia32_vec_ext_v4si:
107 case X86::BI__builtin_ia32_vec_ext_v4sf:
108 case X86::BI__builtin_ia32_vec_ext_v2di:
109 case X86::BI__builtin_ia32_vec_ext_v32qi:
110 case X86::BI__builtin_ia32_vec_ext_v16hi:
111 case X86::BI__builtin_ia32_vec_ext_v8si:
112 case X86::BI__builtin_ia32_vec_ext_v4di: {
113 unsigned numElts = cast<cir::VectorType>(ops[0].getType()).getSize();
114
115 uint64_t index =
116 ops[1].getDefiningOp<cir::ConstantOp>().getIntValue().getZExtValue();
117
118 index &= numElts - 1;
119
120 cir::ConstantOp indexVal =
121 builder.getUInt64(index, getLoc(e->getExprLoc()));
122
123 // These builtins exist so we can ensure the index is an ICE and in range.
124 // Otherwise we could just do this in the header file.
125 return cir::VecExtractOp::create(builder, getLoc(e->getExprLoc()), ops[0],
126 indexVal);
127 }
128 case X86::BI__builtin_ia32_vec_set_v4hi:
129 case X86::BI__builtin_ia32_vec_set_v16qi:
130 case X86::BI__builtin_ia32_vec_set_v8hi:
131 case X86::BI__builtin_ia32_vec_set_v4si:
132 case X86::BI__builtin_ia32_vec_set_v2di:
133 case X86::BI__builtin_ia32_vec_set_v32qi:
134 case X86::BI__builtin_ia32_vec_set_v16hi:
135 case X86::BI__builtin_ia32_vec_set_v8si:
136 case X86::BI__builtin_ia32_vec_set_v4di:
137 case X86::BI_mm_setcsr:
138 case X86::BI__builtin_ia32_ldmxcsr:
139 case X86::BI_mm_getcsr:
140 case X86::BI__builtin_ia32_stmxcsr:
141 case X86::BI__builtin_ia32_xsave:
142 case X86::BI__builtin_ia32_xsave64:
143 case X86::BI__builtin_ia32_xrstor:
144 case X86::BI__builtin_ia32_xrstor64:
145 case X86::BI__builtin_ia32_xsaveopt:
146 case X86::BI__builtin_ia32_xsaveopt64:
147 case X86::BI__builtin_ia32_xrstors:
148 case X86::BI__builtin_ia32_xrstors64:
149 case X86::BI__builtin_ia32_xsavec:
150 case X86::BI__builtin_ia32_xsavec64:
151 case X86::BI__builtin_ia32_xsaves:
152 case X86::BI__builtin_ia32_xsaves64:
153 case X86::BI__builtin_ia32_xsetbv:
154 case X86::BI_xsetbv:
155 case X86::BI__builtin_ia32_xgetbv:
156 case X86::BI_xgetbv:
157 case X86::BI__builtin_ia32_storedqudi128_mask:
158 case X86::BI__builtin_ia32_storedqusi128_mask:
159 case X86::BI__builtin_ia32_storedquhi128_mask:
160 case X86::BI__builtin_ia32_storedquqi128_mask:
161 case X86::BI__builtin_ia32_storeupd128_mask:
162 case X86::BI__builtin_ia32_storeups128_mask:
163 case X86::BI__builtin_ia32_storedqudi256_mask:
164 case X86::BI__builtin_ia32_storedqusi256_mask:
165 case X86::BI__builtin_ia32_storedquhi256_mask:
166 case X86::BI__builtin_ia32_storedquqi256_mask:
167 case X86::BI__builtin_ia32_storeupd256_mask:
168 case X86::BI__builtin_ia32_storeups256_mask:
169 case X86::BI__builtin_ia32_storedqudi512_mask:
170 case X86::BI__builtin_ia32_storedqusi512_mask:
171 case X86::BI__builtin_ia32_storedquhi512_mask:
172 case X86::BI__builtin_ia32_storedquqi512_mask:
173 case X86::BI__builtin_ia32_storeupd512_mask:
174 case X86::BI__builtin_ia32_storeups512_mask:
175 case X86::BI__builtin_ia32_storesbf16128_mask:
176 case X86::BI__builtin_ia32_storesh128_mask:
177 case X86::BI__builtin_ia32_storess128_mask:
178 case X86::BI__builtin_ia32_storesd128_mask:
179 case X86::BI__builtin_ia32_cvtmask2b128:
180 case X86::BI__builtin_ia32_cvtmask2b256:
181 case X86::BI__builtin_ia32_cvtmask2b512:
182 case X86::BI__builtin_ia32_cvtmask2w128:
183 case X86::BI__builtin_ia32_cvtmask2w256:
184 case X86::BI__builtin_ia32_cvtmask2w512:
185 case X86::BI__builtin_ia32_cvtmask2d128:
186 case X86::BI__builtin_ia32_cvtmask2d256:
187 case X86::BI__builtin_ia32_cvtmask2d512:
188 case X86::BI__builtin_ia32_cvtmask2q128:
189 case X86::BI__builtin_ia32_cvtmask2q256:
190 case X86::BI__builtin_ia32_cvtmask2q512:
191 case X86::BI__builtin_ia32_cvtb2mask128:
192 case X86::BI__builtin_ia32_cvtb2mask256:
193 case X86::BI__builtin_ia32_cvtb2mask512:
194 case X86::BI__builtin_ia32_cvtw2mask128:
195 case X86::BI__builtin_ia32_cvtw2mask256:
196 case X86::BI__builtin_ia32_cvtw2mask512:
197 case X86::BI__builtin_ia32_cvtd2mask128:
198 case X86::BI__builtin_ia32_cvtd2mask256:
199 case X86::BI__builtin_ia32_cvtd2mask512:
200 case X86::BI__builtin_ia32_cvtq2mask128:
201 case X86::BI__builtin_ia32_cvtq2mask256:
202 case X86::BI__builtin_ia32_cvtq2mask512:
203 case X86::BI__builtin_ia32_cvtdq2ps512_mask:
204 case X86::BI__builtin_ia32_cvtqq2ps512_mask:
205 case X86::BI__builtin_ia32_cvtqq2pd512_mask:
206 case X86::BI__builtin_ia32_vcvtw2ph512_mask:
207 case X86::BI__builtin_ia32_vcvtdq2ph512_mask:
208 case X86::BI__builtin_ia32_vcvtqq2ph512_mask:
209 case X86::BI__builtin_ia32_cvtudq2ps512_mask:
210 case X86::BI__builtin_ia32_cvtuqq2ps512_mask:
211 case X86::BI__builtin_ia32_cvtuqq2pd512_mask:
212 case X86::BI__builtin_ia32_vcvtuw2ph512_mask:
213 case X86::BI__builtin_ia32_vcvtudq2ph512_mask:
214 case X86::BI__builtin_ia32_vcvtuqq2ph512_mask:
215 case X86::BI__builtin_ia32_vfmaddsh3_mask:
216 case X86::BI__builtin_ia32_vfmaddss3_mask:
217 case X86::BI__builtin_ia32_vfmaddsd3_mask:
218 case X86::BI__builtin_ia32_vfmaddsh3_maskz:
219 case X86::BI__builtin_ia32_vfmaddss3_maskz:
220 case X86::BI__builtin_ia32_vfmaddsd3_maskz:
221 case X86::BI__builtin_ia32_vfmaddsh3_mask3:
222 case X86::BI__builtin_ia32_vfmaddss3_mask3:
223 case X86::BI__builtin_ia32_vfmaddsd3_mask3:
224 case X86::BI__builtin_ia32_vfmsubsh3_mask3:
225 case X86::BI__builtin_ia32_vfmsubss3_mask3:
226 case X86::BI__builtin_ia32_vfmsubsd3_mask3:
227 case X86::BI__builtin_ia32_vfmaddph512_mask:
228 case X86::BI__builtin_ia32_vfmaddph512_maskz:
229 case X86::BI__builtin_ia32_vfmaddph512_mask3:
230 case X86::BI__builtin_ia32_vfmaddps512_mask:
231 case X86::BI__builtin_ia32_vfmaddps512_maskz:
232 case X86::BI__builtin_ia32_vfmaddps512_mask3:
233 case X86::BI__builtin_ia32_vfmsubps512_mask3:
234 case X86::BI__builtin_ia32_vfmaddpd512_mask:
235 case X86::BI__builtin_ia32_vfmaddpd512_maskz:
236 case X86::BI__builtin_ia32_vfmaddpd512_mask3:
237 case X86::BI__builtin_ia32_vfmsubpd512_mask3:
238 case X86::BI__builtin_ia32_vfmsubph512_mask3:
239 case X86::BI__builtin_ia32_vfmaddsubph512_mask:
240 case X86::BI__builtin_ia32_vfmaddsubph512_maskz:
241 case X86::BI__builtin_ia32_vfmaddsubph512_mask3:
242 case X86::BI__builtin_ia32_vfmsubaddph512_mask3:
243 case X86::BI__builtin_ia32_vfmaddsubps512_mask:
244 case X86::BI__builtin_ia32_vfmaddsubps512_maskz:
245 case X86::BI__builtin_ia32_vfmaddsubps512_mask3:
246 case X86::BI__builtin_ia32_vfmsubaddps512_mask3:
247 case X86::BI__builtin_ia32_vfmaddsubpd512_mask:
248 case X86::BI__builtin_ia32_vfmaddsubpd512_maskz:
249 case X86::BI__builtin_ia32_vfmaddsubpd512_mask3:
250 case X86::BI__builtin_ia32_vfmsubaddpd512_mask3:
251 case X86::BI__builtin_ia32_movdqa32store128_mask:
252 case X86::BI__builtin_ia32_movdqa64store128_mask:
253 case X86::BI__builtin_ia32_storeaps128_mask:
254 case X86::BI__builtin_ia32_storeapd128_mask:
255 case X86::BI__builtin_ia32_movdqa32store256_mask:
256 case X86::BI__builtin_ia32_movdqa64store256_mask:
257 case X86::BI__builtin_ia32_storeaps256_mask:
258 case X86::BI__builtin_ia32_storeapd256_mask:
259 case X86::BI__builtin_ia32_movdqa32store512_mask:
260 case X86::BI__builtin_ia32_movdqa64store512_mask:
261 case X86::BI__builtin_ia32_storeaps512_mask:
262 case X86::BI__builtin_ia32_storeapd512_mask:
263 case X86::BI__builtin_ia32_loadups128_mask:
264 case X86::BI__builtin_ia32_loadups256_mask:
265 case X86::BI__builtin_ia32_loadups512_mask:
266 case X86::BI__builtin_ia32_loadupd128_mask:
267 case X86::BI__builtin_ia32_loadupd256_mask:
268 case X86::BI__builtin_ia32_loadupd512_mask:
269 case X86::BI__builtin_ia32_loaddquqi128_mask:
270 case X86::BI__builtin_ia32_loaddquqi256_mask:
271 case X86::BI__builtin_ia32_loaddquqi512_mask:
272 case X86::BI__builtin_ia32_loaddquhi128_mask:
273 case X86::BI__builtin_ia32_loaddquhi256_mask:
274 case X86::BI__builtin_ia32_loaddquhi512_mask:
275 case X86::BI__builtin_ia32_loaddqusi128_mask:
276 case X86::BI__builtin_ia32_loaddqusi256_mask:
277 case X86::BI__builtin_ia32_loaddqusi512_mask:
278 case X86::BI__builtin_ia32_loaddqudi128_mask:
279 case X86::BI__builtin_ia32_loaddqudi256_mask:
280 case X86::BI__builtin_ia32_loaddqudi512_mask:
281 case X86::BI__builtin_ia32_loadsbf16128_mask:
282 case X86::BI__builtin_ia32_loadsh128_mask:
283 case X86::BI__builtin_ia32_loadss128_mask:
284 case X86::BI__builtin_ia32_loadsd128_mask:
285 case X86::BI__builtin_ia32_loadaps128_mask:
286 case X86::BI__builtin_ia32_loadaps256_mask:
287 case X86::BI__builtin_ia32_loadaps512_mask:
288 case X86::BI__builtin_ia32_loadapd128_mask:
289 case X86::BI__builtin_ia32_loadapd256_mask:
290 case X86::BI__builtin_ia32_loadapd512_mask:
291 case X86::BI__builtin_ia32_movdqa32load128_mask:
292 case X86::BI__builtin_ia32_movdqa32load256_mask:
293 case X86::BI__builtin_ia32_movdqa32load512_mask:
294 case X86::BI__builtin_ia32_movdqa64load128_mask:
295 case X86::BI__builtin_ia32_movdqa64load256_mask:
296 case X86::BI__builtin_ia32_movdqa64load512_mask:
297 case X86::BI__builtin_ia32_expandloaddf128_mask:
298 case X86::BI__builtin_ia32_expandloaddf256_mask:
299 case X86::BI__builtin_ia32_expandloaddf512_mask:
300 case X86::BI__builtin_ia32_expandloadsf128_mask:
301 case X86::BI__builtin_ia32_expandloadsf256_mask:
302 case X86::BI__builtin_ia32_expandloadsf512_mask:
303 case X86::BI__builtin_ia32_expandloaddi128_mask:
304 case X86::BI__builtin_ia32_expandloaddi256_mask:
305 case X86::BI__builtin_ia32_expandloaddi512_mask:
306 case X86::BI__builtin_ia32_expandloadsi128_mask:
307 case X86::BI__builtin_ia32_expandloadsi256_mask:
308 case X86::BI__builtin_ia32_expandloadsi512_mask:
309 case X86::BI__builtin_ia32_expandloadhi128_mask:
310 case X86::BI__builtin_ia32_expandloadhi256_mask:
311 case X86::BI__builtin_ia32_expandloadhi512_mask:
312 case X86::BI__builtin_ia32_expandloadqi128_mask:
313 case X86::BI__builtin_ia32_expandloadqi256_mask:
314 case X86::BI__builtin_ia32_expandloadqi512_mask:
315 case X86::BI__builtin_ia32_compressstoredf128_mask:
316 case X86::BI__builtin_ia32_compressstoredf256_mask:
317 case X86::BI__builtin_ia32_compressstoredf512_mask:
318 case X86::BI__builtin_ia32_compressstoresf128_mask:
319 case X86::BI__builtin_ia32_compressstoresf256_mask:
320 case X86::BI__builtin_ia32_compressstoresf512_mask:
321 case X86::BI__builtin_ia32_compressstoredi128_mask:
322 case X86::BI__builtin_ia32_compressstoredi256_mask:
323 case X86::BI__builtin_ia32_compressstoredi512_mask:
324 case X86::BI__builtin_ia32_compressstoresi128_mask:
325 case X86::BI__builtin_ia32_compressstoresi256_mask:
326 case X86::BI__builtin_ia32_compressstoresi512_mask:
327 case X86::BI__builtin_ia32_compressstorehi128_mask:
328 case X86::BI__builtin_ia32_compressstorehi256_mask:
329 case X86::BI__builtin_ia32_compressstorehi512_mask:
330 case X86::BI__builtin_ia32_compressstoreqi128_mask:
331 case X86::BI__builtin_ia32_compressstoreqi256_mask:
332 case X86::BI__builtin_ia32_compressstoreqi512_mask:
333 case X86::BI__builtin_ia32_expanddf128_mask:
334 case X86::BI__builtin_ia32_expanddf256_mask:
335 case X86::BI__builtin_ia32_expanddf512_mask:
336 case X86::BI__builtin_ia32_expandsf128_mask:
337 case X86::BI__builtin_ia32_expandsf256_mask:
338 case X86::BI__builtin_ia32_expandsf512_mask:
339 case X86::BI__builtin_ia32_expanddi128_mask:
340 case X86::BI__builtin_ia32_expanddi256_mask:
341 case X86::BI__builtin_ia32_expanddi512_mask:
342 case X86::BI__builtin_ia32_expandsi128_mask:
343 case X86::BI__builtin_ia32_expandsi256_mask:
344 case X86::BI__builtin_ia32_expandsi512_mask:
345 case X86::BI__builtin_ia32_expandhi128_mask:
346 case X86::BI__builtin_ia32_expandhi256_mask:
347 case X86::BI__builtin_ia32_expandhi512_mask:
348 case X86::BI__builtin_ia32_expandqi128_mask:
349 case X86::BI__builtin_ia32_expandqi256_mask:
350 case X86::BI__builtin_ia32_expandqi512_mask:
351 case X86::BI__builtin_ia32_compressdf128_mask:
352 case X86::BI__builtin_ia32_compressdf256_mask:
353 case X86::BI__builtin_ia32_compressdf512_mask:
354 case X86::BI__builtin_ia32_compresssf128_mask:
355 case X86::BI__builtin_ia32_compresssf256_mask:
356 case X86::BI__builtin_ia32_compresssf512_mask:
357 case X86::BI__builtin_ia32_compressdi128_mask:
358 case X86::BI__builtin_ia32_compressdi256_mask:
359 case X86::BI__builtin_ia32_compressdi512_mask:
360 case X86::BI__builtin_ia32_compresssi128_mask:
361 case X86::BI__builtin_ia32_compresssi256_mask:
362 case X86::BI__builtin_ia32_compresssi512_mask:
363 case X86::BI__builtin_ia32_compresshi128_mask:
364 case X86::BI__builtin_ia32_compresshi256_mask:
365 case X86::BI__builtin_ia32_compresshi512_mask:
366 case X86::BI__builtin_ia32_compressqi128_mask:
367 case X86::BI__builtin_ia32_compressqi256_mask:
368 case X86::BI__builtin_ia32_compressqi512_mask:
369 case X86::BI__builtin_ia32_gather3div2df:
370 case X86::BI__builtin_ia32_gather3div2di:
371 case X86::BI__builtin_ia32_gather3div4df:
372 case X86::BI__builtin_ia32_gather3div4di:
373 case X86::BI__builtin_ia32_gather3div4sf:
374 case X86::BI__builtin_ia32_gather3div4si:
375 case X86::BI__builtin_ia32_gather3div8sf:
376 case X86::BI__builtin_ia32_gather3div8si:
377 case X86::BI__builtin_ia32_gather3siv2df:
378 case X86::BI__builtin_ia32_gather3siv2di:
379 case X86::BI__builtin_ia32_gather3siv4df:
380 case X86::BI__builtin_ia32_gather3siv4di:
381 case X86::BI__builtin_ia32_gather3siv4sf:
382 case X86::BI__builtin_ia32_gather3siv4si:
383 case X86::BI__builtin_ia32_gather3siv8sf:
384 case X86::BI__builtin_ia32_gather3siv8si:
385 case X86::BI__builtin_ia32_gathersiv8df:
386 case X86::BI__builtin_ia32_gathersiv16sf:
387 case X86::BI__builtin_ia32_gatherdiv8df:
388 case X86::BI__builtin_ia32_gatherdiv16sf:
389 case X86::BI__builtin_ia32_gathersiv8di:
390 case X86::BI__builtin_ia32_gathersiv16si:
391 case X86::BI__builtin_ia32_gatherdiv8di:
392 case X86::BI__builtin_ia32_gatherdiv16si:
393 case X86::BI__builtin_ia32_scattersiv8df:
394 case X86::BI__builtin_ia32_scattersiv16sf:
395 case X86::BI__builtin_ia32_scatterdiv8df:
396 case X86::BI__builtin_ia32_scatterdiv16sf:
397 case X86::BI__builtin_ia32_scattersiv8di:
398 case X86::BI__builtin_ia32_scattersiv16si:
399 case X86::BI__builtin_ia32_scatterdiv8di:
400 case X86::BI__builtin_ia32_scatterdiv16si:
401 case X86::BI__builtin_ia32_scatterdiv2df:
402 case X86::BI__builtin_ia32_scatterdiv2di:
403 case X86::BI__builtin_ia32_scatterdiv4df:
404 case X86::BI__builtin_ia32_scatterdiv4di:
405 case X86::BI__builtin_ia32_scatterdiv4sf:
406 case X86::BI__builtin_ia32_scatterdiv4si:
407 case X86::BI__builtin_ia32_scatterdiv8sf:
408 case X86::BI__builtin_ia32_scatterdiv8si:
409 case X86::BI__builtin_ia32_scattersiv2df:
410 case X86::BI__builtin_ia32_scattersiv2di:
411 case X86::BI__builtin_ia32_scattersiv4df:
412 case X86::BI__builtin_ia32_scattersiv4di:
413 case X86::BI__builtin_ia32_scattersiv4sf:
414 case X86::BI__builtin_ia32_scattersiv4si:
415 case X86::BI__builtin_ia32_scattersiv8sf:
416 case X86::BI__builtin_ia32_scattersiv8si:
417 case X86::BI__builtin_ia32_vextractf128_pd256:
418 case X86::BI__builtin_ia32_vextractf128_ps256:
419 case X86::BI__builtin_ia32_vextractf128_si256:
420 case X86::BI__builtin_ia32_extract128i256:
421 case X86::BI__builtin_ia32_extractf64x4_mask:
422 case X86::BI__builtin_ia32_extractf32x4_mask:
423 case X86::BI__builtin_ia32_extracti64x4_mask:
424 case X86::BI__builtin_ia32_extracti32x4_mask:
425 case X86::BI__builtin_ia32_extractf32x8_mask:
426 case X86::BI__builtin_ia32_extracti32x8_mask:
427 case X86::BI__builtin_ia32_extractf32x4_256_mask:
428 case X86::BI__builtin_ia32_extracti32x4_256_mask:
429 case X86::BI__builtin_ia32_extractf64x2_256_mask:
430 case X86::BI__builtin_ia32_extracti64x2_256_mask:
431 case X86::BI__builtin_ia32_extractf64x2_512_mask:
432 case X86::BI__builtin_ia32_extracti64x2_512_mask:
433 case X86::BI__builtin_ia32_vinsertf128_pd256:
434 case X86::BI__builtin_ia32_vinsertf128_ps256:
435 case X86::BI__builtin_ia32_vinsertf128_si256:
436 case X86::BI__builtin_ia32_insert128i256:
437 case X86::BI__builtin_ia32_insertf64x4:
438 case X86::BI__builtin_ia32_insertf32x4:
439 case X86::BI__builtin_ia32_inserti64x4:
440 case X86::BI__builtin_ia32_inserti32x4:
441 case X86::BI__builtin_ia32_insertf32x8:
442 case X86::BI__builtin_ia32_inserti32x8:
443 case X86::BI__builtin_ia32_insertf32x4_256:
444 case X86::BI__builtin_ia32_inserti32x4_256:
445 case X86::BI__builtin_ia32_insertf64x2_256:
446 case X86::BI__builtin_ia32_inserti64x2_256:
447 case X86::BI__builtin_ia32_insertf64x2_512:
448 case X86::BI__builtin_ia32_inserti64x2_512:
449 case X86::BI__builtin_ia32_pmovqd512_mask:
450 case X86::BI__builtin_ia32_pmovwb512_mask:
451 case X86::BI__builtin_ia32_pblendw128:
452 case X86::BI__builtin_ia32_blendpd:
453 case X86::BI__builtin_ia32_blendps:
454 case X86::BI__builtin_ia32_blendpd256:
455 case X86::BI__builtin_ia32_blendps256:
456 case X86::BI__builtin_ia32_pblendw256:
457 case X86::BI__builtin_ia32_pblendd128:
458 case X86::BI__builtin_ia32_pblendd256:
459 case X86::BI__builtin_ia32_pshuflw:
460 case X86::BI__builtin_ia32_pshuflw256:
461 case X86::BI__builtin_ia32_pshuflw512:
462 case X86::BI__builtin_ia32_pshufhw:
463 case X86::BI__builtin_ia32_pshufhw256:
464 case X86::BI__builtin_ia32_pshufhw512:
465 case X86::BI__builtin_ia32_pshufd:
466 case X86::BI__builtin_ia32_pshufd256:
467 case X86::BI__builtin_ia32_pshufd512:
468 case X86::BI__builtin_ia32_vpermilpd:
469 case X86::BI__builtin_ia32_vpermilps:
470 case X86::BI__builtin_ia32_vpermilpd256:
471 case X86::BI__builtin_ia32_vpermilps256:
472 case X86::BI__builtin_ia32_vpermilpd512:
473 case X86::BI__builtin_ia32_vpermilps512:
474 case X86::BI__builtin_ia32_shufpd:
475 case X86::BI__builtin_ia32_shufpd256:
476 case X86::BI__builtin_ia32_shufpd512:
477 case X86::BI__builtin_ia32_shufps:
478 case X86::BI__builtin_ia32_shufps256:
479 case X86::BI__builtin_ia32_shufps512:
480 case X86::BI__builtin_ia32_permdi256:
481 case X86::BI__builtin_ia32_permdf256:
482 case X86::BI__builtin_ia32_permdi512:
483 case X86::BI__builtin_ia32_permdf512:
484 case X86::BI__builtin_ia32_palignr128:
485 case X86::BI__builtin_ia32_palignr256:
486 case X86::BI__builtin_ia32_palignr512:
487 case X86::BI__builtin_ia32_alignd128:
488 case X86::BI__builtin_ia32_alignd256:
489 case X86::BI__builtin_ia32_alignd512:
490 case X86::BI__builtin_ia32_alignq128:
491 case X86::BI__builtin_ia32_alignq256:
492 case X86::BI__builtin_ia32_alignq512:
493 case X86::BI__builtin_ia32_shuf_f32x4_256:
494 case X86::BI__builtin_ia32_shuf_f64x2_256:
495 case X86::BI__builtin_ia32_shuf_i32x4_256:
496 case X86::BI__builtin_ia32_shuf_i64x2_256:
497 case X86::BI__builtin_ia32_shuf_f32x4:
498 case X86::BI__builtin_ia32_shuf_f64x2:
499 case X86::BI__builtin_ia32_shuf_i32x4:
500 case X86::BI__builtin_ia32_shuf_i64x2:
501 case X86::BI__builtin_ia32_vperm2f128_pd256:
502 case X86::BI__builtin_ia32_vperm2f128_ps256:
503 case X86::BI__builtin_ia32_vperm2f128_si256:
504 case X86::BI__builtin_ia32_permti256:
505 case X86::BI__builtin_ia32_pslldqi128_byteshift:
506 case X86::BI__builtin_ia32_pslldqi256_byteshift:
507 case X86::BI__builtin_ia32_pslldqi512_byteshift:
508 case X86::BI__builtin_ia32_psrldqi128_byteshift:
509 case X86::BI__builtin_ia32_psrldqi256_byteshift:
510 case X86::BI__builtin_ia32_psrldqi512_byteshift:
511 case X86::BI__builtin_ia32_kshiftliqi:
512 case X86::BI__builtin_ia32_kshiftlihi:
513 case X86::BI__builtin_ia32_kshiftlisi:
514 case X86::BI__builtin_ia32_kshiftlidi:
515 case X86::BI__builtin_ia32_kshiftriqi:
516 case X86::BI__builtin_ia32_kshiftrihi:
517 case X86::BI__builtin_ia32_kshiftrisi:
518 case X86::BI__builtin_ia32_kshiftridi:
519 case X86::BI__builtin_ia32_vprotbi:
520 case X86::BI__builtin_ia32_vprotwi:
521 case X86::BI__builtin_ia32_vprotdi:
522 case X86::BI__builtin_ia32_vprotqi:
523 case X86::BI__builtin_ia32_prold128:
524 case X86::BI__builtin_ia32_prold256:
525 case X86::BI__builtin_ia32_prold512:
526 case X86::BI__builtin_ia32_prolq128:
527 case X86::BI__builtin_ia32_prolq256:
528 case X86::BI__builtin_ia32_prolq512:
529 case X86::BI__builtin_ia32_prord128:
530 case X86::BI__builtin_ia32_prord256:
531 case X86::BI__builtin_ia32_prord512:
532 case X86::BI__builtin_ia32_prorq128:
533 case X86::BI__builtin_ia32_prorq256:
534 case X86::BI__builtin_ia32_prorq512:
535 case X86::BI__builtin_ia32_selectb_128:
536 case X86::BI__builtin_ia32_selectb_256:
537 case X86::BI__builtin_ia32_selectb_512:
538 case X86::BI__builtin_ia32_selectw_128:
539 case X86::BI__builtin_ia32_selectw_256:
540 case X86::BI__builtin_ia32_selectw_512:
541 case X86::BI__builtin_ia32_selectd_128:
542 case X86::BI__builtin_ia32_selectd_256:
543 case X86::BI__builtin_ia32_selectd_512:
544 case X86::BI__builtin_ia32_selectq_128:
545 case X86::BI__builtin_ia32_selectq_256:
546 case X86::BI__builtin_ia32_selectq_512:
547 case X86::BI__builtin_ia32_selectph_128:
548 case X86::BI__builtin_ia32_selectph_256:
549 case X86::BI__builtin_ia32_selectph_512:
550 case X86::BI__builtin_ia32_selectpbf_128:
551 case X86::BI__builtin_ia32_selectpbf_256:
552 case X86::BI__builtin_ia32_selectpbf_512:
553 case X86::BI__builtin_ia32_selectps_128:
554 case X86::BI__builtin_ia32_selectps_256:
555 case X86::BI__builtin_ia32_selectps_512:
556 case X86::BI__builtin_ia32_selectpd_128:
557 case X86::BI__builtin_ia32_selectpd_256:
558 case X86::BI__builtin_ia32_selectpd_512:
559 case X86::BI__builtin_ia32_selectsh_128:
560 case X86::BI__builtin_ia32_selectsbf_128:
561 case X86::BI__builtin_ia32_selectss_128:
562 case X86::BI__builtin_ia32_selectsd_128:
563 case X86::BI__builtin_ia32_cmpb128_mask:
564 case X86::BI__builtin_ia32_cmpb256_mask:
565 case X86::BI__builtin_ia32_cmpb512_mask:
566 case X86::BI__builtin_ia32_cmpw128_mask:
567 case X86::BI__builtin_ia32_cmpw256_mask:
568 case X86::BI__builtin_ia32_cmpw512_mask:
569 case X86::BI__builtin_ia32_cmpd128_mask:
570 case X86::BI__builtin_ia32_cmpd256_mask:
571 case X86::BI__builtin_ia32_cmpd512_mask:
572 case X86::BI__builtin_ia32_cmpq128_mask:
573 case X86::BI__builtin_ia32_cmpq256_mask:
574 case X86::BI__builtin_ia32_cmpq512_mask:
575 case X86::BI__builtin_ia32_ucmpb128_mask:
576 case X86::BI__builtin_ia32_ucmpb256_mask:
577 case X86::BI__builtin_ia32_ucmpb512_mask:
578 case X86::BI__builtin_ia32_ucmpw128_mask:
579 case X86::BI__builtin_ia32_ucmpw256_mask:
580 case X86::BI__builtin_ia32_ucmpw512_mask:
581 case X86::BI__builtin_ia32_ucmpd128_mask:
582 case X86::BI__builtin_ia32_ucmpd256_mask:
583 case X86::BI__builtin_ia32_ucmpd512_mask:
584 case X86::BI__builtin_ia32_ucmpq128_mask:
585 case X86::BI__builtin_ia32_ucmpq256_mask:
586 case X86::BI__builtin_ia32_ucmpq512_mask:
587 case X86::BI__builtin_ia32_vpcomb:
588 case X86::BI__builtin_ia32_vpcomw:
589 case X86::BI__builtin_ia32_vpcomd:
590 case X86::BI__builtin_ia32_vpcomq:
591 case X86::BI__builtin_ia32_vpcomub:
592 case X86::BI__builtin_ia32_vpcomuw:
593 case X86::BI__builtin_ia32_vpcomud:
594 case X86::BI__builtin_ia32_vpcomuq:
595 case X86::BI__builtin_ia32_kortestcqi:
596 case X86::BI__builtin_ia32_kortestchi:
597 case X86::BI__builtin_ia32_kortestcsi:
598 case X86::BI__builtin_ia32_kortestcdi:
599 case X86::BI__builtin_ia32_kortestzqi:
600 case X86::BI__builtin_ia32_kortestzhi:
601 case X86::BI__builtin_ia32_kortestzsi:
602 case X86::BI__builtin_ia32_kortestzdi:
603 case X86::BI__builtin_ia32_ktestcqi:
604 case X86::BI__builtin_ia32_ktestzqi:
605 case X86::BI__builtin_ia32_ktestchi:
606 case X86::BI__builtin_ia32_ktestzhi:
607 case X86::BI__builtin_ia32_ktestcsi:
608 case X86::BI__builtin_ia32_ktestzsi:
609 case X86::BI__builtin_ia32_ktestcdi:
610 case X86::BI__builtin_ia32_ktestzdi:
611 case X86::BI__builtin_ia32_kaddqi:
612 case X86::BI__builtin_ia32_kaddhi:
613 case X86::BI__builtin_ia32_kaddsi:
614 case X86::BI__builtin_ia32_kadddi:
615 case X86::BI__builtin_ia32_kandqi:
616 case X86::BI__builtin_ia32_kandhi:
617 case X86::BI__builtin_ia32_kandsi:
618 case X86::BI__builtin_ia32_kanddi:
619 case X86::BI__builtin_ia32_kandnqi:
620 case X86::BI__builtin_ia32_kandnhi:
621 case X86::BI__builtin_ia32_kandnsi:
622 case X86::BI__builtin_ia32_kandndi:
623 case X86::BI__builtin_ia32_korqi:
624 case X86::BI__builtin_ia32_korhi:
625 case X86::BI__builtin_ia32_korsi:
626 case X86::BI__builtin_ia32_kordi:
627 case X86::BI__builtin_ia32_kxnorqi:
628 case X86::BI__builtin_ia32_kxnorhi:
629 case X86::BI__builtin_ia32_kxnorsi:
630 case X86::BI__builtin_ia32_kxnordi:
631 case X86::BI__builtin_ia32_kxorqi:
632 case X86::BI__builtin_ia32_kxorhi:
633 case X86::BI__builtin_ia32_kxorsi:
634 case X86::BI__builtin_ia32_kxordi:
635 case X86::BI__builtin_ia32_knotqi:
636 case X86::BI__builtin_ia32_knothi:
637 case X86::BI__builtin_ia32_knotsi:
638 case X86::BI__builtin_ia32_knotdi:
639 case X86::BI__builtin_ia32_kmovb:
640 case X86::BI__builtin_ia32_kmovw:
641 case X86::BI__builtin_ia32_kmovd:
642 case X86::BI__builtin_ia32_kmovq:
643 case X86::BI__builtin_ia32_kunpckdi:
644 case X86::BI__builtin_ia32_kunpcksi:
645 case X86::BI__builtin_ia32_kunpckhi:
646 case X86::BI__builtin_ia32_sqrtsh_round_mask:
647 case X86::BI__builtin_ia32_sqrtsd_round_mask:
648 case X86::BI__builtin_ia32_sqrtss_round_mask:
649 case X86::BI__builtin_ia32_sqrtpd256:
650 case X86::BI__builtin_ia32_sqrtpd:
651 case X86::BI__builtin_ia32_sqrtps256:
652 case X86::BI__builtin_ia32_sqrtps:
653 case X86::BI__builtin_ia32_sqrtph256:
654 case X86::BI__builtin_ia32_sqrtph:
655 case X86::BI__builtin_ia32_sqrtph512:
656 case X86::BI__builtin_ia32_vsqrtbf16256:
657 case X86::BI__builtin_ia32_vsqrtbf16:
658 case X86::BI__builtin_ia32_vsqrtbf16512:
659 case X86::BI__builtin_ia32_sqrtps512:
660 case X86::BI__builtin_ia32_sqrtpd512:
661 case X86::BI__builtin_ia32_pmuludq128:
662 case X86::BI__builtin_ia32_pmuludq256:
663 case X86::BI__builtin_ia32_pmuludq512:
664 case X86::BI__builtin_ia32_pmuldq128:
665 case X86::BI__builtin_ia32_pmuldq256:
666 case X86::BI__builtin_ia32_pmuldq512:
667 case X86::BI__builtin_ia32_pternlogd512_mask:
668 case X86::BI__builtin_ia32_pternlogq512_mask:
669 case X86::BI__builtin_ia32_pternlogd128_mask:
670 case X86::BI__builtin_ia32_pternlogd256_mask:
671 case X86::BI__builtin_ia32_pternlogq128_mask:
672 case X86::BI__builtin_ia32_pternlogq256_mask:
673 case X86::BI__builtin_ia32_pternlogd512_maskz:
674 case X86::BI__builtin_ia32_pternlogq512_maskz:
675 case X86::BI__builtin_ia32_pternlogd128_maskz:
676 case X86::BI__builtin_ia32_pternlogd256_maskz:
677 case X86::BI__builtin_ia32_pternlogq128_maskz:
678 case X86::BI__builtin_ia32_pternlogq256_maskz:
679 case X86::BI__builtin_ia32_vpshldd128:
680 case X86::BI__builtin_ia32_vpshldd256:
681 case X86::BI__builtin_ia32_vpshldd512:
682 case X86::BI__builtin_ia32_vpshldq128:
683 case X86::BI__builtin_ia32_vpshldq256:
684 case X86::BI__builtin_ia32_vpshldq512:
685 case X86::BI__builtin_ia32_vpshldw128:
686 case X86::BI__builtin_ia32_vpshldw256:
687 case X86::BI__builtin_ia32_vpshldw512:
688 case X86::BI__builtin_ia32_vpshrdd128:
689 case X86::BI__builtin_ia32_vpshrdd256:
690 case X86::BI__builtin_ia32_vpshrdd512:
691 case X86::BI__builtin_ia32_vpshrdq128:
692 case X86::BI__builtin_ia32_vpshrdq256:
693 case X86::BI__builtin_ia32_vpshrdq512:
694 case X86::BI__builtin_ia32_vpshrdw128:
695 case X86::BI__builtin_ia32_vpshrdw256:
696 case X86::BI__builtin_ia32_vpshrdw512:
697 case X86::BI__builtin_ia32_reduce_fadd_pd512:
698 case X86::BI__builtin_ia32_reduce_fadd_ps512:
699 case X86::BI__builtin_ia32_reduce_fadd_ph512:
700 case X86::BI__builtin_ia32_reduce_fadd_ph256:
701 case X86::BI__builtin_ia32_reduce_fadd_ph128:
702 case X86::BI__builtin_ia32_reduce_fmul_pd512:
703 case X86::BI__builtin_ia32_reduce_fmul_ps512:
704 case X86::BI__builtin_ia32_reduce_fmul_ph512:
705 case X86::BI__builtin_ia32_reduce_fmul_ph256:
706 case X86::BI__builtin_ia32_reduce_fmul_ph128:
707 case X86::BI__builtin_ia32_reduce_fmax_pd512:
708 case X86::BI__builtin_ia32_reduce_fmax_ps512:
709 case X86::BI__builtin_ia32_reduce_fmax_ph512:
710 case X86::BI__builtin_ia32_reduce_fmax_ph256:
711 case X86::BI__builtin_ia32_reduce_fmax_ph128:
712 case X86::BI__builtin_ia32_reduce_fmin_pd512:
713 case X86::BI__builtin_ia32_reduce_fmin_ps512:
714 case X86::BI__builtin_ia32_reduce_fmin_ph512:
715 case X86::BI__builtin_ia32_reduce_fmin_ph256:
716 case X86::BI__builtin_ia32_reduce_fmin_ph128:
717 case X86::BI__builtin_ia32_rdrand16_step:
718 case X86::BI__builtin_ia32_rdrand32_step:
719 case X86::BI__builtin_ia32_rdrand64_step:
720 case X86::BI__builtin_ia32_rdseed16_step:
721 case X86::BI__builtin_ia32_rdseed32_step:
722 case X86::BI__builtin_ia32_rdseed64_step:
723 case X86::BI__builtin_ia32_addcarryx_u32:
724 case X86::BI__builtin_ia32_addcarryx_u64:
725 case X86::BI__builtin_ia32_subborrow_u32:
726 case X86::BI__builtin_ia32_subborrow_u64:
727 case X86::BI__builtin_ia32_fpclassps128_mask:
728 case X86::BI__builtin_ia32_fpclassps256_mask:
729 case X86::BI__builtin_ia32_fpclassps512_mask:
730 case X86::BI__builtin_ia32_vfpclassbf16128_mask:
731 case X86::BI__builtin_ia32_vfpclassbf16256_mask:
732 case X86::BI__builtin_ia32_vfpclassbf16512_mask:
733 case X86::BI__builtin_ia32_fpclassph128_mask:
734 case X86::BI__builtin_ia32_fpclassph256_mask:
735 case X86::BI__builtin_ia32_fpclassph512_mask:
736 case X86::BI__builtin_ia32_fpclasspd128_mask:
737 case X86::BI__builtin_ia32_fpclasspd256_mask:
738 case X86::BI__builtin_ia32_fpclasspd512_mask:
739 case X86::BI__builtin_ia32_vp2intersect_q_512:
740 case X86::BI__builtin_ia32_vp2intersect_q_256:
741 case X86::BI__builtin_ia32_vp2intersect_q_128:
742 case X86::BI__builtin_ia32_vp2intersect_d_512:
743 case X86::BI__builtin_ia32_vp2intersect_d_256:
744 case X86::BI__builtin_ia32_vp2intersect_d_128:
745 case X86::BI__builtin_ia32_vpmultishiftqb128:
746 case X86::BI__builtin_ia32_vpmultishiftqb256:
747 case X86::BI__builtin_ia32_vpmultishiftqb512:
748 case X86::BI__builtin_ia32_vpshufbitqmb128_mask:
749 case X86::BI__builtin_ia32_vpshufbitqmb256_mask:
750 case X86::BI__builtin_ia32_vpshufbitqmb512_mask:
751 case X86::BI__builtin_ia32_cmpeqps:
752 case X86::BI__builtin_ia32_cmpeqpd:
753 case X86::BI__builtin_ia32_cmpltps:
754 case X86::BI__builtin_ia32_cmpltpd:
755 case X86::BI__builtin_ia32_cmpleps:
756 case X86::BI__builtin_ia32_cmplepd:
757 case X86::BI__builtin_ia32_cmpunordps:
758 case X86::BI__builtin_ia32_cmpunordpd:
759 case X86::BI__builtin_ia32_cmpneqps:
760 case X86::BI__builtin_ia32_cmpneqpd:
761 case X86::BI__builtin_ia32_cmpnltps:
762 case X86::BI__builtin_ia32_cmpnltpd:
763 case X86::BI__builtin_ia32_cmpnleps:
764 case X86::BI__builtin_ia32_cmpnlepd:
765 case X86::BI__builtin_ia32_cmpordps:
766 case X86::BI__builtin_ia32_cmpordpd:
767 case X86::BI__builtin_ia32_cmpph128_mask:
768 case X86::BI__builtin_ia32_cmpph256_mask:
769 case X86::BI__builtin_ia32_cmpph512_mask:
770 case X86::BI__builtin_ia32_cmpps128_mask:
771 case X86::BI__builtin_ia32_cmpps256_mask:
772 case X86::BI__builtin_ia32_cmpps512_mask:
773 case X86::BI__builtin_ia32_cmppd128_mask:
774 case X86::BI__builtin_ia32_cmppd256_mask:
775 case X86::BI__builtin_ia32_cmppd512_mask:
776 case X86::BI__builtin_ia32_vcmpbf16512_mask:
777 case X86::BI__builtin_ia32_vcmpbf16256_mask:
778 case X86::BI__builtin_ia32_vcmpbf16128_mask:
779 case X86::BI__builtin_ia32_cmpps:
780 case X86::BI__builtin_ia32_cmpps256:
781 case X86::BI__builtin_ia32_cmppd:
782 case X86::BI__builtin_ia32_cmppd256:
783 case X86::BI__builtin_ia32_cmpeqss:
784 case X86::BI__builtin_ia32_cmpltss:
785 case X86::BI__builtin_ia32_cmpless:
786 case X86::BI__builtin_ia32_cmpunordss:
787 case X86::BI__builtin_ia32_cmpneqss:
788 case X86::BI__builtin_ia32_cmpnltss:
789 case X86::BI__builtin_ia32_cmpnless:
790 case X86::BI__builtin_ia32_cmpordss:
791 case X86::BI__builtin_ia32_cmpeqsd:
792 case X86::BI__builtin_ia32_cmpltsd:
793 case X86::BI__builtin_ia32_cmplesd:
794 case X86::BI__builtin_ia32_cmpunordsd:
795 case X86::BI__builtin_ia32_cmpneqsd:
796 case X86::BI__builtin_ia32_cmpnltsd:
797 case X86::BI__builtin_ia32_cmpnlesd:
798 case X86::BI__builtin_ia32_cmpordsd:
799 case X86::BI__builtin_ia32_vcvtph2ps_mask:
800 case X86::BI__builtin_ia32_vcvtph2ps256_mask:
801 case X86::BI__builtin_ia32_vcvtph2ps512_mask:
802 case X86::BI__builtin_ia32_cvtneps2bf16_128_mask:
803 case X86::BI__builtin_ia32_cvtsbf162ss_32:
804 case X86::BI__builtin_ia32_cvtneps2bf16_256_mask:
805 case X86::BI__builtin_ia32_cvtneps2bf16_512_mask:
806 case X86::BI__cpuid:
807 case X86::BI__cpuidex:
808 case X86::BI__emul:
809 case X86::BI__emulu:
810 case X86::BI__mulh:
811 case X86::BI__umulh:
812 case X86::BI_mul128:
813 case X86::BI_umul128:
814 case X86::BI__faststorefence:
815 case X86::BI__shiftleft128:
816 case X86::BI__shiftright128:
817 case X86::BI_ReadWriteBarrier:
818 case X86::BI_ReadBarrier:
819 case X86::BI_WriteBarrier:
820 case X86::BI_AddressOfReturnAddress:
821 case X86::BI__stosb:
822 case X86::BI__ud2:
823 case X86::BI__int2c:
824 case X86::BI__readfsbyte:
825 case X86::BI__readfsword:
826 case X86::BI__readfsdword:
827 case X86::BI__readfsqword:
828 case X86::BI__readgsbyte:
829 case X86::BI__readgsword:
830 case X86::BI__readgsdword:
831 case X86::BI__readgsqword:
832 case X86::BI__builtin_ia32_encodekey128_u32:
833 case X86::BI__builtin_ia32_encodekey256_u32:
834 case X86::BI__builtin_ia32_aesenc128kl_u8:
835 case X86::BI__builtin_ia32_aesdec128kl_u8:
836 case X86::BI__builtin_ia32_aesenc256kl_u8:
837 case X86::BI__builtin_ia32_aesdec256kl_u8:
838 case X86::BI__builtin_ia32_aesencwide128kl_u8:
839 case X86::BI__builtin_ia32_aesdecwide128kl_u8:
840 case X86::BI__builtin_ia32_aesencwide256kl_u8:
841 case X86::BI__builtin_ia32_aesdecwide256kl_u8:
842 case X86::BI__builtin_ia32_vfcmaddcph512_mask:
843 case X86::BI__builtin_ia32_vfmaddcph512_mask:
844 case X86::BI__builtin_ia32_vfcmaddcsh_round_mask:
845 case X86::BI__builtin_ia32_vfmaddcsh_round_mask:
846 case X86::BI__builtin_ia32_vfcmaddcsh_round_mask3:
847 case X86::BI__builtin_ia32_vfmaddcsh_round_mask3:
848 case X86::BI__builtin_ia32_prefetchi:
849 cgm.errorNYI(e->getSourceRange(),
850 std::string("unimplemented X86 builtin call: ") +
851 getContext().BuiltinInfo.getName(builtinID));
852 return {};
853 }
854}
Defines enum values for all the target-independent builtin functions.
static mlir::Value emitIntrinsicCallOp(CIRGenFunction &cgf, const CallExpr *e, const std::string &str, const mlir::Type &resTy, Operands &&...op)
TokenType getType() const
Returns the token's type, e.g.
Enumerates target-specific builtins in their own namespaces within namespace clang.
QualType GetBuiltinType(unsigned ID, GetBuiltinTypeError &Error, unsigned *IntegerConstantArgs=nullptr) const
Return the type for the specified builtin.
@ GE_None
No error.
mlir::Location getLoc(clang::SourceLocation srcLoc)
Helpers to convert Clang's SourceLocation to a MLIR Location.
CIRGenBuilderTy & getBuilder()
mlir::Value emitX86BuiltinExpr(unsigned builtinID, const CallExpr *e)
clang::ASTContext & getContext() const
mlir::Value emitScalarOrConstFoldImmArg(unsigned iceArguments, unsigned idx, const Expr *argExpr)
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Definition Expr.h:2877
arg_range arguments()
Definition Expr.h:3129
SourceLocation getExprLoc() const LLVM_READONLY
getExprLoc - Return the preferred location for the arrow when diagnosing a problem with a generic exp...
Definition Expr.cpp:276
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...
Definition Stmt.cpp:338
The JSON file list parser is used to communicate input to InstallAPI.
U cast(CodeGen::Address addr)
Definition Address.h:327
static bool msvcBuiltins()
static bool handleBuiltinICEArguments()