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