authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-07 22:48:57-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-08-07 22:48:57-07:00
log468b976f63b0938f2a799261b536167959c059b4
tree9af0e9f74eef0a4cf0732d5600eda9ad425a68d4
parent7a7421c74970a0d52286fa33086e80af29fc8d0b
parente912411fbedab06f4b7313404c9bb88f9e9e6c44
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #20975 from squeek502/cpu-features-update

update_cpu_features: Fixes and updates

3 files changed, 20 insertions(+), 8 deletions(-)

lib/std/Target/arm.zig+9-8
...@@ -86,6 +86,7 @@ pub const Feature = enum {...@@ -86,6 +86,7 @@ pub const Feature = enum {
86 has_v9_2a,86 has_v9_2a,
87 has_v9_3a,87 has_v9_3a,
88 has_v9_4a,88 has_v9_4a,
89 has_v9_5a,
89 has_v9a,90 has_v9a,
90 hwdiv,91 hwdiv,
91 hwdiv_arm,92 hwdiv_arm,
...@@ -754,6 +755,13 @@ pub const all_features = blk: {...@@ -754,6 +755,13 @@ pub const all_features = blk: {
754 .has_v9_3a,755 .has_v9_3a,
755 }),756 }),
756 };757 };
758 result[@intFromEnum(Feature.has_v9_5a)] = .{
759 .llvm_name = "v9.5a",
760 .description = "Support ARM v9.5a instructions",
761 .dependencies = featureSet(&[_]Feature{
762 .has_v9_4a,
763 }),
764 };
757 result[@intFromEnum(Feature.has_v9a)] = .{765 result[@intFromEnum(Feature.has_v9a)] = .{
758 .llvm_name = "v9a",766 .llvm_name = "v9a",
759 .description = "Support ARM v9a instructions",767 .description = "Support ARM v9a instructions",
...@@ -1582,20 +1590,13 @@ pub const all_features = blk: {...@@ -1582,20 +1590,13 @@ pub const all_features = blk: {
1582 .db,1590 .db,
1583 .dsp,1591 .dsp,
1584 .fp_armv8,1592 .fp_armv8,
1593 .has_v9_5a,
1585 .mp,1594 .mp,
1586 .ras,1595 .ras,
1587 .trustzone,1596 .trustzone,
1588 .v9_5a,
1589 .virtualization,1597 .virtualization,
1590 }),1598 }),
1591 };1599 };
1592 result[@intFromEnum(Feature.v9_5a)] = .{
1593 .llvm_name = "v9.5a",
1594 .description = "Support ARM v9.5a instructions",
1595 .dependencies = featureSet(&[_]Feature{
1596 .has_v9_4a,
1597 }),
1598 };
1599 result[@intFromEnum(Feature.v9a)] = .{1600 result[@intFromEnum(Feature.v9a)] = .{
1600 .llvm_name = "armv9-a",1601 .llvm_name = "armv9-a",
1601 .description = "ARMv9a architecture",1602 .description = "ARMv9a architecture",
lib/std/Target/riscv.zig+6
...@@ -78,6 +78,7 @@ pub const Feature = enum {...@@ -78,6 +78,7 @@ pub const Feature = enum {
78 svnapot,78 svnapot,
79 svpbmt,79 svpbmt,
80 tagged_globals,80 tagged_globals,
81 unaligned_scalar_mem,
81 use_postra_scheduler,82 use_postra_scheduler,
82 v,83 v,
83 ventana_veyron,84 ventana_veyron,
...@@ -584,6 +585,11 @@ pub const all_features = blk: {...@@ -584,6 +585,11 @@ pub const all_features = blk: {
584 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",585 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
585 .dependencies = featureSet(&[_]Feature{}),586 .dependencies = featureSet(&[_]Feature{}),
586 };587 };
588 result[@intFromEnum(Feature.unaligned_scalar_mem)] = .{
589 .llvm_name = "unaligned-scalar-mem",
590 .description = "Has reasonably performant unaligned scalar loads and stores",
591 .dependencies = featureSet(&[_]Feature{}),
592 };
587 result[@intFromEnum(Feature.use_postra_scheduler)] = .{593 result[@intFromEnum(Feature.use_postra_scheduler)] = .{
588 .llvm_name = "use-postra-scheduler",594 .llvm_name = "use-postra-scheduler",
589 .description = "Schedule again after register allocation",595 .description = "Schedule again after register allocation",
tools/update_cpu_features.zig+5
...@@ -809,6 +809,10 @@ const llvm_targets = [_]LlvmTarget{...@@ -809,6 +809,10 @@ const llvm_targets = [_]LlvmTarget{
809 .llvm_name = "v9.4a",809 .llvm_name = "v9.4a",
810 .zig_name = "has_v9_4a",810 .zig_name = "has_v9_4a",
811 },811 },
812 .{
813 .llvm_name = "v9.5a",
814 .zig_name = "has_v9_5a",
815 },
812 },816 },
813 // LLVM removed support for v2 and v3 but zig wants to support targeting old hardware817 // LLVM removed support for v2 and v3 but zig wants to support targeting old hardware
814 .extra_features = &.{818 .extra_features = &.{
...@@ -990,6 +994,7 @@ const llvm_targets = [_]LlvmTarget{...@@ -990,6 +994,7 @@ const llvm_targets = [_]LlvmTarget{
990 "icelake_client",994 "icelake_client",
991 "icelake_server",995 "icelake_server",
992 "graniterapids_d",996 "graniterapids_d",
997 "arrowlake_s",
993 },998 },
994 },999 },
995 .{1000 .{