@@ -565,8 +565,8 @@ def ProcA76 : SubtargetFeature<"a76", "ARMProcFamily", "CortexA76",
565
565
566
566
// Note that cyclone does not fuse AES instructions, but newer apple chips do
567
567
// perform the fusion and cyclone is used by default when targetting apple OSes.
568
- def ProcCyclone : SubtargetFeature<"cyclone ", "ARMProcFamily", "Cyclone ",
569
- "Cyclone", [
568
+ def ProcAppleA7 : SubtargetFeature<"apple-a7 ", "ARMProcFamily", "AppleA7 ",
569
+ "Apple A7 (the CPU formerly known as Cyclone) ", [
570
570
FeatureAlternateSExtLoadCVTF32Pattern,
571
571
FeatureArithmeticBccFusion,
572
572
FeatureArithmeticCbzFusion,
@@ -582,6 +582,83 @@ def ProcCyclone : SubtargetFeature<"cyclone", "ARMProcFamily", "Cyclone",
582
582
FeatureZCZeroingFPWorkaround
583
583
]>;
584
584
585
+ def ProcAppleA10 : SubtargetFeature<"apple-a10", "ARMProcFamily", "AppleA10",
586
+ "Apple A10", [
587
+ FeatureAlternateSExtLoadCVTF32Pattern,
588
+ FeatureArithmeticBccFusion,
589
+ FeatureArithmeticCbzFusion,
590
+ FeatureCrypto,
591
+ FeatureDisableLatencySchedHeuristic,
592
+ FeatureFPARMv8,
593
+ FeatureFuseAES,
594
+ FeatureFuseCryptoEOR,
595
+ FeatureNEON,
596
+ FeaturePerfMon,
597
+ FeatureZCRegMove,
598
+ FeatureZCZeroing,
599
+ FeatureCRC,
600
+ FeatureRDM,
601
+ FeaturePAN,
602
+ FeatureLOR,
603
+ FeatureVH,
604
+ ]>;
605
+
606
+ def ProcAppleA11 : SubtargetFeature<"apple-a11", "ARMProcFamily", "AppleA11",
607
+ "Apple A11", [
608
+ FeatureAlternateSExtLoadCVTF32Pattern,
609
+ FeatureArithmeticBccFusion,
610
+ FeatureArithmeticCbzFusion,
611
+ FeatureCrypto,
612
+ FeatureDisableLatencySchedHeuristic,
613
+ FeatureFPARMv8,
614
+ FeatureFuseAES,
615
+ FeatureFuseCryptoEOR,
616
+ FeatureNEON,
617
+ FeaturePerfMon,
618
+ FeatureZCRegMove,
619
+ FeatureZCZeroing,
620
+ FeatureFullFP16,
621
+ HasV8_2aOps
622
+ ]>;
623
+
624
+ def ProcAppleA12 : SubtargetFeature<"apple-a12", "ARMProcFamily", "AppleA12",
625
+ "Apple A12", [
626
+ FeatureAlternateSExtLoadCVTF32Pattern,
627
+ FeatureArithmeticBccFusion,
628
+ FeatureArithmeticCbzFusion,
629
+ FeatureCrypto,
630
+ FeatureDisableLatencySchedHeuristic,
631
+ FeatureFPARMv8,
632
+ FeatureFuseAES,
633
+ FeatureFuseCryptoEOR,
634
+ FeatureNEON,
635
+ FeaturePerfMon,
636
+ FeatureZCRegMove,
637
+ FeatureZCZeroing,
638
+ FeatureFullFP16,
639
+ HasV8_3aOps
640
+ ]>;
641
+
642
+ def ProcAppleA13 : SubtargetFeature<"apple-a13", "ARMProcFamily", "AppleA13",
643
+ "Apple A13", [
644
+ FeatureAlternateSExtLoadCVTF32Pattern,
645
+ FeatureArithmeticBccFusion,
646
+ FeatureArithmeticCbzFusion,
647
+ FeatureCrypto,
648
+ FeatureDisableLatencySchedHeuristic,
649
+ FeatureFPARMv8,
650
+ FeatureFuseAES,
651
+ FeatureFuseCryptoEOR,
652
+ FeatureNEON,
653
+ FeaturePerfMon,
654
+ FeatureZCRegMove,
655
+ FeatureZCZeroing,
656
+ FeatureFullFP16,
657
+ FeatureFP16FML,
658
+ FeatureSHA3,
659
+ HasV8_4aOps
660
+ ]>;
661
+
585
662
def ProcExynosM3 : SubtargetFeature<"exynosm3", "ARMProcFamily", "ExynosM3",
586
663
"Samsung Exynos-M3 processors",
587
664
[FeatureCRC,
@@ -788,7 +865,6 @@ def : ProcessorModel<"cortex-a76", CortexA57Model, [ProcA76]>;
788
865
def : ProcessorModel<"cortex-a76ae", CortexA57Model, [ProcA76]>;
789
866
def : ProcessorModel<"neoverse-e1", CortexA53Model, [ProcNeoverseE1]>;
790
867
def : ProcessorModel<"neoverse-n1", CortexA57Model, [ProcNeoverseN1]>;
791
- def : ProcessorModel<"cyclone", CycloneModel, [ProcCyclone]>;
792
868
def : ProcessorModel<"exynos-m3", ExynosM3Model, [ProcExynosM3]>;
793
869
def : ProcessorModel<"exynos-m4", ExynosM4Model, [ProcExynosM4]>;
794
870
def : ProcessorModel<"exynos-m5", ExynosM5Model, [ProcExynosM4]>;
@@ -805,8 +881,24 @@ def : ProcessorModel<"thunderx2t99", ThunderX2T99Model, [ProcThunderX2T99]>;
805
881
// FIXME: HiSilicon TSV110 is currently modeled as a Cortex-A57.
806
882
def : ProcessorModel<"tsv110", CortexA57Model, [ProcTSV110]>;
807
883
884
+ // Support cyclone as an alias for apple-a7 so we can still LTO old bitcode.
885
+ def : ProcessorModel<"cyclone", CycloneModel, [ProcAppleA7]>;
886
+
887
+ // iPhone and iPad CPUs
888
+ def : ProcessorModel<"apple-a7", CycloneModel, [ProcAppleA7]>;
889
+ def : ProcessorModel<"apple-a8", CycloneModel, [ProcAppleA7]>;
890
+ def : ProcessorModel<"apple-a9", CycloneModel, [ProcAppleA7]>;
891
+ def : ProcessorModel<"apple-a10", CycloneModel, [ProcAppleA10]>;
892
+ def : ProcessorModel<"apple-a11", CycloneModel, [ProcAppleA11]>;
893
+ def : ProcessorModel<"apple-a12", CycloneModel, [ProcAppleA12]>;
894
+ def : ProcessorModel<"apple-a13", CycloneModel, [ProcAppleA13]>;
895
+
896
+ // watch CPUs.
897
+ def : ProcessorModel<"apple-s4", CycloneModel, [ProcAppleA12]>;
898
+ def : ProcessorModel<"apple-s5", CycloneModel, [ProcAppleA12]>;
899
+
808
900
// Alias for the latest Apple processor model supported by LLVM.
809
- def : ProcessorModel<"apple-latest", CycloneModel, [ProcCyclone ]>;
901
+ def : ProcessorModel<"apple-latest", CycloneModel, [ProcAppleA13 ]>;
810
902
811
903
//===----------------------------------------------------------------------===//
812
904
// Assembly parser
0 commit comments