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