1#![allow(unused)]
53
54use crate::lexer::PtxToken;
55use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
56use crate::r#type::common::*;
57
58pub mod section_0 {
59 use super::*;
60 use crate::r#type::instruction::wmma_mma::section_0::*;
61
62 impl PtxParser for WmmaMmaSyncAlignedAlayoutBlayoutShapeDtypeCtype {
63 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
64 stream.expect_string("wmma")?;
65 stream.expect_string(".mma")?;
66 let mma = ();
67 stream.expect_complete()?;
68 stream.expect_string(".sync")?;
69 let sync = ();
70 stream.expect_complete()?;
71 stream.expect_string(".aligned")?;
72 let aligned = ();
73 stream.expect_complete()?;
74 stream.expect_string(".alayout")?;
75 let alayout = ();
76 stream.expect_complete()?;
77 stream.expect_string(".blayout")?;
78 let blayout = ();
79 stream.expect_complete()?;
80 stream.expect_string(".shape")?;
81 let shape = ();
82 stream.expect_complete()?;
83 stream.expect_string(".dtype")?;
84 let dtype = ();
85 stream.expect_complete()?;
86 stream.expect_string(".ctype")?;
87 let ctype = ();
88 stream.expect_complete()?;
89 let d = GeneralOperand::parse(stream)?;
90 stream.expect_complete()?;
91 stream.expect(&PtxToken::Comma)?;
92 let a = GeneralOperand::parse(stream)?;
93 stream.expect_complete()?;
94 stream.expect(&PtxToken::Comma)?;
95 let b = GeneralOperand::parse(stream)?;
96 stream.expect_complete()?;
97 stream.expect(&PtxToken::Comma)?;
98 let c = GeneralOperand::parse(stream)?;
99 stream.expect_complete()?;
100 stream.expect_complete()?;
101 stream.expect(&PtxToken::Semicolon)?;
102 Ok(WmmaMmaSyncAlignedAlayoutBlayoutShapeDtypeCtype {
103 mma,
104 sync,
105 aligned,
106 alayout,
107 blayout,
108 shape,
109 dtype,
110 ctype,
111 d,
112 a,
113 b,
114 c,
115 })
116 }
117 }
118
119
120}
121
122pub mod section_1 {
123 use super::*;
124 use crate::r#type::instruction::wmma_mma::section_1::*;
125
126 impl PtxParser for Alayout {
131 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
132 {
134 let saved_pos = stream.position();
135 if stream.expect_string(".row").is_ok() {
136 return Ok(Alayout::Row);
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(".col").is_ok() {
145 return Ok(Alayout::Col);
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 = &[".row", ".col"];
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 Atype {
158 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
159 {
161 let saved_pos = stream.position();
162 if stream.expect_string(".s8").is_ok() {
163 return Ok(Atype::S8);
164 }
165 stream.set_position(saved_pos);
166 }
167 let saved_pos = stream.position();
168 {
170 let saved_pos = stream.position();
171 if stream.expect_string(".u8").is_ok() {
172 return Ok(Atype::U8);
173 }
174 stream.set_position(saved_pos);
175 }
176 stream.set_position(saved_pos);
177 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
178 let expected = &[".s8", ".u8"];
179 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
180 Err(crate::parser::unexpected_value(span, expected, found))
181 }
182 }
183
184 impl PtxParser for Blayout {
185 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
186 {
188 let saved_pos = stream.position();
189 if stream.expect_string(".row").is_ok() {
190 return Ok(Blayout::Row);
191 }
192 stream.set_position(saved_pos);
193 }
194 let saved_pos = stream.position();
195 {
197 let saved_pos = stream.position();
198 if stream.expect_string(".col").is_ok() {
199 return Ok(Blayout::Col);
200 }
201 stream.set_position(saved_pos);
202 }
203 stream.set_position(saved_pos);
204 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
205 let expected = &[".row", ".col"];
206 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
207 Err(crate::parser::unexpected_value(span, expected, found))
208 }
209 }
210
211 impl PtxParser for Btype {
212 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
213 {
215 let saved_pos = stream.position();
216 if stream.expect_string(".s8").is_ok() {
217 return Ok(Btype::S8);
218 }
219 stream.set_position(saved_pos);
220 }
221 let saved_pos = stream.position();
222 {
224 let saved_pos = stream.position();
225 if stream.expect_string(".u8").is_ok() {
226 return Ok(Btype::U8);
227 }
228 stream.set_position(saved_pos);
229 }
230 stream.set_position(saved_pos);
231 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
232 let expected = &[".s8", ".u8"];
233 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
234 Err(crate::parser::unexpected_value(span, expected, found))
235 }
236 }
237
238 impl PtxParser for Shape {
239 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
240 {
242 let saved_pos = stream.position();
243 if stream.expect_string(".m16n16k16").is_ok() {
244 return Ok(Shape::M16n16k16);
245 }
246 stream.set_position(saved_pos);
247 }
248 let saved_pos = stream.position();
249 {
251 let saved_pos = stream.position();
252 if stream.expect_string(".m8n32k16").is_ok() {
253 return Ok(Shape::M8n32k16);
254 }
255 stream.set_position(saved_pos);
256 }
257 stream.set_position(saved_pos);
258 let saved_pos = stream.position();
259 {
261 let saved_pos = stream.position();
262 if stream.expect_string(".m32n8k16").is_ok() {
263 return Ok(Shape::M32n8k16);
264 }
265 stream.set_position(saved_pos);
266 }
267 stream.set_position(saved_pos);
268 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
269 let expected = &[".m16n16k16", ".m8n32k16", ".m32n8k16"];
270 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
271 Err(crate::parser::unexpected_value(span, expected, found))
272 }
273 }
274
275 impl PtxParser for WmmaMmaSyncAlignedAlayoutBlayoutShapeS32AtypeBtypeS32Satfinite {
276 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
277 stream.expect_string("wmma")?;
278 stream.expect_string(".mma")?;
279 let mma = ();
280 stream.expect_complete()?;
281 stream.expect_string(".sync")?;
282 let sync = ();
283 stream.expect_complete()?;
284 stream.expect_string(".aligned")?;
285 let aligned = ();
286 stream.expect_complete()?;
287 let alayout = Alayout::parse(stream)?;
288 stream.expect_complete()?;
289 let blayout = Blayout::parse(stream)?;
290 stream.expect_complete()?;
291 let shape = Shape::parse(stream)?;
292 stream.expect_complete()?;
293 stream.expect_string(".s32")?;
294 let s32 = ();
295 stream.expect_complete()?;
296 let atype = Atype::parse(stream)?;
297 stream.expect_complete()?;
298 let btype = Btype::parse(stream)?;
299 stream.expect_complete()?;
300 stream.expect_string(".s32")?;
301 let s322 = ();
302 stream.expect_complete()?;
303 let saved_pos = stream.position();
304 let satfinite = stream.expect_string(".satfinite").is_ok();
305 if !satfinite {
306 stream.set_position(saved_pos);
307 }
308 stream.expect_complete()?;
309 let d = GeneralOperand::parse(stream)?;
310 stream.expect_complete()?;
311 stream.expect(&PtxToken::Comma)?;
312 let a = GeneralOperand::parse(stream)?;
313 stream.expect_complete()?;
314 stream.expect(&PtxToken::Comma)?;
315 let b = GeneralOperand::parse(stream)?;
316 stream.expect_complete()?;
317 stream.expect(&PtxToken::Comma)?;
318 let c = GeneralOperand::parse(stream)?;
319 stream.expect_complete()?;
320 stream.expect_complete()?;
321 stream.expect(&PtxToken::Semicolon)?;
322 Ok(WmmaMmaSyncAlignedAlayoutBlayoutShapeS32AtypeBtypeS32Satfinite {
323 mma,
324 sync,
325 aligned,
326 alayout,
327 blayout,
328 shape,
329 s32,
330 atype,
331 btype,
332 s322,
333 satfinite,
334 d,
335 a,
336 b,
337 c,
338 })
339 }
340 }
341
342
343}
344
345pub mod section_2 {
346 use super::*;
347 use crate::r#type::instruction::wmma_mma::section_2::*;
348
349 impl PtxParser for Alayout {
354 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
355 {
357 let saved_pos = stream.position();
358 if stream.expect_string(".row").is_ok() {
359 return Ok(Alayout::Row);
360 }
361 stream.set_position(saved_pos);
362 }
363 let saved_pos = stream.position();
364 {
366 let saved_pos = stream.position();
367 if stream.expect_string(".col").is_ok() {
368 return Ok(Alayout::Col);
369 }
370 stream.set_position(saved_pos);
371 }
372 stream.set_position(saved_pos);
373 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
374 let expected = &[".row", ".col"];
375 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
376 Err(crate::parser::unexpected_value(span, expected, found))
377 }
378 }
379
380 impl PtxParser for Atype {
381 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
382 {
384 let saved_pos = stream.position();
385 if stream.expect_string(".bf16").is_ok() {
386 return Ok(Atype::Bf16);
387 }
388 stream.set_position(saved_pos);
389 }
390 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
391 let expected = &[".bf16"];
392 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
393 Err(crate::parser::unexpected_value(span, expected, found))
394 }
395 }
396
397 impl PtxParser for Blayout {
398 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
399 {
401 let saved_pos = stream.position();
402 if stream.expect_string(".row").is_ok() {
403 return Ok(Blayout::Row);
404 }
405 stream.set_position(saved_pos);
406 }
407 let saved_pos = stream.position();
408 {
410 let saved_pos = stream.position();
411 if stream.expect_string(".col").is_ok() {
412 return Ok(Blayout::Col);
413 }
414 stream.set_position(saved_pos);
415 }
416 stream.set_position(saved_pos);
417 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
418 let expected = &[".row", ".col"];
419 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
420 Err(crate::parser::unexpected_value(span, expected, found))
421 }
422 }
423
424 impl PtxParser for Btype {
425 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
426 {
428 let saved_pos = stream.position();
429 if stream.expect_string(".bf16").is_ok() {
430 return Ok(Btype::Bf16);
431 }
432 stream.set_position(saved_pos);
433 }
434 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
435 let expected = &[".bf16"];
436 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
437 Err(crate::parser::unexpected_value(span, expected, found))
438 }
439 }
440
441 impl PtxParser for Shape {
442 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
443 {
445 let saved_pos = stream.position();
446 if stream.expect_string(".m16n16k16").is_ok() {
447 return Ok(Shape::M16n16k16);
448 }
449 stream.set_position(saved_pos);
450 }
451 let saved_pos = stream.position();
452 {
454 let saved_pos = stream.position();
455 if stream.expect_string(".m8n32k16").is_ok() {
456 return Ok(Shape::M8n32k16);
457 }
458 stream.set_position(saved_pos);
459 }
460 stream.set_position(saved_pos);
461 let saved_pos = stream.position();
462 {
464 let saved_pos = stream.position();
465 if stream.expect_string(".m32n8k16").is_ok() {
466 return Ok(Shape::M32n8k16);
467 }
468 stream.set_position(saved_pos);
469 }
470 stream.set_position(saved_pos);
471 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
472 let expected = &[".m16n16k16", ".m8n32k16", ".m32n8k16"];
473 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
474 Err(crate::parser::unexpected_value(span, expected, found))
475 }
476 }
477
478 impl PtxParser for WmmaMmaSyncAlignedAlayoutBlayoutShapeF32AtypeBtypeF32 {
479 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
480 stream.expect_string("wmma")?;
481 stream.expect_string(".mma")?;
482 let mma = ();
483 stream.expect_complete()?;
484 stream.expect_string(".sync")?;
485 let sync = ();
486 stream.expect_complete()?;
487 stream.expect_string(".aligned")?;
488 let aligned = ();
489 stream.expect_complete()?;
490 let alayout = Alayout::parse(stream)?;
491 stream.expect_complete()?;
492 let blayout = Blayout::parse(stream)?;
493 stream.expect_complete()?;
494 let shape = Shape::parse(stream)?;
495 stream.expect_complete()?;
496 stream.expect_string(".f32")?;
497 let f32 = ();
498 stream.expect_complete()?;
499 let atype = Atype::parse(stream)?;
500 stream.expect_complete()?;
501 let btype = Btype::parse(stream)?;
502 stream.expect_complete()?;
503 stream.expect_string(".f32")?;
504 let f322 = ();
505 stream.expect_complete()?;
506 let d = GeneralOperand::parse(stream)?;
507 stream.expect_complete()?;
508 stream.expect(&PtxToken::Comma)?;
509 let a = GeneralOperand::parse(stream)?;
510 stream.expect_complete()?;
511 stream.expect(&PtxToken::Comma)?;
512 let b = GeneralOperand::parse(stream)?;
513 stream.expect_complete()?;
514 stream.expect(&PtxToken::Comma)?;
515 let c = GeneralOperand::parse(stream)?;
516 stream.expect_complete()?;
517 stream.expect_complete()?;
518 stream.expect(&PtxToken::Semicolon)?;
519 Ok(WmmaMmaSyncAlignedAlayoutBlayoutShapeF32AtypeBtypeF32 {
520 mma,
521 sync,
522 aligned,
523 alayout,
524 blayout,
525 shape,
526 f32,
527 atype,
528 btype,
529 f322,
530 d,
531 a,
532 b,
533 c,
534 })
535 }
536 }
537
538
539}
540
541pub mod section_3 {
542 use super::*;
543 use crate::r#type::instruction::wmma_mma::section_3::*;
544
545 impl PtxParser for Alayout {
550 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
551 {
553 let saved_pos = stream.position();
554 if stream.expect_string(".row").is_ok() {
555 return Ok(Alayout::Row);
556 }
557 stream.set_position(saved_pos);
558 }
559 let saved_pos = stream.position();
560 {
562 let saved_pos = stream.position();
563 if stream.expect_string(".col").is_ok() {
564 return Ok(Alayout::Col);
565 }
566 stream.set_position(saved_pos);
567 }
568 stream.set_position(saved_pos);
569 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
570 let expected = &[".row", ".col"];
571 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
572 Err(crate::parser::unexpected_value(span, expected, found))
573 }
574 }
575
576 impl PtxParser for Atype {
577 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
578 {
580 let saved_pos = stream.position();
581 if stream.expect_string(".tf32").is_ok() {
582 return Ok(Atype::Tf32);
583 }
584 stream.set_position(saved_pos);
585 }
586 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
587 let expected = &[".tf32"];
588 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
589 Err(crate::parser::unexpected_value(span, expected, found))
590 }
591 }
592
593 impl PtxParser for Blayout {
594 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
595 {
597 let saved_pos = stream.position();
598 if stream.expect_string(".row").is_ok() {
599 return Ok(Blayout::Row);
600 }
601 stream.set_position(saved_pos);
602 }
603 let saved_pos = stream.position();
604 {
606 let saved_pos = stream.position();
607 if stream.expect_string(".col").is_ok() {
608 return Ok(Blayout::Col);
609 }
610 stream.set_position(saved_pos);
611 }
612 stream.set_position(saved_pos);
613 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
614 let expected = &[".row", ".col"];
615 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
616 Err(crate::parser::unexpected_value(span, expected, found))
617 }
618 }
619
620 impl PtxParser for Btype {
621 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
622 {
624 let saved_pos = stream.position();
625 if stream.expect_string(".tf32").is_ok() {
626 return Ok(Btype::Tf32);
627 }
628 stream.set_position(saved_pos);
629 }
630 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
631 let expected = &[".tf32"];
632 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
633 Err(crate::parser::unexpected_value(span, expected, found))
634 }
635 }
636
637 impl PtxParser for Shape {
638 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
639 {
641 let saved_pos = stream.position();
642 if stream.expect_string(".m16n16k8").is_ok() {
643 return Ok(Shape::M16n16k8);
644 }
645 stream.set_position(saved_pos);
646 }
647 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
648 let expected = &[".m16n16k8"];
649 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
650 Err(crate::parser::unexpected_value(span, expected, found))
651 }
652 }
653
654 impl PtxParser for WmmaMmaSyncAlignedAlayoutBlayoutShapeF32AtypeBtypeF321 {
655 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
656 stream.expect_string("wmma")?;
657 stream.expect_string(".mma")?;
658 let mma = ();
659 stream.expect_complete()?;
660 stream.expect_string(".sync")?;
661 let sync = ();
662 stream.expect_complete()?;
663 stream.expect_string(".aligned")?;
664 let aligned = ();
665 stream.expect_complete()?;
666 let alayout = Alayout::parse(stream)?;
667 stream.expect_complete()?;
668 let blayout = Blayout::parse(stream)?;
669 stream.expect_complete()?;
670 let shape = Shape::parse(stream)?;
671 stream.expect_complete()?;
672 stream.expect_string(".f32")?;
673 let f32 = ();
674 stream.expect_complete()?;
675 let atype = Atype::parse(stream)?;
676 stream.expect_complete()?;
677 let btype = Btype::parse(stream)?;
678 stream.expect_complete()?;
679 stream.expect_string(".f32")?;
680 let f322 = ();
681 stream.expect_complete()?;
682 let d = GeneralOperand::parse(stream)?;
683 stream.expect_complete()?;
684 stream.expect(&PtxToken::Comma)?;
685 let a = GeneralOperand::parse(stream)?;
686 stream.expect_complete()?;
687 stream.expect(&PtxToken::Comma)?;
688 let b = GeneralOperand::parse(stream)?;
689 stream.expect_complete()?;
690 stream.expect(&PtxToken::Comma)?;
691 let c = GeneralOperand::parse(stream)?;
692 stream.expect_complete()?;
693 stream.expect_complete()?;
694 stream.expect(&PtxToken::Semicolon)?;
695 Ok(WmmaMmaSyncAlignedAlayoutBlayoutShapeF32AtypeBtypeF321 {
696 mma,
697 sync,
698 aligned,
699 alayout,
700 blayout,
701 shape,
702 f32,
703 atype,
704 btype,
705 f322,
706 d,
707 a,
708 b,
709 c,
710 })
711 }
712 }
713
714
715}
716
717pub mod section_4 {
718 use super::*;
719 use crate::r#type::instruction::wmma_mma::section_4::*;
720
721 impl PtxParser for Alayout {
726 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
727 {
729 let saved_pos = stream.position();
730 if stream.expect_string(".row").is_ok() {
731 return Ok(Alayout::Row);
732 }
733 stream.set_position(saved_pos);
734 }
735 let saved_pos = stream.position();
736 {
738 let saved_pos = stream.position();
739 if stream.expect_string(".col").is_ok() {
740 return Ok(Alayout::Col);
741 }
742 stream.set_position(saved_pos);
743 }
744 stream.set_position(saved_pos);
745 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
746 let expected = &[".row", ".col"];
747 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
748 Err(crate::parser::unexpected_value(span, expected, found))
749 }
750 }
751
752 impl PtxParser for Blayout {
753 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
754 {
756 let saved_pos = stream.position();
757 if stream.expect_string(".row").is_ok() {
758 return Ok(Blayout::Row);
759 }
760 stream.set_position(saved_pos);
761 }
762 let saved_pos = stream.position();
763 {
765 let saved_pos = stream.position();
766 if stream.expect_string(".col").is_ok() {
767 return Ok(Blayout::Col);
768 }
769 stream.set_position(saved_pos);
770 }
771 stream.set_position(saved_pos);
772 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
773 let expected = &[".row", ".col"];
774 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
775 Err(crate::parser::unexpected_value(span, expected, found))
776 }
777 }
778
779 impl PtxParser for Rnd {
780 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
781 {
783 let saved_pos = stream.position();
784 if stream.expect_string(".rn").is_ok() {
785 return Ok(Rnd::Rn);
786 }
787 stream.set_position(saved_pos);
788 }
789 let saved_pos = stream.position();
790 {
792 let saved_pos = stream.position();
793 if stream.expect_string(".rz").is_ok() {
794 return Ok(Rnd::Rz);
795 }
796 stream.set_position(saved_pos);
797 }
798 stream.set_position(saved_pos);
799 let saved_pos = stream.position();
800 {
802 let saved_pos = stream.position();
803 if stream.expect_string(".rm").is_ok() {
804 return Ok(Rnd::Rm);
805 }
806 stream.set_position(saved_pos);
807 }
808 stream.set_position(saved_pos);
809 let saved_pos = stream.position();
810 {
812 let saved_pos = stream.position();
813 if stream.expect_string(".rp").is_ok() {
814 return Ok(Rnd::Rp);
815 }
816 stream.set_position(saved_pos);
817 }
818 stream.set_position(saved_pos);
819 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
820 let expected = &[".rn", ".rz", ".rm", ".rp"];
821 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
822 Err(crate::parser::unexpected_value(span, expected, found))
823 }
824 }
825
826 impl PtxParser for Shape {
827 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
828 {
830 let saved_pos = stream.position();
831 if stream.expect_string(".m8n8k4").is_ok() {
832 return Ok(Shape::M8n8k4);
833 }
834 stream.set_position(saved_pos);
835 }
836 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
837 let expected = &[".m8n8k4"];
838 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
839 Err(crate::parser::unexpected_value(span, expected, found))
840 }
841 }
842
843 impl PtxParser for WmmaMmaSyncAlignedAlayoutBlayoutShapeRndF64F64F64F64 {
844 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
845 stream.expect_string("wmma")?;
846 stream.expect_string(".mma")?;
847 let mma = ();
848 stream.expect_complete()?;
849 stream.expect_string(".sync")?;
850 let sync = ();
851 stream.expect_complete()?;
852 stream.expect_string(".aligned")?;
853 let aligned = ();
854 stream.expect_complete()?;
855 let alayout = Alayout::parse(stream)?;
856 stream.expect_complete()?;
857 let blayout = Blayout::parse(stream)?;
858 stream.expect_complete()?;
859 let shape = Shape::parse(stream)?;
860 stream.expect_complete()?;
861 let saved_pos = stream.position();
862 let rnd = match Rnd::parse(stream) {
863 Ok(val) => Some(val),
864 Err(_) => {
865 stream.set_position(saved_pos);
866 None
867 }
868 };
869 stream.expect_complete()?;
870 stream.expect_string(".f64")?;
871 let f64 = ();
872 stream.expect_complete()?;
873 stream.expect_string(".f64")?;
874 let f642 = ();
875 stream.expect_complete()?;
876 stream.expect_string(".f64")?;
877 let f644 = ();
878 stream.expect_complete()?;
879 stream.expect_string(".f64")?;
880 let f646 = ();
881 stream.expect_complete()?;
882 let d = GeneralOperand::parse(stream)?;
883 stream.expect_complete()?;
884 stream.expect(&PtxToken::Comma)?;
885 let a = GeneralOperand::parse(stream)?;
886 stream.expect_complete()?;
887 stream.expect(&PtxToken::Comma)?;
888 let b = GeneralOperand::parse(stream)?;
889 stream.expect_complete()?;
890 stream.expect(&PtxToken::Comma)?;
891 let c = GeneralOperand::parse(stream)?;
892 stream.expect_complete()?;
893 stream.expect_complete()?;
894 stream.expect(&PtxToken::Semicolon)?;
895 Ok(WmmaMmaSyncAlignedAlayoutBlayoutShapeRndF64F64F64F64 {
896 mma,
897 sync,
898 aligned,
899 alayout,
900 blayout,
901 shape,
902 rnd,
903 f64,
904 f642,
905 f644,
906 f646,
907 d,
908 a,
909 b,
910 c,
911 })
912 }
913 }
914
915
916}
917
918pub mod section_5 {
919 use super::*;
920 use crate::r#type::instruction::wmma_mma::section_5::*;
921
922 impl PtxParser for Atype {
927 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
928 {
930 let saved_pos = stream.position();
931 if stream.expect_string(".s4").is_ok() {
932 return Ok(Atype::S4);
933 }
934 stream.set_position(saved_pos);
935 }
936 let saved_pos = stream.position();
937 {
939 let saved_pos = stream.position();
940 if stream.expect_string(".u4").is_ok() {
941 return Ok(Atype::U4);
942 }
943 stream.set_position(saved_pos);
944 }
945 stream.set_position(saved_pos);
946 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
947 let expected = &[".s4", ".u4"];
948 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
949 Err(crate::parser::unexpected_value(span, expected, found))
950 }
951 }
952
953 impl PtxParser for Btype {
954 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
955 {
957 let saved_pos = stream.position();
958 if stream.expect_string(".s4").is_ok() {
959 return Ok(Btype::S4);
960 }
961 stream.set_position(saved_pos);
962 }
963 let saved_pos = stream.position();
964 {
966 let saved_pos = stream.position();
967 if stream.expect_string(".u4").is_ok() {
968 return Ok(Btype::U4);
969 }
970 stream.set_position(saved_pos);
971 }
972 stream.set_position(saved_pos);
973 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
974 let expected = &[".s4", ".u4"];
975 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
976 Err(crate::parser::unexpected_value(span, expected, found))
977 }
978 }
979
980 impl PtxParser for Shape {
981 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
982 {
984 let saved_pos = stream.position();
985 if stream.expect_string(".m8n8k32").is_ok() {
986 return Ok(Shape::M8n8k32);
987 }
988 stream.set_position(saved_pos);
989 }
990 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
991 let expected = &[".m8n8k32"];
992 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
993 Err(crate::parser::unexpected_value(span, expected, found))
994 }
995 }
996
997 impl PtxParser for WmmaMmaSyncAlignedRowColShapeS32AtypeBtypeS32Satfinite {
998 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
999 stream.expect_string("wmma")?;
1000 stream.expect_string(".mma")?;
1001 let mma = ();
1002 stream.expect_complete()?;
1003 stream.expect_string(".sync")?;
1004 let sync = ();
1005 stream.expect_complete()?;
1006 stream.expect_string(".aligned")?;
1007 let aligned = ();
1008 stream.expect_complete()?;
1009 stream.expect_string(".row")?;
1010 let row = ();
1011 stream.expect_complete()?;
1012 stream.expect_string(".col")?;
1013 let col = ();
1014 stream.expect_complete()?;
1015 let shape = Shape::parse(stream)?;
1016 stream.expect_complete()?;
1017 stream.expect_string(".s32")?;
1018 let s32 = ();
1019 stream.expect_complete()?;
1020 let atype = Atype::parse(stream)?;
1021 stream.expect_complete()?;
1022 let btype = Btype::parse(stream)?;
1023 stream.expect_complete()?;
1024 stream.expect_string(".s32")?;
1025 let s322 = ();
1026 stream.expect_complete()?;
1027 let saved_pos = stream.position();
1028 let satfinite = stream.expect_string(".satfinite").is_ok();
1029 if !satfinite {
1030 stream.set_position(saved_pos);
1031 }
1032 stream.expect_complete()?;
1033 let d = GeneralOperand::parse(stream)?;
1034 stream.expect_complete()?;
1035 stream.expect(&PtxToken::Comma)?;
1036 let a = GeneralOperand::parse(stream)?;
1037 stream.expect_complete()?;
1038 stream.expect(&PtxToken::Comma)?;
1039 let b = GeneralOperand::parse(stream)?;
1040 stream.expect_complete()?;
1041 stream.expect(&PtxToken::Comma)?;
1042 let c = GeneralOperand::parse(stream)?;
1043 stream.expect_complete()?;
1044 stream.expect_complete()?;
1045 stream.expect(&PtxToken::Semicolon)?;
1046 Ok(WmmaMmaSyncAlignedRowColShapeS32AtypeBtypeS32Satfinite {
1047 mma,
1048 sync,
1049 aligned,
1050 row,
1051 col,
1052 shape,
1053 s32,
1054 atype,
1055 btype,
1056 s322,
1057 satfinite,
1058 d,
1059 a,
1060 b,
1061 c,
1062 })
1063 }
1064 }
1065
1066
1067}
1068
1069pub mod section_6 {
1070 use super::*;
1071 use crate::r#type::instruction::wmma_mma::section_6::*;
1072
1073 impl PtxParser for Atype {
1078 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1079 {
1081 let saved_pos = stream.position();
1082 if stream.expect_string(".b1").is_ok() {
1083 return Ok(Atype::B1);
1084 }
1085 stream.set_position(saved_pos);
1086 }
1087 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
1088 let expected = &[".b1"];
1089 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
1090 Err(crate::parser::unexpected_value(span, expected, found))
1091 }
1092 }
1093
1094 impl PtxParser for Btype {
1095 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1096 {
1098 let saved_pos = stream.position();
1099 if stream.expect_string(".b1").is_ok() {
1100 return Ok(Btype::B1);
1101 }
1102 stream.set_position(saved_pos);
1103 }
1104 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
1105 let expected = &[".b1"];
1106 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
1107 Err(crate::parser::unexpected_value(span, expected, found))
1108 }
1109 }
1110
1111 impl PtxParser for Op {
1112 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1113 {
1115 let saved_pos = stream.position();
1116 if stream.expect_string(".xor").is_ok() {
1117 return Ok(Op::Xor);
1118 }
1119 stream.set_position(saved_pos);
1120 }
1121 let saved_pos = stream.position();
1122 {
1124 let saved_pos = stream.position();
1125 if stream.expect_string(".and").is_ok() {
1126 return Ok(Op::And);
1127 }
1128 stream.set_position(saved_pos);
1129 }
1130 stream.set_position(saved_pos);
1131 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
1132 let expected = &[".xor", ".and"];
1133 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
1134 Err(crate::parser::unexpected_value(span, expected, found))
1135 }
1136 }
1137
1138 impl PtxParser for Shape {
1139 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1140 {
1142 let saved_pos = stream.position();
1143 if stream.expect_string(".m8n8k128").is_ok() {
1144 return Ok(Shape::M8n8k128);
1145 }
1146 stream.set_position(saved_pos);
1147 }
1148 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
1149 let expected = &[".m8n8k128"];
1150 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
1151 Err(crate::parser::unexpected_value(span, expected, found))
1152 }
1153 }
1154
1155 impl PtxParser for WmmaMmaOpPopcSyncAlignedRowColShapeS32AtypeBtypeS32 {
1156 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1157 stream.expect_string("wmma")?;
1158 stream.expect_string(".mma")?;
1159 let mma = ();
1160 stream.expect_complete()?;
1161 let op = Op::parse(stream)?;
1162 stream.expect_complete()?;
1163 stream.expect_string(".popc")?;
1164 let popc = ();
1165 stream.expect_complete()?;
1166 stream.expect_string(".sync")?;
1167 let sync = ();
1168 stream.expect_complete()?;
1169 stream.expect_string(".aligned")?;
1170 let aligned = ();
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 shape = Shape::parse(stream)?;
1179 stream.expect_complete()?;
1180 stream.expect_string(".s32")?;
1181 let s32 = ();
1182 stream.expect_complete()?;
1183 let atype = Atype::parse(stream)?;
1184 stream.expect_complete()?;
1185 let btype = Btype::parse(stream)?;
1186 stream.expect_complete()?;
1187 stream.expect_string(".s32")?;
1188 let s322 = ();
1189 stream.expect_complete()?;
1190 let d = GeneralOperand::parse(stream)?;
1191 stream.expect_complete()?;
1192 stream.expect(&PtxToken::Comma)?;
1193 let a = GeneralOperand::parse(stream)?;
1194 stream.expect_complete()?;
1195 stream.expect(&PtxToken::Comma)?;
1196 let b = GeneralOperand::parse(stream)?;
1197 stream.expect_complete()?;
1198 stream.expect(&PtxToken::Comma)?;
1199 let c = GeneralOperand::parse(stream)?;
1200 stream.expect_complete()?;
1201 stream.expect_complete()?;
1202 stream.expect(&PtxToken::Semicolon)?;
1203 Ok(WmmaMmaOpPopcSyncAlignedRowColShapeS32AtypeBtypeS32 {
1204 mma,
1205 op,
1206 popc,
1207 sync,
1208 aligned,
1209 row,
1210 col,
1211 shape,
1212 s32,
1213 atype,
1214 btype,
1215 s322,
1216 d,
1217 a,
1218 b,
1219 c,
1220 })
1221 }
1222 }
1223
1224
1225}
1226