ptx_parser/parser/instruction/
vset4.rs1#![allow(unused)]
27
28use crate::lexer::PtxToken;
29use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
30use crate::r#type::common::*;
31
32pub mod section_0 {
33 use super::*;
34 use crate::r#type::instruction::vset4::section_0::*;
35
36 impl PtxParser for Atype {
41 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
42 {
44 let saved_pos = stream.position();
45 if stream.expect_string(".u32").is_ok() {
46 return Ok(Atype::U32);
47 }
48 stream.set_position(saved_pos);
49 }
50 let saved_pos = stream.position();
51 {
53 let saved_pos = stream.position();
54 if stream.expect_string(".s32").is_ok() {
55 return Ok(Atype::S32);
56 }
57 stream.set_position(saved_pos);
58 }
59 stream.set_position(saved_pos);
60 let span = stream
61 .peek()
62 .map(|(_, s)| s.clone())
63 .unwrap_or(Span { start: 0, end: 0 });
64 let expected = &[".u32", ".s32"];
65 let found = stream
66 .peek()
67 .map(|(t, _)| format!("{:?}", t))
68 .unwrap_or_else(|_| "<end of input>".to_string());
69 Err(crate::parser::unexpected_value(span, expected, found))
70 }
71 }
72
73 impl PtxParser for Bsel {
74 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
75 {
77 let saved_pos = stream.position();
78 if stream.expect_string(".b00").is_ok() {
79 return Ok(Bsel::B00);
80 }
81 stream.set_position(saved_pos);
82 }
83 let saved_pos = stream.position();
84 {
86 let saved_pos = stream.position();
87 if stream.expect_string(".b01").is_ok() {
88 return Ok(Bsel::B01);
89 }
90 stream.set_position(saved_pos);
91 }
92 stream.set_position(saved_pos);
93 let saved_pos = stream.position();
94 {
96 let saved_pos = stream.position();
97 if stream.expect_string(".b02").is_ok() {
98 return Ok(Bsel::B02);
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(".b03").is_ok() {
108 return Ok(Bsel::B03);
109 }
110 stream.set_position(saved_pos);
111 }
112 stream.set_position(saved_pos);
113 let saved_pos = stream.position();
114 {
116 let saved_pos = stream.position();
117 if stream.expect_string(".b04").is_ok() {
118 return Ok(Bsel::B04);
119 }
120 stream.set_position(saved_pos);
121 }
122 stream.set_position(saved_pos);
123 let saved_pos = stream.position();
124 {
126 let saved_pos = stream.position();
127 if stream.expect_string(".b05").is_ok() {
128 return Ok(Bsel::B05);
129 }
130 stream.set_position(saved_pos);
131 }
132 stream.set_position(saved_pos);
133 let saved_pos = stream.position();
134 {
136 let saved_pos = stream.position();
137 if stream.expect_string(".b06").is_ok() {
138 return Ok(Bsel::B06);
139 }
140 stream.set_position(saved_pos);
141 }
142 stream.set_position(saved_pos);
143 let saved_pos = stream.position();
144 {
146 let saved_pos = stream.position();
147 if stream.expect_string(".b07").is_ok() {
148 return Ok(Bsel::B07);
149 }
150 stream.set_position(saved_pos);
151 }
152 stream.set_position(saved_pos);
153 let saved_pos = stream.position();
154 {
156 let saved_pos = stream.position();
157 if stream.expect_string(".b10").is_ok() {
158 return Ok(Bsel::B10);
159 }
160 stream.set_position(saved_pos);
161 }
162 stream.set_position(saved_pos);
163 let saved_pos = stream.position();
164 {
166 let saved_pos = stream.position();
167 if stream.expect_string(".b11").is_ok() {
168 return Ok(Bsel::B11);
169 }
170 stream.set_position(saved_pos);
171 }
172 stream.set_position(saved_pos);
173 let saved_pos = stream.position();
174 {
176 let saved_pos = stream.position();
177 if stream.expect_string(".b12").is_ok() {
178 return Ok(Bsel::B12);
179 }
180 stream.set_position(saved_pos);
181 }
182 stream.set_position(saved_pos);
183 let saved_pos = stream.position();
184 {
186 let saved_pos = stream.position();
187 if stream.expect_string(".b13").is_ok() {
188 return Ok(Bsel::B13);
189 }
190 stream.set_position(saved_pos);
191 }
192 stream.set_position(saved_pos);
193 let saved_pos = stream.position();
194 {
196 let saved_pos = stream.position();
197 if stream.expect_string(".b14").is_ok() {
198 return Ok(Bsel::B14);
199 }
200 stream.set_position(saved_pos);
201 }
202 stream.set_position(saved_pos);
203 let saved_pos = stream.position();
204 {
206 let saved_pos = stream.position();
207 if stream.expect_string(".b15").is_ok() {
208 return Ok(Bsel::B15);
209 }
210 stream.set_position(saved_pos);
211 }
212 stream.set_position(saved_pos);
213 let saved_pos = stream.position();
214 {
216 let saved_pos = stream.position();
217 if stream.expect_string(".b16").is_ok() {
218 return Ok(Bsel::B16);
219 }
220 stream.set_position(saved_pos);
221 }
222 stream.set_position(saved_pos);
223 let saved_pos = stream.position();
224 {
226 let saved_pos = stream.position();
227 if stream.expect_string(".b17").is_ok() {
228 return Ok(Bsel::B17);
229 }
230 stream.set_position(saved_pos);
231 }
232 stream.set_position(saved_pos);
233 let saved_pos = stream.position();
234 {
236 let saved_pos = stream.position();
237 if stream.expect_string(".b20").is_ok() {
238 return Ok(Bsel::B20);
239 }
240 stream.set_position(saved_pos);
241 }
242 stream.set_position(saved_pos);
243 let saved_pos = stream.position();
244 {
246 let saved_pos = stream.position();
247 if stream.expect_string(".b21").is_ok() {
248 return Ok(Bsel::B21);
249 }
250 stream.set_position(saved_pos);
251 }
252 stream.set_position(saved_pos);
253 let saved_pos = stream.position();
254 {
256 let saved_pos = stream.position();
257 if stream.expect_string(".b22").is_ok() {
258 return Ok(Bsel::B22);
259 }
260 stream.set_position(saved_pos);
261 }
262 stream.set_position(saved_pos);
263 let saved_pos = stream.position();
264 {
266 let saved_pos = stream.position();
267 if stream.expect_string(".b23").is_ok() {
268 return Ok(Bsel::B23);
269 }
270 stream.set_position(saved_pos);
271 }
272 stream.set_position(saved_pos);
273 let saved_pos = stream.position();
274 {
276 let saved_pos = stream.position();
277 if stream.expect_string(".b24").is_ok() {
278 return Ok(Bsel::B24);
279 }
280 stream.set_position(saved_pos);
281 }
282 stream.set_position(saved_pos);
283 let saved_pos = stream.position();
284 {
286 let saved_pos = stream.position();
287 if stream.expect_string(".b25").is_ok() {
288 return Ok(Bsel::B25);
289 }
290 stream.set_position(saved_pos);
291 }
292 stream.set_position(saved_pos);
293 let saved_pos = stream.position();
294 {
296 let saved_pos = stream.position();
297 if stream.expect_string(".b26").is_ok() {
298 return Ok(Bsel::B26);
299 }
300 stream.set_position(saved_pos);
301 }
302 stream.set_position(saved_pos);
303 let saved_pos = stream.position();
304 {
306 let saved_pos = stream.position();
307 if stream.expect_string(".b27").is_ok() {
308 return Ok(Bsel::B27);
309 }
310 stream.set_position(saved_pos);
311 }
312 stream.set_position(saved_pos);
313 let saved_pos = stream.position();
314 {
316 let saved_pos = stream.position();
317 if stream.expect_string(".b30").is_ok() {
318 return Ok(Bsel::B30);
319 }
320 stream.set_position(saved_pos);
321 }
322 stream.set_position(saved_pos);
323 let saved_pos = stream.position();
324 {
326 let saved_pos = stream.position();
327 if stream.expect_string(".b31").is_ok() {
328 return Ok(Bsel::B31);
329 }
330 stream.set_position(saved_pos);
331 }
332 stream.set_position(saved_pos);
333 let saved_pos = stream.position();
334 {
336 let saved_pos = stream.position();
337 if stream.expect_string(".b32").is_ok() {
338 return Ok(Bsel::B32);
339 }
340 stream.set_position(saved_pos);
341 }
342 stream.set_position(saved_pos);
343 let saved_pos = stream.position();
344 {
346 let saved_pos = stream.position();
347 if stream.expect_string(".b33").is_ok() {
348 return Ok(Bsel::B33);
349 }
350 stream.set_position(saved_pos);
351 }
352 stream.set_position(saved_pos);
353 let saved_pos = stream.position();
354 {
356 let saved_pos = stream.position();
357 if stream.expect_string(".b34").is_ok() {
358 return Ok(Bsel::B34);
359 }
360 stream.set_position(saved_pos);
361 }
362 stream.set_position(saved_pos);
363 let saved_pos = stream.position();
364 {
366 let saved_pos = stream.position();
367 if stream.expect_string(".b35").is_ok() {
368 return Ok(Bsel::B35);
369 }
370 stream.set_position(saved_pos);
371 }
372 stream.set_position(saved_pos);
373 let saved_pos = stream.position();
374 {
376 let saved_pos = stream.position();
377 if stream.expect_string(".b36").is_ok() {
378 return Ok(Bsel::B36);
379 }
380 stream.set_position(saved_pos);
381 }
382 stream.set_position(saved_pos);
383 let saved_pos = stream.position();
384 {
386 let saved_pos = stream.position();
387 if stream.expect_string(".b37").is_ok() {
388 return Ok(Bsel::B37);
389 }
390 stream.set_position(saved_pos);
391 }
392 stream.set_position(saved_pos);
393 let saved_pos = stream.position();
394 {
396 let saved_pos = stream.position();
397 if stream.expect_string(".b40").is_ok() {
398 return Ok(Bsel::B40);
399 }
400 stream.set_position(saved_pos);
401 }
402 stream.set_position(saved_pos);
403 let saved_pos = stream.position();
404 {
406 let saved_pos = stream.position();
407 if stream.expect_string(".b41").is_ok() {
408 return Ok(Bsel::B41);
409 }
410 stream.set_position(saved_pos);
411 }
412 stream.set_position(saved_pos);
413 let saved_pos = stream.position();
414 {
416 let saved_pos = stream.position();
417 if stream.expect_string(".b42").is_ok() {
418 return Ok(Bsel::B42);
419 }
420 stream.set_position(saved_pos);
421 }
422 stream.set_position(saved_pos);
423 let saved_pos = stream.position();
424 {
426 let saved_pos = stream.position();
427 if stream.expect_string(".b43").is_ok() {
428 return Ok(Bsel::B43);
429 }
430 stream.set_position(saved_pos);
431 }
432 stream.set_position(saved_pos);
433 let saved_pos = stream.position();
434 {
436 let saved_pos = stream.position();
437 if stream.expect_string(".b44").is_ok() {
438 return Ok(Bsel::B44);
439 }
440 stream.set_position(saved_pos);
441 }
442 stream.set_position(saved_pos);
443 let saved_pos = stream.position();
444 {
446 let saved_pos = stream.position();
447 if stream.expect_string(".b45").is_ok() {
448 return Ok(Bsel::B45);
449 }
450 stream.set_position(saved_pos);
451 }
452 stream.set_position(saved_pos);
453 let saved_pos = stream.position();
454 {
456 let saved_pos = stream.position();
457 if stream.expect_string(".b46").is_ok() {
458 return Ok(Bsel::B46);
459 }
460 stream.set_position(saved_pos);
461 }
462 stream.set_position(saved_pos);
463 let saved_pos = stream.position();
464 {
466 let saved_pos = stream.position();
467 if stream.expect_string(".b47").is_ok() {
468 return Ok(Bsel::B47);
469 }
470 stream.set_position(saved_pos);
471 }
472 stream.set_position(saved_pos);
473 let saved_pos = stream.position();
474 {
476 let saved_pos = stream.position();
477 if stream.expect_string(".b50").is_ok() {
478 return Ok(Bsel::B50);
479 }
480 stream.set_position(saved_pos);
481 }
482 stream.set_position(saved_pos);
483 let saved_pos = stream.position();
484 {
486 let saved_pos = stream.position();
487 if stream.expect_string(".b51").is_ok() {
488 return Ok(Bsel::B51);
489 }
490 stream.set_position(saved_pos);
491 }
492 stream.set_position(saved_pos);
493 let saved_pos = stream.position();
494 {
496 let saved_pos = stream.position();
497 if stream.expect_string(".b52").is_ok() {
498 return Ok(Bsel::B52);
499 }
500 stream.set_position(saved_pos);
501 }
502 stream.set_position(saved_pos);
503 let saved_pos = stream.position();
504 {
506 let saved_pos = stream.position();
507 if stream.expect_string(".b53").is_ok() {
508 return Ok(Bsel::B53);
509 }
510 stream.set_position(saved_pos);
511 }
512 stream.set_position(saved_pos);
513 let saved_pos = stream.position();
514 {
516 let saved_pos = stream.position();
517 if stream.expect_string(".b54").is_ok() {
518 return Ok(Bsel::B54);
519 }
520 stream.set_position(saved_pos);
521 }
522 stream.set_position(saved_pos);
523 let saved_pos = stream.position();
524 {
526 let saved_pos = stream.position();
527 if stream.expect_string(".b55").is_ok() {
528 return Ok(Bsel::B55);
529 }
530 stream.set_position(saved_pos);
531 }
532 stream.set_position(saved_pos);
533 let saved_pos = stream.position();
534 {
536 let saved_pos = stream.position();
537 if stream.expect_string(".b56").is_ok() {
538 return Ok(Bsel::B56);
539 }
540 stream.set_position(saved_pos);
541 }
542 stream.set_position(saved_pos);
543 let saved_pos = stream.position();
544 {
546 let saved_pos = stream.position();
547 if stream.expect_string(".b57").is_ok() {
548 return Ok(Bsel::B57);
549 }
550 stream.set_position(saved_pos);
551 }
552 stream.set_position(saved_pos);
553 let saved_pos = stream.position();
554 {
556 let saved_pos = stream.position();
557 if stream.expect_string(".b60").is_ok() {
558 return Ok(Bsel::B60);
559 }
560 stream.set_position(saved_pos);
561 }
562 stream.set_position(saved_pos);
563 let saved_pos = stream.position();
564 {
566 let saved_pos = stream.position();
567 if stream.expect_string(".b61").is_ok() {
568 return Ok(Bsel::B61);
569 }
570 stream.set_position(saved_pos);
571 }
572 stream.set_position(saved_pos);
573 let saved_pos = stream.position();
574 {
576 let saved_pos = stream.position();
577 if stream.expect_string(".b62").is_ok() {
578 return Ok(Bsel::B62);
579 }
580 stream.set_position(saved_pos);
581 }
582 stream.set_position(saved_pos);
583 let saved_pos = stream.position();
584 {
586 let saved_pos = stream.position();
587 if stream.expect_string(".b63").is_ok() {
588 return Ok(Bsel::B63);
589 }
590 stream.set_position(saved_pos);
591 }
592 stream.set_position(saved_pos);
593 let saved_pos = stream.position();
594 {
596 let saved_pos = stream.position();
597 if stream.expect_string(".b64").is_ok() {
598 return Ok(Bsel::B64);
599 }
600 stream.set_position(saved_pos);
601 }
602 stream.set_position(saved_pos);
603 let saved_pos = stream.position();
604 {
606 let saved_pos = stream.position();
607 if stream.expect_string(".b65").is_ok() {
608 return Ok(Bsel::B65);
609 }
610 stream.set_position(saved_pos);
611 }
612 stream.set_position(saved_pos);
613 let saved_pos = stream.position();
614 {
616 let saved_pos = stream.position();
617 if stream.expect_string(".b66").is_ok() {
618 return Ok(Bsel::B66);
619 }
620 stream.set_position(saved_pos);
621 }
622 stream.set_position(saved_pos);
623 let saved_pos = stream.position();
624 {
626 let saved_pos = stream.position();
627 if stream.expect_string(".b67").is_ok() {
628 return Ok(Bsel::B67);
629 }
630 stream.set_position(saved_pos);
631 }
632 stream.set_position(saved_pos);
633 let saved_pos = stream.position();
634 {
636 let saved_pos = stream.position();
637 if stream.expect_string(".b70").is_ok() {
638 return Ok(Bsel::B70);
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(".b71").is_ok() {
648 return Ok(Bsel::B71);
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(".b72").is_ok() {
658 return Ok(Bsel::B72);
659 }
660 stream.set_position(saved_pos);
661 }
662 stream.set_position(saved_pos);
663 let saved_pos = stream.position();
664 {
666 let saved_pos = stream.position();
667 if stream.expect_string(".b73").is_ok() {
668 return Ok(Bsel::B73);
669 }
670 stream.set_position(saved_pos);
671 }
672 stream.set_position(saved_pos);
673 let saved_pos = stream.position();
674 {
676 let saved_pos = stream.position();
677 if stream.expect_string(".b74").is_ok() {
678 return Ok(Bsel::B74);
679 }
680 stream.set_position(saved_pos);
681 }
682 stream.set_position(saved_pos);
683 let saved_pos = stream.position();
684 {
686 let saved_pos = stream.position();
687 if stream.expect_string(".b75").is_ok() {
688 return Ok(Bsel::B75);
689 }
690 stream.set_position(saved_pos);
691 }
692 stream.set_position(saved_pos);
693 let saved_pos = stream.position();
694 {
696 let saved_pos = stream.position();
697 if stream.expect_string(".b76").is_ok() {
698 return Ok(Bsel::B76);
699 }
700 stream.set_position(saved_pos);
701 }
702 stream.set_position(saved_pos);
703 let saved_pos = stream.position();
704 {
706 let saved_pos = stream.position();
707 if stream.expect_string(".b77").is_ok() {
708 return Ok(Bsel::B77);
709 }
710 stream.set_position(saved_pos);
711 }
712 stream.set_position(saved_pos);
713 let span = stream
714 .peek()
715 .map(|(_, s)| s.clone())
716 .unwrap_or(Span { start: 0, end: 0 });
717 let expected = &[
718 ".b00", ".b01", ".b02", ".b03", ".b04", ".b05", ".b06", ".b07", ".b10", ".b11",
719 ".b12", ".b13", ".b14", ".b15", ".b16", ".b17", ".b20", ".b21", ".b22", ".b23",
720 ".b24", ".b25", ".b26", ".b27", ".b30", ".b31", ".b32", ".b33", ".b34", ".b35",
721 ".b36", ".b37", ".b40", ".b41", ".b42", ".b43", ".b44", ".b45", ".b46", ".b47",
722 ".b50", ".b51", ".b52", ".b53", ".b54", ".b55", ".b56", ".b57", ".b60", ".b61",
723 ".b62", ".b63", ".b64", ".b65", ".b66", ".b67", ".b70", ".b71", ".b72", ".b73",
724 ".b74", ".b75", ".b76", ".b77",
725 ];
726 let found = stream
727 .peek()
728 .map(|(t, _)| format!("{:?}", t))
729 .unwrap_or_else(|_| "<end of input>".to_string());
730 Err(crate::parser::unexpected_value(span, expected, found))
731 }
732 }
733
734 impl PtxParser for Btype {
735 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
736 {
738 let saved_pos = stream.position();
739 if stream.expect_string(".u32").is_ok() {
740 return Ok(Btype::U32);
741 }
742 stream.set_position(saved_pos);
743 }
744 let saved_pos = stream.position();
745 {
747 let saved_pos = stream.position();
748 if stream.expect_string(".s32").is_ok() {
749 return Ok(Btype::S32);
750 }
751 stream.set_position(saved_pos);
752 }
753 stream.set_position(saved_pos);
754 let span = stream
755 .peek()
756 .map(|(_, s)| s.clone())
757 .unwrap_or(Span { start: 0, end: 0 });
758 let expected = &[".u32", ".s32"];
759 let found = stream
760 .peek()
761 .map(|(t, _)| format!("{:?}", t))
762 .unwrap_or_else(|_| "<end of input>".to_string());
763 Err(crate::parser::unexpected_value(span, expected, found))
764 }
765 }
766
767 impl PtxParser for Cmp {
768 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
769 {
771 let saved_pos = stream.position();
772 if stream.expect_string(".eq").is_ok() {
773 return Ok(Cmp::Eq);
774 }
775 stream.set_position(saved_pos);
776 }
777 let saved_pos = stream.position();
778 {
780 let saved_pos = stream.position();
781 if stream.expect_string(".ne").is_ok() {
782 return Ok(Cmp::Ne);
783 }
784 stream.set_position(saved_pos);
785 }
786 stream.set_position(saved_pos);
787 let saved_pos = stream.position();
788 {
790 let saved_pos = stream.position();
791 if stream.expect_string(".lt").is_ok() {
792 return Ok(Cmp::Lt);
793 }
794 stream.set_position(saved_pos);
795 }
796 stream.set_position(saved_pos);
797 let saved_pos = stream.position();
798 {
800 let saved_pos = stream.position();
801 if stream.expect_string(".le").is_ok() {
802 return Ok(Cmp::Le);
803 }
804 stream.set_position(saved_pos);
805 }
806 stream.set_position(saved_pos);
807 let saved_pos = stream.position();
808 {
810 let saved_pos = stream.position();
811 if stream.expect_string(".gt").is_ok() {
812 return Ok(Cmp::Gt);
813 }
814 stream.set_position(saved_pos);
815 }
816 stream.set_position(saved_pos);
817 let saved_pos = stream.position();
818 {
820 let saved_pos = stream.position();
821 if stream.expect_string(".ge").is_ok() {
822 return Ok(Cmp::Ge);
823 }
824 stream.set_position(saved_pos);
825 }
826 stream.set_position(saved_pos);
827 let span = stream
828 .peek()
829 .map(|(_, s)| s.clone())
830 .unwrap_or(Span { start: 0, end: 0 });
831 let expected = &[".eq", ".ne", ".lt", ".le", ".gt", ".ge"];
832 let found = stream
833 .peek()
834 .map(|(t, _)| format!("{:?}", t))
835 .unwrap_or_else(|_| "<end of input>".to_string());
836 Err(crate::parser::unexpected_value(span, expected, found))
837 }
838 }
839
840 impl PtxParser for Mask {
841 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
842 {
844 let saved_pos = stream.position();
845 if stream.expect_string(".b10.b2").is_ok() {
846 return Ok(Mask::B10B2);
847 }
848 stream.set_position(saved_pos);
849 }
850 let saved_pos = stream.position();
851 {
853 let saved_pos = stream.position();
854 if stream.expect_string(".b3210").is_ok() {
855 return Ok(Mask::B3210);
856 }
857 stream.set_position(saved_pos);
858 }
859 stream.set_position(saved_pos);
860 let saved_pos = stream.position();
861 {
863 let saved_pos = stream.position();
864 if stream.expect_string(".b210").is_ok() {
865 return Ok(Mask::B210);
866 }
867 stream.set_position(saved_pos);
868 }
869 stream.set_position(saved_pos);
870 let saved_pos = stream.position();
871 {
873 let saved_pos = stream.position();
874 if stream.expect_string(".b310").is_ok() {
875 return Ok(Mask::B310);
876 }
877 stream.set_position(saved_pos);
878 }
879 stream.set_position(saved_pos);
880 let saved_pos = stream.position();
881 {
883 let saved_pos = stream.position();
884 if stream.expect_string(".b320").is_ok() {
885 return Ok(Mask::B320);
886 }
887 stream.set_position(saved_pos);
888 }
889 stream.set_position(saved_pos);
890 let saved_pos = stream.position();
891 {
893 let saved_pos = stream.position();
894 if stream.expect_string(".b321").is_ok() {
895 return Ok(Mask::B321);
896 }
897 stream.set_position(saved_pos);
898 }
899 stream.set_position(saved_pos);
900 let saved_pos = stream.position();
901 {
903 let saved_pos = stream.position();
904 if stream.expect_string(".b20").is_ok() {
905 return Ok(Mask::B20);
906 }
907 stream.set_position(saved_pos);
908 }
909 stream.set_position(saved_pos);
910 let saved_pos = stream.position();
911 {
913 let saved_pos = stream.position();
914 if stream.expect_string(".b21").is_ok() {
915 return Ok(Mask::B21);
916 }
917 stream.set_position(saved_pos);
918 }
919 stream.set_position(saved_pos);
920 let saved_pos = stream.position();
921 {
923 let saved_pos = stream.position();
924 if stream.expect_string(".b30").is_ok() {
925 return Ok(Mask::B30);
926 }
927 stream.set_position(saved_pos);
928 }
929 stream.set_position(saved_pos);
930 let saved_pos = stream.position();
931 {
933 let saved_pos = stream.position();
934 if stream.expect_string(".b31").is_ok() {
935 return Ok(Mask::B31);
936 }
937 stream.set_position(saved_pos);
938 }
939 stream.set_position(saved_pos);
940 let saved_pos = stream.position();
941 {
943 let saved_pos = stream.position();
944 if stream.expect_string(".b32").is_ok() {
945 return Ok(Mask::B32);
946 }
947 stream.set_position(saved_pos);
948 }
949 stream.set_position(saved_pos);
950 let saved_pos = stream.position();
951 {
953 let saved_pos = stream.position();
954 if stream.expect_string(".b0").is_ok() {
955 return Ok(Mask::B0);
956 }
957 stream.set_position(saved_pos);
958 }
959 stream.set_position(saved_pos);
960 let saved_pos = stream.position();
961 {
963 let saved_pos = stream.position();
964 if stream.expect_string(".b1").is_ok() {
965 return Ok(Mask::B1);
966 }
967 stream.set_position(saved_pos);
968 }
969 stream.set_position(saved_pos);
970 let saved_pos = stream.position();
971 {
973 let saved_pos = stream.position();
974 if stream.expect_string(".b3").is_ok() {
975 return Ok(Mask::B3);
976 }
977 stream.set_position(saved_pos);
978 }
979 stream.set_position(saved_pos);
980 let span = stream
981 .peek()
982 .map(|(_, s)| s.clone())
983 .unwrap_or(Span { start: 0, end: 0 });
984 let expected = &[
985 ".b10.b2", ".b3210", ".b210", ".b310", ".b320", ".b321", ".b20", ".b21", ".b30",
986 ".b31", ".b32", ".b0", ".b1", ".b3",
987 ];
988 let found = stream
989 .peek()
990 .map(|(t, _)| format!("{:?}", t))
991 .unwrap_or_else(|_| "<end of input>".to_string());
992 Err(crate::parser::unexpected_value(span, expected, found))
993 }
994 }
995
996 impl PtxParser for Vset4AtypeBtypeCmp {
997 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
998 stream.expect_string("vset4")?;
999 let atype = Atype::parse(stream)?;
1000 stream.expect_complete()?;
1001 let btype = Btype::parse(stream)?;
1002 stream.expect_complete()?;
1003 let cmp = Cmp::parse(stream)?;
1004 stream.expect_complete()?;
1005 let d = GeneralOperand::parse(stream)?;
1006 let saved_pos = stream.position();
1007 let mask = match Mask::parse(stream) {
1008 Ok(val) => Some(val),
1009 Err(_) => {
1010 stream.set_position(saved_pos);
1011 None
1012 }
1013 };
1014 stream.expect_complete()?;
1015 stream.expect(&PtxToken::Comma)?;
1016 let a = GeneralOperand::parse(stream)?;
1017 let saved_pos = stream.position();
1018 let asel = stream.expect_string(".asel").is_ok();
1019 if !asel {
1020 stream.set_position(saved_pos);
1021 }
1022 stream.expect_complete()?;
1023 stream.expect(&PtxToken::Comma)?;
1024 let b = GeneralOperand::parse(stream)?;
1025 let saved_pos = stream.position();
1026 let bsel = match Bsel::parse(stream) {
1027 Ok(val) => Some(val),
1028 Err(_) => {
1029 stream.set_position(saved_pos);
1030 None
1031 }
1032 };
1033 stream.expect_complete()?;
1034 stream.expect(&PtxToken::Comma)?;
1035 let c = GeneralOperand::parse(stream)?;
1036 stream.expect_complete()?;
1037 stream.expect_complete()?;
1038 stream.expect(&PtxToken::Semicolon)?;
1039 Ok(Vset4AtypeBtypeCmp {
1040 atype,
1041 btype,
1042 cmp,
1043 d,
1044 mask,
1045 a,
1046 asel,
1047 b,
1048 bsel,
1049 c,
1050 })
1051 }
1052 }
1053
1054 impl PtxParser for Vset4AtypeBtypeCmpAdd {
1055 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
1056 stream.expect_string("vset4")?;
1057 let atype = Atype::parse(stream)?;
1058 stream.expect_complete()?;
1059 let btype = Btype::parse(stream)?;
1060 stream.expect_complete()?;
1061 let cmp = Cmp::parse(stream)?;
1062 stream.expect_complete()?;
1063 stream.expect_string(".add")?;
1064 let add = ();
1065 stream.expect_complete()?;
1066 let d = GeneralOperand::parse(stream)?;
1067 let saved_pos = stream.position();
1068 let mask = match Mask::parse(stream) {
1069 Ok(val) => Some(val),
1070 Err(_) => {
1071 stream.set_position(saved_pos);
1072 None
1073 }
1074 };
1075 stream.expect_complete()?;
1076 stream.expect(&PtxToken::Comma)?;
1077 let a = GeneralOperand::parse(stream)?;
1078 let saved_pos = stream.position();
1079 let asel = stream.expect_string(".asel").is_ok();
1080 if !asel {
1081 stream.set_position(saved_pos);
1082 }
1083 stream.expect_complete()?;
1084 stream.expect(&PtxToken::Comma)?;
1085 let b = GeneralOperand::parse(stream)?;
1086 let saved_pos = stream.position();
1087 let bsel = match Bsel::parse(stream) {
1088 Ok(val) => Some(val),
1089 Err(_) => {
1090 stream.set_position(saved_pos);
1091 None
1092 }
1093 };
1094 stream.expect_complete()?;
1095 stream.expect(&PtxToken::Comma)?;
1096 let c = GeneralOperand::parse(stream)?;
1097 stream.expect_complete()?;
1098 stream.expect_complete()?;
1099 stream.expect(&PtxToken::Semicolon)?;
1100 Ok(Vset4AtypeBtypeCmpAdd {
1101 atype,
1102 btype,
1103 cmp,
1104 add,
1105 d,
1106 mask,
1107 a,
1108 asel,
1109 b,
1110 bsel,
1111 c,
1112 })
1113 }
1114 }
1115}