1#![allow(unused)]
21
22use crate::lexer::PtxToken;
23use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
24use crate::r#type::common::*;
25
26pub mod section_0 {
27 use super::*;
28 use crate::r#type::instruction::setp::section_0::*;
29
30 impl PtxParser for Boolop {
35 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
36 {
38 let saved_pos = stream.position();
39 if stream.expect_string(".and").is_ok() {
40 return Ok(Boolop::And);
41 }
42 stream.set_position(saved_pos);
43 }
44 let saved_pos = stream.position();
45 {
47 let saved_pos = stream.position();
48 if stream.expect_string(".xor").is_ok() {
49 return Ok(Boolop::Xor);
50 }
51 stream.set_position(saved_pos);
52 }
53 stream.set_position(saved_pos);
54 let saved_pos = stream.position();
55 {
57 let saved_pos = stream.position();
58 if stream.expect_string(".or").is_ok() {
59 return Ok(Boolop::Or);
60 }
61 stream.set_position(saved_pos);
62 }
63 stream.set_position(saved_pos);
64 let span = stream
65 .peek()
66 .map(|(_, s)| s.clone())
67 .unwrap_or(Span { start: 0, end: 0 });
68 let expected = &[".and", ".xor", ".or"];
69 let found = stream
70 .peek()
71 .map(|(t, _)| format!("{:?}", t))
72 .unwrap_or_else(|_| "<end of input>".to_string());
73 Err(crate::parser::unexpected_value(span, expected, found))
74 }
75 }
76
77 impl PtxParser for Cmpop {
78 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
79 {
81 let saved_pos = stream.position();
82 if stream.expect_string(".equ").is_ok() {
83 return Ok(Cmpop::Equ);
84 }
85 stream.set_position(saved_pos);
86 }
87 let saved_pos = stream.position();
88 {
90 let saved_pos = stream.position();
91 if stream.expect_string(".neu").is_ok() {
92 return Ok(Cmpop::Neu);
93 }
94 stream.set_position(saved_pos);
95 }
96 stream.set_position(saved_pos);
97 let saved_pos = stream.position();
98 {
100 let saved_pos = stream.position();
101 if stream.expect_string(".ltu").is_ok() {
102 return Ok(Cmpop::Ltu);
103 }
104 stream.set_position(saved_pos);
105 }
106 stream.set_position(saved_pos);
107 let saved_pos = stream.position();
108 {
110 let saved_pos = stream.position();
111 if stream.expect_string(".leu").is_ok() {
112 return Ok(Cmpop::Leu);
113 }
114 stream.set_position(saved_pos);
115 }
116 stream.set_position(saved_pos);
117 let saved_pos = stream.position();
118 {
120 let saved_pos = stream.position();
121 if stream.expect_string(".gtu").is_ok() {
122 return Ok(Cmpop::Gtu);
123 }
124 stream.set_position(saved_pos);
125 }
126 stream.set_position(saved_pos);
127 let saved_pos = stream.position();
128 {
130 let saved_pos = stream.position();
131 if stream.expect_string(".geu").is_ok() {
132 return Ok(Cmpop::Geu);
133 }
134 stream.set_position(saved_pos);
135 }
136 stream.set_position(saved_pos);
137 let saved_pos = stream.position();
138 {
140 let saved_pos = stream.position();
141 if stream.expect_string(".num").is_ok() {
142 return Ok(Cmpop::Num);
143 }
144 stream.set_position(saved_pos);
145 }
146 stream.set_position(saved_pos);
147 let saved_pos = stream.position();
148 {
150 let saved_pos = stream.position();
151 if stream.expect_string(".nan").is_ok() {
152 return Ok(Cmpop::Nan);
153 }
154 stream.set_position(saved_pos);
155 }
156 stream.set_position(saved_pos);
157 let saved_pos = stream.position();
158 {
160 let saved_pos = stream.position();
161 if stream.expect_string(".eq").is_ok() {
162 return Ok(Cmpop::Eq);
163 }
164 stream.set_position(saved_pos);
165 }
166 stream.set_position(saved_pos);
167 let saved_pos = stream.position();
168 {
170 let saved_pos = stream.position();
171 if stream.expect_string(".ne").is_ok() {
172 return Ok(Cmpop::Ne);
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(".lt").is_ok() {
182 return Ok(Cmpop::Lt);
183 }
184 stream.set_position(saved_pos);
185 }
186 stream.set_position(saved_pos);
187 let saved_pos = stream.position();
188 {
190 let saved_pos = stream.position();
191 if stream.expect_string(".le").is_ok() {
192 return Ok(Cmpop::Le);
193 }
194 stream.set_position(saved_pos);
195 }
196 stream.set_position(saved_pos);
197 let saved_pos = stream.position();
198 {
200 let saved_pos = stream.position();
201 if stream.expect_string(".gt").is_ok() {
202 return Ok(Cmpop::Gt);
203 }
204 stream.set_position(saved_pos);
205 }
206 stream.set_position(saved_pos);
207 let saved_pos = stream.position();
208 {
210 let saved_pos = stream.position();
211 if stream.expect_string(".ge").is_ok() {
212 return Ok(Cmpop::Ge);
213 }
214 stream.set_position(saved_pos);
215 }
216 stream.set_position(saved_pos);
217 let saved_pos = stream.position();
218 {
220 let saved_pos = stream.position();
221 if stream.expect_string(".lo").is_ok() {
222 return Ok(Cmpop::Lo);
223 }
224 stream.set_position(saved_pos);
225 }
226 stream.set_position(saved_pos);
227 let saved_pos = stream.position();
228 {
230 let saved_pos = stream.position();
231 if stream.expect_string(".ls").is_ok() {
232 return Ok(Cmpop::Ls);
233 }
234 stream.set_position(saved_pos);
235 }
236 stream.set_position(saved_pos);
237 let saved_pos = stream.position();
238 {
240 let saved_pos = stream.position();
241 if stream.expect_string(".hi").is_ok() {
242 return Ok(Cmpop::Hi);
243 }
244 stream.set_position(saved_pos);
245 }
246 stream.set_position(saved_pos);
247 let saved_pos = stream.position();
248 {
250 let saved_pos = stream.position();
251 if stream.expect_string(".hs").is_ok() {
252 return Ok(Cmpop::Hs);
253 }
254 stream.set_position(saved_pos);
255 }
256 stream.set_position(saved_pos);
257 let span = stream
258 .peek()
259 .map(|(_, s)| s.clone())
260 .unwrap_or(Span { start: 0, end: 0 });
261 let expected = &[
262 ".equ", ".neu", ".ltu", ".leu", ".gtu", ".geu", ".num", ".nan", ".eq", ".ne",
263 ".lt", ".le", ".gt", ".ge", ".lo", ".ls", ".hi", ".hs",
264 ];
265 let found = stream
266 .peek()
267 .map(|(t, _)| format!("{:?}", t))
268 .unwrap_or_else(|_| "<end of input>".to_string());
269 Err(crate::parser::unexpected_value(span, expected, found))
270 }
271 }
272
273 impl PtxParser for Type {
274 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
275 {
277 let saved_pos = stream.position();
278 if stream.expect_string(".b16").is_ok() {
279 return Ok(Type::B16);
280 }
281 stream.set_position(saved_pos);
282 }
283 let saved_pos = stream.position();
284 {
286 let saved_pos = stream.position();
287 if stream.expect_string(".b32").is_ok() {
288 return Ok(Type::B32);
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(".b64").is_ok() {
298 return Ok(Type::B64);
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(".u16").is_ok() {
308 return Ok(Type::U16);
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(".u32").is_ok() {
318 return Ok(Type::U32);
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(".u64").is_ok() {
328 return Ok(Type::U64);
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(".s16").is_ok() {
338 return Ok(Type::S16);
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(".s32").is_ok() {
348 return Ok(Type::S32);
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(".s64").is_ok() {
358 return Ok(Type::S64);
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(".f32").is_ok() {
368 return Ok(Type::F32);
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(".f64").is_ok() {
378 return Ok(Type::F64);
379 }
380 stream.set_position(saved_pos);
381 }
382 stream.set_position(saved_pos);
383 let span = stream
384 .peek()
385 .map(|(_, s)| s.clone())
386 .unwrap_or(Span { start: 0, end: 0 });
387 let expected = &[
388 ".b16", ".b32", ".b64", ".u16", ".u32", ".u64", ".s16", ".s32", ".s64", ".f32",
389 ".f64",
390 ];
391 let found = stream
392 .peek()
393 .map(|(t, _)| format!("{:?}", t))
394 .unwrap_or_else(|_| "<end of input>".to_string());
395 Err(crate::parser::unexpected_value(span, expected, found))
396 }
397 }
398
399 impl PtxParser for SetpCmpopFtzType {
400 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
401 stream.expect_string("setp")?;
402 let cmpop = Cmpop::parse(stream)?;
403 stream.expect_complete()?;
404 let saved_pos = stream.position();
405 let ftz = stream.expect_string(".ftz").is_ok();
406 if !ftz {
407 stream.set_position(saved_pos);
408 }
409 stream.expect_complete()?;
410 let type_ = Type::parse(stream)?;
411 stream.expect_complete()?;
412 let p = GeneralOperand::parse(stream)?;
413 let saved_pos = stream.position();
414 let q = if stream.consume_if(|t| matches!(t, PtxToken::Pipe)).is_some() {
415 Some(GeneralOperand::parse(stream)?)
416 } else {
417 stream.set_position(saved_pos);
418 None
419 };
420 stream.expect_complete()?;
421 stream.expect(&PtxToken::Comma)?;
422 let a = GeneralOperand::parse(stream)?;
423 stream.expect_complete()?;
424 stream.expect(&PtxToken::Comma)?;
425 let b = GeneralOperand::parse(stream)?;
426 stream.expect_complete()?;
427 stream.expect_complete()?;
428 stream.expect(&PtxToken::Semicolon)?;
429 Ok(SetpCmpopFtzType {
430 cmpop,
431 ftz,
432 type_,
433 p,
434 q,
435 a,
436 b,
437 })
438 }
439 }
440
441 impl PtxParser for SetpCmpopBoolopFtzType {
442 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
443 stream.expect_string("setp")?;
444 let cmpop = Cmpop::parse(stream)?;
445 stream.expect_complete()?;
446 let boolop = Boolop::parse(stream)?;
447 stream.expect_complete()?;
448 let saved_pos = stream.position();
449 let ftz = stream.expect_string(".ftz").is_ok();
450 if !ftz {
451 stream.set_position(saved_pos);
452 }
453 stream.expect_complete()?;
454 let type_ = Type::parse(stream)?;
455 stream.expect_complete()?;
456 let p = GeneralOperand::parse(stream)?;
457 let saved_pos = stream.position();
458 let q = if stream.consume_if(|t| matches!(t, PtxToken::Pipe)).is_some() {
459 Some(GeneralOperand::parse(stream)?)
460 } else {
461 stream.set_position(saved_pos);
462 None
463 };
464 stream.expect_complete()?;
465 stream.expect(&PtxToken::Comma)?;
466 let a = GeneralOperand::parse(stream)?;
467 stream.expect_complete()?;
468 stream.expect(&PtxToken::Comma)?;
469 let b = GeneralOperand::parse(stream)?;
470 stream.expect_complete()?;
471 stream.expect(&PtxToken::Comma)?;
472 let c_op = stream
473 .consume_if(|t| matches!(t, PtxToken::Exclaim))
474 .is_some();
475 let c = GeneralOperand::parse(stream)?;
476 stream.expect_complete()?;
477 stream.expect_complete()?;
478 stream.expect(&PtxToken::Semicolon)?;
479 Ok(SetpCmpopBoolopFtzType {
480 cmpop,
481 boolop,
482 ftz,
483 type_,
484 p,
485 q,
486 a,
487 b,
488 c_op,
489 c,
490 })
491 }
492 }
493}
494
495pub mod section_1 {
496 use super::*;
497 use crate::r#type::instruction::setp::section_1::*;
498
499 impl PtxParser for Boolop {
504 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
505 {
507 let saved_pos = stream.position();
508 if stream.expect_string(".and").is_ok() {
509 return Ok(Boolop::And);
510 }
511 stream.set_position(saved_pos);
512 }
513 let saved_pos = stream.position();
514 {
516 let saved_pos = stream.position();
517 if stream.expect_string(".xor").is_ok() {
518 return Ok(Boolop::Xor);
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(".or").is_ok() {
528 return Ok(Boolop::Or);
529 }
530 stream.set_position(saved_pos);
531 }
532 stream.set_position(saved_pos);
533 let span = stream
534 .peek()
535 .map(|(_, s)| s.clone())
536 .unwrap_or(Span { start: 0, end: 0 });
537 let expected = &[".and", ".xor", ".or"];
538 let found = stream
539 .peek()
540 .map(|(t, _)| format!("{:?}", t))
541 .unwrap_or_else(|_| "<end of input>".to_string());
542 Err(crate::parser::unexpected_value(span, expected, found))
543 }
544 }
545
546 impl PtxParser for Cmpop {
547 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
548 {
550 let saved_pos = stream.position();
551 if stream.expect_string(".equ").is_ok() {
552 return Ok(Cmpop::Equ);
553 }
554 stream.set_position(saved_pos);
555 }
556 let saved_pos = stream.position();
557 {
559 let saved_pos = stream.position();
560 if stream.expect_string(".neu").is_ok() {
561 return Ok(Cmpop::Neu);
562 }
563 stream.set_position(saved_pos);
564 }
565 stream.set_position(saved_pos);
566 let saved_pos = stream.position();
567 {
569 let saved_pos = stream.position();
570 if stream.expect_string(".ltu").is_ok() {
571 return Ok(Cmpop::Ltu);
572 }
573 stream.set_position(saved_pos);
574 }
575 stream.set_position(saved_pos);
576 let saved_pos = stream.position();
577 {
579 let saved_pos = stream.position();
580 if stream.expect_string(".leu").is_ok() {
581 return Ok(Cmpop::Leu);
582 }
583 stream.set_position(saved_pos);
584 }
585 stream.set_position(saved_pos);
586 let saved_pos = stream.position();
587 {
589 let saved_pos = stream.position();
590 if stream.expect_string(".gtu").is_ok() {
591 return Ok(Cmpop::Gtu);
592 }
593 stream.set_position(saved_pos);
594 }
595 stream.set_position(saved_pos);
596 let saved_pos = stream.position();
597 {
599 let saved_pos = stream.position();
600 if stream.expect_string(".geu").is_ok() {
601 return Ok(Cmpop::Geu);
602 }
603 stream.set_position(saved_pos);
604 }
605 stream.set_position(saved_pos);
606 let saved_pos = stream.position();
607 {
609 let saved_pos = stream.position();
610 if stream.expect_string(".num").is_ok() {
611 return Ok(Cmpop::Num);
612 }
613 stream.set_position(saved_pos);
614 }
615 stream.set_position(saved_pos);
616 let saved_pos = stream.position();
617 {
619 let saved_pos = stream.position();
620 if stream.expect_string(".nan").is_ok() {
621 return Ok(Cmpop::Nan);
622 }
623 stream.set_position(saved_pos);
624 }
625 stream.set_position(saved_pos);
626 let saved_pos = stream.position();
627 {
629 let saved_pos = stream.position();
630 if stream.expect_string(".eq").is_ok() {
631 return Ok(Cmpop::Eq);
632 }
633 stream.set_position(saved_pos);
634 }
635 stream.set_position(saved_pos);
636 let saved_pos = stream.position();
637 {
639 let saved_pos = stream.position();
640 if stream.expect_string(".ne").is_ok() {
641 return Ok(Cmpop::Ne);
642 }
643 stream.set_position(saved_pos);
644 }
645 stream.set_position(saved_pos);
646 let saved_pos = stream.position();
647 {
649 let saved_pos = stream.position();
650 if stream.expect_string(".lt").is_ok() {
651 return Ok(Cmpop::Lt);
652 }
653 stream.set_position(saved_pos);
654 }
655 stream.set_position(saved_pos);
656 let saved_pos = stream.position();
657 {
659 let saved_pos = stream.position();
660 if stream.expect_string(".le").is_ok() {
661 return Ok(Cmpop::Le);
662 }
663 stream.set_position(saved_pos);
664 }
665 stream.set_position(saved_pos);
666 let saved_pos = stream.position();
667 {
669 let saved_pos = stream.position();
670 if stream.expect_string(".gt").is_ok() {
671 return Ok(Cmpop::Gt);
672 }
673 stream.set_position(saved_pos);
674 }
675 stream.set_position(saved_pos);
676 let saved_pos = stream.position();
677 {
679 let saved_pos = stream.position();
680 if stream.expect_string(".ge").is_ok() {
681 return Ok(Cmpop::Ge);
682 }
683 stream.set_position(saved_pos);
684 }
685 stream.set_position(saved_pos);
686 let span = stream
687 .peek()
688 .map(|(_, s)| s.clone())
689 .unwrap_or(Span { start: 0, end: 0 });
690 let expected = &[
691 ".equ", ".neu", ".ltu", ".leu", ".gtu", ".geu", ".num", ".nan", ".eq", ".ne",
692 ".lt", ".le", ".gt", ".ge",
693 ];
694 let found = stream
695 .peek()
696 .map(|(t, _)| format!("{:?}", t))
697 .unwrap_or_else(|_| "<end of input>".to_string());
698 Err(crate::parser::unexpected_value(span, expected, found))
699 }
700 }
701
702 impl PtxParser for SetpCmpopFtzF16 {
703 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
704 stream.expect_string("setp")?;
705 let cmpop = Cmpop::parse(stream)?;
706 stream.expect_complete()?;
707 let saved_pos = stream.position();
708 let ftz = stream.expect_string(".ftz").is_ok();
709 if !ftz {
710 stream.set_position(saved_pos);
711 }
712 stream.expect_complete()?;
713 stream.expect_string(".f16")?;
714 let f16 = ();
715 stream.expect_complete()?;
716 let p = GeneralOperand::parse(stream)?;
717 stream.expect_complete()?;
718 stream.expect(&PtxToken::Comma)?;
719 let a = GeneralOperand::parse(stream)?;
720 stream.expect_complete()?;
721 stream.expect(&PtxToken::Comma)?;
722 let b = GeneralOperand::parse(stream)?;
723 stream.expect_complete()?;
724 stream.expect_complete()?;
725 stream.expect(&PtxToken::Semicolon)?;
726 Ok(SetpCmpopFtzF16 {
727 cmpop,
728 ftz,
729 f16,
730 p,
731 a,
732 b,
733 })
734 }
735 }
736
737 impl PtxParser for SetpCmpopBoolopFtzF16 {
738 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
739 stream.expect_string("setp")?;
740 let cmpop = Cmpop::parse(stream)?;
741 stream.expect_complete()?;
742 let boolop = Boolop::parse(stream)?;
743 stream.expect_complete()?;
744 let saved_pos = stream.position();
745 let ftz = stream.expect_string(".ftz").is_ok();
746 if !ftz {
747 stream.set_position(saved_pos);
748 }
749 stream.expect_complete()?;
750 stream.expect_string(".f16")?;
751 let f16 = ();
752 stream.expect_complete()?;
753 let p = GeneralOperand::parse(stream)?;
754 stream.expect_complete()?;
755 stream.expect(&PtxToken::Comma)?;
756 let a = GeneralOperand::parse(stream)?;
757 stream.expect_complete()?;
758 stream.expect(&PtxToken::Comma)?;
759 let b = GeneralOperand::parse(stream)?;
760 stream.expect_complete()?;
761 stream.expect(&PtxToken::Comma)?;
762 let c_op = stream
763 .consume_if(|t| matches!(t, PtxToken::Exclaim))
764 .is_some();
765 let c = GeneralOperand::parse(stream)?;
766 stream.expect_complete()?;
767 stream.expect_complete()?;
768 stream.expect(&PtxToken::Semicolon)?;
769 Ok(SetpCmpopBoolopFtzF16 {
770 cmpop,
771 boolop,
772 ftz,
773 f16,
774 p,
775 a,
776 b,
777 c_op,
778 c,
779 })
780 }
781 }
782
783 impl PtxParser for SetpCmpopFtzF16x2 {
784 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
785 stream.expect_string("setp")?;
786 let cmpop = Cmpop::parse(stream)?;
787 stream.expect_complete()?;
788 let saved_pos = stream.position();
789 let ftz = stream.expect_string(".ftz").is_ok();
790 if !ftz {
791 stream.set_position(saved_pos);
792 }
793 stream.expect_complete()?;
794 stream.expect_string(".f16x2")?;
795 let f16x2 = ();
796 stream.expect_complete()?;
797 let p = GeneralOperand::parse(stream)?;
798 stream.expect(&PtxToken::Pipe)?;
799 let q = GeneralOperand::parse(stream)?;
800 stream.expect_complete()?;
801 stream.expect(&PtxToken::Comma)?;
802 let a = GeneralOperand::parse(stream)?;
803 stream.expect_complete()?;
804 stream.expect(&PtxToken::Comma)?;
805 let b = GeneralOperand::parse(stream)?;
806 stream.expect_complete()?;
807 stream.expect_complete()?;
808 stream.expect(&PtxToken::Semicolon)?;
809 Ok(SetpCmpopFtzF16x2 {
810 cmpop,
811 ftz,
812 f16x2,
813 p,
814 q,
815 a,
816 b,
817 })
818 }
819 }
820
821 impl PtxParser for SetpCmpopBoolopFtzF16x2 {
822 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
823 stream.expect_string("setp")?;
824 let cmpop = Cmpop::parse(stream)?;
825 stream.expect_complete()?;
826 let boolop = Boolop::parse(stream)?;
827 stream.expect_complete()?;
828 let saved_pos = stream.position();
829 let ftz = stream.expect_string(".ftz").is_ok();
830 if !ftz {
831 stream.set_position(saved_pos);
832 }
833 stream.expect_complete()?;
834 stream.expect_string(".f16x2")?;
835 let f16x2 = ();
836 stream.expect_complete()?;
837 let p = GeneralOperand::parse(stream)?;
838 stream.expect(&PtxToken::Pipe)?;
839 let q = GeneralOperand::parse(stream)?;
840 stream.expect_complete()?;
841 stream.expect(&PtxToken::Comma)?;
842 let a = GeneralOperand::parse(stream)?;
843 stream.expect_complete()?;
844 stream.expect(&PtxToken::Comma)?;
845 let b = GeneralOperand::parse(stream)?;
846 stream.expect_complete()?;
847 stream.expect(&PtxToken::Comma)?;
848 let c_op = stream
849 .consume_if(|t| matches!(t, PtxToken::Exclaim))
850 .is_some();
851 let c = GeneralOperand::parse(stream)?;
852 stream.expect_complete()?;
853 stream.expect_complete()?;
854 stream.expect(&PtxToken::Semicolon)?;
855 Ok(SetpCmpopBoolopFtzF16x2 {
856 cmpop,
857 boolop,
858 ftz,
859 f16x2,
860 p,
861 q,
862 a,
863 b,
864 c_op,
865 c,
866 })
867 }
868 }
869
870 impl PtxParser for SetpCmpopBf16 {
871 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
872 stream.expect_string("setp")?;
873 let cmpop = Cmpop::parse(stream)?;
874 stream.expect_complete()?;
875 stream.expect_string(".bf16")?;
876 let bf16 = ();
877 stream.expect_complete()?;
878 let p = GeneralOperand::parse(stream)?;
879 stream.expect_complete()?;
880 stream.expect(&PtxToken::Comma)?;
881 let a = GeneralOperand::parse(stream)?;
882 stream.expect_complete()?;
883 stream.expect(&PtxToken::Comma)?;
884 let b = GeneralOperand::parse(stream)?;
885 stream.expect_complete()?;
886 stream.expect_complete()?;
887 stream.expect(&PtxToken::Semicolon)?;
888 Ok(SetpCmpopBf16 {
889 cmpop,
890 bf16,
891 p,
892 a,
893 b,
894 })
895 }
896 }
897
898 impl PtxParser for SetpCmpopBoolopBf16 {
899 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
900 stream.expect_string("setp")?;
901 let cmpop = Cmpop::parse(stream)?;
902 stream.expect_complete()?;
903 let boolop = Boolop::parse(stream)?;
904 stream.expect_complete()?;
905 stream.expect_string(".bf16")?;
906 let bf16 = ();
907 stream.expect_complete()?;
908 let p = GeneralOperand::parse(stream)?;
909 stream.expect_complete()?;
910 stream.expect(&PtxToken::Comma)?;
911 let a = GeneralOperand::parse(stream)?;
912 stream.expect_complete()?;
913 stream.expect(&PtxToken::Comma)?;
914 let b = GeneralOperand::parse(stream)?;
915 stream.expect_complete()?;
916 stream.expect(&PtxToken::Comma)?;
917 let c_op = stream
918 .consume_if(|t| matches!(t, PtxToken::Exclaim))
919 .is_some();
920 let c = GeneralOperand::parse(stream)?;
921 stream.expect_complete()?;
922 stream.expect_complete()?;
923 stream.expect(&PtxToken::Semicolon)?;
924 Ok(SetpCmpopBoolopBf16 {
925 cmpop,
926 boolop,
927 bf16,
928 p,
929 a,
930 b,
931 c_op,
932 c,
933 })
934 }
935 }
936
937 impl PtxParser for SetpCmpopBf16x2 {
938 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
939 stream.expect_string("setp")?;
940 let cmpop = Cmpop::parse(stream)?;
941 stream.expect_complete()?;
942 stream.expect_string(".bf16x2")?;
943 let bf16x2 = ();
944 stream.expect_complete()?;
945 let p = GeneralOperand::parse(stream)?;
946 stream.expect(&PtxToken::Pipe)?;
947 let q = GeneralOperand::parse(stream)?;
948 stream.expect_complete()?;
949 stream.expect(&PtxToken::Comma)?;
950 let a = GeneralOperand::parse(stream)?;
951 stream.expect_complete()?;
952 stream.expect(&PtxToken::Comma)?;
953 let b = GeneralOperand::parse(stream)?;
954 stream.expect_complete()?;
955 stream.expect_complete()?;
956 stream.expect(&PtxToken::Semicolon)?;
957 Ok(SetpCmpopBf16x2 {
958 cmpop,
959 bf16x2,
960 p,
961 q,
962 a,
963 b,
964 })
965 }
966 }
967
968 impl PtxParser for SetpCmpopBoolopBf16x2 {
969 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
970 stream.expect_string("setp")?;
971 let cmpop = Cmpop::parse(stream)?;
972 stream.expect_complete()?;
973 let boolop = Boolop::parse(stream)?;
974 stream.expect_complete()?;
975 stream.expect_string(".bf16x2")?;
976 let bf16x2 = ();
977 stream.expect_complete()?;
978 let p = GeneralOperand::parse(stream)?;
979 stream.expect(&PtxToken::Pipe)?;
980 let q = GeneralOperand::parse(stream)?;
981 stream.expect_complete()?;
982 stream.expect(&PtxToken::Comma)?;
983 let a = GeneralOperand::parse(stream)?;
984 stream.expect_complete()?;
985 stream.expect(&PtxToken::Comma)?;
986 let b = GeneralOperand::parse(stream)?;
987 stream.expect_complete()?;
988 stream.expect(&PtxToken::Comma)?;
989 let c_op = stream
990 .consume_if(|t| matches!(t, PtxToken::Exclaim))
991 .is_some();
992 let c = GeneralOperand::parse(stream)?;
993 stream.expect_complete()?;
994 stream.expect_complete()?;
995 stream.expect(&PtxToken::Semicolon)?;
996 Ok(SetpCmpopBoolopBf16x2 {
997 cmpop,
998 boolop,
999 bf16x2,
1000 p,
1001 q,
1002 a,
1003 b,
1004 c_op,
1005 c,
1006 })
1007 }
1008 }
1009}