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
signature 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) {
123123 v8_3a,
124124 v8_2a,
125125 v8_1a,
126 v8,
126 v8a,
127127 v8r,
128128 v8m_baseline,
129129 v8m_mainline,
130130 v8_1m_mainline,
131 v7,
131 v7a,
132132 v7em,
133133 v7m,
134134 v7s,
......@@ -144,8 +144,8 @@ pub const Target = union(enum) {
144144
145145 pub fn version(version: Arm32) comptime_int {
146146 return switch (version) {
147 .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,
148 .v7, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,
147 .v8_5a, .v8_4a, .v8_3a, .v8_2a, .v8_1a, .v8a, .v8r, .v8m_baseline, .v8m_mainline, .v8_1m_mainline => 8,
148 .v7a, .v7em, .v7m, .v7s, .v7k, .v7ve => 7,
149149 .v6, .v6m, .v6k, .v6t2 => 6,
150150 .v5, .v5te => 5,
151151 .v4t => 4,
......@@ -158,10 +158,7 @@ pub const Target = union(enum) {
158158 v8_3a,
159159 v8_2a,
160160 v8_1a,
161 v8,
162 v8r,
163 v8m_baseline,
164 v8m_mainline,
161 v8a,
165162 };
166163 pub const Kalimba = enum {
167164 v5,
......@@ -189,12 +186,12 @@ pub const Target = union(enum) {
189186 .v8_3a => @enumToInt(arm.Feature.armv8_3_a),
190187 .v8_2a => @enumToInt(arm.Feature.armv8_2_a),
191188 .v8_1a => @enumToInt(arm.Feature.armv8_1_a),
192 .v8 => @enumToInt(arm.Feature.armv8_a),
189 .v8a => @enumToInt(arm.Feature.armv8_a),
193190 .v8r => @enumToInt(arm.Feature.armv8_r),
194191 .v8m_baseline => @enumToInt(arm.Feature.armv8_m_base),
195192 .v8m_mainline => @enumToInt(arm.Feature.armv8_m_main),
196193 .v8_1m_mainline => @enumToInt(arm.Feature.armv8_1_m_main),
197 .v7 => @enumToInt(arm.Feature.armv7_a),
194 .v7a => @enumToInt(arm.Feature.armv7_a),
198195 .v7em => @enumToInt(arm.Feature.armv7e_m),
199196 .v7m => @enumToInt(arm.Feature.armv7_m),
200197 .v7s => @enumToInt(arm.Feature.armv7s),
......@@ -214,10 +211,7 @@ pub const Target = union(enum) {
214211 .v8_3a => @enumToInt(aarch64.Feature.v8_3a),
215212 .v8_2a => @enumToInt(aarch64.Feature.v8_2a),
216213 .v8_1a => @enumToInt(aarch64.Feature.v8_1a),
217 .v8 => @enumToInt(aarch64.Feature.v8_1a),
218 .v8r => @enumToInt(aarch64.Feature.v8_1a),
219 .v8m_baseline => @enumToInt(aarch64.Feature.v8_1a),
220 .v8m_mainline => @enumToInt(aarch64.Feature.v8_1a),
214 .v8a => @enumToInt(aarch64.Feature.v8a),
221215 },
222216 else => return null,
223217 };
lib/std/target/aarch64.zig+11
......@@ -137,6 +137,7 @@ pub const Feature = enum {
137137 use_aa,
138138 use_postra_scheduler,
139139 use_reciprocal_square_root,
140 v8a,
140141 v8_1a,
141142 v8_2a,
142143 v8_3a,
......@@ -153,6 +154,7 @@ pub const Feature = enum {
153154pub usingnamespace Cpu.Feature.feature_set_fns(Feature);
154155
155156pub const all_features = blk: {
157 @setEvalBranchQuota(2000);
156158 const len = @typeInfo(Feature).Enum.fields.len;
157159 std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);
158160 var result: [len]Cpu.Feature = undefined;
......@@ -1108,6 +1110,14 @@ pub const all_features = blk: {
11081110 .description = "Use the reciprocal square root approximation",
11091111 .dependencies = featureSet(&[_]Feature{}),
11101112 };
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 };
11111121 result[@enumToInt(Feature.v8_1a)] = .{
11121122 .llvm_name = "v8.1a",
11131123 .description = "Support ARM v8.1a instructions",
......@@ -1118,6 +1128,7 @@ pub const all_features = blk: {
11181128 .pan,
11191129 .rdm,
11201130 .vh,
1131 .v8a,
11211132 }),
11221133 };
11231134 result[@enumToInt(Feature.v8_2a)] = .{
src/target.cpp+2-5
......@@ -57,9 +57,6 @@ static const ZigLLVM_SubArchType subarch_list_arm64[] = {
5757 ZigLLVM_ARMSubArch_v8_2a,
5858 ZigLLVM_ARMSubArch_v8_1a,
5959 ZigLLVM_ARMSubArch_v8,
60 ZigLLVM_ARMSubArch_v8r,
61 ZigLLVM_ARMSubArch_v8m_baseline,
62 ZigLLVM_ARMSubArch_v8m_mainline,
6360};
6461
6562static const ZigLLVM_SubArchType subarch_list_kalimba[] = {
......@@ -683,7 +680,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
683680 case ZigLLVM_ARMSubArch_v8_1a:
684681 return "v8_1a";
685682 case ZigLLVM_ARMSubArch_v8:
686 return "v8";
683 return "v8a";
687684 case ZigLLVM_ARMSubArch_v8r:
688685 return "v8r";
689686 case ZigLLVM_ARMSubArch_v8m_baseline:
......@@ -693,7 +690,7 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) {
693690 case ZigLLVM_ARMSubArch_v8_1m_mainline:
694691 return "v8_1m_mainline";
695692 case ZigLLVM_ARMSubArch_v7:
696 return "v7";
693 return "v7a";
697694 case ZigLLVM_ARMSubArch_v7em:
698695 return "v7em";
699696 case ZigLLVM_ARMSubArch_v7m:
src/zig_llvm.cpp+2-2
......@@ -821,7 +821,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
821821 case ZigLLVM_ARMSubArch_v8_1a:
822822 return "v8.1a";
823823 case ZigLLVM_ARMSubArch_v8:
824 return "v8";
824 return "v8a";
825825 case ZigLLVM_ARMSubArch_v8r:
826826 return "v8r";
827827 case ZigLLVM_ARMSubArch_v8m_baseline:
......@@ -831,7 +831,7 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) {
831831 case ZigLLVM_ARMSubArch_v8_1m_mainline:
832832 return "v8.1m.main";
833833 case ZigLLVM_ARMSubArch_v7:
834 return "v7";
834 return "v7a";
835835 case ZigLLVM_ARMSubArch_v7em:
836836 return "v7em";
837837 case ZigLLVM_ARMSubArch_v7m:
test/tests.zig+12-12
......@@ -111,8 +111,8 @@ const test_targets = blk: {
111111 .target = Target{
112112 .Cross = CrossTarget{
113113 .os = .linux,
114 .arch = Target.Arch{ .aarch64 = .v8_1a },
115 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
114 .arch = Target.Arch{ .aarch64 = .v8a },
115 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
116116 .abi = .none,
117117 },
118118 },
......@@ -121,8 +121,8 @@ const test_targets = blk: {
121121 .target = Target{
122122 .Cross = CrossTarget{
123123 .os = .linux,
124 .arch = Target.Arch{ .aarch64 = .v8_1a },
125 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
124 .arch = Target.Arch{ .aarch64 = .v8a },
125 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
126126 .abi = .musl,
127127 },
128128 },
......@@ -132,8 +132,8 @@ const test_targets = blk: {
132132 .target = Target{
133133 .Cross = CrossTarget{
134134 .os = .linux,
135 .arch = Target.Arch{ .aarch64 = .v8_1a },
136 .cpu_features = (Target.Arch{ .aarch64 = .v8_1a }).getBaselineCpuFeatures(),
135 .arch = Target.Arch{ .aarch64 = .v8a },
136 .cpu_features = (Target.Arch{ .aarch64 = .v8a }).getBaselineCpuFeatures(),
137137 .abi = .gnu,
138138 },
139139 },
......@@ -144,8 +144,8 @@ const test_targets = blk: {
144144 .target = Target{
145145 .Cross = CrossTarget{
146146 .os = .linux,
147 .arch = Target.Arch{ .arm = .v8_1a },
148 .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
147 .arch = Target.Arch{ .arm = .v8a },
148 .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
149149 .abi = .none,
150150 },
151151 },
......@@ -154,8 +154,8 @@ const test_targets = blk: {
154154 .target = Target{
155155 .Cross = CrossTarget{
156156 .os = .linux,
157 .arch = Target.Arch{ .arm = .v8_1a },
158 .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
157 .arch = Target.Arch{ .arm = .v8a },
158 .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
159159 .abi = .musleabihf,
160160 },
161161 },
......@@ -166,8 +166,8 @@ const test_targets = blk: {
166166 // .target = Target{
167167 // .Cross = CrossTarget{
168168 // .os = .linux,
169 // .arch = Target.Arch{ .arm = .v8_1a },
170 // .cpu_features = (Target.Arch{ .arm = .v8_1a }).getBaselineCpuFeatures(),
169 // .arch = Target.Arch{ .arm = .v8a },
170 // .cpu_features = (Target.Arch{ .arm = .v8a }).getBaselineCpuFeatures(),
171171 // .abi = .gnueabihf,
172172 // },
173173 // },