authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-19 23:20:33+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-20 02:55:15+02:00
logdff54eecb0b4a49ebbbf4d90a8196c90631b853f
treea1b5da590df527c9aced247791330a28f83c32d6
parentcfec358de1bac861a962731444168a2863e970c9
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

update_cpu_features: omit optional features on some ARM models by default

ARM insist on having these enabled in LLVM's CPU model definitions by default despite them not actually being required, so we have to do this.

2 files changed, 88 insertions(+), 69 deletions(-)

lib/std/Target/arm.zig+2-17
......@@ -2285,12 +2285,10 @@ pub const cpu = struct {
22852285 .name = "cortex_m52",
22862286 .llvm_name = "cortex-m52",
22872287 .features = featureSet(&[_]Feature{
2288 .fp_armv8d16,
2288 .dsp,
22892289 .loop_align,
22902290 .mve1beat,
2291 .mve_fp,
22922291 .no_branch_predictor,
2293 .pacbti,
22942292 .slowfpvmlx,
22952293 .use_misched,
22962294 .v8_1m_main,
......@@ -2364,16 +2362,13 @@ pub const cpu = struct {
23642362 .slowfpvfmx,
23652363 .slowfpvmlx,
23662364 .v7r,
2367 .vfp3d16,
23682365 }),
23692366 };
23702367 pub const cortex_r52: CpuModel = .{
23712368 .name = "cortex_r52",
23722369 .llvm_name = "cortex-r52",
23732370 .features = featureSet(&[_]Feature{
2374 .fp_armv8,
23752371 .fpao,
2376 .neon,
23772372 .use_misched,
23782373 .v8r,
23792374 }),
......@@ -2382,9 +2377,7 @@ pub const cpu = struct {
23822377 .name = "cortex_r52plus",
23832378 .llvm_name = "cortex-r52plus",
23842379 .features = featureSet(&[_]Feature{
2385 .fp_armv8,
23862380 .fpao,
2387 .neon,
23882381 .use_misched,
23892382 .v8r,
23902383 }),
......@@ -2394,7 +2387,6 @@ pub const cpu = struct {
23942387 .llvm_name = "cortex-r7",
23952388 .features = featureSet(&[_]Feature{
23962389 .avoid_partial_cpsr,
2397 .fp16,
23982390 .hwdiv_arm,
23992391 .mp,
24002392 .ret_addr_stack,
......@@ -2402,7 +2394,6 @@ pub const cpu = struct {
24022394 .slowfpvfmx,
24032395 .slowfpvmlx,
24042396 .v7r,
2405 .vfp3d16,
24062397 }),
24072398 };
24082399 pub const cortex_r8: CpuModel = .{
......@@ -2410,7 +2401,6 @@ pub const cpu = struct {
24102401 .llvm_name = "cortex-r8",
24112402 .features = featureSet(&[_]Feature{
24122403 .avoid_partial_cpsr,
2413 .fp16,
24142404 .hwdiv_arm,
24152405 .mp,
24162406 .ret_addr_stack,
......@@ -2418,7 +2408,6 @@ pub const cpu = struct {
24182408 .slowfpvfmx,
24192409 .slowfpvmlx,
24202410 .v7r,
2421 .vfp3d16,
24222411 }),
24232412 };
24242413 pub const cortex_x1: CpuModel = .{
......@@ -2666,9 +2655,7 @@ pub const cpu = struct {
26662655 .llvm_name = "star-mc1",
26672656 .features = featureSet(&[_]Feature{
26682657 .avoid_muls,
2669 .dsp,
26702658 .fix_cmse_cve_2021_35465,
2671 .fp_armv8d16sp,
26722659 .loop_align,
26732660 .no_branch_predictor,
26742661 .slowfpvfmx,
......@@ -2681,12 +2668,10 @@ pub const cpu = struct {
26812668 .name = "star_mc3",
26822669 .llvm_name = "star-mc3",
26832670 .features = featureSet(&[_]Feature{
2684 .fp_armv8d16,
2671 .dsp,
26852672 .loop_align,
26862673 .mve1beat,
2687 .mve_fp,
26882674 .no_branch_predictor,
2689 .pacbti,
26902675 .slowfpvmlx,
26912676 .use_misched,
26922677 .v8_1m_main,
tools/update_cpu_features.zig+86-52
......@@ -614,87 +614,87 @@ const targets = [_]ArchTarget{
614614 .branch_quota = 10000,
615615 .feature_overrides = &.{
616616 .{
617 .llvm_name = "exynos",
617 .llvm_name = "a5",
618618 .flatten = true,
619619 },
620620 .{
621 .llvm_name = "cortex-a78",
621 .llvm_name = "a7",
622622 .flatten = true,
623623 },
624624 .{
625 .llvm_name = "cortex-a78ae",
625 .llvm_name = "a8",
626626 .flatten = true,
627627 },
628628 .{
629 .llvm_name = "cortex-a710",
629 .llvm_name = "a9",
630630 .flatten = true,
631631 },
632632 .{
633 .llvm_name = "cortex-m4",
634 .omit_deps = &.{"vfp4d16sp"},
633 .llvm_name = "a12",
634 .flatten = true,
635635 },
636636 .{
637 .llvm_name = "cortex-m7",
638 .omit_deps = &.{"fp_armv8d16"},
637 .llvm_name = "a15",
638 .flatten = true,
639639 },
640640 .{
641 .llvm_name = "cortex-m33",
642 .omit_deps = &.{ "fp_armv8d16sp", "dsp" },
641 .llvm_name = "a17",
642 .flatten = true,
643643 },
644644 .{
645 .llvm_name = "cortex-m35p",
646 .omit_deps = &.{ "fp_armv8d16sp", "dsp" },
645 .llvm_name = "a32",
646 .flatten = true,
647647 },
648648 .{
649 .llvm_name = "cortex-m55",
650 .omit_deps = &.{ "mve_fp", "fp_armv8d16" },
649 .llvm_name = "a35",
650 .flatten = true,
651651 },
652652 .{
653 .llvm_name = "cortex-m85",
654 .omit_deps = &.{ "mve_fp", "pacbti", "fp_armv8d16" },
653 .llvm_name = "a53",
654 .flatten = true,
655655 },
656656 .{
657 .llvm_name = "cortex-x1c",
657 .llvm_name = "a55",
658658 .flatten = true,
659659 },
660660 .{
661 .llvm_name = "r4",
661 .llvm_name = "a57",
662662 .flatten = true,
663663 },
664664 .{
665 .llvm_name = "r52plus",
665 .llvm_name = "a72",
666666 .flatten = true,
667667 },
668668 .{
669 .llvm_name = "r5",
669 .llvm_name = "a73",
670670 .flatten = true,
671671 },
672672 .{
673 .llvm_name = "r52",
673 .llvm_name = "a75",
674674 .flatten = true,
675675 },
676676 .{
677 .llvm_name = "r7",
677 .llvm_name = "a76",
678678 .flatten = true,
679679 },
680680 .{
681 .llvm_name = "m3",
681 .llvm_name = "a77",
682682 .flatten = true,
683683 },
684684 .{
685 .llvm_name = "m7",
685 .llvm_name = "a78c",
686686 .flatten = true,
687687 },
688688 .{
689 .llvm_name = "krait",
689 .llvm_name = "cortex-a78",
690690 .flatten = true,
691691 },
692692 .{
693 .llvm_name = "kryo",
693 .llvm_name = "cortex-a78ae",
694694 .flatten = true,
695695 },
696696 .{
697 .llvm_name = "swift",
697 .llvm_name = "cortex-a710",
698698 .flatten = true,
699699 },
700700 .{
......@@ -702,81 +702,115 @@ const targets = [_]ArchTarget{
702702 .flatten = true,
703703 },
704704 .{
705 .llvm_name = "neoverse-v1",
705 .llvm_name = "cortex-x1c",
706706 .flatten = true,
707707 },
708708 .{
709 .llvm_name = "a5",
709 .llvm_name = "exynos",
710710 .flatten = true,
711711 },
712712 .{
713 .llvm_name = "a7",
713 .llvm_name = "krait",
714714 .flatten = true,
715715 },
716716 .{
717 .llvm_name = "a8",
717 .llvm_name = "kryo",
718718 .flatten = true,
719719 },
720720 .{
721 .llvm_name = "a9",
721 .llvm_name = "m3",
722722 .flatten = true,
723723 },
724724 .{
725 .llvm_name = "a12",
725 .llvm_name = "m7",
726726 .flatten = true,
727727 },
728728 .{
729 .llvm_name = "a15",
729 .llvm_name = "neoverse-v1",
730730 .flatten = true,
731731 },
732732 .{
733 .llvm_name = "a17",
733 .llvm_name = "r4",
734734 .flatten = true,
735735 },
736736 .{
737 .llvm_name = "a32",
737 .llvm_name = "r5",
738738 .flatten = true,
739739 },
740740 .{
741 .llvm_name = "a35",
741 .llvm_name = "r7",
742742 .flatten = true,
743743 },
744744 .{
745 .llvm_name = "a53",
745 .llvm_name = "r52",
746746 .flatten = true,
747747 },
748748 .{
749 .llvm_name = "a55",
749 .llvm_name = "r52plus",
750750 .flatten = true,
751751 },
752752 .{
753 .llvm_name = "a57",
753 .llvm_name = "swift",
754754 .flatten = true,
755755 },
756
756757 .{
757 .llvm_name = "a72",
758 .flatten = true,
758 .llvm_name = "cortex-m4",
759 .omit_deps = &.{"vfp4d16sp"},
759760 },
760761 .{
761 .llvm_name = "a73",
762 .flatten = true,
762 .llvm_name = "cortex-m7",
763 .omit_deps = &.{"fp_armv8d16"},
763764 },
764765 .{
765 .llvm_name = "a75",
766 .flatten = true,
766 .llvm_name = "cortex-m33",
767 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
767768 },
768769 .{
769 .llvm_name = "a76",
770 .flatten = true,
770 .llvm_name = "cortex-m35p",
771 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
771772 },
772773 .{
773 .llvm_name = "a77",
774 .flatten = true,
774 .llvm_name = "cortex-m52",
775 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
775776 },
776777 .{
777 .llvm_name = "a78c",
778 .flatten = true,
778 .llvm_name = "cortex-m55",
779 .omit_deps = &.{ "fp_armv8d16", "mve_fp" },
780 },
781 .{
782 .llvm_name = "cortex-m85",
783 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
784 },
785 .{
786 .llvm_name = "cortex-r5",
787 .omit_deps = &.{"vfp3d16"},
788 },
789 .{
790 .llvm_name = "cortex-r7",
791 .omit_deps = &.{ "fp16", "vfp3d16" },
792 },
793 .{
794 .llvm_name = "cortex-r8",
795 .omit_deps = &.{ "fp16", "vfp3d16" },
796 },
797 .{
798 .llvm_name = "cortex-r52",
799 .omit_deps = &.{ "fp_armv8", "neon" },
779800 },
801 .{
802 .llvm_name = "cortex-r52plus",
803 .omit_deps = &.{ "fp_armv8", "neon" },
804 },
805 .{
806 .llvm_name = "star-mc1",
807 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
808 },
809 .{
810 .llvm_name = "star-mc3",
811 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
812 },
813
780814 .{
781815 .llvm_name = "armv2",
782816 .zig_name = "v2",