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};