1#![allow(unused)]
41
42use crate::lexer::PtxToken;
43use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
44use crate::r#type::common::*;
45
46pub mod section_0 {
47 use super::*;
48 use crate::r#type::instruction::cvt::section_0::*;
49
50 impl PtxParser for Atype {
55 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
56 {
58 let saved_pos = stream.position();
59 if stream.expect_string(".bf16").is_ok() {
60 return Ok(Atype::Bf16);
61 }
62 stream.set_position(saved_pos);
63 }
64 let saved_pos = stream.position();
65 {
67 let saved_pos = stream.position();
68 if stream.expect_string(".u16").is_ok() {
69 return Ok(Atype::U16);
70 }
71 stream.set_position(saved_pos);
72 }
73 stream.set_position(saved_pos);
74 let saved_pos = stream.position();
75 {
77 let saved_pos = stream.position();
78 if stream.expect_string(".u32").is_ok() {
79 return Ok(Atype::U32);
80 }
81 stream.set_position(saved_pos);
82 }
83 stream.set_position(saved_pos);
84 let saved_pos = stream.position();
85 {
87 let saved_pos = stream.position();
88 if stream.expect_string(".u64").is_ok() {
89 return Ok(Atype::U64);
90 }
91 stream.set_position(saved_pos);
92 }
93 stream.set_position(saved_pos);
94 let saved_pos = stream.position();
95 {
97 let saved_pos = stream.position();
98 if stream.expect_string(".s16").is_ok() {
99 return Ok(Atype::S16);
100 }
101 stream.set_position(saved_pos);
102 }
103 stream.set_position(saved_pos);
104 let saved_pos = stream.position();
105 {
107 let saved_pos = stream.position();
108 if stream.expect_string(".s32").is_ok() {
109 return Ok(Atype::S32);
110 }
111 stream.set_position(saved_pos);
112 }
113 stream.set_position(saved_pos);
114 let saved_pos = stream.position();
115 {
117 let saved_pos = stream.position();
118 if stream.expect_string(".s64").is_ok() {
119 return Ok(Atype::S64);
120 }
121 stream.set_position(saved_pos);
122 }
123 stream.set_position(saved_pos);
124 let saved_pos = stream.position();
125 {
127 let saved_pos = stream.position();
128 if stream.expect_string(".f16").is_ok() {
129 return Ok(Atype::F16);
130 }
131 stream.set_position(saved_pos);
132 }
133 stream.set_position(saved_pos);
134 let saved_pos = stream.position();
135 {
137 let saved_pos = stream.position();
138 if stream.expect_string(".f32").is_ok() {
139 return Ok(Atype::F32);
140 }
141 stream.set_position(saved_pos);
142 }
143 stream.set_position(saved_pos);
144 let saved_pos = stream.position();
145 {
147 let saved_pos = stream.position();
148 if stream.expect_string(".f64").is_ok() {
149 return Ok(Atype::F64);
150 }
151 stream.set_position(saved_pos);
152 }
153 stream.set_position(saved_pos);
154 let saved_pos = stream.position();
155 {
157 let saved_pos = stream.position();
158 if stream.expect_string(".u8").is_ok() {
159 return Ok(Atype::U8);
160 }
161 stream.set_position(saved_pos);
162 }
163 stream.set_position(saved_pos);
164 let saved_pos = stream.position();
165 {
167 let saved_pos = stream.position();
168 if stream.expect_string(".s8").is_ok() {
169 return Ok(Atype::S8);
170 }
171 stream.set_position(saved_pos);
172 }
173 stream.set_position(saved_pos);
174 let span = stream
175 .peek()
176 .map(|(_, s)| s.clone())
177 .unwrap_or(Span { start: 0, end: 0 });
178 let expected = &[
179 ".bf16", ".u16", ".u32", ".u64", ".s16", ".s32", ".s64", ".f16", ".f32", ".f64",
180 ".u8", ".s8",
181 ];
182 let found = stream
183 .peek()
184 .map(|(t, _)| format!("{:?}", t))
185 .unwrap_or_else(|_| "<end of input>".to_string());
186 Err(crate::parser::unexpected_value(span, expected, found))
187 }
188 }
189
190 impl PtxParser for Dtype {
191 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
192 {
194 let saved_pos = stream.position();
195 if stream.expect_string(".bf16").is_ok() {
196 return Ok(Dtype::Bf16);
197 }
198 stream.set_position(saved_pos);
199 }
200 let saved_pos = stream.position();
201 {
203 let saved_pos = stream.position();
204 if stream.expect_string(".u16").is_ok() {
205 return Ok(Dtype::U16);
206 }
207 stream.set_position(saved_pos);
208 }
209 stream.set_position(saved_pos);
210 let saved_pos = stream.position();
211 {
213 let saved_pos = stream.position();
214 if stream.expect_string(".u32").is_ok() {
215 return Ok(Dtype::U32);
216 }
217 stream.set_position(saved_pos);
218 }
219 stream.set_position(saved_pos);
220 let saved_pos = stream.position();
221 {
223 let saved_pos = stream.position();
224 if stream.expect_string(".u64").is_ok() {
225 return Ok(Dtype::U64);
226 }
227 stream.set_position(saved_pos);
228 }
229 stream.set_position(saved_pos);
230 let saved_pos = stream.position();
231 {
233 let saved_pos = stream.position();
234 if stream.expect_string(".s16").is_ok() {
235 return Ok(Dtype::S16);
236 }
237 stream.set_position(saved_pos);
238 }
239 stream.set_position(saved_pos);
240 let saved_pos = stream.position();
241 {
243 let saved_pos = stream.position();
244 if stream.expect_string(".s32").is_ok() {
245 return Ok(Dtype::S32);
246 }
247 stream.set_position(saved_pos);
248 }
249 stream.set_position(saved_pos);
250 let saved_pos = stream.position();
251 {
253 let saved_pos = stream.position();
254 if stream.expect_string(".s64").is_ok() {
255 return Ok(Dtype::S64);
256 }
257 stream.set_position(saved_pos);
258 }
259 stream.set_position(saved_pos);
260 let saved_pos = stream.position();
261 {
263 let saved_pos = stream.position();
264 if stream.expect_string(".f16").is_ok() {
265 return Ok(Dtype::F16);
266 }
267 stream.set_position(saved_pos);
268 }
269 stream.set_position(saved_pos);
270 let saved_pos = stream.position();
271 {
273 let saved_pos = stream.position();
274 if stream.expect_string(".f32").is_ok() {
275 return Ok(Dtype::F32);
276 }
277 stream.set_position(saved_pos);
278 }
279 stream.set_position(saved_pos);
280 let saved_pos = stream.position();
281 {
283 let saved_pos = stream.position();
284 if stream.expect_string(".f64").is_ok() {
285 return Ok(Dtype::F64);
286 }
287 stream.set_position(saved_pos);
288 }
289 stream.set_position(saved_pos);
290 let saved_pos = stream.position();
291 {
293 let saved_pos = stream.position();
294 if stream.expect_string(".u8").is_ok() {
295 return Ok(Dtype::U8);
296 }
297 stream.set_position(saved_pos);
298 }
299 stream.set_position(saved_pos);
300 let saved_pos = stream.position();
301 {
303 let saved_pos = stream.position();
304 if stream.expect_string(".s8").is_ok() {
305 return Ok(Dtype::S8);
306 }
307 stream.set_position(saved_pos);
308 }
309 stream.set_position(saved_pos);
310 let span = stream
311 .peek()
312 .map(|(_, s)| s.clone())
313 .unwrap_or(Span { start: 0, end: 0 });
314 let expected = &[
315 ".bf16", ".u16", ".u32", ".u64", ".s16", ".s32", ".s64", ".f16", ".f32", ".f64",
316 ".u8", ".s8",
317 ];
318 let found = stream
319 .peek()
320 .map(|(t, _)| format!("{:?}", t))
321 .unwrap_or_else(|_| "<end of input>".to_string());
322 Err(crate::parser::unexpected_value(span, expected, found))
323 }
324 }
325
326 impl PtxParser for F4x2type {
327 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
328 {
330 let saved_pos = stream.position();
331 if stream.expect_string(".e2m1x2").is_ok() {
332 return Ok(F4x2type::E2m1x2);
333 }
334 stream.set_position(saved_pos);
335 }
336 let span = stream
337 .peek()
338 .map(|(_, s)| s.clone())
339 .unwrap_or(Span { start: 0, end: 0 });
340 let expected = &[".e2m1x2"];
341 let found = stream
342 .peek()
343 .map(|(t, _)| format!("{:?}", t))
344 .unwrap_or_else(|_| "<end of input>".to_string());
345 Err(crate::parser::unexpected_value(span, expected, found))
346 }
347 }
348
349 impl PtxParser for F4x4type {
350 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
351 {
353 let saved_pos = stream.position();
354 if stream.expect_string(".e2m1x4").is_ok() {
355 return Ok(F4x4type::E2m1x4);
356 }
357 stream.set_position(saved_pos);
358 }
359 let span = stream
360 .peek()
361 .map(|(_, s)| s.clone())
362 .unwrap_or(Span { start: 0, end: 0 });
363 let expected = &[".e2m1x4"];
364 let found = stream
365 .peek()
366 .map(|(t, _)| format!("{:?}", t))
367 .unwrap_or_else(|_| "<end of input>".to_string());
368 Err(crate::parser::unexpected_value(span, expected, found))
369 }
370 }
371
372 impl PtxParser for F6x2type {
373 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
374 {
376 let saved_pos = stream.position();
377 if stream.expect_string(".e2m3x2").is_ok() {
378 return Ok(F6x2type::E2m3x2);
379 }
380 stream.set_position(saved_pos);
381 }
382 let saved_pos = stream.position();
383 {
385 let saved_pos = stream.position();
386 if stream.expect_string(".e3m2x2").is_ok() {
387 return Ok(F6x2type::E3m2x2);
388 }
389 stream.set_position(saved_pos);
390 }
391 stream.set_position(saved_pos);
392 let span = stream
393 .peek()
394 .map(|(_, s)| s.clone())
395 .unwrap_or(Span { start: 0, end: 0 });
396 let expected = &[".e2m3x2", ".e3m2x2"];
397 let found = stream
398 .peek()
399 .map(|(t, _)| format!("{:?}", t))
400 .unwrap_or_else(|_| "<end of input>".to_string());
401 Err(crate::parser::unexpected_value(span, expected, found))
402 }
403 }
404
405 impl PtxParser for F6x4type {
406 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
407 {
409 let saved_pos = stream.position();
410 if stream.expect_string(".e2m3x4").is_ok() {
411 return Ok(F6x4type::E2m3x4);
412 }
413 stream.set_position(saved_pos);
414 }
415 let saved_pos = stream.position();
416 {
418 let saved_pos = stream.position();
419 if stream.expect_string(".e3m2x4").is_ok() {
420 return Ok(F6x4type::E3m2x4);
421 }
422 stream.set_position(saved_pos);
423 }
424 stream.set_position(saved_pos);
425 let span = stream
426 .peek()
427 .map(|(_, s)| s.clone())
428 .unwrap_or(Span { start: 0, end: 0 });
429 let expected = &[".e2m3x4", ".e3m2x4"];
430 let found = stream
431 .peek()
432 .map(|(t, _)| format!("{:?}", t))
433 .unwrap_or_else(|_| "<end of input>".to_string());
434 Err(crate::parser::unexpected_value(span, expected, found))
435 }
436 }
437
438 impl PtxParser for F8x2type {
439 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
440 {
442 let saved_pos = stream.position();
443 if stream.expect_string(".e4m3x2").is_ok() {
444 return Ok(F8x2type::E4m3x2);
445 }
446 stream.set_position(saved_pos);
447 }
448 let saved_pos = stream.position();
449 {
451 let saved_pos = stream.position();
452 if stream.expect_string(".e5m2x2").is_ok() {
453 return Ok(F8x2type::E5m2x2);
454 }
455 stream.set_position(saved_pos);
456 }
457 stream.set_position(saved_pos);
458 let span = stream
459 .peek()
460 .map(|(_, s)| s.clone())
461 .unwrap_or(Span { start: 0, end: 0 });
462 let expected = &[".e4m3x2", ".e5m2x2"];
463 let found = stream
464 .peek()
465 .map(|(t, _)| format!("{:?}", t))
466 .unwrap_or_else(|_| "<end of input>".to_string());
467 Err(crate::parser::unexpected_value(span, expected, found))
468 }
469 }
470
471 impl PtxParser for F8x4type {
472 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
473 {
475 let saved_pos = stream.position();
476 if stream.expect_string(".e4m3x4").is_ok() {
477 return Ok(F8x4type::E4m3x4);
478 }
479 stream.set_position(saved_pos);
480 }
481 let saved_pos = stream.position();
482 {
484 let saved_pos = stream.position();
485 if stream.expect_string(".e5m2x4").is_ok() {
486 return Ok(F8x4type::E5m2x4);
487 }
488 stream.set_position(saved_pos);
489 }
490 stream.set_position(saved_pos);
491 let span = stream
492 .peek()
493 .map(|(_, s)| s.clone())
494 .unwrap_or(Span { start: 0, end: 0 });
495 let expected = &[".e4m3x4", ".e5m2x4"];
496 let found = stream
497 .peek()
498 .map(|(t, _)| format!("{:?}", t))
499 .unwrap_or_else(|_| "<end of input>".to_string());
500 Err(crate::parser::unexpected_value(span, expected, found))
501 }
502 }
503
504 impl PtxParser for Frnd {
505 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
506 {
508 let saved_pos = stream.position();
509 if stream.expect_string(".rn").is_ok() {
510 return Ok(Frnd::Rn);
511 }
512 stream.set_position(saved_pos);
513 }
514 let saved_pos = stream.position();
515 {
517 let saved_pos = stream.position();
518 if stream.expect_string(".rz").is_ok() {
519 return Ok(Frnd::Rz);
520 }
521 stream.set_position(saved_pos);
522 }
523 stream.set_position(saved_pos);
524 let saved_pos = stream.position();
525 {
527 let saved_pos = stream.position();
528 if stream.expect_string(".rm").is_ok() {
529 return Ok(Frnd::Rm);
530 }
531 stream.set_position(saved_pos);
532 }
533 stream.set_position(saved_pos);
534 let saved_pos = stream.position();
535 {
537 let saved_pos = stream.position();
538 if stream.expect_string(".rp").is_ok() {
539 return Ok(Frnd::Rp);
540 }
541 stream.set_position(saved_pos);
542 }
543 stream.set_position(saved_pos);
544 let span = stream
545 .peek()
546 .map(|(_, s)| s.clone())
547 .unwrap_or(Span { start: 0, end: 0 });
548 let expected = &[".rn", ".rz", ".rm", ".rp"];
549 let found = stream
550 .peek()
551 .map(|(t, _)| format!("{:?}", t))
552 .unwrap_or_else(|_| "<end of input>".to_string());
553 Err(crate::parser::unexpected_value(span, expected, found))
554 }
555 }
556
557 impl PtxParser for Frnd2 {
558 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
559 {
561 let saved_pos = stream.position();
562 if stream.expect_string(".rn").is_ok() {
563 return Ok(Frnd2::Rn);
564 }
565 stream.set_position(saved_pos);
566 }
567 let saved_pos = stream.position();
568 {
570 let saved_pos = stream.position();
571 if stream.expect_string(".rz").is_ok() {
572 return Ok(Frnd2::Rz);
573 }
574 stream.set_position(saved_pos);
575 }
576 stream.set_position(saved_pos);
577 let span = stream
578 .peek()
579 .map(|(_, s)| s.clone())
580 .unwrap_or(Span { start: 0, end: 0 });
581 let expected = &[".rn", ".rz"];
582 let found = stream
583 .peek()
584 .map(|(t, _)| format!("{:?}", t))
585 .unwrap_or_else(|_| "<end of input>".to_string());
586 Err(crate::parser::unexpected_value(span, expected, found))
587 }
588 }
589
590 impl PtxParser for Frnd3 {
591 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
592 {
594 let saved_pos = stream.position();
595 if stream.expect_string(".rz").is_ok() {
596 return Ok(Frnd3::Rz);
597 }
598 stream.set_position(saved_pos);
599 }
600 let saved_pos = stream.position();
601 {
603 let saved_pos = stream.position();
604 if stream.expect_string(".rp").is_ok() {
605 return Ok(Frnd3::Rp);
606 }
607 stream.set_position(saved_pos);
608 }
609 stream.set_position(saved_pos);
610 let span = stream
611 .peek()
612 .map(|(_, s)| s.clone())
613 .unwrap_or(Span { start: 0, end: 0 });
614 let expected = &[".rz", ".rp"];
615 let found = stream
616 .peek()
617 .map(|(t, _)| format!("{:?}", t))
618 .unwrap_or_else(|_| "<end of input>".to_string());
619 Err(crate::parser::unexpected_value(span, expected, found))
620 }
621 }
622
623 impl PtxParser for Irnd {
624 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
625 {
627 let saved_pos = stream.position();
628 if stream.expect_string(".rni").is_ok() {
629 return Ok(Irnd::Rni);
630 }
631 stream.set_position(saved_pos);
632 }
633 let saved_pos = stream.position();
634 {
636 let saved_pos = stream.position();
637 if stream.expect_string(".rzi").is_ok() {
638 return Ok(Irnd::Rzi);
639 }
640 stream.set_position(saved_pos);
641 }
642 stream.set_position(saved_pos);
643 let saved_pos = stream.position();
644 {
646 let saved_pos = stream.position();
647 if stream.expect_string(".rmi").is_ok() {
648 return Ok(Irnd::Rmi);
649 }
650 stream.set_position(saved_pos);
651 }
652 stream.set_position(saved_pos);
653 let saved_pos = stream.position();
654 {
656 let saved_pos = stream.position();
657 if stream.expect_string(".rpi").is_ok() {
658 return Ok(Irnd::Rpi);
659 }
660 stream.set_position(saved_pos);
661 }
662 stream.set_position(saved_pos);
663 let span = stream
664 .peek()
665 .map(|(_, s)| s.clone())
666 .unwrap_or(Span { start: 0, end: 0 });
667 let expected = &[".rni", ".rzi", ".rmi", ".rpi"];
668 let found = stream
669 .peek()
670 .map(|(t, _)| format!("{:?}", t))
671 .unwrap_or_else(|_| "<end of input>".to_string());
672 Err(crate::parser::unexpected_value(span, expected, found))
673 }
674 }
675
676 impl PtxParser for CvtIrndFtzSatDtypeAtype {
677 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
678 stream.expect_string("cvt")?;
679 let saved_pos = stream.position();
680 let irnd = match Irnd::parse(stream) {
681 Ok(val) => Some(val),
682 Err(_) => {
683 stream.set_position(saved_pos);
684 None
685 }
686 };
687 stream.expect_complete()?;
688 let saved_pos = stream.position();
689 let ftz = stream.expect_string(".ftz").is_ok();
690 if !ftz {
691 stream.set_position(saved_pos);
692 }
693 stream.expect_complete()?;
694 let saved_pos = stream.position();
695 let sat = stream.expect_string(".sat").is_ok();
696 if !sat {
697 stream.set_position(saved_pos);
698 }
699 stream.expect_complete()?;
700 let dtype = Dtype::parse(stream)?;
701 stream.expect_complete()?;
702 let atype = Atype::parse(stream)?;
703 stream.expect_complete()?;
704 let d = GeneralOperand::parse(stream)?;
705 stream.expect_complete()?;
706 stream.expect(&PtxToken::Comma)?;
707 let a = GeneralOperand::parse(stream)?;
708 stream.expect_complete()?;
709 stream.expect_complete()?;
710 stream.expect(&PtxToken::Semicolon)?;
711 Ok(CvtIrndFtzSatDtypeAtype {
712 irnd,
713 ftz,
714 sat,
715 dtype,
716 atype,
717 d,
718 a,
719 })
720 }
721 }
722
723 impl PtxParser for CvtFrndFtzSatDtypeAtype {
724 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
725 stream.expect_string("cvt")?;
726 let saved_pos = stream.position();
727 let frnd = match Frnd::parse(stream) {
728 Ok(val) => Some(val),
729 Err(_) => {
730 stream.set_position(saved_pos);
731 None
732 }
733 };
734 stream.expect_complete()?;
735 let saved_pos = stream.position();
736 let ftz = stream.expect_string(".ftz").is_ok();
737 if !ftz {
738 stream.set_position(saved_pos);
739 }
740 stream.expect_complete()?;
741 let saved_pos = stream.position();
742 let sat = stream.expect_string(".sat").is_ok();
743 if !sat {
744 stream.set_position(saved_pos);
745 }
746 stream.expect_complete()?;
747 let dtype = Dtype::parse(stream)?;
748 stream.expect_complete()?;
749 let atype = Atype::parse(stream)?;
750 stream.expect_complete()?;
751 let d = GeneralOperand::parse(stream)?;
752 stream.expect_complete()?;
753 stream.expect(&PtxToken::Comma)?;
754 let a = GeneralOperand::parse(stream)?;
755 stream.expect_complete()?;
756 stream.expect_complete()?;
757 stream.expect(&PtxToken::Semicolon)?;
758 Ok(CvtFrndFtzSatDtypeAtype {
759 frnd,
760 ftz,
761 sat,
762 dtype,
763 atype,
764 d,
765 a,
766 })
767 }
768 }
769
770 impl PtxParser for CvtFrnd2ReluSatfiniteF16F32 {
771 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
772 stream.expect_string("cvt")?;
773 let frnd2 = Frnd2::parse(stream)?;
774 stream.expect_complete()?;
775 let saved_pos = stream.position();
776 let relu = stream.expect_string(".relu").is_ok();
777 if !relu {
778 stream.set_position(saved_pos);
779 }
780 stream.expect_complete()?;
781 let saved_pos = stream.position();
782 let satfinite = stream.expect_string(".satfinite").is_ok();
783 if !satfinite {
784 stream.set_position(saved_pos);
785 }
786 stream.expect_complete()?;
787 stream.expect_string(".f16")?;
788 let f16 = ();
789 stream.expect_complete()?;
790 stream.expect_string(".f32")?;
791 let f32 = ();
792 stream.expect_complete()?;
793 let d = GeneralOperand::parse(stream)?;
794 stream.expect_complete()?;
795 stream.expect(&PtxToken::Comma)?;
796 let a = GeneralOperand::parse(stream)?;
797 stream.expect_complete()?;
798 stream.expect_complete()?;
799 stream.expect(&PtxToken::Semicolon)?;
800 Ok(CvtFrnd2ReluSatfiniteF16F32 {
801 frnd2,
802 relu,
803 satfinite,
804 f16,
805 f32,
806 d,
807 a,
808 })
809 }
810 }
811
812 impl PtxParser for CvtFrnd2ReluSatfiniteF16x2F32 {
813 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
814 stream.expect_string("cvt")?;
815 let frnd2 = Frnd2::parse(stream)?;
816 stream.expect_complete()?;
817 let saved_pos = stream.position();
818 let relu = stream.expect_string(".relu").is_ok();
819 if !relu {
820 stream.set_position(saved_pos);
821 }
822 stream.expect_complete()?;
823 let saved_pos = stream.position();
824 let satfinite = stream.expect_string(".satfinite").is_ok();
825 if !satfinite {
826 stream.set_position(saved_pos);
827 }
828 stream.expect_complete()?;
829 stream.expect_string(".f16x2")?;
830 let f16x2 = ();
831 stream.expect_complete()?;
832 stream.expect_string(".f32")?;
833 let f32 = ();
834 stream.expect_complete()?;
835 let d = GeneralOperand::parse(stream)?;
836 stream.expect_complete()?;
837 stream.expect(&PtxToken::Comma)?;
838 let a = GeneralOperand::parse(stream)?;
839 stream.expect_complete()?;
840 stream.expect(&PtxToken::Comma)?;
841 let b = GeneralOperand::parse(stream)?;
842 stream.expect_complete()?;
843 stream.expect_complete()?;
844 stream.expect(&PtxToken::Semicolon)?;
845 Ok(CvtFrnd2ReluSatfiniteF16x2F32 {
846 frnd2,
847 relu,
848 satfinite,
849 f16x2,
850 f32,
851 d,
852 a,
853 b,
854 })
855 }
856 }
857
858 impl PtxParser for CvtRsReluSatfiniteF16x2F32 {
859 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
860 stream.expect_string("cvt")?;
861 stream.expect_string(".rs")?;
862 let rs = ();
863 stream.expect_complete()?;
864 let saved_pos = stream.position();
865 let relu = stream.expect_string(".relu").is_ok();
866 if !relu {
867 stream.set_position(saved_pos);
868 }
869 stream.expect_complete()?;
870 let saved_pos = stream.position();
871 let satfinite = stream.expect_string(".satfinite").is_ok();
872 if !satfinite {
873 stream.set_position(saved_pos);
874 }
875 stream.expect_complete()?;
876 stream.expect_string(".f16x2")?;
877 let f16x2 = ();
878 stream.expect_complete()?;
879 stream.expect_string(".f32")?;
880 let f32 = ();
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 rbits = GeneralOperand::parse(stream)?;
892 stream.expect_complete()?;
893 stream.expect_complete()?;
894 stream.expect(&PtxToken::Semicolon)?;
895 Ok(CvtRsReluSatfiniteF16x2F32 {
896 rs,
897 relu,
898 satfinite,
899 f16x2,
900 f32,
901 d,
902 a,
903 b,
904 rbits,
905 })
906 }
907 }
908
909 impl PtxParser for CvtFrnd2ReluSatfiniteBf16F32 {
910 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
911 stream.expect_string("cvt")?;
912 let frnd2 = Frnd2::parse(stream)?;
913 stream.expect_complete()?;
914 let saved_pos = stream.position();
915 let relu = stream.expect_string(".relu").is_ok();
916 if !relu {
917 stream.set_position(saved_pos);
918 }
919 stream.expect_complete()?;
920 let saved_pos = stream.position();
921 let satfinite = stream.expect_string(".satfinite").is_ok();
922 if !satfinite {
923 stream.set_position(saved_pos);
924 }
925 stream.expect_complete()?;
926 stream.expect_string(".bf16")?;
927 let bf16 = ();
928 stream.expect_complete()?;
929 stream.expect_string(".f32")?;
930 let f32 = ();
931 stream.expect_complete()?;
932 let d = GeneralOperand::parse(stream)?;
933 stream.expect_complete()?;
934 stream.expect(&PtxToken::Comma)?;
935 let a = GeneralOperand::parse(stream)?;
936 stream.expect_complete()?;
937 stream.expect_complete()?;
938 stream.expect(&PtxToken::Semicolon)?;
939 Ok(CvtFrnd2ReluSatfiniteBf16F32 {
940 frnd2,
941 relu,
942 satfinite,
943 bf16,
944 f32,
945 d,
946 a,
947 })
948 }
949 }
950
951 impl PtxParser for CvtFrnd2ReluSatfiniteBf16x2F32 {
952 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
953 stream.expect_string("cvt")?;
954 let frnd2 = Frnd2::parse(stream)?;
955 stream.expect_complete()?;
956 let saved_pos = stream.position();
957 let relu = stream.expect_string(".relu").is_ok();
958 if !relu {
959 stream.set_position(saved_pos);
960 }
961 stream.expect_complete()?;
962 let saved_pos = stream.position();
963 let satfinite = stream.expect_string(".satfinite").is_ok();
964 if !satfinite {
965 stream.set_position(saved_pos);
966 }
967 stream.expect_complete()?;
968 stream.expect_string(".bf16x2")?;
969 let bf16x2 = ();
970 stream.expect_complete()?;
971 stream.expect_string(".f32")?;
972 let f32 = ();
973 stream.expect_complete()?;
974 let d = GeneralOperand::parse(stream)?;
975 stream.expect_complete()?;
976 stream.expect(&PtxToken::Comma)?;
977 let a = GeneralOperand::parse(stream)?;
978 stream.expect_complete()?;
979 stream.expect(&PtxToken::Comma)?;
980 let b = GeneralOperand::parse(stream)?;
981 stream.expect_complete()?;
982 stream.expect_complete()?;
983 stream.expect(&PtxToken::Semicolon)?;
984 Ok(CvtFrnd2ReluSatfiniteBf16x2F32 {
985 frnd2,
986 relu,
987 satfinite,
988 bf16x2,
989 f32,
990 d,
991 a,
992 b,
993 })
994 }
995 }
996
997 impl PtxParser for CvtRsReluSatfiniteBf16x2F32 {
998 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
999 stream.expect_string("cvt")?;
1000 stream.expect_string(".rs")?;
1001 let rs = ();
1002 stream.expect_complete()?;
1003 let saved_pos = stream.position();
1004 let relu = stream.expect_string(".relu").is_ok();
1005 if !relu {
1006 stream.set_position(saved_pos);
1007 }
1008 stream.expect_complete()?;
1009 let saved_pos = stream.position();
1010 let satfinite = stream.expect_string(".satfinite").is_ok();
1011 if !satfinite {
1012 stream.set_position(saved_pos);
1013 }
1014 stream.expect_complete()?;
1015 stream.expect_string(".bf16x2")?;
1016 let bf16x2 = ();
1017 stream.expect_complete()?;
1018 stream.expect_string(".f32")?;
1019 let f32 = ();
1020 stream.expect_complete()?;
1021 let d = GeneralOperand::parse(stream)?;
1022 stream.expect_complete()?;
1023 stream.expect(&PtxToken::Comma)?;
1024 let a = GeneralOperand::parse(stream)?;
1025 stream.expect_complete()?;
1026 stream.expect(&PtxToken::Comma)?;
1027 let b = GeneralOperand::parse(stream)?;
1028 stream.expect_complete()?;
1029 stream.expect(&PtxToken::Comma)?;
1030 let rbits = GeneralOperand::parse(stream)?;
1031 stream.expect_complete()?;
1032 stream.expect_complete()?;
1033 stream.expect(&PtxToken::Semicolon)?;
1034 Ok(CvtRsReluSatfiniteBf16x2F32 {
1035 rs,
1036 relu,
1037 satfinite,
1038 bf16x2,
1039 f32,
1040 d,
1041 a,
1042 b,
1043 rbits,
1044 })
1045 }
1046 }
1047
1048 impl PtxParser for CvtRnaSatfiniteTf32F32 {
1049 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1050 stream.expect_string("cvt")?;
1051 stream.expect_string(".rna")?;
1052 let rna = ();
1053 stream.expect_complete()?;
1054 let saved_pos = stream.position();
1055 let satfinite = stream.expect_string(".satfinite").is_ok();
1056 if !satfinite {
1057 stream.set_position(saved_pos);
1058 }
1059 stream.expect_complete()?;
1060 stream.expect_string(".tf32")?;
1061 let tf32 = ();
1062 stream.expect_complete()?;
1063 stream.expect_string(".f32")?;
1064 let f32 = ();
1065 stream.expect_complete()?;
1066 let d = GeneralOperand::parse(stream)?;
1067 stream.expect_complete()?;
1068 stream.expect(&PtxToken::Comma)?;
1069 let a = GeneralOperand::parse(stream)?;
1070 stream.expect_complete()?;
1071 stream.expect_complete()?;
1072 stream.expect(&PtxToken::Semicolon)?;
1073 Ok(CvtRnaSatfiniteTf32F32 {
1074 rna,
1075 satfinite,
1076 tf32,
1077 f32,
1078 d,
1079 a,
1080 })
1081 }
1082 }
1083
1084 impl PtxParser for CvtFrnd2SatfiniteReluTf32F32 {
1085 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1086 stream.expect_string("cvt")?;
1087 let frnd2 = Frnd2::parse(stream)?;
1088 stream.expect_complete()?;
1089 let saved_pos = stream.position();
1090 let satfinite = stream.expect_string(".satfinite").is_ok();
1091 if !satfinite {
1092 stream.set_position(saved_pos);
1093 }
1094 stream.expect_complete()?;
1095 let saved_pos = stream.position();
1096 let relu = stream.expect_string(".relu").is_ok();
1097 if !relu {
1098 stream.set_position(saved_pos);
1099 }
1100 stream.expect_complete()?;
1101 stream.expect_string(".tf32")?;
1102 let tf32 = ();
1103 stream.expect_complete()?;
1104 stream.expect_string(".f32")?;
1105 let f32 = ();
1106 stream.expect_complete()?;
1107 let d = GeneralOperand::parse(stream)?;
1108 stream.expect_complete()?;
1109 stream.expect(&PtxToken::Comma)?;
1110 let a = GeneralOperand::parse(stream)?;
1111 stream.expect_complete()?;
1112 stream.expect_complete()?;
1113 stream.expect(&PtxToken::Semicolon)?;
1114 Ok(CvtFrnd2SatfiniteReluTf32F32 {
1115 frnd2,
1116 satfinite,
1117 relu,
1118 tf32,
1119 f32,
1120 d,
1121 a,
1122 })
1123 }
1124 }
1125
1126 impl PtxParser for CvtRnSatfiniteReluF8x2typeF32 {
1127 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1128 stream.expect_string("cvt")?;
1129 stream.expect_string(".rn")?;
1130 let rn = ();
1131 stream.expect_complete()?;
1132 stream.expect_string(".satfinite")?;
1133 let satfinite = ();
1134 stream.expect_complete()?;
1135 let saved_pos = stream.position();
1136 let relu = stream.expect_string(".relu").is_ok();
1137 if !relu {
1138 stream.set_position(saved_pos);
1139 }
1140 stream.expect_complete()?;
1141 let f8x2type = F8x2type::parse(stream)?;
1142 stream.expect_complete()?;
1143 stream.expect_string(".f32")?;
1144 let f32 = ();
1145 stream.expect_complete()?;
1146 let d = GeneralOperand::parse(stream)?;
1147 stream.expect_complete()?;
1148 stream.expect(&PtxToken::Comma)?;
1149 let a = GeneralOperand::parse(stream)?;
1150 stream.expect_complete()?;
1151 stream.expect(&PtxToken::Comma)?;
1152 let b = GeneralOperand::parse(stream)?;
1153 stream.expect_complete()?;
1154 stream.expect_complete()?;
1155 stream.expect(&PtxToken::Semicolon)?;
1156 Ok(CvtRnSatfiniteReluF8x2typeF32 {
1157 rn,
1158 satfinite,
1159 relu,
1160 f8x2type,
1161 f32,
1162 d,
1163 a,
1164 b,
1165 })
1166 }
1167 }
1168
1169 impl PtxParser for CvtRnSatfiniteReluF8x2typeF16x2 {
1170 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1171 stream.expect_string("cvt")?;
1172 stream.expect_string(".rn")?;
1173 let rn = ();
1174 stream.expect_complete()?;
1175 stream.expect_string(".satfinite")?;
1176 let satfinite = ();
1177 stream.expect_complete()?;
1178 let saved_pos = stream.position();
1179 let relu = stream.expect_string(".relu").is_ok();
1180 if !relu {
1181 stream.set_position(saved_pos);
1182 }
1183 stream.expect_complete()?;
1184 let f8x2type = F8x2type::parse(stream)?;
1185 stream.expect_complete()?;
1186 stream.expect_string(".f16x2")?;
1187 let f16x2 = ();
1188 stream.expect_complete()?;
1189 let d = GeneralOperand::parse(stream)?;
1190 stream.expect_complete()?;
1191 stream.expect(&PtxToken::Comma)?;
1192 let a = GeneralOperand::parse(stream)?;
1193 stream.expect_complete()?;
1194 stream.expect_complete()?;
1195 stream.expect(&PtxToken::Semicolon)?;
1196 Ok(CvtRnSatfiniteReluF8x2typeF16x2 {
1197 rn,
1198 satfinite,
1199 relu,
1200 f8x2type,
1201 f16x2,
1202 d,
1203 a,
1204 })
1205 }
1206 }
1207
1208 impl PtxParser for CvtRnReluF16x2F8x2type {
1209 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1210 stream.expect_string("cvt")?;
1211 stream.expect_string(".rn")?;
1212 let rn = ();
1213 stream.expect_complete()?;
1214 let saved_pos = stream.position();
1215 let relu = stream.expect_string(".relu").is_ok();
1216 if !relu {
1217 stream.set_position(saved_pos);
1218 }
1219 stream.expect_complete()?;
1220 stream.expect_string(".f16x2")?;
1221 let f16x2 = ();
1222 stream.expect_complete()?;
1223 let f8x2type = F8x2type::parse(stream)?;
1224 stream.expect_complete()?;
1225 let d = GeneralOperand::parse(stream)?;
1226 stream.expect_complete()?;
1227 stream.expect(&PtxToken::Comma)?;
1228 let a = GeneralOperand::parse(stream)?;
1229 stream.expect_complete()?;
1230 stream.expect_complete()?;
1231 stream.expect(&PtxToken::Semicolon)?;
1232 Ok(CvtRnReluF16x2F8x2type {
1233 rn,
1234 relu,
1235 f16x2,
1236 f8x2type,
1237 d,
1238 a,
1239 })
1240 }
1241 }
1242
1243 impl PtxParser for CvtRsReluSatfiniteF8x4typeF32 {
1244 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1245 stream.expect_string("cvt")?;
1246 stream.expect_string(".rs")?;
1247 let rs = ();
1248 stream.expect_complete()?;
1249 let saved_pos = stream.position();
1250 let relu = stream.expect_string(".relu").is_ok();
1251 if !relu {
1252 stream.set_position(saved_pos);
1253 }
1254 stream.expect_complete()?;
1255 stream.expect_string(".satfinite")?;
1256 let satfinite = ();
1257 stream.expect_complete()?;
1258 let f8x4type = F8x4type::parse(stream)?;
1259 stream.expect_complete()?;
1260 stream.expect_string(".f32")?;
1261 let f32 = ();
1262 stream.expect_complete()?;
1263 let d = GeneralOperand::parse(stream)?;
1264 stream.expect_complete()?;
1265 stream.expect(&PtxToken::Comma)?;
1266 let a = VectorOperand::parse(stream)?;
1267 stream.expect_complete()?;
1268 stream.expect(&PtxToken::Comma)?;
1269 let rbits = GeneralOperand::parse(stream)?;
1270 stream.expect_complete()?;
1271 stream.expect_complete()?;
1272 stream.expect(&PtxToken::Semicolon)?;
1273 Ok(CvtRsReluSatfiniteF8x4typeF32 {
1274 rs,
1275 relu,
1276 satfinite,
1277 f8x4type,
1278 f32,
1279 d,
1280 a,
1281 rbits,
1282 })
1283 }
1284 }
1285
1286 impl PtxParser for CvtRnSatfiniteReluF4x2typeF32 {
1287 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1288 stream.expect_string("cvt")?;
1289 stream.expect_string(".rn")?;
1290 let rn = ();
1291 stream.expect_complete()?;
1292 stream.expect_string(".satfinite")?;
1293 let satfinite = ();
1294 stream.expect_complete()?;
1295 let saved_pos = stream.position();
1296 let relu = stream.expect_string(".relu").is_ok();
1297 if !relu {
1298 stream.set_position(saved_pos);
1299 }
1300 stream.expect_complete()?;
1301 let f4x2type = F4x2type::parse(stream)?;
1302 stream.expect_complete()?;
1303 stream.expect_string(".f32")?;
1304 let f32 = ();
1305 stream.expect_complete()?;
1306 let d = GeneralOperand::parse(stream)?;
1307 stream.expect_complete()?;
1308 stream.expect(&PtxToken::Comma)?;
1309 let a = GeneralOperand::parse(stream)?;
1310 stream.expect_complete()?;
1311 stream.expect(&PtxToken::Comma)?;
1312 let b = GeneralOperand::parse(stream)?;
1313 stream.expect_complete()?;
1314 stream.expect_complete()?;
1315 stream.expect(&PtxToken::Semicolon)?;
1316 Ok(CvtRnSatfiniteReluF4x2typeF32 {
1317 rn,
1318 satfinite,
1319 relu,
1320 f4x2type,
1321 f32,
1322 d,
1323 a,
1324 b,
1325 })
1326 }
1327 }
1328
1329 impl PtxParser for CvtRnReluF16x2F4x2type {
1330 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1331 stream.expect_string("cvt")?;
1332 stream.expect_string(".rn")?;
1333 let rn = ();
1334 stream.expect_complete()?;
1335 let saved_pos = stream.position();
1336 let relu = stream.expect_string(".relu").is_ok();
1337 if !relu {
1338 stream.set_position(saved_pos);
1339 }
1340 stream.expect_complete()?;
1341 stream.expect_string(".f16x2")?;
1342 let f16x2 = ();
1343 stream.expect_complete()?;
1344 let f4x2type = F4x2type::parse(stream)?;
1345 stream.expect_complete()?;
1346 let d = GeneralOperand::parse(stream)?;
1347 stream.expect_complete()?;
1348 stream.expect(&PtxToken::Comma)?;
1349 let a = GeneralOperand::parse(stream)?;
1350 stream.expect_complete()?;
1351 stream.expect_complete()?;
1352 stream.expect(&PtxToken::Semicolon)?;
1353 Ok(CvtRnReluF16x2F4x2type {
1354 rn,
1355 relu,
1356 f16x2,
1357 f4x2type,
1358 d,
1359 a,
1360 })
1361 }
1362 }
1363
1364 impl PtxParser for CvtRsReluSatfiniteF4x4typeF32 {
1365 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1366 stream.expect_string("cvt")?;
1367 stream.expect_string(".rs")?;
1368 let rs = ();
1369 stream.expect_complete()?;
1370 let saved_pos = stream.position();
1371 let relu = stream.expect_string(".relu").is_ok();
1372 if !relu {
1373 stream.set_position(saved_pos);
1374 }
1375 stream.expect_complete()?;
1376 stream.expect_string(".satfinite")?;
1377 let satfinite = ();
1378 stream.expect_complete()?;
1379 let f4x4type = F4x4type::parse(stream)?;
1380 stream.expect_complete()?;
1381 stream.expect_string(".f32")?;
1382 let f32 = ();
1383 stream.expect_complete()?;
1384 let d = GeneralOperand::parse(stream)?;
1385 stream.expect_complete()?;
1386 stream.expect(&PtxToken::Comma)?;
1387 let a = VectorOperand::parse(stream)?;
1388 stream.expect_complete()?;
1389 stream.expect(&PtxToken::Comma)?;
1390 let rbits = GeneralOperand::parse(stream)?;
1391 stream.expect_complete()?;
1392 stream.expect_complete()?;
1393 stream.expect(&PtxToken::Semicolon)?;
1394 Ok(CvtRsReluSatfiniteF4x4typeF32 {
1395 rs,
1396 relu,
1397 satfinite,
1398 f4x4type,
1399 f32,
1400 d,
1401 a,
1402 rbits,
1403 })
1404 }
1405 }
1406
1407 impl PtxParser for CvtRnSatfiniteReluF6x2typeF32 {
1408 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1409 stream.expect_string("cvt")?;
1410 stream.expect_string(".rn")?;
1411 let rn = ();
1412 stream.expect_complete()?;
1413 stream.expect_string(".satfinite")?;
1414 let satfinite = ();
1415 stream.expect_complete()?;
1416 let saved_pos = stream.position();
1417 let relu = stream.expect_string(".relu").is_ok();
1418 if !relu {
1419 stream.set_position(saved_pos);
1420 }
1421 stream.expect_complete()?;
1422 let f6x2type = F6x2type::parse(stream)?;
1423 stream.expect_complete()?;
1424 stream.expect_string(".f32")?;
1425 let f32 = ();
1426 stream.expect_complete()?;
1427 let d = GeneralOperand::parse(stream)?;
1428 stream.expect_complete()?;
1429 stream.expect(&PtxToken::Comma)?;
1430 let a = GeneralOperand::parse(stream)?;
1431 stream.expect_complete()?;
1432 stream.expect(&PtxToken::Comma)?;
1433 let b = GeneralOperand::parse(stream)?;
1434 stream.expect_complete()?;
1435 stream.expect_complete()?;
1436 stream.expect(&PtxToken::Semicolon)?;
1437 Ok(CvtRnSatfiniteReluF6x2typeF32 {
1438 rn,
1439 satfinite,
1440 relu,
1441 f6x2type,
1442 f32,
1443 d,
1444 a,
1445 b,
1446 })
1447 }
1448 }
1449
1450 impl PtxParser for CvtRnReluF16x2F6x2type {
1451 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1452 stream.expect_string("cvt")?;
1453 stream.expect_string(".rn")?;
1454 let rn = ();
1455 stream.expect_complete()?;
1456 let saved_pos = stream.position();
1457 let relu = stream.expect_string(".relu").is_ok();
1458 if !relu {
1459 stream.set_position(saved_pos);
1460 }
1461 stream.expect_complete()?;
1462 stream.expect_string(".f16x2")?;
1463 let f16x2 = ();
1464 stream.expect_complete()?;
1465 let f6x2type = F6x2type::parse(stream)?;
1466 stream.expect_complete()?;
1467 let d = GeneralOperand::parse(stream)?;
1468 stream.expect_complete()?;
1469 stream.expect(&PtxToken::Comma)?;
1470 let a = GeneralOperand::parse(stream)?;
1471 stream.expect_complete()?;
1472 stream.expect_complete()?;
1473 stream.expect(&PtxToken::Semicolon)?;
1474 Ok(CvtRnReluF16x2F6x2type {
1475 rn,
1476 relu,
1477 f16x2,
1478 f6x2type,
1479 d,
1480 a,
1481 })
1482 }
1483 }
1484
1485 impl PtxParser for CvtRsReluSatfiniteF6x4typeF32 {
1486 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1487 stream.expect_string("cvt")?;
1488 stream.expect_string(".rs")?;
1489 let rs = ();
1490 stream.expect_complete()?;
1491 let saved_pos = stream.position();
1492 let relu = stream.expect_string(".relu").is_ok();
1493 if !relu {
1494 stream.set_position(saved_pos);
1495 }
1496 stream.expect_complete()?;
1497 stream.expect_string(".satfinite")?;
1498 let satfinite = ();
1499 stream.expect_complete()?;
1500 let f6x4type = F6x4type::parse(stream)?;
1501 stream.expect_complete()?;
1502 stream.expect_string(".f32")?;
1503 let f32 = ();
1504 stream.expect_complete()?;
1505 let d = GeneralOperand::parse(stream)?;
1506 stream.expect_complete()?;
1507 stream.expect(&PtxToken::Comma)?;
1508 let a = VectorOperand::parse(stream)?;
1509 stream.expect_complete()?;
1510 stream.expect(&PtxToken::Comma)?;
1511 let rbits = GeneralOperand::parse(stream)?;
1512 stream.expect_complete()?;
1513 stream.expect_complete()?;
1514 stream.expect(&PtxToken::Semicolon)?;
1515 Ok(CvtRsReluSatfiniteF6x4typeF32 {
1516 rs,
1517 relu,
1518 satfinite,
1519 f6x4type,
1520 f32,
1521 d,
1522 a,
1523 rbits,
1524 })
1525 }
1526 }
1527
1528 impl PtxParser for CvtFrnd3SatfiniteUe8m0x2F32 {
1529 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1530 stream.expect_string("cvt")?;
1531 let frnd3 = Frnd3::parse(stream)?;
1532 stream.expect_complete()?;
1533 let saved_pos = stream.position();
1534 let satfinite = stream.expect_string(".satfinite").is_ok();
1535 if !satfinite {
1536 stream.set_position(saved_pos);
1537 }
1538 stream.expect_complete()?;
1539 stream.expect_string(".ue8m0x2")?;
1540 let ue8m0x2 = ();
1541 stream.expect_complete()?;
1542 stream.expect_string(".f32")?;
1543 let f32 = ();
1544 stream.expect_complete()?;
1545 let d = GeneralOperand::parse(stream)?;
1546 stream.expect_complete()?;
1547 stream.expect(&PtxToken::Comma)?;
1548 let a = GeneralOperand::parse(stream)?;
1549 stream.expect_complete()?;
1550 stream.expect(&PtxToken::Comma)?;
1551 let b = GeneralOperand::parse(stream)?;
1552 stream.expect_complete()?;
1553 stream.expect_complete()?;
1554 stream.expect(&PtxToken::Semicolon)?;
1555 Ok(CvtFrnd3SatfiniteUe8m0x2F32 {
1556 frnd3,
1557 satfinite,
1558 ue8m0x2,
1559 f32,
1560 d,
1561 a,
1562 b,
1563 })
1564 }
1565 }
1566
1567 impl PtxParser for CvtFrnd3SatfiniteUe8m0x2Bf16x2 {
1568 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1569 stream.expect_string("cvt")?;
1570 let frnd3 = Frnd3::parse(stream)?;
1571 stream.expect_complete()?;
1572 let saved_pos = stream.position();
1573 let satfinite = stream.expect_string(".satfinite").is_ok();
1574 if !satfinite {
1575 stream.set_position(saved_pos);
1576 }
1577 stream.expect_complete()?;
1578 stream.expect_string(".ue8m0x2")?;
1579 let ue8m0x2 = ();
1580 stream.expect_complete()?;
1581 stream.expect_string(".bf16x2")?;
1582 let bf16x2 = ();
1583 stream.expect_complete()?;
1584 let d = GeneralOperand::parse(stream)?;
1585 stream.expect_complete()?;
1586 stream.expect(&PtxToken::Comma)?;
1587 let a = GeneralOperand::parse(stream)?;
1588 stream.expect_complete()?;
1589 stream.expect_complete()?;
1590 stream.expect(&PtxToken::Semicolon)?;
1591 Ok(CvtFrnd3SatfiniteUe8m0x2Bf16x2 {
1592 frnd3,
1593 satfinite,
1594 ue8m0x2,
1595 bf16x2,
1596 d,
1597 a,
1598 })
1599 }
1600 }
1601
1602 impl PtxParser for CvtRnBf16x2Ue8m0x2 {
1603 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1604 stream.expect_string("cvt")?;
1605 stream.expect_string(".rn")?;
1606 let rn = ();
1607 stream.expect_complete()?;
1608 stream.expect_string(".bf16x2")?;
1609 let bf16x2 = ();
1610 stream.expect_complete()?;
1611 stream.expect_string(".ue8m0x2")?;
1612 let ue8m0x2 = ();
1613 stream.expect_complete()?;
1614 let d = GeneralOperand::parse(stream)?;
1615 stream.expect_complete()?;
1616 stream.expect(&PtxToken::Comma)?;
1617 let a = GeneralOperand::parse(stream)?;
1618 stream.expect_complete()?;
1619 stream.expect_complete()?;
1620 stream.expect(&PtxToken::Semicolon)?;
1621 Ok(CvtRnBf16x2Ue8m0x2 {
1622 rn,
1623 bf16x2,
1624 ue8m0x2,
1625 d,
1626 a,
1627 })
1628 }
1629 }
1630}