aboutsummaryrefslogtreecommitdiff
path: root/lib/std/target/msp430.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-01-21 19:40:44 -0500
committerAndrew Kelley <andrew@ziglang.org>2020-01-21 19:40:44 -0500
commit92559cd02cbf6497b99eb5193c9094e6d92c214e (patch)
tree13ff36b93f06555fd31803750debbd03d10f4b47 /lib/std/target/msp430.zig
parent15d5cab569a5ffc6495d606f460264429043aabf (diff)
downloadzig-92559cd02cbf6497b99eb5193c9094e6d92c214e.tar.gz
zig-92559cd02cbf6497b99eb5193c9094e6d92c214e.zip
hit a comptime limitation with computing dense sets
Diffstat (limited to 'lib/std/target/msp430.zig')
-rw-r--r--lib/std/target/msp430.zig30
1 files changed, 14 insertions, 16 deletions
diff --git a/lib/std/target/msp430.zig b/lib/std/target/msp430.zig
index 9bc184d4da..ecbc362b1a 100644
--- a/lib/std/target/msp430.zig
+++ b/lib/std/target/msp430.zig
@@ -12,36 +12,34 @@ pub usingnamespace Cpu.Feature.feature_set_fns(Feature);
pub const all_features = blk: {
const len = @typeInfo(Feature).Enum.fields.len;
- std.debug.assert(len <= Cpu.Feature.Set.bit_count);
+ std.debug.assert(len <= Cpu.Feature.Set.needed_bit_count);
var result: [len]Cpu.Feature = undefined;
result[@enumToInt(Feature.ext)] = .{
- .index = @enumToInt(Feature.ext),
- .name = @tagName(Feature.ext),
.llvm_name = "ext",
.description = "Enable MSP430-X extensions",
- .dependencies = featureSet(&[_]Feature{}),
+ .dependencies = sparseFeatureSet(&[_]Feature{}),
};
result[@enumToInt(Feature.hwmult16)] = .{
- .index = @enumToInt(Feature.hwmult16),
- .name = @tagName(Feature.hwmult16),
.llvm_name = "hwmult16",
.description = "Enable 16-bit hardware multiplier",
- .dependencies = featureSet(&[_]Feature{}),
+ .dependencies = sparseFeatureSet(&[_]Feature{}),
};
result[@enumToInt(Feature.hwmult32)] = .{
- .index = @enumToInt(Feature.hwmult32),
- .name = @tagName(Feature.hwmult32),
.llvm_name = "hwmult32",
.description = "Enable 32-bit hardware multiplier",
- .dependencies = featureSet(&[_]Feature{}),
+ .dependencies = sparseFeatureSet(&[_]Feature{}),
};
result[@enumToInt(Feature.hwmultf5)] = .{
- .index = @enumToInt(Feature.hwmultf5),
- .name = @tagName(Feature.hwmultf5),
.llvm_name = "hwmultf5",
.description = "Enable F5 series hardware multiplier",
- .dependencies = featureSet(&[_]Feature{}),
+ .dependencies = sparseFeatureSet(&[_]Feature{}),
};
+ const ti = @typeInfo(Feature);
+ for (result) |*elem, i| {
+ elem.index = i;
+ elem.name = ti.Enum.fields[i].name;
+ elem.dependencies.initAsDependencies(i, &result);
+ }
break :blk result;
};
@@ -49,17 +47,17 @@ pub const cpu = struct {
pub const generic = Cpu{
.name = "generic",
.llvm_name = "generic",
- .features = featureSet(&[_]Feature{}),
+ .features = featureSet(&all_features, &[_]Feature{}),
};
pub const msp430 = Cpu{
.name = "msp430",
.llvm_name = "msp430",
- .features = featureSet(&[_]Feature{}),
+ .features = featureSet(&all_features, &[_]Feature{}),
};
pub const msp430x = Cpu{
.name = "msp430x",
.llvm_name = "msp430x",
- .features = featureSet(&[_]Feature{
+ .features = featureSet(&all_features, &[_]Feature{
.ext,
}),
};