185 NEON::BI__builtin_neon_splat_lane_bf16,
186 NEON::BI__builtin_neon_splat_lane_v,
189 NEON::BI__builtin_neon_splat_laneq_bf16,
190 NEON::BI__builtin_neon_splat_laneq_v,
193 NEON::BI__builtin_neon_splatq_lane_bf16,
194 NEON::BI__builtin_neon_splatq_lane_v,
197 NEON::BI__builtin_neon_splatq_laneq_bf16,
198 NEON::BI__builtin_neon_splatq_laneq_v,
201 NEON::BI__builtin_neon_vabd_f16,
202 NEON::BI__builtin_neon_vabd_v,
205 NEON::BI__builtin_neon_vabdq_f16,
206 NEON::BI__builtin_neon_vabdq_v,
209 NEON::BI__builtin_neon_vabs_f16,
210 NEON::BI__builtin_neon_vabs_v,
213 NEON::BI__builtin_neon_vabsq_f16,
214 NEON::BI__builtin_neon_vabsq_v,
217 NEON::BI__builtin_neon_vcage_f16,
218 NEON::BI__builtin_neon_vcage_v,
221 NEON::BI__builtin_neon_vcageq_f16,
222 NEON::BI__builtin_neon_vcageq_v,
225 NEON::BI__builtin_neon_vcagt_f16,
226 NEON::BI__builtin_neon_vcagt_v,
229 NEON::BI__builtin_neon_vcagtq_f16,
230 NEON::BI__builtin_neon_vcagtq_v,
233 NEON::BI__builtin_neon_vcale_f16,
234 NEON::BI__builtin_neon_vcale_v,
237 NEON::BI__builtin_neon_vcaleq_f16,
238 NEON::BI__builtin_neon_vcaleq_v,
241 NEON::BI__builtin_neon_vcalt_f16,
242 NEON::BI__builtin_neon_vcalt_v,
245 NEON::BI__builtin_neon_vcaltq_f16,
246 NEON::BI__builtin_neon_vcaltq_v,
249 NEON::BI__builtin_neon_vceqz_f16,
250 NEON::BI__builtin_neon_vceqz_v,
253 NEON::BI__builtin_neon_vceqzq_f16,
254 NEON::BI__builtin_neon_vceqzq_v,
257 NEON::BI__builtin_neon_vcgez_f16,
258 NEON::BI__builtin_neon_vcgez_v,
261 NEON::BI__builtin_neon_vcgezq_f16,
262 NEON::BI__builtin_neon_vcgezq_v,
265 NEON::BI__builtin_neon_vcgtz_f16,
266 NEON::BI__builtin_neon_vcgtz_v,
269 NEON::BI__builtin_neon_vcgtzq_f16,
270 NEON::BI__builtin_neon_vcgtzq_v,
273 NEON::BI__builtin_neon_vclez_f16,
274 NEON::BI__builtin_neon_vclez_v,
277 NEON::BI__builtin_neon_vclezq_f16,
278 NEON::BI__builtin_neon_vclezq_v,
281 NEON::BI__builtin_neon_vcltz_f16,
282 NEON::BI__builtin_neon_vcltz_v,
285 NEON::BI__builtin_neon_vcltzq_f16,
286 NEON::BI__builtin_neon_vcltzq_v,
289 NEON::BI__builtin_neon_vfma_f16,
290 NEON::BI__builtin_neon_vfma_v,
293 NEON::BI__builtin_neon_vfma_lane_f16,
294 NEON::BI__builtin_neon_vfma_lane_v,
297 NEON::BI__builtin_neon_vfma_laneq_f16,
298 NEON::BI__builtin_neon_vfma_laneq_v,
301 NEON::BI__builtin_neon_vfmaq_f16,
302 NEON::BI__builtin_neon_vfmaq_v,
305 NEON::BI__builtin_neon_vfmaq_lane_f16,
306 NEON::BI__builtin_neon_vfmaq_lane_v,
309 NEON::BI__builtin_neon_vfmaq_laneq_f16,
310 NEON::BI__builtin_neon_vfmaq_laneq_v,
312 {NEON::BI__builtin_neon_vld1_bf16_x2, NEON::BI__builtin_neon_vld1_x2_v},
313 {NEON::BI__builtin_neon_vld1_bf16_x3, NEON::BI__builtin_neon_vld1_x3_v},
314 {NEON::BI__builtin_neon_vld1_bf16_x4, NEON::BI__builtin_neon_vld1_x4_v},
315 {NEON::BI__builtin_neon_vld1_bf16, NEON::BI__builtin_neon_vld1_v},
316 {NEON::BI__builtin_neon_vld1_dup_bf16, NEON::BI__builtin_neon_vld1_dup_v},
317 {NEON::BI__builtin_neon_vld1_lane_bf16, NEON::BI__builtin_neon_vld1_lane_v},
318 {NEON::BI__builtin_neon_vld1q_bf16_x2, NEON::BI__builtin_neon_vld1q_x2_v},
319 {NEON::BI__builtin_neon_vld1q_bf16_x3, NEON::BI__builtin_neon_vld1q_x3_v},
320 {NEON::BI__builtin_neon_vld1q_bf16_x4, NEON::BI__builtin_neon_vld1q_x4_v},
321 {NEON::BI__builtin_neon_vld1q_bf16, NEON::BI__builtin_neon_vld1q_v},
322 {NEON::BI__builtin_neon_vld1q_dup_bf16, NEON::BI__builtin_neon_vld1q_dup_v},
323 {NEON::BI__builtin_neon_vld1q_lane_bf16,
324 NEON::BI__builtin_neon_vld1q_lane_v},
325 {NEON::BI__builtin_neon_vld2_bf16, NEON::BI__builtin_neon_vld2_v},
326 {NEON::BI__builtin_neon_vld2_dup_bf16, NEON::BI__builtin_neon_vld2_dup_v},
327 {NEON::BI__builtin_neon_vld2_lane_bf16, NEON::BI__builtin_neon_vld2_lane_v},
328 {NEON::BI__builtin_neon_vld2q_bf16, NEON::BI__builtin_neon_vld2q_v},
329 {NEON::BI__builtin_neon_vld2q_dup_bf16, NEON::BI__builtin_neon_vld2q_dup_v},
330 {NEON::BI__builtin_neon_vld2q_lane_bf16,
331 NEON::BI__builtin_neon_vld2q_lane_v},
332 {NEON::BI__builtin_neon_vld3_bf16, NEON::BI__builtin_neon_vld3_v},
333 {NEON::BI__builtin_neon_vld3_dup_bf16, NEON::BI__builtin_neon_vld3_dup_v},
334 {NEON::BI__builtin_neon_vld3_lane_bf16, NEON::BI__builtin_neon_vld3_lane_v},
335 {NEON::BI__builtin_neon_vld3q_bf16, NEON::BI__builtin_neon_vld3q_v},
336 {NEON::BI__builtin_neon_vld3q_dup_bf16, NEON::BI__builtin_neon_vld3q_dup_v},
337 {NEON::BI__builtin_neon_vld3q_lane_bf16,
338 NEON::BI__builtin_neon_vld3q_lane_v},
339 {NEON::BI__builtin_neon_vld4_bf16, NEON::BI__builtin_neon_vld4_v},
340 {NEON::BI__builtin_neon_vld4_dup_bf16, NEON::BI__builtin_neon_vld4_dup_v},
341 {NEON::BI__builtin_neon_vld4_lane_bf16, NEON::BI__builtin_neon_vld4_lane_v},
342 {NEON::BI__builtin_neon_vld4q_bf16, NEON::BI__builtin_neon_vld4q_v},
343 {NEON::BI__builtin_neon_vld4q_dup_bf16, NEON::BI__builtin_neon_vld4q_dup_v},
344 {NEON::BI__builtin_neon_vld4q_lane_bf16,
345 NEON::BI__builtin_neon_vld4q_lane_v},
347 NEON::BI__builtin_neon_vmax_f16,
348 NEON::BI__builtin_neon_vmax_v,
351 NEON::BI__builtin_neon_vmaxnm_f16,
352 NEON::BI__builtin_neon_vmaxnm_v,
355 NEON::BI__builtin_neon_vmaxnmq_f16,
356 NEON::BI__builtin_neon_vmaxnmq_v,
359 NEON::BI__builtin_neon_vmaxq_f16,
360 NEON::BI__builtin_neon_vmaxq_v,
363 NEON::BI__builtin_neon_vmin_f16,
364 NEON::BI__builtin_neon_vmin_v,
367 NEON::BI__builtin_neon_vminnm_f16,
368 NEON::BI__builtin_neon_vminnm_v,
371 NEON::BI__builtin_neon_vminnmq_f16,
372 NEON::BI__builtin_neon_vminnmq_v,
375 NEON::BI__builtin_neon_vminq_f16,
376 NEON::BI__builtin_neon_vminq_v,
379 NEON::BI__builtin_neon_vmulx_f16,
380 NEON::BI__builtin_neon_vmulx_v,
383 NEON::BI__builtin_neon_vmulxq_f16,
384 NEON::BI__builtin_neon_vmulxq_v,
387 NEON::BI__builtin_neon_vpadd_f16,
388 NEON::BI__builtin_neon_vpadd_v,
391 NEON::BI__builtin_neon_vpaddq_f16,
392 NEON::BI__builtin_neon_vpaddq_v,
395 NEON::BI__builtin_neon_vpmax_f16,
396 NEON::BI__builtin_neon_vpmax_v,
399 NEON::BI__builtin_neon_vpmaxnm_f16,
400 NEON::BI__builtin_neon_vpmaxnm_v,
403 NEON::BI__builtin_neon_vpmaxnmq_f16,
404 NEON::BI__builtin_neon_vpmaxnmq_v,
407 NEON::BI__builtin_neon_vpmaxq_f16,
408 NEON::BI__builtin_neon_vpmaxq_v,
411 NEON::BI__builtin_neon_vpmin_f16,
412 NEON::BI__builtin_neon_vpmin_v,
415 NEON::BI__builtin_neon_vpminnm_f16,
416 NEON::BI__builtin_neon_vpminnm_v,
419 NEON::BI__builtin_neon_vpminnmq_f16,
420 NEON::BI__builtin_neon_vpminnmq_v,
423 NEON::BI__builtin_neon_vpminq_f16,
424 NEON::BI__builtin_neon_vpminq_v,
427 NEON::BI__builtin_neon_vrecpe_f16,
428 NEON::BI__builtin_neon_vrecpe_v,
431 NEON::BI__builtin_neon_vrecpeq_f16,
432 NEON::BI__builtin_neon_vrecpeq_v,
435 NEON::BI__builtin_neon_vrecps_f16,
436 NEON::BI__builtin_neon_vrecps_v,
439 NEON::BI__builtin_neon_vrecpsq_f16,
440 NEON::BI__builtin_neon_vrecpsq_v,
443 NEON::BI__builtin_neon_vrnd_f16,
444 NEON::BI__builtin_neon_vrnd_v,
447 NEON::BI__builtin_neon_vrnda_f16,
448 NEON::BI__builtin_neon_vrnda_v,
451 NEON::BI__builtin_neon_vrndaq_f16,
452 NEON::BI__builtin_neon_vrndaq_v,
455 NEON::BI__builtin_neon_vrndi_f16,
456 NEON::BI__builtin_neon_vrndi_v,
459 NEON::BI__builtin_neon_vrndiq_f16,
460 NEON::BI__builtin_neon_vrndiq_v,
463 NEON::BI__builtin_neon_vrndm_f16,
464 NEON::BI__builtin_neon_vrndm_v,
467 NEON::BI__builtin_neon_vrndmq_f16,
468 NEON::BI__builtin_neon_vrndmq_v,
471 NEON::BI__builtin_neon_vrndn_f16,
472 NEON::BI__builtin_neon_vrndn_v,
475 NEON::BI__builtin_neon_vrndnq_f16,
476 NEON::BI__builtin_neon_vrndnq_v,
479 NEON::BI__builtin_neon_vrndp_f16,
480 NEON::BI__builtin_neon_vrndp_v,
483 NEON::BI__builtin_neon_vrndpq_f16,
484 NEON::BI__builtin_neon_vrndpq_v,
487 NEON::BI__builtin_neon_vrndq_f16,
488 NEON::BI__builtin_neon_vrndq_v,
491 NEON::BI__builtin_neon_vrndx_f16,
492 NEON::BI__builtin_neon_vrndx_v,
495 NEON::BI__builtin_neon_vrndxq_f16,
496 NEON::BI__builtin_neon_vrndxq_v,
499 NEON::BI__builtin_neon_vrsqrte_f16,
500 NEON::BI__builtin_neon_vrsqrte_v,
503 NEON::BI__builtin_neon_vrsqrteq_f16,
504 NEON::BI__builtin_neon_vrsqrteq_v,
507 NEON::BI__builtin_neon_vrsqrts_f16,
508 NEON::BI__builtin_neon_vrsqrts_v,
511 NEON::BI__builtin_neon_vrsqrtsq_f16,
512 NEON::BI__builtin_neon_vrsqrtsq_v,
515 NEON::BI__builtin_neon_vsqrt_f16,
516 NEON::BI__builtin_neon_vsqrt_v,
519 NEON::BI__builtin_neon_vsqrtq_f16,
520 NEON::BI__builtin_neon_vsqrtq_v,
522 {NEON::BI__builtin_neon_vst1_bf16_x2, NEON::BI__builtin_neon_vst1_x2_v},
523 {NEON::BI__builtin_neon_vst1_bf16_x3, NEON::BI__builtin_neon_vst1_x3_v},
524 {NEON::BI__builtin_neon_vst1_bf16_x4, NEON::BI__builtin_neon_vst1_x4_v},
525 {NEON::BI__builtin_neon_vst1_bf16, NEON::BI__builtin_neon_vst1_v},
526 {NEON::BI__builtin_neon_vst1_lane_bf16, NEON::BI__builtin_neon_vst1_lane_v},
527 {NEON::BI__builtin_neon_vst1q_bf16_x2, NEON::BI__builtin_neon_vst1q_x2_v},
528 {NEON::BI__builtin_neon_vst1q_bf16_x3, NEON::BI__builtin_neon_vst1q_x3_v},
529 {NEON::BI__builtin_neon_vst1q_bf16_x4, NEON::BI__builtin_neon_vst1q_x4_v},
530 {NEON::BI__builtin_neon_vst1q_bf16, NEON::BI__builtin_neon_vst1q_v},
531 {NEON::BI__builtin_neon_vst1q_lane_bf16,
532 NEON::BI__builtin_neon_vst1q_lane_v},
533 {NEON::BI__builtin_neon_vst2_bf16, NEON::BI__builtin_neon_vst2_v},
534 {NEON::BI__builtin_neon_vst2_lane_bf16, NEON::BI__builtin_neon_vst2_lane_v},
535 {NEON::BI__builtin_neon_vst2q_bf16, NEON::BI__builtin_neon_vst2q_v},
536 {NEON::BI__builtin_neon_vst2q_lane_bf16,
537 NEON::BI__builtin_neon_vst2q_lane_v},
538 {NEON::BI__builtin_neon_vst3_bf16, NEON::BI__builtin_neon_vst3_v},
539 {NEON::BI__builtin_neon_vst3_lane_bf16, NEON::BI__builtin_neon_vst3_lane_v},
540 {NEON::BI__builtin_neon_vst3q_bf16, NEON::BI__builtin_neon_vst3q_v},
541 {NEON::BI__builtin_neon_vst3q_lane_bf16,
542 NEON::BI__builtin_neon_vst3q_lane_v},
543 {NEON::BI__builtin_neon_vst4_bf16, NEON::BI__builtin_neon_vst4_v},
544 {NEON::BI__builtin_neon_vst4_lane_bf16, NEON::BI__builtin_neon_vst4_lane_v},
545 {NEON::BI__builtin_neon_vst4q_bf16, NEON::BI__builtin_neon_vst4q_v},
546 {NEON::BI__builtin_neon_vst4q_lane_bf16,
547 NEON::BI__builtin_neon_vst4q_lane_v},
551 {NEON::BI__builtin_neon_vldap1_lane_u64,
552 NEON::BI__builtin_neon_vldap1_lane_s64},
553 {NEON::BI__builtin_neon_vldap1_lane_f64,
554 NEON::BI__builtin_neon_vldap1_lane_s64},
555 {NEON::BI__builtin_neon_vldap1_lane_p64,
556 NEON::BI__builtin_neon_vldap1_lane_s64},
557 {NEON::BI__builtin_neon_vldap1q_lane_u64,
558 NEON::BI__builtin_neon_vldap1q_lane_s64},
559 {NEON::BI__builtin_neon_vldap1q_lane_f64,
560 NEON::BI__builtin_neon_vldap1q_lane_s64},
561 {NEON::BI__builtin_neon_vldap1q_lane_p64,
562 NEON::BI__builtin_neon_vldap1q_lane_s64},
563 {NEON::BI__builtin_neon_vstl1_lane_u64,
564 NEON::BI__builtin_neon_vstl1_lane_s64},
565 {NEON::BI__builtin_neon_vstl1_lane_f64,
566 NEON::BI__builtin_neon_vstl1_lane_s64},
567 {NEON::BI__builtin_neon_vstl1_lane_p64,
568 NEON::BI__builtin_neon_vstl1_lane_s64},
569 {NEON::BI__builtin_neon_vstl1q_lane_u64,
570 NEON::BI__builtin_neon_vstl1q_lane_s64},
571 {NEON::BI__builtin_neon_vstl1q_lane_f64,
572 NEON::BI__builtin_neon_vstl1q_lane_s64},
573 {NEON::BI__builtin_neon_vstl1q_lane_p64,
574 NEON::BI__builtin_neon_vstl1q_lane_s64},
580 llvm::Triple::ArchType arch) {
589 if (builtinID == Builtin::BI__builtin_cpu_supports) {
590 cgm.errorNYI(
expr->getSourceRange(),
591 std::string(
"unimplemented AArch64 builtin call: ") +
599 case clang::AArch64::BI__builtin_arm_nop:
600 case clang::AArch64::BI__builtin_arm_yield:
601 case clang::AArch64::BI__yield:
602 case clang::AArch64::BI__builtin_arm_wfe:
603 case clang::AArch64::BI__wfe:
604 case clang::AArch64::BI__builtin_arm_wfi:
605 case clang::AArch64::BI__wfi:
606 case clang::AArch64::BI__builtin_arm_sev:
607 case clang::AArch64::BI__sev:
608 case clang::AArch64::BI__builtin_arm_sevl:
609 case clang::AArch64::BI__sevl:
610 cgm.errorNYI(
expr->getSourceRange(),
611 std::string(
"unimplemented AArch64 builtin call: ") +
616 if (builtinID == clang::AArch64::BI__builtin_arm_trap) {
617 cgm.errorNYI(
expr->getSourceRange(),
618 std::string(
"unimplemented AArch64 builtin call: ") +
623 if (builtinID == clang::AArch64::BI__builtin_arm_get_sme_state) {
624 cgm.errorNYI(
expr->getSourceRange(),
625 std::string(
"unimplemented AArch64 builtin call: ") +
630 if (builtinID == clang::AArch64::BI__builtin_arm_rbit) {
631 cgm.errorNYI(
expr->getSourceRange(),
632 std::string(
"unimplemented AArch64 builtin call: ") +
636 if (builtinID == clang::AArch64::BI__builtin_arm_rbit64) {
637 cgm.errorNYI(
expr->getSourceRange(),
638 std::string(
"unimplemented AArch64 builtin call: ") +
643 if (builtinID == clang::AArch64::BI__builtin_arm_clz ||
644 builtinID == clang::AArch64::BI__builtin_arm_clz64) {
645 cgm.errorNYI(
expr->getSourceRange(),
646 std::string(
"unimplemented AArch64 builtin call: ") +
651 if (builtinID == clang::AArch64::BI__builtin_arm_cls) {
652 cgm.errorNYI(
expr->getSourceRange(),
653 std::string(
"unimplemented AArch64 builtin call: ") +
657 if (builtinID == clang::AArch64::BI__builtin_arm_cls64) {
658 cgm.errorNYI(
expr->getSourceRange(),
659 std::string(
"unimplemented AArch64 builtin call: ") +
664 if (builtinID == clang::AArch64::BI__builtin_arm_rint32zf ||
665 builtinID == clang::AArch64::BI__builtin_arm_rint32z) {
666 cgm.errorNYI(
expr->getSourceRange(),
667 std::string(
"unimplemented AArch64 builtin call: ") +
672 if (builtinID == clang::AArch64::BI__builtin_arm_rint64zf ||
673 builtinID == clang::AArch64::BI__builtin_arm_rint64z) {
674 cgm.errorNYI(
expr->getSourceRange(),
675 std::string(
"unimplemented AArch64 builtin call: ") +
680 if (builtinID == clang::AArch64::BI__builtin_arm_rint32xf ||
681 builtinID == clang::AArch64::BI__builtin_arm_rint32x) {
682 cgm.errorNYI(
expr->getSourceRange(),
683 std::string(
"unimplemented AArch64 builtin call: ") +
688 if (builtinID == clang::AArch64::BI__builtin_arm_rint64xf ||
689 builtinID == clang::AArch64::BI__builtin_arm_rint64x) {
690 cgm.errorNYI(
expr->getSourceRange(),
691 std::string(
"unimplemented AArch64 builtin call: ") +
696 if (builtinID == clang::AArch64::BI__builtin_arm_jcvt) {
697 cgm.errorNYI(
expr->getSourceRange(),
698 std::string(
"unimplemented AArch64 builtin call: ") +
703 if (builtinID == clang::AArch64::BI__builtin_arm_ld64b ||
704 builtinID == clang::AArch64::BI__builtin_arm_st64b ||
705 builtinID == clang::AArch64::BI__builtin_arm_st64bv ||
706 builtinID == clang::AArch64::BI__builtin_arm_st64bv0) {
707 cgm.errorNYI(
expr->getSourceRange(),
708 std::string(
"unimplemented AArch64 builtin call: ") +
713 if (builtinID == clang::AArch64::BI__builtin_arm_rndr ||
714 builtinID == clang::AArch64::BI__builtin_arm_rndrrs) {
715 cgm.errorNYI(
expr->getSourceRange(),
716 std::string(
"unimplemented AArch64 builtin call: ") +
721 if (builtinID == clang::AArch64::BI__clear_cache) {
722 cgm.errorNYI(
expr->getSourceRange(),
723 std::string(
"unimplemented AArch64 builtin call: ") +
728 if ((builtinID == clang::AArch64::BI__builtin_arm_ldrex ||
729 builtinID == clang::AArch64::BI__builtin_arm_ldaex) &&
731 cgm.errorNYI(
expr->getSourceRange(),
732 std::string(
"unimplemented AArch64 builtin call: ") +
736 if (builtinID == clang::AArch64::BI__builtin_arm_ldrex ||
737 builtinID == clang::AArch64::BI__builtin_arm_ldaex) {
738 cgm.errorNYI(
expr->getSourceRange(),
739 std::string(
"unimplemented AArch64 builtin call: ") +
744 if ((builtinID == clang::AArch64::BI__builtin_arm_strex ||
745 builtinID == clang::AArch64::BI__builtin_arm_stlex) &&
747 cgm.errorNYI(
expr->getSourceRange(),
748 std::string(
"unimplemented AArch64 builtin call: ") +
753 if (builtinID == clang::AArch64::BI__builtin_arm_strex ||
754 builtinID == clang::AArch64::BI__builtin_arm_stlex) {
755 cgm.errorNYI(
expr->getSourceRange(),
756 std::string(
"unimplemented AArch64 builtin call: ") +
761 if (builtinID == clang::AArch64::BI__getReg) {
762 cgm.errorNYI(
expr->getSourceRange(),
763 std::string(
"unimplemented AArch64 builtin call: ") +
768 if (builtinID == clang::AArch64::BI__break) {
769 cgm.errorNYI(
expr->getSourceRange(),
770 std::string(
"unimplemented AArch64 builtin call: ") +
775 if (builtinID == clang::AArch64::BI__builtin_arm_clrex) {
776 cgm.errorNYI(
expr->getSourceRange(),
777 std::string(
"unimplemented AArch64 builtin call: ") +
782 if (builtinID == clang::AArch64::BI_ReadWriteBarrier) {
783 cgm.errorNYI(
expr->getSourceRange(),
784 std::string(
"unimplemented AArch64 builtin call: ") +
790 Intrinsic::ID crcIntrinsicID = Intrinsic::not_intrinsic;
792 case clang::AArch64::BI__builtin_arm_crc32b:
793 crcIntrinsicID = Intrinsic::aarch64_crc32b;
795 case clang::AArch64::BI__builtin_arm_crc32cb:
796 crcIntrinsicID = Intrinsic::aarch64_crc32cb;
798 case clang::AArch64::BI__builtin_arm_crc32h:
799 crcIntrinsicID = Intrinsic::aarch64_crc32h;
801 case clang::AArch64::BI__builtin_arm_crc32ch:
802 crcIntrinsicID = Intrinsic::aarch64_crc32ch;
804 case clang::AArch64::BI__builtin_arm_crc32w:
805 crcIntrinsicID = Intrinsic::aarch64_crc32w;
807 case clang::AArch64::BI__builtin_arm_crc32cw:
808 crcIntrinsicID = Intrinsic::aarch64_crc32cw;
810 case clang::AArch64::BI__builtin_arm_crc32d:
811 crcIntrinsicID = Intrinsic::aarch64_crc32x;
813 case clang::AArch64::BI__builtin_arm_crc32cd:
814 crcIntrinsicID = Intrinsic::aarch64_crc32cx;
818 if (crcIntrinsicID != Intrinsic::not_intrinsic) {
819 cgm.errorNYI(
expr->getSourceRange(),
820 std::string(
"unimplemented AArch64 builtin call: ") +
826 if (builtinID == AArch64::BI__builtin_arm_mops_memset_tag) {
827 cgm.errorNYI(
expr->getSourceRange(),
828 std::string(
"unimplemented AArch64 builtin call: ") +
834 Intrinsic::ID mteIntrinsicID = Intrinsic::not_intrinsic;
836 case clang::AArch64::BI__builtin_arm_irg:
837 mteIntrinsicID = Intrinsic::aarch64_irg;
839 case clang::AArch64::BI__builtin_arm_addg:
840 mteIntrinsicID = Intrinsic::aarch64_addg;
842 case clang::AArch64::BI__builtin_arm_gmi:
843 mteIntrinsicID = Intrinsic::aarch64_gmi;
845 case clang::AArch64::BI__builtin_arm_ldg:
846 mteIntrinsicID = Intrinsic::aarch64_ldg;
848 case clang::AArch64::BI__builtin_arm_stg:
849 mteIntrinsicID = Intrinsic::aarch64_stg;
851 case clang::AArch64::BI__builtin_arm_subp:
852 mteIntrinsicID = Intrinsic::aarch64_subp;
856 if (mteIntrinsicID != Intrinsic::not_intrinsic) {
857 cgm.errorNYI(
expr->getSourceRange(),
858 std::string(
"unimplemented AArch64 builtin call: ") +
863 if (builtinID == clang::AArch64::BI__builtin_arm_rsr ||
864 builtinID == clang::AArch64::BI__builtin_arm_rsr64 ||
865 builtinID == clang::AArch64::BI__builtin_arm_rsr128 ||
866 builtinID == clang::AArch64::BI__builtin_arm_rsrp ||
867 builtinID == clang::AArch64::BI__builtin_arm_wsr ||
868 builtinID == clang::AArch64::BI__builtin_arm_wsr64 ||
869 builtinID == clang::AArch64::BI__builtin_arm_wsr128 ||
870 builtinID == clang::AArch64::BI__builtin_arm_wsrp) {
871 cgm.errorNYI(
expr->getSourceRange(),
872 std::string(
"unimplemented AArch64 builtin call: ") +
877 if (builtinID == clang::AArch64::BI_ReadStatusReg ||
878 builtinID == clang::AArch64::BI_WriteStatusReg ||
879 builtinID == clang::AArch64::BI__sys) {
880 cgm.errorNYI(
expr->getSourceRange(),
881 std::string(
"unimplemented AArch64 builtin call: ") +
886 if (builtinID == clang::AArch64::BI_AddressOfReturnAddress) {
887 cgm.errorNYI(
expr->getSourceRange(),
888 std::string(
"unimplemented AArch64 builtin call: ") +
893 if (builtinID == clang::AArch64::BI__builtin_sponentry) {
894 cgm.errorNYI(
expr->getSourceRange(),
895 std::string(
"unimplemented AArch64 builtin call: ") +
900 if (builtinID == clang::AArch64::BI__mulh ||
901 builtinID == clang::AArch64::BI__umulh) {
902 cgm.errorNYI(
expr->getSourceRange(),
903 std::string(
"unimplemented AArch64 builtin call: ") +
908 if (builtinID == AArch64::BI__writex18byte ||
909 builtinID == AArch64::BI__writex18word ||
910 builtinID == AArch64::BI__writex18dword ||
911 builtinID == AArch64::BI__writex18qword) {
912 cgm.errorNYI(
expr->getSourceRange(),
913 std::string(
"unimplemented AArch64 builtin call: ") +
918 if (builtinID == AArch64::BI__readx18byte ||
919 builtinID == AArch64::BI__readx18word ||
920 builtinID == AArch64::BI__readx18dword ||
921 builtinID == AArch64::BI__readx18qword) {
922 cgm.errorNYI(
expr->getSourceRange(),
923 std::string(
"unimplemented AArch64 builtin call: ") +
928 if (builtinID == AArch64::BI__addx18byte ||
929 builtinID == AArch64::BI__addx18word ||
930 builtinID == AArch64::BI__addx18dword ||
931 builtinID == AArch64::BI__addx18qword ||
932 builtinID == AArch64::BI__incx18byte ||
933 builtinID == AArch64::BI__incx18word ||
934 builtinID == AArch64::BI__incx18dword ||
935 builtinID == AArch64::BI__incx18qword) {
936 cgm.errorNYI(
expr->getSourceRange(),
937 std::string(
"unimplemented AArch64 builtin call: ") +
942 if (builtinID == AArch64::BI_CopyDoubleFromInt64 ||
943 builtinID == AArch64::BI_CopyFloatFromInt32 ||
944 builtinID == AArch64::BI_CopyInt32FromFloat ||
945 builtinID == AArch64::BI_CopyInt64FromDouble) {
946 cgm.errorNYI(
expr->getSourceRange(),
947 std::string(
"unimplemented AArch64 builtin call: ") +
952 if (builtinID == AArch64::BI_CountLeadingOnes ||
953 builtinID == AArch64::BI_CountLeadingOnes64 ||
954 builtinID == AArch64::BI_CountLeadingZeros ||
955 builtinID == AArch64::BI_CountLeadingZeros64) {
956 cgm.errorNYI(
expr->getSourceRange(),
957 std::string(
"unimplemented AArch64 builtin call: ") +
962 if (builtinID == AArch64::BI_CountLeadingSigns ||
963 builtinID == AArch64::BI_CountLeadingSigns64) {
964 cgm.errorNYI(
expr->getSourceRange(),
965 std::string(
"unimplemented AArch64 builtin call: ") +
970 if (builtinID == AArch64::BI_CountOneBits ||
971 builtinID == AArch64::BI_CountOneBits64) {
972 cgm.errorNYI(
expr->getSourceRange(),
973 std::string(
"unimplemented AArch64 builtin call: ") +
978 if (builtinID == AArch64::BI__prefetch) {
979 cgm.errorNYI(
expr->getSourceRange(),
980 std::string(
"unimplemented AArch64 builtin call: ") +
985 if (builtinID == AArch64::BI__hlt) {
986 cgm.errorNYI(
expr->getSourceRange(),
987 std::string(
"unimplemented AArch64 builtin call: ") +
992 if (builtinID == NEON::BI__builtin_neon_vcvth_bf16_f32) {
993 cgm.errorNYI(
expr->getSourceRange(),
994 std::string(
"unimplemented AArch64 builtin call: ") +
1005 return p.first == builtinID;
1008 builtinID = it->second;
1017 switch (builtinID) {
1020 case NEON::BI__builtin_neon_vabsh_f16:
1021 case NEON::BI__builtin_neon_vaddq_p128:
1022 case NEON::BI__builtin_neon_vldrq_p128:
1023 case NEON::BI__builtin_neon_vstrq_p128:
1024 case NEON::BI__builtin_neon_vcvts_f32_u32:
1025 case NEON::BI__builtin_neon_vcvtd_f64_u64:
1026 case NEON::BI__builtin_neon_vcvts_f32_s32:
1027 case NEON::BI__builtin_neon_vcvtd_f64_s64:
1028 case NEON::BI__builtin_neon_vcvth_f16_u16:
1029 case NEON::BI__builtin_neon_vcvth_f16_u32:
1030 case NEON::BI__builtin_neon_vcvth_f16_u64:
1031 case NEON::BI__builtin_neon_vcvth_f16_s16:
1032 case NEON::BI__builtin_neon_vcvth_f16_s32:
1033 case NEON::BI__builtin_neon_vcvth_f16_s64:
1034 case NEON::BI__builtin_neon_vcvtah_u16_f16:
1035 case NEON::BI__builtin_neon_vcvtmh_u16_f16:
1036 case NEON::BI__builtin_neon_vcvtnh_u16_f16:
1037 case NEON::BI__builtin_neon_vcvtph_u16_f16:
1038 case NEON::BI__builtin_neon_vcvth_u16_f16:
1039 case NEON::BI__builtin_neon_vcvtah_s16_f16:
1040 case NEON::BI__builtin_neon_vcvtmh_s16_f16:
1041 case NEON::BI__builtin_neon_vcvtnh_s16_f16:
1042 case NEON::BI__builtin_neon_vcvtph_s16_f16:
1043 case NEON::BI__builtin_neon_vcvth_s16_f16:
1044 case NEON::BI__builtin_neon_vcaleh_f16:
1045 case NEON::BI__builtin_neon_vcalth_f16:
1046 case NEON::BI__builtin_neon_vcageh_f16:
1047 case NEON::BI__builtin_neon_vcagth_f16:
1048 case NEON::BI__builtin_neon_vcvth_n_s16_f16:
1049 case NEON::BI__builtin_neon_vcvth_n_u16_f16:
1050 case NEON::BI__builtin_neon_vcvth_n_f16_s16:
1051 case NEON::BI__builtin_neon_vcvth_n_f16_u16:
1052 case NEON::BI__builtin_neon_vpaddd_s64:
1053 case NEON::BI__builtin_neon_vpaddd_f64:
1054 case NEON::BI__builtin_neon_vpadds_f32:
1055 case NEON::BI__builtin_neon_vceqzd_s64:
1056 case NEON::BI__builtin_neon_vceqzd_f64:
1057 case NEON::BI__builtin_neon_vceqzs_f32:
1058 case NEON::BI__builtin_neon_vceqzh_f16:
1059 case NEON::BI__builtin_neon_vcgezd_s64:
1060 case NEON::BI__builtin_neon_vcgezd_f64:
1061 case NEON::BI__builtin_neon_vcgezs_f32:
1062 case NEON::BI__builtin_neon_vcgezh_f16:
1063 case NEON::BI__builtin_neon_vclezd_s64:
1064 case NEON::BI__builtin_neon_vclezd_f64:
1065 case NEON::BI__builtin_neon_vclezs_f32:
1066 case NEON::BI__builtin_neon_vclezh_f16:
1067 case NEON::BI__builtin_neon_vcgtzd_s64:
1068 case NEON::BI__builtin_neon_vcgtzd_f64:
1069 case NEON::BI__builtin_neon_vcgtzs_f32:
1070 case NEON::BI__builtin_neon_vcgtzh_f16:
1071 case NEON::BI__builtin_neon_vcltzd_s64:
1072 case NEON::BI__builtin_neon_vcltzd_f64:
1073 case NEON::BI__builtin_neon_vcltzs_f32:
1074 case NEON::BI__builtin_neon_vcltzh_f16:
1075 case NEON::BI__builtin_neon_vceqzd_u64:
1076 case NEON::BI__builtin_neon_vceqd_f64:
1077 case NEON::BI__builtin_neon_vcled_f64:
1078 case NEON::BI__builtin_neon_vcltd_f64:
1079 case NEON::BI__builtin_neon_vcged_f64:
1080 case NEON::BI__builtin_neon_vcgtd_f64:
1081 case NEON::BI__builtin_neon_vceqs_f32:
1082 case NEON::BI__builtin_neon_vcles_f32:
1083 case NEON::BI__builtin_neon_vclts_f32:
1084 case NEON::BI__builtin_neon_vcges_f32:
1085 case NEON::BI__builtin_neon_vcgts_f32:
1086 case NEON::BI__builtin_neon_vceqh_f16:
1087 case NEON::BI__builtin_neon_vcleh_f16:
1088 case NEON::BI__builtin_neon_vclth_f16:
1089 case NEON::BI__builtin_neon_vcgeh_f16:
1090 case NEON::BI__builtin_neon_vcgth_f16:
1091 case NEON::BI__builtin_neon_vceqd_s64:
1092 case NEON::BI__builtin_neon_vceqd_u64:
1093 case NEON::BI__builtin_neon_vcgtd_s64:
1094 case NEON::BI__builtin_neon_vcgtd_u64:
1095 case NEON::BI__builtin_neon_vcltd_s64:
1096 case NEON::BI__builtin_neon_vcltd_u64:
1097 case NEON::BI__builtin_neon_vcged_u64:
1098 case NEON::BI__builtin_neon_vcged_s64:
1099 case NEON::BI__builtin_neon_vcled_u64:
1100 case NEON::BI__builtin_neon_vcled_s64:
1101 case NEON::BI__builtin_neon_vtstd_s64:
1102 case NEON::BI__builtin_neon_vtstd_u64:
1103 case NEON::BI__builtin_neon_vset_lane_i8:
1104 case NEON::BI__builtin_neon_vset_lane_i16:
1105 case NEON::BI__builtin_neon_vset_lane_i32:
1106 case NEON::BI__builtin_neon_vset_lane_i64:
1107 case NEON::BI__builtin_neon_vset_lane_bf16:
1108 case NEON::BI__builtin_neon_vset_lane_f32:
1109 case NEON::BI__builtin_neon_vsetq_lane_i8:
1110 case NEON::BI__builtin_neon_vsetq_lane_i16:
1111 case NEON::BI__builtin_neon_vsetq_lane_i32:
1112 case NEON::BI__builtin_neon_vsetq_lane_i64:
1113 case NEON::BI__builtin_neon_vsetq_lane_bf16:
1114 case NEON::BI__builtin_neon_vsetq_lane_f32:
1115 case NEON::BI__builtin_neon_vset_lane_f64:
1116 case NEON::BI__builtin_neon_vset_lane_mf8:
1117 case NEON::BI__builtin_neon_vsetq_lane_mf8:
1118 case NEON::BI__builtin_neon_vsetq_lane_f64:
1119 case NEON::BI__builtin_neon_vget_lane_i8:
1120 case NEON::BI__builtin_neon_vdupb_lane_i8:
1121 case NEON::BI__builtin_neon_vgetq_lane_i8:
1122 case NEON::BI__builtin_neon_vdupb_laneq_i8:
1123 case NEON::BI__builtin_neon_vget_lane_mf8:
1124 case NEON::BI__builtin_neon_vdupb_lane_mf8:
1125 case NEON::BI__builtin_neon_vgetq_lane_mf8:
1126 case NEON::BI__builtin_neon_vdupb_laneq_mf8:
1127 case NEON::BI__builtin_neon_vget_lane_i16:
1128 case NEON::BI__builtin_neon_vduph_lane_i16:
1129 case NEON::BI__builtin_neon_vgetq_lane_i16:
1130 case NEON::BI__builtin_neon_vduph_laneq_i16:
1131 case NEON::BI__builtin_neon_vget_lane_i32:
1132 case NEON::BI__builtin_neon_vdups_lane_i32:
1133 case NEON::BI__builtin_neon_vdups_lane_f32:
1134 case NEON::BI__builtin_neon_vgetq_lane_i32:
1135 case NEON::BI__builtin_neon_vdups_laneq_i32:
1136 case NEON::BI__builtin_neon_vget_lane_i64:
1137 case NEON::BI__builtin_neon_vdupd_lane_i64:
1138 case NEON::BI__builtin_neon_vdupd_lane_f64:
1139 case NEON::BI__builtin_neon_vgetq_lane_i64:
1140 case NEON::BI__builtin_neon_vdupd_laneq_i64:
1141 case NEON::BI__builtin_neon_vget_lane_f32:
1142 case NEON::BI__builtin_neon_vget_lane_f64:
1143 case NEON::BI__builtin_neon_vgetq_lane_f32:
1144 case NEON::BI__builtin_neon_vdups_laneq_f32:
1145 case NEON::BI__builtin_neon_vgetq_lane_f64:
1146 case NEON::BI__builtin_neon_vdupd_laneq_f64:
1147 case NEON::BI__builtin_neon_vaddh_f16:
1148 case NEON::BI__builtin_neon_vsubh_f16:
1149 case NEON::BI__builtin_neon_vmulh_f16:
1150 case NEON::BI__builtin_neon_vdivh_f16:
1151 case NEON::BI__builtin_neon_vfmah_f16:
1152 case NEON::BI__builtin_neon_vfmsh_f16:
1153 case NEON::BI__builtin_neon_vaddd_s64:
1154 case NEON::BI__builtin_neon_vaddd_u64:
1155 case NEON::BI__builtin_neon_vsubd_s64:
1156 case NEON::BI__builtin_neon_vsubd_u64:
1157 case NEON::BI__builtin_neon_vqdmlalh_s16:
1158 case NEON::BI__builtin_neon_vqdmlslh_s16:
1159 case NEON::BI__builtin_neon_vqshlud_n_s64:
1160 case NEON::BI__builtin_neon_vqshld_n_u64:
1161 case NEON::BI__builtin_neon_vqshld_n_s64:
1162 case NEON::BI__builtin_neon_vrshrd_n_u64:
1163 case NEON::BI__builtin_neon_vrshrd_n_s64:
1164 case NEON::BI__builtin_neon_vrsrad_n_u64:
1165 case NEON::BI__builtin_neon_vrsrad_n_s64:
1166 case NEON::BI__builtin_neon_vshld_n_s64:
1167 case NEON::BI__builtin_neon_vshld_n_u64:
1168 case NEON::BI__builtin_neon_vshrd_n_s64:
1169 case NEON::BI__builtin_neon_vshrd_n_u64:
1170 case NEON::BI__builtin_neon_vsrad_n_s64:
1171 case NEON::BI__builtin_neon_vsrad_n_u64:
1172 case NEON::BI__builtin_neon_vqdmlalh_lane_s16:
1173 case NEON::BI__builtin_neon_vqdmlalh_laneq_s16:
1174 case NEON::BI__builtin_neon_vqdmlslh_lane_s16:
1175 case NEON::BI__builtin_neon_vqdmlslh_laneq_s16:
1176 case NEON::BI__builtin_neon_vqdmlals_s32:
1177 case NEON::BI__builtin_neon_vqdmlsls_s32:
1178 case NEON::BI__builtin_neon_vqdmlals_lane_s32:
1179 case NEON::BI__builtin_neon_vqdmlals_laneq_s32:
1180 case NEON::BI__builtin_neon_vqdmlsls_lane_s32:
1181 case NEON::BI__builtin_neon_vqdmlsls_laneq_s32:
1182 case NEON::BI__builtin_neon_vget_lane_bf16:
1183 case NEON::BI__builtin_neon_vduph_lane_bf16:
1184 case NEON::BI__builtin_neon_vduph_lane_f16:
1185 case NEON::BI__builtin_neon_vgetq_lane_bf16:
1186 case NEON::BI__builtin_neon_vduph_laneq_bf16:
1187 case NEON::BI__builtin_neon_vduph_laneq_f16:
1188 case NEON::BI__builtin_neon_vcvt_bf16_f32:
1189 case NEON::BI__builtin_neon_vcvtq_low_bf16_f32:
1190 case NEON::BI__builtin_neon_vcvtq_high_bf16_f32:
1191 case clang::AArch64::BI_InterlockedAdd:
1192 case clang::AArch64::BI_InterlockedAdd_acq:
1193 case clang::AArch64::BI_InterlockedAdd_rel:
1194 case clang::AArch64::BI_InterlockedAdd_nf:
1195 case clang::AArch64::BI_InterlockedAdd64:
1196 case clang::AArch64::BI_InterlockedAdd64_acq:
1197 case clang::AArch64::BI_InterlockedAdd64_rel:
1198 case clang::AArch64::BI_InterlockedAdd64_nf:
1199 cgm.errorNYI(
expr->getSourceRange(),
1200 std::string(
"unimplemented AArch64 builtin call: ") +
1201 getContext().BuiltinInfo.getName(builtinID));
1211 switch (builtinID) {
1214 case NEON::BI__builtin_neon_vbsl_v:
1215 case NEON::BI__builtin_neon_vbslq_v:
1216 case NEON::BI__builtin_neon_vfma_lane_v:
1217 case NEON::BI__builtin_neon_vfmaq_lane_v:
1218 case NEON::BI__builtin_neon_vfma_laneq_v:
1219 case NEON::BI__builtin_neon_vfmaq_laneq_v:
1220 case NEON::BI__builtin_neon_vfmah_lane_f16:
1221 case NEON::BI__builtin_neon_vfmas_lane_f32:
1222 case NEON::BI__builtin_neon_vfmah_laneq_f16:
1223 case NEON::BI__builtin_neon_vfmas_laneq_f32:
1224 case NEON::BI__builtin_neon_vfmad_lane_f64:
1225 case NEON::BI__builtin_neon_vfmad_laneq_f64:
1226 case NEON::BI__builtin_neon_vmull_v:
1227 case NEON::BI__builtin_neon_vmax_v:
1228 case NEON::BI__builtin_neon_vmaxq_v:
1229 case NEON::BI__builtin_neon_vmaxh_f16:
1230 case NEON::BI__builtin_neon_vmin_v:
1231 case NEON::BI__builtin_neon_vminq_v:
1232 case NEON::BI__builtin_neon_vminh_f16:
1233 case NEON::BI__builtin_neon_vabd_v:
1234 case NEON::BI__builtin_neon_vabdq_v:
1235 case NEON::BI__builtin_neon_vpadal_v:
1236 case NEON::BI__builtin_neon_vpadalq_v:
1237 case NEON::BI__builtin_neon_vpmin_v:
1238 case NEON::BI__builtin_neon_vpminq_v:
1239 case NEON::BI__builtin_neon_vpmax_v:
1240 case NEON::BI__builtin_neon_vpmaxq_v:
1241 case NEON::BI__builtin_neon_vminnm_v:
1242 case NEON::BI__builtin_neon_vminnmq_v:
1243 case NEON::BI__builtin_neon_vminnmh_f16:
1244 case NEON::BI__builtin_neon_vmaxnm_v:
1245 case NEON::BI__builtin_neon_vmaxnmq_v:
1246 case NEON::BI__builtin_neon_vmaxnmh_f16:
1247 case NEON::BI__builtin_neon_vrecpss_f32:
1248 case NEON::BI__builtin_neon_vrecpsd_f64:
1249 case NEON::BI__builtin_neon_vrecpsh_f16:
1250 case NEON::BI__builtin_neon_vqshrun_n_v:
1251 case NEON::BI__builtin_neon_vqrshrun_n_v:
1252 case NEON::BI__builtin_neon_vqshrn_n_v:
1253 case NEON::BI__builtin_neon_vrshrn_n_v:
1254 case NEON::BI__builtin_neon_vqrshrn_n_v:
1255 case NEON::BI__builtin_neon_vrndah_f16:
1256 case NEON::BI__builtin_neon_vrnda_v:
1257 case NEON::BI__builtin_neon_vrndaq_v:
1258 case NEON::BI__builtin_neon_vrndih_f16:
1259 case NEON::BI__builtin_neon_vrndmh_f16:
1260 case NEON::BI__builtin_neon_vrndm_v:
1261 case NEON::BI__builtin_neon_vrndmq_v:
1262 case NEON::BI__builtin_neon_vrndnh_f16:
1263 case NEON::BI__builtin_neon_vrndn_v:
1264 case NEON::BI__builtin_neon_vrndnq_v:
1265 case NEON::BI__builtin_neon_vrndns_f32:
1266 case NEON::BI__builtin_neon_vrndph_f16:
1267 case NEON::BI__builtin_neon_vrndp_v:
1268 case NEON::BI__builtin_neon_vrndpq_v:
1269 case NEON::BI__builtin_neon_vrndxh_f16:
1270 case NEON::BI__builtin_neon_vrndx_v:
1271 case NEON::BI__builtin_neon_vrndxq_v:
1272 case NEON::BI__builtin_neon_vrndh_f16:
1273 case NEON::BI__builtin_neon_vrnd32x_f32:
1274 case NEON::BI__builtin_neon_vrnd32xq_f32:
1275 case NEON::BI__builtin_neon_vrnd32x_f64:
1276 case NEON::BI__builtin_neon_vrnd32xq_f64:
1277 case NEON::BI__builtin_neon_vrnd32z_f32:
1278 case NEON::BI__builtin_neon_vrnd32zq_f32:
1279 case NEON::BI__builtin_neon_vrnd32z_f64:
1280 case NEON::BI__builtin_neon_vrnd32zq_f64:
1281 case NEON::BI__builtin_neon_vrnd64x_f32:
1282 case NEON::BI__builtin_neon_vrnd64xq_f32:
1283 case NEON::BI__builtin_neon_vrnd64x_f64:
1284 case NEON::BI__builtin_neon_vrnd64xq_f64:
1285 case NEON::BI__builtin_neon_vrnd64z_f32:
1286 case NEON::BI__builtin_neon_vrnd64zq_f32:
1287 case NEON::BI__builtin_neon_vrnd64z_f64:
1288 case NEON::BI__builtin_neon_vrnd64zq_f64:
1289 case NEON::BI__builtin_neon_vrnd_v:
1290 case NEON::BI__builtin_neon_vrndq_v:
1291 case NEON::BI__builtin_neon_vcvt_f64_v:
1292 case NEON::BI__builtin_neon_vcvtq_f64_v:
1293 case NEON::BI__builtin_neon_vcvt_f64_f32:
1294 case NEON::BI__builtin_neon_vcvt_f32_f64:
1295 case NEON::BI__builtin_neon_vcvt_s32_v:
1296 case NEON::BI__builtin_neon_vcvt_u32_v:
1297 case NEON::BI__builtin_neon_vcvt_s64_v:
1298 case NEON::BI__builtin_neon_vcvt_u64_v:
1299 case NEON::BI__builtin_neon_vcvt_s16_f16:
1300 case NEON::BI__builtin_neon_vcvt_u16_f16:
1301 case NEON::BI__builtin_neon_vcvtq_s32_v:
1302 case NEON::BI__builtin_neon_vcvtq_u32_v:
1303 case NEON::BI__builtin_neon_vcvtq_s64_v:
1304 case NEON::BI__builtin_neon_vcvtq_u64_v:
1305 case NEON::BI__builtin_neon_vcvtq_s16_f16:
1306 case NEON::BI__builtin_neon_vcvtq_u16_f16:
1307 case NEON::BI__builtin_neon_vcvta_s16_f16:
1308 case NEON::BI__builtin_neon_vcvta_u16_f16:
1309 case NEON::BI__builtin_neon_vcvta_s32_v:
1310 case NEON::BI__builtin_neon_vcvtaq_s16_f16:
1311 case NEON::BI__builtin_neon_vcvtaq_s32_v:
1312 case NEON::BI__builtin_neon_vcvta_u32_v:
1313 case NEON::BI__builtin_neon_vcvtaq_u16_f16:
1314 case NEON::BI__builtin_neon_vcvtaq_u32_v:
1315 case NEON::BI__builtin_neon_vcvta_s64_v:
1316 case NEON::BI__builtin_neon_vcvtaq_s64_v:
1317 case NEON::BI__builtin_neon_vcvta_u64_v:
1318 case NEON::BI__builtin_neon_vcvtaq_u64_v:
1319 case NEON::BI__builtin_neon_vcvtm_s16_f16:
1320 case NEON::BI__builtin_neon_vcvtm_s32_v:
1321 case NEON::BI__builtin_neon_vcvtmq_s16_f16:
1322 case NEON::BI__builtin_neon_vcvtmq_s32_v:
1323 case NEON::BI__builtin_neon_vcvtm_u16_f16:
1324 case NEON::BI__builtin_neon_vcvtm_u32_v:
1325 case NEON::BI__builtin_neon_vcvtmq_u16_f16:
1326 case NEON::BI__builtin_neon_vcvtmq_u32_v:
1327 case NEON::BI__builtin_neon_vcvtm_s64_v:
1328 case NEON::BI__builtin_neon_vcvtmq_s64_v:
1329 case NEON::BI__builtin_neon_vcvtm_u64_v:
1330 case NEON::BI__builtin_neon_vcvtmq_u64_v:
1331 case NEON::BI__builtin_neon_vcvtn_s16_f16:
1332 case NEON::BI__builtin_neon_vcvtn_s32_v:
1333 case NEON::BI__builtin_neon_vcvtnq_s16_f16:
1334 case NEON::BI__builtin_neon_vcvtnq_s32_v:
1335 case NEON::BI__builtin_neon_vcvtn_u16_f16:
1336 case NEON::BI__builtin_neon_vcvtn_u32_v:
1337 case NEON::BI__builtin_neon_vcvtnq_u16_f16:
1338 case NEON::BI__builtin_neon_vcvtnq_u32_v:
1339 case NEON::BI__builtin_neon_vcvtn_s64_v:
1340 case NEON::BI__builtin_neon_vcvtnq_s64_v:
1341 case NEON::BI__builtin_neon_vcvtn_u64_v:
1342 case NEON::BI__builtin_neon_vcvtnq_u64_v:
1343 case NEON::BI__builtin_neon_vcvtp_s16_f16:
1344 case NEON::BI__builtin_neon_vcvtp_s32_v:
1345 case NEON::BI__builtin_neon_vcvtpq_s16_f16:
1346 case NEON::BI__builtin_neon_vcvtpq_s32_v:
1347 case NEON::BI__builtin_neon_vcvtp_u16_f16:
1348 case NEON::BI__builtin_neon_vcvtp_u32_v:
1349 case NEON::BI__builtin_neon_vcvtpq_u16_f16:
1350 case NEON::BI__builtin_neon_vcvtpq_u32_v:
1351 case NEON::BI__builtin_neon_vcvtp_s64_v:
1352 case NEON::BI__builtin_neon_vcvtpq_s64_v:
1353 case NEON::BI__builtin_neon_vcvtp_u64_v:
1354 case NEON::BI__builtin_neon_vcvtpq_u64_v:
1355 case NEON::BI__builtin_neon_vmulx_v:
1356 case NEON::BI__builtin_neon_vmulxq_v:
1357 case NEON::BI__builtin_neon_vmulxh_lane_f16:
1358 case NEON::BI__builtin_neon_vmulxh_laneq_f16:
1359 case NEON::BI__builtin_neon_vmul_lane_v:
1360 case NEON::BI__builtin_neon_vmul_laneq_v:
1361 case NEON::BI__builtin_neon_vnegd_s64:
1362 case NEON::BI__builtin_neon_vnegh_f16:
1363 case NEON::BI__builtin_neon_vpmaxnm_v:
1364 case NEON::BI__builtin_neon_vpmaxnmq_v:
1365 case NEON::BI__builtin_neon_vpminnm_v:
1366 case NEON::BI__builtin_neon_vpminnmq_v:
1367 case NEON::BI__builtin_neon_vsqrth_f16:
1368 case NEON::BI__builtin_neon_vsqrt_v:
1369 case NEON::BI__builtin_neon_vsqrtq_v:
1370 case NEON::BI__builtin_neon_vrbit_v:
1371 case NEON::BI__builtin_neon_vrbitq_v:
1372 case NEON::BI__builtin_neon_vmaxv_f16:
1373 case NEON::BI__builtin_neon_vmaxvq_f16:
1374 case NEON::BI__builtin_neon_vminv_f16:
1375 case NEON::BI__builtin_neon_vminvq_f16:
1376 case NEON::BI__builtin_neon_vmaxnmv_f16:
1377 case NEON::BI__builtin_neon_vmaxnmvq_f16:
1378 case NEON::BI__builtin_neon_vminnmv_f16:
1379 case NEON::BI__builtin_neon_vminnmvq_f16:
1380 case NEON::BI__builtin_neon_vmul_n_f64:
1381 case NEON::BI__builtin_neon_vaddlv_u8:
1382 case NEON::BI__builtin_neon_vaddlv_u16:
1383 case NEON::BI__builtin_neon_vaddlvq_u8:
1384 case NEON::BI__builtin_neon_vaddlvq_u16:
1385 case NEON::BI__builtin_neon_vaddlv_s8:
1386 case NEON::BI__builtin_neon_vaddlv_s16:
1387 case NEON::BI__builtin_neon_vaddlvq_s8:
1388 case NEON::BI__builtin_neon_vaddlvq_s16:
1389 case NEON::BI__builtin_neon_vsri_n_v:
1390 case NEON::BI__builtin_neon_vsriq_n_v:
1391 case NEON::BI__builtin_neon_vsli_n_v:
1392 case NEON::BI__builtin_neon_vsliq_n_v:
1393 case NEON::BI__builtin_neon_vsra_n_v:
1394 case NEON::BI__builtin_neon_vsraq_n_v:
1395 case NEON::BI__builtin_neon_vrsra_n_v:
1396 case NEON::BI__builtin_neon_vrsraq_n_v:
1397 case NEON::BI__builtin_neon_vld1_v:
1398 case NEON::BI__builtin_neon_vld1q_v:
1399 case NEON::BI__builtin_neon_vst1_v:
1400 case NEON::BI__builtin_neon_vst1q_v:
1401 case NEON::BI__builtin_neon_vld1_lane_v:
1402 case NEON::BI__builtin_neon_vld1q_lane_v:
1403 case NEON::BI__builtin_neon_vldap1_lane_s64:
1404 case NEON::BI__builtin_neon_vldap1q_lane_s64:
1405 case NEON::BI__builtin_neon_vld1_dup_v:
1406 case NEON::BI__builtin_neon_vld1q_dup_v:
1407 case NEON::BI__builtin_neon_vst1_lane_v:
1408 case NEON::BI__builtin_neon_vst1q_lane_v:
1409 case NEON::BI__builtin_neon_vstl1_lane_s64:
1410 case NEON::BI__builtin_neon_vstl1q_lane_s64:
1411 case NEON::BI__builtin_neon_vld2_v:
1412 case NEON::BI__builtin_neon_vld2q_v:
1413 case NEON::BI__builtin_neon_vld3_v:
1414 case NEON::BI__builtin_neon_vld3q_v:
1415 case NEON::BI__builtin_neon_vld4_v:
1416 case NEON::BI__builtin_neon_vld4q_v:
1417 case NEON::BI__builtin_neon_vld2_dup_v:
1418 case NEON::BI__builtin_neon_vld2q_dup_v:
1419 case NEON::BI__builtin_neon_vld3_dup_v:
1420 case NEON::BI__builtin_neon_vld3q_dup_v:
1421 case NEON::BI__builtin_neon_vld4_dup_v:
1422 case NEON::BI__builtin_neon_vld4q_dup_v:
1423 case NEON::BI__builtin_neon_vld2_lane_v:
1424 case NEON::BI__builtin_neon_vld2q_lane_v:
1425 case NEON::BI__builtin_neon_vld3_lane_v:
1426 case NEON::BI__builtin_neon_vld3q_lane_v:
1427 case NEON::BI__builtin_neon_vld4_lane_v:
1428 case NEON::BI__builtin_neon_vld4q_lane_v:
1429 case NEON::BI__builtin_neon_vst2_v:
1430 case NEON::BI__builtin_neon_vst2q_v:
1431 case NEON::BI__builtin_neon_vst2_lane_v:
1432 case NEON::BI__builtin_neon_vst2q_lane_v:
1433 case NEON::BI__builtin_neon_vst3_v:
1434 case NEON::BI__builtin_neon_vst3q_v:
1435 case NEON::BI__builtin_neon_vst3_lane_v:
1436 case NEON::BI__builtin_neon_vst3q_lane_v:
1437 case NEON::BI__builtin_neon_vst4_v:
1438 case NEON::BI__builtin_neon_vst4q_v:
1439 case NEON::BI__builtin_neon_vst4_lane_v:
1440 case NEON::BI__builtin_neon_vst4q_lane_v:
1441 case NEON::BI__builtin_neon_vtrn_v:
1442 case NEON::BI__builtin_neon_vtrnq_v:
1443 case NEON::BI__builtin_neon_vuzp_v:
1444 case NEON::BI__builtin_neon_vuzpq_v:
1445 case NEON::BI__builtin_neon_vzip_v:
1446 case NEON::BI__builtin_neon_vzipq_v:
1447 case NEON::BI__builtin_neon_vqtbl1q_v:
1448 case NEON::BI__builtin_neon_vqtbl2q_v:
1449 case NEON::BI__builtin_neon_vqtbl3q_v:
1450 case NEON::BI__builtin_neon_vqtbl4q_v:
1451 case NEON::BI__builtin_neon_vqtbx1q_v:
1452 case NEON::BI__builtin_neon_vqtbx2q_v:
1453 case NEON::BI__builtin_neon_vqtbx3q_v:
1454 case NEON::BI__builtin_neon_vqtbx4q_v:
1455 case NEON::BI__builtin_neon_vsqadd_v:
1456 case NEON::BI__builtin_neon_vsqaddq_v:
1457 case NEON::BI__builtin_neon_vuqadd_v:
1458 case NEON::BI__builtin_neon_vuqaddq_v:
1459 case NEON::BI__builtin_neon_vluti2_laneq_mf8:
1460 case NEON::BI__builtin_neon_vluti2_laneq_bf16:
1461 case NEON::BI__builtin_neon_vluti2_laneq_f16:
1462 case NEON::BI__builtin_neon_vluti2_laneq_p16:
1463 case NEON::BI__builtin_neon_vluti2_laneq_p8:
1464 case NEON::BI__builtin_neon_vluti2_laneq_s16:
1465 case NEON::BI__builtin_neon_vluti2_laneq_s8:
1466 case NEON::BI__builtin_neon_vluti2_laneq_u16:
1467 case NEON::BI__builtin_neon_vluti2_laneq_u8:
1468 case NEON::BI__builtin_neon_vluti2q_laneq_mf8:
1469 case NEON::BI__builtin_neon_vluti2q_laneq_bf16:
1470 case NEON::BI__builtin_neon_vluti2q_laneq_f16:
1471 case NEON::BI__builtin_neon_vluti2q_laneq_p16:
1472 case NEON::BI__builtin_neon_vluti2q_laneq_p8:
1473 case NEON::BI__builtin_neon_vluti2q_laneq_s16:
1474 case NEON::BI__builtin_neon_vluti2q_laneq_s8:
1475 case NEON::BI__builtin_neon_vluti2q_laneq_u16:
1476 case NEON::BI__builtin_neon_vluti2q_laneq_u8:
1477 case NEON::BI__builtin_neon_vluti2_lane_mf8:
1478 case NEON::BI__builtin_neon_vluti2_lane_bf16:
1479 case NEON::BI__builtin_neon_vluti2_lane_f16:
1480 case NEON::BI__builtin_neon_vluti2_lane_p16:
1481 case NEON::BI__builtin_neon_vluti2_lane_p8:
1482 case NEON::BI__builtin_neon_vluti2_lane_s16:
1483 case NEON::BI__builtin_neon_vluti2_lane_s8:
1484 case NEON::BI__builtin_neon_vluti2_lane_u16:
1485 case NEON::BI__builtin_neon_vluti2_lane_u8:
1486 case NEON::BI__builtin_neon_vluti2q_lane_mf8:
1487 case NEON::BI__builtin_neon_vluti2q_lane_bf16:
1488 case NEON::BI__builtin_neon_vluti2q_lane_f16:
1489 case NEON::BI__builtin_neon_vluti2q_lane_p16:
1490 case NEON::BI__builtin_neon_vluti2q_lane_p8:
1491 case NEON::BI__builtin_neon_vluti2q_lane_s16:
1492 case NEON::BI__builtin_neon_vluti2q_lane_s8:
1493 case NEON::BI__builtin_neon_vluti2q_lane_u16:
1494 case NEON::BI__builtin_neon_vluti2q_lane_u8:
1495 case NEON::BI__builtin_neon_vluti4q_lane_mf8:
1496 case NEON::BI__builtin_neon_vluti4q_lane_p8:
1497 case NEON::BI__builtin_neon_vluti4q_lane_s8:
1498 case NEON::BI__builtin_neon_vluti4q_lane_u8:
1499 case NEON::BI__builtin_neon_vluti4q_laneq_mf8:
1500 case NEON::BI__builtin_neon_vluti4q_laneq_p8:
1501 case NEON::BI__builtin_neon_vluti4q_laneq_s8:
1502 case NEON::BI__builtin_neon_vluti4q_laneq_u8:
1503 case NEON::BI__builtin_neon_vluti4q_lane_bf16_x2:
1504 case NEON::BI__builtin_neon_vluti4q_lane_f16_x2:
1505 case NEON::BI__builtin_neon_vluti4q_lane_p16_x2:
1506 case NEON::BI__builtin_neon_vluti4q_lane_s16_x2:
1507 case NEON::BI__builtin_neon_vluti4q_lane_u16_x2:
1508 case NEON::BI__builtin_neon_vluti4q_laneq_bf16_x2:
1509 case NEON::BI__builtin_neon_vluti4q_laneq_f16_x2:
1510 case NEON::BI__builtin_neon_vluti4q_laneq_p16_x2:
1511 case NEON::BI__builtin_neon_vluti4q_laneq_s16_x2:
1512 case NEON::BI__builtin_neon_vluti4q_laneq_u16_x2:
1513 case NEON::BI__builtin_neon_vmmlaq_f16_mf8_fpm:
1514 case NEON::BI__builtin_neon_vmmlaq_f32_mf8_fpm:
1515 case NEON::BI__builtin_neon_vcvt1_low_bf16_mf8_fpm:
1516 case NEON::BI__builtin_neon_vcvt1_bf16_mf8_fpm:
1517 case NEON::BI__builtin_neon_vcvt1_high_bf16_mf8_fpm:
1518 case NEON::BI__builtin_neon_vcvt2_low_bf16_mf8_fpm:
1519 case NEON::BI__builtin_neon_vcvt2_bf16_mf8_fpm:
1520 case NEON::BI__builtin_neon_vcvt2_high_bf16_mf8_fpm:
1521 case NEON::BI__builtin_neon_vcvt1_low_f16_mf8_fpm:
1522 case NEON::BI__builtin_neon_vcvt1_f16_mf8_fpm:
1523 case NEON::BI__builtin_neon_vcvt1_high_f16_mf8_fpm:
1524 case NEON::BI__builtin_neon_vcvt2_low_f16_mf8_fpm:
1525 case NEON::BI__builtin_neon_vcvt2_f16_mf8_fpm:
1526 case NEON::BI__builtin_neon_vcvt2_high_f16_mf8_fpm:
1527 case NEON::BI__builtin_neon_vcvt_mf8_f32_fpm:
1528 case NEON::BI__builtin_neon_vcvt_mf8_f16_fpm:
1529 case NEON::BI__builtin_neon_vcvtq_mf8_f16_fpm:
1530 case NEON::BI__builtin_neon_vcvt_high_mf8_f32_fpm:
1531 case NEON::BI__builtin_neon_vdot_f16_mf8_fpm:
1532 case NEON::BI__builtin_neon_vdotq_f16_mf8_fpm:
1533 case NEON::BI__builtin_neon_vdot_lane_f16_mf8_fpm:
1534 case NEON::BI__builtin_neon_vdotq_lane_f16_mf8_fpm:
1535 case NEON::BI__builtin_neon_vdot_laneq_f16_mf8_fpm:
1536 case NEON::BI__builtin_neon_vdotq_laneq_f16_mf8_fpm:
1537 case NEON::BI__builtin_neon_vdot_f32_mf8_fpm:
1538 case NEON::BI__builtin_neon_vdotq_f32_mf8_fpm:
1539 case NEON::BI__builtin_neon_vdot_lane_f32_mf8_fpm:
1540 case NEON::BI__builtin_neon_vdotq_lane_f32_mf8_fpm:
1541 case NEON::BI__builtin_neon_vdot_laneq_f32_mf8_fpm:
1542 case NEON::BI__builtin_neon_vdotq_laneq_f32_mf8_fpm:
1543 case NEON::BI__builtin_neon_vmlalbq_f16_mf8_fpm:
1544 case NEON::BI__builtin_neon_vmlaltq_f16_mf8_fpm:
1545 case NEON::BI__builtin_neon_vmlallbbq_f32_mf8_fpm:
1546 case NEON::BI__builtin_neon_vmlallbtq_f32_mf8_fpm:
1547 case NEON::BI__builtin_neon_vmlalltbq_f32_mf8_fpm:
1548 case NEON::BI__builtin_neon_vmlallttq_f32_mf8_fpm:
1549 case NEON::BI__builtin_neon_vmlalbq_lane_f16_mf8_fpm:
1550 case NEON::BI__builtin_neon_vmlalbq_laneq_f16_mf8_fpm:
1551 case NEON::BI__builtin_neon_vmlaltq_lane_f16_mf8_fpm:
1552 case NEON::BI__builtin_neon_vmlaltq_laneq_f16_mf8_fpm:
1553 case NEON::BI__builtin_neon_vmlallbbq_lane_f32_mf8_fpm:
1554 case NEON::BI__builtin_neon_vmlallbbq_laneq_f32_mf8_fpm:
1555 case NEON::BI__builtin_neon_vmlallbtq_lane_f32_mf8_fpm:
1556 case NEON::BI__builtin_neon_vmlallbtq_laneq_f32_mf8_fpm:
1557 case NEON::BI__builtin_neon_vmlalltbq_lane_f32_mf8_fpm:
1558 case NEON::BI__builtin_neon_vmlalltbq_laneq_f32_mf8_fpm:
1559 case NEON::BI__builtin_neon_vmlallttq_lane_f32_mf8_fpm:
1560 case NEON::BI__builtin_neon_vmlallttq_laneq_f32_mf8_fpm:
1561 case NEON::BI__builtin_neon_vamin_f16:
1562 case NEON::BI__builtin_neon_vaminq_f16:
1563 case NEON::BI__builtin_neon_vamin_f32:
1564 case NEON::BI__builtin_neon_vaminq_f32:
1565 case NEON::BI__builtin_neon_vaminq_f64:
1566 case NEON::BI__builtin_neon_vamax_f16:
1567 case NEON::BI__builtin_neon_vamaxq_f16:
1568 case NEON::BI__builtin_neon_vamax_f32:
1569 case NEON::BI__builtin_neon_vamaxq_f32:
1570 case NEON::BI__builtin_neon_vamaxq_f64:
1571 case NEON::BI__builtin_neon_vscale_f16:
1572 case NEON::BI__builtin_neon_vscaleq_f16:
1573 case NEON::BI__builtin_neon_vscale_f32:
1574 case NEON::BI__builtin_neon_vscaleq_f32:
1575 case NEON::BI__builtin_neon_vscaleq_f64:
1576 cgm.errorNYI(
expr->getSourceRange(),
1577 std::string(
"unimplemented AArch64 builtin call: ") +
1578 getContext().BuiltinInfo.getName(builtinID));