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