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 @"64bit",
9 crypto,
10 deprecated_v8,
11 detectroundchange,
12 fix_tn0009,
13 fix_tn0010,
14 fix_tn0011,
15 fix_tn0012,
16 fix_tn0013,
17 fixallfdivsqrt,
18 hard_quad_float,
19 hasleoncasa,
20 hasumacsmac,
21 insertnopload,
22 leon,
23 leoncyclecounter,
24 leonpwrpsr,
25 no_fmuls,
26 no_fsmuld,
27 no_predictor,
28 osa2011,
29 popc,
30 reserve_g1,
31 reserve_g2,
32 reserve_g3,
33 reserve_g4,
34 reserve_g5,
35 reserve_g6,
36 reserve_g7,
37 reserve_i0,
38 reserve_i1,
39 reserve_i2,
40 reserve_i3,
41 reserve_i4,
42 reserve_i5,
43 reserve_l0,
44 reserve_l1,
45 reserve_l2,
46 reserve_l3,
47 reserve_l4,
48 reserve_l5,
49 reserve_l6,
50 reserve_l7,
51 reserve_o0,
52 reserve_o1,
53 reserve_o2,
54 reserve_o3,
55 reserve_o4,
56 reserve_o5,
57 slow_rdpc,
58 soft_float,
59 soft_mul_div,
60 ua2005,
61 ua2007,
62 v8plus,
63 v9,
64 vis,
65 vis2,
66 vis3,
67};
68
69pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
70pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
71pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
72pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
73
74pub const all_features = blk: {
75 const len = @typeInfo(Feature).@"enum".field_names.len;
76 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
77 var result: [len]CpuFeature = undefined;
78 result[@backingInt(Feature.@"64bit")] = .{
79 .llvm_name = "64bit",
80 .description = "Enable 64-bit mode",
81 .dependencies = featureSet(&[_]Feature{
82 .v9,
83 }),
84 };
85 result[@backingInt(Feature.crypto)] = .{
86 .llvm_name = "crypto",
87 .description = "Enable cryptographic extensions",
88 .dependencies = featureSet(&[_]Feature{
89 .osa2011,
90 }),
91 };
92 result[@backingInt(Feature.deprecated_v8)] = .{
93 .llvm_name = "deprecated-v8",
94 .description = "Enable deprecated V8 instructions in V9 mode",
95 .dependencies = featureSet(&[_]Feature{}),
96 };
97 result[@backingInt(Feature.detectroundchange)] = .{
98 .llvm_name = "detectroundchange",
99 .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",
100 .dependencies = featureSet(&[_]Feature{}),
101 };
102 result[@backingInt(Feature.fix_tn0009)] = .{
103 .llvm_name = "fix-tn0009",
104 .description = "Enable workaround for errata described in GRLIB-TN-0009",
105 .dependencies = featureSet(&[_]Feature{}),
106 };
107 result[@backingInt(Feature.fix_tn0010)] = .{
108 .llvm_name = "fix-tn0010",
109 .description = "Enable workaround for errata described in GRLIB-TN-0010",
110 .dependencies = featureSet(&[_]Feature{}),
111 };
112 result[@backingInt(Feature.fix_tn0011)] = .{
113 .llvm_name = "fix-tn0011",
114 .description = "Enable workaround for errata described in GRLIB-TN-0011",
115 .dependencies = featureSet(&[_]Feature{}),
116 };
117 result[@backingInt(Feature.fix_tn0012)] = .{
118 .llvm_name = "fix-tn0012",
119 .description = "Enable workaround for errata described in GRLIB-TN-0012",
120 .dependencies = featureSet(&[_]Feature{}),
121 };
122 result[@backingInt(Feature.fix_tn0013)] = .{
123 .llvm_name = "fix-tn0013",
124 .description = "Enable workaround for errata described in GRLIB-TN-0013",
125 .dependencies = featureSet(&[_]Feature{}),
126 };
127 result[@backingInt(Feature.fixallfdivsqrt)] = .{
128 .llvm_name = "fixallfdivsqrt",
129 .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",
130 .dependencies = featureSet(&[_]Feature{}),
131 };
132 result[@backingInt(Feature.hard_quad_float)] = .{
133 .llvm_name = "hard-quad-float",
134 .description = "Enable quad-word floating point instructions",
135 .dependencies = featureSet(&[_]Feature{}),
136 };
137 result[@backingInt(Feature.hasleoncasa)] = .{
138 .llvm_name = "hasleoncasa",
139 .description = "Enable CASA instruction for LEON3 and LEON4 processors",
140 .dependencies = featureSet(&[_]Feature{}),
141 };
142 result[@backingInt(Feature.hasumacsmac)] = .{
143 .llvm_name = "hasumacsmac",
144 .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",
145 .dependencies = featureSet(&[_]Feature{}),
146 };
147 result[@backingInt(Feature.insertnopload)] = .{
148 .llvm_name = "insertnopload",
149 .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",
150 .dependencies = featureSet(&[_]Feature{}),
151 };
152 result[@backingInt(Feature.leon)] = .{
153 .llvm_name = "leon",
154 .description = "Enable LEON extensions",
155 .dependencies = featureSet(&[_]Feature{}),
156 };
157 result[@backingInt(Feature.leoncyclecounter)] = .{
158 .llvm_name = "leoncyclecounter",
159 .description = "Use the Leon cycle counter register",
160 .dependencies = featureSet(&[_]Feature{}),
161 };
162 result[@backingInt(Feature.leonpwrpsr)] = .{
163 .llvm_name = "leonpwrpsr",
164 .description = "Enable the PWRPSR instruction",
165 .dependencies = featureSet(&[_]Feature{}),
166 };
167 result[@backingInt(Feature.no_fmuls)] = .{
168 .llvm_name = "no-fmuls",
169 .description = "Disable the fmuls instruction.",
170 .dependencies = featureSet(&[_]Feature{}),
171 };
172 result[@backingInt(Feature.no_fsmuld)] = .{
173 .llvm_name = "no-fsmuld",
174 .description = "Disable the fsmuld instruction.",
175 .dependencies = featureSet(&[_]Feature{}),
176 };
177 result[@backingInt(Feature.no_predictor)] = .{
178 .llvm_name = "no-predictor",
179 .description = "Processor has no branch predictor, branches stall execution",
180 .dependencies = featureSet(&[_]Feature{}),
181 };
182 result[@backingInt(Feature.osa2011)] = .{
183 .llvm_name = "osa2011",
184 .description = "Enable Oracle SPARC Architecture 2011 extensions",
185 .dependencies = featureSet(&[_]Feature{
186 .vis,
187 .vis2,
188 .vis3,
189 }),
190 };
191 result[@backingInt(Feature.popc)] = .{
192 .llvm_name = "popc",
193 .description = "Use the popc (population count) instruction",
194 .dependencies = featureSet(&[_]Feature{}),
195 };
196 result[@backingInt(Feature.reserve_g1)] = .{
197 .llvm_name = "reserve-g1",
198 .description = "Reserve G1, making it unavailable as a GPR",
199 .dependencies = featureSet(&[_]Feature{}),
200 };
201 result[@backingInt(Feature.reserve_g2)] = .{
202 .llvm_name = "reserve-g2",
203 .description = "Reserve G2, making it unavailable as a GPR",
204 .dependencies = featureSet(&[_]Feature{}),
205 };
206 result[@backingInt(Feature.reserve_g3)] = .{
207 .llvm_name = "reserve-g3",
208 .description = "Reserve G3, making it unavailable as a GPR",
209 .dependencies = featureSet(&[_]Feature{}),
210 };
211 result[@backingInt(Feature.reserve_g4)] = .{
212 .llvm_name = "reserve-g4",
213 .description = "Reserve G4, making it unavailable as a GPR",
214 .dependencies = featureSet(&[_]Feature{}),
215 };
216 result[@backingInt(Feature.reserve_g5)] = .{
217 .llvm_name = "reserve-g5",
218 .description = "Reserve G5, making it unavailable as a GPR",
219 .dependencies = featureSet(&[_]Feature{}),
220 };
221 result[@backingInt(Feature.reserve_g6)] = .{
222 .llvm_name = "reserve-g6",
223 .description = "Reserve G6, making it unavailable as a GPR",
224 .dependencies = featureSet(&[_]Feature{}),
225 };
226 result[@backingInt(Feature.reserve_g7)] = .{
227 .llvm_name = "reserve-g7",
228 .description = "Reserve G7, making it unavailable as a GPR",
229 .dependencies = featureSet(&[_]Feature{}),
230 };
231 result[@backingInt(Feature.reserve_i0)] = .{
232 .llvm_name = "reserve-i0",
233 .description = "Reserve I0, making it unavailable as a GPR",
234 .dependencies = featureSet(&[_]Feature{}),
235 };
236 result[@backingInt(Feature.reserve_i1)] = .{
237 .llvm_name = "reserve-i1",
238 .description = "Reserve I1, making it unavailable as a GPR",
239 .dependencies = featureSet(&[_]Feature{}),
240 };
241 result[@backingInt(Feature.reserve_i2)] = .{
242 .llvm_name = "reserve-i2",
243 .description = "Reserve I2, making it unavailable as a GPR",
244 .dependencies = featureSet(&[_]Feature{}),
245 };
246 result[@backingInt(Feature.reserve_i3)] = .{
247 .llvm_name = "reserve-i3",
248 .description = "Reserve I3, making it unavailable as a GPR",
249 .dependencies = featureSet(&[_]Feature{}),
250 };
251 result[@backingInt(Feature.reserve_i4)] = .{
252 .llvm_name = "reserve-i4",
253 .description = "Reserve I4, making it unavailable as a GPR",
254 .dependencies = featureSet(&[_]Feature{}),
255 };
256 result[@backingInt(Feature.reserve_i5)] = .{
257 .llvm_name = "reserve-i5",
258 .description = "Reserve I5, making it unavailable as a GPR",
259 .dependencies = featureSet(&[_]Feature{}),
260 };
261 result[@backingInt(Feature.reserve_l0)] = .{
262 .llvm_name = "reserve-l0",
263 .description = "Reserve L0, making it unavailable as a GPR",
264 .dependencies = featureSet(&[_]Feature{}),
265 };
266 result[@backingInt(Feature.reserve_l1)] = .{
267 .llvm_name = "reserve-l1",
268 .description = "Reserve L1, making it unavailable as a GPR",
269 .dependencies = featureSet(&[_]Feature{}),
270 };
271 result[@backingInt(Feature.reserve_l2)] = .{
272 .llvm_name = "reserve-l2",
273 .description = "Reserve L2, making it unavailable as a GPR",
274 .dependencies = featureSet(&[_]Feature{}),
275 };
276 result[@backingInt(Feature.reserve_l3)] = .{
277 .llvm_name = "reserve-l3",
278 .description = "Reserve L3, making it unavailable as a GPR",
279 .dependencies = featureSet(&[_]Feature{}),
280 };
281 result[@backingInt(Feature.reserve_l4)] = .{
282 .llvm_name = "reserve-l4",
283 .description = "Reserve L4, making it unavailable as a GPR",
284 .dependencies = featureSet(&[_]Feature{}),
285 };
286 result[@backingInt(Feature.reserve_l5)] = .{
287 .llvm_name = "reserve-l5",
288 .description = "Reserve L5, making it unavailable as a GPR",
289 .dependencies = featureSet(&[_]Feature{}),
290 };
291 result[@backingInt(Feature.reserve_l6)] = .{
292 .llvm_name = "reserve-l6",
293 .description = "Reserve L6, making it unavailable as a GPR",
294 .dependencies = featureSet(&[_]Feature{}),
295 };
296 result[@backingInt(Feature.reserve_l7)] = .{
297 .llvm_name = "reserve-l7",
298 .description = "Reserve L7, making it unavailable as a GPR",
299 .dependencies = featureSet(&[_]Feature{}),
300 };
301 result[@backingInt(Feature.reserve_o0)] = .{
302 .llvm_name = "reserve-o0",
303 .description = "Reserve O0, making it unavailable as a GPR",
304 .dependencies = featureSet(&[_]Feature{}),
305 };
306 result[@backingInt(Feature.reserve_o1)] = .{
307 .llvm_name = "reserve-o1",
308 .description = "Reserve O1, making it unavailable as a GPR",
309 .dependencies = featureSet(&[_]Feature{}),
310 };
311 result[@backingInt(Feature.reserve_o2)] = .{
312 .llvm_name = "reserve-o2",
313 .description = "Reserve O2, making it unavailable as a GPR",
314 .dependencies = featureSet(&[_]Feature{}),
315 };
316 result[@backingInt(Feature.reserve_o3)] = .{
317 .llvm_name = "reserve-o3",
318 .description = "Reserve O3, making it unavailable as a GPR",
319 .dependencies = featureSet(&[_]Feature{}),
320 };
321 result[@backingInt(Feature.reserve_o4)] = .{
322 .llvm_name = "reserve-o4",
323 .description = "Reserve O4, making it unavailable as a GPR",
324 .dependencies = featureSet(&[_]Feature{}),
325 };
326 result[@backingInt(Feature.reserve_o5)] = .{
327 .llvm_name = "reserve-o5",
328 .description = "Reserve O5, making it unavailable as a GPR",
329 .dependencies = featureSet(&[_]Feature{}),
330 };
331 result[@backingInt(Feature.slow_rdpc)] = .{
332 .llvm_name = "slow-rdpc",
333 .description = "rd %pc, %XX is slow",
334 .dependencies = featureSet(&[_]Feature{
335 .v9,
336 }),
337 };
338 result[@backingInt(Feature.soft_float)] = .{
339 .llvm_name = "soft-float",
340 .description = "Use software emulation for floating point",
341 .dependencies = featureSet(&[_]Feature{}),
342 };
343 result[@backingInt(Feature.soft_mul_div)] = .{
344 .llvm_name = "soft-mul-div",
345 .description = "Use software emulation for integer multiply and divide",
346 .dependencies = featureSet(&[_]Feature{}),
347 };
348 result[@backingInt(Feature.ua2005)] = .{
349 .llvm_name = "ua2005",
350 .description = "Enable UltraSPARC Architecture 2005 extensions",
351 .dependencies = featureSet(&[_]Feature{
352 .vis,
353 .vis2,
354 }),
355 };
356 result[@backingInt(Feature.ua2007)] = .{
357 .llvm_name = "ua2007",
358 .description = "Enable UltraSPARC Architecture 2007 extensions",
359 .dependencies = featureSet(&[_]Feature{
360 .vis,
361 .vis2,
362 }),
363 };
364 result[@backingInt(Feature.v8plus)] = .{
365 .llvm_name = "v8plus",
366 .description = "Enable V8+ mode, allowing use of 64-bit V9 instructions in 32-bit code",
367 .dependencies = featureSet(&[_]Feature{}),
368 };
369 result[@backingInt(Feature.v9)] = .{
370 .llvm_name = "v9",
371 .description = "Enable SPARC-V9 instructions",
372 .dependencies = featureSet(&[_]Feature{}),
373 };
374 result[@backingInt(Feature.vis)] = .{
375 .llvm_name = "vis",
376 .description = "Enable UltraSPARC Visual Instruction Set extensions",
377 .dependencies = featureSet(&[_]Feature{
378 .v9,
379 }),
380 };
381 result[@backingInt(Feature.vis2)] = .{
382 .llvm_name = "vis2",
383 .description = "Enable Visual Instruction Set extensions II",
384 .dependencies = featureSet(&[_]Feature{
385 .v9,
386 }),
387 };
388 result[@backingInt(Feature.vis3)] = .{
389 .llvm_name = "vis3",
390 .description = "Enable Visual Instruction Set extensions III",
391 .dependencies = featureSet(&[_]Feature{
392 .v9,
393 }),
394 };
395 const ti = @typeInfo(Feature);
396 for (&result, 0..) |*elem, i| {
397 elem.index = i;
398 elem.name = ti.@"enum".field_names[i];
399 }
400 break :blk result;
401};
402
403pub const cpu = struct {
404 pub const at697e: CpuModel = .{
405 .name = "at697e",
406 .llvm_name = "at697e",
407 .features = featureSet(&[_]Feature{
408 .insertnopload,
409 .leon,
410 }),
411 };
412 pub const at697f: CpuModel = .{
413 .name = "at697f",
414 .llvm_name = "at697f",
415 .features = featureSet(&[_]Feature{
416 .insertnopload,
417 .leon,
418 }),
419 };
420 pub const f934: CpuModel = .{
421 .name = "f934",
422 .llvm_name = "f934",
423 .features = featureSet(&[_]Feature{}),
424 };
425 pub const generic: CpuModel = .{
426 .name = "generic",
427 .llvm_name = "generic",
428 .features = featureSet(&[_]Feature{}),
429 };
430 pub const gr712rc: CpuModel = .{
431 .name = "gr712rc",
432 .llvm_name = "gr712rc",
433 .features = featureSet(&[_]Feature{
434 .hasleoncasa,
435 .leon,
436 }),
437 };
438 pub const gr740: CpuModel = .{
439 .name = "gr740",
440 .llvm_name = "gr740",
441 .features = featureSet(&[_]Feature{
442 .hasleoncasa,
443 .hasumacsmac,
444 .leon,
445 .leoncyclecounter,
446 .leonpwrpsr,
447 }),
448 };
449 pub const hypersparc: CpuModel = .{
450 .name = "hypersparc",
451 .llvm_name = "hypersparc",
452 .features = featureSet(&[_]Feature{}),
453 };
454 pub const leon2: CpuModel = .{
455 .name = "leon2",
456 .llvm_name = "leon2",
457 .features = featureSet(&[_]Feature{
458 .leon,
459 }),
460 };
461 pub const leon3: CpuModel = .{
462 .name = "leon3",
463 .llvm_name = "leon3",
464 .features = featureSet(&[_]Feature{
465 .hasumacsmac,
466 .leon,
467 }),
468 };
469 pub const leon4: CpuModel = .{
470 .name = "leon4",
471 .llvm_name = "leon4",
472 .features = featureSet(&[_]Feature{
473 .hasleoncasa,
474 .hasumacsmac,
475 .leon,
476 }),
477 };
478 pub const ma2080: CpuModel = .{
479 .name = "ma2080",
480 .llvm_name = "ma2080",
481 .features = featureSet(&[_]Feature{
482 .hasleoncasa,
483 .leon,
484 }),
485 };
486 pub const ma2085: CpuModel = .{
487 .name = "ma2085",
488 .llvm_name = "ma2085",
489 .features = featureSet(&[_]Feature{
490 .hasleoncasa,
491 .leon,
492 }),
493 };
494 pub const ma2100: CpuModel = .{
495 .name = "ma2100",
496 .llvm_name = "ma2100",
497 .features = featureSet(&[_]Feature{
498 .hasleoncasa,
499 .leon,
500 }),
501 };
502 pub const ma2150: CpuModel = .{
503 .name = "ma2150",
504 .llvm_name = "ma2150",
505 .features = featureSet(&[_]Feature{
506 .hasleoncasa,
507 .leon,
508 }),
509 };
510 pub const ma2155: CpuModel = .{
511 .name = "ma2155",
512 .llvm_name = "ma2155",
513 .features = featureSet(&[_]Feature{
514 .hasleoncasa,
515 .leon,
516 }),
517 };
518 pub const ma2450: CpuModel = .{
519 .name = "ma2450",
520 .llvm_name = "ma2450",
521 .features = featureSet(&[_]Feature{
522 .hasleoncasa,
523 .leon,
524 }),
525 };
526 pub const ma2455: CpuModel = .{
527 .name = "ma2455",
528 .llvm_name = "ma2455",
529 .features = featureSet(&[_]Feature{
530 .hasleoncasa,
531 .leon,
532 }),
533 };
534 pub const ma2480: CpuModel = .{
535 .name = "ma2480",
536 .llvm_name = "ma2480",
537 .features = featureSet(&[_]Feature{
538 .hasleoncasa,
539 .leon,
540 }),
541 };
542 pub const ma2485: CpuModel = .{
543 .name = "ma2485",
544 .llvm_name = "ma2485",
545 .features = featureSet(&[_]Feature{
546 .hasleoncasa,
547 .leon,
548 }),
549 };
550 pub const ma2x5x: CpuModel = .{
551 .name = "ma2x5x",
552 .llvm_name = "ma2x5x",
553 .features = featureSet(&[_]Feature{
554 .hasleoncasa,
555 .leon,
556 }),
557 };
558 pub const ma2x8x: CpuModel = .{
559 .name = "ma2x8x",
560 .llvm_name = "ma2x8x",
561 .features = featureSet(&[_]Feature{
562 .hasleoncasa,
563 .leon,
564 }),
565 };
566 pub const myriad2: CpuModel = .{
567 .name = "myriad2",
568 .llvm_name = "myriad2",
569 .features = featureSet(&[_]Feature{
570 .hasleoncasa,
571 .leon,
572 }),
573 };
574 pub const myriad2_1: CpuModel = .{
575 .name = "myriad2_1",
576 .llvm_name = "myriad2.1",
577 .features = featureSet(&[_]Feature{
578 .hasleoncasa,
579 .leon,
580 }),
581 };
582 pub const myriad2_2: CpuModel = .{
583 .name = "myriad2_2",
584 .llvm_name = "myriad2.2",
585 .features = featureSet(&[_]Feature{
586 .hasleoncasa,
587 .leon,
588 }),
589 };
590 pub const myriad2_3: CpuModel = .{
591 .name = "myriad2_3",
592 .llvm_name = "myriad2.3",
593 .features = featureSet(&[_]Feature{
594 .hasleoncasa,
595 .leon,
596 }),
597 };
598 pub const niagara: CpuModel = .{
599 .name = "niagara",
600 .llvm_name = "niagara",
601 .features = featureSet(&[_]Feature{
602 .deprecated_v8,
603 .no_predictor,
604 .ua2005,
605 }),
606 };
607 pub const niagara2: CpuModel = .{
608 .name = "niagara2",
609 .llvm_name = "niagara2",
610 .features = featureSet(&[_]Feature{
611 .deprecated_v8,
612 .no_predictor,
613 .popc,
614 .ua2005,
615 }),
616 };
617 pub const niagara3: CpuModel = .{
618 .name = "niagara3",
619 .llvm_name = "niagara3",
620 .features = featureSet(&[_]Feature{
621 .deprecated_v8,
622 .no_predictor,
623 .popc,
624 .ua2005,
625 .ua2007,
626 .vis3,
627 }),
628 };
629 pub const niagara4: CpuModel = .{
630 .name = "niagara4",
631 .llvm_name = "niagara4",
632 .features = featureSet(&[_]Feature{
633 .crypto,
634 .deprecated_v8,
635 .popc,
636 .ua2005,
637 .ua2007,
638 }),
639 };
640 pub const sparclet: CpuModel = .{
641 .name = "sparclet",
642 .llvm_name = "sparclet",
643 .features = featureSet(&[_]Feature{}),
644 };
645 pub const sparclite: CpuModel = .{
646 .name = "sparclite",
647 .llvm_name = "sparclite",
648 .features = featureSet(&[_]Feature{}),
649 };
650 pub const sparclite86x: CpuModel = .{
651 .name = "sparclite86x",
652 .llvm_name = "sparclite86x",
653 .features = featureSet(&[_]Feature{}),
654 };
655 pub const supersparc: CpuModel = .{
656 .name = "supersparc",
657 .llvm_name = "supersparc",
658 .features = featureSet(&[_]Feature{}),
659 };
660 pub const tsc701: CpuModel = .{
661 .name = "tsc701",
662 .llvm_name = "tsc701",
663 .features = featureSet(&[_]Feature{}),
664 };
665 pub const ultrasparc: CpuModel = .{
666 .name = "ultrasparc",
667 .llvm_name = "ultrasparc",
668 .features = featureSet(&[_]Feature{
669 .deprecated_v8,
670 .slow_rdpc,
671 .vis,
672 }),
673 };
674 pub const ultrasparc3: CpuModel = .{
675 .name = "ultrasparc3",
676 .llvm_name = "ultrasparc3",
677 .features = featureSet(&[_]Feature{
678 .deprecated_v8,
679 .slow_rdpc,
680 .vis,
681 .vis2,
682 }),
683 };
684 pub const ut699: CpuModel = .{
685 .name = "ut699",
686 .llvm_name = "ut699",
687 .features = featureSet(&[_]Feature{
688 .fixallfdivsqrt,
689 .insertnopload,
690 .leon,
691 .no_fmuls,
692 .no_fsmuld,
693 }),
694 };
695 pub const v7: CpuModel = .{
696 .name = "v7",
697 .llvm_name = "v7",
698 .features = featureSet(&[_]Feature{
699 .no_fsmuld,
700 .soft_mul_div,
701 }),
702 };
703 pub const v8: CpuModel = .{
704 .name = "v8",
705 .llvm_name = "v8",
706 .features = featureSet(&[_]Feature{}),
707 };
708 pub const v9: CpuModel = .{
709 .name = "v9",
710 .llvm_name = "v9",
711 .features = featureSet(&[_]Feature{
712 .v9,
713 }),
714 };
715};