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.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
65 let expected = &[".and", ".xor", ".or"];
66 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
67 Err(crate::parser::unexpected_value(span, expected, found))
68 }
69 }
70
71 impl PtxParser for Cmpop {
72 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
73 {
75 let saved_pos = stream.position();
76 if stream.expect_string(".equ").is_ok() {
77 return Ok(Cmpop::Equ);
78 }
79 stream.set_position(saved_pos);
80 }
81 let saved_pos = stream.position();
82 {
84 let saved_pos = stream.position();
85 if stream.expect_string(".neu").is_ok() {
86 return Ok(Cmpop::Neu);
87 }
88 stream.set_position(saved_pos);
89 }
90 stream.set_position(saved_pos);
91 let saved_pos = stream.position();
92 {
94 let saved_pos = stream.position();
95 if stream.expect_string(".ltu").is_ok() {
96 return Ok(Cmpop::Ltu);
97 }
98 stream.set_position(saved_pos);
99 }
100 stream.set_position(saved_pos);
101 let saved_pos = stream.position();
102 {
104 let saved_pos = stream.position();
105 if stream.expect_string(".leu").is_ok() {
106 return Ok(Cmpop::Leu);
107 }
108 stream.set_position(saved_pos);
109 }
110 stream.set_position(saved_pos);
111 let saved_pos = stream.position();
112 {
114 let saved_pos = stream.position();
115 if stream.expect_string(".gtu").is_ok() {
116 return Ok(Cmpop::Gtu);
117 }
118 stream.set_position(saved_pos);
119 }
120 stream.set_position(saved_pos);
121 let saved_pos = stream.position();
122 {
124 let saved_pos = stream.position();
125 if stream.expect_string(".geu").is_ok() {
126 return Ok(Cmpop::Geu);
127 }
128 stream.set_position(saved_pos);
129 }
130 stream.set_position(saved_pos);
131 let saved_pos = stream.position();
132 {
134 let saved_pos = stream.position();
135 if stream.expect_string(".num").is_ok() {
136 return Ok(Cmpop::Num);
137 }
138 stream.set_position(saved_pos);
139 }
140 stream.set_position(saved_pos);
141 let saved_pos = stream.position();
142 {
144 let saved_pos = stream.position();
145 if stream.expect_string(".nan").is_ok() {
146 return Ok(Cmpop::Nan);
147 }
148 stream.set_position(saved_pos);
149 }
150 stream.set_position(saved_pos);
151 let saved_pos = stream.position();
152 {
154 let saved_pos = stream.position();
155 if stream.expect_string(".eq").is_ok() {
156 return Ok(Cmpop::Eq);
157 }
158 stream.set_position(saved_pos);
159 }
160 stream.set_position(saved_pos);
161 let saved_pos = stream.position();
162 {
164 let saved_pos = stream.position();
165 if stream.expect_string(".ne").is_ok() {
166 return Ok(Cmpop::Ne);
167 }
168 stream.set_position(saved_pos);
169 }
170 stream.set_position(saved_pos);
171 let saved_pos = stream.position();
172 {
174 let saved_pos = stream.position();
175 if stream.expect_string(".lt").is_ok() {
176 return Ok(Cmpop::Lt);
177 }
178 stream.set_position(saved_pos);
179 }
180 stream.set_position(saved_pos);
181 let saved_pos = stream.position();
182 {
184 let saved_pos = stream.position();
185 if stream.expect_string(".le").is_ok() {
186 return Ok(Cmpop::Le);
187 }
188 stream.set_position(saved_pos);
189 }
190 stream.set_position(saved_pos);
191 let saved_pos = stream.position();
192 {
194 let saved_pos = stream.position();
195 if stream.expect_string(".gt").is_ok() {
196 return Ok(Cmpop::Gt);
197 }
198 stream.set_position(saved_pos);
199 }
200 stream.set_position(saved_pos);
201 let saved_pos = stream.position();
202 {
204 let saved_pos = stream.position();
205 if stream.expect_string(".ge").is_ok() {
206 return Ok(Cmpop::Ge);
207 }
208 stream.set_position(saved_pos);
209 }
210 stream.set_position(saved_pos);
211 let saved_pos = stream.position();
212 {
214 let saved_pos = stream.position();
215 if stream.expect_string(".lo").is_ok() {
216 return Ok(Cmpop::Lo);
217 }
218 stream.set_position(saved_pos);
219 }
220 stream.set_position(saved_pos);
221 let saved_pos = stream.position();
222 {
224 let saved_pos = stream.position();
225 if stream.expect_string(".ls").is_ok() {
226 return Ok(Cmpop::Ls);
227 }
228 stream.set_position(saved_pos);
229 }
230 stream.set_position(saved_pos);
231 let saved_pos = stream.position();
232 {
234 let saved_pos = stream.position();
235 if stream.expect_string(".hi").is_ok() {
236 return Ok(Cmpop::Hi);
237 }
238 stream.set_position(saved_pos);
239 }
240 stream.set_position(saved_pos);
241 let saved_pos = stream.position();
242 {
244 let saved_pos = stream.position();
245 if stream.expect_string(".hs").is_ok() {
246 return Ok(Cmpop::Hs);
247 }
248 stream.set_position(saved_pos);
249 }
250 stream.set_position(saved_pos);
251 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
252 let expected = &[".equ", ".neu", ".ltu", ".leu", ".gtu", ".geu", ".num", ".nan", ".eq", ".ne", ".lt", ".le", ".gt", ".ge", ".lo", ".ls", ".hi", ".hs"];
253 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
254 Err(crate::parser::unexpected_value(span, expected, found))
255 }
256 }
257
258 impl PtxParser for Type {
259 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
260 {
262 let saved_pos = stream.position();
263 if stream.expect_string(".b16").is_ok() {
264 return Ok(Type::B16);
265 }
266 stream.set_position(saved_pos);
267 }
268 let saved_pos = stream.position();
269 {
271 let saved_pos = stream.position();
272 if stream.expect_string(".b32").is_ok() {
273 return Ok(Type::B32);
274 }
275 stream.set_position(saved_pos);
276 }
277 stream.set_position(saved_pos);
278 let saved_pos = stream.position();
279 {
281 let saved_pos = stream.position();
282 if stream.expect_string(".b64").is_ok() {
283 return Ok(Type::B64);
284 }
285 stream.set_position(saved_pos);
286 }
287 stream.set_position(saved_pos);
288 let saved_pos = stream.position();
289 {
291 let saved_pos = stream.position();
292 if stream.expect_string(".u16").is_ok() {
293 return Ok(Type::U16);
294 }
295 stream.set_position(saved_pos);
296 }
297 stream.set_position(saved_pos);
298 let saved_pos = stream.position();
299 {
301 let saved_pos = stream.position();
302 if stream.expect_string(".u32").is_ok() {
303 return Ok(Type::U32);
304 }
305 stream.set_position(saved_pos);
306 }
307 stream.set_position(saved_pos);
308 let saved_pos = stream.position();
309 {
311 let saved_pos = stream.position();
312 if stream.expect_string(".u64").is_ok() {
313 return Ok(Type::U64);
314 }
315 stream.set_position(saved_pos);
316 }
317 stream.set_position(saved_pos);
318 let saved_pos = stream.position();
319 {
321 let saved_pos = stream.position();
322 if stream.expect_string(".s16").is_ok() {
323 return Ok(Type::S16);
324 }
325 stream.set_position(saved_pos);
326 }
327 stream.set_position(saved_pos);
328 let saved_pos = stream.position();
329 {
331 let saved_pos = stream.position();
332 if stream.expect_string(".s32").is_ok() {
333 return Ok(Type::S32);
334 }
335 stream.set_position(saved_pos);
336 }
337 stream.set_position(saved_pos);
338 let saved_pos = stream.position();
339 {
341 let saved_pos = stream.position();
342 if stream.expect_string(".s64").is_ok() {
343 return Ok(Type::S64);
344 }
345 stream.set_position(saved_pos);
346 }
347 stream.set_position(saved_pos);
348 let saved_pos = stream.position();
349 {
351 let saved_pos = stream.position();
352 if stream.expect_string(".f32").is_ok() {
353 return Ok(Type::F32);
354 }
355 stream.set_position(saved_pos);
356 }
357 stream.set_position(saved_pos);
358 let saved_pos = stream.position();
359 {
361 let saved_pos = stream.position();
362 if stream.expect_string(".f64").is_ok() {
363 return Ok(Type::F64);
364 }
365 stream.set_position(saved_pos);
366 }
367 stream.set_position(saved_pos);
368 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
369 let expected = &[".b16", ".b32", ".b64", ".u16", ".u32", ".u64", ".s16", ".s32", ".s64", ".f32", ".f64"];
370 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
371 Err(crate::parser::unexpected_value(span, expected, found))
372 }
373 }
374
375 impl PtxParser for SetpCmpopFtzType {
376 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
377 stream.expect_string("setp")?;
378 let cmpop = Cmpop::parse(stream)?;
379 stream.expect_complete()?;
380 let saved_pos = stream.position();
381 let ftz = stream.expect_string(".ftz").is_ok();
382 if !ftz {
383 stream.set_position(saved_pos);
384 }
385 stream.expect_complete()?;
386 let type_ = Type::parse(stream)?;
387 stream.expect_complete()?;
388 let p = GeneralOperand::parse(stream)?;
389 let saved_pos = stream.position();
390 let q = if stream.consume_if(|t| matches!(t, PtxToken::Pipe)).is_some() {
391 Some(GeneralOperand::parse(stream)?)
392 } else {
393 stream.set_position(saved_pos);
394 None
395 };
396 stream.expect_complete()?;
397 stream.expect(&PtxToken::Comma)?;
398 let a = GeneralOperand::parse(stream)?;
399 stream.expect_complete()?;
400 stream.expect(&PtxToken::Comma)?;
401 let b = GeneralOperand::parse(stream)?;
402 stream.expect_complete()?;
403 stream.expect_complete()?;
404 stream.expect(&PtxToken::Semicolon)?;
405 Ok(SetpCmpopFtzType {
406 cmpop,
407 ftz,
408 type_,
409 p,
410 q,
411 a,
412 b,
413 })
414 }
415 }
416
417
418 impl PtxParser for SetpCmpopBoolopFtzType {
419 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
420 stream.expect_string("setp")?;
421 let cmpop = Cmpop::parse(stream)?;
422 stream.expect_complete()?;
423 let boolop = Boolop::parse(stream)?;
424 stream.expect_complete()?;
425 let saved_pos = stream.position();
426 let ftz = stream.expect_string(".ftz").is_ok();
427 if !ftz {
428 stream.set_position(saved_pos);
429 }
430 stream.expect_complete()?;
431 let type_ = Type::parse(stream)?;
432 stream.expect_complete()?;
433 let p = GeneralOperand::parse(stream)?;
434 let saved_pos = stream.position();
435 let q = if stream.consume_if(|t| matches!(t, PtxToken::Pipe)).is_some() {
436 Some(GeneralOperand::parse(stream)?)
437 } else {
438 stream.set_position(saved_pos);
439 None
440 };
441 stream.expect_complete()?;
442 stream.expect(&PtxToken::Comma)?;
443 let a = GeneralOperand::parse(stream)?;
444 stream.expect_complete()?;
445 stream.expect(&PtxToken::Comma)?;
446 let b = GeneralOperand::parse(stream)?;
447 stream.expect_complete()?;
448 stream.expect(&PtxToken::Comma)?;
449 let c_op = stream.consume_if(|t| matches!(t, PtxToken::Exclaim)).is_some();
450 let c = GeneralOperand::parse(stream)?;
451 stream.expect_complete()?;
452 stream.expect_complete()?;
453 stream.expect(&PtxToken::Semicolon)?;
454 Ok(SetpCmpopBoolopFtzType {
455 cmpop,
456 boolop,
457 ftz,
458 type_,
459 p,
460 q,
461 a,
462 b,
463 c_op,
464 c,
465 })
466 }
467 }
468
469
470}
471
472pub mod section_1 {
473 use super::*;
474 use crate::r#type::instruction::setp::section_1::*;
475
476 impl PtxParser for Boolop {
481 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
482 {
484 let saved_pos = stream.position();
485 if stream.expect_string(".and").is_ok() {
486 return Ok(Boolop::And);
487 }
488 stream.set_position(saved_pos);
489 }
490 let saved_pos = stream.position();
491 {
493 let saved_pos = stream.position();
494 if stream.expect_string(".xor").is_ok() {
495 return Ok(Boolop::Xor);
496 }
497 stream.set_position(saved_pos);
498 }
499 stream.set_position(saved_pos);
500 let saved_pos = stream.position();
501 {
503 let saved_pos = stream.position();
504 if stream.expect_string(".or").is_ok() {
505 return Ok(Boolop::Or);
506 }
507 stream.set_position(saved_pos);
508 }
509 stream.set_position(saved_pos);
510 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
511 let expected = &[".and", ".xor", ".or"];
512 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
513 Err(crate::parser::unexpected_value(span, expected, found))
514 }
515 }
516
517 impl PtxParser for Cmpop {
518 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
519 {
521 let saved_pos = stream.position();
522 if stream.expect_string(".equ").is_ok() {
523 return Ok(Cmpop::Equ);
524 }
525 stream.set_position(saved_pos);
526 }
527 let saved_pos = stream.position();
528 {
530 let saved_pos = stream.position();
531 if stream.expect_string(".neu").is_ok() {
532 return Ok(Cmpop::Neu);
533 }
534 stream.set_position(saved_pos);
535 }
536 stream.set_position(saved_pos);
537 let saved_pos = stream.position();
538 {
540 let saved_pos = stream.position();
541 if stream.expect_string(".ltu").is_ok() {
542 return Ok(Cmpop::Ltu);
543 }
544 stream.set_position(saved_pos);
545 }
546 stream.set_position(saved_pos);
547 let saved_pos = stream.position();
548 {
550 let saved_pos = stream.position();
551 if stream.expect_string(".leu").is_ok() {
552 return Ok(Cmpop::Leu);
553 }
554 stream.set_position(saved_pos);
555 }
556 stream.set_position(saved_pos);
557 let saved_pos = stream.position();
558 {
560 let saved_pos = stream.position();
561 if stream.expect_string(".gtu").is_ok() {
562 return Ok(Cmpop::Gtu);
563 }
564 stream.set_position(saved_pos);
565 }
566 stream.set_position(saved_pos);
567 let saved_pos = stream.position();
568 {
570 let saved_pos = stream.position();
571 if stream.expect_string(".geu").is_ok() {
572 return Ok(Cmpop::Geu);
573 }
574 stream.set_position(saved_pos);
575 }
576 stream.set_position(saved_pos);
577 let saved_pos = stream.position();
578 {
580 let saved_pos = stream.position();
581 if stream.expect_string(".num").is_ok() {
582 return Ok(Cmpop::Num);
583 }
584 stream.set_position(saved_pos);
585 }
586 stream.set_position(saved_pos);
587 let saved_pos = stream.position();
588 {
590 let saved_pos = stream.position();
591 if stream.expect_string(".nan").is_ok() {
592 return Ok(Cmpop::Nan);
593 }
594 stream.set_position(saved_pos);
595 }
596 stream.set_position(saved_pos);
597 let saved_pos = stream.position();
598 {
600 let saved_pos = stream.position();
601 if stream.expect_string(".eq").is_ok() {
602 return Ok(Cmpop::Eq);
603 }
604 stream.set_position(saved_pos);
605 }
606 stream.set_position(saved_pos);
607 let saved_pos = stream.position();
608 {
610 let saved_pos = stream.position();
611 if stream.expect_string(".ne").is_ok() {
612 return Ok(Cmpop::Ne);
613 }
614 stream.set_position(saved_pos);
615 }
616 stream.set_position(saved_pos);
617 let saved_pos = stream.position();
618 {
620 let saved_pos = stream.position();
621 if stream.expect_string(".lt").is_ok() {
622 return Ok(Cmpop::Lt);
623 }
624 stream.set_position(saved_pos);
625 }
626 stream.set_position(saved_pos);
627 let saved_pos = stream.position();
628 {
630 let saved_pos = stream.position();
631 if stream.expect_string(".le").is_ok() {
632 return Ok(Cmpop::Le);
633 }
634 stream.set_position(saved_pos);
635 }
636 stream.set_position(saved_pos);
637 let saved_pos = stream.position();
638 {
640 let saved_pos = stream.position();
641 if stream.expect_string(".gt").is_ok() {
642 return Ok(Cmpop::Gt);
643 }
644 stream.set_position(saved_pos);
645 }
646 stream.set_position(saved_pos);
647 let saved_pos = stream.position();
648 {
650 let saved_pos = stream.position();
651 if stream.expect_string(".ge").is_ok() {
652 return Ok(Cmpop::Ge);
653 }
654 stream.set_position(saved_pos);
655 }
656 stream.set_position(saved_pos);
657 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
658 let expected = &[".equ", ".neu", ".ltu", ".leu", ".gtu", ".geu", ".num", ".nan", ".eq", ".ne", ".lt", ".le", ".gt", ".ge"];
659 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
660 Err(crate::parser::unexpected_value(span, expected, found))
661 }
662 }
663
664 impl PtxParser for SetpCmpopFtzF16 {
665 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
666 stream.expect_string("setp")?;
667 let cmpop = Cmpop::parse(stream)?;
668 stream.expect_complete()?;
669 let saved_pos = stream.position();
670 let ftz = stream.expect_string(".ftz").is_ok();
671 if !ftz {
672 stream.set_position(saved_pos);
673 }
674 stream.expect_complete()?;
675 stream.expect_string(".f16")?;
676 let f16 = ();
677 stream.expect_complete()?;
678 let p = GeneralOperand::parse(stream)?;
679 stream.expect_complete()?;
680 stream.expect(&PtxToken::Comma)?;
681 let a = GeneralOperand::parse(stream)?;
682 stream.expect_complete()?;
683 stream.expect(&PtxToken::Comma)?;
684 let b = GeneralOperand::parse(stream)?;
685 stream.expect_complete()?;
686 stream.expect_complete()?;
687 stream.expect(&PtxToken::Semicolon)?;
688 Ok(SetpCmpopFtzF16 {
689 cmpop,
690 ftz,
691 f16,
692 p,
693 a,
694 b,
695 })
696 }
697 }
698
699
700 impl PtxParser for SetpCmpopBoolopFtzF16 {
701 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
702 stream.expect_string("setp")?;
703 let cmpop = Cmpop::parse(stream)?;
704 stream.expect_complete()?;
705 let boolop = Boolop::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(&PtxToken::Comma)?;
725 let c_op = stream.consume_if(|t| matches!(t, PtxToken::Exclaim)).is_some();
726 let c = GeneralOperand::parse(stream)?;
727 stream.expect_complete()?;
728 stream.expect_complete()?;
729 stream.expect(&PtxToken::Semicolon)?;
730 Ok(SetpCmpopBoolopFtzF16 {
731 cmpop,
732 boolop,
733 ftz,
734 f16,
735 p,
736 a,
737 b,
738 c_op,
739 c,
740 })
741 }
742 }
743
744
745 impl PtxParser for SetpCmpopFtzF16x2 {
746 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
747 stream.expect_string("setp")?;
748 let cmpop = Cmpop::parse(stream)?;
749 stream.expect_complete()?;
750 let saved_pos = stream.position();
751 let ftz = stream.expect_string(".ftz").is_ok();
752 if !ftz {
753 stream.set_position(saved_pos);
754 }
755 stream.expect_complete()?;
756 stream.expect_string(".f16x2")?;
757 let f16x2 = ();
758 stream.expect_complete()?;
759 let p = GeneralOperand::parse(stream)?;
760 stream.expect(&PtxToken::Pipe)?;
761 let q = GeneralOperand::parse(stream)?;
762 stream.expect_complete()?;
763 stream.expect(&PtxToken::Comma)?;
764 let a = GeneralOperand::parse(stream)?;
765 stream.expect_complete()?;
766 stream.expect(&PtxToken::Comma)?;
767 let b = GeneralOperand::parse(stream)?;
768 stream.expect_complete()?;
769 stream.expect_complete()?;
770 stream.expect(&PtxToken::Semicolon)?;
771 Ok(SetpCmpopFtzF16x2 {
772 cmpop,
773 ftz,
774 f16x2,
775 p,
776 q,
777 a,
778 b,
779 })
780 }
781 }
782
783
784 impl PtxParser for SetpCmpopBoolopFtzF16x2 {
785 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
786 stream.expect_string("setp")?;
787 let cmpop = Cmpop::parse(stream)?;
788 stream.expect_complete()?;
789 let boolop = Boolop::parse(stream)?;
790 stream.expect_complete()?;
791 let saved_pos = stream.position();
792 let ftz = stream.expect_string(".ftz").is_ok();
793 if !ftz {
794 stream.set_position(saved_pos);
795 }
796 stream.expect_complete()?;
797 stream.expect_string(".f16x2")?;
798 let f16x2 = ();
799 stream.expect_complete()?;
800 let p = GeneralOperand::parse(stream)?;
801 stream.expect(&PtxToken::Pipe)?;
802 let q = GeneralOperand::parse(stream)?;
803 stream.expect_complete()?;
804 stream.expect(&PtxToken::Comma)?;
805 let a = GeneralOperand::parse(stream)?;
806 stream.expect_complete()?;
807 stream.expect(&PtxToken::Comma)?;
808 let b = GeneralOperand::parse(stream)?;
809 stream.expect_complete()?;
810 stream.expect(&PtxToken::Comma)?;
811 let c_op = stream.consume_if(|t| matches!(t, PtxToken::Exclaim)).is_some();
812 let c = GeneralOperand::parse(stream)?;
813 stream.expect_complete()?;
814 stream.expect_complete()?;
815 stream.expect(&PtxToken::Semicolon)?;
816 Ok(SetpCmpopBoolopFtzF16x2 {
817 cmpop,
818 boolop,
819 ftz,
820 f16x2,
821 p,
822 q,
823 a,
824 b,
825 c_op,
826 c,
827 })
828 }
829 }
830
831
832 impl PtxParser for SetpCmpopBf16 {
833 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
834 stream.expect_string("setp")?;
835 let cmpop = Cmpop::parse(stream)?;
836 stream.expect_complete()?;
837 stream.expect_string(".bf16")?;
838 let bf16 = ();
839 stream.expect_complete()?;
840 let p = GeneralOperand::parse(stream)?;
841 stream.expect_complete()?;
842 stream.expect(&PtxToken::Comma)?;
843 let a = GeneralOperand::parse(stream)?;
844 stream.expect_complete()?;
845 stream.expect(&PtxToken::Comma)?;
846 let b = GeneralOperand::parse(stream)?;
847 stream.expect_complete()?;
848 stream.expect_complete()?;
849 stream.expect(&PtxToken::Semicolon)?;
850 Ok(SetpCmpopBf16 {
851 cmpop,
852 bf16,
853 p,
854 a,
855 b,
856 })
857 }
858 }
859
860
861 impl PtxParser for SetpCmpopBoolopBf16 {
862 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
863 stream.expect_string("setp")?;
864 let cmpop = Cmpop::parse(stream)?;
865 stream.expect_complete()?;
866 let boolop = Boolop::parse(stream)?;
867 stream.expect_complete()?;
868 stream.expect_string(".bf16")?;
869 let bf16 = ();
870 stream.expect_complete()?;
871 let p = GeneralOperand::parse(stream)?;
872 stream.expect_complete()?;
873 stream.expect(&PtxToken::Comma)?;
874 let a = GeneralOperand::parse(stream)?;
875 stream.expect_complete()?;
876 stream.expect(&PtxToken::Comma)?;
877 let b = GeneralOperand::parse(stream)?;
878 stream.expect_complete()?;
879 stream.expect(&PtxToken::Comma)?;
880 let c_op = stream.consume_if(|t| matches!(t, PtxToken::Exclaim)).is_some();
881 let c = GeneralOperand::parse(stream)?;
882 stream.expect_complete()?;
883 stream.expect_complete()?;
884 stream.expect(&PtxToken::Semicolon)?;
885 Ok(SetpCmpopBoolopBf16 {
886 cmpop,
887 boolop,
888 bf16,
889 p,
890 a,
891 b,
892 c_op,
893 c,
894 })
895 }
896 }
897
898
899 impl PtxParser for SetpCmpopBf16x2 {
900 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
901 stream.expect_string("setp")?;
902 let cmpop = Cmpop::parse(stream)?;
903 stream.expect_complete()?;
904 stream.expect_string(".bf16x2")?;
905 let bf16x2 = ();
906 stream.expect_complete()?;
907 let p = GeneralOperand::parse(stream)?;
908 stream.expect(&PtxToken::Pipe)?;
909 let q = GeneralOperand::parse(stream)?;
910 stream.expect_complete()?;
911 stream.expect(&PtxToken::Comma)?;
912 let a = GeneralOperand::parse(stream)?;
913 stream.expect_complete()?;
914 stream.expect(&PtxToken::Comma)?;
915 let b = GeneralOperand::parse(stream)?;
916 stream.expect_complete()?;
917 stream.expect_complete()?;
918 stream.expect(&PtxToken::Semicolon)?;
919 Ok(SetpCmpopBf16x2 {
920 cmpop,
921 bf16x2,
922 p,
923 q,
924 a,
925 b,
926 })
927 }
928 }
929
930
931 impl PtxParser for SetpCmpopBoolopBf16x2 {
932 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
933 stream.expect_string("setp")?;
934 let cmpop = Cmpop::parse(stream)?;
935 stream.expect_complete()?;
936 let boolop = Boolop::parse(stream)?;
937 stream.expect_complete()?;
938 stream.expect_string(".bf16x2")?;
939 let bf16x2 = ();
940 stream.expect_complete()?;
941 let p = GeneralOperand::parse(stream)?;
942 stream.expect(&PtxToken::Pipe)?;
943 let q = GeneralOperand::parse(stream)?;
944 stream.expect_complete()?;
945 stream.expect(&PtxToken::Comma)?;
946 let a = GeneralOperand::parse(stream)?;
947 stream.expect_complete()?;
948 stream.expect(&PtxToken::Comma)?;
949 let b = GeneralOperand::parse(stream)?;
950 stream.expect_complete()?;
951 stream.expect(&PtxToken::Comma)?;
952 let c_op = stream.consume_if(|t| matches!(t, PtxToken::Exclaim)).is_some();
953 let c = GeneralOperand::parse(stream)?;
954 stream.expect_complete()?;
955 stream.expect_complete()?;
956 stream.expect(&PtxToken::Semicolon)?;
957 Ok(SetpCmpopBoolopBf16x2 {
958 cmpop,
959 boolop,
960 bf16x2,
961 p,
962 q,
963 a,
964 b,
965 c_op,
966 c,
967 })
968 }
969 }
970
971
972}
973