ptx_parser/unparser/instruction/
vop2.rs

1//! Original PTX specification:
2//!
3//! // SIMD instruction with secondary SIMD merge operation
4//! vop2.dtype.atype.btype{.sat}  d{.mask}, a{.asel}, b{.bsel}, c;
5//! // SIMD instruction with secondary accumulate operation
6//! vop2.dtype.atype.btype.add  d{.mask}, a{.asel}, b{.bsel}, c;
7//! vop2  = { vadd2, vsub2, vavrg2, vabsdiff2, vmin2, vmax2 };
8//! .dtype = .atype = .btype = { .u32, .s32 };
9//! .mask  = { .h0, .h1, .h10 };  // defaults to .h10
10//! .asel  = .bsel  = { .h00, .h01, .h02, .h03, .h10, .h11, .h12, .h13, .h20, .h21, .h22, .h23, .h30, .h31, .h32, .h33 }; 
11//! // .asel defaults to .h10
12//! // .bsel defaults to .h32
13
14#![allow(unused)]
15
16use crate::lexer::PtxToken;
17use crate::unparser::{PtxUnparser, common::*};
18
19pub mod section_0 {
20    use super::*;
21    use crate::r#type::instruction::vop2::section_0::*;
22
23    impl PtxUnparser for Vadd2DtypeAtypeBtypeSat {
24        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
25            push_opcode(tokens, "vadd2");
26                    match &self.dtype {
27                            Dtype::U32 => {
28                                    push_directive(tokens, "u32");
29                            }
30                            Dtype::S32 => {
31                                    push_directive(tokens, "s32");
32                            }
33                    }
34                    match &self.atype {
35                            Atype::U32 => {
36                                    push_directive(tokens, "u32");
37                            }
38                            Atype::S32 => {
39                                    push_directive(tokens, "s32");
40                            }
41                    }
42                    match &self.btype {
43                            Btype::U32 => {
44                                    push_directive(tokens, "u32");
45                            }
46                            Btype::S32 => {
47                                    push_directive(tokens, "s32");
48                            }
49                    }
50                    if self.sat {
51                            push_directive(tokens, "sat");
52                    }
53                    self.d.unparse_tokens(tokens);
54                    if let Some(mask_0) = self.mask.as_ref() {
55                            match mask_0 {
56                                    Mask::H10 => {
57                                            push_directive(tokens, "h10");
58                                    }
59                                    Mask::H0 => {
60                                            push_directive(tokens, "h0");
61                                    }
62                                    Mask::H1 => {
63                                            push_directive(tokens, "h1");
64                                    }
65                            }
66                    }
67            tokens.push(PtxToken::Comma);
68                    self.a.unparse_tokens(tokens);
69                    if let Some(asel_1) = self.asel.as_ref() {
70                            match asel_1 {
71                                    Asel::H00 => {
72                                            push_directive(tokens, "h00");
73                                    }
74                                    Asel::H01 => {
75                                            push_directive(tokens, "h01");
76                                    }
77                                    Asel::H02 => {
78                                            push_directive(tokens, "h02");
79                                    }
80                                    Asel::H03 => {
81                                            push_directive(tokens, "h03");
82                                    }
83                                    Asel::H10 => {
84                                            push_directive(tokens, "h10");
85                                    }
86                                    Asel::H11 => {
87                                            push_directive(tokens, "h11");
88                                    }
89                                    Asel::H12 => {
90                                            push_directive(tokens, "h12");
91                                    }
92                                    Asel::H13 => {
93                                            push_directive(tokens, "h13");
94                                    }
95                                    Asel::H20 => {
96                                            push_directive(tokens, "h20");
97                                    }
98                                    Asel::H21 => {
99                                            push_directive(tokens, "h21");
100                                    }
101                                    Asel::H22 => {
102                                            push_directive(tokens, "h22");
103                                    }
104                                    Asel::H23 => {
105                                            push_directive(tokens, "h23");
106                                    }
107                                    Asel::H30 => {
108                                            push_directive(tokens, "h30");
109                                    }
110                                    Asel::H31 => {
111                                            push_directive(tokens, "h31");
112                                    }
113                                    Asel::H32 => {
114                                            push_directive(tokens, "h32");
115                                    }
116                                    Asel::H33 => {
117                                            push_directive(tokens, "h33");
118                                    }
119                            }
120                    }
121            tokens.push(PtxToken::Comma);
122                    self.b.unparse_tokens(tokens);
123                    if let Some(bsel_2) = self.bsel.as_ref() {
124                            match bsel_2 {
125                                    Bsel::H00 => {
126                                            push_directive(tokens, "h00");
127                                    }
128                                    Bsel::H01 => {
129                                            push_directive(tokens, "h01");
130                                    }
131                                    Bsel::H02 => {
132                                            push_directive(tokens, "h02");
133                                    }
134                                    Bsel::H03 => {
135                                            push_directive(tokens, "h03");
136                                    }
137                                    Bsel::H10 => {
138                                            push_directive(tokens, "h10");
139                                    }
140                                    Bsel::H11 => {
141                                            push_directive(tokens, "h11");
142                                    }
143                                    Bsel::H12 => {
144                                            push_directive(tokens, "h12");
145                                    }
146                                    Bsel::H13 => {
147                                            push_directive(tokens, "h13");
148                                    }
149                                    Bsel::H20 => {
150                                            push_directive(tokens, "h20");
151                                    }
152                                    Bsel::H21 => {
153                                            push_directive(tokens, "h21");
154                                    }
155                                    Bsel::H22 => {
156                                            push_directive(tokens, "h22");
157                                    }
158                                    Bsel::H23 => {
159                                            push_directive(tokens, "h23");
160                                    }
161                                    Bsel::H30 => {
162                                            push_directive(tokens, "h30");
163                                    }
164                                    Bsel::H31 => {
165                                            push_directive(tokens, "h31");
166                                    }
167                                    Bsel::H32 => {
168                                            push_directive(tokens, "h32");
169                                    }
170                                    Bsel::H33 => {
171                                            push_directive(tokens, "h33");
172                                    }
173                            }
174                    }
175            tokens.push(PtxToken::Comma);
176                    self.c.unparse_tokens(tokens);
177            tokens.push(PtxToken::Semicolon);
178        }
179    }
180
181    impl PtxUnparser for Vsub2DtypeAtypeBtypeSat {
182        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
183            push_opcode(tokens, "vsub2");
184                    match &self.dtype {
185                            Dtype::U32 => {
186                                    push_directive(tokens, "u32");
187                            }
188                            Dtype::S32 => {
189                                    push_directive(tokens, "s32");
190                            }
191                    }
192                    match &self.atype {
193                            Atype::U32 => {
194                                    push_directive(tokens, "u32");
195                            }
196                            Atype::S32 => {
197                                    push_directive(tokens, "s32");
198                            }
199                    }
200                    match &self.btype {
201                            Btype::U32 => {
202                                    push_directive(tokens, "u32");
203                            }
204                            Btype::S32 => {
205                                    push_directive(tokens, "s32");
206                            }
207                    }
208                    if self.sat {
209                            push_directive(tokens, "sat");
210                    }
211                    self.d.unparse_tokens(tokens);
212                    if let Some(mask_3) = self.mask.as_ref() {
213                            match mask_3 {
214                                    Mask::H10 => {
215                                            push_directive(tokens, "h10");
216                                    }
217                                    Mask::H0 => {
218                                            push_directive(tokens, "h0");
219                                    }
220                                    Mask::H1 => {
221                                            push_directive(tokens, "h1");
222                                    }
223                            }
224                    }
225            tokens.push(PtxToken::Comma);
226                    self.a.unparse_tokens(tokens);
227                    if let Some(asel_4) = self.asel.as_ref() {
228                            match asel_4 {
229                                    Asel::H00 => {
230                                            push_directive(tokens, "h00");
231                                    }
232                                    Asel::H01 => {
233                                            push_directive(tokens, "h01");
234                                    }
235                                    Asel::H02 => {
236                                            push_directive(tokens, "h02");
237                                    }
238                                    Asel::H03 => {
239                                            push_directive(tokens, "h03");
240                                    }
241                                    Asel::H10 => {
242                                            push_directive(tokens, "h10");
243                                    }
244                                    Asel::H11 => {
245                                            push_directive(tokens, "h11");
246                                    }
247                                    Asel::H12 => {
248                                            push_directive(tokens, "h12");
249                                    }
250                                    Asel::H13 => {
251                                            push_directive(tokens, "h13");
252                                    }
253                                    Asel::H20 => {
254                                            push_directive(tokens, "h20");
255                                    }
256                                    Asel::H21 => {
257                                            push_directive(tokens, "h21");
258                                    }
259                                    Asel::H22 => {
260                                            push_directive(tokens, "h22");
261                                    }
262                                    Asel::H23 => {
263                                            push_directive(tokens, "h23");
264                                    }
265                                    Asel::H30 => {
266                                            push_directive(tokens, "h30");
267                                    }
268                                    Asel::H31 => {
269                                            push_directive(tokens, "h31");
270                                    }
271                                    Asel::H32 => {
272                                            push_directive(tokens, "h32");
273                                    }
274                                    Asel::H33 => {
275                                            push_directive(tokens, "h33");
276                                    }
277                            }
278                    }
279            tokens.push(PtxToken::Comma);
280                    self.b.unparse_tokens(tokens);
281                    if let Some(bsel_5) = self.bsel.as_ref() {
282                            match bsel_5 {
283                                    Bsel::H00 => {
284                                            push_directive(tokens, "h00");
285                                    }
286                                    Bsel::H01 => {
287                                            push_directive(tokens, "h01");
288                                    }
289                                    Bsel::H02 => {
290                                            push_directive(tokens, "h02");
291                                    }
292                                    Bsel::H03 => {
293                                            push_directive(tokens, "h03");
294                                    }
295                                    Bsel::H10 => {
296                                            push_directive(tokens, "h10");
297                                    }
298                                    Bsel::H11 => {
299                                            push_directive(tokens, "h11");
300                                    }
301                                    Bsel::H12 => {
302                                            push_directive(tokens, "h12");
303                                    }
304                                    Bsel::H13 => {
305                                            push_directive(tokens, "h13");
306                                    }
307                                    Bsel::H20 => {
308                                            push_directive(tokens, "h20");
309                                    }
310                                    Bsel::H21 => {
311                                            push_directive(tokens, "h21");
312                                    }
313                                    Bsel::H22 => {
314                                            push_directive(tokens, "h22");
315                                    }
316                                    Bsel::H23 => {
317                                            push_directive(tokens, "h23");
318                                    }
319                                    Bsel::H30 => {
320                                            push_directive(tokens, "h30");
321                                    }
322                                    Bsel::H31 => {
323                                            push_directive(tokens, "h31");
324                                    }
325                                    Bsel::H32 => {
326                                            push_directive(tokens, "h32");
327                                    }
328                                    Bsel::H33 => {
329                                            push_directive(tokens, "h33");
330                                    }
331                            }
332                    }
333            tokens.push(PtxToken::Comma);
334                    self.c.unparse_tokens(tokens);
335            tokens.push(PtxToken::Semicolon);
336        }
337    }
338
339    impl PtxUnparser for Vavrg2DtypeAtypeBtypeSat {
340        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
341            push_opcode(tokens, "vavrg2");
342                    match &self.dtype {
343                            Dtype::U32 => {
344                                    push_directive(tokens, "u32");
345                            }
346                            Dtype::S32 => {
347                                    push_directive(tokens, "s32");
348                            }
349                    }
350                    match &self.atype {
351                            Atype::U32 => {
352                                    push_directive(tokens, "u32");
353                            }
354                            Atype::S32 => {
355                                    push_directive(tokens, "s32");
356                            }
357                    }
358                    match &self.btype {
359                            Btype::U32 => {
360                                    push_directive(tokens, "u32");
361                            }
362                            Btype::S32 => {
363                                    push_directive(tokens, "s32");
364                            }
365                    }
366                    if self.sat {
367                            push_directive(tokens, "sat");
368                    }
369                    self.d.unparse_tokens(tokens);
370                    if let Some(mask_6) = self.mask.as_ref() {
371                            match mask_6 {
372                                    Mask::H10 => {
373                                            push_directive(tokens, "h10");
374                                    }
375                                    Mask::H0 => {
376                                            push_directive(tokens, "h0");
377                                    }
378                                    Mask::H1 => {
379                                            push_directive(tokens, "h1");
380                                    }
381                            }
382                    }
383            tokens.push(PtxToken::Comma);
384                    self.a.unparse_tokens(tokens);
385                    if let Some(asel_7) = self.asel.as_ref() {
386                            match asel_7 {
387                                    Asel::H00 => {
388                                            push_directive(tokens, "h00");
389                                    }
390                                    Asel::H01 => {
391                                            push_directive(tokens, "h01");
392                                    }
393                                    Asel::H02 => {
394                                            push_directive(tokens, "h02");
395                                    }
396                                    Asel::H03 => {
397                                            push_directive(tokens, "h03");
398                                    }
399                                    Asel::H10 => {
400                                            push_directive(tokens, "h10");
401                                    }
402                                    Asel::H11 => {
403                                            push_directive(tokens, "h11");
404                                    }
405                                    Asel::H12 => {
406                                            push_directive(tokens, "h12");
407                                    }
408                                    Asel::H13 => {
409                                            push_directive(tokens, "h13");
410                                    }
411                                    Asel::H20 => {
412                                            push_directive(tokens, "h20");
413                                    }
414                                    Asel::H21 => {
415                                            push_directive(tokens, "h21");
416                                    }
417                                    Asel::H22 => {
418                                            push_directive(tokens, "h22");
419                                    }
420                                    Asel::H23 => {
421                                            push_directive(tokens, "h23");
422                                    }
423                                    Asel::H30 => {
424                                            push_directive(tokens, "h30");
425                                    }
426                                    Asel::H31 => {
427                                            push_directive(tokens, "h31");
428                                    }
429                                    Asel::H32 => {
430                                            push_directive(tokens, "h32");
431                                    }
432                                    Asel::H33 => {
433                                            push_directive(tokens, "h33");
434                                    }
435                            }
436                    }
437            tokens.push(PtxToken::Comma);
438                    self.b.unparse_tokens(tokens);
439                    if let Some(bsel_8) = self.bsel.as_ref() {
440                            match bsel_8 {
441                                    Bsel::H00 => {
442                                            push_directive(tokens, "h00");
443                                    }
444                                    Bsel::H01 => {
445                                            push_directive(tokens, "h01");
446                                    }
447                                    Bsel::H02 => {
448                                            push_directive(tokens, "h02");
449                                    }
450                                    Bsel::H03 => {
451                                            push_directive(tokens, "h03");
452                                    }
453                                    Bsel::H10 => {
454                                            push_directive(tokens, "h10");
455                                    }
456                                    Bsel::H11 => {
457                                            push_directive(tokens, "h11");
458                                    }
459                                    Bsel::H12 => {
460                                            push_directive(tokens, "h12");
461                                    }
462                                    Bsel::H13 => {
463                                            push_directive(tokens, "h13");
464                                    }
465                                    Bsel::H20 => {
466                                            push_directive(tokens, "h20");
467                                    }
468                                    Bsel::H21 => {
469                                            push_directive(tokens, "h21");
470                                    }
471                                    Bsel::H22 => {
472                                            push_directive(tokens, "h22");
473                                    }
474                                    Bsel::H23 => {
475                                            push_directive(tokens, "h23");
476                                    }
477                                    Bsel::H30 => {
478                                            push_directive(tokens, "h30");
479                                    }
480                                    Bsel::H31 => {
481                                            push_directive(tokens, "h31");
482                                    }
483                                    Bsel::H32 => {
484                                            push_directive(tokens, "h32");
485                                    }
486                                    Bsel::H33 => {
487                                            push_directive(tokens, "h33");
488                                    }
489                            }
490                    }
491            tokens.push(PtxToken::Comma);
492                    self.c.unparse_tokens(tokens);
493            tokens.push(PtxToken::Semicolon);
494        }
495    }
496
497    impl PtxUnparser for Vabsdiff2DtypeAtypeBtypeSat {
498        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
499            push_opcode(tokens, "vabsdiff2");
500                    match &self.dtype {
501                            Dtype::U32 => {
502                                    push_directive(tokens, "u32");
503                            }
504                            Dtype::S32 => {
505                                    push_directive(tokens, "s32");
506                            }
507                    }
508                    match &self.atype {
509                            Atype::U32 => {
510                                    push_directive(tokens, "u32");
511                            }
512                            Atype::S32 => {
513                                    push_directive(tokens, "s32");
514                            }
515                    }
516                    match &self.btype {
517                            Btype::U32 => {
518                                    push_directive(tokens, "u32");
519                            }
520                            Btype::S32 => {
521                                    push_directive(tokens, "s32");
522                            }
523                    }
524                    if self.sat {
525                            push_directive(tokens, "sat");
526                    }
527                    self.d.unparse_tokens(tokens);
528                    if let Some(mask_9) = self.mask.as_ref() {
529                            match mask_9 {
530                                    Mask::H10 => {
531                                            push_directive(tokens, "h10");
532                                    }
533                                    Mask::H0 => {
534                                            push_directive(tokens, "h0");
535                                    }
536                                    Mask::H1 => {
537                                            push_directive(tokens, "h1");
538                                    }
539                            }
540                    }
541            tokens.push(PtxToken::Comma);
542                    self.a.unparse_tokens(tokens);
543                    if let Some(asel_10) = self.asel.as_ref() {
544                            match asel_10 {
545                                    Asel::H00 => {
546                                            push_directive(tokens, "h00");
547                                    }
548                                    Asel::H01 => {
549                                            push_directive(tokens, "h01");
550                                    }
551                                    Asel::H02 => {
552                                            push_directive(tokens, "h02");
553                                    }
554                                    Asel::H03 => {
555                                            push_directive(tokens, "h03");
556                                    }
557                                    Asel::H10 => {
558                                            push_directive(tokens, "h10");
559                                    }
560                                    Asel::H11 => {
561                                            push_directive(tokens, "h11");
562                                    }
563                                    Asel::H12 => {
564                                            push_directive(tokens, "h12");
565                                    }
566                                    Asel::H13 => {
567                                            push_directive(tokens, "h13");
568                                    }
569                                    Asel::H20 => {
570                                            push_directive(tokens, "h20");
571                                    }
572                                    Asel::H21 => {
573                                            push_directive(tokens, "h21");
574                                    }
575                                    Asel::H22 => {
576                                            push_directive(tokens, "h22");
577                                    }
578                                    Asel::H23 => {
579                                            push_directive(tokens, "h23");
580                                    }
581                                    Asel::H30 => {
582                                            push_directive(tokens, "h30");
583                                    }
584                                    Asel::H31 => {
585                                            push_directive(tokens, "h31");
586                                    }
587                                    Asel::H32 => {
588                                            push_directive(tokens, "h32");
589                                    }
590                                    Asel::H33 => {
591                                            push_directive(tokens, "h33");
592                                    }
593                            }
594                    }
595            tokens.push(PtxToken::Comma);
596                    self.b.unparse_tokens(tokens);
597                    if let Some(bsel_11) = self.bsel.as_ref() {
598                            match bsel_11 {
599                                    Bsel::H00 => {
600                                            push_directive(tokens, "h00");
601                                    }
602                                    Bsel::H01 => {
603                                            push_directive(tokens, "h01");
604                                    }
605                                    Bsel::H02 => {
606                                            push_directive(tokens, "h02");
607                                    }
608                                    Bsel::H03 => {
609                                            push_directive(tokens, "h03");
610                                    }
611                                    Bsel::H10 => {
612                                            push_directive(tokens, "h10");
613                                    }
614                                    Bsel::H11 => {
615                                            push_directive(tokens, "h11");
616                                    }
617                                    Bsel::H12 => {
618                                            push_directive(tokens, "h12");
619                                    }
620                                    Bsel::H13 => {
621                                            push_directive(tokens, "h13");
622                                    }
623                                    Bsel::H20 => {
624                                            push_directive(tokens, "h20");
625                                    }
626                                    Bsel::H21 => {
627                                            push_directive(tokens, "h21");
628                                    }
629                                    Bsel::H22 => {
630                                            push_directive(tokens, "h22");
631                                    }
632                                    Bsel::H23 => {
633                                            push_directive(tokens, "h23");
634                                    }
635                                    Bsel::H30 => {
636                                            push_directive(tokens, "h30");
637                                    }
638                                    Bsel::H31 => {
639                                            push_directive(tokens, "h31");
640                                    }
641                                    Bsel::H32 => {
642                                            push_directive(tokens, "h32");
643                                    }
644                                    Bsel::H33 => {
645                                            push_directive(tokens, "h33");
646                                    }
647                            }
648                    }
649            tokens.push(PtxToken::Comma);
650                    self.c.unparse_tokens(tokens);
651            tokens.push(PtxToken::Semicolon);
652        }
653    }
654
655    impl PtxUnparser for Vmin2DtypeAtypeBtypeSat {
656        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
657            push_opcode(tokens, "vmin2");
658                    match &self.dtype {
659                            Dtype::U32 => {
660                                    push_directive(tokens, "u32");
661                            }
662                            Dtype::S32 => {
663                                    push_directive(tokens, "s32");
664                            }
665                    }
666                    match &self.atype {
667                            Atype::U32 => {
668                                    push_directive(tokens, "u32");
669                            }
670                            Atype::S32 => {
671                                    push_directive(tokens, "s32");
672                            }
673                    }
674                    match &self.btype {
675                            Btype::U32 => {
676                                    push_directive(tokens, "u32");
677                            }
678                            Btype::S32 => {
679                                    push_directive(tokens, "s32");
680                            }
681                    }
682                    if self.sat {
683                            push_directive(tokens, "sat");
684                    }
685                    self.d.unparse_tokens(tokens);
686                    if let Some(mask_12) = self.mask.as_ref() {
687                            match mask_12 {
688                                    Mask::H10 => {
689                                            push_directive(tokens, "h10");
690                                    }
691                                    Mask::H0 => {
692                                            push_directive(tokens, "h0");
693                                    }
694                                    Mask::H1 => {
695                                            push_directive(tokens, "h1");
696                                    }
697                            }
698                    }
699            tokens.push(PtxToken::Comma);
700                    self.a.unparse_tokens(tokens);
701                    if let Some(asel_13) = self.asel.as_ref() {
702                            match asel_13 {
703                                    Asel::H00 => {
704                                            push_directive(tokens, "h00");
705                                    }
706                                    Asel::H01 => {
707                                            push_directive(tokens, "h01");
708                                    }
709                                    Asel::H02 => {
710                                            push_directive(tokens, "h02");
711                                    }
712                                    Asel::H03 => {
713                                            push_directive(tokens, "h03");
714                                    }
715                                    Asel::H10 => {
716                                            push_directive(tokens, "h10");
717                                    }
718                                    Asel::H11 => {
719                                            push_directive(tokens, "h11");
720                                    }
721                                    Asel::H12 => {
722                                            push_directive(tokens, "h12");
723                                    }
724                                    Asel::H13 => {
725                                            push_directive(tokens, "h13");
726                                    }
727                                    Asel::H20 => {
728                                            push_directive(tokens, "h20");
729                                    }
730                                    Asel::H21 => {
731                                            push_directive(tokens, "h21");
732                                    }
733                                    Asel::H22 => {
734                                            push_directive(tokens, "h22");
735                                    }
736                                    Asel::H23 => {
737                                            push_directive(tokens, "h23");
738                                    }
739                                    Asel::H30 => {
740                                            push_directive(tokens, "h30");
741                                    }
742                                    Asel::H31 => {
743                                            push_directive(tokens, "h31");
744                                    }
745                                    Asel::H32 => {
746                                            push_directive(tokens, "h32");
747                                    }
748                                    Asel::H33 => {
749                                            push_directive(tokens, "h33");
750                                    }
751                            }
752                    }
753            tokens.push(PtxToken::Comma);
754                    self.b.unparse_tokens(tokens);
755                    if let Some(bsel_14) = self.bsel.as_ref() {
756                            match bsel_14 {
757                                    Bsel::H00 => {
758                                            push_directive(tokens, "h00");
759                                    }
760                                    Bsel::H01 => {
761                                            push_directive(tokens, "h01");
762                                    }
763                                    Bsel::H02 => {
764                                            push_directive(tokens, "h02");
765                                    }
766                                    Bsel::H03 => {
767                                            push_directive(tokens, "h03");
768                                    }
769                                    Bsel::H10 => {
770                                            push_directive(tokens, "h10");
771                                    }
772                                    Bsel::H11 => {
773                                            push_directive(tokens, "h11");
774                                    }
775                                    Bsel::H12 => {
776                                            push_directive(tokens, "h12");
777                                    }
778                                    Bsel::H13 => {
779                                            push_directive(tokens, "h13");
780                                    }
781                                    Bsel::H20 => {
782                                            push_directive(tokens, "h20");
783                                    }
784                                    Bsel::H21 => {
785                                            push_directive(tokens, "h21");
786                                    }
787                                    Bsel::H22 => {
788                                            push_directive(tokens, "h22");
789                                    }
790                                    Bsel::H23 => {
791                                            push_directive(tokens, "h23");
792                                    }
793                                    Bsel::H30 => {
794                                            push_directive(tokens, "h30");
795                                    }
796                                    Bsel::H31 => {
797                                            push_directive(tokens, "h31");
798                                    }
799                                    Bsel::H32 => {
800                                            push_directive(tokens, "h32");
801                                    }
802                                    Bsel::H33 => {
803                                            push_directive(tokens, "h33");
804                                    }
805                            }
806                    }
807            tokens.push(PtxToken::Comma);
808                    self.c.unparse_tokens(tokens);
809            tokens.push(PtxToken::Semicolon);
810        }
811    }
812
813    impl PtxUnparser for Vmax2DtypeAtypeBtypeSat {
814        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
815            push_opcode(tokens, "vmax2");
816                    match &self.dtype {
817                            Dtype::U32 => {
818                                    push_directive(tokens, "u32");
819                            }
820                            Dtype::S32 => {
821                                    push_directive(tokens, "s32");
822                            }
823                    }
824                    match &self.atype {
825                            Atype::U32 => {
826                                    push_directive(tokens, "u32");
827                            }
828                            Atype::S32 => {
829                                    push_directive(tokens, "s32");
830                            }
831                    }
832                    match &self.btype {
833                            Btype::U32 => {
834                                    push_directive(tokens, "u32");
835                            }
836                            Btype::S32 => {
837                                    push_directive(tokens, "s32");
838                            }
839                    }
840                    if self.sat {
841                            push_directive(tokens, "sat");
842                    }
843                    self.d.unparse_tokens(tokens);
844                    if let Some(mask_15) = self.mask.as_ref() {
845                            match mask_15 {
846                                    Mask::H10 => {
847                                            push_directive(tokens, "h10");
848                                    }
849                                    Mask::H0 => {
850                                            push_directive(tokens, "h0");
851                                    }
852                                    Mask::H1 => {
853                                            push_directive(tokens, "h1");
854                                    }
855                            }
856                    }
857            tokens.push(PtxToken::Comma);
858                    self.a.unparse_tokens(tokens);
859                    if let Some(asel_16) = self.asel.as_ref() {
860                            match asel_16 {
861                                    Asel::H00 => {
862                                            push_directive(tokens, "h00");
863                                    }
864                                    Asel::H01 => {
865                                            push_directive(tokens, "h01");
866                                    }
867                                    Asel::H02 => {
868                                            push_directive(tokens, "h02");
869                                    }
870                                    Asel::H03 => {
871                                            push_directive(tokens, "h03");
872                                    }
873                                    Asel::H10 => {
874                                            push_directive(tokens, "h10");
875                                    }
876                                    Asel::H11 => {
877                                            push_directive(tokens, "h11");
878                                    }
879                                    Asel::H12 => {
880                                            push_directive(tokens, "h12");
881                                    }
882                                    Asel::H13 => {
883                                            push_directive(tokens, "h13");
884                                    }
885                                    Asel::H20 => {
886                                            push_directive(tokens, "h20");
887                                    }
888                                    Asel::H21 => {
889                                            push_directive(tokens, "h21");
890                                    }
891                                    Asel::H22 => {
892                                            push_directive(tokens, "h22");
893                                    }
894                                    Asel::H23 => {
895                                            push_directive(tokens, "h23");
896                                    }
897                                    Asel::H30 => {
898                                            push_directive(tokens, "h30");
899                                    }
900                                    Asel::H31 => {
901                                            push_directive(tokens, "h31");
902                                    }
903                                    Asel::H32 => {
904                                            push_directive(tokens, "h32");
905                                    }
906                                    Asel::H33 => {
907                                            push_directive(tokens, "h33");
908                                    }
909                            }
910                    }
911            tokens.push(PtxToken::Comma);
912                    self.b.unparse_tokens(tokens);
913                    if let Some(bsel_17) = self.bsel.as_ref() {
914                            match bsel_17 {
915                                    Bsel::H00 => {
916                                            push_directive(tokens, "h00");
917                                    }
918                                    Bsel::H01 => {
919                                            push_directive(tokens, "h01");
920                                    }
921                                    Bsel::H02 => {
922                                            push_directive(tokens, "h02");
923                                    }
924                                    Bsel::H03 => {
925                                            push_directive(tokens, "h03");
926                                    }
927                                    Bsel::H10 => {
928                                            push_directive(tokens, "h10");
929                                    }
930                                    Bsel::H11 => {
931                                            push_directive(tokens, "h11");
932                                    }
933                                    Bsel::H12 => {
934                                            push_directive(tokens, "h12");
935                                    }
936                                    Bsel::H13 => {
937                                            push_directive(tokens, "h13");
938                                    }
939                                    Bsel::H20 => {
940                                            push_directive(tokens, "h20");
941                                    }
942                                    Bsel::H21 => {
943                                            push_directive(tokens, "h21");
944                                    }
945                                    Bsel::H22 => {
946                                            push_directive(tokens, "h22");
947                                    }
948                                    Bsel::H23 => {
949                                            push_directive(tokens, "h23");
950                                    }
951                                    Bsel::H30 => {
952                                            push_directive(tokens, "h30");
953                                    }
954                                    Bsel::H31 => {
955                                            push_directive(tokens, "h31");
956                                    }
957                                    Bsel::H32 => {
958                                            push_directive(tokens, "h32");
959                                    }
960                                    Bsel::H33 => {
961                                            push_directive(tokens, "h33");
962                                    }
963                            }
964                    }
965            tokens.push(PtxToken::Comma);
966                    self.c.unparse_tokens(tokens);
967            tokens.push(PtxToken::Semicolon);
968        }
969    }
970
971    impl PtxUnparser for Vadd2DtypeAtypeBtypeAdd {
972        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
973            push_opcode(tokens, "vadd2");
974                    match &self.dtype {
975                            Dtype::U32 => {
976                                    push_directive(tokens, "u32");
977                            }
978                            Dtype::S32 => {
979                                    push_directive(tokens, "s32");
980                            }
981                    }
982                    match &self.atype {
983                            Atype::U32 => {
984                                    push_directive(tokens, "u32");
985                            }
986                            Atype::S32 => {
987                                    push_directive(tokens, "s32");
988                            }
989                    }
990                    match &self.btype {
991                            Btype::U32 => {
992                                    push_directive(tokens, "u32");
993                            }
994                            Btype::S32 => {
995                                    push_directive(tokens, "s32");
996                            }
997                    }
998                    push_directive(tokens, "add");
999                    self.d.unparse_tokens(tokens);
1000                    if let Some(mask_18) = self.mask.as_ref() {
1001                            match mask_18 {
1002                                    Mask::H10 => {
1003                                            push_directive(tokens, "h10");
1004                                    }
1005                                    Mask::H0 => {
1006                                            push_directive(tokens, "h0");
1007                                    }
1008                                    Mask::H1 => {
1009                                            push_directive(tokens, "h1");
1010                                    }
1011                            }
1012                    }
1013            tokens.push(PtxToken::Comma);
1014                    self.a.unparse_tokens(tokens);
1015                    if let Some(asel_19) = self.asel.as_ref() {
1016                            match asel_19 {
1017                                    Asel::H00 => {
1018                                            push_directive(tokens, "h00");
1019                                    }
1020                                    Asel::H01 => {
1021                                            push_directive(tokens, "h01");
1022                                    }
1023                                    Asel::H02 => {
1024                                            push_directive(tokens, "h02");
1025                                    }
1026                                    Asel::H03 => {
1027                                            push_directive(tokens, "h03");
1028                                    }
1029                                    Asel::H10 => {
1030                                            push_directive(tokens, "h10");
1031                                    }
1032                                    Asel::H11 => {
1033                                            push_directive(tokens, "h11");
1034                                    }
1035                                    Asel::H12 => {
1036                                            push_directive(tokens, "h12");
1037                                    }
1038                                    Asel::H13 => {
1039                                            push_directive(tokens, "h13");
1040                                    }
1041                                    Asel::H20 => {
1042                                            push_directive(tokens, "h20");
1043                                    }
1044                                    Asel::H21 => {
1045                                            push_directive(tokens, "h21");
1046                                    }
1047                                    Asel::H22 => {
1048                                            push_directive(tokens, "h22");
1049                                    }
1050                                    Asel::H23 => {
1051                                            push_directive(tokens, "h23");
1052                                    }
1053                                    Asel::H30 => {
1054                                            push_directive(tokens, "h30");
1055                                    }
1056                                    Asel::H31 => {
1057                                            push_directive(tokens, "h31");
1058                                    }
1059                                    Asel::H32 => {
1060                                            push_directive(tokens, "h32");
1061                                    }
1062                                    Asel::H33 => {
1063                                            push_directive(tokens, "h33");
1064                                    }
1065                            }
1066                    }
1067            tokens.push(PtxToken::Comma);
1068                    self.b.unparse_tokens(tokens);
1069                    if let Some(bsel_20) = self.bsel.as_ref() {
1070                            match bsel_20 {
1071                                    Bsel::H00 => {
1072                                            push_directive(tokens, "h00");
1073                                    }
1074                                    Bsel::H01 => {
1075                                            push_directive(tokens, "h01");
1076                                    }
1077                                    Bsel::H02 => {
1078                                            push_directive(tokens, "h02");
1079                                    }
1080                                    Bsel::H03 => {
1081                                            push_directive(tokens, "h03");
1082                                    }
1083                                    Bsel::H10 => {
1084                                            push_directive(tokens, "h10");
1085                                    }
1086                                    Bsel::H11 => {
1087                                            push_directive(tokens, "h11");
1088                                    }
1089                                    Bsel::H12 => {
1090                                            push_directive(tokens, "h12");
1091                                    }
1092                                    Bsel::H13 => {
1093                                            push_directive(tokens, "h13");
1094                                    }
1095                                    Bsel::H20 => {
1096                                            push_directive(tokens, "h20");
1097                                    }
1098                                    Bsel::H21 => {
1099                                            push_directive(tokens, "h21");
1100                                    }
1101                                    Bsel::H22 => {
1102                                            push_directive(tokens, "h22");
1103                                    }
1104                                    Bsel::H23 => {
1105                                            push_directive(tokens, "h23");
1106                                    }
1107                                    Bsel::H30 => {
1108                                            push_directive(tokens, "h30");
1109                                    }
1110                                    Bsel::H31 => {
1111                                            push_directive(tokens, "h31");
1112                                    }
1113                                    Bsel::H32 => {
1114                                            push_directive(tokens, "h32");
1115                                    }
1116                                    Bsel::H33 => {
1117                                            push_directive(tokens, "h33");
1118                                    }
1119                            }
1120                    }
1121            tokens.push(PtxToken::Comma);
1122                    self.c.unparse_tokens(tokens);
1123            tokens.push(PtxToken::Semicolon);
1124        }
1125    }
1126
1127    impl PtxUnparser for Vsub2DtypeAtypeBtypeAdd {
1128        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1129            push_opcode(tokens, "vsub2");
1130                    match &self.dtype {
1131                            Dtype::U32 => {
1132                                    push_directive(tokens, "u32");
1133                            }
1134                            Dtype::S32 => {
1135                                    push_directive(tokens, "s32");
1136                            }
1137                    }
1138                    match &self.atype {
1139                            Atype::U32 => {
1140                                    push_directive(tokens, "u32");
1141                            }
1142                            Atype::S32 => {
1143                                    push_directive(tokens, "s32");
1144                            }
1145                    }
1146                    match &self.btype {
1147                            Btype::U32 => {
1148                                    push_directive(tokens, "u32");
1149                            }
1150                            Btype::S32 => {
1151                                    push_directive(tokens, "s32");
1152                            }
1153                    }
1154                    push_directive(tokens, "add");
1155                    self.d.unparse_tokens(tokens);
1156                    if let Some(mask_21) = self.mask.as_ref() {
1157                            match mask_21 {
1158                                    Mask::H10 => {
1159                                            push_directive(tokens, "h10");
1160                                    }
1161                                    Mask::H0 => {
1162                                            push_directive(tokens, "h0");
1163                                    }
1164                                    Mask::H1 => {
1165                                            push_directive(tokens, "h1");
1166                                    }
1167                            }
1168                    }
1169            tokens.push(PtxToken::Comma);
1170                    self.a.unparse_tokens(tokens);
1171                    if let Some(asel_22) = self.asel.as_ref() {
1172                            match asel_22 {
1173                                    Asel::H00 => {
1174                                            push_directive(tokens, "h00");
1175                                    }
1176                                    Asel::H01 => {
1177                                            push_directive(tokens, "h01");
1178                                    }
1179                                    Asel::H02 => {
1180                                            push_directive(tokens, "h02");
1181                                    }
1182                                    Asel::H03 => {
1183                                            push_directive(tokens, "h03");
1184                                    }
1185                                    Asel::H10 => {
1186                                            push_directive(tokens, "h10");
1187                                    }
1188                                    Asel::H11 => {
1189                                            push_directive(tokens, "h11");
1190                                    }
1191                                    Asel::H12 => {
1192                                            push_directive(tokens, "h12");
1193                                    }
1194                                    Asel::H13 => {
1195                                            push_directive(tokens, "h13");
1196                                    }
1197                                    Asel::H20 => {
1198                                            push_directive(tokens, "h20");
1199                                    }
1200                                    Asel::H21 => {
1201                                            push_directive(tokens, "h21");
1202                                    }
1203                                    Asel::H22 => {
1204                                            push_directive(tokens, "h22");
1205                                    }
1206                                    Asel::H23 => {
1207                                            push_directive(tokens, "h23");
1208                                    }
1209                                    Asel::H30 => {
1210                                            push_directive(tokens, "h30");
1211                                    }
1212                                    Asel::H31 => {
1213                                            push_directive(tokens, "h31");
1214                                    }
1215                                    Asel::H32 => {
1216                                            push_directive(tokens, "h32");
1217                                    }
1218                                    Asel::H33 => {
1219                                            push_directive(tokens, "h33");
1220                                    }
1221                            }
1222                    }
1223            tokens.push(PtxToken::Comma);
1224                    self.b.unparse_tokens(tokens);
1225                    if let Some(bsel_23) = self.bsel.as_ref() {
1226                            match bsel_23 {
1227                                    Bsel::H00 => {
1228                                            push_directive(tokens, "h00");
1229                                    }
1230                                    Bsel::H01 => {
1231                                            push_directive(tokens, "h01");
1232                                    }
1233                                    Bsel::H02 => {
1234                                            push_directive(tokens, "h02");
1235                                    }
1236                                    Bsel::H03 => {
1237                                            push_directive(tokens, "h03");
1238                                    }
1239                                    Bsel::H10 => {
1240                                            push_directive(tokens, "h10");
1241                                    }
1242                                    Bsel::H11 => {
1243                                            push_directive(tokens, "h11");
1244                                    }
1245                                    Bsel::H12 => {
1246                                            push_directive(tokens, "h12");
1247                                    }
1248                                    Bsel::H13 => {
1249                                            push_directive(tokens, "h13");
1250                                    }
1251                                    Bsel::H20 => {
1252                                            push_directive(tokens, "h20");
1253                                    }
1254                                    Bsel::H21 => {
1255                                            push_directive(tokens, "h21");
1256                                    }
1257                                    Bsel::H22 => {
1258                                            push_directive(tokens, "h22");
1259                                    }
1260                                    Bsel::H23 => {
1261                                            push_directive(tokens, "h23");
1262                                    }
1263                                    Bsel::H30 => {
1264                                            push_directive(tokens, "h30");
1265                                    }
1266                                    Bsel::H31 => {
1267                                            push_directive(tokens, "h31");
1268                                    }
1269                                    Bsel::H32 => {
1270                                            push_directive(tokens, "h32");
1271                                    }
1272                                    Bsel::H33 => {
1273                                            push_directive(tokens, "h33");
1274                                    }
1275                            }
1276                    }
1277            tokens.push(PtxToken::Comma);
1278                    self.c.unparse_tokens(tokens);
1279            tokens.push(PtxToken::Semicolon);
1280        }
1281    }
1282
1283    impl PtxUnparser for Vavrg2DtypeAtypeBtypeAdd {
1284        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1285            push_opcode(tokens, "vavrg2");
1286                    match &self.dtype {
1287                            Dtype::U32 => {
1288                                    push_directive(tokens, "u32");
1289                            }
1290                            Dtype::S32 => {
1291                                    push_directive(tokens, "s32");
1292                            }
1293                    }
1294                    match &self.atype {
1295                            Atype::U32 => {
1296                                    push_directive(tokens, "u32");
1297                            }
1298                            Atype::S32 => {
1299                                    push_directive(tokens, "s32");
1300                            }
1301                    }
1302                    match &self.btype {
1303                            Btype::U32 => {
1304                                    push_directive(tokens, "u32");
1305                            }
1306                            Btype::S32 => {
1307                                    push_directive(tokens, "s32");
1308                            }
1309                    }
1310                    push_directive(tokens, "add");
1311                    self.d.unparse_tokens(tokens);
1312                    if let Some(mask_24) = self.mask.as_ref() {
1313                            match mask_24 {
1314                                    Mask::H10 => {
1315                                            push_directive(tokens, "h10");
1316                                    }
1317                                    Mask::H0 => {
1318                                            push_directive(tokens, "h0");
1319                                    }
1320                                    Mask::H1 => {
1321                                            push_directive(tokens, "h1");
1322                                    }
1323                            }
1324                    }
1325            tokens.push(PtxToken::Comma);
1326                    self.a.unparse_tokens(tokens);
1327                    if let Some(asel_25) = self.asel.as_ref() {
1328                            match asel_25 {
1329                                    Asel::H00 => {
1330                                            push_directive(tokens, "h00");
1331                                    }
1332                                    Asel::H01 => {
1333                                            push_directive(tokens, "h01");
1334                                    }
1335                                    Asel::H02 => {
1336                                            push_directive(tokens, "h02");
1337                                    }
1338                                    Asel::H03 => {
1339                                            push_directive(tokens, "h03");
1340                                    }
1341                                    Asel::H10 => {
1342                                            push_directive(tokens, "h10");
1343                                    }
1344                                    Asel::H11 => {
1345                                            push_directive(tokens, "h11");
1346                                    }
1347                                    Asel::H12 => {
1348                                            push_directive(tokens, "h12");
1349                                    }
1350                                    Asel::H13 => {
1351                                            push_directive(tokens, "h13");
1352                                    }
1353                                    Asel::H20 => {
1354                                            push_directive(tokens, "h20");
1355                                    }
1356                                    Asel::H21 => {
1357                                            push_directive(tokens, "h21");
1358                                    }
1359                                    Asel::H22 => {
1360                                            push_directive(tokens, "h22");
1361                                    }
1362                                    Asel::H23 => {
1363                                            push_directive(tokens, "h23");
1364                                    }
1365                                    Asel::H30 => {
1366                                            push_directive(tokens, "h30");
1367                                    }
1368                                    Asel::H31 => {
1369                                            push_directive(tokens, "h31");
1370                                    }
1371                                    Asel::H32 => {
1372                                            push_directive(tokens, "h32");
1373                                    }
1374                                    Asel::H33 => {
1375                                            push_directive(tokens, "h33");
1376                                    }
1377                            }
1378                    }
1379            tokens.push(PtxToken::Comma);
1380                    self.b.unparse_tokens(tokens);
1381                    if let Some(bsel_26) = self.bsel.as_ref() {
1382                            match bsel_26 {
1383                                    Bsel::H00 => {
1384                                            push_directive(tokens, "h00");
1385                                    }
1386                                    Bsel::H01 => {
1387                                            push_directive(tokens, "h01");
1388                                    }
1389                                    Bsel::H02 => {
1390                                            push_directive(tokens, "h02");
1391                                    }
1392                                    Bsel::H03 => {
1393                                            push_directive(tokens, "h03");
1394                                    }
1395                                    Bsel::H10 => {
1396                                            push_directive(tokens, "h10");
1397                                    }
1398                                    Bsel::H11 => {
1399                                            push_directive(tokens, "h11");
1400                                    }
1401                                    Bsel::H12 => {
1402                                            push_directive(tokens, "h12");
1403                                    }
1404                                    Bsel::H13 => {
1405                                            push_directive(tokens, "h13");
1406                                    }
1407                                    Bsel::H20 => {
1408                                            push_directive(tokens, "h20");
1409                                    }
1410                                    Bsel::H21 => {
1411                                            push_directive(tokens, "h21");
1412                                    }
1413                                    Bsel::H22 => {
1414                                            push_directive(tokens, "h22");
1415                                    }
1416                                    Bsel::H23 => {
1417                                            push_directive(tokens, "h23");
1418                                    }
1419                                    Bsel::H30 => {
1420                                            push_directive(tokens, "h30");
1421                                    }
1422                                    Bsel::H31 => {
1423                                            push_directive(tokens, "h31");
1424                                    }
1425                                    Bsel::H32 => {
1426                                            push_directive(tokens, "h32");
1427                                    }
1428                                    Bsel::H33 => {
1429                                            push_directive(tokens, "h33");
1430                                    }
1431                            }
1432                    }
1433            tokens.push(PtxToken::Comma);
1434                    self.c.unparse_tokens(tokens);
1435            tokens.push(PtxToken::Semicolon);
1436        }
1437    }
1438
1439    impl PtxUnparser for Vabsdiff2DtypeAtypeBtypeAdd {
1440        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1441            push_opcode(tokens, "vabsdiff2");
1442                    match &self.dtype {
1443                            Dtype::U32 => {
1444                                    push_directive(tokens, "u32");
1445                            }
1446                            Dtype::S32 => {
1447                                    push_directive(tokens, "s32");
1448                            }
1449                    }
1450                    match &self.atype {
1451                            Atype::U32 => {
1452                                    push_directive(tokens, "u32");
1453                            }
1454                            Atype::S32 => {
1455                                    push_directive(tokens, "s32");
1456                            }
1457                    }
1458                    match &self.btype {
1459                            Btype::U32 => {
1460                                    push_directive(tokens, "u32");
1461                            }
1462                            Btype::S32 => {
1463                                    push_directive(tokens, "s32");
1464                            }
1465                    }
1466                    push_directive(tokens, "add");
1467                    self.d.unparse_tokens(tokens);
1468                    if let Some(mask_27) = self.mask.as_ref() {
1469                            match mask_27 {
1470                                    Mask::H10 => {
1471                                            push_directive(tokens, "h10");
1472                                    }
1473                                    Mask::H0 => {
1474                                            push_directive(tokens, "h0");
1475                                    }
1476                                    Mask::H1 => {
1477                                            push_directive(tokens, "h1");
1478                                    }
1479                            }
1480                    }
1481            tokens.push(PtxToken::Comma);
1482                    self.a.unparse_tokens(tokens);
1483                    if let Some(asel_28) = self.asel.as_ref() {
1484                            match asel_28 {
1485                                    Asel::H00 => {
1486                                            push_directive(tokens, "h00");
1487                                    }
1488                                    Asel::H01 => {
1489                                            push_directive(tokens, "h01");
1490                                    }
1491                                    Asel::H02 => {
1492                                            push_directive(tokens, "h02");
1493                                    }
1494                                    Asel::H03 => {
1495                                            push_directive(tokens, "h03");
1496                                    }
1497                                    Asel::H10 => {
1498                                            push_directive(tokens, "h10");
1499                                    }
1500                                    Asel::H11 => {
1501                                            push_directive(tokens, "h11");
1502                                    }
1503                                    Asel::H12 => {
1504                                            push_directive(tokens, "h12");
1505                                    }
1506                                    Asel::H13 => {
1507                                            push_directive(tokens, "h13");
1508                                    }
1509                                    Asel::H20 => {
1510                                            push_directive(tokens, "h20");
1511                                    }
1512                                    Asel::H21 => {
1513                                            push_directive(tokens, "h21");
1514                                    }
1515                                    Asel::H22 => {
1516                                            push_directive(tokens, "h22");
1517                                    }
1518                                    Asel::H23 => {
1519                                            push_directive(tokens, "h23");
1520                                    }
1521                                    Asel::H30 => {
1522                                            push_directive(tokens, "h30");
1523                                    }
1524                                    Asel::H31 => {
1525                                            push_directive(tokens, "h31");
1526                                    }
1527                                    Asel::H32 => {
1528                                            push_directive(tokens, "h32");
1529                                    }
1530                                    Asel::H33 => {
1531                                            push_directive(tokens, "h33");
1532                                    }
1533                            }
1534                    }
1535            tokens.push(PtxToken::Comma);
1536                    self.b.unparse_tokens(tokens);
1537                    if let Some(bsel_29) = self.bsel.as_ref() {
1538                            match bsel_29 {
1539                                    Bsel::H00 => {
1540                                            push_directive(tokens, "h00");
1541                                    }
1542                                    Bsel::H01 => {
1543                                            push_directive(tokens, "h01");
1544                                    }
1545                                    Bsel::H02 => {
1546                                            push_directive(tokens, "h02");
1547                                    }
1548                                    Bsel::H03 => {
1549                                            push_directive(tokens, "h03");
1550                                    }
1551                                    Bsel::H10 => {
1552                                            push_directive(tokens, "h10");
1553                                    }
1554                                    Bsel::H11 => {
1555                                            push_directive(tokens, "h11");
1556                                    }
1557                                    Bsel::H12 => {
1558                                            push_directive(tokens, "h12");
1559                                    }
1560                                    Bsel::H13 => {
1561                                            push_directive(tokens, "h13");
1562                                    }
1563                                    Bsel::H20 => {
1564                                            push_directive(tokens, "h20");
1565                                    }
1566                                    Bsel::H21 => {
1567                                            push_directive(tokens, "h21");
1568                                    }
1569                                    Bsel::H22 => {
1570                                            push_directive(tokens, "h22");
1571                                    }
1572                                    Bsel::H23 => {
1573                                            push_directive(tokens, "h23");
1574                                    }
1575                                    Bsel::H30 => {
1576                                            push_directive(tokens, "h30");
1577                                    }
1578                                    Bsel::H31 => {
1579                                            push_directive(tokens, "h31");
1580                                    }
1581                                    Bsel::H32 => {
1582                                            push_directive(tokens, "h32");
1583                                    }
1584                                    Bsel::H33 => {
1585                                            push_directive(tokens, "h33");
1586                                    }
1587                            }
1588                    }
1589            tokens.push(PtxToken::Comma);
1590                    self.c.unparse_tokens(tokens);
1591            tokens.push(PtxToken::Semicolon);
1592        }
1593    }
1594
1595    impl PtxUnparser for Vmin2DtypeAtypeBtypeAdd {
1596        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1597            push_opcode(tokens, "vmin2");
1598                    match &self.dtype {
1599                            Dtype::U32 => {
1600                                    push_directive(tokens, "u32");
1601                            }
1602                            Dtype::S32 => {
1603                                    push_directive(tokens, "s32");
1604                            }
1605                    }
1606                    match &self.atype {
1607                            Atype::U32 => {
1608                                    push_directive(tokens, "u32");
1609                            }
1610                            Atype::S32 => {
1611                                    push_directive(tokens, "s32");
1612                            }
1613                    }
1614                    match &self.btype {
1615                            Btype::U32 => {
1616                                    push_directive(tokens, "u32");
1617                            }
1618                            Btype::S32 => {
1619                                    push_directive(tokens, "s32");
1620                            }
1621                    }
1622                    push_directive(tokens, "add");
1623                    self.d.unparse_tokens(tokens);
1624                    if let Some(mask_30) = self.mask.as_ref() {
1625                            match mask_30 {
1626                                    Mask::H10 => {
1627                                            push_directive(tokens, "h10");
1628                                    }
1629                                    Mask::H0 => {
1630                                            push_directive(tokens, "h0");
1631                                    }
1632                                    Mask::H1 => {
1633                                            push_directive(tokens, "h1");
1634                                    }
1635                            }
1636                    }
1637            tokens.push(PtxToken::Comma);
1638                    self.a.unparse_tokens(tokens);
1639                    if let Some(asel_31) = self.asel.as_ref() {
1640                            match asel_31 {
1641                                    Asel::H00 => {
1642                                            push_directive(tokens, "h00");
1643                                    }
1644                                    Asel::H01 => {
1645                                            push_directive(tokens, "h01");
1646                                    }
1647                                    Asel::H02 => {
1648                                            push_directive(tokens, "h02");
1649                                    }
1650                                    Asel::H03 => {
1651                                            push_directive(tokens, "h03");
1652                                    }
1653                                    Asel::H10 => {
1654                                            push_directive(tokens, "h10");
1655                                    }
1656                                    Asel::H11 => {
1657                                            push_directive(tokens, "h11");
1658                                    }
1659                                    Asel::H12 => {
1660                                            push_directive(tokens, "h12");
1661                                    }
1662                                    Asel::H13 => {
1663                                            push_directive(tokens, "h13");
1664                                    }
1665                                    Asel::H20 => {
1666                                            push_directive(tokens, "h20");
1667                                    }
1668                                    Asel::H21 => {
1669                                            push_directive(tokens, "h21");
1670                                    }
1671                                    Asel::H22 => {
1672                                            push_directive(tokens, "h22");
1673                                    }
1674                                    Asel::H23 => {
1675                                            push_directive(tokens, "h23");
1676                                    }
1677                                    Asel::H30 => {
1678                                            push_directive(tokens, "h30");
1679                                    }
1680                                    Asel::H31 => {
1681                                            push_directive(tokens, "h31");
1682                                    }
1683                                    Asel::H32 => {
1684                                            push_directive(tokens, "h32");
1685                                    }
1686                                    Asel::H33 => {
1687                                            push_directive(tokens, "h33");
1688                                    }
1689                            }
1690                    }
1691            tokens.push(PtxToken::Comma);
1692                    self.b.unparse_tokens(tokens);
1693                    if let Some(bsel_32) = self.bsel.as_ref() {
1694                            match bsel_32 {
1695                                    Bsel::H00 => {
1696                                            push_directive(tokens, "h00");
1697                                    }
1698                                    Bsel::H01 => {
1699                                            push_directive(tokens, "h01");
1700                                    }
1701                                    Bsel::H02 => {
1702                                            push_directive(tokens, "h02");
1703                                    }
1704                                    Bsel::H03 => {
1705                                            push_directive(tokens, "h03");
1706                                    }
1707                                    Bsel::H10 => {
1708                                            push_directive(tokens, "h10");
1709                                    }
1710                                    Bsel::H11 => {
1711                                            push_directive(tokens, "h11");
1712                                    }
1713                                    Bsel::H12 => {
1714                                            push_directive(tokens, "h12");
1715                                    }
1716                                    Bsel::H13 => {
1717                                            push_directive(tokens, "h13");
1718                                    }
1719                                    Bsel::H20 => {
1720                                            push_directive(tokens, "h20");
1721                                    }
1722                                    Bsel::H21 => {
1723                                            push_directive(tokens, "h21");
1724                                    }
1725                                    Bsel::H22 => {
1726                                            push_directive(tokens, "h22");
1727                                    }
1728                                    Bsel::H23 => {
1729                                            push_directive(tokens, "h23");
1730                                    }
1731                                    Bsel::H30 => {
1732                                            push_directive(tokens, "h30");
1733                                    }
1734                                    Bsel::H31 => {
1735                                            push_directive(tokens, "h31");
1736                                    }
1737                                    Bsel::H32 => {
1738                                            push_directive(tokens, "h32");
1739                                    }
1740                                    Bsel::H33 => {
1741                                            push_directive(tokens, "h33");
1742                                    }
1743                            }
1744                    }
1745            tokens.push(PtxToken::Comma);
1746                    self.c.unparse_tokens(tokens);
1747            tokens.push(PtxToken::Semicolon);
1748        }
1749    }
1750
1751    impl PtxUnparser for Vmax2DtypeAtypeBtypeAdd {
1752        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
1753            push_opcode(tokens, "vmax2");
1754                    match &self.dtype {
1755                            Dtype::U32 => {
1756                                    push_directive(tokens, "u32");
1757                            }
1758                            Dtype::S32 => {
1759                                    push_directive(tokens, "s32");
1760                            }
1761                    }
1762                    match &self.atype {
1763                            Atype::U32 => {
1764                                    push_directive(tokens, "u32");
1765                            }
1766                            Atype::S32 => {
1767                                    push_directive(tokens, "s32");
1768                            }
1769                    }
1770                    match &self.btype {
1771                            Btype::U32 => {
1772                                    push_directive(tokens, "u32");
1773                            }
1774                            Btype::S32 => {
1775                                    push_directive(tokens, "s32");
1776                            }
1777                    }
1778                    push_directive(tokens, "add");
1779                    self.d.unparse_tokens(tokens);
1780                    if let Some(mask_33) = self.mask.as_ref() {
1781                            match mask_33 {
1782                                    Mask::H10 => {
1783                                            push_directive(tokens, "h10");
1784                                    }
1785                                    Mask::H0 => {
1786                                            push_directive(tokens, "h0");
1787                                    }
1788                                    Mask::H1 => {
1789                                            push_directive(tokens, "h1");
1790                                    }
1791                            }
1792                    }
1793            tokens.push(PtxToken::Comma);
1794                    self.a.unparse_tokens(tokens);
1795                    if let Some(asel_34) = self.asel.as_ref() {
1796                            match asel_34 {
1797                                    Asel::H00 => {
1798                                            push_directive(tokens, "h00");
1799                                    }
1800                                    Asel::H01 => {
1801                                            push_directive(tokens, "h01");
1802                                    }
1803                                    Asel::H02 => {
1804                                            push_directive(tokens, "h02");
1805                                    }
1806                                    Asel::H03 => {
1807                                            push_directive(tokens, "h03");
1808                                    }
1809                                    Asel::H10 => {
1810                                            push_directive(tokens, "h10");
1811                                    }
1812                                    Asel::H11 => {
1813                                            push_directive(tokens, "h11");
1814                                    }
1815                                    Asel::H12 => {
1816                                            push_directive(tokens, "h12");
1817                                    }
1818                                    Asel::H13 => {
1819                                            push_directive(tokens, "h13");
1820                                    }
1821                                    Asel::H20 => {
1822                                            push_directive(tokens, "h20");
1823                                    }
1824                                    Asel::H21 => {
1825                                            push_directive(tokens, "h21");
1826                                    }
1827                                    Asel::H22 => {
1828                                            push_directive(tokens, "h22");
1829                                    }
1830                                    Asel::H23 => {
1831                                            push_directive(tokens, "h23");
1832                                    }
1833                                    Asel::H30 => {
1834                                            push_directive(tokens, "h30");
1835                                    }
1836                                    Asel::H31 => {
1837                                            push_directive(tokens, "h31");
1838                                    }
1839                                    Asel::H32 => {
1840                                            push_directive(tokens, "h32");
1841                                    }
1842                                    Asel::H33 => {
1843                                            push_directive(tokens, "h33");
1844                                    }
1845                            }
1846                    }
1847            tokens.push(PtxToken::Comma);
1848                    self.b.unparse_tokens(tokens);
1849                    if let Some(bsel_35) = self.bsel.as_ref() {
1850                            match bsel_35 {
1851                                    Bsel::H00 => {
1852                                            push_directive(tokens, "h00");
1853                                    }
1854                                    Bsel::H01 => {
1855                                            push_directive(tokens, "h01");
1856                                    }
1857                                    Bsel::H02 => {
1858                                            push_directive(tokens, "h02");
1859                                    }
1860                                    Bsel::H03 => {
1861                                            push_directive(tokens, "h03");
1862                                    }
1863                                    Bsel::H10 => {
1864                                            push_directive(tokens, "h10");
1865                                    }
1866                                    Bsel::H11 => {
1867                                            push_directive(tokens, "h11");
1868                                    }
1869                                    Bsel::H12 => {
1870                                            push_directive(tokens, "h12");
1871                                    }
1872                                    Bsel::H13 => {
1873                                            push_directive(tokens, "h13");
1874                                    }
1875                                    Bsel::H20 => {
1876                                            push_directive(tokens, "h20");
1877                                    }
1878                                    Bsel::H21 => {
1879                                            push_directive(tokens, "h21");
1880                                    }
1881                                    Bsel::H22 => {
1882                                            push_directive(tokens, "h22");
1883                                    }
1884                                    Bsel::H23 => {
1885                                            push_directive(tokens, "h23");
1886                                    }
1887                                    Bsel::H30 => {
1888                                            push_directive(tokens, "h30");
1889                                    }
1890                                    Bsel::H31 => {
1891                                            push_directive(tokens, "h31");
1892                                    }
1893                                    Bsel::H32 => {
1894                                            push_directive(tokens, "h32");
1895                                    }
1896                                    Bsel::H33 => {
1897                                            push_directive(tokens, "h33");
1898                                    }
1899                            }
1900                    }
1901            tokens.push(PtxToken::Comma);
1902                    self.c.unparse_tokens(tokens);
1903            tokens.push(PtxToken::Semicolon);
1904        }
1905    }
1906
1907}
1908