1#![allow(unused)]
70
71use crate::lexer::PtxToken;
72use crate::unparser::{PtxUnparser, common::*};
73
74pub mod section_0 {
75 use super::*;
76 use crate::r#type::instruction::wgmma_mma_async_sp::section_0::*;
77
78 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeF16F16 {
79 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
80 push_opcode(tokens, "wgmma");
81 push_directive(tokens, "mma_async");
82 push_directive(tokens, "sp");
83 push_directive(tokens, "sync");
84 push_directive(tokens, "aligned");
85 match &self.shape {
86 Shape::M64n104k32 => {
87 push_directive(tokens, "m64n104k32");
88 }
89 Shape::M64n112k32 => {
90 push_directive(tokens, "m64n112k32");
91 }
92 Shape::M64n120k32 => {
93 push_directive(tokens, "m64n120k32");
94 }
95 Shape::M64n128k32 => {
96 push_directive(tokens, "m64n128k32");
97 }
98 Shape::M64n136k32 => {
99 push_directive(tokens, "m64n136k32");
100 }
101 Shape::M64n144k32 => {
102 push_directive(tokens, "m64n144k32");
103 }
104 Shape::M64n152k32 => {
105 push_directive(tokens, "m64n152k32");
106 }
107 Shape::M64n160k32 => {
108 push_directive(tokens, "m64n160k32");
109 }
110 Shape::M64n168k32 => {
111 push_directive(tokens, "m64n168k32");
112 }
113 Shape::M64n176k32 => {
114 push_directive(tokens, "m64n176k32");
115 }
116 Shape::M64n184k32 => {
117 push_directive(tokens, "m64n184k32");
118 }
119 Shape::M64n192k32 => {
120 push_directive(tokens, "m64n192k32");
121 }
122 Shape::M64n200k32 => {
123 push_directive(tokens, "m64n200k32");
124 }
125 Shape::M64n208k32 => {
126 push_directive(tokens, "m64n208k32");
127 }
128 Shape::M64n216k32 => {
129 push_directive(tokens, "m64n216k32");
130 }
131 Shape::M64n224k32 => {
132 push_directive(tokens, "m64n224k32");
133 }
134 Shape::M64n232k32 => {
135 push_directive(tokens, "m64n232k32");
136 }
137 Shape::M64n240k32 => {
138 push_directive(tokens, "m64n240k32");
139 }
140 Shape::M64n248k32 => {
141 push_directive(tokens, "m64n248k32");
142 }
143 Shape::M64n256k32 => {
144 push_directive(tokens, "m64n256k32");
145 }
146 Shape::M64n16k32 => {
147 push_directive(tokens, "m64n16k32");
148 }
149 Shape::M64n24k32 => {
150 push_directive(tokens, "m64n24k32");
151 }
152 Shape::M64n32k32 => {
153 push_directive(tokens, "m64n32k32");
154 }
155 Shape::M64n40k32 => {
156 push_directive(tokens, "m64n40k32");
157 }
158 Shape::M64n48k32 => {
159 push_directive(tokens, "m64n48k32");
160 }
161 Shape::M64n56k32 => {
162 push_directive(tokens, "m64n56k32");
163 }
164 Shape::M64n64k32 => {
165 push_directive(tokens, "m64n64k32");
166 }
167 Shape::M64n72k32 => {
168 push_directive(tokens, "m64n72k32");
169 }
170 Shape::M64n80k32 => {
171 push_directive(tokens, "m64n80k32");
172 }
173 Shape::M64n88k32 => {
174 push_directive(tokens, "m64n88k32");
175 }
176 Shape::M64n96k32 => {
177 push_directive(tokens, "m64n96k32");
178 }
179 Shape::M64n8k32 => {
180 push_directive(tokens, "m64n8k32");
181 }
182 }
183 match &self.dtype {
184 Dtype::F16 => {
185 push_directive(tokens, "f16");
186 }
187 Dtype::F32 => {
188 push_directive(tokens, "f32");
189 }
190 }
191 push_directive(tokens, "f16");
192 push_directive(tokens, "f16");
193 self.d.unparse_tokens(tokens);
194 tokens.push(PtxToken::Comma);
195 self.a_desc.unparse_tokens(tokens);
196 tokens.push(PtxToken::Comma);
197 self.b_desc.unparse_tokens(tokens);
198 tokens.push(PtxToken::Comma);
199 self.sp_meta.unparse_tokens(tokens);
200 tokens.push(PtxToken::Comma);
201 self.sp_sel.unparse_tokens(tokens);
202 tokens.push(PtxToken::Comma);
203 self.scale_d.unparse_tokens(tokens);
204 tokens.push(PtxToken::Comma);
205 self.imm_scale_a.unparse_tokens(tokens);
206 tokens.push(PtxToken::Comma);
207 self.imm_scale_b.unparse_tokens(tokens);
208 tokens.push(PtxToken::Comma);
209 self.imm_trans_a.unparse_tokens(tokens);
210 tokens.push(PtxToken::Comma);
211 self.imm_trans_b.unparse_tokens(tokens);
212 tokens.push(PtxToken::Semicolon);
213 }
214 }
215
216 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeF16F161 {
217 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
218 push_opcode(tokens, "wgmma");
219 push_directive(tokens, "mma_async");
220 push_directive(tokens, "sp");
221 push_directive(tokens, "sync");
222 push_directive(tokens, "aligned");
223 match &self.shape {
224 Shape::M64n104k32 => {
225 push_directive(tokens, "m64n104k32");
226 }
227 Shape::M64n112k32 => {
228 push_directive(tokens, "m64n112k32");
229 }
230 Shape::M64n120k32 => {
231 push_directive(tokens, "m64n120k32");
232 }
233 Shape::M64n128k32 => {
234 push_directive(tokens, "m64n128k32");
235 }
236 Shape::M64n136k32 => {
237 push_directive(tokens, "m64n136k32");
238 }
239 Shape::M64n144k32 => {
240 push_directive(tokens, "m64n144k32");
241 }
242 Shape::M64n152k32 => {
243 push_directive(tokens, "m64n152k32");
244 }
245 Shape::M64n160k32 => {
246 push_directive(tokens, "m64n160k32");
247 }
248 Shape::M64n168k32 => {
249 push_directive(tokens, "m64n168k32");
250 }
251 Shape::M64n176k32 => {
252 push_directive(tokens, "m64n176k32");
253 }
254 Shape::M64n184k32 => {
255 push_directive(tokens, "m64n184k32");
256 }
257 Shape::M64n192k32 => {
258 push_directive(tokens, "m64n192k32");
259 }
260 Shape::M64n200k32 => {
261 push_directive(tokens, "m64n200k32");
262 }
263 Shape::M64n208k32 => {
264 push_directive(tokens, "m64n208k32");
265 }
266 Shape::M64n216k32 => {
267 push_directive(tokens, "m64n216k32");
268 }
269 Shape::M64n224k32 => {
270 push_directive(tokens, "m64n224k32");
271 }
272 Shape::M64n232k32 => {
273 push_directive(tokens, "m64n232k32");
274 }
275 Shape::M64n240k32 => {
276 push_directive(tokens, "m64n240k32");
277 }
278 Shape::M64n248k32 => {
279 push_directive(tokens, "m64n248k32");
280 }
281 Shape::M64n256k32 => {
282 push_directive(tokens, "m64n256k32");
283 }
284 Shape::M64n16k32 => {
285 push_directive(tokens, "m64n16k32");
286 }
287 Shape::M64n24k32 => {
288 push_directive(tokens, "m64n24k32");
289 }
290 Shape::M64n32k32 => {
291 push_directive(tokens, "m64n32k32");
292 }
293 Shape::M64n40k32 => {
294 push_directive(tokens, "m64n40k32");
295 }
296 Shape::M64n48k32 => {
297 push_directive(tokens, "m64n48k32");
298 }
299 Shape::M64n56k32 => {
300 push_directive(tokens, "m64n56k32");
301 }
302 Shape::M64n64k32 => {
303 push_directive(tokens, "m64n64k32");
304 }
305 Shape::M64n72k32 => {
306 push_directive(tokens, "m64n72k32");
307 }
308 Shape::M64n80k32 => {
309 push_directive(tokens, "m64n80k32");
310 }
311 Shape::M64n88k32 => {
312 push_directive(tokens, "m64n88k32");
313 }
314 Shape::M64n96k32 => {
315 push_directive(tokens, "m64n96k32");
316 }
317 Shape::M64n8k32 => {
318 push_directive(tokens, "m64n8k32");
319 }
320 }
321 match &self.dtype {
322 Dtype::F16 => {
323 push_directive(tokens, "f16");
324 }
325 Dtype::F32 => {
326 push_directive(tokens, "f32");
327 }
328 }
329 push_directive(tokens, "f16");
330 push_directive(tokens, "f16");
331 self.d.unparse_tokens(tokens);
332 tokens.push(PtxToken::Comma);
333 self.a.unparse_tokens(tokens);
334 tokens.push(PtxToken::Comma);
335 self.b_desc.unparse_tokens(tokens);
336 tokens.push(PtxToken::Comma);
337 self.sp_meta.unparse_tokens(tokens);
338 tokens.push(PtxToken::Comma);
339 self.sp_sel.unparse_tokens(tokens);
340 tokens.push(PtxToken::Comma);
341 self.scale_d.unparse_tokens(tokens);
342 tokens.push(PtxToken::Comma);
343 self.imm_scale_a.unparse_tokens(tokens);
344 tokens.push(PtxToken::Comma);
345 self.imm_scale_b.unparse_tokens(tokens);
346 tokens.push(PtxToken::Comma);
347 self.imm_trans_b.unparse_tokens(tokens);
348 tokens.push(PtxToken::Semicolon);
349 }
350 }
351}
352
353pub mod section_1 {
354 use super::*;
355 use crate::r#type::instruction::wgmma_mma_async_sp::section_1::*;
356
357 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeBf16Bf16 {
358 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
359 push_opcode(tokens, "wgmma");
360 push_directive(tokens, "mma_async");
361 push_directive(tokens, "sp");
362 push_directive(tokens, "sync");
363 push_directive(tokens, "aligned");
364 match &self.shape {
365 Shape::M64n104k32 => {
366 push_directive(tokens, "m64n104k32");
367 }
368 Shape::M64n112k32 => {
369 push_directive(tokens, "m64n112k32");
370 }
371 Shape::M64n120k32 => {
372 push_directive(tokens, "m64n120k32");
373 }
374 Shape::M64n128k32 => {
375 push_directive(tokens, "m64n128k32");
376 }
377 Shape::M64n136k32 => {
378 push_directive(tokens, "m64n136k32");
379 }
380 Shape::M64n144k32 => {
381 push_directive(tokens, "m64n144k32");
382 }
383 Shape::M64n152k32 => {
384 push_directive(tokens, "m64n152k32");
385 }
386 Shape::M64n160k32 => {
387 push_directive(tokens, "m64n160k32");
388 }
389 Shape::M64n168k32 => {
390 push_directive(tokens, "m64n168k32");
391 }
392 Shape::M64n176k32 => {
393 push_directive(tokens, "m64n176k32");
394 }
395 Shape::M64n184k32 => {
396 push_directive(tokens, "m64n184k32");
397 }
398 Shape::M64n192k32 => {
399 push_directive(tokens, "m64n192k32");
400 }
401 Shape::M64n200k32 => {
402 push_directive(tokens, "m64n200k32");
403 }
404 Shape::M64n208k32 => {
405 push_directive(tokens, "m64n208k32");
406 }
407 Shape::M64n216k32 => {
408 push_directive(tokens, "m64n216k32");
409 }
410 Shape::M64n224k32 => {
411 push_directive(tokens, "m64n224k32");
412 }
413 Shape::M64n232k32 => {
414 push_directive(tokens, "m64n232k32");
415 }
416 Shape::M64n240k32 => {
417 push_directive(tokens, "m64n240k32");
418 }
419 Shape::M64n248k32 => {
420 push_directive(tokens, "m64n248k32");
421 }
422 Shape::M64n256k32 => {
423 push_directive(tokens, "m64n256k32");
424 }
425 Shape::M64n16k32 => {
426 push_directive(tokens, "m64n16k32");
427 }
428 Shape::M64n24k32 => {
429 push_directive(tokens, "m64n24k32");
430 }
431 Shape::M64n32k32 => {
432 push_directive(tokens, "m64n32k32");
433 }
434 Shape::M64n40k32 => {
435 push_directive(tokens, "m64n40k32");
436 }
437 Shape::M64n48k32 => {
438 push_directive(tokens, "m64n48k32");
439 }
440 Shape::M64n56k32 => {
441 push_directive(tokens, "m64n56k32");
442 }
443 Shape::M64n64k32 => {
444 push_directive(tokens, "m64n64k32");
445 }
446 Shape::M64n72k32 => {
447 push_directive(tokens, "m64n72k32");
448 }
449 Shape::M64n80k32 => {
450 push_directive(tokens, "m64n80k32");
451 }
452 Shape::M64n88k32 => {
453 push_directive(tokens, "m64n88k32");
454 }
455 Shape::M64n96k32 => {
456 push_directive(tokens, "m64n96k32");
457 }
458 Shape::M64n8k32 => {
459 push_directive(tokens, "m64n8k32");
460 }
461 }
462 match &self.dtype {
463 Dtype::F32 => {
464 push_directive(tokens, "f32");
465 }
466 }
467 push_directive(tokens, "bf16");
468 push_directive(tokens, "bf16");
469 self.d.unparse_tokens(tokens);
470 tokens.push(PtxToken::Comma);
471 self.a_desc.unparse_tokens(tokens);
472 tokens.push(PtxToken::Comma);
473 self.b_desc.unparse_tokens(tokens);
474 tokens.push(PtxToken::Comma);
475 self.sp_meta.unparse_tokens(tokens);
476 tokens.push(PtxToken::Comma);
477 self.sp_sel.unparse_tokens(tokens);
478 tokens.push(PtxToken::Comma);
479 self.scale_d.unparse_tokens(tokens);
480 tokens.push(PtxToken::Comma);
481 self.imm_scale_a.unparse_tokens(tokens);
482 tokens.push(PtxToken::Comma);
483 self.imm_scale_b.unparse_tokens(tokens);
484 tokens.push(PtxToken::Comma);
485 self.imm_trans_a.unparse_tokens(tokens);
486 tokens.push(PtxToken::Comma);
487 self.imm_trans_b.unparse_tokens(tokens);
488 tokens.push(PtxToken::Semicolon);
489 }
490 }
491
492 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeBf16Bf161 {
493 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
494 push_opcode(tokens, "wgmma");
495 push_directive(tokens, "mma_async");
496 push_directive(tokens, "sp");
497 push_directive(tokens, "sync");
498 push_directive(tokens, "aligned");
499 match &self.shape {
500 Shape::M64n104k32 => {
501 push_directive(tokens, "m64n104k32");
502 }
503 Shape::M64n112k32 => {
504 push_directive(tokens, "m64n112k32");
505 }
506 Shape::M64n120k32 => {
507 push_directive(tokens, "m64n120k32");
508 }
509 Shape::M64n128k32 => {
510 push_directive(tokens, "m64n128k32");
511 }
512 Shape::M64n136k32 => {
513 push_directive(tokens, "m64n136k32");
514 }
515 Shape::M64n144k32 => {
516 push_directive(tokens, "m64n144k32");
517 }
518 Shape::M64n152k32 => {
519 push_directive(tokens, "m64n152k32");
520 }
521 Shape::M64n160k32 => {
522 push_directive(tokens, "m64n160k32");
523 }
524 Shape::M64n168k32 => {
525 push_directive(tokens, "m64n168k32");
526 }
527 Shape::M64n176k32 => {
528 push_directive(tokens, "m64n176k32");
529 }
530 Shape::M64n184k32 => {
531 push_directive(tokens, "m64n184k32");
532 }
533 Shape::M64n192k32 => {
534 push_directive(tokens, "m64n192k32");
535 }
536 Shape::M64n200k32 => {
537 push_directive(tokens, "m64n200k32");
538 }
539 Shape::M64n208k32 => {
540 push_directive(tokens, "m64n208k32");
541 }
542 Shape::M64n216k32 => {
543 push_directive(tokens, "m64n216k32");
544 }
545 Shape::M64n224k32 => {
546 push_directive(tokens, "m64n224k32");
547 }
548 Shape::M64n232k32 => {
549 push_directive(tokens, "m64n232k32");
550 }
551 Shape::M64n240k32 => {
552 push_directive(tokens, "m64n240k32");
553 }
554 Shape::M64n248k32 => {
555 push_directive(tokens, "m64n248k32");
556 }
557 Shape::M64n256k32 => {
558 push_directive(tokens, "m64n256k32");
559 }
560 Shape::M64n16k32 => {
561 push_directive(tokens, "m64n16k32");
562 }
563 Shape::M64n24k32 => {
564 push_directive(tokens, "m64n24k32");
565 }
566 Shape::M64n32k32 => {
567 push_directive(tokens, "m64n32k32");
568 }
569 Shape::M64n40k32 => {
570 push_directive(tokens, "m64n40k32");
571 }
572 Shape::M64n48k32 => {
573 push_directive(tokens, "m64n48k32");
574 }
575 Shape::M64n56k32 => {
576 push_directive(tokens, "m64n56k32");
577 }
578 Shape::M64n64k32 => {
579 push_directive(tokens, "m64n64k32");
580 }
581 Shape::M64n72k32 => {
582 push_directive(tokens, "m64n72k32");
583 }
584 Shape::M64n80k32 => {
585 push_directive(tokens, "m64n80k32");
586 }
587 Shape::M64n88k32 => {
588 push_directive(tokens, "m64n88k32");
589 }
590 Shape::M64n96k32 => {
591 push_directive(tokens, "m64n96k32");
592 }
593 Shape::M64n8k32 => {
594 push_directive(tokens, "m64n8k32");
595 }
596 }
597 match &self.dtype {
598 Dtype::F32 => {
599 push_directive(tokens, "f32");
600 }
601 }
602 push_directive(tokens, "bf16");
603 push_directive(tokens, "bf16");
604 self.d.unparse_tokens(tokens);
605 tokens.push(PtxToken::Comma);
606 self.a.unparse_tokens(tokens);
607 tokens.push(PtxToken::Comma);
608 self.b_desc.unparse_tokens(tokens);
609 tokens.push(PtxToken::Comma);
610 self.sp_meta.unparse_tokens(tokens);
611 tokens.push(PtxToken::Comma);
612 self.sp_sel.unparse_tokens(tokens);
613 tokens.push(PtxToken::Comma);
614 self.scale_d.unparse_tokens(tokens);
615 tokens.push(PtxToken::Comma);
616 self.imm_scale_a.unparse_tokens(tokens);
617 tokens.push(PtxToken::Comma);
618 self.imm_scale_b.unparse_tokens(tokens);
619 tokens.push(PtxToken::Comma);
620 self.imm_trans_b.unparse_tokens(tokens);
621 tokens.push(PtxToken::Semicolon);
622 }
623 }
624}
625
626pub mod section_2 {
627 use super::*;
628 use crate::r#type::instruction::wgmma_mma_async_sp::section_2::*;
629
630 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeTf32Tf32 {
631 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
632 push_opcode(tokens, "wgmma");
633 push_directive(tokens, "mma_async");
634 push_directive(tokens, "sp");
635 push_directive(tokens, "sync");
636 push_directive(tokens, "aligned");
637 match &self.shape {
638 Shape::M64n104k16 => {
639 push_directive(tokens, "m64n104k16");
640 }
641 Shape::M64n112k16 => {
642 push_directive(tokens, "m64n112k16");
643 }
644 Shape::M64n120k16 => {
645 push_directive(tokens, "m64n120k16");
646 }
647 Shape::M64n128k16 => {
648 push_directive(tokens, "m64n128k16");
649 }
650 Shape::M64n136k16 => {
651 push_directive(tokens, "m64n136k16");
652 }
653 Shape::M64n144k16 => {
654 push_directive(tokens, "m64n144k16");
655 }
656 Shape::M64n152k16 => {
657 push_directive(tokens, "m64n152k16");
658 }
659 Shape::M64n160k16 => {
660 push_directive(tokens, "m64n160k16");
661 }
662 Shape::M64n168k16 => {
663 push_directive(tokens, "m64n168k16");
664 }
665 Shape::M64n176k16 => {
666 push_directive(tokens, "m64n176k16");
667 }
668 Shape::M64n184k16 => {
669 push_directive(tokens, "m64n184k16");
670 }
671 Shape::M64n192k16 => {
672 push_directive(tokens, "m64n192k16");
673 }
674 Shape::M64n200k16 => {
675 push_directive(tokens, "m64n200k16");
676 }
677 Shape::M64n208k16 => {
678 push_directive(tokens, "m64n208k16");
679 }
680 Shape::M64n216k16 => {
681 push_directive(tokens, "m64n216k16");
682 }
683 Shape::M64n224k16 => {
684 push_directive(tokens, "m64n224k16");
685 }
686 Shape::M64n232k16 => {
687 push_directive(tokens, "m64n232k16");
688 }
689 Shape::M64n240k16 => {
690 push_directive(tokens, "m64n240k16");
691 }
692 Shape::M64n248k16 => {
693 push_directive(tokens, "m64n248k16");
694 }
695 Shape::M64n256k16 => {
696 push_directive(tokens, "m64n256k16");
697 }
698 Shape::M64n16k16 => {
699 push_directive(tokens, "m64n16k16");
700 }
701 Shape::M64n24k16 => {
702 push_directive(tokens, "m64n24k16");
703 }
704 Shape::M64n32k16 => {
705 push_directive(tokens, "m64n32k16");
706 }
707 Shape::M64n40k16 => {
708 push_directive(tokens, "m64n40k16");
709 }
710 Shape::M64n48k16 => {
711 push_directive(tokens, "m64n48k16");
712 }
713 Shape::M64n56k16 => {
714 push_directive(tokens, "m64n56k16");
715 }
716 Shape::M64n64k16 => {
717 push_directive(tokens, "m64n64k16");
718 }
719 Shape::M64n72k16 => {
720 push_directive(tokens, "m64n72k16");
721 }
722 Shape::M64n80k16 => {
723 push_directive(tokens, "m64n80k16");
724 }
725 Shape::M64n88k16 => {
726 push_directive(tokens, "m64n88k16");
727 }
728 Shape::M64n96k16 => {
729 push_directive(tokens, "m64n96k16");
730 }
731 Shape::M64n8k16 => {
732 push_directive(tokens, "m64n8k16");
733 }
734 }
735 match &self.dtype {
736 Dtype::F32 => {
737 push_directive(tokens, "f32");
738 }
739 }
740 push_directive(tokens, "tf32");
741 push_directive(tokens, "tf32");
742 self.d.unparse_tokens(tokens);
743 tokens.push(PtxToken::Comma);
744 self.a_desc.unparse_tokens(tokens);
745 tokens.push(PtxToken::Comma);
746 self.b_desc.unparse_tokens(tokens);
747 tokens.push(PtxToken::Comma);
748 self.sp_meta.unparse_tokens(tokens);
749 tokens.push(PtxToken::Comma);
750 self.sp_sel.unparse_tokens(tokens);
751 tokens.push(PtxToken::Comma);
752 self.scale_d.unparse_tokens(tokens);
753 tokens.push(PtxToken::Comma);
754 self.imm_scale_a.unparse_tokens(tokens);
755 tokens.push(PtxToken::Comma);
756 self.imm_scale_b.unparse_tokens(tokens);
757 tokens.push(PtxToken::Semicolon);
758 }
759 }
760
761 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeTf32Tf321 {
762 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
763 push_opcode(tokens, "wgmma");
764 push_directive(tokens, "mma_async");
765 push_directive(tokens, "sp");
766 push_directive(tokens, "sync");
767 push_directive(tokens, "aligned");
768 match &self.shape {
769 Shape::M64n104k16 => {
770 push_directive(tokens, "m64n104k16");
771 }
772 Shape::M64n112k16 => {
773 push_directive(tokens, "m64n112k16");
774 }
775 Shape::M64n120k16 => {
776 push_directive(tokens, "m64n120k16");
777 }
778 Shape::M64n128k16 => {
779 push_directive(tokens, "m64n128k16");
780 }
781 Shape::M64n136k16 => {
782 push_directive(tokens, "m64n136k16");
783 }
784 Shape::M64n144k16 => {
785 push_directive(tokens, "m64n144k16");
786 }
787 Shape::M64n152k16 => {
788 push_directive(tokens, "m64n152k16");
789 }
790 Shape::M64n160k16 => {
791 push_directive(tokens, "m64n160k16");
792 }
793 Shape::M64n168k16 => {
794 push_directive(tokens, "m64n168k16");
795 }
796 Shape::M64n176k16 => {
797 push_directive(tokens, "m64n176k16");
798 }
799 Shape::M64n184k16 => {
800 push_directive(tokens, "m64n184k16");
801 }
802 Shape::M64n192k16 => {
803 push_directive(tokens, "m64n192k16");
804 }
805 Shape::M64n200k16 => {
806 push_directive(tokens, "m64n200k16");
807 }
808 Shape::M64n208k16 => {
809 push_directive(tokens, "m64n208k16");
810 }
811 Shape::M64n216k16 => {
812 push_directive(tokens, "m64n216k16");
813 }
814 Shape::M64n224k16 => {
815 push_directive(tokens, "m64n224k16");
816 }
817 Shape::M64n232k16 => {
818 push_directive(tokens, "m64n232k16");
819 }
820 Shape::M64n240k16 => {
821 push_directive(tokens, "m64n240k16");
822 }
823 Shape::M64n248k16 => {
824 push_directive(tokens, "m64n248k16");
825 }
826 Shape::M64n256k16 => {
827 push_directive(tokens, "m64n256k16");
828 }
829 Shape::M64n16k16 => {
830 push_directive(tokens, "m64n16k16");
831 }
832 Shape::M64n24k16 => {
833 push_directive(tokens, "m64n24k16");
834 }
835 Shape::M64n32k16 => {
836 push_directive(tokens, "m64n32k16");
837 }
838 Shape::M64n40k16 => {
839 push_directive(tokens, "m64n40k16");
840 }
841 Shape::M64n48k16 => {
842 push_directive(tokens, "m64n48k16");
843 }
844 Shape::M64n56k16 => {
845 push_directive(tokens, "m64n56k16");
846 }
847 Shape::M64n64k16 => {
848 push_directive(tokens, "m64n64k16");
849 }
850 Shape::M64n72k16 => {
851 push_directive(tokens, "m64n72k16");
852 }
853 Shape::M64n80k16 => {
854 push_directive(tokens, "m64n80k16");
855 }
856 Shape::M64n88k16 => {
857 push_directive(tokens, "m64n88k16");
858 }
859 Shape::M64n96k16 => {
860 push_directive(tokens, "m64n96k16");
861 }
862 Shape::M64n8k16 => {
863 push_directive(tokens, "m64n8k16");
864 }
865 }
866 match &self.dtype {
867 Dtype::F32 => {
868 push_directive(tokens, "f32");
869 }
870 }
871 push_directive(tokens, "tf32");
872 push_directive(tokens, "tf32");
873 self.d.unparse_tokens(tokens);
874 tokens.push(PtxToken::Comma);
875 self.a.unparse_tokens(tokens);
876 tokens.push(PtxToken::Comma);
877 self.b_desc.unparse_tokens(tokens);
878 tokens.push(PtxToken::Comma);
879 self.sp_meta.unparse_tokens(tokens);
880 tokens.push(PtxToken::Comma);
881 self.sp_sel.unparse_tokens(tokens);
882 tokens.push(PtxToken::Comma);
883 self.scale_d.unparse_tokens(tokens);
884 tokens.push(PtxToken::Comma);
885 self.imm_scale_a.unparse_tokens(tokens);
886 tokens.push(PtxToken::Comma);
887 self.imm_scale_b.unparse_tokens(tokens);
888 tokens.push(PtxToken::Semicolon);
889 }
890 }
891}
892
893pub mod section_3 {
894 use super::*;
895 use crate::r#type::instruction::wgmma_mma_async_sp::section_3::*;
896
897 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeAtypeBtype {
898 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
899 push_opcode(tokens, "wgmma");
900 push_directive(tokens, "mma_async");
901 push_directive(tokens, "sp");
902 push_directive(tokens, "sync");
903 push_directive(tokens, "aligned");
904 match &self.shape {
905 Shape::M64n104k64 => {
906 push_directive(tokens, "m64n104k64");
907 }
908 Shape::M64n112k64 => {
909 push_directive(tokens, "m64n112k64");
910 }
911 Shape::M64n120k64 => {
912 push_directive(tokens, "m64n120k64");
913 }
914 Shape::M64n128k64 => {
915 push_directive(tokens, "m64n128k64");
916 }
917 Shape::M64n136k64 => {
918 push_directive(tokens, "m64n136k64");
919 }
920 Shape::M64n144k64 => {
921 push_directive(tokens, "m64n144k64");
922 }
923 Shape::M64n152k64 => {
924 push_directive(tokens, "m64n152k64");
925 }
926 Shape::M64n160k64 => {
927 push_directive(tokens, "m64n160k64");
928 }
929 Shape::M64n168k64 => {
930 push_directive(tokens, "m64n168k64");
931 }
932 Shape::M64n176k64 => {
933 push_directive(tokens, "m64n176k64");
934 }
935 Shape::M64n184k64 => {
936 push_directive(tokens, "m64n184k64");
937 }
938 Shape::M64n192k64 => {
939 push_directive(tokens, "m64n192k64");
940 }
941 Shape::M64n200k64 => {
942 push_directive(tokens, "m64n200k64");
943 }
944 Shape::M64n208k64 => {
945 push_directive(tokens, "m64n208k64");
946 }
947 Shape::M64n216k64 => {
948 push_directive(tokens, "m64n216k64");
949 }
950 Shape::M64n224k64 => {
951 push_directive(tokens, "m64n224k64");
952 }
953 Shape::M64n232k64 => {
954 push_directive(tokens, "m64n232k64");
955 }
956 Shape::M64n240k64 => {
957 push_directive(tokens, "m64n240k64");
958 }
959 Shape::M64n248k64 => {
960 push_directive(tokens, "m64n248k64");
961 }
962 Shape::M64n256k64 => {
963 push_directive(tokens, "m64n256k64");
964 }
965 Shape::M64n16k64 => {
966 push_directive(tokens, "m64n16k64");
967 }
968 Shape::M64n24k64 => {
969 push_directive(tokens, "m64n24k64");
970 }
971 Shape::M64n32k64 => {
972 push_directive(tokens, "m64n32k64");
973 }
974 Shape::M64n40k64 => {
975 push_directive(tokens, "m64n40k64");
976 }
977 Shape::M64n48k64 => {
978 push_directive(tokens, "m64n48k64");
979 }
980 Shape::M64n56k64 => {
981 push_directive(tokens, "m64n56k64");
982 }
983 Shape::M64n64k64 => {
984 push_directive(tokens, "m64n64k64");
985 }
986 Shape::M64n72k64 => {
987 push_directive(tokens, "m64n72k64");
988 }
989 Shape::M64n80k64 => {
990 push_directive(tokens, "m64n80k64");
991 }
992 Shape::M64n88k64 => {
993 push_directive(tokens, "m64n88k64");
994 }
995 Shape::M64n96k64 => {
996 push_directive(tokens, "m64n96k64");
997 }
998 Shape::M64n8k64 => {
999 push_directive(tokens, "m64n8k64");
1000 }
1001 }
1002 match &self.dtype {
1003 Dtype::F16 => {
1004 push_directive(tokens, "f16");
1005 }
1006 Dtype::F32 => {
1007 push_directive(tokens, "f32");
1008 }
1009 }
1010 match &self.atype {
1011 Atype::E4m3 => {
1012 push_directive(tokens, "e4m3");
1013 }
1014 Atype::E5m2 => {
1015 push_directive(tokens, "e5m2");
1016 }
1017 }
1018 match &self.btype {
1019 Btype::E4m3 => {
1020 push_directive(tokens, "e4m3");
1021 }
1022 Btype::E5m2 => {
1023 push_directive(tokens, "e5m2");
1024 }
1025 }
1026 self.d.unparse_tokens(tokens);
1027 tokens.push(PtxToken::Comma);
1028 self.a_desc.unparse_tokens(tokens);
1029 tokens.push(PtxToken::Comma);
1030 self.b_desc.unparse_tokens(tokens);
1031 tokens.push(PtxToken::Comma);
1032 self.sp_meta.unparse_tokens(tokens);
1033 tokens.push(PtxToken::Comma);
1034 self.sp_sel.unparse_tokens(tokens);
1035 tokens.push(PtxToken::Comma);
1036 self.scale_d.unparse_tokens(tokens);
1037 tokens.push(PtxToken::Comma);
1038 self.imm_scale_a.unparse_tokens(tokens);
1039 tokens.push(PtxToken::Comma);
1040 self.imm_scale_b.unparse_tokens(tokens);
1041 tokens.push(PtxToken::Semicolon);
1042 }
1043 }
1044
1045 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeDtypeAtypeBtype1 {
1046 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1047 push_opcode(tokens, "wgmma");
1048 push_directive(tokens, "mma_async");
1049 push_directive(tokens, "sp");
1050 push_directive(tokens, "sync");
1051 push_directive(tokens, "aligned");
1052 match &self.shape {
1053 Shape::M64n104k64 => {
1054 push_directive(tokens, "m64n104k64");
1055 }
1056 Shape::M64n112k64 => {
1057 push_directive(tokens, "m64n112k64");
1058 }
1059 Shape::M64n120k64 => {
1060 push_directive(tokens, "m64n120k64");
1061 }
1062 Shape::M64n128k64 => {
1063 push_directive(tokens, "m64n128k64");
1064 }
1065 Shape::M64n136k64 => {
1066 push_directive(tokens, "m64n136k64");
1067 }
1068 Shape::M64n144k64 => {
1069 push_directive(tokens, "m64n144k64");
1070 }
1071 Shape::M64n152k64 => {
1072 push_directive(tokens, "m64n152k64");
1073 }
1074 Shape::M64n160k64 => {
1075 push_directive(tokens, "m64n160k64");
1076 }
1077 Shape::M64n168k64 => {
1078 push_directive(tokens, "m64n168k64");
1079 }
1080 Shape::M64n176k64 => {
1081 push_directive(tokens, "m64n176k64");
1082 }
1083 Shape::M64n184k64 => {
1084 push_directive(tokens, "m64n184k64");
1085 }
1086 Shape::M64n192k64 => {
1087 push_directive(tokens, "m64n192k64");
1088 }
1089 Shape::M64n200k64 => {
1090 push_directive(tokens, "m64n200k64");
1091 }
1092 Shape::M64n208k64 => {
1093 push_directive(tokens, "m64n208k64");
1094 }
1095 Shape::M64n216k64 => {
1096 push_directive(tokens, "m64n216k64");
1097 }
1098 Shape::M64n224k64 => {
1099 push_directive(tokens, "m64n224k64");
1100 }
1101 Shape::M64n232k64 => {
1102 push_directive(tokens, "m64n232k64");
1103 }
1104 Shape::M64n240k64 => {
1105 push_directive(tokens, "m64n240k64");
1106 }
1107 Shape::M64n248k64 => {
1108 push_directive(tokens, "m64n248k64");
1109 }
1110 Shape::M64n256k64 => {
1111 push_directive(tokens, "m64n256k64");
1112 }
1113 Shape::M64n16k64 => {
1114 push_directive(tokens, "m64n16k64");
1115 }
1116 Shape::M64n24k64 => {
1117 push_directive(tokens, "m64n24k64");
1118 }
1119 Shape::M64n32k64 => {
1120 push_directive(tokens, "m64n32k64");
1121 }
1122 Shape::M64n40k64 => {
1123 push_directive(tokens, "m64n40k64");
1124 }
1125 Shape::M64n48k64 => {
1126 push_directive(tokens, "m64n48k64");
1127 }
1128 Shape::M64n56k64 => {
1129 push_directive(tokens, "m64n56k64");
1130 }
1131 Shape::M64n64k64 => {
1132 push_directive(tokens, "m64n64k64");
1133 }
1134 Shape::M64n72k64 => {
1135 push_directive(tokens, "m64n72k64");
1136 }
1137 Shape::M64n80k64 => {
1138 push_directive(tokens, "m64n80k64");
1139 }
1140 Shape::M64n88k64 => {
1141 push_directive(tokens, "m64n88k64");
1142 }
1143 Shape::M64n96k64 => {
1144 push_directive(tokens, "m64n96k64");
1145 }
1146 Shape::M64n8k64 => {
1147 push_directive(tokens, "m64n8k64");
1148 }
1149 }
1150 match &self.dtype {
1151 Dtype::F16 => {
1152 push_directive(tokens, "f16");
1153 }
1154 Dtype::F32 => {
1155 push_directive(tokens, "f32");
1156 }
1157 }
1158 match &self.atype {
1159 Atype::E4m3 => {
1160 push_directive(tokens, "e4m3");
1161 }
1162 Atype::E5m2 => {
1163 push_directive(tokens, "e5m2");
1164 }
1165 }
1166 match &self.btype {
1167 Btype::E4m3 => {
1168 push_directive(tokens, "e4m3");
1169 }
1170 Btype::E5m2 => {
1171 push_directive(tokens, "e5m2");
1172 }
1173 }
1174 self.d.unparse_tokens(tokens);
1175 tokens.push(PtxToken::Comma);
1176 self.a.unparse_tokens(tokens);
1177 tokens.push(PtxToken::Comma);
1178 self.b_desc.unparse_tokens(tokens);
1179 tokens.push(PtxToken::Comma);
1180 self.sp_meta.unparse_tokens(tokens);
1181 tokens.push(PtxToken::Comma);
1182 self.sp_sel.unparse_tokens(tokens);
1183 tokens.push(PtxToken::Comma);
1184 self.scale_d.unparse_tokens(tokens);
1185 tokens.push(PtxToken::Comma);
1186 self.imm_scale_a.unparse_tokens(tokens);
1187 tokens.push(PtxToken::Comma);
1188 self.imm_scale_b.unparse_tokens(tokens);
1189 tokens.push(PtxToken::Semicolon);
1190 }
1191 }
1192}
1193
1194pub mod section_4 {
1195 use super::*;
1196 use crate::r#type::instruction::wgmma_mma_async_sp::section_4::*;
1197
1198 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeSatfiniteS32AtypeBtype {
1199 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1200 push_opcode(tokens, "wgmma");
1201 push_directive(tokens, "mma_async");
1202 push_directive(tokens, "sp");
1203 push_directive(tokens, "sync");
1204 push_directive(tokens, "aligned");
1205 match &self.shape {
1206 Shape::M64n112k64 => {
1207 push_directive(tokens, "m64n112k64");
1208 }
1209 Shape::M64n128k64 => {
1210 push_directive(tokens, "m64n128k64");
1211 }
1212 Shape::M64n144k64 => {
1213 push_directive(tokens, "m64n144k64");
1214 }
1215 Shape::M64n160k64 => {
1216 push_directive(tokens, "m64n160k64");
1217 }
1218 Shape::M64n176k64 => {
1219 push_directive(tokens, "m64n176k64");
1220 }
1221 Shape::M64n192k64 => {
1222 push_directive(tokens, "m64n192k64");
1223 }
1224 Shape::M64n208k64 => {
1225 push_directive(tokens, "m64n208k64");
1226 }
1227 Shape::M64n224k64 => {
1228 push_directive(tokens, "m64n224k64");
1229 }
1230 Shape::M64n240k64 => {
1231 push_directive(tokens, "m64n240k64");
1232 }
1233 Shape::M64n256k64 => {
1234 push_directive(tokens, "m64n256k64");
1235 }
1236 Shape::M64n16k64 => {
1237 push_directive(tokens, "m64n16k64");
1238 }
1239 Shape::M64n24k64 => {
1240 push_directive(tokens, "m64n24k64");
1241 }
1242 Shape::M64n32k64 => {
1243 push_directive(tokens, "m64n32k64");
1244 }
1245 Shape::M64n48k64 => {
1246 push_directive(tokens, "m64n48k64");
1247 }
1248 Shape::M64n64k64 => {
1249 push_directive(tokens, "m64n64k64");
1250 }
1251 Shape::M64n80k64 => {
1252 push_directive(tokens, "m64n80k64");
1253 }
1254 Shape::M64n96k64 => {
1255 push_directive(tokens, "m64n96k64");
1256 }
1257 Shape::M64n8k64 => {
1258 push_directive(tokens, "m64n8k64");
1259 }
1260 }
1261 if self.satfinite {
1262 push_directive(tokens, "satfinite");
1263 }
1264 push_directive(tokens, "s32");
1265 match &self.atype {
1266 Atype::S8 => {
1267 push_directive(tokens, "s8");
1268 }
1269 Atype::U8 => {
1270 push_directive(tokens, "u8");
1271 }
1272 }
1273 match &self.btype {
1274 Btype::S8 => {
1275 push_directive(tokens, "s8");
1276 }
1277 Btype::U8 => {
1278 push_directive(tokens, "u8");
1279 }
1280 }
1281 self.d.unparse_tokens(tokens);
1282 tokens.push(PtxToken::Comma);
1283 self.a_desc.unparse_tokens(tokens);
1284 tokens.push(PtxToken::Comma);
1285 self.b_desc.unparse_tokens(tokens);
1286 tokens.push(PtxToken::Comma);
1287 self.sp_meta.unparse_tokens(tokens);
1288 tokens.push(PtxToken::Comma);
1289 self.sp_sel.unparse_tokens(tokens);
1290 tokens.push(PtxToken::Comma);
1291 self.scale_d.unparse_tokens(tokens);
1292 tokens.push(PtxToken::Semicolon);
1293 }
1294 }
1295
1296 impl PtxUnparser for WgmmaMmaAsyncSpSyncAlignedShapeSatfiniteS32AtypeBtype1 {
1297 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1298 push_opcode(tokens, "wgmma");
1299 push_directive(tokens, "mma_async");
1300 push_directive(tokens, "sp");
1301 push_directive(tokens, "sync");
1302 push_directive(tokens, "aligned");
1303 match &self.shape {
1304 Shape::M64n112k64 => {
1305 push_directive(tokens, "m64n112k64");
1306 }
1307 Shape::M64n128k64 => {
1308 push_directive(tokens, "m64n128k64");
1309 }
1310 Shape::M64n144k64 => {
1311 push_directive(tokens, "m64n144k64");
1312 }
1313 Shape::M64n160k64 => {
1314 push_directive(tokens, "m64n160k64");
1315 }
1316 Shape::M64n176k64 => {
1317 push_directive(tokens, "m64n176k64");
1318 }
1319 Shape::M64n192k64 => {
1320 push_directive(tokens, "m64n192k64");
1321 }
1322 Shape::M64n208k64 => {
1323 push_directive(tokens, "m64n208k64");
1324 }
1325 Shape::M64n224k64 => {
1326 push_directive(tokens, "m64n224k64");
1327 }
1328 Shape::M64n240k64 => {
1329 push_directive(tokens, "m64n240k64");
1330 }
1331 Shape::M64n256k64 => {
1332 push_directive(tokens, "m64n256k64");
1333 }
1334 Shape::M64n16k64 => {
1335 push_directive(tokens, "m64n16k64");
1336 }
1337 Shape::M64n24k64 => {
1338 push_directive(tokens, "m64n24k64");
1339 }
1340 Shape::M64n32k64 => {
1341 push_directive(tokens, "m64n32k64");
1342 }
1343 Shape::M64n48k64 => {
1344 push_directive(tokens, "m64n48k64");
1345 }
1346 Shape::M64n64k64 => {
1347 push_directive(tokens, "m64n64k64");
1348 }
1349 Shape::M64n80k64 => {
1350 push_directive(tokens, "m64n80k64");
1351 }
1352 Shape::M64n96k64 => {
1353 push_directive(tokens, "m64n96k64");
1354 }
1355 Shape::M64n8k64 => {
1356 push_directive(tokens, "m64n8k64");
1357 }
1358 }
1359 if self.satfinite {
1360 push_directive(tokens, "satfinite");
1361 }
1362 push_directive(tokens, "s32");
1363 match &self.atype {
1364 Atype::S8 => {
1365 push_directive(tokens, "s8");
1366 }
1367 Atype::U8 => {
1368 push_directive(tokens, "u8");
1369 }
1370 }
1371 match &self.btype {
1372 Btype::S8 => {
1373 push_directive(tokens, "s8");
1374 }
1375 Btype::U8 => {
1376 push_directive(tokens, "u8");
1377 }
1378 }
1379 self.d.unparse_tokens(tokens);
1380 tokens.push(PtxToken::Comma);
1381 self.a.unparse_tokens(tokens);
1382 tokens.push(PtxToken::Comma);
1383 self.b_desc.unparse_tokens(tokens);
1384 tokens.push(PtxToken::Comma);
1385 self.sp_meta.unparse_tokens(tokens);
1386 tokens.push(PtxToken::Comma);
1387 self.sp_sel.unparse_tokens(tokens);
1388 tokens.push(PtxToken::Comma);
1389 self.scale_d.unparse_tokens(tokens);
1390 tokens.push(PtxToken::Semicolon);
1391 }
1392 }
1393}