219 NEON::BI__builtin_neon_splat_lane_bf16,
220 NEON::BI__builtin_neon_splat_lane_v,
223 NEON::BI__builtin_neon_splat_laneq_bf16,
224 NEON::BI__builtin_neon_splat_laneq_v,
227 NEON::BI__builtin_neon_splatq_lane_bf16,
228 NEON::BI__builtin_neon_splatq_lane_v,
231 NEON::BI__builtin_neon_splatq_laneq_bf16,
232 NEON::BI__builtin_neon_splatq_laneq_v,
235 NEON::BI__builtin_neon_vabd_f16,
236 NEON::BI__builtin_neon_vabd_v,
239 NEON::BI__builtin_neon_vabdq_f16,
240 NEON::BI__builtin_neon_vabdq_v,
243 NEON::BI__builtin_neon_vabs_f16,
244 NEON::BI__builtin_neon_vabs_v,
247 NEON::BI__builtin_neon_vabsq_f16,
248 NEON::BI__builtin_neon_vabsq_v,
251 NEON::BI__builtin_neon_vcage_f16,
252 NEON::BI__builtin_neon_vcage_v,
255 NEON::BI__builtin_neon_vcageq_f16,
256 NEON::BI__builtin_neon_vcageq_v,
259 NEON::BI__builtin_neon_vcagt_f16,
260 NEON::BI__builtin_neon_vcagt_v,
263 NEON::BI__builtin_neon_vcagtq_f16,
264 NEON::BI__builtin_neon_vcagtq_v,
267 NEON::BI__builtin_neon_vcale_f16,
268 NEON::BI__builtin_neon_vcale_v,
271 NEON::BI__builtin_neon_vcaleq_f16,
272 NEON::BI__builtin_neon_vcaleq_v,
275 NEON::BI__builtin_neon_vcalt_f16,
276 NEON::BI__builtin_neon_vcalt_v,
279 NEON::BI__builtin_neon_vcaltq_f16,
280 NEON::BI__builtin_neon_vcaltq_v,
283 NEON::BI__builtin_neon_vceqz_f16,
284 NEON::BI__builtin_neon_vceqz_v,
287 NEON::BI__builtin_neon_vceqzq_f16,
288 NEON::BI__builtin_neon_vceqzq_v,
291 NEON::BI__builtin_neon_vcgez_f16,
292 NEON::BI__builtin_neon_vcgez_v,
295 NEON::BI__builtin_neon_vcgezq_f16,
296 NEON::BI__builtin_neon_vcgezq_v,
299 NEON::BI__builtin_neon_vcgtz_f16,
300 NEON::BI__builtin_neon_vcgtz_v,
303 NEON::BI__builtin_neon_vcgtzq_f16,
304 NEON::BI__builtin_neon_vcgtzq_v,
307 NEON::BI__builtin_neon_vclez_f16,
308 NEON::BI__builtin_neon_vclez_v,
311 NEON::BI__builtin_neon_vclezq_f16,
312 NEON::BI__builtin_neon_vclezq_v,
315 NEON::BI__builtin_neon_vcltz_f16,
316 NEON::BI__builtin_neon_vcltz_v,
319 NEON::BI__builtin_neon_vcltzq_f16,
320 NEON::BI__builtin_neon_vcltzq_v,
323 NEON::BI__builtin_neon_vfma_f16,
324 NEON::BI__builtin_neon_vfma_v,
327 NEON::BI__builtin_neon_vfma_lane_f16,
328 NEON::BI__builtin_neon_vfma_lane_v,
331 NEON::BI__builtin_neon_vfma_laneq_f16,
332 NEON::BI__builtin_neon_vfma_laneq_v,
335 NEON::BI__builtin_neon_vfmaq_f16,
336 NEON::BI__builtin_neon_vfmaq_v,
339 NEON::BI__builtin_neon_vfmaq_lane_f16,
340 NEON::BI__builtin_neon_vfmaq_lane_v,
343 NEON::BI__builtin_neon_vfmaq_laneq_f16,
344 NEON::BI__builtin_neon_vfmaq_laneq_v,
346 {NEON::BI__builtin_neon_vld1_bf16_x2, NEON::BI__builtin_neon_vld1_x2_v},
347 {NEON::BI__builtin_neon_vld1_bf16_x3, NEON::BI__builtin_neon_vld1_x3_v},
348 {NEON::BI__builtin_neon_vld1_bf16_x4, NEON::BI__builtin_neon_vld1_x4_v},
349 {NEON::BI__builtin_neon_vld1_bf16, NEON::BI__builtin_neon_vld1_v},
350 {NEON::BI__builtin_neon_vld1_dup_bf16, NEON::BI__builtin_neon_vld1_dup_v},
351 {NEON::BI__builtin_neon_vld1_lane_bf16, NEON::BI__builtin_neon_vld1_lane_v},
352 {NEON::BI__builtin_neon_vld1q_bf16_x2, NEON::BI__builtin_neon_vld1q_x2_v},
353 {NEON::BI__builtin_neon_vld1q_bf16_x3, NEON::BI__builtin_neon_vld1q_x3_v},
354 {NEON::BI__builtin_neon_vld1q_bf16_x4, NEON::BI__builtin_neon_vld1q_x4_v},
355 {NEON::BI__builtin_neon_vld1q_bf16, NEON::BI__builtin_neon_vld1q_v},
356 {NEON::BI__builtin_neon_vld1q_dup_bf16, NEON::BI__builtin_neon_vld1q_dup_v},
357 {NEON::BI__builtin_neon_vld1q_lane_bf16,
358 NEON::BI__builtin_neon_vld1q_lane_v},
359 {NEON::BI__builtin_neon_vld2_bf16, NEON::BI__builtin_neon_vld2_v},
360 {NEON::BI__builtin_neon_vld2_dup_bf16, NEON::BI__builtin_neon_vld2_dup_v},
361 {NEON::BI__builtin_neon_vld2_lane_bf16, NEON::BI__builtin_neon_vld2_lane_v},
362 {NEON::BI__builtin_neon_vld2q_bf16, NEON::BI__builtin_neon_vld2q_v},
363 {NEON::BI__builtin_neon_vld2q_dup_bf16, NEON::BI__builtin_neon_vld2q_dup_v},
364 {NEON::BI__builtin_neon_vld2q_lane_bf16,
365 NEON::BI__builtin_neon_vld2q_lane_v},
366 {NEON::BI__builtin_neon_vld3_bf16, NEON::BI__builtin_neon_vld3_v},
367 {NEON::BI__builtin_neon_vld3_dup_bf16, NEON::BI__builtin_neon_vld3_dup_v},
368 {NEON::BI__builtin_neon_vld3_lane_bf16, NEON::BI__builtin_neon_vld3_lane_v},
369 {NEON::BI__builtin_neon_vld3q_bf16, NEON::BI__builtin_neon_vld3q_v},
370 {NEON::BI__builtin_neon_vld3q_dup_bf16, NEON::BI__builtin_neon_vld3q_dup_v},
371 {NEON::BI__builtin_neon_vld3q_lane_bf16,
372 NEON::BI__builtin_neon_vld3q_lane_v},
373 {NEON::BI__builtin_neon_vld4_bf16, NEON::BI__builtin_neon_vld4_v},
374 {NEON::BI__builtin_neon_vld4_dup_bf16, NEON::BI__builtin_neon_vld4_dup_v},
375 {NEON::BI__builtin_neon_vld4_lane_bf16, NEON::BI__builtin_neon_vld4_lane_v},
376 {NEON::BI__builtin_neon_vld4q_bf16, NEON::BI__builtin_neon_vld4q_v},
377 {NEON::BI__builtin_neon_vld4q_dup_bf16, NEON::BI__builtin_neon_vld4q_dup_v},
378 {NEON::BI__builtin_neon_vld4q_lane_bf16,
379 NEON::BI__builtin_neon_vld4q_lane_v},
381 NEON::BI__builtin_neon_vmax_f16,
382 NEON::BI__builtin_neon_vmax_v,
385 NEON::BI__builtin_neon_vmaxnm_f16,
386 NEON::BI__builtin_neon_vmaxnm_v,
389 NEON::BI__builtin_neon_vmaxnmq_f16,
390 NEON::BI__builtin_neon_vmaxnmq_v,
393 NEON::BI__builtin_neon_vmaxq_f16,
394 NEON::BI__builtin_neon_vmaxq_v,
397 NEON::BI__builtin_neon_vmin_f16,
398 NEON::BI__builtin_neon_vmin_v,
401 NEON::BI__builtin_neon_vminnm_f16,
402 NEON::BI__builtin_neon_vminnm_v,
405 NEON::BI__builtin_neon_vminnmq_f16,
406 NEON::BI__builtin_neon_vminnmq_v,
409 NEON::BI__builtin_neon_vminq_f16,
410 NEON::BI__builtin_neon_vminq_v,
413 NEON::BI__builtin_neon_vmulx_f16,
414 NEON::BI__builtin_neon_vmulx_v,
417 NEON::BI__builtin_neon_vmulxq_f16,
418 NEON::BI__builtin_neon_vmulxq_v,
421 NEON::BI__builtin_neon_vpadd_f16,
422 NEON::BI__builtin_neon_vpadd_v,
425 NEON::BI__builtin_neon_vpaddq_f16,
426 NEON::BI__builtin_neon_vpaddq_v,
429 NEON::BI__builtin_neon_vpmax_f16,
430 NEON::BI__builtin_neon_vpmax_v,
433 NEON::BI__builtin_neon_vpmaxnm_f16,
434 NEON::BI__builtin_neon_vpmaxnm_v,
437 NEON::BI__builtin_neon_vpmaxnmq_f16,
438 NEON::BI__builtin_neon_vpmaxnmq_v,
441 NEON::BI__builtin_neon_vpmaxq_f16,
442 NEON::BI__builtin_neon_vpmaxq_v,
445 NEON::BI__builtin_neon_vpmin_f16,
446 NEON::BI__builtin_neon_vpmin_v,
449 NEON::BI__builtin_neon_vpminnm_f16,
450 NEON::BI__builtin_neon_vpminnm_v,
453 NEON::BI__builtin_neon_vpminnmq_f16,
454 NEON::BI__builtin_neon_vpminnmq_v,
457 NEON::BI__builtin_neon_vpminq_f16,
458 NEON::BI__builtin_neon_vpminq_v,
461 NEON::BI__builtin_neon_vrecpe_f16,
462 NEON::BI__builtin_neon_vrecpe_v,
465 NEON::BI__builtin_neon_vrecpeq_f16,
466 NEON::BI__builtin_neon_vrecpeq_v,
469 NEON::BI__builtin_neon_vrecps_f16,
470 NEON::BI__builtin_neon_vrecps_v,
473 NEON::BI__builtin_neon_vrecpsq_f16,
474 NEON::BI__builtin_neon_vrecpsq_v,
477 NEON::BI__builtin_neon_vrnd_f16,
478 NEON::BI__builtin_neon_vrnd_v,
481 NEON::BI__builtin_neon_vrnda_f16,
482 NEON::BI__builtin_neon_vrnda_v,
485 NEON::BI__builtin_neon_vrndaq_f16,
486 NEON::BI__builtin_neon_vrndaq_v,
489 NEON::BI__builtin_neon_vrndi_f16,
490 NEON::BI__builtin_neon_vrndi_v,
493 NEON::BI__builtin_neon_vrndiq_f16,
494 NEON::BI__builtin_neon_vrndiq_v,
497 NEON::BI__builtin_neon_vrndm_f16,
498 NEON::BI__builtin_neon_vrndm_v,
501 NEON::BI__builtin_neon_vrndmq_f16,
502 NEON::BI__builtin_neon_vrndmq_v,
505 NEON::BI__builtin_neon_vrndn_f16,
506 NEON::BI__builtin_neon_vrndn_v,
509 NEON::BI__builtin_neon_vrndnq_f16,
510 NEON::BI__builtin_neon_vrndnq_v,
513 NEON::BI__builtin_neon_vrndp_f16,
514 NEON::BI__builtin_neon_vrndp_v,
517 NEON::BI__builtin_neon_vrndpq_f16,
518 NEON::BI__builtin_neon_vrndpq_v,
521 NEON::BI__builtin_neon_vrndq_f16,
522 NEON::BI__builtin_neon_vrndq_v,
525 NEON::BI__builtin_neon_vrndx_f16,
526 NEON::BI__builtin_neon_vrndx_v,
529 NEON::BI__builtin_neon_vrndxq_f16,
530 NEON::BI__builtin_neon_vrndxq_v,
533 NEON::BI__builtin_neon_vrsqrte_f16,
534 NEON::BI__builtin_neon_vrsqrte_v,
537 NEON::BI__builtin_neon_vrsqrteq_f16,
538 NEON::BI__builtin_neon_vrsqrteq_v,
541 NEON::BI__builtin_neon_vrsqrts_f16,
542 NEON::BI__builtin_neon_vrsqrts_v,
545 NEON::BI__builtin_neon_vrsqrtsq_f16,
546 NEON::BI__builtin_neon_vrsqrtsq_v,
549 NEON::BI__builtin_neon_vsqrt_f16,
550 NEON::BI__builtin_neon_vsqrt_v,
553 NEON::BI__builtin_neon_vsqrtq_f16,
554 NEON::BI__builtin_neon_vsqrtq_v,
556 {NEON::BI__builtin_neon_vst1_bf16_x2, NEON::BI__builtin_neon_vst1_x2_v},
557 {NEON::BI__builtin_neon_vst1_bf16_x3, NEON::BI__builtin_neon_vst1_x3_v},
558 {NEON::BI__builtin_neon_vst1_bf16_x4, NEON::BI__builtin_neon_vst1_x4_v},
559 {NEON::BI__builtin_neon_vst1_bf16, NEON::BI__builtin_neon_vst1_v},
560 {NEON::BI__builtin_neon_vst1_lane_bf16, NEON::BI__builtin_neon_vst1_lane_v},
561 {NEON::BI__builtin_neon_vst1q_bf16_x2, NEON::BI__builtin_neon_vst1q_x2_v},
562 {NEON::BI__builtin_neon_vst1q_bf16_x3, NEON::BI__builtin_neon_vst1q_x3_v},
563 {NEON::BI__builtin_neon_vst1q_bf16_x4, NEON::BI__builtin_neon_vst1q_x4_v},
564 {NEON::BI__builtin_neon_vst1q_bf16, NEON::BI__builtin_neon_vst1q_v},
565 {NEON::BI__builtin_neon_vst1q_lane_bf16,
566 NEON::BI__builtin_neon_vst1q_lane_v},
567 {NEON::BI__builtin_neon_vst2_bf16, NEON::BI__builtin_neon_vst2_v},
568 {NEON::BI__builtin_neon_vst2_lane_bf16, NEON::BI__builtin_neon_vst2_lane_v},
569 {NEON::BI__builtin_neon_vst2q_bf16, NEON::BI__builtin_neon_vst2q_v},
570 {NEON::BI__builtin_neon_vst2q_lane_bf16,
571 NEON::BI__builtin_neon_vst2q_lane_v},
572 {NEON::BI__builtin_neon_vst3_bf16, NEON::BI__builtin_neon_vst3_v},
573 {NEON::BI__builtin_neon_vst3_lane_bf16, NEON::BI__builtin_neon_vst3_lane_v},
574 {NEON::BI__builtin_neon_vst3q_bf16, NEON::BI__builtin_neon_vst3q_v},
575 {NEON::BI__builtin_neon_vst3q_lane_bf16,
576 NEON::BI__builtin_neon_vst3q_lane_v},
577 {NEON::BI__builtin_neon_vst4_bf16, NEON::BI__builtin_neon_vst4_v},
578 {NEON::BI__builtin_neon_vst4_lane_bf16, NEON::BI__builtin_neon_vst4_lane_v},
579 {NEON::BI__builtin_neon_vst4q_bf16, NEON::BI__builtin_neon_vst4q_v},
580 {NEON::BI__builtin_neon_vst4q_lane_bf16,
581 NEON::BI__builtin_neon_vst4q_lane_v},
585 {NEON::BI__builtin_neon_vldap1_lane_u64,
586 NEON::BI__builtin_neon_vldap1_lane_s64},
587 {NEON::BI__builtin_neon_vldap1_lane_f64,
588 NEON::BI__builtin_neon_vldap1_lane_s64},
589 {NEON::BI__builtin_neon_vldap1_lane_p64,
590 NEON::BI__builtin_neon_vldap1_lane_s64},
591 {NEON::BI__builtin_neon_vldap1q_lane_u64,
592 NEON::BI__builtin_neon_vldap1q_lane_s64},
593 {NEON::BI__builtin_neon_vldap1q_lane_f64,
594 NEON::BI__builtin_neon_vldap1q_lane_s64},
595 {NEON::BI__builtin_neon_vldap1q_lane_p64,
596 NEON::BI__builtin_neon_vldap1q_lane_s64},
597 {NEON::BI__builtin_neon_vstl1_lane_u64,
598 NEON::BI__builtin_neon_vstl1_lane_s64},
599 {NEON::BI__builtin_neon_vstl1_lane_f64,
600 NEON::BI__builtin_neon_vstl1_lane_s64},
601 {NEON::BI__builtin_neon_vstl1_lane_p64,
602 NEON::BI__builtin_neon_vstl1_lane_s64},
603 {NEON::BI__builtin_neon_vstl1q_lane_u64,
604 NEON::BI__builtin_neon_vstl1q_lane_s64},
605 {NEON::BI__builtin_neon_vstl1q_lane_f64,
606 NEON::BI__builtin_neon_vstl1q_lane_s64},
607 {NEON::BI__builtin_neon_vstl1q_lane_p64,
608 NEON::BI__builtin_neon_vstl1q_lane_s64},
614 llvm::Triple::ArchType arch) {
623 if (builtinID == Builtin::BI__builtin_cpu_supports) {
624 cgm.errorNYI(
expr->getSourceRange(),
625 std::string(
"unimplemented AArch64 builtin call: ") +
627 return mlir::Value{};
633 case clang::AArch64::BI__builtin_arm_nop:
634 case clang::AArch64::BI__builtin_arm_yield:
635 case clang::AArch64::BI__yield:
636 case clang::AArch64::BI__builtin_arm_wfe:
637 case clang::AArch64::BI__wfe:
638 case clang::AArch64::BI__builtin_arm_wfi:
639 case clang::AArch64::BI__wfi:
640 case clang::AArch64::BI__builtin_arm_sev:
641 case clang::AArch64::BI__sev:
642 case clang::AArch64::BI__builtin_arm_sevl:
643 case clang::AArch64::BI__sevl:
644 cgm.errorNYI(
expr->getSourceRange(),
645 std::string(
"unimplemented AArch64 builtin call: ") +
647 return mlir::Value{};
650 if (builtinID == clang::AArch64::BI__builtin_arm_trap) {
651 cgm.errorNYI(
expr->getSourceRange(),
652 std::string(
"unimplemented AArch64 builtin call: ") +
654 return mlir::Value{};
657 if (builtinID == clang::AArch64::BI__builtin_arm_get_sme_state) {
658 cgm.errorNYI(
expr->getSourceRange(),
659 std::string(
"unimplemented AArch64 builtin call: ") +
661 return mlir::Value{};
664 if (builtinID == clang::AArch64::BI__builtin_arm_rbit) {
665 cgm.errorNYI(
expr->getSourceRange(),
666 std::string(
"unimplemented AArch64 builtin call: ") +
668 return mlir::Value{};
670 if (builtinID == clang::AArch64::BI__builtin_arm_rbit64) {
671 cgm.errorNYI(
expr->getSourceRange(),
672 std::string(
"unimplemented AArch64 builtin call: ") +
674 return mlir::Value{};
677 if (builtinID == clang::AArch64::BI__builtin_arm_clz ||
678 builtinID == clang::AArch64::BI__builtin_arm_clz64) {
679 cgm.errorNYI(
expr->getSourceRange(),
680 std::string(
"unimplemented AArch64 builtin call: ") +
682 return mlir::Value{};
685 if (builtinID == clang::AArch64::BI__builtin_arm_cls) {
686 cgm.errorNYI(
expr->getSourceRange(),
687 std::string(
"unimplemented AArch64 builtin call: ") +
689 return mlir::Value{};
691 if (builtinID == clang::AArch64::BI__builtin_arm_cls64) {
692 cgm.errorNYI(
expr->getSourceRange(),
693 std::string(
"unimplemented AArch64 builtin call: ") +
695 return mlir::Value{};
698 if (builtinID == clang::AArch64::BI__builtin_arm_rint32zf ||
699 builtinID == clang::AArch64::BI__builtin_arm_rint32z) {
700 cgm.errorNYI(
expr->getSourceRange(),
701 std::string(
"unimplemented AArch64 builtin call: ") +
703 return mlir::Value{};
706 if (builtinID == clang::AArch64::BI__builtin_arm_rint64zf ||
707 builtinID == clang::AArch64::BI__builtin_arm_rint64z) {
708 cgm.errorNYI(
expr->getSourceRange(),
709 std::string(
"unimplemented AArch64 builtin call: ") +
711 return mlir::Value{};
714 if (builtinID == clang::AArch64::BI__builtin_arm_rint32xf ||
715 builtinID == clang::AArch64::BI__builtin_arm_rint32x) {
716 cgm.errorNYI(
expr->getSourceRange(),
717 std::string(
"unimplemented AArch64 builtin call: ") +
719 return mlir::Value{};
722 if (builtinID == clang::AArch64::BI__builtin_arm_rint64xf ||
723 builtinID == clang::AArch64::BI__builtin_arm_rint64x) {
724 cgm.errorNYI(
expr->getSourceRange(),
725 std::string(
"unimplemented AArch64 builtin call: ") +
727 return mlir::Value{};
730 if (builtinID == clang::AArch64::BI__builtin_arm_jcvt) {
731 cgm.errorNYI(
expr->getSourceRange(),
732 std::string(
"unimplemented AArch64 builtin call: ") +
734 return mlir::Value{};
737 if (builtinID == clang::AArch64::BI__builtin_arm_ld64b ||
738 builtinID == clang::AArch64::BI__builtin_arm_st64b ||
739 builtinID == clang::AArch64::BI__builtin_arm_st64bv ||
740 builtinID == clang::AArch64::BI__builtin_arm_st64bv0) {
741 cgm.errorNYI(
expr->getSourceRange(),
742 std::string(
"unimplemented AArch64 builtin call: ") +
744 return mlir::Value{};
747 if (builtinID == clang::AArch64::BI__builtin_arm_rndr ||
748 builtinID == clang::AArch64::BI__builtin_arm_rndrrs) {
749 cgm.errorNYI(
expr->getSourceRange(),
750 std::string(
"unimplemented AArch64 builtin call: ") +
752 return mlir::Value{};
755 if (builtinID == clang::AArch64::BI__clear_cache) {
756 cgm.errorNYI(
expr->getSourceRange(),
757 std::string(
"unimplemented AArch64 builtin call: ") +
759 return mlir::Value{};
762 if ((builtinID == clang::AArch64::BI__builtin_arm_ldrex ||
763 builtinID == clang::AArch64::BI__builtin_arm_ldaex) &&
765 cgm.errorNYI(
expr->getSourceRange(),
766 std::string(
"unimplemented AArch64 builtin call: ") +
768 return mlir::Value{};
770 if (builtinID == clang::AArch64::BI__builtin_arm_ldrex ||
771 builtinID == clang::AArch64::BI__builtin_arm_ldaex) {
772 cgm.errorNYI(
expr->getSourceRange(),
773 std::string(
"unimplemented AArch64 builtin call: ") +
775 return mlir::Value{};
778 if ((builtinID == clang::AArch64::BI__builtin_arm_strex ||
779 builtinID == clang::AArch64::BI__builtin_arm_stlex) &&
781 cgm.errorNYI(
expr->getSourceRange(),
782 std::string(
"unimplemented AArch64 builtin call: ") +
784 return mlir::Value{};
787 if (builtinID == clang::AArch64::BI__builtin_arm_strex ||
788 builtinID == clang::AArch64::BI__builtin_arm_stlex) {
789 cgm.errorNYI(
expr->getSourceRange(),
790 std::string(
"unimplemented AArch64 builtin call: ") +
792 return mlir::Value{};
795 if (builtinID == clang::AArch64::BI__getReg) {
796 cgm.errorNYI(
expr->getSourceRange(),
797 std::string(
"unimplemented AArch64 builtin call: ") +
799 return mlir::Value{};
802 if (builtinID == clang::AArch64::BI__break) {
803 cgm.errorNYI(
expr->getSourceRange(),
804 std::string(
"unimplemented AArch64 builtin call: ") +
806 return mlir::Value{};
809 if (builtinID == clang::AArch64::BI__builtin_arm_clrex) {
810 cgm.errorNYI(
expr->getSourceRange(),
811 std::string(
"unimplemented AArch64 builtin call: ") +
813 return mlir::Value{};
816 if (builtinID == clang::AArch64::BI_ReadWriteBarrier) {
817 cgm.errorNYI(
expr->getSourceRange(),
818 std::string(
"unimplemented AArch64 builtin call: ") +
820 return mlir::Value{};
824 Intrinsic::ID crcIntrinsicID = Intrinsic::not_intrinsic;
826 case clang::AArch64::BI__builtin_arm_crc32b:
827 crcIntrinsicID = Intrinsic::aarch64_crc32b;
829 case clang::AArch64::BI__builtin_arm_crc32cb:
830 crcIntrinsicID = Intrinsic::aarch64_crc32cb;
832 case clang::AArch64::BI__builtin_arm_crc32h:
833 crcIntrinsicID = Intrinsic::aarch64_crc32h;
835 case clang::AArch64::BI__builtin_arm_crc32ch:
836 crcIntrinsicID = Intrinsic::aarch64_crc32ch;
838 case clang::AArch64::BI__builtin_arm_crc32w:
839 crcIntrinsicID = Intrinsic::aarch64_crc32w;
841 case clang::AArch64::BI__builtin_arm_crc32cw:
842 crcIntrinsicID = Intrinsic::aarch64_crc32cw;
844 case clang::AArch64::BI__builtin_arm_crc32d:
845 crcIntrinsicID = Intrinsic::aarch64_crc32x;
847 case clang::AArch64::BI__builtin_arm_crc32cd:
848 crcIntrinsicID = Intrinsic::aarch64_crc32cx;
852 if (crcIntrinsicID != Intrinsic::not_intrinsic) {
853 cgm.errorNYI(
expr->getSourceRange(),
854 std::string(
"unimplemented AArch64 builtin call: ") +
856 return mlir::Value{};
860 if (builtinID == AArch64::BI__builtin_arm_mops_memset_tag) {
861 cgm.errorNYI(
expr->getSourceRange(),
862 std::string(
"unimplemented AArch64 builtin call: ") +
864 return mlir::Value{};
868 Intrinsic::ID mteIntrinsicID = Intrinsic::not_intrinsic;
870 case clang::AArch64::BI__builtin_arm_irg:
871 mteIntrinsicID = Intrinsic::aarch64_irg;
873 case clang::AArch64::BI__builtin_arm_addg:
874 mteIntrinsicID = Intrinsic::aarch64_addg;
876 case clang::AArch64::BI__builtin_arm_gmi:
877 mteIntrinsicID = Intrinsic::aarch64_gmi;
879 case clang::AArch64::BI__builtin_arm_ldg:
880 mteIntrinsicID = Intrinsic::aarch64_ldg;
882 case clang::AArch64::BI__builtin_arm_stg:
883 mteIntrinsicID = Intrinsic::aarch64_stg;
885 case clang::AArch64::BI__builtin_arm_subp:
886 mteIntrinsicID = Intrinsic::aarch64_subp;
890 if (mteIntrinsicID != Intrinsic::not_intrinsic) {
891 cgm.errorNYI(
expr->getSourceRange(),
892 std::string(
"unimplemented AArch64 builtin call: ") +
894 return mlir::Value{};
897 if (builtinID == clang::AArch64::BI__builtin_arm_rsr ||
898 builtinID == clang::AArch64::BI__builtin_arm_rsr64 ||
899 builtinID == clang::AArch64::BI__builtin_arm_rsr128 ||
900 builtinID == clang::AArch64::BI__builtin_arm_rsrp ||
901 builtinID == clang::AArch64::BI__builtin_arm_wsr ||
902 builtinID == clang::AArch64::BI__builtin_arm_wsr64 ||
903 builtinID == clang::AArch64::BI__builtin_arm_wsr128 ||
904 builtinID == clang::AArch64::BI__builtin_arm_wsrp) {
905 cgm.errorNYI(
expr->getSourceRange(),
906 std::string(
"unimplemented AArch64 builtin call: ") +
908 return mlir::Value{};
911 if (builtinID == clang::AArch64::BI_ReadStatusReg ||
912 builtinID == clang::AArch64::BI_WriteStatusReg ||
913 builtinID == clang::AArch64::BI__sys) {
914 cgm.errorNYI(
expr->getSourceRange(),
915 std::string(
"unimplemented AArch64 builtin call: ") +
917 return mlir::Value{};
920 if (builtinID == clang::AArch64::BI_AddressOfReturnAddress) {
921 cgm.errorNYI(
expr->getSourceRange(),
922 std::string(
"unimplemented AArch64 builtin call: ") +
924 return mlir::Value{};
927 if (builtinID == clang::AArch64::BI__builtin_sponentry) {
928 cgm.errorNYI(
expr->getSourceRange(),
929 std::string(
"unimplemented AArch64 builtin call: ") +
931 return mlir::Value{};
934 if (builtinID == clang::AArch64::BI__mulh ||
935 builtinID == clang::AArch64::BI__umulh) {
936 cgm.errorNYI(
expr->getSourceRange(),
937 std::string(
"unimplemented AArch64 builtin call: ") +
939 return mlir::Value{};
942 if (builtinID == AArch64::BI__writex18byte ||
943 builtinID == AArch64::BI__writex18word ||
944 builtinID == AArch64::BI__writex18dword ||
945 builtinID == AArch64::BI__writex18qword) {
946 cgm.errorNYI(
expr->getSourceRange(),
947 std::string(
"unimplemented AArch64 builtin call: ") +
949 return mlir::Value{};
952 if (builtinID == AArch64::BI__readx18byte ||
953 builtinID == AArch64::BI__readx18word ||
954 builtinID == AArch64::BI__readx18dword ||
955 builtinID == AArch64::BI__readx18qword) {
956 cgm.errorNYI(
expr->getSourceRange(),
957 std::string(
"unimplemented AArch64 builtin call: ") +
959 return mlir::Value{};
962 if (builtinID == AArch64::BI__addx18byte ||
963 builtinID == AArch64::BI__addx18word ||
964 builtinID == AArch64::BI__addx18dword ||
965 builtinID == AArch64::BI__addx18qword ||
966 builtinID == AArch64::BI__incx18byte ||
967 builtinID == AArch64::BI__incx18word ||
968 builtinID == AArch64::BI__incx18dword ||
969 builtinID == AArch64::BI__incx18qword) {
970 cgm.errorNYI(
expr->getSourceRange(),
971 std::string(
"unimplemented AArch64 builtin call: ") +
973 return mlir::Value{};
976 if (builtinID == AArch64::BI_CopyDoubleFromInt64 ||
977 builtinID == AArch64::BI_CopyFloatFromInt32 ||
978 builtinID == AArch64::BI_CopyInt32FromFloat ||
979 builtinID == AArch64::BI_CopyInt64FromDouble) {
980 cgm.errorNYI(
expr->getSourceRange(),
981 std::string(
"unimplemented AArch64 builtin call: ") +
983 return mlir::Value{};
986 if (builtinID == AArch64::BI_CountLeadingOnes ||
987 builtinID == AArch64::BI_CountLeadingOnes64 ||
988 builtinID == AArch64::BI_CountLeadingZeros ||
989 builtinID == AArch64::BI_CountLeadingZeros64) {
990 cgm.errorNYI(
expr->getSourceRange(),
991 std::string(
"unimplemented AArch64 builtin call: ") +
993 return mlir::Value{};
996 if (builtinID == AArch64::BI_CountLeadingSigns ||
997 builtinID == AArch64::BI_CountLeadingSigns64) {
998 cgm.errorNYI(
expr->getSourceRange(),
999 std::string(
"unimplemented AArch64 builtin call: ") +
1000 getContext().BuiltinInfo.getName(builtinID));
1001 return mlir::Value{};
1004 if (builtinID == AArch64::BI_CountOneBits ||
1005 builtinID == AArch64::BI_CountOneBits64) {
1006 cgm.errorNYI(
expr->getSourceRange(),
1007 std::string(
"unimplemented AArch64 builtin call: ") +
1008 getContext().BuiltinInfo.getName(builtinID));
1009 return mlir::Value{};
1012 if (builtinID == AArch64::BI__prefetch) {
1013 cgm.errorNYI(
expr->getSourceRange(),
1014 std::string(
"unimplemented AArch64 builtin call: ") +
1015 getContext().BuiltinInfo.getName(builtinID));
1016 return mlir::Value{};
1019 if (builtinID == AArch64::BI__hlt) {
1020 cgm.errorNYI(
expr->getSourceRange(),
1021 std::string(
"unimplemented AArch64 builtin call: ") +
1022 getContext().BuiltinInfo.getName(builtinID));
1023 return mlir::Value{};
1026 if (builtinID == NEON::BI__builtin_neon_vcvth_bf16_f32) {
1027 cgm.errorNYI(
expr->getSourceRange(),
1028 std::string(
"unimplemented AArch64 builtin call: ") +
1029 getContext().BuiltinInfo.getName(builtinID));
1030 return mlir::Value{};
1039 return p.first == builtinID;
1042 builtinID = it->second;
1051 switch (builtinID) {
1054 case NEON::BI__builtin_neon_vabsh_f16:
1055 case NEON::BI__builtin_neon_vaddq_p128:
1056 case NEON::BI__builtin_neon_vldrq_p128:
1057 case NEON::BI__builtin_neon_vstrq_p128:
1058 case NEON::BI__builtin_neon_vcvts_f32_u32:
1059 case NEON::BI__builtin_neon_vcvtd_f64_u64:
1060 case NEON::BI__builtin_neon_vcvts_f32_s32:
1061 case NEON::BI__builtin_neon_vcvtd_f64_s64:
1062 case NEON::BI__builtin_neon_vcvth_f16_u16:
1063 case NEON::BI__builtin_neon_vcvth_f16_u32:
1064 case NEON::BI__builtin_neon_vcvth_f16_u64:
1065 case NEON::BI__builtin_neon_vcvth_f16_s16:
1066 case NEON::BI__builtin_neon_vcvth_f16_s32:
1067 case NEON::BI__builtin_neon_vcvth_f16_s64:
1068 case NEON::BI__builtin_neon_vcvtah_u16_f16:
1069 case NEON::BI__builtin_neon_vcvtmh_u16_f16:
1070 case NEON::BI__builtin_neon_vcvtnh_u16_f16:
1071 case NEON::BI__builtin_neon_vcvtph_u16_f16:
1072 case NEON::BI__builtin_neon_vcvth_u16_f16:
1073 case NEON::BI__builtin_neon_vcvtah_s16_f16:
1074 case NEON::BI__builtin_neon_vcvtmh_s16_f16:
1075 case NEON::BI__builtin_neon_vcvtnh_s16_f16:
1076 case NEON::BI__builtin_neon_vcvtph_s16_f16:
1077 case NEON::BI__builtin_neon_vcvth_s16_f16:
1078 case NEON::BI__builtin_neon_vcaleh_f16:
1079 case NEON::BI__builtin_neon_vcalth_f16:
1080 case NEON::BI__builtin_neon_vcageh_f16:
1081 case NEON::BI__builtin_neon_vcagth_f16:
1082 case NEON::BI__builtin_neon_vcvth_n_s16_f16:
1083 case NEON::BI__builtin_neon_vcvth_n_u16_f16:
1084 case NEON::BI__builtin_neon_vcvth_n_f16_s16:
1085 case NEON::BI__builtin_neon_vcvth_n_f16_u16:
1086 case NEON::BI__builtin_neon_vpaddd_s64:
1087 case NEON::BI__builtin_neon_vpaddd_f64:
1088 case NEON::BI__builtin_neon_vpadds_f32:
1089 case NEON::BI__builtin_neon_vceqzd_s64:
1090 case NEON::BI__builtin_neon_vceqzd_f64:
1091 case NEON::BI__builtin_neon_vceqzs_f32:
1092 case NEON::BI__builtin_neon_vceqzh_f16:
1093 case NEON::BI__builtin_neon_vcgezd_s64:
1094 case NEON::BI__builtin_neon_vcgezd_f64:
1095 case NEON::BI__builtin_neon_vcgezs_f32:
1096 case NEON::BI__builtin_neon_vcgezh_f16:
1097 case NEON::BI__builtin_neon_vclezd_s64:
1098 case NEON::BI__builtin_neon_vclezd_f64:
1099 case NEON::BI__builtin_neon_vclezs_f32:
1100 case NEON::BI__builtin_neon_vclezh_f16:
1101 case NEON::BI__builtin_neon_vcgtzd_s64:
1102 case NEON::BI__builtin_neon_vcgtzd_f64:
1103 case NEON::BI__builtin_neon_vcgtzs_f32:
1104 case NEON::BI__builtin_neon_vcgtzh_f16:
1105 case NEON::BI__builtin_neon_vcltzd_s64:
1106 case NEON::BI__builtin_neon_vcltzd_f64:
1107 case NEON::BI__builtin_neon_vcltzs_f32:
1108 case NEON::BI__builtin_neon_vcltzh_f16:
1109 case NEON::BI__builtin_neon_vceqzd_u64:
1110 case NEON::BI__builtin_neon_vceqd_f64:
1111 case NEON::BI__builtin_neon_vcled_f64:
1112 case NEON::BI__builtin_neon_vcltd_f64:
1113 case NEON::BI__builtin_neon_vcged_f64:
1114 case NEON::BI__builtin_neon_vcgtd_f64:
1115 case NEON::BI__builtin_neon_vceqs_f32:
1116 case NEON::BI__builtin_neon_vcles_f32:
1117 case NEON::BI__builtin_neon_vclts_f32:
1118 case NEON::BI__builtin_neon_vcges_f32:
1119 case NEON::BI__builtin_neon_vcgts_f32:
1120 case NEON::BI__builtin_neon_vceqh_f16:
1121 case NEON::BI__builtin_neon_vcleh_f16:
1122 case NEON::BI__builtin_neon_vclth_f16:
1123 case NEON::BI__builtin_neon_vcgeh_f16:
1124 case NEON::BI__builtin_neon_vcgth_f16:
1125 case NEON::BI__builtin_neon_vceqd_s64:
1126 case NEON::BI__builtin_neon_vceqd_u64:
1127 case NEON::BI__builtin_neon_vcgtd_s64:
1128 case NEON::BI__builtin_neon_vcgtd_u64:
1129 case NEON::BI__builtin_neon_vcltd_s64:
1130 case NEON::BI__builtin_neon_vcltd_u64:
1131 case NEON::BI__builtin_neon_vcged_u64:
1132 case NEON::BI__builtin_neon_vcged_s64:
1133 case NEON::BI__builtin_neon_vcled_u64:
1134 case NEON::BI__builtin_neon_vcled_s64:
1135 case NEON::BI__builtin_neon_vtstd_s64:
1136 case NEON::BI__builtin_neon_vtstd_u64:
1137 case NEON::BI__builtin_neon_vset_lane_i8:
1138 case NEON::BI__builtin_neon_vset_lane_i16:
1139 case NEON::BI__builtin_neon_vset_lane_i32:
1140 case NEON::BI__builtin_neon_vset_lane_i64:
1141 case NEON::BI__builtin_neon_vset_lane_bf16:
1142 case NEON::BI__builtin_neon_vset_lane_f32:
1143 case NEON::BI__builtin_neon_vsetq_lane_i8:
1144 case NEON::BI__builtin_neon_vsetq_lane_i16:
1145 case NEON::BI__builtin_neon_vsetq_lane_i32:
1146 case NEON::BI__builtin_neon_vsetq_lane_i64:
1147 case NEON::BI__builtin_neon_vsetq_lane_bf16:
1148 case NEON::BI__builtin_neon_vsetq_lane_f32:
1149 case NEON::BI__builtin_neon_vset_lane_f64:
1150 case NEON::BI__builtin_neon_vset_lane_mf8:
1151 case NEON::BI__builtin_neon_vsetq_lane_mf8:
1152 case NEON::BI__builtin_neon_vsetq_lane_f64:
1153 case NEON::BI__builtin_neon_vget_lane_i8:
1154 case NEON::BI__builtin_neon_vdupb_lane_i8:
1155 case NEON::BI__builtin_neon_vgetq_lane_i8:
1156 case NEON::BI__builtin_neon_vdupb_laneq_i8:
1157 case NEON::BI__builtin_neon_vget_lane_mf8:
1158 case NEON::BI__builtin_neon_vdupb_lane_mf8:
1159 case NEON::BI__builtin_neon_vgetq_lane_mf8:
1160 case NEON::BI__builtin_neon_vdupb_laneq_mf8:
1161 case NEON::BI__builtin_neon_vget_lane_i16:
1162 case NEON::BI__builtin_neon_vduph_lane_i16:
1163 case NEON::BI__builtin_neon_vgetq_lane_i16:
1164 case NEON::BI__builtin_neon_vduph_laneq_i16:
1165 case NEON::BI__builtin_neon_vget_lane_i32:
1166 case NEON::BI__builtin_neon_vdups_lane_i32:
1167 case NEON::BI__builtin_neon_vdups_lane_f32:
1168 case NEON::BI__builtin_neon_vgetq_lane_i32:
1169 case NEON::BI__builtin_neon_vdups_laneq_i32:
1170 case NEON::BI__builtin_neon_vget_lane_i64:
1171 case NEON::BI__builtin_neon_vdupd_lane_i64:
1172 case NEON::BI__builtin_neon_vdupd_lane_f64:
1173 case NEON::BI__builtin_neon_vgetq_lane_i64:
1174 case NEON::BI__builtin_neon_vdupd_laneq_i64:
1175 case NEON::BI__builtin_neon_vget_lane_f32:
1176 case NEON::BI__builtin_neon_vget_lane_f64:
1177 case NEON::BI__builtin_neon_vgetq_lane_f32:
1178 case NEON::BI__builtin_neon_vdups_laneq_f32:
1179 case NEON::BI__builtin_neon_vgetq_lane_f64:
1180 case NEON::BI__builtin_neon_vdupd_laneq_f64:
1181 case NEON::BI__builtin_neon_vaddh_f16:
1182 case NEON::BI__builtin_neon_vsubh_f16:
1183 case NEON::BI__builtin_neon_vmulh_f16:
1184 case NEON::BI__builtin_neon_vdivh_f16:
1185 case NEON::BI__builtin_neon_vfmah_f16:
1186 case NEON::BI__builtin_neon_vfmsh_f16:
1187 case NEON::BI__builtin_neon_vaddd_s64:
1188 case NEON::BI__builtin_neon_vaddd_u64:
1189 case NEON::BI__builtin_neon_vsubd_s64:
1190 case NEON::BI__builtin_neon_vsubd_u64:
1191 case NEON::BI__builtin_neon_vqdmlalh_s16:
1192 case NEON::BI__builtin_neon_vqdmlslh_s16:
1193 case NEON::BI__builtin_neon_vqshlud_n_s64:
1194 case NEON::BI__builtin_neon_vqshld_n_u64:
1195 case NEON::BI__builtin_neon_vqshld_n_s64:
1196 case NEON::BI__builtin_neon_vrshrd_n_u64:
1197 case NEON::BI__builtin_neon_vrshrd_n_s64:
1198 case NEON::BI__builtin_neon_vrsrad_n_u64:
1199 case NEON::BI__builtin_neon_vrsrad_n_s64:
1200 case NEON::BI__builtin_neon_vshld_n_s64:
1201 case NEON::BI__builtin_neon_vshld_n_u64:
1202 case NEON::BI__builtin_neon_vshrd_n_s64:
1203 case NEON::BI__builtin_neon_vshrd_n_u64:
1204 case NEON::BI__builtin_neon_vsrad_n_s64:
1205 case NEON::BI__builtin_neon_vsrad_n_u64:
1206 case NEON::BI__builtin_neon_vqdmlalh_lane_s16:
1207 case NEON::BI__builtin_neon_vqdmlalh_laneq_s16:
1208 case NEON::BI__builtin_neon_vqdmlslh_lane_s16:
1209 case NEON::BI__builtin_neon_vqdmlslh_laneq_s16:
1210 case NEON::BI__builtin_neon_vqdmlals_s32:
1211 case NEON::BI__builtin_neon_vqdmlsls_s32:
1212 case NEON::BI__builtin_neon_vqdmlals_lane_s32:
1213 case NEON::BI__builtin_neon_vqdmlals_laneq_s32:
1214 case NEON::BI__builtin_neon_vqdmlsls_lane_s32:
1215 case NEON::BI__builtin_neon_vqdmlsls_laneq_s32:
1216 case NEON::BI__builtin_neon_vget_lane_bf16:
1217 case NEON::BI__builtin_neon_vduph_lane_bf16:
1218 case NEON::BI__builtin_neon_vduph_lane_f16:
1219 case NEON::BI__builtin_neon_vgetq_lane_bf16:
1220 case NEON::BI__builtin_neon_vduph_laneq_bf16:
1221 case NEON::BI__builtin_neon_vduph_laneq_f16:
1222 case NEON::BI__builtin_neon_vcvt_bf16_f32:
1223 case NEON::BI__builtin_neon_vcvtq_low_bf16_f32:
1224 case NEON::BI__builtin_neon_vcvtq_high_bf16_f32:
1225 case clang::AArch64::BI_InterlockedAdd:
1226 case clang::AArch64::BI_InterlockedAdd_acq:
1227 case clang::AArch64::BI_InterlockedAdd_rel:
1228 case clang::AArch64::BI_InterlockedAdd_nf:
1229 case clang::AArch64::BI_InterlockedAdd64:
1230 case clang::AArch64::BI_InterlockedAdd64_acq:
1231 case clang::AArch64::BI_InterlockedAdd64_rel:
1232 case clang::AArch64::BI_InterlockedAdd64_nf:
1233 cgm.errorNYI(
expr->getSourceRange(),
1234 std::string(
"unimplemented AArch64 builtin call: ") +
1235 getContext().BuiltinInfo.getName(builtinID));
1236 return mlir::Value{};
1245 switch (builtinID) {
1247 return std::nullopt;
1248 case NEON::BI__builtin_neon_vbsl_v:
1249 case NEON::BI__builtin_neon_vbslq_v:
1250 case NEON::BI__builtin_neon_vfma_lane_v:
1251 case NEON::BI__builtin_neon_vfmaq_lane_v:
1252 case NEON::BI__builtin_neon_vfma_laneq_v:
1253 case NEON::BI__builtin_neon_vfmaq_laneq_v:
1254 case NEON::BI__builtin_neon_vfmah_lane_f16:
1255 case NEON::BI__builtin_neon_vfmas_lane_f32:
1256 case NEON::BI__builtin_neon_vfmah_laneq_f16:
1257 case NEON::BI__builtin_neon_vfmas_laneq_f32:
1258 case NEON::BI__builtin_neon_vfmad_lane_f64:
1259 case NEON::BI__builtin_neon_vfmad_laneq_f64:
1260 case NEON::BI__builtin_neon_vmull_v:
1261 case NEON::BI__builtin_neon_vmax_v:
1262 case NEON::BI__builtin_neon_vmaxq_v:
1263 case NEON::BI__builtin_neon_vmaxh_f16:
1264 case NEON::BI__builtin_neon_vmin_v:
1265 case NEON::BI__builtin_neon_vminq_v:
1266 case NEON::BI__builtin_neon_vminh_f16:
1267 case NEON::BI__builtin_neon_vabd_v:
1268 case NEON::BI__builtin_neon_vabdq_v:
1269 case NEON::BI__builtin_neon_vpadal_v:
1270 case NEON::BI__builtin_neon_vpadalq_v:
1271 case NEON::BI__builtin_neon_vpmin_v:
1272 case NEON::BI__builtin_neon_vpminq_v:
1273 case NEON::BI__builtin_neon_vpmax_v:
1274 case NEON::BI__builtin_neon_vpmaxq_v:
1275 case NEON::BI__builtin_neon_vminnm_v:
1276 case NEON::BI__builtin_neon_vminnmq_v:
1277 case NEON::BI__builtin_neon_vminnmh_f16:
1278 case NEON::BI__builtin_neon_vmaxnm_v:
1279 case NEON::BI__builtin_neon_vmaxnmq_v:
1280 case NEON::BI__builtin_neon_vmaxnmh_f16:
1281 case NEON::BI__builtin_neon_vrecpss_f32:
1282 case NEON::BI__builtin_neon_vrecpsd_f64:
1283 case NEON::BI__builtin_neon_vrecpsh_f16:
1284 case NEON::BI__builtin_neon_vqshrun_n_v:
1285 case NEON::BI__builtin_neon_vqrshrun_n_v:
1286 case NEON::BI__builtin_neon_vqshrn_n_v:
1287 case NEON::BI__builtin_neon_vrshrn_n_v:
1288 case NEON::BI__builtin_neon_vqrshrn_n_v:
1289 case NEON::BI__builtin_neon_vrndah_f16:
1290 case NEON::BI__builtin_neon_vrnda_v:
1291 case NEON::BI__builtin_neon_vrndaq_v:
1292 case NEON::BI__builtin_neon_vrndih_f16:
1293 case NEON::BI__builtin_neon_vrndmh_f16:
1294 case NEON::BI__builtin_neon_vrndm_v:
1295 case NEON::BI__builtin_neon_vrndmq_v:
1296 case NEON::BI__builtin_neon_vrndnh_f16:
1297 case NEON::BI__builtin_neon_vrndn_v:
1298 case NEON::BI__builtin_neon_vrndnq_v:
1299 case NEON::BI__builtin_neon_vrndns_f32:
1300 case NEON::BI__builtin_neon_vrndph_f16:
1301 case NEON::BI__builtin_neon_vrndp_v:
1302 case NEON::BI__builtin_neon_vrndpq_v:
1303 case NEON::BI__builtin_neon_vrndxh_f16:
1304 case NEON::BI__builtin_neon_vrndx_v:
1305 case NEON::BI__builtin_neon_vrndxq_v:
1306 case NEON::BI__builtin_neon_vrndh_f16:
1307 case NEON::BI__builtin_neon_vrnd32x_f32:
1308 case NEON::BI__builtin_neon_vrnd32xq_f32:
1309 case NEON::BI__builtin_neon_vrnd32x_f64:
1310 case NEON::BI__builtin_neon_vrnd32xq_f64:
1311 case NEON::BI__builtin_neon_vrnd32z_f32:
1312 case NEON::BI__builtin_neon_vrnd32zq_f32:
1313 case NEON::BI__builtin_neon_vrnd32z_f64:
1314 case NEON::BI__builtin_neon_vrnd32zq_f64:
1315 case NEON::BI__builtin_neon_vrnd64x_f32:
1316 case NEON::BI__builtin_neon_vrnd64xq_f32:
1317 case NEON::BI__builtin_neon_vrnd64x_f64:
1318 case NEON::BI__builtin_neon_vrnd64xq_f64:
1319 case NEON::BI__builtin_neon_vrnd64z_f32:
1320 case NEON::BI__builtin_neon_vrnd64zq_f32:
1321 case NEON::BI__builtin_neon_vrnd64z_f64:
1322 case NEON::BI__builtin_neon_vrnd64zq_f64:
1323 case NEON::BI__builtin_neon_vrnd_v:
1324 case NEON::BI__builtin_neon_vrndq_v:
1325 case NEON::BI__builtin_neon_vcvt_f64_v:
1326 case NEON::BI__builtin_neon_vcvtq_f64_v:
1327 case NEON::BI__builtin_neon_vcvt_f64_f32:
1328 case NEON::BI__builtin_neon_vcvt_f32_f64:
1329 case NEON::BI__builtin_neon_vcvt_s32_v:
1330 case NEON::BI__builtin_neon_vcvt_u32_v:
1331 case NEON::BI__builtin_neon_vcvt_s64_v:
1332 case NEON::BI__builtin_neon_vcvt_u64_v:
1333 case NEON::BI__builtin_neon_vcvt_s16_f16:
1334 case NEON::BI__builtin_neon_vcvt_u16_f16:
1335 case NEON::BI__builtin_neon_vcvtq_s32_v:
1336 case NEON::BI__builtin_neon_vcvtq_u32_v:
1337 case NEON::BI__builtin_neon_vcvtq_s64_v:
1338 case NEON::BI__builtin_neon_vcvtq_u64_v:
1339 case NEON::BI__builtin_neon_vcvtq_s16_f16:
1340 case NEON::BI__builtin_neon_vcvtq_u16_f16:
1341 case NEON::BI__builtin_neon_vcvta_s16_f16:
1342 case NEON::BI__builtin_neon_vcvta_u16_f16:
1343 case NEON::BI__builtin_neon_vcvta_s32_v:
1344 case NEON::BI__builtin_neon_vcvtaq_s16_f16:
1345 case NEON::BI__builtin_neon_vcvtaq_s32_v:
1346 case NEON::BI__builtin_neon_vcvta_u32_v:
1347 case NEON::BI__builtin_neon_vcvtaq_u16_f16:
1348 case NEON::BI__builtin_neon_vcvtaq_u32_v:
1349 case NEON::BI__builtin_neon_vcvta_s64_v:
1350 case NEON::BI__builtin_neon_vcvtaq_s64_v:
1351 case NEON::BI__builtin_neon_vcvta_u64_v:
1352 case NEON::BI__builtin_neon_vcvtaq_u64_v:
1353 case NEON::BI__builtin_neon_vcvtm_s16_f16:
1354 case NEON::BI__builtin_neon_vcvtm_s32_v:
1355 case NEON::BI__builtin_neon_vcvtmq_s16_f16:
1356 case NEON::BI__builtin_neon_vcvtmq_s32_v:
1357 case NEON::BI__builtin_neon_vcvtm_u16_f16:
1358 case NEON::BI__builtin_neon_vcvtm_u32_v:
1359 case NEON::BI__builtin_neon_vcvtmq_u16_f16:
1360 case NEON::BI__builtin_neon_vcvtmq_u32_v:
1361 case NEON::BI__builtin_neon_vcvtm_s64_v:
1362 case NEON::BI__builtin_neon_vcvtmq_s64_v:
1363 case NEON::BI__builtin_neon_vcvtm_u64_v:
1364 case NEON::BI__builtin_neon_vcvtmq_u64_v:
1365 case NEON::BI__builtin_neon_vcvtn_s16_f16:
1366 case NEON::BI__builtin_neon_vcvtn_s32_v:
1367 case NEON::BI__builtin_neon_vcvtnq_s16_f16:
1368 case NEON::BI__builtin_neon_vcvtnq_s32_v:
1369 case NEON::BI__builtin_neon_vcvtn_u16_f16:
1370 case NEON::BI__builtin_neon_vcvtn_u32_v:
1371 case NEON::BI__builtin_neon_vcvtnq_u16_f16:
1372 case NEON::BI__builtin_neon_vcvtnq_u32_v:
1373 case NEON::BI__builtin_neon_vcvtn_s64_v:
1374 case NEON::BI__builtin_neon_vcvtnq_s64_v:
1375 case NEON::BI__builtin_neon_vcvtn_u64_v:
1376 case NEON::BI__builtin_neon_vcvtnq_u64_v:
1377 case NEON::BI__builtin_neon_vcvtp_s16_f16:
1378 case NEON::BI__builtin_neon_vcvtp_s32_v:
1379 case NEON::BI__builtin_neon_vcvtpq_s16_f16:
1380 case NEON::BI__builtin_neon_vcvtpq_s32_v:
1381 case NEON::BI__builtin_neon_vcvtp_u16_f16:
1382 case NEON::BI__builtin_neon_vcvtp_u32_v:
1383 case NEON::BI__builtin_neon_vcvtpq_u16_f16:
1384 case NEON::BI__builtin_neon_vcvtpq_u32_v:
1385 case NEON::BI__builtin_neon_vcvtp_s64_v:
1386 case NEON::BI__builtin_neon_vcvtpq_s64_v:
1387 case NEON::BI__builtin_neon_vcvtp_u64_v:
1388 case NEON::BI__builtin_neon_vcvtpq_u64_v:
1389 case NEON::BI__builtin_neon_vmulx_v:
1390 case NEON::BI__builtin_neon_vmulxq_v:
1391 case NEON::BI__builtin_neon_vmulxh_lane_f16:
1392 case NEON::BI__builtin_neon_vmulxh_laneq_f16:
1393 case NEON::BI__builtin_neon_vmul_lane_v:
1394 case NEON::BI__builtin_neon_vmul_laneq_v:
1395 case NEON::BI__builtin_neon_vnegd_s64:
1396 case NEON::BI__builtin_neon_vnegh_f16:
1397 case NEON::BI__builtin_neon_vpmaxnm_v:
1398 case NEON::BI__builtin_neon_vpmaxnmq_v:
1399 case NEON::BI__builtin_neon_vpminnm_v:
1400 case NEON::BI__builtin_neon_vpminnmq_v:
1401 case NEON::BI__builtin_neon_vsqrth_f16:
1402 case NEON::BI__builtin_neon_vsqrt_v:
1403 case NEON::BI__builtin_neon_vsqrtq_v:
1404 case NEON::BI__builtin_neon_vrbit_v:
1405 case NEON::BI__builtin_neon_vrbitq_v:
1406 case NEON::BI__builtin_neon_vmaxv_f16:
1407 case NEON::BI__builtin_neon_vmaxvq_f16:
1408 case NEON::BI__builtin_neon_vminv_f16:
1409 case NEON::BI__builtin_neon_vminvq_f16:
1410 case NEON::BI__builtin_neon_vmaxnmv_f16:
1411 case NEON::BI__builtin_neon_vmaxnmvq_f16:
1412 case NEON::BI__builtin_neon_vminnmv_f16:
1413 case NEON::BI__builtin_neon_vminnmvq_f16:
1414 case NEON::BI__builtin_neon_vmul_n_f64:
1415 case NEON::BI__builtin_neon_vaddlv_u8:
1416 case NEON::BI__builtin_neon_vaddlv_u16:
1417 case NEON::BI__builtin_neon_vaddlvq_u8:
1418 case NEON::BI__builtin_neon_vaddlvq_u16:
1419 case NEON::BI__builtin_neon_vaddlv_s8:
1420 case NEON::BI__builtin_neon_vaddlv_s16:
1421 case NEON::BI__builtin_neon_vaddlvq_s8:
1422 case NEON::BI__builtin_neon_vaddlvq_s16:
1423 case NEON::BI__builtin_neon_vsri_n_v:
1424 case NEON::BI__builtin_neon_vsriq_n_v:
1425 case NEON::BI__builtin_neon_vsli_n_v:
1426 case NEON::BI__builtin_neon_vsliq_n_v:
1427 case NEON::BI__builtin_neon_vsra_n_v:
1428 case NEON::BI__builtin_neon_vsraq_n_v:
1429 case NEON::BI__builtin_neon_vrsra_n_v:
1430 case NEON::BI__builtin_neon_vrsraq_n_v:
1431 case NEON::BI__builtin_neon_vld1_v:
1432 case NEON::BI__builtin_neon_vld1q_v:
1433 case NEON::BI__builtin_neon_vst1_v:
1434 case NEON::BI__builtin_neon_vst1q_v:
1435 case NEON::BI__builtin_neon_vld1_lane_v:
1436 case NEON::BI__builtin_neon_vld1q_lane_v:
1437 case NEON::BI__builtin_neon_vldap1_lane_s64:
1438 case NEON::BI__builtin_neon_vldap1q_lane_s64:
1439 case NEON::BI__builtin_neon_vld1_dup_v:
1440 case NEON::BI__builtin_neon_vld1q_dup_v:
1441 case NEON::BI__builtin_neon_vst1_lane_v:
1442 case NEON::BI__builtin_neon_vst1q_lane_v:
1443 case NEON::BI__builtin_neon_vstl1_lane_s64:
1444 case NEON::BI__builtin_neon_vstl1q_lane_s64:
1445 case NEON::BI__builtin_neon_vld2_v:
1446 case NEON::BI__builtin_neon_vld2q_v:
1447 case NEON::BI__builtin_neon_vld3_v:
1448 case NEON::BI__builtin_neon_vld3q_v:
1449 case NEON::BI__builtin_neon_vld4_v:
1450 case NEON::BI__builtin_neon_vld4q_v:
1451 case NEON::BI__builtin_neon_vld2_dup_v:
1452 case NEON::BI__builtin_neon_vld2q_dup_v:
1453 case NEON::BI__builtin_neon_vld3_dup_v:
1454 case NEON::BI__builtin_neon_vld3q_dup_v:
1455 case NEON::BI__builtin_neon_vld4_dup_v:
1456 case NEON::BI__builtin_neon_vld4q_dup_v:
1457 case NEON::BI__builtin_neon_vld2_lane_v:
1458 case NEON::BI__builtin_neon_vld2q_lane_v:
1459 case NEON::BI__builtin_neon_vld3_lane_v:
1460 case NEON::BI__builtin_neon_vld3q_lane_v:
1461 case NEON::BI__builtin_neon_vld4_lane_v:
1462 case NEON::BI__builtin_neon_vld4q_lane_v:
1463 case NEON::BI__builtin_neon_vst2_v:
1464 case NEON::BI__builtin_neon_vst2q_v:
1465 case NEON::BI__builtin_neon_vst2_lane_v:
1466 case NEON::BI__builtin_neon_vst2q_lane_v:
1467 case NEON::BI__builtin_neon_vst3_v:
1468 case NEON::BI__builtin_neon_vst3q_v:
1469 case NEON::BI__builtin_neon_vst3_lane_v:
1470 case NEON::BI__builtin_neon_vst3q_lane_v:
1471 case NEON::BI__builtin_neon_vst4_v:
1472 case NEON::BI__builtin_neon_vst4q_v:
1473 case NEON::BI__builtin_neon_vst4_lane_v:
1474 case NEON::BI__builtin_neon_vst4q_lane_v:
1475 case NEON::BI__builtin_neon_vtrn_v:
1476 case NEON::BI__builtin_neon_vtrnq_v:
1477 case NEON::BI__builtin_neon_vuzp_v:
1478 case NEON::BI__builtin_neon_vuzpq_v:
1479 case NEON::BI__builtin_neon_vzip_v:
1480 case NEON::BI__builtin_neon_vzipq_v:
1481 case NEON::BI__builtin_neon_vqtbl1q_v:
1482 case NEON::BI__builtin_neon_vqtbl2q_v:
1483 case NEON::BI__builtin_neon_vqtbl3q_v:
1484 case NEON::BI__builtin_neon_vqtbl4q_v:
1485 case NEON::BI__builtin_neon_vqtbx1q_v:
1486 case NEON::BI__builtin_neon_vqtbx2q_v:
1487 case NEON::BI__builtin_neon_vqtbx3q_v:
1488 case NEON::BI__builtin_neon_vqtbx4q_v:
1489 case NEON::BI__builtin_neon_vsqadd_v:
1490 case NEON::BI__builtin_neon_vsqaddq_v:
1491 case NEON::BI__builtin_neon_vuqadd_v:
1492 case NEON::BI__builtin_neon_vuqaddq_v:
1493 case NEON::BI__builtin_neon_vluti2_laneq_mf8:
1494 case NEON::BI__builtin_neon_vluti2_laneq_bf16:
1495 case NEON::BI__builtin_neon_vluti2_laneq_f16:
1496 case NEON::BI__builtin_neon_vluti2_laneq_p16:
1497 case NEON::BI__builtin_neon_vluti2_laneq_p8:
1498 case NEON::BI__builtin_neon_vluti2_laneq_s16:
1499 case NEON::BI__builtin_neon_vluti2_laneq_s8:
1500 case NEON::BI__builtin_neon_vluti2_laneq_u16:
1501 case NEON::BI__builtin_neon_vluti2_laneq_u8:
1502 case NEON::BI__builtin_neon_vluti2q_laneq_mf8:
1503 case NEON::BI__builtin_neon_vluti2q_laneq_bf16:
1504 case NEON::BI__builtin_neon_vluti2q_laneq_f16:
1505 case NEON::BI__builtin_neon_vluti2q_laneq_p16:
1506 case NEON::BI__builtin_neon_vluti2q_laneq_p8:
1507 case NEON::BI__builtin_neon_vluti2q_laneq_s16:
1508 case NEON::BI__builtin_neon_vluti2q_laneq_s8:
1509 case NEON::BI__builtin_neon_vluti2q_laneq_u16:
1510 case NEON::BI__builtin_neon_vluti2q_laneq_u8:
1511 case NEON::BI__builtin_neon_vluti2_lane_mf8:
1512 case NEON::BI__builtin_neon_vluti2_lane_bf16:
1513 case NEON::BI__builtin_neon_vluti2_lane_f16:
1514 case NEON::BI__builtin_neon_vluti2_lane_p16:
1515 case NEON::BI__builtin_neon_vluti2_lane_p8:
1516 case NEON::BI__builtin_neon_vluti2_lane_s16:
1517 case NEON::BI__builtin_neon_vluti2_lane_s8:
1518 case NEON::BI__builtin_neon_vluti2_lane_u16:
1519 case NEON::BI__builtin_neon_vluti2_lane_u8:
1520 case NEON::BI__builtin_neon_vluti2q_lane_mf8:
1521 case NEON::BI__builtin_neon_vluti2q_lane_bf16:
1522 case NEON::BI__builtin_neon_vluti2q_lane_f16:
1523 case NEON::BI__builtin_neon_vluti2q_lane_p16:
1524 case NEON::BI__builtin_neon_vluti2q_lane_p8:
1525 case NEON::BI__builtin_neon_vluti2q_lane_s16:
1526 case NEON::BI__builtin_neon_vluti2q_lane_s8:
1527 case NEON::BI__builtin_neon_vluti2q_lane_u16:
1528 case NEON::BI__builtin_neon_vluti2q_lane_u8:
1529 case NEON::BI__builtin_neon_vluti4q_lane_mf8:
1530 case NEON::BI__builtin_neon_vluti4q_lane_p8:
1531 case NEON::BI__builtin_neon_vluti4q_lane_s8:
1532 case NEON::BI__builtin_neon_vluti4q_lane_u8:
1533 case NEON::BI__builtin_neon_vluti4q_laneq_mf8:
1534 case NEON::BI__builtin_neon_vluti4q_laneq_p8:
1535 case NEON::BI__builtin_neon_vluti4q_laneq_s8:
1536 case NEON::BI__builtin_neon_vluti4q_laneq_u8:
1537 case NEON::BI__builtin_neon_vluti4q_lane_bf16_x2:
1538 case NEON::BI__builtin_neon_vluti4q_lane_f16_x2:
1539 case NEON::BI__builtin_neon_vluti4q_lane_p16_x2:
1540 case NEON::BI__builtin_neon_vluti4q_lane_s16_x2:
1541 case NEON::BI__builtin_neon_vluti4q_lane_u16_x2:
1542 case NEON::BI__builtin_neon_vluti4q_laneq_bf16_x2:
1543 case NEON::BI__builtin_neon_vluti4q_laneq_f16_x2:
1544 case NEON::BI__builtin_neon_vluti4q_laneq_p16_x2:
1545 case NEON::BI__builtin_neon_vluti4q_laneq_s16_x2:
1546 case NEON::BI__builtin_neon_vluti4q_laneq_u16_x2:
1547 case NEON::BI__builtin_neon_vmmlaq_f16_mf8_fpm:
1548 case NEON::BI__builtin_neon_vmmlaq_f32_mf8_fpm:
1549 case NEON::BI__builtin_neon_vcvt1_low_bf16_mf8_fpm:
1550 case NEON::BI__builtin_neon_vcvt1_bf16_mf8_fpm:
1551 case NEON::BI__builtin_neon_vcvt1_high_bf16_mf8_fpm:
1552 case NEON::BI__builtin_neon_vcvt2_low_bf16_mf8_fpm:
1553 case NEON::BI__builtin_neon_vcvt2_bf16_mf8_fpm:
1554 case NEON::BI__builtin_neon_vcvt2_high_bf16_mf8_fpm:
1555 case NEON::BI__builtin_neon_vcvt1_low_f16_mf8_fpm:
1556 case NEON::BI__builtin_neon_vcvt1_f16_mf8_fpm:
1557 case NEON::BI__builtin_neon_vcvt1_high_f16_mf8_fpm:
1558 case NEON::BI__builtin_neon_vcvt2_low_f16_mf8_fpm:
1559 case NEON::BI__builtin_neon_vcvt2_f16_mf8_fpm:
1560 case NEON::BI__builtin_neon_vcvt2_high_f16_mf8_fpm:
1561 case NEON::BI__builtin_neon_vcvt_mf8_f32_fpm:
1562 case NEON::BI__builtin_neon_vcvt_mf8_f16_fpm:
1563 case NEON::BI__builtin_neon_vcvtq_mf8_f16_fpm:
1564 case NEON::BI__builtin_neon_vcvt_high_mf8_f32_fpm:
1565 case NEON::BI__builtin_neon_vdot_f16_mf8_fpm:
1566 case NEON::BI__builtin_neon_vdotq_f16_mf8_fpm:
1567 case NEON::BI__builtin_neon_vdot_lane_f16_mf8_fpm:
1568 case NEON::BI__builtin_neon_vdotq_lane_f16_mf8_fpm:
1569 case NEON::BI__builtin_neon_vdot_laneq_f16_mf8_fpm:
1570 case NEON::BI__builtin_neon_vdotq_laneq_f16_mf8_fpm:
1571 case NEON::BI__builtin_neon_vdot_f32_mf8_fpm:
1572 case NEON::BI__builtin_neon_vdotq_f32_mf8_fpm:
1573 case NEON::BI__builtin_neon_vdot_lane_f32_mf8_fpm:
1574 case NEON::BI__builtin_neon_vdotq_lane_f32_mf8_fpm:
1575 case NEON::BI__builtin_neon_vdot_laneq_f32_mf8_fpm:
1576 case NEON::BI__builtin_neon_vdotq_laneq_f32_mf8_fpm:
1577 case NEON::BI__builtin_neon_vmlalbq_f16_mf8_fpm:
1578 case NEON::BI__builtin_neon_vmlaltq_f16_mf8_fpm:
1579 case NEON::BI__builtin_neon_vmlallbbq_f32_mf8_fpm:
1580 case NEON::BI__builtin_neon_vmlallbtq_f32_mf8_fpm:
1581 case NEON::BI__builtin_neon_vmlalltbq_f32_mf8_fpm:
1582 case NEON::BI__builtin_neon_vmlallttq_f32_mf8_fpm:
1583 case NEON::BI__builtin_neon_vmlalbq_lane_f16_mf8_fpm:
1584 case NEON::BI__builtin_neon_vmlalbq_laneq_f16_mf8_fpm:
1585 case NEON::BI__builtin_neon_vmlaltq_lane_f16_mf8_fpm:
1586 case NEON::BI__builtin_neon_vmlaltq_laneq_f16_mf8_fpm:
1587 case NEON::BI__builtin_neon_vmlallbbq_lane_f32_mf8_fpm:
1588 case NEON::BI__builtin_neon_vmlallbbq_laneq_f32_mf8_fpm:
1589 case NEON::BI__builtin_neon_vmlallbtq_lane_f32_mf8_fpm:
1590 case NEON::BI__builtin_neon_vmlallbtq_laneq_f32_mf8_fpm:
1591 case NEON::BI__builtin_neon_vmlalltbq_lane_f32_mf8_fpm:
1592 case NEON::BI__builtin_neon_vmlalltbq_laneq_f32_mf8_fpm:
1593 case NEON::BI__builtin_neon_vmlallttq_lane_f32_mf8_fpm:
1594 case NEON::BI__builtin_neon_vmlallttq_laneq_f32_mf8_fpm:
1595 case NEON::BI__builtin_neon_vamin_f16:
1596 case NEON::BI__builtin_neon_vaminq_f16:
1597 case NEON::BI__builtin_neon_vamin_f32:
1598 case NEON::BI__builtin_neon_vaminq_f32:
1599 case NEON::BI__builtin_neon_vaminq_f64:
1600 case NEON::BI__builtin_neon_vamax_f16:
1601 case NEON::BI__builtin_neon_vamaxq_f16:
1602 case NEON::BI__builtin_neon_vamax_f32:
1603 case NEON::BI__builtin_neon_vamaxq_f32:
1604 case NEON::BI__builtin_neon_vamaxq_f64:
1605 case NEON::BI__builtin_neon_vscale_f16:
1606 case NEON::BI__builtin_neon_vscaleq_f16:
1607 case NEON::BI__builtin_neon_vscale_f32:
1608 case NEON::BI__builtin_neon_vscaleq_f32:
1609 case NEON::BI__builtin_neon_vscaleq_f64:
1610 cgm.errorNYI(
expr->getSourceRange(),
1611 std::string(
"unimplemented AArch64 builtin call: ") +
1612 getContext().BuiltinInfo.getName(builtinID));
1613 return mlir::Value{};