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    ptx32,
  9    ptx40,
 10    ptx41,
 11    ptx42,
 12    ptx43,
 13    ptx50,
 14    ptx60,
 15    ptx61,
 16    ptx62,
 17    ptx63,
 18    ptx64,
 19    ptx65,
 20    ptx70,
 21    ptx71,
 22    ptx72,
 23    ptx73,
 24    ptx74,
 25    ptx75,
 26    ptx76,
 27    ptx77,
 28    ptx78,
 29    ptx80,
 30    ptx81,
 31    ptx82,
 32    ptx83,
 33    ptx84,
 34    ptx85,
 35    ptx86,
 36    ptx87,
 37    ptx88,
 38    sm_100,
 39    sm_100a,
 40    sm_100f,
 41    sm_101,
 42    sm_101a,
 43    sm_101f,
 44    sm_103,
 45    sm_103a,
 46    sm_103f,
 47    sm_120,
 48    sm_120a,
 49    sm_120f,
 50    sm_121,
 51    sm_121a,
 52    sm_121f,
 53    sm_20,
 54    sm_21,
 55    sm_30,
 56    sm_32,
 57    sm_35,
 58    sm_37,
 59    sm_50,
 60    sm_52,
 61    sm_53,
 62    sm_60,
 63    sm_61,
 64    sm_62,
 65    sm_70,
 66    sm_72,
 67    sm_75,
 68    sm_80,
 69    sm_86,
 70    sm_87,
 71    sm_89,
 72    sm_90,
 73    sm_90a,
 74};
 75
 76pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
 77pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
 78pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
 79pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
 80
 81pub const all_features = blk: {
 82    const len = @typeInfo(Feature).@"enum".fields.len;
 83    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
 84    var result: [len]CpuFeature = undefined;
 85    result[@intFromEnum(Feature.ptx32)] = .{
 86        .llvm_name = "ptx32",
 87        .description = "Use PTX version 32",
 88        .dependencies = featureSet(&[_]Feature{}),
 89    };
 90    result[@intFromEnum(Feature.ptx40)] = .{
 91        .llvm_name = "ptx40",
 92        .description = "Use PTX version 40",
 93        .dependencies = featureSet(&[_]Feature{}),
 94    };
 95    result[@intFromEnum(Feature.ptx41)] = .{
 96        .llvm_name = "ptx41",
 97        .description = "Use PTX version 41",
 98        .dependencies = featureSet(&[_]Feature{}),
 99    };
100    result[@intFromEnum(Feature.ptx42)] = .{
101        .llvm_name = "ptx42",
102        .description = "Use PTX version 42",
103        .dependencies = featureSet(&[_]Feature{}),
104    };
105    result[@intFromEnum(Feature.ptx43)] = .{
106        .llvm_name = "ptx43",
107        .description = "Use PTX version 43",
108        .dependencies = featureSet(&[_]Feature{}),
109    };
110    result[@intFromEnum(Feature.ptx50)] = .{
111        .llvm_name = "ptx50",
112        .description = "Use PTX version 50",
113        .dependencies = featureSet(&[_]Feature{}),
114    };
115    result[@intFromEnum(Feature.ptx60)] = .{
116        .llvm_name = "ptx60",
117        .description = "Use PTX version 60",
118        .dependencies = featureSet(&[_]Feature{}),
119    };
120    result[@intFromEnum(Feature.ptx61)] = .{
121        .llvm_name = "ptx61",
122        .description = "Use PTX version 61",
123        .dependencies = featureSet(&[_]Feature{}),
124    };
125    result[@intFromEnum(Feature.ptx62)] = .{
126        .llvm_name = "ptx62",
127        .description = "Use PTX version 62",
128        .dependencies = featureSet(&[_]Feature{}),
129    };
130    result[@intFromEnum(Feature.ptx63)] = .{
131        .llvm_name = "ptx63",
132        .description = "Use PTX version 63",
133        .dependencies = featureSet(&[_]Feature{}),
134    };
135    result[@intFromEnum(Feature.ptx64)] = .{
136        .llvm_name = "ptx64",
137        .description = "Use PTX version 64",
138        .dependencies = featureSet(&[_]Feature{}),
139    };
140    result[@intFromEnum(Feature.ptx65)] = .{
141        .llvm_name = "ptx65",
142        .description = "Use PTX version 65",
143        .dependencies = featureSet(&[_]Feature{}),
144    };
145    result[@intFromEnum(Feature.ptx70)] = .{
146        .llvm_name = "ptx70",
147        .description = "Use PTX version 70",
148        .dependencies = featureSet(&[_]Feature{}),
149    };
150    result[@intFromEnum(Feature.ptx71)] = .{
151        .llvm_name = "ptx71",
152        .description = "Use PTX version 71",
153        .dependencies = featureSet(&[_]Feature{}),
154    };
155    result[@intFromEnum(Feature.ptx72)] = .{
156        .llvm_name = "ptx72",
157        .description = "Use PTX version 72",
158        .dependencies = featureSet(&[_]Feature{}),
159    };
160    result[@intFromEnum(Feature.ptx73)] = .{
161        .llvm_name = "ptx73",
162        .description = "Use PTX version 73",
163        .dependencies = featureSet(&[_]Feature{}),
164    };
165    result[@intFromEnum(Feature.ptx74)] = .{
166        .llvm_name = "ptx74",
167        .description = "Use PTX version 74",
168        .dependencies = featureSet(&[_]Feature{}),
169    };
170    result[@intFromEnum(Feature.ptx75)] = .{
171        .llvm_name = "ptx75",
172        .description = "Use PTX version 75",
173        .dependencies = featureSet(&[_]Feature{}),
174    };
175    result[@intFromEnum(Feature.ptx76)] = .{
176        .llvm_name = "ptx76",
177        .description = "Use PTX version 76",
178        .dependencies = featureSet(&[_]Feature{}),
179    };
180    result[@intFromEnum(Feature.ptx77)] = .{
181        .llvm_name = "ptx77",
182        .description = "Use PTX version 77",
183        .dependencies = featureSet(&[_]Feature{}),
184    };
185    result[@intFromEnum(Feature.ptx78)] = .{
186        .llvm_name = "ptx78",
187        .description = "Use PTX version 78",
188        .dependencies = featureSet(&[_]Feature{}),
189    };
190    result[@intFromEnum(Feature.ptx80)] = .{
191        .llvm_name = "ptx80",
192        .description = "Use PTX version 80",
193        .dependencies = featureSet(&[_]Feature{}),
194    };
195    result[@intFromEnum(Feature.ptx81)] = .{
196        .llvm_name = "ptx81",
197        .description = "Use PTX version 81",
198        .dependencies = featureSet(&[_]Feature{}),
199    };
200    result[@intFromEnum(Feature.ptx82)] = .{
201        .llvm_name = "ptx82",
202        .description = "Use PTX version 82",
203        .dependencies = featureSet(&[_]Feature{}),
204    };
205    result[@intFromEnum(Feature.ptx83)] = .{
206        .llvm_name = "ptx83",
207        .description = "Use PTX version 83",
208        .dependencies = featureSet(&[_]Feature{}),
209    };
210    result[@intFromEnum(Feature.ptx84)] = .{
211        .llvm_name = "ptx84",
212        .description = "Use PTX version 84",
213        .dependencies = featureSet(&[_]Feature{}),
214    };
215    result[@intFromEnum(Feature.ptx85)] = .{
216        .llvm_name = "ptx85",
217        .description = "Use PTX version 85",
218        .dependencies = featureSet(&[_]Feature{}),
219    };
220    result[@intFromEnum(Feature.ptx86)] = .{
221        .llvm_name = "ptx86",
222        .description = "Use PTX version 86",
223        .dependencies = featureSet(&[_]Feature{}),
224    };
225    result[@intFromEnum(Feature.ptx87)] = .{
226        .llvm_name = "ptx87",
227        .description = "Use PTX version 87",
228        .dependencies = featureSet(&[_]Feature{}),
229    };
230    result[@intFromEnum(Feature.ptx88)] = .{
231        .llvm_name = "ptx88",
232        .description = "Use PTX version 88",
233        .dependencies = featureSet(&[_]Feature{}),
234    };
235    result[@intFromEnum(Feature.sm_100)] = .{
236        .llvm_name = "sm_100",
237        .description = "Target SM 100",
238        .dependencies = featureSet(&[_]Feature{}),
239    };
240    result[@intFromEnum(Feature.sm_100a)] = .{
241        .llvm_name = "sm_100a",
242        .description = "Target SM 100a",
243        .dependencies = featureSet(&[_]Feature{}),
244    };
245    result[@intFromEnum(Feature.sm_100f)] = .{
246        .llvm_name = "sm_100f",
247        .description = "Target SM 100f",
248        .dependencies = featureSet(&[_]Feature{}),
249    };
250    result[@intFromEnum(Feature.sm_101)] = .{
251        .llvm_name = "sm_101",
252        .description = "Target SM 101",
253        .dependencies = featureSet(&[_]Feature{}),
254    };
255    result[@intFromEnum(Feature.sm_101a)] = .{
256        .llvm_name = "sm_101a",
257        .description = "Target SM 101a",
258        .dependencies = featureSet(&[_]Feature{}),
259    };
260    result[@intFromEnum(Feature.sm_101f)] = .{
261        .llvm_name = "sm_101f",
262        .description = "Target SM 101f",
263        .dependencies = featureSet(&[_]Feature{}),
264    };
265    result[@intFromEnum(Feature.sm_103)] = .{
266        .llvm_name = "sm_103",
267        .description = "Target SM 103",
268        .dependencies = featureSet(&[_]Feature{}),
269    };
270    result[@intFromEnum(Feature.sm_103a)] = .{
271        .llvm_name = "sm_103a",
272        .description = "Target SM 103a",
273        .dependencies = featureSet(&[_]Feature{}),
274    };
275    result[@intFromEnum(Feature.sm_103f)] = .{
276        .llvm_name = "sm_103f",
277        .description = "Target SM 103f",
278        .dependencies = featureSet(&[_]Feature{}),
279    };
280    result[@intFromEnum(Feature.sm_120)] = .{
281        .llvm_name = "sm_120",
282        .description = "Target SM 120",
283        .dependencies = featureSet(&[_]Feature{}),
284    };
285    result[@intFromEnum(Feature.sm_120a)] = .{
286        .llvm_name = "sm_120a",
287        .description = "Target SM 120a",
288        .dependencies = featureSet(&[_]Feature{}),
289    };
290    result[@intFromEnum(Feature.sm_120f)] = .{
291        .llvm_name = "sm_120f",
292        .description = "Target SM 120f",
293        .dependencies = featureSet(&[_]Feature{}),
294    };
295    result[@intFromEnum(Feature.sm_121)] = .{
296        .llvm_name = "sm_121",
297        .description = "Target SM 121",
298        .dependencies = featureSet(&[_]Feature{}),
299    };
300    result[@intFromEnum(Feature.sm_121a)] = .{
301        .llvm_name = "sm_121a",
302        .description = "Target SM 121a",
303        .dependencies = featureSet(&[_]Feature{}),
304    };
305    result[@intFromEnum(Feature.sm_121f)] = .{
306        .llvm_name = "sm_121f",
307        .description = "Target SM 121f",
308        .dependencies = featureSet(&[_]Feature{}),
309    };
310    result[@intFromEnum(Feature.sm_20)] = .{
311        .llvm_name = "sm_20",
312        .description = "Target SM 20",
313        .dependencies = featureSet(&[_]Feature{}),
314    };
315    result[@intFromEnum(Feature.sm_21)] = .{
316        .llvm_name = "sm_21",
317        .description = "Target SM 21",
318        .dependencies = featureSet(&[_]Feature{}),
319    };
320    result[@intFromEnum(Feature.sm_30)] = .{
321        .llvm_name = "sm_30",
322        .description = "Target SM 30",
323        .dependencies = featureSet(&[_]Feature{}),
324    };
325    result[@intFromEnum(Feature.sm_32)] = .{
326        .llvm_name = "sm_32",
327        .description = "Target SM 32",
328        .dependencies = featureSet(&[_]Feature{}),
329    };
330    result[@intFromEnum(Feature.sm_35)] = .{
331        .llvm_name = "sm_35",
332        .description = "Target SM 35",
333        .dependencies = featureSet(&[_]Feature{}),
334    };
335    result[@intFromEnum(Feature.sm_37)] = .{
336        .llvm_name = "sm_37",
337        .description = "Target SM 37",
338        .dependencies = featureSet(&[_]Feature{}),
339    };
340    result[@intFromEnum(Feature.sm_50)] = .{
341        .llvm_name = "sm_50",
342        .description = "Target SM 50",
343        .dependencies = featureSet(&[_]Feature{}),
344    };
345    result[@intFromEnum(Feature.sm_52)] = .{
346        .llvm_name = "sm_52",
347        .description = "Target SM 52",
348        .dependencies = featureSet(&[_]Feature{}),
349    };
350    result[@intFromEnum(Feature.sm_53)] = .{
351        .llvm_name = "sm_53",
352        .description = "Target SM 53",
353        .dependencies = featureSet(&[_]Feature{}),
354    };
355    result[@intFromEnum(Feature.sm_60)] = .{
356        .llvm_name = "sm_60",
357        .description = "Target SM 60",
358        .dependencies = featureSet(&[_]Feature{}),
359    };
360    result[@intFromEnum(Feature.sm_61)] = .{
361        .llvm_name = "sm_61",
362        .description = "Target SM 61",
363        .dependencies = featureSet(&[_]Feature{}),
364    };
365    result[@intFromEnum(Feature.sm_62)] = .{
366        .llvm_name = "sm_62",
367        .description = "Target SM 62",
368        .dependencies = featureSet(&[_]Feature{}),
369    };
370    result[@intFromEnum(Feature.sm_70)] = .{
371        .llvm_name = "sm_70",
372        .description = "Target SM 70",
373        .dependencies = featureSet(&[_]Feature{}),
374    };
375    result[@intFromEnum(Feature.sm_72)] = .{
376        .llvm_name = "sm_72",
377        .description = "Target SM 72",
378        .dependencies = featureSet(&[_]Feature{}),
379    };
380    result[@intFromEnum(Feature.sm_75)] = .{
381        .llvm_name = "sm_75",
382        .description = "Target SM 75",
383        .dependencies = featureSet(&[_]Feature{}),
384    };
385    result[@intFromEnum(Feature.sm_80)] = .{
386        .llvm_name = "sm_80",
387        .description = "Target SM 80",
388        .dependencies = featureSet(&[_]Feature{}),
389    };
390    result[@intFromEnum(Feature.sm_86)] = .{
391        .llvm_name = "sm_86",
392        .description = "Target SM 86",
393        .dependencies = featureSet(&[_]Feature{}),
394    };
395    result[@intFromEnum(Feature.sm_87)] = .{
396        .llvm_name = "sm_87",
397        .description = "Target SM 87",
398        .dependencies = featureSet(&[_]Feature{}),
399    };
400    result[@intFromEnum(Feature.sm_89)] = .{
401        .llvm_name = "sm_89",
402        .description = "Target SM 89",
403        .dependencies = featureSet(&[_]Feature{}),
404    };
405    result[@intFromEnum(Feature.sm_90)] = .{
406        .llvm_name = "sm_90",
407        .description = "Target SM 90",
408        .dependencies = featureSet(&[_]Feature{}),
409    };
410    result[@intFromEnum(Feature.sm_90a)] = .{
411        .llvm_name = "sm_90a",
412        .description = "Target SM 90a",
413        .dependencies = featureSet(&[_]Feature{}),
414    };
415    const ti = @typeInfo(Feature);
416    for (&result, 0..) |*elem, i| {
417        elem.index = i;
418        elem.name = ti.@"enum".fields[i].name;
419    }
420    break :blk result;
421};
422
423pub const cpu = struct {
424    pub const sm_100: CpuModel = .{
425        .name = "sm_100",
426        .llvm_name = "sm_100",
427        .features = featureSet(&[_]Feature{
428            .ptx86,
429            .sm_100,
430        }),
431    };
432    pub const sm_100a: CpuModel = .{
433        .name = "sm_100a",
434        .llvm_name = "sm_100a",
435        .features = featureSet(&[_]Feature{
436            .ptx86,
437            .sm_100a,
438        }),
439    };
440    pub const sm_100f: CpuModel = .{
441        .name = "sm_100f",
442        .llvm_name = "sm_100f",
443        .features = featureSet(&[_]Feature{
444            .ptx88,
445            .sm_100f,
446        }),
447    };
448    pub const sm_101: CpuModel = .{
449        .name = "sm_101",
450        .llvm_name = "sm_101",
451        .features = featureSet(&[_]Feature{
452            .ptx86,
453            .sm_101,
454        }),
455    };
456    pub const sm_101a: CpuModel = .{
457        .name = "sm_101a",
458        .llvm_name = "sm_101a",
459        .features = featureSet(&[_]Feature{
460            .ptx86,
461            .sm_101a,
462        }),
463    };
464    pub const sm_101f: CpuModel = .{
465        .name = "sm_101f",
466        .llvm_name = "sm_101f",
467        .features = featureSet(&[_]Feature{
468            .ptx88,
469            .sm_101f,
470        }),
471    };
472    pub const sm_103: CpuModel = .{
473        .name = "sm_103",
474        .llvm_name = "sm_103",
475        .features = featureSet(&[_]Feature{
476            .ptx88,
477            .sm_103,
478        }),
479    };
480    pub const sm_103a: CpuModel = .{
481        .name = "sm_103a",
482        .llvm_name = "sm_103a",
483        .features = featureSet(&[_]Feature{
484            .ptx88,
485            .sm_103a,
486        }),
487    };
488    pub const sm_103f: CpuModel = .{
489        .name = "sm_103f",
490        .llvm_name = "sm_103f",
491        .features = featureSet(&[_]Feature{
492            .ptx88,
493            .sm_103f,
494        }),
495    };
496    pub const sm_120: CpuModel = .{
497        .name = "sm_120",
498        .llvm_name = "sm_120",
499        .features = featureSet(&[_]Feature{
500            .ptx87,
501            .sm_120,
502        }),
503    };
504    pub const sm_120a: CpuModel = .{
505        .name = "sm_120a",
506        .llvm_name = "sm_120a",
507        .features = featureSet(&[_]Feature{
508            .ptx87,
509            .sm_120a,
510        }),
511    };
512    pub const sm_120f: CpuModel = .{
513        .name = "sm_120f",
514        .llvm_name = "sm_120f",
515        .features = featureSet(&[_]Feature{
516            .ptx88,
517            .sm_120f,
518        }),
519    };
520    pub const sm_121: CpuModel = .{
521        .name = "sm_121",
522        .llvm_name = "sm_121",
523        .features = featureSet(&[_]Feature{
524            .ptx88,
525            .sm_121,
526        }),
527    };
528    pub const sm_121a: CpuModel = .{
529        .name = "sm_121a",
530        .llvm_name = "sm_121a",
531        .features = featureSet(&[_]Feature{
532            .ptx88,
533            .sm_121a,
534        }),
535    };
536    pub const sm_121f: CpuModel = .{
537        .name = "sm_121f",
538        .llvm_name = "sm_121f",
539        .features = featureSet(&[_]Feature{
540            .ptx88,
541            .sm_121f,
542        }),
543    };
544    pub const sm_20: CpuModel = .{
545        .name = "sm_20",
546        .llvm_name = "sm_20",
547        .features = featureSet(&[_]Feature{
548            .ptx32,
549            .sm_20,
550        }),
551    };
552    pub const sm_21: CpuModel = .{
553        .name = "sm_21",
554        .llvm_name = "sm_21",
555        .features = featureSet(&[_]Feature{
556            .ptx32,
557            .sm_21,
558        }),
559    };
560    pub const sm_30: CpuModel = .{
561        .name = "sm_30",
562        .llvm_name = "sm_30",
563        .features = featureSet(&[_]Feature{
564            .sm_30,
565        }),
566    };
567    pub const sm_32: CpuModel = .{
568        .name = "sm_32",
569        .llvm_name = "sm_32",
570        .features = featureSet(&[_]Feature{
571            .ptx40,
572            .sm_32,
573        }),
574    };
575    pub const sm_35: CpuModel = .{
576        .name = "sm_35",
577        .llvm_name = "sm_35",
578        .features = featureSet(&[_]Feature{
579            .ptx32,
580            .sm_35,
581        }),
582    };
583    pub const sm_37: CpuModel = .{
584        .name = "sm_37",
585        .llvm_name = "sm_37",
586        .features = featureSet(&[_]Feature{
587            .ptx41,
588            .sm_37,
589        }),
590    };
591    pub const sm_50: CpuModel = .{
592        .name = "sm_50",
593        .llvm_name = "sm_50",
594        .features = featureSet(&[_]Feature{
595            .ptx40,
596            .sm_50,
597        }),
598    };
599    pub const sm_52: CpuModel = .{
600        .name = "sm_52",
601        .llvm_name = "sm_52",
602        .features = featureSet(&[_]Feature{
603            .ptx41,
604            .sm_52,
605        }),
606    };
607    pub const sm_53: CpuModel = .{
608        .name = "sm_53",
609        .llvm_name = "sm_53",
610        .features = featureSet(&[_]Feature{
611            .ptx42,
612            .sm_53,
613        }),
614    };
615    pub const sm_60: CpuModel = .{
616        .name = "sm_60",
617        .llvm_name = "sm_60",
618        .features = featureSet(&[_]Feature{
619            .ptx50,
620            .sm_60,
621        }),
622    };
623    pub const sm_61: CpuModel = .{
624        .name = "sm_61",
625        .llvm_name = "sm_61",
626        .features = featureSet(&[_]Feature{
627            .ptx50,
628            .sm_61,
629        }),
630    };
631    pub const sm_62: CpuModel = .{
632        .name = "sm_62",
633        .llvm_name = "sm_62",
634        .features = featureSet(&[_]Feature{
635            .ptx50,
636            .sm_62,
637        }),
638    };
639    pub const sm_70: CpuModel = .{
640        .name = "sm_70",
641        .llvm_name = "sm_70",
642        .features = featureSet(&[_]Feature{
643            .ptx60,
644            .sm_70,
645        }),
646    };
647    pub const sm_72: CpuModel = .{
648        .name = "sm_72",
649        .llvm_name = "sm_72",
650        .features = featureSet(&[_]Feature{
651            .ptx61,
652            .sm_72,
653        }),
654    };
655    pub const sm_75: CpuModel = .{
656        .name = "sm_75",
657        .llvm_name = "sm_75",
658        .features = featureSet(&[_]Feature{
659            .ptx63,
660            .sm_75,
661        }),
662    };
663    pub const sm_80: CpuModel = .{
664        .name = "sm_80",
665        .llvm_name = "sm_80",
666        .features = featureSet(&[_]Feature{
667            .ptx70,
668            .sm_80,
669        }),
670    };
671    pub const sm_86: CpuModel = .{
672        .name = "sm_86",
673        .llvm_name = "sm_86",
674        .features = featureSet(&[_]Feature{
675            .ptx71,
676            .sm_86,
677        }),
678    };
679    pub const sm_87: CpuModel = .{
680        .name = "sm_87",
681        .llvm_name = "sm_87",
682        .features = featureSet(&[_]Feature{
683            .ptx74,
684            .sm_87,
685        }),
686    };
687    pub const sm_89: CpuModel = .{
688        .name = "sm_89",
689        .llvm_name = "sm_89",
690        .features = featureSet(&[_]Feature{
691            .ptx78,
692            .sm_89,
693        }),
694    };
695    pub const sm_90: CpuModel = .{
696        .name = "sm_90",
697        .llvm_name = "sm_90",
698        .features = featureSet(&[_]Feature{
699            .ptx78,
700            .sm_90,
701        }),
702    };
703    pub const sm_90a: CpuModel = .{
704        .name = "sm_90a",
705        .llvm_name = "sm_90a",
706        .features = featureSet(&[_]Feature{
707            .ptx80,
708            .sm_90a,
709        }),
710    };
711};