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