master
1//! This file is auto-generated by tools/update_cpu_features.zig.
2
3const std = @import("../std.zig");
4const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;
6
7pub const Feature = enum {
8 isa_68000,
9 isa_68010,
10 isa_68020,
11 isa_68030,
12 isa_68040,
13 isa_68060,
14 isa_68881,
15 isa_68882,
16 reserve_a0,
17 reserve_a1,
18 reserve_a2,
19 reserve_a3,
20 reserve_a4,
21 reserve_a5,
22 reserve_a6,
23 reserve_d0,
24 reserve_d1,
25 reserve_d2,
26 reserve_d3,
27 reserve_d4,
28 reserve_d5,
29 reserve_d6,
30 reserve_d7,
31};
32
33pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
34pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
35pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
36pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
37
38pub const all_features = blk: {
39 const len = @typeInfo(Feature).@"enum".fields.len;
40 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
41 var result: [len]CpuFeature = undefined;
42 result[@intFromEnum(Feature.isa_68000)] = .{
43 .llvm_name = "isa-68000",
44 .description = "Is M68000 ISA supported",
45 .dependencies = featureSet(&[_]Feature{}),
46 };
47 result[@intFromEnum(Feature.isa_68010)] = .{
48 .llvm_name = "isa-68010",
49 .description = "Is M68010 ISA supported",
50 .dependencies = featureSet(&[_]Feature{
51 .isa_68000,
52 }),
53 };
54 result[@intFromEnum(Feature.isa_68020)] = .{
55 .llvm_name = "isa-68020",
56 .description = "Is M68020 ISA supported",
57 .dependencies = featureSet(&[_]Feature{
58 .isa_68010,
59 }),
60 };
61 result[@intFromEnum(Feature.isa_68030)] = .{
62 .llvm_name = "isa-68030",
63 .description = "Is M68030 ISA supported",
64 .dependencies = featureSet(&[_]Feature{
65 .isa_68020,
66 }),
67 };
68 result[@intFromEnum(Feature.isa_68040)] = .{
69 .llvm_name = "isa-68040",
70 .description = "Is M68040 ISA supported",
71 .dependencies = featureSet(&[_]Feature{
72 .isa_68030,
73 .isa_68882,
74 }),
75 };
76 result[@intFromEnum(Feature.isa_68060)] = .{
77 .llvm_name = "isa-68060",
78 .description = "Is M68060 ISA supported",
79 .dependencies = featureSet(&[_]Feature{
80 .isa_68040,
81 }),
82 };
83 result[@intFromEnum(Feature.isa_68881)] = .{
84 .llvm_name = "isa-68881",
85 .description = "Is M68881 (FPU) ISA supported",
86 .dependencies = featureSet(&[_]Feature{}),
87 };
88 result[@intFromEnum(Feature.isa_68882)] = .{
89 .llvm_name = "isa-68882",
90 .description = "Is M68882 (FPU) ISA supported",
91 .dependencies = featureSet(&[_]Feature{
92 .isa_68881,
93 }),
94 };
95 result[@intFromEnum(Feature.reserve_a0)] = .{
96 .llvm_name = "reserve-a0",
97 .description = "Reserve A0 register",
98 .dependencies = featureSet(&[_]Feature{}),
99 };
100 result[@intFromEnum(Feature.reserve_a1)] = .{
101 .llvm_name = "reserve-a1",
102 .description = "Reserve A1 register",
103 .dependencies = featureSet(&[_]Feature{}),
104 };
105 result[@intFromEnum(Feature.reserve_a2)] = .{
106 .llvm_name = "reserve-a2",
107 .description = "Reserve A2 register",
108 .dependencies = featureSet(&[_]Feature{}),
109 };
110 result[@intFromEnum(Feature.reserve_a3)] = .{
111 .llvm_name = "reserve-a3",
112 .description = "Reserve A3 register",
113 .dependencies = featureSet(&[_]Feature{}),
114 };
115 result[@intFromEnum(Feature.reserve_a4)] = .{
116 .llvm_name = "reserve-a4",
117 .description = "Reserve A4 register",
118 .dependencies = featureSet(&[_]Feature{}),
119 };
120 result[@intFromEnum(Feature.reserve_a5)] = .{
121 .llvm_name = "reserve-a5",
122 .description = "Reserve A5 register",
123 .dependencies = featureSet(&[_]Feature{}),
124 };
125 result[@intFromEnum(Feature.reserve_a6)] = .{
126 .llvm_name = "reserve-a6",
127 .description = "Reserve A6 register",
128 .dependencies = featureSet(&[_]Feature{}),
129 };
130 result[@intFromEnum(Feature.reserve_d0)] = .{
131 .llvm_name = "reserve-d0",
132 .description = "Reserve D0 register",
133 .dependencies = featureSet(&[_]Feature{}),
134 };
135 result[@intFromEnum(Feature.reserve_d1)] = .{
136 .llvm_name = "reserve-d1",
137 .description = "Reserve D1 register",
138 .dependencies = featureSet(&[_]Feature{}),
139 };
140 result[@intFromEnum(Feature.reserve_d2)] = .{
141 .llvm_name = "reserve-d2",
142 .description = "Reserve D2 register",
143 .dependencies = featureSet(&[_]Feature{}),
144 };
145 result[@intFromEnum(Feature.reserve_d3)] = .{
146 .llvm_name = "reserve-d3",
147 .description = "Reserve D3 register",
148 .dependencies = featureSet(&[_]Feature{}),
149 };
150 result[@intFromEnum(Feature.reserve_d4)] = .{
151 .llvm_name = "reserve-d4",
152 .description = "Reserve D4 register",
153 .dependencies = featureSet(&[_]Feature{}),
154 };
155 result[@intFromEnum(Feature.reserve_d5)] = .{
156 .llvm_name = "reserve-d5",
157 .description = "Reserve D5 register",
158 .dependencies = featureSet(&[_]Feature{}),
159 };
160 result[@intFromEnum(Feature.reserve_d6)] = .{
161 .llvm_name = "reserve-d6",
162 .description = "Reserve D6 register",
163 .dependencies = featureSet(&[_]Feature{}),
164 };
165 result[@intFromEnum(Feature.reserve_d7)] = .{
166 .llvm_name = "reserve-d7",
167 .description = "Reserve D7 register",
168 .dependencies = featureSet(&[_]Feature{}),
169 };
170 const ti = @typeInfo(Feature);
171 for (&result, 0..) |*elem, i| {
172 elem.index = i;
173 elem.name = ti.@"enum".fields[i].name;
174 }
175 break :blk result;
176};
177
178pub const cpu = struct {
179 pub const generic: CpuModel = .{
180 .name = "generic",
181 .llvm_name = "generic",
182 .features = featureSet(&[_]Feature{
183 .isa_68000,
184 }),
185 };
186 pub const M68000: CpuModel = .{
187 .name = "M68000",
188 .llvm_name = "M68000",
189 .features = featureSet(&[_]Feature{
190 .isa_68000,
191 }),
192 };
193 pub const M68010: CpuModel = .{
194 .name = "M68010",
195 .llvm_name = "M68010",
196 .features = featureSet(&[_]Feature{
197 .isa_68010,
198 }),
199 };
200 pub const M68020: CpuModel = .{
201 .name = "M68020",
202 .llvm_name = "M68020",
203 .features = featureSet(&[_]Feature{
204 .isa_68020,
205 }),
206 };
207 pub const M68030: CpuModel = .{
208 .name = "M68030",
209 .llvm_name = "M68030",
210 .features = featureSet(&[_]Feature{
211 .isa_68030,
212 }),
213 };
214 pub const M68040: CpuModel = .{
215 .name = "M68040",
216 .llvm_name = "M68040",
217 .features = featureSet(&[_]Feature{
218 .isa_68040,
219 }),
220 };
221 pub const M68060: CpuModel = .{
222 .name = "M68060",
223 .llvm_name = "M68060",
224 .features = featureSet(&[_]Feature{
225 .isa_68060,
226 }),
227 };
228};