authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-23 13:02:45-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-23 13:02:45-05:00
logfbfda7f00edbbf4eb623898d53c3faf43ab874ce
treebdd246991e850d9304a6af7834123fd495a4a68a
parentc86589a738e5053a26b2be7d156bcfee1565f00b
signaturelock-open Commit is signed but in an unrecognized format.

fix incorrect list of sub-arches for aarch64

tests use older sub-arch that works in the older qemu

5 files changed, 35 insertions(+), 33 deletions(-)

lib/std/target.zig+8-14
...@@ -123,12 +123,12 @@ pub const Target = union(enum) {...@@ -123,12 +123,12 @@ pub const Target = union(enum) {
123 v8_3a,123 v8_3a,
124 v8_2a,124 v8_2a,
125 v8_1a,125 v8_1a,
126 v8,126 v8a,
127 v8r,127 v8r,
128 v8m_baseline,128 v8m_baseline,
129 v8m_mainline,129 v8m_mainline,
130 v8_1m_mainline,130 v8_1m_mainline,
131 v7,131 v7a,
132 v7em,132 v7em,
133 v7m,133 v7m,
134 v7s,134 v7s,
...@@ -144,8 +144,8 @@ pub const Target = union(enum) {...@@ -144,8 +144,8 @@ pub const Target = union(enum) {
144144
145 pub fn version(version: Arm32) comptime_int {145 pub fn version(version: Arm32) comptime_int {
146 return switch (version) {146 return switch (version) {
147 .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,147 .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8a, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,
148 .v7, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,148 .v7a, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,
149 .v6, .v6m, .v6k, .v6t2 => 6,149 .v6, .v6m, .v6k, .v6t2 => 6,
150 .v5, .v5te => 5,150 .v5, .v5te => 5,
151 .v4t => 4,151 .v4t => 4,
...@@ -158,10 +158,7 @@ pub const Target = union(enum) {...@@ -158,10 +158,7 @@ pub const Target = union(enum) {
158 v8_3a,158 v8_3a,
159 v8_2a,159 v8_2a,
160 v8_1a,160 v8_1a,
161 v8,161 v8a,
162 v8r,
163 v8m_baseline,
164 v8m_mainline,
165 };162 };
166 pub const Kalimba = enum {163 pub const Kalimba = enum {
167 v5,164 v5,
...@@ -189,12 +186,12 @@ pub const Target = union(enum) {...@@ -189,12 +186,12 @@ pub const Target = union(enum) {
189 .v8_3a => @enumToInt(arm.Feature.armv8_3_a),186 .v8_3a => @enumToInt(arm.Feature.armv8_3_a),
190 .v8_2a => @enumToInt(arm.Feature.armv8_2_a),187 .v8_2a => @enumToInt(arm.Feature.armv8_2_a),
191 .v8_1a => @enumToInt(arm.Feature.armv8_1_a),188 .v8_1a => @enumToInt(arm.Feature.armv8_1_a),
192 .v8 => @enumToInt(arm.Feature.armv8_a),189 .v8a => @enumToInt(arm.Feature.armv8_a),
193 .v8r => @enumToInt(arm.Feature.armv8_r),190 .v8r => @enumToInt(arm.Feature.armv8_r),
194 .v8m_baseline => @enumToInt(arm.Feature.armv8_m_base),191 .v8m_baseline => @enumToInt(arm.Feature.armv8_m_base),
195 .v8m_mainline => @enumToInt(arm.Feature.armv8_m_main),192 .v8m_mainline => @enumToInt(arm.Feature.armv8_m_main),
196 .v8_1m_mainline => @enumToInt(arm.Feature.armv8_1_m_main),193 .v8_1m_mainline => @enumToInt(arm.Feature.armv8_1_m_main),
197 .v7 => @enumToInt(arm.Feature.armv7_a),194 .v7a => @enumToInt(arm.Feature.armv7_a),
198 .v7em => @enumToInt(arm.Feature.armv7e_m),195 .v7em => @enumToInt(arm.Feature.armv7e_m),
199 .v7m => @enumToInt(arm.Feature.armv7_m),196 .v7m => @enumToInt(arm.Feature.armv7_m),
200 .v7s => @enumToInt(arm.Feature.armv7s),197 .v7s => @enumToInt(arm.Feature.armv7s),
...@@ -214,10 +211,7 @@ pub const Target = union(enum) {...@@ -214,10 +211,7 @@ pub const Target = union(enum) {
214 .v8_3a => @enumToInt(aarch64.Feature.v8_3a),211 .v8_3a => @enumToInt(aarch64.Feature.v8_3a),
215 .v8_2a => @enumToInt(aarch64.Feature.v8_2a),212 .v8_2a => @enumToInt(aarch64.Feature.v8_2a),
216 .v8_1a => @enumToInt(aarch64.Feature.v8_1a),213 .v8_1a => @enumToInt(aarch64.Feature.v8_1a),
217 .v8 => @enumToInt(aarch64.Feature.v8_1a),214 .v8a => @enumToInt(aarch64.Feature.v8a),
218 .v8r => @enumToInt(aarch64.Feature.v8_1a),
219 .v8m_baseline => @enumToInt(aarch64.Feature.v8_1a),
220 .v8m_mainline => @enumToInt(aarch64.Feature.v8_1a),
221 },215 },
222 else => return null,216 else => return null,
223 };217 };
lib/std/target/aarch64.zig+11
...@@ -137,6 +137,7 @@ pub const Feature = enum {...@@ -137,6 +137,7 @@ pub const Feature = enum {
137 use_aa,137 use_aa,
138 use_postra_scheduler,138 use_postra_scheduler,
139 use_reciprocal_square_root,139 use_reciprocal_square_root,
140 v8a,
140 v8_1a,141 v8_1a,
141 v8_2a,142 v8_2a,
142 v8_3a,143 v8_3a,
...@@ -153,6 +154,7 @@ pub const Feature = enum {...@@ -153,6 +154,7 @@ pub const Feature = enum {
153pub usingnamespace Cpu.Feature.feature_set_fns(Feature);154pub usingnamespace Cpu.Feature.feature_set_fns(Feature);
154155
155pub const all_features = blk: {156pub const all_features = blk: {
157 @setEvalBranchQuota(2000);
156 const len = @typeInfo(Feature).Enum.fields.len;158 const len = @typeInfo(Feature).Enum.fields.len;
157 std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);159 std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);
158 var result: [len]Cpu.Feature = undefined;160 var result: [len]Cpu.Feature = undefined;
...@@ -1108,6 +1110,14 @@ pub const all_features = blk: {...@@ -1108,6 +1110,14 @@ pub const all_features = blk: {
1108 .description = "Use the reciprocal square root approximation",1110 .description = "Use the reciprocal square root approximation",
1109 .dependencies = featureSet(&[_]Feature{}),1111 .dependencies = featureSet(&[_]Feature{}),
1110 };1112 };
1113 result[@enumToInt(Feature.v8a)] = .{
1114 .llvm_name = null,
1115 .description = "Support ARM v8a instructions",
1116 .dependencies = featureSet(&[_]Feature{
1117 .fp_armv8,
1118 .neon,
1119 }),
1120 };
1111 result[@enumToInt(Feature.v8_1a)] = .{1121 result[@enumToInt(Feature.v8_1a)] = .{
1112 .llvm_name = "v8.1a",1122 .llvm_name = "v8.1a",
1113 .description = "Support ARM v8.1a instructions",1123 .description = "Support ARM v8.1a instructions",
...@@ -1118,6 +1128,7 @@ pub const all_features = blk: {...@@ -1118,6 +1128,7 @@ pub const all_features = blk: {
1118 .pan,1128 .pan,
1119 .rdm,1129 .rdm,
1120 .vh,1130 .vh,
1131 .v8a,
1121 }),1132 }),
1122 };1133 };
1123 result[@enumToInt(Feature.v8_2a)] = .{1134 result[@enumToInt(Feature.v8_2a)] = .{
src/target.cpp+2-5
...@@ -57,9 +57,6 @@ static const ZigLLVM_SubArchType subarch_list_arm64[] = {...@@ -57,9 +57,6 @@ static const ZigLLVM_SubArchType subarch_list_arm64[] = {
57 ZigLLVM_ARMSubArch_v8_2a,57 ZigLLVM_ARMSubArch_v8_2a,
58 ZigLLVM_ARMSubArch_v8_1a,58 ZigLLVM_ARMSubArch_v8_1a,
59 ZigLLVM_ARMSubArch_v8,59 ZigLLVM_ARMSubArch_v8,
60 ZigLLVM_ARMSubArch_v8r,
61 ZigLLVM_ARMSubArch_v8m_baseline,
62 ZigLLVM_ARMSubArch_v8m_mainline,
63};60};
6461
65static const ZigLLVM_SubArchType subarch_list_kalimba[] = {62static const ZigLLVM_SubArchType subarch_list_kalimba[] = {
...@@ -683,7 +680,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {...@@ -683,7 +680,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
683 case ZigLLVM_ARMSubArch_v8_1a:680 case ZigLLVM_ARMSubArch_v8_1a:
684 return "v8_1a";681 return "v8_1a";
685 case ZigLLVM_ARMSubArch_v8:682 case ZigLLVM_ARMSubArch_v8:
686 return "v8";683 return "v8a";
687 case ZigLLVM_ARMSubArch_v8r:684 case ZigLLVM_ARMSubArch_v8r:
688 return "v8r";685 return "v8r";
689 case ZigLLVM_ARMSubArch_v8m_baseline:686 case ZigLLVM_ARMSubArch_v8m_baseline:
...@@ -693,7 +690,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {...@@ -693,7 +690,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
693 case ZigLLVM_ARMSubArch_v8_1m_mainline:690 case ZigLLVM_ARMSubArch_v8_1m_mainline:
694 return "v8_1m_mainline";691 return "v8_1m_mainline";
695 case ZigLLVM_ARMSubArch_v7:692 case ZigLLVM_ARMSubArch_v7:
696 return "v7";693 return "v7a";
697 case ZigLLVM_ARMSubArch_v7em:694 case ZigLLVM_ARMSubArch_v7em:
698 return "v7em";695 return "v7em";
699 case ZigLLVM_ARMSubArch_v7m:696 case ZigLLVM_ARMSubArch_v7m:
src/zig_llvm.cpp+2-2
...@@ -821,7 +821,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {...@@ -821,7 +821,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
821 case ZigLLVM_ARMSubArch_v8_1a:821 case ZigLLVM_ARMSubArch_v8_1a:
822 return "v8.1a";822 return "v8.1a";
823 case ZigLLVM_ARMSubArch_v8:823 case ZigLLVM_ARMSubArch_v8:
824 return "v8";824 return "v8a";
825 case ZigLLVM_ARMSubArch_v8r:825 case ZigLLVM_ARMSubArch_v8r:
826 return "v8r";826 return "v8r";
827 case ZigLLVM_ARMSubArch_v8m_baseline:827 case ZigLLVM_ARMSubArch_v8m_baseline:
...@@ -831,7 +831,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {...@@ -831,7 +831,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
831 case ZigLLVM_ARMSubArch_v8_1m_mainline:831 case ZigLLVM_ARMSubArch_v8_1m_mainline:
832 return "v8.1m.main";832 return "v8.1m.main";
833 case ZigLLVM_ARMSubArch_v7:833 case ZigLLVM_ARMSubArch_v7:
834 return "v7";834 return "v7a";
835 case ZigLLVM_ARMSubArch_v7em:835 case ZigLLVM_ARMSubArch_v7em:
836 return "v7em";836 return "v7em";
837 case ZigLLVM_ARMSubArch_v7m:837 case ZigLLVM_ARMSubArch_v7m:
test/tests.zig+12-12
...@@ -111,8 +111,8 @@ const test_targets = blk: {...@@ -111,8 +111,8 @@ const test_targets = blk: {
111 .target = Target{111 .target = Target{
112 .Cross = CrossTarget{112 .Cross = CrossTarget{
113 .os = .linux,113 .os = .linux,
114 .arch = Target.Arch{ .aarch64 = .v8_1a },114 .arch = Target.Arch{ .aarch64 = .v8a },
115 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),115 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
116 .abi = .none,116 .abi = .none,
117 },117 },
118 },118 },
...@@ -121,8 +121,8 @@ const test_targets = blk: {...@@ -121,8 +121,8 @@ const test_targets = blk: {
121 .target = Target{121 .target = Target{
122 .Cross = CrossTarget{122 .Cross = CrossTarget{
123 .os = .linux,123 .os = .linux,
124 .arch = Target.Arch{ .aarch64 = .v8_1a },124 .arch = Target.Arch{ .aarch64 = .v8a },
125 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),125 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
126 .abi = .musl,126 .abi = .musl,
127 },127 },
128 },128 },
...@@ -132,8 +132,8 @@ const test_targets = blk: {...@@ -132,8 +132,8 @@ const test_targets = blk: {
132 .target = Target{132 .target = Target{
133 .Cross = CrossTarget{133 .Cross = CrossTarget{
134 .os = .linux,134 .os = .linux,
135 .arch = Target.Arch{ .aarch64 = .v8_1a },135 .arch = Target.Arch{ .aarch64 = .v8a },
136 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),136 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
137 .abi = .gnu,137 .abi = .gnu,
138 },138 },
139 },139 },
...@@ -144,8 +144,8 @@ const test_targets = blk: {...@@ -144,8 +144,8 @@ const test_targets = blk: {
144 .target = Target{144 .target = Target{
145 .Cross = CrossTarget{145 .Cross = CrossTarget{
146 .os = .linux,146 .os = .linux,
147 .arch = Target.Arch{ .arm = .v8_1a },147 .arch = Target.Arch{ .arm = .v8a },
148 .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),148 .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
149 .abi = .none,149 .abi = .none,
150 },150 },
151 },151 },
...@@ -154,8 +154,8 @@ const test_targets = blk: {...@@ -154,8 +154,8 @@ const test_targets = blk: {
154 .target = Target{154 .target = Target{
155 .Cross = CrossTarget{155 .Cross = CrossTarget{
156 .os = .linux,156 .os = .linux,
157 .arch = Target.Arch{ .arm = .v8_1a },157 .arch = Target.Arch{ .arm = .v8a },
158 .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),158 .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
159 .abi = .musleabihf,159 .abi = .musleabihf,
160 },160 },
161 },161 },
...@@ -166,8 +166,8 @@ const test_targets = blk: {...@@ -166,8 +166,8 @@ const test_targets = blk: {
166 // .target = Target{166 // .target = Target{
167 // .Cross = CrossTarget{167 // .Cross = CrossTarget{
168 // .os = .linux,168 // .os = .linux,
169 // .arch = Target.Arch{ .arm = .v8_1a },169 // .arch = Target.Arch{ .arm = .v8a },
170 // .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),170 // .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
171 // .abi = .gnueabihf,171 // .abi = .gnueabihf,
172 // },172 // },
173 // },173 // },