1#![allow(unused)]
73
74use crate::lexer::PtxToken;
75use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
76use crate::r#type::common::*;
77
78pub mod section_0 {
79 use super::*;
80 use crate::r#type::instruction::mma::section_0::*;
81
82 impl PtxParser for Alayout {
87 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
88 {
90 let saved_pos = stream.position();
91 if stream.expect_string(".row").is_ok() {
92 return Ok(Alayout::Row);
93 }
94 stream.set_position(saved_pos);
95 }
96 let saved_pos = stream.position();
97 {
99 let saved_pos = stream.position();
100 if stream.expect_string(".col").is_ok() {
101 return Ok(Alayout::Col);
102 }
103 stream.set_position(saved_pos);
104 }
105 stream.set_position(saved_pos);
106 let span = stream
107 .peek()
108 .map(|(_, s)| s.clone())
109 .unwrap_or(Span { start: 0, end: 0 });
110 let expected = &[".row", ".col"];
111 let found = stream
112 .peek()
113 .map(|(t, _)| format!("{:?}", t))
114 .unwrap_or_else(|_| "<end of input>".to_string());
115 Err(crate::parser::unexpected_value(span, expected, found))
116 }
117 }
118
119 impl PtxParser for Blayout {
120 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
121 {
123 let saved_pos = stream.position();
124 if stream.expect_string(".row").is_ok() {
125 return Ok(Blayout::Row);
126 }
127 stream.set_position(saved_pos);
128 }
129 let saved_pos = stream.position();
130 {
132 let saved_pos = stream.position();
133 if stream.expect_string(".col").is_ok() {
134 return Ok(Blayout::Col);
135 }
136 stream.set_position(saved_pos);
137 }
138 stream.set_position(saved_pos);
139 let span = stream
140 .peek()
141 .map(|(_, s)| s.clone())
142 .unwrap_or(Span { start: 0, end: 0 });
143 let expected = &[".row", ".col"];
144 let found = stream
145 .peek()
146 .map(|(t, _)| format!("{:?}", t))
147 .unwrap_or_else(|_| "<end of input>".to_string());
148 Err(crate::parser::unexpected_value(span, expected, found))
149 }
150 }
151
152 impl PtxParser for Ctype {
153 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
154 {
156 let saved_pos = stream.position();
157 if stream.expect_string(".f16").is_ok() {
158 return Ok(Ctype::F16);
159 }
160 stream.set_position(saved_pos);
161 }
162 let saved_pos = stream.position();
163 {
165 let saved_pos = stream.position();
166 if stream.expect_string(".f32").is_ok() {
167 return Ok(Ctype::F32);
168 }
169 stream.set_position(saved_pos);
170 }
171 stream.set_position(saved_pos);
172 let span = stream
173 .peek()
174 .map(|(_, s)| s.clone())
175 .unwrap_or(Span { start: 0, end: 0 });
176 let expected = &[".f16", ".f32"];
177 let found = stream
178 .peek()
179 .map(|(t, _)| format!("{:?}", t))
180 .unwrap_or_else(|_| "<end of input>".to_string());
181 Err(crate::parser::unexpected_value(span, expected, found))
182 }
183 }
184
185 impl PtxParser for Dtype {
186 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
187 {
189 let saved_pos = stream.position();
190 if stream.expect_string(".f16").is_ok() {
191 return Ok(Dtype::F16);
192 }
193 stream.set_position(saved_pos);
194 }
195 let saved_pos = stream.position();
196 {
198 let saved_pos = stream.position();
199 if stream.expect_string(".f32").is_ok() {
200 return Ok(Dtype::F32);
201 }
202 stream.set_position(saved_pos);
203 }
204 stream.set_position(saved_pos);
205 let span = stream
206 .peek()
207 .map(|(_, s)| s.clone())
208 .unwrap_or(Span { start: 0, end: 0 });
209 let expected = &[".f16", ".f32"];
210 let found = stream
211 .peek()
212 .map(|(t, _)| format!("{:?}", t))
213 .unwrap_or_else(|_| "<end of input>".to_string());
214 Err(crate::parser::unexpected_value(span, expected, found))
215 }
216 }
217
218 impl PtxParser for MmaSyncAlignedM8n8k4AlayoutBlayoutDtypeF16F16Ctype {
219 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
220 stream.expect_string("mma")?;
221 stream.expect_string(".sync")?;
222 let sync = ();
223 stream.expect_complete()?;
224 stream.expect_string(".aligned")?;
225 let aligned = ();
226 stream.expect_complete()?;
227 stream.expect_string(".m8n8k4")?;
228 let m8n8k4 = ();
229 stream.expect_complete()?;
230 let alayout = Alayout::parse(stream)?;
231 stream.expect_complete()?;
232 let blayout = Blayout::parse(stream)?;
233 stream.expect_complete()?;
234 let dtype = Dtype::parse(stream)?;
235 stream.expect_complete()?;
236 stream.expect_string(".f16")?;
237 let f16 = ();
238 stream.expect_complete()?;
239 stream.expect_string(".f16")?;
240 let f162 = ();
241 stream.expect_complete()?;
242 let ctype = Ctype::parse(stream)?;
243 stream.expect_complete()?;
244 let d = GeneralOperand::parse(stream)?;
245 stream.expect_complete()?;
246 stream.expect(&PtxToken::Comma)?;
247 let a = GeneralOperand::parse(stream)?;
248 stream.expect_complete()?;
249 stream.expect(&PtxToken::Comma)?;
250 let b = GeneralOperand::parse(stream)?;
251 stream.expect_complete()?;
252 stream.expect(&PtxToken::Comma)?;
253 let c = GeneralOperand::parse(stream)?;
254 stream.expect_complete()?;
255 stream.expect_complete()?;
256 stream.expect(&PtxToken::Semicolon)?;
257 Ok(MmaSyncAlignedM8n8k4AlayoutBlayoutDtypeF16F16Ctype {
258 sync,
259 aligned,
260 m8n8k4,
261 alayout,
262 blayout,
263 dtype,
264 f16,
265 f162,
266 ctype,
267 d,
268 a,
269 b,
270 c,
271 })
272 }
273 }
274
275 impl PtxParser for MmaSyncAlignedM16n8k8RowColDtypeF16F16Ctype {
276 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
277 stream.expect_string("mma")?;
278 stream.expect_string(".sync")?;
279 let sync = ();
280 stream.expect_complete()?;
281 stream.expect_string(".aligned")?;
282 let aligned = ();
283 stream.expect_complete()?;
284 stream.expect_string(".m16n8k8")?;
285 let m16n8k8 = ();
286 stream.expect_complete()?;
287 stream.expect_string(".row")?;
288 let row = ();
289 stream.expect_complete()?;
290 stream.expect_string(".col")?;
291 let col = ();
292 stream.expect_complete()?;
293 let dtype = Dtype::parse(stream)?;
294 stream.expect_complete()?;
295 stream.expect_string(".f16")?;
296 let f16 = ();
297 stream.expect_complete()?;
298 stream.expect_string(".f16")?;
299 let f162 = ();
300 stream.expect_complete()?;
301 let ctype = Ctype::parse(stream)?;
302 stream.expect_complete()?;
303 let d = GeneralOperand::parse(stream)?;
304 stream.expect_complete()?;
305 stream.expect(&PtxToken::Comma)?;
306 let a = GeneralOperand::parse(stream)?;
307 stream.expect_complete()?;
308 stream.expect(&PtxToken::Comma)?;
309 let b = GeneralOperand::parse(stream)?;
310 stream.expect_complete()?;
311 stream.expect(&PtxToken::Comma)?;
312 let c = GeneralOperand::parse(stream)?;
313 stream.expect_complete()?;
314 stream.expect_complete()?;
315 stream.expect(&PtxToken::Semicolon)?;
316 Ok(MmaSyncAlignedM16n8k8RowColDtypeF16F16Ctype {
317 sync,
318 aligned,
319 m16n8k8,
320 row,
321 col,
322 dtype,
323 f16,
324 f162,
325 ctype,
326 d,
327 a,
328 b,
329 c,
330 })
331 }
332 }
333
334 impl PtxParser for MmaSyncAlignedM16n8k16RowColDtypeF16F16Ctype {
335 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
336 stream.expect_string("mma")?;
337 stream.expect_string(".sync")?;
338 let sync = ();
339 stream.expect_complete()?;
340 stream.expect_string(".aligned")?;
341 let aligned = ();
342 stream.expect_complete()?;
343 stream.expect_string(".m16n8k16")?;
344 let m16n8k16 = ();
345 stream.expect_complete()?;
346 stream.expect_string(".row")?;
347 let row = ();
348 stream.expect_complete()?;
349 stream.expect_string(".col")?;
350 let col = ();
351 stream.expect_complete()?;
352 let dtype = Dtype::parse(stream)?;
353 stream.expect_complete()?;
354 stream.expect_string(".f16")?;
355 let f16 = ();
356 stream.expect_complete()?;
357 stream.expect_string(".f16")?;
358 let f162 = ();
359 stream.expect_complete()?;
360 let ctype = Ctype::parse(stream)?;
361 stream.expect_complete()?;
362 let d = GeneralOperand::parse(stream)?;
363 stream.expect_complete()?;
364 stream.expect(&PtxToken::Comma)?;
365 let a = GeneralOperand::parse(stream)?;
366 stream.expect_complete()?;
367 stream.expect(&PtxToken::Comma)?;
368 let b = GeneralOperand::parse(stream)?;
369 stream.expect_complete()?;
370 stream.expect(&PtxToken::Comma)?;
371 let c = GeneralOperand::parse(stream)?;
372 stream.expect_complete()?;
373 stream.expect_complete()?;
374 stream.expect(&PtxToken::Semicolon)?;
375 Ok(MmaSyncAlignedM16n8k16RowColDtypeF16F16Ctype {
376 sync,
377 aligned,
378 m16n8k16,
379 row,
380 col,
381 dtype,
382 f16,
383 f162,
384 ctype,
385 d,
386 a,
387 b,
388 c,
389 })
390 }
391 }
392}
393
394pub mod section_1 {
395 use super::*;
396 use crate::r#type::instruction::mma::section_1::*;
397
398 impl PtxParser for Atype {
403 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
404 {
406 let saved_pos = stream.position();
407 if stream.expect_string(".bf16").is_ok() {
408 return Ok(Atype::Bf16);
409 }
410 stream.set_position(saved_pos);
411 }
412 let saved_pos = stream.position();
413 {
415 let saved_pos = stream.position();
416 if stream.expect_string(".tf32").is_ok() {
417 return Ok(Atype::Tf32);
418 }
419 stream.set_position(saved_pos);
420 }
421 stream.set_position(saved_pos);
422 let span = stream
423 .peek()
424 .map(|(_, s)| s.clone())
425 .unwrap_or(Span { start: 0, end: 0 });
426 let expected = &[".bf16", ".tf32"];
427 let found = stream
428 .peek()
429 .map(|(t, _)| format!("{:?}", t))
430 .unwrap_or_else(|_| "<end of input>".to_string());
431 Err(crate::parser::unexpected_value(span, expected, found))
432 }
433 }
434
435 impl PtxParser for Btype {
436 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
437 {
439 let saved_pos = stream.position();
440 if stream.expect_string(".bf16").is_ok() {
441 return Ok(Btype::Bf16);
442 }
443 stream.set_position(saved_pos);
444 }
445 let saved_pos = stream.position();
446 {
448 let saved_pos = stream.position();
449 if stream.expect_string(".tf32").is_ok() {
450 return Ok(Btype::Tf32);
451 }
452 stream.set_position(saved_pos);
453 }
454 stream.set_position(saved_pos);
455 let span = stream
456 .peek()
457 .map(|(_, s)| s.clone())
458 .unwrap_or(Span { start: 0, end: 0 });
459 let expected = &[".bf16", ".tf32"];
460 let found = stream
461 .peek()
462 .map(|(t, _)| format!("{:?}", t))
463 .unwrap_or_else(|_| "<end of input>".to_string());
464 Err(crate::parser::unexpected_value(span, expected, found))
465 }
466 }
467
468 impl PtxParser for Ctype {
469 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
470 {
472 let saved_pos = stream.position();
473 if stream.expect_string(".f16").is_ok() {
474 return Ok(Ctype::F16);
475 }
476 stream.set_position(saved_pos);
477 }
478 let saved_pos = stream.position();
479 {
481 let saved_pos = stream.position();
482 if stream.expect_string(".f32").is_ok() {
483 return Ok(Ctype::F32);
484 }
485 stream.set_position(saved_pos);
486 }
487 stream.set_position(saved_pos);
488 let span = stream
489 .peek()
490 .map(|(_, s)| s.clone())
491 .unwrap_or(Span { start: 0, end: 0 });
492 let expected = &[".f16", ".f32"];
493 let found = stream
494 .peek()
495 .map(|(t, _)| format!("{:?}", t))
496 .unwrap_or_else(|_| "<end of input>".to_string());
497 Err(crate::parser::unexpected_value(span, expected, found))
498 }
499 }
500
501 impl PtxParser for Dtype {
502 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
503 {
505 let saved_pos = stream.position();
506 if stream.expect_string(".f16").is_ok() {
507 return Ok(Dtype::F16);
508 }
509 stream.set_position(saved_pos);
510 }
511 let saved_pos = stream.position();
512 {
514 let saved_pos = stream.position();
515 if stream.expect_string(".f32").is_ok() {
516 return Ok(Dtype::F32);
517 }
518 stream.set_position(saved_pos);
519 }
520 stream.set_position(saved_pos);
521 let span = stream
522 .peek()
523 .map(|(_, s)| s.clone())
524 .unwrap_or(Span { start: 0, end: 0 });
525 let expected = &[".f16", ".f32"];
526 let found = stream
527 .peek()
528 .map(|(t, _)| format!("{:?}", t))
529 .unwrap_or_else(|_| "<end of input>".to_string());
530 Err(crate::parser::unexpected_value(span, expected, found))
531 }
532 }
533
534 impl PtxParser for F8f6f4type {
535 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
536 {
538 let saved_pos = stream.position();
539 if stream.expect_string(".e4m3").is_ok() {
540 return Ok(F8f6f4type::E4m3);
541 }
542 stream.set_position(saved_pos);
543 }
544 let saved_pos = stream.position();
545 {
547 let saved_pos = stream.position();
548 if stream.expect_string(".e5m2").is_ok() {
549 return Ok(F8f6f4type::E5m2);
550 }
551 stream.set_position(saved_pos);
552 }
553 stream.set_position(saved_pos);
554 let saved_pos = stream.position();
555 {
557 let saved_pos = stream.position();
558 if stream.expect_string(".e3m2").is_ok() {
559 return Ok(F8f6f4type::E3m2);
560 }
561 stream.set_position(saved_pos);
562 }
563 stream.set_position(saved_pos);
564 let saved_pos = stream.position();
565 {
567 let saved_pos = stream.position();
568 if stream.expect_string(".e2m3").is_ok() {
569 return Ok(F8f6f4type::E2m3);
570 }
571 stream.set_position(saved_pos);
572 }
573 stream.set_position(saved_pos);
574 let saved_pos = stream.position();
575 {
577 let saved_pos = stream.position();
578 if stream.expect_string(".e2m1").is_ok() {
579 return Ok(F8f6f4type::E2m1);
580 }
581 stream.set_position(saved_pos);
582 }
583 stream.set_position(saved_pos);
584 let span = stream
585 .peek()
586 .map(|(_, s)| s.clone())
587 .unwrap_or(Span { start: 0, end: 0 });
588 let expected = &[".e4m3", ".e5m2", ".e3m2", ".e2m3", ".e2m1"];
589 let found = stream
590 .peek()
591 .map(|(t, _)| format!("{:?}", t))
592 .unwrap_or_else(|_| "<end of input>".to_string());
593 Err(crate::parser::unexpected_value(span, expected, found))
594 }
595 }
596
597 impl PtxParser for F8type {
598 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
599 {
601 let saved_pos = stream.position();
602 if stream.expect_string(".e4m3").is_ok() {
603 return Ok(F8type::E4m3);
604 }
605 stream.set_position(saved_pos);
606 }
607 let saved_pos = stream.position();
608 {
610 let saved_pos = stream.position();
611 if stream.expect_string(".e5m2").is_ok() {
612 return Ok(F8type::E5m2);
613 }
614 stream.set_position(saved_pos);
615 }
616 stream.set_position(saved_pos);
617 let span = stream
618 .peek()
619 .map(|(_, s)| s.clone())
620 .unwrap_or(Span { start: 0, end: 0 });
621 let expected = &[".e4m3", ".e5m2"];
622 let found = stream
623 .peek()
624 .map(|(t, _)| format!("{:?}", t))
625 .unwrap_or_else(|_| "<end of input>".to_string());
626 Err(crate::parser::unexpected_value(span, expected, found))
627 }
628 }
629
630 impl PtxParser for Kind {
631 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
632 {
634 let saved_pos = stream.position();
635 if stream.expect_string(".kind::f8f6f4").is_ok() {
636 return Ok(Kind::KindF8f6f4);
637 }
638 stream.set_position(saved_pos);
639 }
640 let span = stream
641 .peek()
642 .map(|(_, s)| s.clone())
643 .unwrap_or(Span { start: 0, end: 0 });
644 let expected = &[".kind::f8f6f4"];
645 let found = stream
646 .peek()
647 .map(|(t, _)| format!("{:?}", t))
648 .unwrap_or_else(|_| "<end of input>".to_string());
649 Err(crate::parser::unexpected_value(span, expected, found))
650 }
651 }
652
653 impl PtxParser for Shape {
654 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
655 {
657 let saved_pos = stream.position();
658 if stream.expect_string(".m16n8k16").is_ok() {
659 return Ok(Shape::M16n8k16);
660 }
661 stream.set_position(saved_pos);
662 }
663 let saved_pos = stream.position();
664 {
666 let saved_pos = stream.position();
667 if stream.expect_string(".m16n8k32").is_ok() {
668 return Ok(Shape::M16n8k32);
669 }
670 stream.set_position(saved_pos);
671 }
672 stream.set_position(saved_pos);
673 let span = stream
674 .peek()
675 .map(|(_, s)| s.clone())
676 .unwrap_or(Span { start: 0, end: 0 });
677 let expected = &[".m16n8k16", ".m16n8k32"];
678 let found = stream
679 .peek()
680 .map(|(t, _)| format!("{:?}", t))
681 .unwrap_or_else(|_| "<end of input>".to_string());
682 Err(crate::parser::unexpected_value(span, expected, found))
683 }
684 }
685
686 impl PtxParser for MmaSyncAlignedM16n8k4RowColF32Tf32Tf32F32 {
687 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
688 stream.expect_string("mma")?;
689 stream.expect_string(".sync")?;
690 let sync = ();
691 stream.expect_complete()?;
692 stream.expect_string(".aligned")?;
693 let aligned = ();
694 stream.expect_complete()?;
695 stream.expect_string(".m16n8k4")?;
696 let m16n8k4 = ();
697 stream.expect_complete()?;
698 stream.expect_string(".row")?;
699 let row = ();
700 stream.expect_complete()?;
701 stream.expect_string(".col")?;
702 let col = ();
703 stream.expect_complete()?;
704 stream.expect_string(".f32")?;
705 let f32 = ();
706 stream.expect_complete()?;
707 stream.expect_string(".tf32")?;
708 let tf32 = ();
709 stream.expect_complete()?;
710 stream.expect_string(".tf32")?;
711 let tf322 = ();
712 stream.expect_complete()?;
713 stream.expect_string(".f32")?;
714 let f322 = ();
715 stream.expect_complete()?;
716 let d = GeneralOperand::parse(stream)?;
717 stream.expect_complete()?;
718 stream.expect(&PtxToken::Comma)?;
719 let a = GeneralOperand::parse(stream)?;
720 stream.expect_complete()?;
721 stream.expect(&PtxToken::Comma)?;
722 let b = GeneralOperand::parse(stream)?;
723 stream.expect_complete()?;
724 stream.expect(&PtxToken::Comma)?;
725 let c = GeneralOperand::parse(stream)?;
726 stream.expect_complete()?;
727 stream.expect_complete()?;
728 stream.expect(&PtxToken::Semicolon)?;
729 Ok(MmaSyncAlignedM16n8k4RowColF32Tf32Tf32F32 {
730 sync,
731 aligned,
732 m16n8k4,
733 row,
734 col,
735 f32,
736 tf32,
737 tf322,
738 f322,
739 d,
740 a,
741 b,
742 c,
743 })
744 }
745 }
746
747 impl PtxParser for MmaSyncAlignedM16n8k8RowColF32AtypeBtypeF32 {
748 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
749 stream.expect_string("mma")?;
750 stream.expect_string(".sync")?;
751 let sync = ();
752 stream.expect_complete()?;
753 stream.expect_string(".aligned")?;
754 let aligned = ();
755 stream.expect_complete()?;
756 stream.expect_string(".m16n8k8")?;
757 let m16n8k8 = ();
758 stream.expect_complete()?;
759 stream.expect_string(".row")?;
760 let row = ();
761 stream.expect_complete()?;
762 stream.expect_string(".col")?;
763 let col = ();
764 stream.expect_complete()?;
765 stream.expect_string(".f32")?;
766 let f32 = ();
767 stream.expect_complete()?;
768 let atype = Atype::parse(stream)?;
769 stream.expect_complete()?;
770 let btype = Btype::parse(stream)?;
771 stream.expect_complete()?;
772 stream.expect_string(".f32")?;
773 let f322 = ();
774 stream.expect_complete()?;
775 let d = GeneralOperand::parse(stream)?;
776 stream.expect_complete()?;
777 stream.expect(&PtxToken::Comma)?;
778 let a = GeneralOperand::parse(stream)?;
779 stream.expect_complete()?;
780 stream.expect(&PtxToken::Comma)?;
781 let b = GeneralOperand::parse(stream)?;
782 stream.expect_complete()?;
783 stream.expect(&PtxToken::Comma)?;
784 let c = GeneralOperand::parse(stream)?;
785 stream.expect_complete()?;
786 stream.expect_complete()?;
787 stream.expect(&PtxToken::Semicolon)?;
788 Ok(MmaSyncAlignedM16n8k8RowColF32AtypeBtypeF32 {
789 sync,
790 aligned,
791 m16n8k8,
792 row,
793 col,
794 f32,
795 atype,
796 btype,
797 f322,
798 d,
799 a,
800 b,
801 c,
802 })
803 }
804 }
805
806 impl PtxParser for MmaSyncAlignedM16n8k16RowColF32Bf16Bf16F32 {
807 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
808 stream.expect_string("mma")?;
809 stream.expect_string(".sync")?;
810 let sync = ();
811 stream.expect_complete()?;
812 stream.expect_string(".aligned")?;
813 let aligned = ();
814 stream.expect_complete()?;
815 stream.expect_string(".m16n8k16")?;
816 let m16n8k16 = ();
817 stream.expect_complete()?;
818 stream.expect_string(".row")?;
819 let row = ();
820 stream.expect_complete()?;
821 stream.expect_string(".col")?;
822 let col = ();
823 stream.expect_complete()?;
824 stream.expect_string(".f32")?;
825 let f32 = ();
826 stream.expect_complete()?;
827 stream.expect_string(".bf16")?;
828 let bf16 = ();
829 stream.expect_complete()?;
830 stream.expect_string(".bf16")?;
831 let bf162 = ();
832 stream.expect_complete()?;
833 stream.expect_string(".f32")?;
834 let f322 = ();
835 stream.expect_complete()?;
836 let d = GeneralOperand::parse(stream)?;
837 stream.expect_complete()?;
838 stream.expect(&PtxToken::Comma)?;
839 let a = GeneralOperand::parse(stream)?;
840 stream.expect_complete()?;
841 stream.expect(&PtxToken::Comma)?;
842 let b = GeneralOperand::parse(stream)?;
843 stream.expect_complete()?;
844 stream.expect(&PtxToken::Comma)?;
845 let c = GeneralOperand::parse(stream)?;
846 stream.expect_complete()?;
847 stream.expect_complete()?;
848 stream.expect(&PtxToken::Semicolon)?;
849 Ok(MmaSyncAlignedM16n8k16RowColF32Bf16Bf16F32 {
850 sync,
851 aligned,
852 m16n8k16,
853 row,
854 col,
855 f32,
856 bf16,
857 bf162,
858 f322,
859 d,
860 a,
861 b,
862 c,
863 })
864 }
865 }
866
867 impl PtxParser for MmaSyncAlignedShapeRowColDtypeF8typeF8typeCtype {
868 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
869 stream.expect_string("mma")?;
870 stream.expect_string(".sync")?;
871 let sync = ();
872 stream.expect_complete()?;
873 stream.expect_string(".aligned")?;
874 let aligned = ();
875 stream.expect_complete()?;
876 let shape = Shape::parse(stream)?;
877 stream.expect_complete()?;
878 stream.expect_string(".row")?;
879 let row = ();
880 stream.expect_complete()?;
881 stream.expect_string(".col")?;
882 let col = ();
883 stream.expect_complete()?;
884 let dtype = Dtype::parse(stream)?;
885 stream.expect_complete()?;
886 let f8type = F8type::parse(stream)?;
887 stream.expect_complete()?;
888 let f8type1 = F8type::parse(stream)?;
889 stream.expect_complete()?;
890 let ctype = Ctype::parse(stream)?;
891 stream.expect_complete()?;
892 let d = GeneralOperand::parse(stream)?;
893 stream.expect_complete()?;
894 stream.expect(&PtxToken::Comma)?;
895 let a = GeneralOperand::parse(stream)?;
896 stream.expect_complete()?;
897 stream.expect(&PtxToken::Comma)?;
898 let b = GeneralOperand::parse(stream)?;
899 stream.expect_complete()?;
900 stream.expect(&PtxToken::Comma)?;
901 let c = GeneralOperand::parse(stream)?;
902 stream.expect_complete()?;
903 stream.expect_complete()?;
904 stream.expect(&PtxToken::Semicolon)?;
905 Ok(MmaSyncAlignedShapeRowColDtypeF8typeF8typeCtype {
906 sync,
907 aligned,
908 shape,
909 row,
910 col,
911 dtype,
912 f8type,
913 f8type1,
914 ctype,
915 d,
916 a,
917 b,
918 c,
919 })
920 }
921 }
922
923 impl PtxParser for MmaSyncAlignedM16n8k32RowColKindDtypeF8f6f4typeF8f6f4typeCtype {
924 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
925 stream.expect_string("mma")?;
926 stream.expect_string(".sync")?;
927 let sync = ();
928 stream.expect_complete()?;
929 stream.expect_string(".aligned")?;
930 let aligned = ();
931 stream.expect_complete()?;
932 stream.expect_string(".m16n8k32")?;
933 let m16n8k32 = ();
934 stream.expect_complete()?;
935 stream.expect_string(".row")?;
936 let row = ();
937 stream.expect_complete()?;
938 stream.expect_string(".col")?;
939 let col = ();
940 stream.expect_complete()?;
941 let kind = Kind::parse(stream)?;
942 stream.expect_complete()?;
943 let dtype = Dtype::parse(stream)?;
944 stream.expect_complete()?;
945 let f8f6f4type = F8f6f4type::parse(stream)?;
946 stream.expect_complete()?;
947 let f8f6f4type1 = F8f6f4type::parse(stream)?;
948 stream.expect_complete()?;
949 let ctype = Ctype::parse(stream)?;
950 stream.expect_complete()?;
951 let d = GeneralOperand::parse(stream)?;
952 stream.expect_complete()?;
953 stream.expect(&PtxToken::Comma)?;
954 let a = GeneralOperand::parse(stream)?;
955 stream.expect_complete()?;
956 stream.expect(&PtxToken::Comma)?;
957 let b = GeneralOperand::parse(stream)?;
958 stream.expect_complete()?;
959 stream.expect(&PtxToken::Comma)?;
960 let c = GeneralOperand::parse(stream)?;
961 stream.expect_complete()?;
962 stream.expect_complete()?;
963 stream.expect(&PtxToken::Semicolon)?;
964 Ok(
965 MmaSyncAlignedM16n8k32RowColKindDtypeF8f6f4typeF8f6f4typeCtype {
966 sync,
967 aligned,
968 m16n8k32,
969 row,
970 col,
971 kind,
972 dtype,
973 f8f6f4type,
974 f8f6f4type1,
975 ctype,
976 d,
977 a,
978 b,
979 c,
980 },
981 )
982 }
983 }
984}
985
986pub mod section_2 {
987 use super::*;
988 use crate::r#type::instruction::mma::section_2::*;
989
990 impl PtxParser for Kind {
995 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
996 {
998 let saved_pos = stream.position();
999 if stream.expect_string(".kind::mxf4").is_ok() {
1000 return Ok(Kind::KindMxf4);
1001 }
1002 stream.set_position(saved_pos);
1003 }
1004 let span = stream
1005 .peek()
1006 .map(|(_, s)| s.clone())
1007 .unwrap_or(Span { start: 0, end: 0 });
1008 let expected = &[".kind::mxf4"];
1009 let found = stream
1010 .peek()
1011 .map(|(t, _)| format!("{:?}", t))
1012 .unwrap_or_else(|_| "<end of input>".to_string());
1013 Err(crate::parser::unexpected_value(span, expected, found))
1014 }
1015 }
1016
1017 impl PtxParser for ScaleVecSize {
1018 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1019 {
1021 let saved_pos = stream.position();
1022 if stream.expect_string(".scale_vec::2X").is_ok() {
1023 return Ok(ScaleVecSize::ScaleVec2x);
1024 }
1025 stream.set_position(saved_pos);
1026 }
1027 let span = stream
1028 .peek()
1029 .map(|(_, s)| s.clone())
1030 .unwrap_or(Span { start: 0, end: 0 });
1031 let expected = &[".scale_vec::2X"];
1032 let found = stream
1033 .peek()
1034 .map(|(t, _)| format!("{:?}", t))
1035 .unwrap_or_else(|_| "<end of input>".to_string());
1036 Err(crate::parser::unexpected_value(span, expected, found))
1037 }
1038 }
1039
1040 impl PtxParser for Stype {
1041 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1042 {
1044 let saved_pos = stream.position();
1045 if stream.expect_string(".ue8m0").is_ok() {
1046 return Ok(Stype::Ue8m0);
1047 }
1048 stream.set_position(saved_pos);
1049 }
1050 let span = stream
1051 .peek()
1052 .map(|(_, s)| s.clone())
1053 .unwrap_or(Span { start: 0, end: 0 });
1054 let expected = &[".ue8m0"];
1055 let found = stream
1056 .peek()
1057 .map(|(t, _)| format!("{:?}", t))
1058 .unwrap_or_else(|_| "<end of input>".to_string());
1059 Err(crate::parser::unexpected_value(span, expected, found))
1060 }
1061 }
1062
1063 impl PtxParser for MmaSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype {
1064 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1065 stream.expect_string("mma")?;
1066 stream.expect_string(".sync")?;
1067 let sync = ();
1068 stream.expect_complete()?;
1069 stream.expect_string(".aligned")?;
1070 let aligned = ();
1071 stream.expect_complete()?;
1072 stream.expect_string(".m16n8k64")?;
1073 let m16n8k64 = ();
1074 stream.expect_complete()?;
1075 stream.expect_string(".row")?;
1076 let row = ();
1077 stream.expect_complete()?;
1078 stream.expect_string(".col")?;
1079 let col = ();
1080 stream.expect_complete()?;
1081 let kind = Kind::parse(stream)?;
1082 stream.expect_complete()?;
1083 stream.expect_string(".block_scale")?;
1084 let block_scale = ();
1085 stream.expect_complete()?;
1086 let saved_pos = stream.position();
1087 let scale_vec_size = match ScaleVecSize::parse(stream) {
1088 Ok(val) => Some(val),
1089 Err(_) => {
1090 stream.set_position(saved_pos);
1091 None
1092 }
1093 };
1094 stream.expect_complete()?;
1095 stream.expect_string(".f32")?;
1096 let f32 = ();
1097 stream.expect_complete()?;
1098 stream.expect_string(".e2m1")?;
1099 let e2m1 = ();
1100 stream.expect_complete()?;
1101 stream.expect_string(".e2m1")?;
1102 let e2m12 = ();
1103 stream.expect_complete()?;
1104 stream.expect_string(".f32")?;
1105 let f322 = ();
1106 stream.expect_complete()?;
1107 let stype = Stype::parse(stream)?;
1108 stream.expect_complete()?;
1109 let d = GeneralOperand::parse(stream)?;
1110 stream.expect_complete()?;
1111 stream.expect(&PtxToken::Comma)?;
1112 let a = GeneralOperand::parse(stream)?;
1113 stream.expect_complete()?;
1114 stream.expect(&PtxToken::Comma)?;
1115 let b = GeneralOperand::parse(stream)?;
1116 stream.expect_complete()?;
1117 stream.expect(&PtxToken::Comma)?;
1118 let c = GeneralOperand::parse(stream)?;
1119 stream.expect_complete()?;
1120 stream.expect(&PtxToken::Comma)?;
1121 let scale_a_data = GeneralOperand::parse(stream)?;
1122 stream.expect_complete()?;
1123 stream.expect(&PtxToken::Comma)?;
1124 let byte_id_a = VectorOperand::parse(stream)?;
1125 stream.expect_complete()?;
1126 stream.expect(&PtxToken::Comma)?;
1127 let scale_b_data = GeneralOperand::parse(stream)?;
1128 stream.expect_complete()?;
1129 stream.expect(&PtxToken::Comma)?;
1130 let byte_id_b = VectorOperand::parse(stream)?;
1131 stream.expect_complete()?;
1132 stream.expect_complete()?;
1133 stream.expect(&PtxToken::Semicolon)?;
1134 Ok(
1135 MmaSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype {
1136 sync,
1137 aligned,
1138 m16n8k64,
1139 row,
1140 col,
1141 kind,
1142 block_scale,
1143 scale_vec_size,
1144 f32,
1145 e2m1,
1146 e2m12,
1147 f322,
1148 stype,
1149 d,
1150 a,
1151 b,
1152 c,
1153 scale_a_data,
1154 byte_id_a,
1155 scale_b_data,
1156 byte_id_b,
1157 },
1158 )
1159 }
1160 }
1161}
1162
1163pub mod section_3 {
1164 use super::*;
1165 use crate::r#type::instruction::mma::section_3::*;
1166
1167 impl PtxParser for Kind {
1172 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1173 {
1175 let saved_pos = stream.position();
1176 if stream.expect_string(".kind::mxf4nvf4").is_ok() {
1177 return Ok(Kind::KindMxf4nvf4);
1178 }
1179 stream.set_position(saved_pos);
1180 }
1181 let span = stream
1182 .peek()
1183 .map(|(_, s)| s.clone())
1184 .unwrap_or(Span { start: 0, end: 0 });
1185 let expected = &[".kind::mxf4nvf4"];
1186 let found = stream
1187 .peek()
1188 .map(|(t, _)| format!("{:?}", t))
1189 .unwrap_or_else(|_| "<end of input>".to_string());
1190 Err(crate::parser::unexpected_value(span, expected, found))
1191 }
1192 }
1193
1194 impl PtxParser for ScaleVecSize {
1195 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1196 {
1198 let saved_pos = stream.position();
1199 if stream.expect_string(".scale_vec::2X").is_ok() {
1200 return Ok(ScaleVecSize::ScaleVec2x);
1201 }
1202 stream.set_position(saved_pos);
1203 }
1204 let saved_pos = stream.position();
1205 {
1207 let saved_pos = stream.position();
1208 if stream.expect_string(".scale_vec::4X").is_ok() {
1209 return Ok(ScaleVecSize::ScaleVec4x);
1210 }
1211 stream.set_position(saved_pos);
1212 }
1213 stream.set_position(saved_pos);
1214 let span = stream
1215 .peek()
1216 .map(|(_, s)| s.clone())
1217 .unwrap_or(Span { start: 0, end: 0 });
1218 let expected = &[".scale_vec::2X", ".scale_vec::4X"];
1219 let found = stream
1220 .peek()
1221 .map(|(t, _)| format!("{:?}", t))
1222 .unwrap_or_else(|_| "<end of input>".to_string());
1223 Err(crate::parser::unexpected_value(span, expected, found))
1224 }
1225 }
1226
1227 impl PtxParser for Stype {
1228 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1229 {
1231 let saved_pos = stream.position();
1232 if stream.expect_string(".ue8m0").is_ok() {
1233 return Ok(Stype::Ue8m0);
1234 }
1235 stream.set_position(saved_pos);
1236 }
1237 let saved_pos = stream.position();
1238 {
1240 let saved_pos = stream.position();
1241 if stream.expect_string(".ue4m3").is_ok() {
1242 return Ok(Stype::Ue4m3);
1243 }
1244 stream.set_position(saved_pos);
1245 }
1246 stream.set_position(saved_pos);
1247 let span = stream
1248 .peek()
1249 .map(|(_, s)| s.clone())
1250 .unwrap_or(Span { start: 0, end: 0 });
1251 let expected = &[".ue8m0", ".ue4m3"];
1252 let found = stream
1253 .peek()
1254 .map(|(t, _)| format!("{:?}", t))
1255 .unwrap_or_else(|_| "<end of input>".to_string());
1256 Err(crate::parser::unexpected_value(span, expected, found))
1257 }
1258 }
1259
1260 impl PtxParser for MmaSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype1 {
1261 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1262 stream.expect_string("mma")?;
1263 stream.expect_string(".sync")?;
1264 let sync = ();
1265 stream.expect_complete()?;
1266 stream.expect_string(".aligned")?;
1267 let aligned = ();
1268 stream.expect_complete()?;
1269 stream.expect_string(".m16n8k64")?;
1270 let m16n8k64 = ();
1271 stream.expect_complete()?;
1272 stream.expect_string(".row")?;
1273 let row = ();
1274 stream.expect_complete()?;
1275 stream.expect_string(".col")?;
1276 let col = ();
1277 stream.expect_complete()?;
1278 let kind = Kind::parse(stream)?;
1279 stream.expect_complete()?;
1280 stream.expect_string(".block_scale")?;
1281 let block_scale = ();
1282 stream.expect_complete()?;
1283 let scale_vec_size = ScaleVecSize::parse(stream)?;
1284 stream.expect_complete()?;
1285 stream.expect_string(".f32")?;
1286 let f32 = ();
1287 stream.expect_complete()?;
1288 stream.expect_string(".e2m1")?;
1289 let e2m1 = ();
1290 stream.expect_complete()?;
1291 stream.expect_string(".e2m1")?;
1292 let e2m12 = ();
1293 stream.expect_complete()?;
1294 stream.expect_string(".f32")?;
1295 let f322 = ();
1296 stream.expect_complete()?;
1297 let stype = Stype::parse(stream)?;
1298 stream.expect_complete()?;
1299 let d = GeneralOperand::parse(stream)?;
1300 stream.expect_complete()?;
1301 stream.expect(&PtxToken::Comma)?;
1302 let a = GeneralOperand::parse(stream)?;
1303 stream.expect_complete()?;
1304 stream.expect(&PtxToken::Comma)?;
1305 let b = GeneralOperand::parse(stream)?;
1306 stream.expect_complete()?;
1307 stream.expect(&PtxToken::Comma)?;
1308 let c = GeneralOperand::parse(stream)?;
1309 stream.expect_complete()?;
1310 stream.expect(&PtxToken::Comma)?;
1311 let scale_a_data = GeneralOperand::parse(stream)?;
1312 stream.expect_complete()?;
1313 stream.expect(&PtxToken::Comma)?;
1314 let byte_id_a = VectorOperand::parse(stream)?;
1315 stream.expect_complete()?;
1316 stream.expect(&PtxToken::Comma)?;
1317 let scale_b_data = GeneralOperand::parse(stream)?;
1318 stream.expect_complete()?;
1319 stream.expect(&PtxToken::Comma)?;
1320 let byte_id_b = VectorOperand::parse(stream)?;
1321 stream.expect_complete()?;
1322 stream.expect_complete()?;
1323 stream.expect(&PtxToken::Semicolon)?;
1324 Ok(
1325 MmaSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype1 {
1326 sync,
1327 aligned,
1328 m16n8k64,
1329 row,
1330 col,
1331 kind,
1332 block_scale,
1333 scale_vec_size,
1334 f32,
1335 e2m1,
1336 e2m12,
1337 f322,
1338 stype,
1339 d,
1340 a,
1341 b,
1342 c,
1343 scale_a_data,
1344 byte_id_a,
1345 scale_b_data,
1346 byte_id_b,
1347 },
1348 )
1349 }
1350 }
1351}
1352
1353pub mod section_4 {
1354 use super::*;
1355 use crate::r#type::instruction::mma::section_4::*;
1356
1357 impl PtxParser for F8f6f4type {
1362 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1363 {
1365 let saved_pos = stream.position();
1366 if stream.expect_string(".e4m3").is_ok() {
1367 return Ok(F8f6f4type::E4m3);
1368 }
1369 stream.set_position(saved_pos);
1370 }
1371 let saved_pos = stream.position();
1372 {
1374 let saved_pos = stream.position();
1375 if stream.expect_string(".e5m2").is_ok() {
1376 return Ok(F8f6f4type::E5m2);
1377 }
1378 stream.set_position(saved_pos);
1379 }
1380 stream.set_position(saved_pos);
1381 let saved_pos = stream.position();
1382 {
1384 let saved_pos = stream.position();
1385 if stream.expect_string(".e3m2").is_ok() {
1386 return Ok(F8f6f4type::E3m2);
1387 }
1388 stream.set_position(saved_pos);
1389 }
1390 stream.set_position(saved_pos);
1391 let saved_pos = stream.position();
1392 {
1394 let saved_pos = stream.position();
1395 if stream.expect_string(".e2m3").is_ok() {
1396 return Ok(F8f6f4type::E2m3);
1397 }
1398 stream.set_position(saved_pos);
1399 }
1400 stream.set_position(saved_pos);
1401 let saved_pos = stream.position();
1402 {
1404 let saved_pos = stream.position();
1405 if stream.expect_string(".e2m1").is_ok() {
1406 return Ok(F8f6f4type::E2m1);
1407 }
1408 stream.set_position(saved_pos);
1409 }
1410 stream.set_position(saved_pos);
1411 let span = stream
1412 .peek()
1413 .map(|(_, s)| s.clone())
1414 .unwrap_or(Span { start: 0, end: 0 });
1415 let expected = &[".e4m3", ".e5m2", ".e3m2", ".e2m3", ".e2m1"];
1416 let found = stream
1417 .peek()
1418 .map(|(t, _)| format!("{:?}", t))
1419 .unwrap_or_else(|_| "<end of input>".to_string());
1420 Err(crate::parser::unexpected_value(span, expected, found))
1421 }
1422 }
1423
1424 impl PtxParser for Kind {
1425 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1426 {
1428 let saved_pos = stream.position();
1429 if stream.expect_string(".kind::mxf8f6f4").is_ok() {
1430 return Ok(Kind::KindMxf8f6f4);
1431 }
1432 stream.set_position(saved_pos);
1433 }
1434 let span = stream
1435 .peek()
1436 .map(|(_, s)| s.clone())
1437 .unwrap_or(Span { start: 0, end: 0 });
1438 let expected = &[".kind::mxf8f6f4"];
1439 let found = stream
1440 .peek()
1441 .map(|(t, _)| format!("{:?}", t))
1442 .unwrap_or_else(|_| "<end of input>".to_string());
1443 Err(crate::parser::unexpected_value(span, expected, found))
1444 }
1445 }
1446
1447 impl PtxParser for ScaleVecSize {
1448 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1449 {
1451 let saved_pos = stream.position();
1452 if stream.expect_string(".scale_vec::1X").is_ok() {
1453 return Ok(ScaleVecSize::ScaleVec1x);
1454 }
1455 stream.set_position(saved_pos);
1456 }
1457 let span = stream
1458 .peek()
1459 .map(|(_, s)| s.clone())
1460 .unwrap_or(Span { start: 0, end: 0 });
1461 let expected = &[".scale_vec::1X"];
1462 let found = stream
1463 .peek()
1464 .map(|(t, _)| format!("{:?}", t))
1465 .unwrap_or_else(|_| "<end of input>".to_string());
1466 Err(crate::parser::unexpected_value(span, expected, found))
1467 }
1468 }
1469
1470 impl PtxParser for Stype {
1471 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1472 {
1474 let saved_pos = stream.position();
1475 if stream.expect_string(".ue8m0").is_ok() {
1476 return Ok(Stype::Ue8m0);
1477 }
1478 stream.set_position(saved_pos);
1479 }
1480 let span = stream
1481 .peek()
1482 .map(|(_, s)| s.clone())
1483 .unwrap_or(Span { start: 0, end: 0 });
1484 let expected = &[".ue8m0"];
1485 let found = stream
1486 .peek()
1487 .map(|(t, _)| format!("{:?}", t))
1488 .unwrap_or_else(|_| "<end of input>".to_string());
1489 Err(crate::parser::unexpected_value(span, expected, found))
1490 }
1491 }
1492
1493 impl PtxParser
1494 for MmaSyncAlignedM16n8k32RowColKindBlockScaleScaleVecSizeF32F8f6f4typeF8f6f4typeF32Stype
1495 {
1496 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1497 stream.expect_string("mma")?;
1498 stream.expect_string(".sync")?;
1499 let sync = ();
1500 stream.expect_complete()?;
1501 stream.expect_string(".aligned")?;
1502 let aligned = ();
1503 stream.expect_complete()?;
1504 stream.expect_string(".m16n8k32")?;
1505 let m16n8k32 = ();
1506 stream.expect_complete()?;
1507 stream.expect_string(".row")?;
1508 let row = ();
1509 stream.expect_complete()?;
1510 stream.expect_string(".col")?;
1511 let col = ();
1512 stream.expect_complete()?;
1513 let kind = Kind::parse(stream)?;
1514 stream.expect_complete()?;
1515 stream.expect_string(".block_scale")?;
1516 let block_scale = ();
1517 stream.expect_complete()?;
1518 let saved_pos = stream.position();
1519 let scale_vec_size = match ScaleVecSize::parse(stream) {
1520 Ok(val) => Some(val),
1521 Err(_) => {
1522 stream.set_position(saved_pos);
1523 None
1524 }
1525 };
1526 stream.expect_complete()?;
1527 stream.expect_string(".f32")?;
1528 let f32 = ();
1529 stream.expect_complete()?;
1530 let f8f6f4type = F8f6f4type::parse(stream)?;
1531 stream.expect_complete()?;
1532 let f8f6f4type1 = F8f6f4type::parse(stream)?;
1533 stream.expect_complete()?;
1534 stream.expect_string(".f32")?;
1535 let f322 = ();
1536 stream.expect_complete()?;
1537 let stype = Stype::parse(stream)?;
1538 stream.expect_complete()?;
1539 let d = GeneralOperand::parse(stream)?;
1540 stream.expect_complete()?;
1541 stream.expect(&PtxToken::Comma)?;
1542 let a = GeneralOperand::parse(stream)?;
1543 stream.expect_complete()?;
1544 stream.expect(&PtxToken::Comma)?;
1545 let b = GeneralOperand::parse(stream)?;
1546 stream.expect_complete()?;
1547 stream.expect(&PtxToken::Comma)?;
1548 let c = GeneralOperand::parse(stream)?;
1549 stream.expect_complete()?;
1550 stream.expect(&PtxToken::Comma)?;
1551 let scale_a_data = GeneralOperand::parse(stream)?;
1552 stream.expect_complete()?;
1553 stream.expect(&PtxToken::Comma)?;
1554 let byte_id_a = VectorOperand::parse(stream)?;
1555 stream.expect_complete()?;
1556 stream.expect(&PtxToken::Comma)?;
1557 let scale_b_data = GeneralOperand::parse(stream)?;
1558 stream.expect_complete()?;
1559 stream.expect(&PtxToken::Comma)?;
1560 let byte_id_b = VectorOperand::parse(stream)?;
1561 stream.expect_complete()?;
1562 stream.expect_complete()?;
1563 stream.expect(&PtxToken::Semicolon)?;
1564 Ok(MmaSyncAlignedM16n8k32RowColKindBlockScaleScaleVecSizeF32F8f6f4typeF8f6f4typeF32Stype {
1565 sync,
1566 aligned,
1567 m16n8k32,
1568 row,
1569 col,
1570 kind,
1571 block_scale,
1572 scale_vec_size,
1573 f32,
1574 f8f6f4type,
1575 f8f6f4type1,
1576 f322,
1577 stype,
1578 d,
1579 a,
1580 b,
1581 c,
1582 scale_a_data,
1583 byte_id_a,
1584 scale_b_data,
1585 byte_id_b,
1586 })
1587 }
1588 }
1589}
1590
1591pub mod section_5 {
1592 use super::*;
1593 use crate::r#type::instruction::mma::section_5::*;
1594
1595 impl PtxParser for Shape {
1600 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1601 {
1603 let saved_pos = stream.position();
1604 if stream.expect_string(".m16n8k16").is_ok() {
1605 return Ok(Shape::M16n8k16);
1606 }
1607 stream.set_position(saved_pos);
1608 }
1609 let saved_pos = stream.position();
1610 {
1612 let saved_pos = stream.position();
1613 if stream.expect_string(".m16n8k4").is_ok() {
1614 return Ok(Shape::M16n8k4);
1615 }
1616 stream.set_position(saved_pos);
1617 }
1618 stream.set_position(saved_pos);
1619 let saved_pos = stream.position();
1620 {
1622 let saved_pos = stream.position();
1623 if stream.expect_string(".m16n8k8").is_ok() {
1624 return Ok(Shape::M16n8k8);
1625 }
1626 stream.set_position(saved_pos);
1627 }
1628 stream.set_position(saved_pos);
1629 let saved_pos = stream.position();
1630 {
1632 let saved_pos = stream.position();
1633 if stream.expect_string(".m8n84").is_ok() {
1634 return Ok(Shape::M8n84);
1635 }
1636 stream.set_position(saved_pos);
1637 }
1638 stream.set_position(saved_pos);
1639 let span = stream
1640 .peek()
1641 .map(|(_, s)| s.clone())
1642 .unwrap_or(Span { start: 0, end: 0 });
1643 let expected = &[".m16n8k16", ".m16n8k4", ".m16n8k8", ".m8n84"];
1644 let found = stream
1645 .peek()
1646 .map(|(t, _)| format!("{:?}", t))
1647 .unwrap_or_else(|_| "<end of input>".to_string());
1648 Err(crate::parser::unexpected_value(span, expected, found))
1649 }
1650 }
1651
1652 impl PtxParser for MmaSyncAlignedShapeRowColF64F64F64F64 {
1653 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1654 stream.expect_string("mma")?;
1655 stream.expect_string(".sync")?;
1656 let sync = ();
1657 stream.expect_complete()?;
1658 stream.expect_string(".aligned")?;
1659 let aligned = ();
1660 stream.expect_complete()?;
1661 let shape = Shape::parse(stream)?;
1662 stream.expect_complete()?;
1663 stream.expect_string(".row")?;
1664 let row = ();
1665 stream.expect_complete()?;
1666 stream.expect_string(".col")?;
1667 let col = ();
1668 stream.expect_complete()?;
1669 stream.expect_string(".f64")?;
1670 let f64 = ();
1671 stream.expect_complete()?;
1672 stream.expect_string(".f64")?;
1673 let f642 = ();
1674 stream.expect_complete()?;
1675 stream.expect_string(".f64")?;
1676 let f644 = ();
1677 stream.expect_complete()?;
1678 stream.expect_string(".f64")?;
1679 let f646 = ();
1680 stream.expect_complete()?;
1681 let d = GeneralOperand::parse(stream)?;
1682 stream.expect_complete()?;
1683 stream.expect(&PtxToken::Comma)?;
1684 let a = GeneralOperand::parse(stream)?;
1685 stream.expect_complete()?;
1686 stream.expect(&PtxToken::Comma)?;
1687 let b = GeneralOperand::parse(stream)?;
1688 stream.expect_complete()?;
1689 stream.expect(&PtxToken::Comma)?;
1690 let c = GeneralOperand::parse(stream)?;
1691 stream.expect_complete()?;
1692 stream.expect_complete()?;
1693 stream.expect(&PtxToken::Semicolon)?;
1694 Ok(MmaSyncAlignedShapeRowColF64F64F64F64 {
1695 sync,
1696 aligned,
1697 shape,
1698 row,
1699 col,
1700 f64,
1701 f642,
1702 f644,
1703 f646,
1704 d,
1705 a,
1706 b,
1707 c,
1708 })
1709 }
1710 }
1711}
1712
1713pub mod section_6 {
1714 use super::*;
1715 use crate::r#type::instruction::mma::section_6::*;
1716
1717 impl PtxParser for Atype {
1722 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1723 {
1725 let saved_pos = stream.position();
1726 if stream.expect_string(".u8").is_ok() {
1727 return Ok(Atype::U8);
1728 }
1729 stream.set_position(saved_pos);
1730 }
1731 let saved_pos = stream.position();
1732 {
1734 let saved_pos = stream.position();
1735 if stream.expect_string(".s8").is_ok() {
1736 return Ok(Atype::S8);
1737 }
1738 stream.set_position(saved_pos);
1739 }
1740 stream.set_position(saved_pos);
1741 let span = stream
1742 .peek()
1743 .map(|(_, s)| s.clone())
1744 .unwrap_or(Span { start: 0, end: 0 });
1745 let expected = &[".u8", ".s8"];
1746 let found = stream
1747 .peek()
1748 .map(|(t, _)| format!("{:?}", t))
1749 .unwrap_or_else(|_| "<end of input>".to_string());
1750 Err(crate::parser::unexpected_value(span, expected, found))
1751 }
1752 }
1753
1754 impl PtxParser for Btype {
1755 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1756 {
1758 let saved_pos = stream.position();
1759 if stream.expect_string(".u8").is_ok() {
1760 return Ok(Btype::U8);
1761 }
1762 stream.set_position(saved_pos);
1763 }
1764 let saved_pos = stream.position();
1765 {
1767 let saved_pos = stream.position();
1768 if stream.expect_string(".s8").is_ok() {
1769 return Ok(Btype::S8);
1770 }
1771 stream.set_position(saved_pos);
1772 }
1773 stream.set_position(saved_pos);
1774 let span = stream
1775 .peek()
1776 .map(|(_, s)| s.clone())
1777 .unwrap_or(Span { start: 0, end: 0 });
1778 let expected = &[".u8", ".s8"];
1779 let found = stream
1780 .peek()
1781 .map(|(t, _)| format!("{:?}", t))
1782 .unwrap_or_else(|_| "<end of input>".to_string());
1783 Err(crate::parser::unexpected_value(span, expected, found))
1784 }
1785 }
1786
1787 impl PtxParser for Shape {
1788 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1789 {
1791 let saved_pos = stream.position();
1792 if stream.expect_string(".m16n8k16").is_ok() {
1793 return Ok(Shape::M16n8k16);
1794 }
1795 stream.set_position(saved_pos);
1796 }
1797 let saved_pos = stream.position();
1798 {
1800 let saved_pos = stream.position();
1801 if stream.expect_string(".m16n8k32").is_ok() {
1802 return Ok(Shape::M16n8k32);
1803 }
1804 stream.set_position(saved_pos);
1805 }
1806 stream.set_position(saved_pos);
1807 let saved_pos = stream.position();
1808 {
1810 let saved_pos = stream.position();
1811 if stream.expect_string(".m8n8k16").is_ok() {
1812 return Ok(Shape::M8n8k16);
1813 }
1814 stream.set_position(saved_pos);
1815 }
1816 stream.set_position(saved_pos);
1817 let span = stream
1818 .peek()
1819 .map(|(_, s)| s.clone())
1820 .unwrap_or(Span { start: 0, end: 0 });
1821 let expected = &[".m16n8k16", ".m16n8k32", ".m8n8k16"];
1822 let found = stream
1823 .peek()
1824 .map(|(t, _)| format!("{:?}", t))
1825 .unwrap_or_else(|_| "<end of input>".to_string());
1826 Err(crate::parser::unexpected_value(span, expected, found))
1827 }
1828 }
1829
1830 impl PtxParser for MmaSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS32 {
1831 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1832 stream.expect_string("mma")?;
1833 stream.expect_string(".sync")?;
1834 let sync = ();
1835 stream.expect_complete()?;
1836 stream.expect_string(".aligned")?;
1837 let aligned = ();
1838 stream.expect_complete()?;
1839 let shape = Shape::parse(stream)?;
1840 stream.expect_complete()?;
1841 stream.expect_string(".row")?;
1842 let row = ();
1843 stream.expect_complete()?;
1844 stream.expect_string(".col")?;
1845 let col = ();
1846 stream.expect_complete()?;
1847 let saved_pos = stream.position();
1848 let satfinite = stream.expect_string(".satfinite").is_ok();
1849 if !satfinite {
1850 stream.set_position(saved_pos);
1851 }
1852 stream.expect_complete()?;
1853 stream.expect_string(".s32")?;
1854 let s32 = ();
1855 stream.expect_complete()?;
1856 let atype = Atype::parse(stream)?;
1857 stream.expect_complete()?;
1858 let btype = Btype::parse(stream)?;
1859 stream.expect_complete()?;
1860 stream.expect_string(".s32")?;
1861 let s322 = ();
1862 stream.expect_complete()?;
1863 let d = GeneralOperand::parse(stream)?;
1864 stream.expect_complete()?;
1865 stream.expect(&PtxToken::Comma)?;
1866 let a = GeneralOperand::parse(stream)?;
1867 stream.expect_complete()?;
1868 stream.expect(&PtxToken::Comma)?;
1869 let b = GeneralOperand::parse(stream)?;
1870 stream.expect_complete()?;
1871 stream.expect(&PtxToken::Comma)?;
1872 let c = GeneralOperand::parse(stream)?;
1873 stream.expect_complete()?;
1874 stream.expect_complete()?;
1875 stream.expect(&PtxToken::Semicolon)?;
1876 Ok(MmaSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS32 {
1877 sync,
1878 aligned,
1879 shape,
1880 row,
1881 col,
1882 satfinite,
1883 s32,
1884 atype,
1885 btype,
1886 s322,
1887 d,
1888 a,
1889 b,
1890 c,
1891 })
1892 }
1893 }
1894}
1895
1896pub mod section_7 {
1897 use super::*;
1898 use crate::r#type::instruction::mma::section_7::*;
1899
1900 impl PtxParser for Atype {
1905 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1906 {
1908 let saved_pos = stream.position();
1909 if stream.expect_string(".u4").is_ok() {
1910 return Ok(Atype::U4);
1911 }
1912 stream.set_position(saved_pos);
1913 }
1914 let saved_pos = stream.position();
1915 {
1917 let saved_pos = stream.position();
1918 if stream.expect_string(".s4").is_ok() {
1919 return Ok(Atype::S4);
1920 }
1921 stream.set_position(saved_pos);
1922 }
1923 stream.set_position(saved_pos);
1924 let span = stream
1925 .peek()
1926 .map(|(_, s)| s.clone())
1927 .unwrap_or(Span { start: 0, end: 0 });
1928 let expected = &[".u4", ".s4"];
1929 let found = stream
1930 .peek()
1931 .map(|(t, _)| format!("{:?}", t))
1932 .unwrap_or_else(|_| "<end of input>".to_string());
1933 Err(crate::parser::unexpected_value(span, expected, found))
1934 }
1935 }
1936
1937 impl PtxParser for Btype {
1938 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1939 {
1941 let saved_pos = stream.position();
1942 if stream.expect_string(".u4").is_ok() {
1943 return Ok(Btype::U4);
1944 }
1945 stream.set_position(saved_pos);
1946 }
1947 let saved_pos = stream.position();
1948 {
1950 let saved_pos = stream.position();
1951 if stream.expect_string(".s4").is_ok() {
1952 return Ok(Btype::S4);
1953 }
1954 stream.set_position(saved_pos);
1955 }
1956 stream.set_position(saved_pos);
1957 let span = stream
1958 .peek()
1959 .map(|(_, s)| s.clone())
1960 .unwrap_or(Span { start: 0, end: 0 });
1961 let expected = &[".u4", ".s4"];
1962 let found = stream
1963 .peek()
1964 .map(|(t, _)| format!("{:?}", t))
1965 .unwrap_or_else(|_| "<end of input>".to_string());
1966 Err(crate::parser::unexpected_value(span, expected, found))
1967 }
1968 }
1969
1970 impl PtxParser for Shape {
1971 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1972 {
1974 let saved_pos = stream.position();
1975 if stream.expect_string(".m16n8k32").is_ok() {
1976 return Ok(Shape::M16n8k32);
1977 }
1978 stream.set_position(saved_pos);
1979 }
1980 let saved_pos = stream.position();
1981 {
1983 let saved_pos = stream.position();
1984 if stream.expect_string(".m16n8k64").is_ok() {
1985 return Ok(Shape::M16n8k64);
1986 }
1987 stream.set_position(saved_pos);
1988 }
1989 stream.set_position(saved_pos);
1990 let saved_pos = stream.position();
1991 {
1993 let saved_pos = stream.position();
1994 if stream.expect_string(".m8n8k32").is_ok() {
1995 return Ok(Shape::M8n8k32);
1996 }
1997 stream.set_position(saved_pos);
1998 }
1999 stream.set_position(saved_pos);
2000 let span = stream
2001 .peek()
2002 .map(|(_, s)| s.clone())
2003 .unwrap_or(Span { start: 0, end: 0 });
2004 let expected = &[".m16n8k32", ".m16n8k64", ".m8n8k32"];
2005 let found = stream
2006 .peek()
2007 .map(|(t, _)| format!("{:?}", t))
2008 .unwrap_or_else(|_| "<end of input>".to_string());
2009 Err(crate::parser::unexpected_value(span, expected, found))
2010 }
2011 }
2012
2013 impl PtxParser for MmaSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS321 {
2014 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
2015 stream.expect_string("mma")?;
2016 stream.expect_string(".sync")?;
2017 let sync = ();
2018 stream.expect_complete()?;
2019 stream.expect_string(".aligned")?;
2020 let aligned = ();
2021 stream.expect_complete()?;
2022 let shape = Shape::parse(stream)?;
2023 stream.expect_complete()?;
2024 stream.expect_string(".row")?;
2025 let row = ();
2026 stream.expect_complete()?;
2027 stream.expect_string(".col")?;
2028 let col = ();
2029 stream.expect_complete()?;
2030 let saved_pos = stream.position();
2031 let satfinite = stream.expect_string(".satfinite").is_ok();
2032 if !satfinite {
2033 stream.set_position(saved_pos);
2034 }
2035 stream.expect_complete()?;
2036 stream.expect_string(".s32")?;
2037 let s32 = ();
2038 stream.expect_complete()?;
2039 let atype = Atype::parse(stream)?;
2040 stream.expect_complete()?;
2041 let btype = Btype::parse(stream)?;
2042 stream.expect_complete()?;
2043 stream.expect_string(".s32")?;
2044 let s322 = ();
2045 stream.expect_complete()?;
2046 let d = GeneralOperand::parse(stream)?;
2047 stream.expect_complete()?;
2048 stream.expect(&PtxToken::Comma)?;
2049 let a = GeneralOperand::parse(stream)?;
2050 stream.expect_complete()?;
2051 stream.expect(&PtxToken::Comma)?;
2052 let b = GeneralOperand::parse(stream)?;
2053 stream.expect_complete()?;
2054 stream.expect(&PtxToken::Comma)?;
2055 let c = GeneralOperand::parse(stream)?;
2056 stream.expect_complete()?;
2057 stream.expect_complete()?;
2058 stream.expect(&PtxToken::Semicolon)?;
2059 Ok(MmaSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS321 {
2060 sync,
2061 aligned,
2062 shape,
2063 row,
2064 col,
2065 satfinite,
2066 s32,
2067 atype,
2068 btype,
2069 s322,
2070 d,
2071 a,
2072 b,
2073 c,
2074 })
2075 }
2076 }
2077}
2078
2079pub mod section_8 {
2080 use super::*;
2081 use crate::r#type::instruction::mma::section_8::*;
2082
2083 impl PtxParser for Bitop {
2088 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
2089 {
2091 let saved_pos = stream.position();
2092 if stream.expect_string(".xor").is_ok() {
2093 return Ok(Bitop::Xor);
2094 }
2095 stream.set_position(saved_pos);
2096 }
2097 let saved_pos = stream.position();
2098 {
2100 let saved_pos = stream.position();
2101 if stream.expect_string(".and").is_ok() {
2102 return Ok(Bitop::And);
2103 }
2104 stream.set_position(saved_pos);
2105 }
2106 stream.set_position(saved_pos);
2107 let span = stream
2108 .peek()
2109 .map(|(_, s)| s.clone())
2110 .unwrap_or(Span { start: 0, end: 0 });
2111 let expected = &[".xor", ".and"];
2112 let found = stream
2113 .peek()
2114 .map(|(t, _)| format!("{:?}", t))
2115 .unwrap_or_else(|_| "<end of input>".to_string());
2116 Err(crate::parser::unexpected_value(span, expected, found))
2117 }
2118 }
2119
2120 impl PtxParser for Shape {
2121 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
2122 {
2124 let saved_pos = stream.position();
2125 if stream.expect_string(".m16n8k128").is_ok() {
2126 return Ok(Shape::M16n8k128);
2127 }
2128 stream.set_position(saved_pos);
2129 }
2130 let saved_pos = stream.position();
2131 {
2133 let saved_pos = stream.position();
2134 if stream.expect_string(".m16n8k256").is_ok() {
2135 return Ok(Shape::M16n8k256);
2136 }
2137 stream.set_position(saved_pos);
2138 }
2139 stream.set_position(saved_pos);
2140 let saved_pos = stream.position();
2141 {
2143 let saved_pos = stream.position();
2144 if stream.expect_string(".m8n8k128").is_ok() {
2145 return Ok(Shape::M8n8k128);
2146 }
2147 stream.set_position(saved_pos);
2148 }
2149 stream.set_position(saved_pos);
2150 let span = stream
2151 .peek()
2152 .map(|(_, s)| s.clone())
2153 .unwrap_or(Span { start: 0, end: 0 });
2154 let expected = &[".m16n8k128", ".m16n8k256", ".m8n8k128"];
2155 let found = stream
2156 .peek()
2157 .map(|(t, _)| format!("{:?}", t))
2158 .unwrap_or_else(|_| "<end of input>".to_string());
2159 Err(crate::parser::unexpected_value(span, expected, found))
2160 }
2161 }
2162
2163 impl PtxParser for MmaSyncAlignedShapeRowColS32B1B1S32BitopPopc {
2164 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
2165 stream.expect_string("mma")?;
2166 stream.expect_string(".sync")?;
2167 let sync = ();
2168 stream.expect_complete()?;
2169 stream.expect_string(".aligned")?;
2170 let aligned = ();
2171 stream.expect_complete()?;
2172 let shape = Shape::parse(stream)?;
2173 stream.expect_complete()?;
2174 stream.expect_string(".row")?;
2175 let row = ();
2176 stream.expect_complete()?;
2177 stream.expect_string(".col")?;
2178 let col = ();
2179 stream.expect_complete()?;
2180 stream.expect_string(".s32")?;
2181 let s32 = ();
2182 stream.expect_complete()?;
2183 stream.expect_string(".b1")?;
2184 let b1 = ();
2185 stream.expect_complete()?;
2186 stream.expect_string(".b1")?;
2187 let b12 = ();
2188 stream.expect_complete()?;
2189 stream.expect_string(".s32")?;
2190 let s322 = ();
2191 stream.expect_complete()?;
2192 let bitop = Bitop::parse(stream)?;
2193 stream.expect_complete()?;
2194 stream.expect_string(".popc")?;
2195 let popc = ();
2196 stream.expect_complete()?;
2197 let d = GeneralOperand::parse(stream)?;
2198 stream.expect_complete()?;
2199 stream.expect(&PtxToken::Comma)?;
2200 let a = GeneralOperand::parse(stream)?;
2201 stream.expect_complete()?;
2202 stream.expect(&PtxToken::Comma)?;
2203 let b = GeneralOperand::parse(stream)?;
2204 stream.expect_complete()?;
2205 stream.expect(&PtxToken::Comma)?;
2206 let c = GeneralOperand::parse(stream)?;
2207 stream.expect_complete()?;
2208 stream.expect_complete()?;
2209 stream.expect(&PtxToken::Semicolon)?;
2210 Ok(MmaSyncAlignedShapeRowColS32B1B1S32BitopPopc {
2211 sync,
2212 aligned,
2213 shape,
2214 row,
2215 col,
2216 s32,
2217 b1,
2218 b12,
2219 s322,
2220 bitop,
2221 popc,
2222 d,
2223 a,
2224 b,
2225 c,
2226 })
2227 }
2228 }
2229}