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 backchain,
9 bear_enhancement,
10 concurrent_functions,
11 deflate_conversion,
12 dfp_packed_conversion,
13 dfp_zoned_conversion,
14 distinct_ops,
15 enhanced_dat_2,
16 enhanced_sort,
17 execution_hint,
18 fast_serialization,
19 fp_extension,
20 guarded_storage,
21 high_word,
22 insert_reference_bits_multiple,
23 interlocked_access1,
24 load_and_trap,
25 load_and_zero_rightmost_byte,
26 load_store_on_cond,
27 load_store_on_cond_2,
28 message_security_assist_extension12,
29 message_security_assist_extension3,
30 message_security_assist_extension4,
31 message_security_assist_extension5,
32 message_security_assist_extension7,
33 message_security_assist_extension8,
34 message_security_assist_extension9,
35 miscellaneous_extensions,
36 miscellaneous_extensions_2,
37 miscellaneous_extensions_3,
38 miscellaneous_extensions_4,
39 nnp_assist,
40 population_count,
41 processor_activity_instrumentation,
42 processor_assist,
43 reset_dat_protection,
44 reset_reference_bits_multiple,
45 soft_float,
46 test_pending_external_interruption,
47 transactional_execution,
48 unaligned_symbols,
49 vector,
50 vector_enhancements_1,
51 vector_enhancements_2,
52 vector_enhancements_3,
53 vector_packed_decimal,
54 vector_packed_decimal_enhancement,
55 vector_packed_decimal_enhancement_2,
56 vector_packed_decimal_enhancement_3,
57};
58
59pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
60pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
61pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
62pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
63
64pub const all_features = blk: {
65 const len = @typeInfo(Feature).@"enum".fields.len;
66 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
67 var result: [len]CpuFeature = undefined;
68 result[@intFromEnum(Feature.backchain)] = .{
69 .llvm_name = "backchain",
70 .description = "Store the address of the caller's frame into the callee's stack frame",
71 .dependencies = featureSet(&[_]Feature{}),
72 };
73 result[@intFromEnum(Feature.bear_enhancement)] = .{
74 .llvm_name = "bear-enhancement",
75 .description = "Assume that the BEAR-enhancement facility is installed",
76 .dependencies = featureSet(&[_]Feature{}),
77 };
78 result[@intFromEnum(Feature.concurrent_functions)] = .{
79 .llvm_name = "concurrent-functions",
80 .description = "Assume that the concurrent-functions facility is installed",
81 .dependencies = featureSet(&[_]Feature{}),
82 };
83 result[@intFromEnum(Feature.deflate_conversion)] = .{
84 .llvm_name = "deflate-conversion",
85 .description = "Assume that the deflate-conversion facility is installed",
86 .dependencies = featureSet(&[_]Feature{}),
87 };
88 result[@intFromEnum(Feature.dfp_packed_conversion)] = .{
89 .llvm_name = "dfp-packed-conversion",
90 .description = "Assume that the DFP packed-conversion facility is installed",
91 .dependencies = featureSet(&[_]Feature{}),
92 };
93 result[@intFromEnum(Feature.dfp_zoned_conversion)] = .{
94 .llvm_name = "dfp-zoned-conversion",
95 .description = "Assume that the DFP zoned-conversion facility is installed",
96 .dependencies = featureSet(&[_]Feature{}),
97 };
98 result[@intFromEnum(Feature.distinct_ops)] = .{
99 .llvm_name = "distinct-ops",
100 .description = "Assume that the distinct-operands facility is installed",
101 .dependencies = featureSet(&[_]Feature{}),
102 };
103 result[@intFromEnum(Feature.enhanced_dat_2)] = .{
104 .llvm_name = "enhanced-dat-2",
105 .description = "Assume that the enhanced-DAT facility 2 is installed",
106 .dependencies = featureSet(&[_]Feature{}),
107 };
108 result[@intFromEnum(Feature.enhanced_sort)] = .{
109 .llvm_name = "enhanced-sort",
110 .description = "Assume that the enhanced-sort facility is installed",
111 .dependencies = featureSet(&[_]Feature{}),
112 };
113 result[@intFromEnum(Feature.execution_hint)] = .{
114 .llvm_name = "execution-hint",
115 .description = "Assume that the execution-hint facility is installed",
116 .dependencies = featureSet(&[_]Feature{}),
117 };
118 result[@intFromEnum(Feature.fast_serialization)] = .{
119 .llvm_name = "fast-serialization",
120 .description = "Assume that the fast-serialization facility is installed",
121 .dependencies = featureSet(&[_]Feature{}),
122 };
123 result[@intFromEnum(Feature.fp_extension)] = .{
124 .llvm_name = "fp-extension",
125 .description = "Assume that the floating-point extension facility is installed",
126 .dependencies = featureSet(&[_]Feature{}),
127 };
128 result[@intFromEnum(Feature.guarded_storage)] = .{
129 .llvm_name = "guarded-storage",
130 .description = "Assume that the guarded-storage facility is installed",
131 .dependencies = featureSet(&[_]Feature{}),
132 };
133 result[@intFromEnum(Feature.high_word)] = .{
134 .llvm_name = "high-word",
135 .description = "Assume that the high-word facility is installed",
136 .dependencies = featureSet(&[_]Feature{}),
137 };
138 result[@intFromEnum(Feature.insert_reference_bits_multiple)] = .{
139 .llvm_name = "insert-reference-bits-multiple",
140 .description = "Assume that the insert-reference-bits-multiple facility is installed",
141 .dependencies = featureSet(&[_]Feature{}),
142 };
143 result[@intFromEnum(Feature.interlocked_access1)] = .{
144 .llvm_name = "interlocked-access1",
145 .description = "Assume that interlocked-access facility 1 is installed",
146 .dependencies = featureSet(&[_]Feature{}),
147 };
148 result[@intFromEnum(Feature.load_and_trap)] = .{
149 .llvm_name = "load-and-trap",
150 .description = "Assume that the load-and-trap facility is installed",
151 .dependencies = featureSet(&[_]Feature{}),
152 };
153 result[@intFromEnum(Feature.load_and_zero_rightmost_byte)] = .{
154 .llvm_name = "load-and-zero-rightmost-byte",
155 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
156 .dependencies = featureSet(&[_]Feature{}),
157 };
158 result[@intFromEnum(Feature.load_store_on_cond)] = .{
159 .llvm_name = "load-store-on-cond",
160 .description = "Assume that the load/store-on-condition facility is installed",
161 .dependencies = featureSet(&[_]Feature{}),
162 };
163 result[@intFromEnum(Feature.load_store_on_cond_2)] = .{
164 .llvm_name = "load-store-on-cond-2",
165 .description = "Assume that the load/store-on-condition facility 2 is installed",
166 .dependencies = featureSet(&[_]Feature{}),
167 };
168 result[@intFromEnum(Feature.message_security_assist_extension12)] = .{
169 .llvm_name = "message-security-assist-extension12",
170 .description = "Assume that the message-security-assist extension facility 12 is installed",
171 .dependencies = featureSet(&[_]Feature{}),
172 };
173 result[@intFromEnum(Feature.message_security_assist_extension3)] = .{
174 .llvm_name = "message-security-assist-extension3",
175 .description = "Assume that the message-security-assist extension facility 3 is installed",
176 .dependencies = featureSet(&[_]Feature{}),
177 };
178 result[@intFromEnum(Feature.message_security_assist_extension4)] = .{
179 .llvm_name = "message-security-assist-extension4",
180 .description = "Assume that the message-security-assist extension facility 4 is installed",
181 .dependencies = featureSet(&[_]Feature{}),
182 };
183 result[@intFromEnum(Feature.message_security_assist_extension5)] = .{
184 .llvm_name = "message-security-assist-extension5",
185 .description = "Assume that the message-security-assist extension facility 5 is installed",
186 .dependencies = featureSet(&[_]Feature{}),
187 };
188 result[@intFromEnum(Feature.message_security_assist_extension7)] = .{
189 .llvm_name = "message-security-assist-extension7",
190 .description = "Assume that the message-security-assist extension facility 7 is installed",
191 .dependencies = featureSet(&[_]Feature{}),
192 };
193 result[@intFromEnum(Feature.message_security_assist_extension8)] = .{
194 .llvm_name = "message-security-assist-extension8",
195 .description = "Assume that the message-security-assist extension facility 8 is installed",
196 .dependencies = featureSet(&[_]Feature{}),
197 };
198 result[@intFromEnum(Feature.message_security_assist_extension9)] = .{
199 .llvm_name = "message-security-assist-extension9",
200 .description = "Assume that the message-security-assist extension facility 9 is installed",
201 .dependencies = featureSet(&[_]Feature{}),
202 };
203 result[@intFromEnum(Feature.miscellaneous_extensions)] = .{
204 .llvm_name = "miscellaneous-extensions",
205 .description = "Assume that the miscellaneous-extensions facility is installed",
206 .dependencies = featureSet(&[_]Feature{}),
207 };
208 result[@intFromEnum(Feature.miscellaneous_extensions_2)] = .{
209 .llvm_name = "miscellaneous-extensions-2",
210 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
211 .dependencies = featureSet(&[_]Feature{}),
212 };
213 result[@intFromEnum(Feature.miscellaneous_extensions_3)] = .{
214 .llvm_name = "miscellaneous-extensions-3",
215 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
216 .dependencies = featureSet(&[_]Feature{}),
217 };
218 result[@intFromEnum(Feature.miscellaneous_extensions_4)] = .{
219 .llvm_name = "miscellaneous-extensions-4",
220 .description = "Assume that the miscellaneous-extensions facility 4 is installed",
221 .dependencies = featureSet(&[_]Feature{}),
222 };
223 result[@intFromEnum(Feature.nnp_assist)] = .{
224 .llvm_name = "nnp-assist",
225 .description = "Assume that the NNP-assist facility is installed",
226 .dependencies = featureSet(&[_]Feature{}),
227 };
228 result[@intFromEnum(Feature.population_count)] = .{
229 .llvm_name = "population-count",
230 .description = "Assume that the population-count facility is installed",
231 .dependencies = featureSet(&[_]Feature{}),
232 };
233 result[@intFromEnum(Feature.processor_activity_instrumentation)] = .{
234 .llvm_name = "processor-activity-instrumentation",
235 .description = "Assume that the processor-activity-instrumentation facility is installed",
236 .dependencies = featureSet(&[_]Feature{}),
237 };
238 result[@intFromEnum(Feature.processor_assist)] = .{
239 .llvm_name = "processor-assist",
240 .description = "Assume that the processor-assist facility is installed",
241 .dependencies = featureSet(&[_]Feature{}),
242 };
243 result[@intFromEnum(Feature.reset_dat_protection)] = .{
244 .llvm_name = "reset-dat-protection",
245 .description = "Assume that the reset-DAT-protection facility is installed",
246 .dependencies = featureSet(&[_]Feature{}),
247 };
248 result[@intFromEnum(Feature.reset_reference_bits_multiple)] = .{
249 .llvm_name = "reset-reference-bits-multiple",
250 .description = "Assume that the reset-reference-bits-multiple facility is installed",
251 .dependencies = featureSet(&[_]Feature{}),
252 };
253 result[@intFromEnum(Feature.soft_float)] = .{
254 .llvm_name = "soft-float",
255 .description = "Use software emulation for floating point",
256 .dependencies = featureSet(&[_]Feature{}),
257 };
258 result[@intFromEnum(Feature.test_pending_external_interruption)] = .{
259 .llvm_name = "test-pending-external-interruption",
260 .description = "Assume that the test-pending-external-interruption facility is installed",
261 .dependencies = featureSet(&[_]Feature{}),
262 };
263 result[@intFromEnum(Feature.transactional_execution)] = .{
264 .llvm_name = "transactional-execution",
265 .description = "Assume that the transactional-execution facility is installed",
266 .dependencies = featureSet(&[_]Feature{}),
267 };
268 result[@intFromEnum(Feature.unaligned_symbols)] = .{
269 .llvm_name = "unaligned-symbols",
270 .description = "Don't apply the ABI minimum alignment to external symbols.",
271 .dependencies = featureSet(&[_]Feature{}),
272 };
273 result[@intFromEnum(Feature.vector)] = .{
274 .llvm_name = "vector",
275 .description = "Assume that the vectory facility is installed",
276 .dependencies = featureSet(&[_]Feature{}),
277 };
278 result[@intFromEnum(Feature.vector_enhancements_1)] = .{
279 .llvm_name = "vector-enhancements-1",
280 .description = "Assume that the vector enhancements facility 1 is installed",
281 .dependencies = featureSet(&[_]Feature{}),
282 };
283 result[@intFromEnum(Feature.vector_enhancements_2)] = .{
284 .llvm_name = "vector-enhancements-2",
285 .description = "Assume that the vector enhancements facility 2 is installed",
286 .dependencies = featureSet(&[_]Feature{}),
287 };
288 result[@intFromEnum(Feature.vector_enhancements_3)] = .{
289 .llvm_name = "vector-enhancements-3",
290 .description = "Assume that the vector enhancements facility 3 is installed",
291 .dependencies = featureSet(&[_]Feature{}),
292 };
293 result[@intFromEnum(Feature.vector_packed_decimal)] = .{
294 .llvm_name = "vector-packed-decimal",
295 .description = "Assume that the vector packed decimal facility is installed",
296 .dependencies = featureSet(&[_]Feature{}),
297 };
298 result[@intFromEnum(Feature.vector_packed_decimal_enhancement)] = .{
299 .llvm_name = "vector-packed-decimal-enhancement",
300 .description = "Assume that the vector packed decimal enhancement facility is installed",
301 .dependencies = featureSet(&[_]Feature{}),
302 };
303 result[@intFromEnum(Feature.vector_packed_decimal_enhancement_2)] = .{
304 .llvm_name = "vector-packed-decimal-enhancement-2",
305 .description = "Assume that the vector packed decimal enhancement facility 2 is installed",
306 .dependencies = featureSet(&[_]Feature{}),
307 };
308 result[@intFromEnum(Feature.vector_packed_decimal_enhancement_3)] = .{
309 .llvm_name = "vector-packed-decimal-enhancement-3",
310 .description = "Assume that the vector packed decimal enhancement facility 3 is installed",
311 .dependencies = featureSet(&[_]Feature{}),
312 };
313 const ti = @typeInfo(Feature);
314 for (&result, 0..) |*elem, i| {
315 elem.index = i;
316 elem.name = ti.@"enum".fields[i].name;
317 }
318 break :blk result;
319};
320
321pub const cpu = struct {
322 pub const arch10: CpuModel = .{
323 .name = "arch10",
324 .llvm_name = "arch10",
325 .features = featureSet(&[_]Feature{
326 .dfp_zoned_conversion,
327 .distinct_ops,
328 .enhanced_dat_2,
329 .execution_hint,
330 .fast_serialization,
331 .fp_extension,
332 .high_word,
333 .interlocked_access1,
334 .load_and_trap,
335 .load_store_on_cond,
336 .message_security_assist_extension3,
337 .message_security_assist_extension4,
338 .miscellaneous_extensions,
339 .population_count,
340 .processor_assist,
341 .reset_reference_bits_multiple,
342 .transactional_execution,
343 }),
344 };
345 pub const arch11: CpuModel = .{
346 .name = "arch11",
347 .llvm_name = "arch11",
348 .features = featureSet(&[_]Feature{
349 .dfp_packed_conversion,
350 .dfp_zoned_conversion,
351 .distinct_ops,
352 .enhanced_dat_2,
353 .execution_hint,
354 .fast_serialization,
355 .fp_extension,
356 .high_word,
357 .interlocked_access1,
358 .load_and_trap,
359 .load_and_zero_rightmost_byte,
360 .load_store_on_cond,
361 .load_store_on_cond_2,
362 .message_security_assist_extension3,
363 .message_security_assist_extension4,
364 .message_security_assist_extension5,
365 .miscellaneous_extensions,
366 .population_count,
367 .processor_assist,
368 .reset_reference_bits_multiple,
369 .transactional_execution,
370 .vector,
371 }),
372 };
373 pub const arch12: CpuModel = .{
374 .name = "arch12",
375 .llvm_name = "arch12",
376 .features = featureSet(&[_]Feature{
377 .dfp_packed_conversion,
378 .dfp_zoned_conversion,
379 .distinct_ops,
380 .enhanced_dat_2,
381 .execution_hint,
382 .fast_serialization,
383 .fp_extension,
384 .guarded_storage,
385 .high_word,
386 .insert_reference_bits_multiple,
387 .interlocked_access1,
388 .load_and_trap,
389 .load_and_zero_rightmost_byte,
390 .load_store_on_cond,
391 .load_store_on_cond_2,
392 .message_security_assist_extension3,
393 .message_security_assist_extension4,
394 .message_security_assist_extension5,
395 .message_security_assist_extension7,
396 .message_security_assist_extension8,
397 .miscellaneous_extensions,
398 .miscellaneous_extensions_2,
399 .population_count,
400 .processor_assist,
401 .reset_reference_bits_multiple,
402 .test_pending_external_interruption,
403 .transactional_execution,
404 .vector,
405 .vector_enhancements_1,
406 .vector_packed_decimal,
407 }),
408 };
409 pub const arch13: CpuModel = .{
410 .name = "arch13",
411 .llvm_name = "arch13",
412 .features = featureSet(&[_]Feature{
413 .deflate_conversion,
414 .dfp_packed_conversion,
415 .dfp_zoned_conversion,
416 .distinct_ops,
417 .enhanced_dat_2,
418 .enhanced_sort,
419 .execution_hint,
420 .fast_serialization,
421 .fp_extension,
422 .guarded_storage,
423 .high_word,
424 .insert_reference_bits_multiple,
425 .interlocked_access1,
426 .load_and_trap,
427 .load_and_zero_rightmost_byte,
428 .load_store_on_cond,
429 .load_store_on_cond_2,
430 .message_security_assist_extension3,
431 .message_security_assist_extension4,
432 .message_security_assist_extension5,
433 .message_security_assist_extension7,
434 .message_security_assist_extension8,
435 .message_security_assist_extension9,
436 .miscellaneous_extensions,
437 .miscellaneous_extensions_2,
438 .miscellaneous_extensions_3,
439 .population_count,
440 .processor_assist,
441 .reset_reference_bits_multiple,
442 .test_pending_external_interruption,
443 .transactional_execution,
444 .vector,
445 .vector_enhancements_1,
446 .vector_enhancements_2,
447 .vector_packed_decimal,
448 .vector_packed_decimal_enhancement,
449 }),
450 };
451 pub const arch14: CpuModel = .{
452 .name = "arch14",
453 .llvm_name = "arch14",
454 .features = featureSet(&[_]Feature{
455 .bear_enhancement,
456 .deflate_conversion,
457 .dfp_packed_conversion,
458 .dfp_zoned_conversion,
459 .distinct_ops,
460 .enhanced_dat_2,
461 .enhanced_sort,
462 .execution_hint,
463 .fast_serialization,
464 .fp_extension,
465 .guarded_storage,
466 .high_word,
467 .insert_reference_bits_multiple,
468 .interlocked_access1,
469 .load_and_trap,
470 .load_and_zero_rightmost_byte,
471 .load_store_on_cond,
472 .load_store_on_cond_2,
473 .message_security_assist_extension3,
474 .message_security_assist_extension4,
475 .message_security_assist_extension5,
476 .message_security_assist_extension7,
477 .message_security_assist_extension8,
478 .message_security_assist_extension9,
479 .miscellaneous_extensions,
480 .miscellaneous_extensions_2,
481 .miscellaneous_extensions_3,
482 .nnp_assist,
483 .population_count,
484 .processor_activity_instrumentation,
485 .processor_assist,
486 .reset_dat_protection,
487 .reset_reference_bits_multiple,
488 .test_pending_external_interruption,
489 .transactional_execution,
490 .vector,
491 .vector_enhancements_1,
492 .vector_enhancements_2,
493 .vector_packed_decimal,
494 .vector_packed_decimal_enhancement,
495 .vector_packed_decimal_enhancement_2,
496 }),
497 };
498 pub const arch15: CpuModel = .{
499 .name = "arch15",
500 .llvm_name = "arch15",
501 .features = featureSet(&[_]Feature{
502 .bear_enhancement,
503 .concurrent_functions,
504 .deflate_conversion,
505 .dfp_packed_conversion,
506 .dfp_zoned_conversion,
507 .distinct_ops,
508 .enhanced_dat_2,
509 .enhanced_sort,
510 .execution_hint,
511 .fast_serialization,
512 .fp_extension,
513 .guarded_storage,
514 .high_word,
515 .insert_reference_bits_multiple,
516 .interlocked_access1,
517 .load_and_trap,
518 .load_and_zero_rightmost_byte,
519 .load_store_on_cond,
520 .load_store_on_cond_2,
521 .message_security_assist_extension12,
522 .message_security_assist_extension3,
523 .message_security_assist_extension4,
524 .message_security_assist_extension5,
525 .message_security_assist_extension7,
526 .message_security_assist_extension8,
527 .message_security_assist_extension9,
528 .miscellaneous_extensions,
529 .miscellaneous_extensions_2,
530 .miscellaneous_extensions_3,
531 .miscellaneous_extensions_4,
532 .nnp_assist,
533 .population_count,
534 .processor_activity_instrumentation,
535 .processor_assist,
536 .reset_dat_protection,
537 .reset_reference_bits_multiple,
538 .test_pending_external_interruption,
539 .transactional_execution,
540 .vector,
541 .vector_enhancements_1,
542 .vector_enhancements_2,
543 .vector_enhancements_3,
544 .vector_packed_decimal,
545 .vector_packed_decimal_enhancement,
546 .vector_packed_decimal_enhancement_2,
547 .vector_packed_decimal_enhancement_3,
548 }),
549 };
550 pub const arch8: CpuModel = .{
551 .name = "arch8",
552 .llvm_name = "arch8",
553 .features = featureSet(&[_]Feature{}),
554 };
555 pub const arch9: CpuModel = .{
556 .name = "arch9",
557 .llvm_name = "arch9",
558 .features = featureSet(&[_]Feature{
559 .distinct_ops,
560 .fast_serialization,
561 .fp_extension,
562 .high_word,
563 .interlocked_access1,
564 .load_store_on_cond,
565 .message_security_assist_extension3,
566 .message_security_assist_extension4,
567 .population_count,
568 .reset_reference_bits_multiple,
569 }),
570 };
571 pub const generic: CpuModel = .{
572 .name = "generic",
573 .llvm_name = "generic",
574 .features = featureSet(&[_]Feature{}),
575 };
576 pub const z10: CpuModel = .{
577 .name = "z10",
578 .llvm_name = "z10",
579 .features = featureSet(&[_]Feature{}),
580 };
581 pub const z13: CpuModel = .{
582 .name = "z13",
583 .llvm_name = "z13",
584 .features = featureSet(&[_]Feature{
585 .dfp_packed_conversion,
586 .dfp_zoned_conversion,
587 .distinct_ops,
588 .enhanced_dat_2,
589 .execution_hint,
590 .fast_serialization,
591 .fp_extension,
592 .high_word,
593 .interlocked_access1,
594 .load_and_trap,
595 .load_and_zero_rightmost_byte,
596 .load_store_on_cond,
597 .load_store_on_cond_2,
598 .message_security_assist_extension3,
599 .message_security_assist_extension4,
600 .message_security_assist_extension5,
601 .miscellaneous_extensions,
602 .population_count,
603 .processor_assist,
604 .reset_reference_bits_multiple,
605 .transactional_execution,
606 .vector,
607 }),
608 };
609 pub const z14: CpuModel = .{
610 .name = "z14",
611 .llvm_name = "z14",
612 .features = featureSet(&[_]Feature{
613 .dfp_packed_conversion,
614 .dfp_zoned_conversion,
615 .distinct_ops,
616 .enhanced_dat_2,
617 .execution_hint,
618 .fast_serialization,
619 .fp_extension,
620 .guarded_storage,
621 .high_word,
622 .insert_reference_bits_multiple,
623 .interlocked_access1,
624 .load_and_trap,
625 .load_and_zero_rightmost_byte,
626 .load_store_on_cond,
627 .load_store_on_cond_2,
628 .message_security_assist_extension3,
629 .message_security_assist_extension4,
630 .message_security_assist_extension5,
631 .message_security_assist_extension7,
632 .message_security_assist_extension8,
633 .miscellaneous_extensions,
634 .miscellaneous_extensions_2,
635 .population_count,
636 .processor_assist,
637 .reset_reference_bits_multiple,
638 .test_pending_external_interruption,
639 .transactional_execution,
640 .vector,
641 .vector_enhancements_1,
642 .vector_packed_decimal,
643 }),
644 };
645 pub const z15: CpuModel = .{
646 .name = "z15",
647 .llvm_name = "z15",
648 .features = featureSet(&[_]Feature{
649 .deflate_conversion,
650 .dfp_packed_conversion,
651 .dfp_zoned_conversion,
652 .distinct_ops,
653 .enhanced_dat_2,
654 .enhanced_sort,
655 .execution_hint,
656 .fast_serialization,
657 .fp_extension,
658 .guarded_storage,
659 .high_word,
660 .insert_reference_bits_multiple,
661 .interlocked_access1,
662 .load_and_trap,
663 .load_and_zero_rightmost_byte,
664 .load_store_on_cond,
665 .load_store_on_cond_2,
666 .message_security_assist_extension3,
667 .message_security_assist_extension4,
668 .message_security_assist_extension5,
669 .message_security_assist_extension7,
670 .message_security_assist_extension8,
671 .message_security_assist_extension9,
672 .miscellaneous_extensions,
673 .miscellaneous_extensions_2,
674 .miscellaneous_extensions_3,
675 .population_count,
676 .processor_assist,
677 .reset_reference_bits_multiple,
678 .test_pending_external_interruption,
679 .transactional_execution,
680 .vector,
681 .vector_enhancements_1,
682 .vector_enhancements_2,
683 .vector_packed_decimal,
684 .vector_packed_decimal_enhancement,
685 }),
686 };
687 pub const z16: CpuModel = .{
688 .name = "z16",
689 .llvm_name = "z16",
690 .features = featureSet(&[_]Feature{
691 .bear_enhancement,
692 .deflate_conversion,
693 .dfp_packed_conversion,
694 .dfp_zoned_conversion,
695 .distinct_ops,
696 .enhanced_dat_2,
697 .enhanced_sort,
698 .execution_hint,
699 .fast_serialization,
700 .fp_extension,
701 .guarded_storage,
702 .high_word,
703 .insert_reference_bits_multiple,
704 .interlocked_access1,
705 .load_and_trap,
706 .load_and_zero_rightmost_byte,
707 .load_store_on_cond,
708 .load_store_on_cond_2,
709 .message_security_assist_extension3,
710 .message_security_assist_extension4,
711 .message_security_assist_extension5,
712 .message_security_assist_extension7,
713 .message_security_assist_extension8,
714 .message_security_assist_extension9,
715 .miscellaneous_extensions,
716 .miscellaneous_extensions_2,
717 .miscellaneous_extensions_3,
718 .nnp_assist,
719 .population_count,
720 .processor_activity_instrumentation,
721 .processor_assist,
722 .reset_dat_protection,
723 .reset_reference_bits_multiple,
724 .test_pending_external_interruption,
725 .transactional_execution,
726 .vector,
727 .vector_enhancements_1,
728 .vector_enhancements_2,
729 .vector_packed_decimal,
730 .vector_packed_decimal_enhancement,
731 .vector_packed_decimal_enhancement_2,
732 }),
733 };
734 pub const z17: CpuModel = .{
735 .name = "z17",
736 .llvm_name = "z17",
737 .features = featureSet(&[_]Feature{
738 .bear_enhancement,
739 .concurrent_functions,
740 .deflate_conversion,
741 .dfp_packed_conversion,
742 .dfp_zoned_conversion,
743 .distinct_ops,
744 .enhanced_dat_2,
745 .enhanced_sort,
746 .execution_hint,
747 .fast_serialization,
748 .fp_extension,
749 .guarded_storage,
750 .high_word,
751 .insert_reference_bits_multiple,
752 .interlocked_access1,
753 .load_and_trap,
754 .load_and_zero_rightmost_byte,
755 .load_store_on_cond,
756 .load_store_on_cond_2,
757 .message_security_assist_extension12,
758 .message_security_assist_extension3,
759 .message_security_assist_extension4,
760 .message_security_assist_extension5,
761 .message_security_assist_extension7,
762 .message_security_assist_extension8,
763 .message_security_assist_extension9,
764 .miscellaneous_extensions,
765 .miscellaneous_extensions_2,
766 .miscellaneous_extensions_3,
767 .miscellaneous_extensions_4,
768 .nnp_assist,
769 .population_count,
770 .processor_activity_instrumentation,
771 .processor_assist,
772 .reset_dat_protection,
773 .reset_reference_bits_multiple,
774 .test_pending_external_interruption,
775 .transactional_execution,
776 .vector,
777 .vector_enhancements_1,
778 .vector_enhancements_2,
779 .vector_enhancements_3,
780 .vector_packed_decimal,
781 .vector_packed_decimal_enhancement,
782 .vector_packed_decimal_enhancement_2,
783 .vector_packed_decimal_enhancement_3,
784 }),
785 };
786 pub const z196: CpuModel = .{
787 .name = "z196",
788 .llvm_name = "z196",
789 .features = featureSet(&[_]Feature{
790 .distinct_ops,
791 .fast_serialization,
792 .fp_extension,
793 .high_word,
794 .interlocked_access1,
795 .load_store_on_cond,
796 .message_security_assist_extension3,
797 .message_security_assist_extension4,
798 .population_count,
799 .reset_reference_bits_multiple,
800 }),
801 };
802 pub const zEC12: CpuModel = .{
803 .name = "zEC12",
804 .llvm_name = "zEC12",
805 .features = featureSet(&[_]Feature{
806 .dfp_zoned_conversion,
807 .distinct_ops,
808 .enhanced_dat_2,
809 .execution_hint,
810 .fast_serialization,
811 .fp_extension,
812 .high_word,
813 .interlocked_access1,
814 .load_and_trap,
815 .load_store_on_cond,
816 .message_security_assist_extension3,
817 .message_security_assist_extension4,
818 .miscellaneous_extensions,
819 .population_count,
820 .processor_assist,
821 .reset_reference_bits_multiple,
822 .transactional_execution,
823 }),
824 };
825};