Commit fbfda7f00e

Andrew Kelley <andrew@ziglang.org>
2020-01-23 19:02:45
fix incorrect list of sub-arches for aarch64
tests use older sub-arch that works in the older qemu
1 parent c86589a
Changed files (5)
lib/std/target/aarch64.zig
@@ -137,6 +137,7 @@ pub const Feature = enum {
     use_aa,
     use_postra_scheduler,
     use_reciprocal_square_root,
+    v8a,
     v8_1a,
     v8_2a,
     v8_3a,
@@ -153,6 +154,7 @@ pub const Feature = enum {
 pub usingnamespace Cpu.Feature.feature_set_fns(Feature);
 
 pub const all_features = blk: {
+    @setEvalBranchQuota(2000);
     const len = @typeInfo(Feature).Enum.fields.len;
     std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);
     var result: [len]Cpu.Feature = undefined;
@@ -1108,6 +1110,14 @@ pub const all_features = blk: {
         .description = "Use the reciprocal square root approximation",
         .dependencies = featureSet(&[_]Feature{}),
     };
+    result[@enumToInt(Feature.v8a)] = .{
+        .llvm_name = null,
+        .description = "Support ARM v8a instructions",
+        .dependencies = featureSet(&[_]Feature{
+            .fp_armv8,
+            .neon,
+        }),
+    };
     result[@enumToInt(Feature.v8_1a)] = .{
         .llvm_name = "v8.1a",
         .description = "Support ARM v8.1a instructions",
@@ -1118,6 +1128,7 @@ pub const all_features = blk: {
             .pan,
             .rdm,
             .vh,
+            .v8a,
         }),
     };
     result[@enumToInt(Feature.v8_2a)] = .{
lib/std/target.zig
@@ -123,12 +123,12 @@ pub const Target = union(enum) {
             v8_3a,
             v8_2a,
             v8_1a,
-            v8,
+            v8a,
             v8r,
             v8m_baseline,
             v8m_mainline,
             v8_1m_mainline,
-            v7,
+            v7a,
             v7em,
             v7m,
             v7s,
@@ -144,8 +144,8 @@ pub const Target = union(enum) {
 
             pub fn version(version: Arm32) comptime_int {
                 return switch (version) {
-                    .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,
-                    .v7, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,
+                    .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8a, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,
+                    .v7a, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,
                     .v6, .v6m, .v6k, .v6t2 => 6,
                     .v5, .v5te => 5,
                     .v4t => 4,
@@ -158,10 +158,7 @@ pub const Target = union(enum) {
             v8_3a,
             v8_2a,
             v8_1a,
-            v8,
-            v8r,
-            v8m_baseline,
-            v8m_mainline,
+            v8a,
         };
         pub const Kalimba = enum {
             v5,
@@ -189,12 +186,12 @@ pub const Target = union(enum) {
                     .v8_3a => @enumToInt(arm.Feature.armv8_3_a),
                     .v8_2a => @enumToInt(arm.Feature.armv8_2_a),
                     .v8_1a => @enumToInt(arm.Feature.armv8_1_a),
-                    .v8 => @enumToInt(arm.Feature.armv8_a),
+                    .v8a => @enumToInt(arm.Feature.armv8_a),
                     .v8r => @enumToInt(arm.Feature.armv8_r),
                     .v8m_baseline => @enumToInt(arm.Feature.armv8_m_base),
                     .v8m_mainline => @enumToInt(arm.Feature.armv8_m_main),
                     .v8_1m_mainline => @enumToInt(arm.Feature.armv8_1_m_main),
-                    .v7 => @enumToInt(arm.Feature.armv7_a),
+                    .v7a => @enumToInt(arm.Feature.armv7_a),
                     .v7em => @enumToInt(arm.Feature.armv7e_m),
                     .v7m => @enumToInt(arm.Feature.armv7_m),
                     .v7s => @enumToInt(arm.Feature.armv7s),
@@ -214,10 +211,7 @@ pub const Target = union(enum) {
                     .v8_3a => @enumToInt(aarch64.Feature.v8_3a),
                     .v8_2a => @enumToInt(aarch64.Feature.v8_2a),
                     .v8_1a => @enumToInt(aarch64.Feature.v8_1a),
-                    .v8 => @enumToInt(aarch64.Feature.v8_1a),
-                    .v8r => @enumToInt(aarch64.Feature.v8_1a),
-                    .v8m_baseline => @enumToInt(aarch64.Feature.v8_1a),
-                    .v8m_mainline => @enumToInt(aarch64.Feature.v8_1a),
+                    .v8a => @enumToInt(aarch64.Feature.v8a),
                 },
                 else => return null,
             };
src/target.cpp
@@ -57,9 +57,6 @@ static const ZigLLVM_SubArchType subarch_list_arm64[] = {
     ZigLLVM_ARMSubArch_v8_2a,
     ZigLLVM_ARMSubArch_v8_1a,
     ZigLLVM_ARMSubArch_v8,
-    ZigLLVM_ARMSubArch_v8r,
-    ZigLLVM_ARMSubArch_v8m_baseline,
-    ZigLLVM_ARMSubArch_v8m_mainline,
 };
 
 static const ZigLLVM_SubArchType subarch_list_kalimba[] = {
@@ -683,7 +680,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
         case ZigLLVM_ARMSubArch_v8_1a:
             return "v8_1a";
         case ZigLLVM_ARMSubArch_v8:
-            return "v8";
+            return "v8a";
         case ZigLLVM_ARMSubArch_v8r:
             return "v8r";
         case ZigLLVM_ARMSubArch_v8m_baseline:
@@ -693,7 +690,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
         case ZigLLVM_ARMSubArch_v8_1m_mainline:
             return "v8_1m_mainline";
         case ZigLLVM_ARMSubArch_v7:
-            return "v7";
+            return "v7a";
         case ZigLLVM_ARMSubArch_v7em:
             return "v7em";
         case ZigLLVM_ARMSubArch_v7m:
src/zig_llvm.cpp
@@ -821,7 +821,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
         case ZigLLVM_ARMSubArch_v8_1a:
             return "v8.1a";
         case ZigLLVM_ARMSubArch_v8:
-            return "v8";
+            return "v8a";
         case ZigLLVM_ARMSubArch_v8r:
             return "v8r";
         case ZigLLVM_ARMSubArch_v8m_baseline:
@@ -831,7 +831,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
         case ZigLLVM_ARMSubArch_v8_1m_mainline:
             return "v8.1m.main";
         case ZigLLVM_ARMSubArch_v7:
-            return "v7";
+            return "v7a";
         case ZigLLVM_ARMSubArch_v7em:
             return "v7em";
         case ZigLLVM_ARMSubArch_v7m:
test/tests.zig
@@ -111,8 +111,8 @@ const test_targets = blk: {
             .target = Target{
                 .Cross = CrossTarget{
                     .os = .linux,
-                    .arch = Target.Arch{ .aarch64 = .v8_1a },
-                    .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
+                    .arch = Target.Arch{ .aarch64 = .v8a },
+                    .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
                     .abi = .none,
                 },
             },
@@ -121,8 +121,8 @@ const test_targets = blk: {
             .target = Target{
                 .Cross = CrossTarget{
                     .os = .linux,
-                    .arch = Target.Arch{ .aarch64 = .v8_1a },
-                    .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
+                    .arch = Target.Arch{ .aarch64 = .v8a },
+                    .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
                     .abi = .musl,
                 },
             },
@@ -132,8 +132,8 @@ const test_targets = blk: {
             .target = Target{
                 .Cross = CrossTarget{
                     .os = .linux,
-                    .arch = Target.Arch{ .aarch64 = .v8_1a },
-                    .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
+                    .arch = Target.Arch{ .aarch64 = .v8a },
+                    .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
                     .abi = .gnu,
                 },
             },
@@ -144,8 +144,8 @@ const test_targets = blk: {
             .target = Target{
                 .Cross = CrossTarget{
                     .os = .linux,
-                    .arch = Target.Arch{ .arm = .v8_1a },
-                    .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
+                    .arch = Target.Arch{ .arm = .v8a },
+                    .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
                     .abi = .none,
                 },
             },
@@ -154,8 +154,8 @@ const test_targets = blk: {
             .target = Target{
                 .Cross = CrossTarget{
                     .os = .linux,
-                    .arch = Target.Arch{ .arm = .v8_1a },
-                    .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
+                    .arch = Target.Arch{ .arm = .v8a },
+                    .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
                     .abi = .musleabihf,
                 },
             },
@@ -166,8 +166,8 @@ const test_targets = blk: {
         //    .target = Target{
         //        .Cross = CrossTarget{
         //            .os = .linux,
-        //            .arch = Target.Arch{ .arm = .v8_1a },
-        //            .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
+        //            .arch = Target.Arch{ .arm = .v8a },
+        //            .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
         //            .abi = .gnueabihf,
         //        },
         //    },