1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum InstructionOpcode {
6 Abs,
8 ActiveMask,
10 Add,
12 AddCc,
14 Addc,
16 Alloca,
18 And,
20 ApplyPriority,
22 Atom,
24 Bar,
26 BarWarpSync,
28 Barrier,
30 BarrierCluster,
32 Bfe,
34 Bfi,
36 Bfind,
38 Bmsk,
40 Bra,
42 Brev,
44 Brkpt,
46 BrxIdx,
48 Call,
50 Clmad,
52 ClusterLaunchControlQueryCancel,
54 ClusterLaunchControlTryCancel,
56 Clz,
58 Cnot,
60 Copysign,
62 Cos,
64 CpAsyncMbarrierArrive,
66 CreatePolicy,
68 Cvt,
70 CvtPack,
72 Cvta,
74 Discard,
76 Div,
78 Dp2A,
80 Dp4A,
82 ElectSync,
84 Ex2,
86 Exit,
88 FabricSubmit,
90 FabricTryGet,
92 FabricTryPullred,
94 FabricTryPut,
96 FabricTryRed,
98 FabricWait,
100 Fence,
102 Fma,
104 Fns,
106 GetCtaRank,
108 GridDepControl,
110 IsSpaceP,
112 IsTypeP,
114 Ld,
116 LdGlobalNc,
118 LdMatrix,
120 Ldu,
122 Lg2,
124 Lop3,
126 Mad,
128 MadCc,
130 Mad24,
132 Madc,
134 Mapa,
136 MatchSync,
138 Max,
140 MbarrierArrive,
142 MbarrierArriveDrop,
144 MbarrierCheckLayout,
146 MbarrierCompleteTx,
148 MbarrierExpectTx,
150 MbarrierInit,
152 MbarrierInval,
154 MbarrierPendingCount,
156 MbarrierTestWait,
158 MbarrierTryWait,
160 Membar,
162 Min,
164 Mma,
166 MmaSp,
168 MmaSpOrderedMetadata,
170 Mov,
172 MovMatrix,
174 Mul,
176 Mul24,
178 MultimemLdReduce,
180 MultimemRed,
182 MultimemRedAsync,
184 MultimemSt,
186 MultimemStAsync,
188 Nanosleep,
190 Neg,
192 Not,
194 Or,
196 PmEvent,
198 Popc,
200 Prefetch,
202 Prefetchu,
204 Prmt,
206 Rcp,
208 RcpApproxFtzF64,
210 Red,
212 RedAsync,
214 ReduxSync,
216 Rem,
218 Ret,
220 Rsqrt,
222 RsqrtApproxFtzF64,
224 Sad,
226 Selp,
228 Set,
230 SetMaxNReg,
232 Setp,
234 Shf,
236 Shfl,
238 ShflSync,
240 Shl,
242 Shr,
244 Sin,
246 Slct,
248 Sqrt,
250 St,
252 StAsync,
254 StBulk,
256 StackRestore,
258 StackSave,
260 StMatrix,
262 Sub,
264 SubCc,
266 Subc,
268 Suld,
270 Suq,
272 Sured,
274 Sust,
276 Szext,
278 Tanh,
280 Tcgen05Alloc,
282 Tcgen05Commit,
284 Tcgen05Cp,
286 Tcgen05Dealloc,
288 Tcgen05Fence,
290 Tcgen05Ld,
292 Tcgen05RelinquishAllocPermit,
294 Tcgen05Shift,
296 Tcgen05St,
298 Tcgen05Wait,
300 TensorMapCpFenceProxy,
302 TensormapReplace,
304 Testp,
306 Tex,
308 Tld4,
310 Trap,
312 Txq,
314 VAbsDiff,
316 VAbsDiff2,
318 VAbsDiff4,
320 VAdd,
322 VAdd2,
324 VAdd4,
326 VAvrg2,
328 VAvrg4,
330 VMad,
332 VMax,
334 VMax2,
336 VMax4,
338 VMin,
340 VMin2,
342 VMin4,
344 Vote,
346 VoteSync,
348 VSet,
350 VSet2,
352 VSet4,
354 VShl,
356 VShr,
358 VSub,
360 VSub2,
362 VSub4,
364 WgmmaCommitGroup,
366 WgmmaFence,
368 WgmmaMmaAsync,
370 WgmmaMmaAsyncSp,
372 WgmmaWaitGroup,
374 WmmaLoad,
376 WmmaMma,
378 WmmaStore,
380 Xor,
382}
383#[derive(Debug, Clone, PartialEq, Eq)]
384pub struct InstructionSyntax {
385 pub opcode: InstructionOpcode,
386 pub name: &'static str,
387 pub syntax: &'static str,
388 pub min_operand_arity: usize,
389 pub max_operand_arity: usize,
390 pub required_modifiers: &'static [&'static str],
391}
392pub const PTX_91_INSTRUCTION_OPCODES: &[&str] = &[
393 "abs",
394 "activemask",
395 "add",
396 "add.cc",
397 "addc",
398 "alloca",
399 "and",
400 "applypriority",
401 "atom",
402 "bar",
403 "bar.warp.sync",
404 "barrier",
405 "barrier.cluster",
406 "bfe",
407 "bfi",
408 "bfind",
409 "bmsk",
410 "bra",
411 "brev",
412 "brkpt",
413 "brx.idx",
414 "call",
415 "clmad",
416 "clusterlaunchcontrol.query_cancel",
417 "clusterlaunchcontrol.try_cancel",
418 "clz",
419 "cnot",
420 "copysign",
421 "cos",
422 "cp.async.mbarrier.arrive",
423 "createpolicy",
424 "cvt",
425 "cvt.pack",
426 "cvta",
427 "discard",
428 "div",
429 "dp2a",
430 "dp4a",
431 "elect.sync",
432 "ex2",
433 "exit",
434 "fabric.submit",
435 "fabric.try_get",
436 "fabric.try_pullred",
437 "fabric.try_put",
438 "fabric.try_red",
439 "fabric.wait",
440 "fence",
441 "fma",
442 "fns",
443 "getctarank",
444 "griddepcontrol",
445 "isspacep",
446 "istypep",
447 "ld",
448 "ld.global.nc",
449 "ldmatrix",
450 "ldu",
451 "lg2",
452 "lop3",
453 "mad",
454 "mad.cc",
455 "mad24",
456 "madc",
457 "mapa",
458 "match.sync",
459 "max",
460 "mbarrier.arrive",
461 "mbarrier.arrive_drop",
462 "mbarrier.check_layout",
463 "mbarrier.complete_tx",
464 "mbarrier.expect_tx",
465 "mbarrier.init",
466 "mbarrier.inval",
467 "mbarrier.pending_count",
468 "mbarrier.test_wait",
469 "mbarrier.try_wait",
470 "membar",
471 "min",
472 "mma",
473 "mma.sp",
474 "mma.sp::ordered_metadata",
475 "mov",
476 "movmatrix",
477 "mul",
478 "mul24",
479 "multimem.ld_reduce",
480 "multimem.red",
481 "multimem.red.async",
482 "multimem.st",
483 "multimem.st.async",
484 "nanosleep",
485 "neg",
486 "not",
487 "or",
488 "pmevent",
489 "popc",
490 "prefetch",
491 "prefetchu",
492 "prmt",
493 "rcp",
494 "rcp.approx.ftz.f64",
495 "red",
496 "red.async",
497 "redux.sync",
498 "rem",
499 "ret",
500 "rsqrt",
501 "rsqrt.approx.ftz.f64",
502 "sad",
503 "selp",
504 "set",
505 "setmaxnreg",
506 "setp",
507 "shf",
508 "shfl",
509 "shfl.sync",
510 "shl",
511 "shr",
512 "sin",
513 "slct",
514 "sqrt",
515 "st",
516 "st.async",
517 "st.bulk",
518 "stackrestore",
519 "stacksave",
520 "stmatrix",
521 "sub",
522 "sub.cc",
523 "subc",
524 "suld",
525 "suq",
526 "sured",
527 "sust",
528 "szext",
529 "tanh",
530 "tcgen05.alloc",
531 "tcgen05.commit",
532 "tcgen05.cp",
533 "tcgen05.dealloc",
534 "tcgen05.fence",
535 "tcgen05.ld",
536 "tcgen05.relinquish_alloc_permit",
537 "tcgen05.shift",
538 "tcgen05.st",
539 "tcgen05.wait",
540 "tensormap.cp_fenceproxy",
541 "tensormap.replace",
542 "testp",
543 "tex",
544 "tld4",
545 "trap",
546 "txq",
547 "vabsdiff",
548 "vabsdiff2",
549 "vabsdiff4",
550 "vadd",
551 "vadd2",
552 "vadd4",
553 "vavrg2",
554 "vavrg4",
555 "vmad",
556 "vmax",
557 "vmax2",
558 "vmax4",
559 "vmin",
560 "vmin2",
561 "vmin4",
562 "vote",
563 "vote.sync",
564 "vset",
565 "vset2",
566 "vset4",
567 "vshl",
568 "vshr",
569 "vsub",
570 "vsub2",
571 "vsub4",
572 "wgmma.commit_group",
573 "wgmma.fence",
574 "wgmma.mma_async",
575 "wgmma.mma_async.sp",
576 "wgmma.wait_group",
577 "wmma.load",
578 "wmma.mma",
579 "wmma.store",
580 "xor",
581];
582pub const PTX_91_INSTRUCTION_SYNTAX: &[InstructionSyntax] = &[
583 InstructionSyntax {
584 opcode: InstructionOpcode::Abs,
585 name: "abs",
586 syntax: "abs.bf16 d, a;",
587 min_operand_arity: 2usize,
588 max_operand_arity: 2usize,
589 required_modifiers: &[".bf16"],
590 },
591 InstructionSyntax {
592 opcode: InstructionOpcode::Abs,
593 name: "abs",
594 syntax: "abs.bf16x2 d, a;",
595 min_operand_arity: 2usize,
596 max_operand_arity: 2usize,
597 required_modifiers: &[".bf16x2"],
598 },
599 InstructionSyntax {
600 opcode: InstructionOpcode::Abs,
601 name: "abs",
602 syntax: "abs.f64 d, a;",
603 min_operand_arity: 2usize,
604 max_operand_arity: 2usize,
605 required_modifiers: &[".f64"],
606 },
607 InstructionSyntax {
608 opcode: InstructionOpcode::Abs,
609 name: "abs",
610 syntax: "abs.type d, a;",
611 min_operand_arity: 2usize,
612 max_operand_arity: 2usize,
613 required_modifiers: &[],
614 },
615 InstructionSyntax {
616 opcode: InstructionOpcode::Abs,
617 name: "abs",
618 syntax: "abs{.ftz}.f16 d, a;",
619 min_operand_arity: 2usize,
620 max_operand_arity: 2usize,
621 required_modifiers: &[".f16"],
622 },
623 InstructionSyntax {
624 opcode: InstructionOpcode::Abs,
625 name: "abs",
626 syntax: "abs{.ftz}.f16x2 d, a;",
627 min_operand_arity: 2usize,
628 max_operand_arity: 2usize,
629 required_modifiers: &[".f16x2"],
630 },
631 InstructionSyntax {
632 opcode: InstructionOpcode::Abs,
633 name: "abs",
634 syntax: "abs{.ftz}.f32 d, a;",
635 min_operand_arity: 2usize,
636 max_operand_arity: 2usize,
637 required_modifiers: &[".f32"],
638 },
639 InstructionSyntax {
640 opcode: InstructionOpcode::ActiveMask,
641 name: "activemask",
642 syntax: "activemask.b32 d;",
643 min_operand_arity: 1usize,
644 max_operand_arity: 1usize,
645 required_modifiers: &[".b32"],
646 },
647 InstructionSyntax {
648 opcode: InstructionOpcode::Add,
649 name: "add",
650 syntax: "add.type1 d, a, b;",
651 min_operand_arity: 3usize,
652 max_operand_arity: 3usize,
653 required_modifiers: &[],
654 },
655 InstructionSyntax {
656 opcode: InstructionOpcode::Add,
657 name: "add",
658 syntax: "add{.rnd}.bf16 d, a, b;",
659 min_operand_arity: 3usize,
660 max_operand_arity: 3usize,
661 required_modifiers: &[".bf16"],
662 },
663 InstructionSyntax {
664 opcode: InstructionOpcode::Add,
665 name: "add",
666 syntax: "add{.rnd}.bf16x2 d, a, b;",
667 min_operand_arity: 3usize,
668 max_operand_arity: 3usize,
669 required_modifiers: &[".bf16x2"],
670 },
671 InstructionSyntax {
672 opcode: InstructionOpcode::Add,
673 name: "add",
674 syntax: "add{.rnd}.f64 d, a, b;",
675 min_operand_arity: 3usize,
676 max_operand_arity: 3usize,
677 required_modifiers: &[".f64"],
678 },
679 InstructionSyntax {
680 opcode: InstructionOpcode::Add,
681 name: "add",
682 syntax: "add{.rnd}{.ftz}.f32x2 d, a, b;",
683 min_operand_arity: 3usize,
684 max_operand_arity: 3usize,
685 required_modifiers: &[".f32x2"],
686 },
687 InstructionSyntax {
688 opcode: InstructionOpcode::Add,
689 name: "add",
690 syntax: "add{.rnd}{.ftz}{.sat}.f16 d, a, b;",
691 min_operand_arity: 3usize,
692 max_operand_arity: 3usize,
693 required_modifiers: &[".f16"],
694 },
695 InstructionSyntax {
696 opcode: InstructionOpcode::Add,
697 name: "add",
698 syntax: "add{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
699 min_operand_arity: 3usize,
700 max_operand_arity: 3usize,
701 required_modifiers: &[".f16x2"],
702 },
703 InstructionSyntax {
704 opcode: InstructionOpcode::Add,
705 name: "add",
706 syntax: "add{.rnd}{.ftz}{.sat}.f32 d, a, b;",
707 min_operand_arity: 3usize,
708 max_operand_arity: 3usize,
709 required_modifiers: &[".f32"],
710 },
711 InstructionSyntax {
712 opcode: InstructionOpcode::Add,
713 name: "add",
714 syntax: "add{.rnd}{.sat}.f32.atype d, a, c;",
715 min_operand_arity: 3usize,
716 max_operand_arity: 3usize,
717 required_modifiers: &[".f32"],
718 },
719 InstructionSyntax {
720 opcode: InstructionOpcode::Add,
721 name: "add",
722 syntax: "add{.sat}.type2 d, a, b;",
723 min_operand_arity: 3usize,
724 max_operand_arity: 3usize,
725 required_modifiers: &[],
726 },
727 InstructionSyntax {
728 opcode: InstructionOpcode::AddCc,
729 name: "add.cc",
730 syntax: "add.cc.type d, a, b;",
731 min_operand_arity: 3usize,
732 max_operand_arity: 3usize,
733 required_modifiers: &[],
734 },
735 InstructionSyntax {
736 opcode: InstructionOpcode::Addc,
737 name: "addc",
738 syntax: "addc{.cc}.type d, a, b;",
739 min_operand_arity: 3usize,
740 max_operand_arity: 3usize,
741 required_modifiers: &[],
742 },
743 InstructionSyntax {
744 opcode: InstructionOpcode::Alloca,
745 name: "alloca",
746 syntax: "alloca.type ptr, size{, immAlign};",
747 min_operand_arity: 2usize,
748 max_operand_arity: 3usize,
749 required_modifiers: &[],
750 },
751 InstructionSyntax {
752 opcode: InstructionOpcode::And,
753 name: "and",
754 syntax: "and.type d, a, b;",
755 min_operand_arity: 3usize,
756 max_operand_arity: 3usize,
757 required_modifiers: &[],
758 },
759 InstructionSyntax {
760 opcode: InstructionOpcode::ApplyPriority,
761 name: "applypriority",
762 syntax: "applypriority{.global}.level::eviction_priority [a], size;",
763 min_operand_arity: 2usize,
764 max_operand_arity: 2usize,
765 required_modifiers: &[],
766 },
767 InstructionSyntax {
768 opcode: InstructionOpcode::Atom,
769 name: "atom",
770 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16 d, [a], b{, cache_policy};",
771 min_operand_arity: 3usize,
772 max_operand_arity: 4usize,
773 required_modifiers: &[".add", ".noftz", ".bf16"],
774 },
775 InstructionSyntax {
776 opcode: InstructionOpcode::Atom,
777 name: "atom",
778 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16x2 d, [a], b{, cache_policy};",
779 min_operand_arity: 3usize,
780 max_operand_arity: 4usize,
781 required_modifiers: &[".add", ".noftz", ".bf16x2"],
782 },
783 InstructionSyntax {
784 opcode: InstructionOpcode::Atom,
785 name: "atom",
786 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16 d, [a], b{, cache_policy};",
787 min_operand_arity: 3usize,
788 max_operand_arity: 4usize,
789 required_modifiers: &[".add", ".noftz", ".f16"],
790 },
791 InstructionSyntax {
792 opcode: InstructionOpcode::Atom,
793 name: "atom",
794 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16x2 d, [a], b{, cache_policy};",
795 min_operand_arity: 3usize,
796 max_operand_arity: 4usize,
797 required_modifiers: &[".add", ".noftz", ".f16x2"],
798 },
799 InstructionSyntax {
800 opcode: InstructionOpcode::Atom,
801 name: "atom",
802 syntax: "atom{.sem}{.scope}{.space}.cas.type1 d, [a], b, c;",
803 min_operand_arity: 4usize,
804 max_operand_arity: 4usize,
805 required_modifiers: &[".cas"],
806 },
807 InstructionSyntax {
808 opcode: InstructionOpcode::Atom,
809 name: "atom",
810 syntax: "atom{.sem}{.scope}{.space}.exch{.level::cache_hint}.type2 d, [a], b {, cache_policy};",
811 min_operand_arity: 3usize,
812 max_operand_arity: 4usize,
813 required_modifiers: &[".exch"],
814 },
815 InstructionSyntax {
816 opcode: InstructionOpcode::Atom,
817 name: "atom",
818 syntax: "atom{.sem}{.scope}{.space}.op{.level::cache_hint}.type d, [a], b{, cache_policy};",
819 min_operand_arity: 3usize,
820 max_operand_arity: 4usize,
821 required_modifiers: &[],
822 },
823 InstructionSyntax {
824 opcode: InstructionOpcode::Bar,
825 name: "bar",
826 syntax: "bar{.cta}.arrive a, b;",
827 min_operand_arity: 2usize,
828 max_operand_arity: 2usize,
829 required_modifiers: &[".arrive"],
830 },
831 InstructionSyntax {
832 opcode: InstructionOpcode::Bar,
833 name: "bar",
834 syntax: "bar{.cta}.red.op.pred p, a{, b}, {!}c;",
835 min_operand_arity: 2usize,
836 max_operand_arity: 4usize,
837 required_modifiers: &[".red", ".pred"],
838 },
839 InstructionSyntax {
840 opcode: InstructionOpcode::Bar,
841 name: "bar",
842 syntax: "bar{.cta}.red.popc.u32 d, a{, b}, {!}c;",
843 min_operand_arity: 2usize,
844 max_operand_arity: 4usize,
845 required_modifiers: &[".red", ".popc", ".u32"],
846 },
847 InstructionSyntax {
848 opcode: InstructionOpcode::Bar,
849 name: "bar",
850 syntax: "bar{.cta}.sync a{, b};",
851 min_operand_arity: 1usize,
852 max_operand_arity: 2usize,
853 required_modifiers: &[".sync"],
854 },
855 InstructionSyntax {
856 opcode: InstructionOpcode::BarWarpSync,
857 name: "bar.warp.sync",
858 syntax: "bar.warp.sync membermask;",
859 min_operand_arity: 1usize,
860 max_operand_arity: 1usize,
861 required_modifiers: &[],
862 },
863 InstructionSyntax {
864 opcode: InstructionOpcode::Barrier,
865 name: "barrier",
866 syntax: "barrier{.cta}.arrive{.aligned} a, b;",
867 min_operand_arity: 2usize,
868 max_operand_arity: 2usize,
869 required_modifiers: &[".arrive"],
870 },
871 InstructionSyntax {
872 opcode: InstructionOpcode::Barrier,
873 name: "barrier",
874 syntax: "barrier{.cta}.red.op{.aligned}.pred p, a{, b}, {!}c;",
875 min_operand_arity: 2usize,
876 max_operand_arity: 4usize,
877 required_modifiers: &[".red", ".pred"],
878 },
879 InstructionSyntax {
880 opcode: InstructionOpcode::Barrier,
881 name: "barrier",
882 syntax: "barrier{.cta}.red.popc{.aligned}.u32 d, a{, b}, {!}c;",
883 min_operand_arity: 2usize,
884 max_operand_arity: 4usize,
885 required_modifiers: &[".red", ".popc", ".u32"],
886 },
887 InstructionSyntax {
888 opcode: InstructionOpcode::Barrier,
889 name: "barrier",
890 syntax: "barrier{.cta}.sync{.aligned} a{, b};",
891 min_operand_arity: 1usize,
892 max_operand_arity: 2usize,
893 required_modifiers: &[".sync"],
894 },
895 InstructionSyntax {
896 opcode: InstructionOpcode::BarrierCluster,
897 name: "barrier.cluster",
898 syntax: "barrier.cluster.arrive{.sem}{.aligned};",
899 min_operand_arity: 0usize,
900 max_operand_arity: 0usize,
901 required_modifiers: &[".arrive"],
902 },
903 InstructionSyntax {
904 opcode: InstructionOpcode::BarrierCluster,
905 name: "barrier.cluster",
906 syntax: "barrier.cluster.wait{.acquire}{.aligned};",
907 min_operand_arity: 0usize,
908 max_operand_arity: 0usize,
909 required_modifiers: &[".wait"],
910 },
911 InstructionSyntax {
912 opcode: InstructionOpcode::Bfe,
913 name: "bfe",
914 syntax: "bfe.type d, a, b, c;",
915 min_operand_arity: 4usize,
916 max_operand_arity: 4usize,
917 required_modifiers: &[],
918 },
919 InstructionSyntax {
920 opcode: InstructionOpcode::Bfi,
921 name: "bfi",
922 syntax: "bfi.type f, a, b, c, d;",
923 min_operand_arity: 5usize,
924 max_operand_arity: 5usize,
925 required_modifiers: &[],
926 },
927 InstructionSyntax {
928 opcode: InstructionOpcode::Bfind,
929 name: "bfind",
930 syntax: "bfind.shiftamt.type d, a;",
931 min_operand_arity: 2usize,
932 max_operand_arity: 2usize,
933 required_modifiers: &[".shiftamt"],
934 },
935 InstructionSyntax {
936 opcode: InstructionOpcode::Bfind,
937 name: "bfind",
938 syntax: "bfind.type d, a;",
939 min_operand_arity: 2usize,
940 max_operand_arity: 2usize,
941 required_modifiers: &[],
942 },
943 InstructionSyntax {
944 opcode: InstructionOpcode::Bmsk,
945 name: "bmsk",
946 syntax: "bmsk.mode.b32 d, a, b;",
947 min_operand_arity: 3usize,
948 max_operand_arity: 3usize,
949 required_modifiers: &[".b32"],
950 },
951 InstructionSyntax {
952 opcode: InstructionOpcode::Brev,
953 name: "brev",
954 syntax: "brev.type d, a;",
955 min_operand_arity: 2usize,
956 max_operand_arity: 2usize,
957 required_modifiers: &[],
958 },
959 InstructionSyntax {
960 opcode: InstructionOpcode::Brkpt,
961 name: "brkpt",
962 syntax: "brkpt;",
963 min_operand_arity: 0usize,
964 max_operand_arity: 0usize,
965 required_modifiers: &[],
966 },
967 InstructionSyntax {
968 opcode: InstructionOpcode::BrxIdx,
969 name: "brx.idx",
970 syntax: "brx.idx{.uni} index, tlist;",
971 min_operand_arity: 2usize,
972 max_operand_arity: 2usize,
973 required_modifiers: &[],
974 },
975 InstructionSyntax {
976 opcode: InstructionOpcode::Call,
977 name: "call",
978 syntax: "call{.uni} (ret-param), fptr, (param-list), flist;",
979 min_operand_arity: 4usize,
980 max_operand_arity: 4usize,
981 required_modifiers: &[],
982 },
983 InstructionSyntax {
984 opcode: InstructionOpcode::Call,
985 name: "call",
986 syntax: "call{.uni} (ret-param), fptr, (param-list), fproto;",
987 min_operand_arity: 4usize,
988 max_operand_arity: 4usize,
989 required_modifiers: &[],
990 },
991 InstructionSyntax {
992 opcode: InstructionOpcode::Call,
993 name: "call",
994 syntax: "call{.uni} (ret-param), func, (param-list);",
995 min_operand_arity: 3usize,
996 max_operand_arity: 3usize,
997 required_modifiers: &[],
998 },
999 InstructionSyntax {
1000 opcode: InstructionOpcode::Call,
1001 name: "call",
1002 syntax: "call{.uni} fptr, (param-list), flist;",
1003 min_operand_arity: 3usize,
1004 max_operand_arity: 3usize,
1005 required_modifiers: &[],
1006 },
1007 InstructionSyntax {
1008 opcode: InstructionOpcode::Call,
1009 name: "call",
1010 syntax: "call{.uni} fptr, (param-list), fproto;",
1011 min_operand_arity: 3usize,
1012 max_operand_arity: 3usize,
1013 required_modifiers: &[],
1014 },
1015 InstructionSyntax {
1016 opcode: InstructionOpcode::Call,
1017 name: "call",
1018 syntax: "call{.uni} fptr, flist;",
1019 min_operand_arity: 2usize,
1020 max_operand_arity: 2usize,
1021 required_modifiers: &[],
1022 },
1023 InstructionSyntax {
1024 opcode: InstructionOpcode::Call,
1025 name: "call",
1026 syntax: "call{.uni} fptr, fproto;",
1027 min_operand_arity: 2usize,
1028 max_operand_arity: 2usize,
1029 required_modifiers: &[],
1030 },
1031 InstructionSyntax {
1032 opcode: InstructionOpcode::Call,
1033 name: "call",
1034 syntax: "call{.uni} func, (param-list);",
1035 min_operand_arity: 2usize,
1036 max_operand_arity: 2usize,
1037 required_modifiers: &[],
1038 },
1039 InstructionSyntax {
1040 opcode: InstructionOpcode::Call,
1041 name: "call",
1042 syntax: "call{.uni} func;",
1043 min_operand_arity: 1usize,
1044 max_operand_arity: 1usize,
1045 required_modifiers: &[],
1046 },
1047 InstructionSyntax {
1048 opcode: InstructionOpcode::Clmad,
1049 name: "clmad",
1050 syntax: "clmad.mode.u64 d, a, b, c;",
1051 min_operand_arity: 4usize,
1052 max_operand_arity: 4usize,
1053 required_modifiers: &[".u64"],
1054 },
1055 InstructionSyntax {
1056 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
1057 name: "clusterlaunchcontrol.query_cancel",
1058 syntax: "clusterlaunchcontrol.query_cancel.get_first_ctaid.v4.b32.b128 {xdim, ydim, zdim, _}, try_cancel_response;",
1059 min_operand_arity: 4usize,
1060 max_operand_arity: 5usize,
1061 required_modifiers: &[".get_first_ctaid", ".v4", ".b32", ".b128"],
1062 },
1063 InstructionSyntax {
1064 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
1065 name: "clusterlaunchcontrol.query_cancel",
1066 syntax: "clusterlaunchcontrol.query_cancel.get_first_ctaid{::dimension}.b32.b128 reg, try_cancel_response;",
1067 min_operand_arity: 2usize,
1068 max_operand_arity: 2usize,
1069 required_modifiers: &[".get_first_ctaid", ".b32", ".b128"],
1070 },
1071 InstructionSyntax {
1072 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
1073 name: "clusterlaunchcontrol.query_cancel",
1074 syntax: "clusterlaunchcontrol.query_cancel.is_canceled.pred.b128 pred, try_cancel_response;",
1075 min_operand_arity: 2usize,
1076 max_operand_arity: 2usize,
1077 required_modifiers: &[".is_canceled", ".pred", ".b128"],
1078 },
1079 InstructionSyntax {
1080 opcode: InstructionOpcode::ClusterLaunchControlTryCancel,
1081 name: "clusterlaunchcontrol.try_cancel",
1082 syntax: "clusterlaunchcontrol.try_cancel.async{.space}.completion_mechanism{.multicast::cluster::all}.b128 [addr], [mbar];",
1083 min_operand_arity: 2usize,
1084 max_operand_arity: 2usize,
1085 required_modifiers: &[".async", ".b128"],
1086 },
1087 InstructionSyntax {
1088 opcode: InstructionOpcode::Clz,
1089 name: "clz",
1090 syntax: "clz.type d, a;",
1091 min_operand_arity: 2usize,
1092 max_operand_arity: 2usize,
1093 required_modifiers: &[],
1094 },
1095 InstructionSyntax {
1096 opcode: InstructionOpcode::Cnot,
1097 name: "cnot",
1098 syntax: "cnot.type d, a;",
1099 min_operand_arity: 2usize,
1100 max_operand_arity: 2usize,
1101 required_modifiers: &[],
1102 },
1103 InstructionSyntax {
1104 opcode: InstructionOpcode::Copysign,
1105 name: "copysign",
1106 syntax: "copysign.type d, a, b;",
1107 min_operand_arity: 3usize,
1108 max_operand_arity: 3usize,
1109 required_modifiers: &[],
1110 },
1111 InstructionSyntax {
1112 opcode: InstructionOpcode::Cos,
1113 name: "cos",
1114 syntax: "cos.approx{.ftz}.f32 d, a;",
1115 min_operand_arity: 2usize,
1116 max_operand_arity: 2usize,
1117 required_modifiers: &[".approx", ".f32"],
1118 },
1119 InstructionSyntax {
1120 opcode: InstructionOpcode::CpAsyncMbarrierArrive,
1121 name: "cp.async.mbarrier.arrive",
1122 syntax: "cp.async.mbarrier.arrive{.noinc}{.shared{::cta}}.b64 [addr];",
1123 min_operand_arity: 1usize,
1124 max_operand_arity: 1usize,
1125 required_modifiers: &[".b64"],
1126 },
1127 InstructionSyntax {
1128 opcode: InstructionOpcode::CreatePolicy,
1129 name: "createpolicy",
1130 syntax: "createpolicy.cvt.L2.b64 cache_policy, access-property;",
1131 min_operand_arity: 2usize,
1132 max_operand_arity: 2usize,
1133 required_modifiers: &[".cvt", ".L2", ".b64"],
1134 },
1135 InstructionSyntax {
1136 opcode: InstructionOpcode::CreatePolicy,
1137 name: "createpolicy",
1138 syntax: "createpolicy.fractional.level::primary_priority{.level::secondary_priority}.b64 cache_policy{, fraction};",
1139 min_operand_arity: 1usize,
1140 max_operand_arity: 2usize,
1141 required_modifiers: &[".fractional", ".b64"],
1142 },
1143 InstructionSyntax {
1144 opcode: InstructionOpcode::CreatePolicy,
1145 name: "createpolicy",
1146 syntax: "createpolicy.range{.global}.level::primary_priority{.level::secondary_priority}.b64 cache_policy, [a], primary-size, total-size;",
1147 min_operand_arity: 4usize,
1148 max_operand_arity: 4usize,
1149 required_modifiers: &[".range", ".b64"],
1150 },
1151 InstructionSyntax {
1152 opcode: InstructionOpcode::Cvt,
1153 name: "cvt",
1154 syntax: "cvt.frnd2{.relu}{.satfinite}.bf16.f32 d, a;",
1155 min_operand_arity: 2usize,
1156 max_operand_arity: 2usize,
1157 required_modifiers: &[".bf16", ".f32"],
1158 },
1159 InstructionSyntax {
1160 opcode: InstructionOpcode::Cvt,
1161 name: "cvt",
1162 syntax: "cvt.frnd2{.relu}{.satfinite}.bf16x2.f32 d, a, b;",
1163 min_operand_arity: 3usize,
1164 max_operand_arity: 3usize,
1165 required_modifiers: &[".bf16x2", ".f32"],
1166 },
1167 InstructionSyntax {
1168 opcode: InstructionOpcode::Cvt,
1169 name: "cvt",
1170 syntax: "cvt.frnd2{.relu}{.satfinite}.f16.f32 d, a;",
1171 min_operand_arity: 2usize,
1172 max_operand_arity: 2usize,
1173 required_modifiers: &[".f16", ".f32"],
1174 },
1175 InstructionSyntax {
1176 opcode: InstructionOpcode::Cvt,
1177 name: "cvt",
1178 syntax: "cvt.frnd2{.relu}{.satfinite}.f16x2.f32 d, a, b;",
1179 min_operand_arity: 3usize,
1180 max_operand_arity: 3usize,
1181 required_modifiers: &[".f16x2", ".f32"],
1182 },
1183 InstructionSyntax {
1184 opcode: InstructionOpcode::Cvt,
1185 name: "cvt",
1186 syntax: "cvt.frnd2{.satfinite}{.relu}.tf32.f32 d, a;",
1187 min_operand_arity: 2usize,
1188 max_operand_arity: 2usize,
1189 required_modifiers: &[".tf32", ".f32"],
1190 },
1191 InstructionSyntax {
1192 opcode: InstructionOpcode::Cvt,
1193 name: "cvt",
1194 syntax: "cvt.frnd3{.satfinite}.ue8m0x2.bf16x2 d, a;",
1195 min_operand_arity: 2usize,
1196 max_operand_arity: 2usize,
1197 required_modifiers: &[".ue8m0x2", ".bf16x2"],
1198 },
1199 InstructionSyntax {
1200 opcode: InstructionOpcode::Cvt,
1201 name: "cvt",
1202 syntax: "cvt.frnd3{.satfinite}.ue8m0x2.f32 d, a, b;",
1203 min_operand_arity: 3usize,
1204 max_operand_arity: 3usize,
1205 required_modifiers: &[".ue8m0x2", ".f32"],
1206 },
1207 InstructionSyntax {
1208 opcode: InstructionOpcode::Cvt,
1209 name: "cvt",
1210 syntax: "cvt.rn.bf16x2.ue8m0x2 d, a;",
1211 min_operand_arity: 2usize,
1212 max_operand_arity: 2usize,
1213 required_modifiers: &[".rn", ".bf16x2", ".ue8m0x2"],
1214 },
1215 InstructionSyntax {
1216 opcode: InstructionOpcode::Cvt,
1217 name: "cvt",
1218 syntax: "cvt.rn.satfinite{.relu}.f4x2type.f32 d, a, b;",
1219 min_operand_arity: 3usize,
1220 max_operand_arity: 3usize,
1221 required_modifiers: &[".rn", ".satfinite", ".f32"],
1222 },
1223 InstructionSyntax {
1224 opcode: InstructionOpcode::Cvt,
1225 name: "cvt",
1226 syntax: "cvt.rn.satfinite{.relu}.f4x2type.fp16x2type d, a;",
1227 min_operand_arity: 2usize,
1228 max_operand_arity: 2usize,
1229 required_modifiers: &[".rn", ".satfinite"],
1230 },
1231 InstructionSyntax {
1232 opcode: InstructionOpcode::Cvt,
1233 name: "cvt",
1234 syntax: "cvt.rn.satfinite{.relu}.f6x2type.f32 d, a, b;",
1235 min_operand_arity: 3usize,
1236 max_operand_arity: 3usize,
1237 required_modifiers: &[".rn", ".satfinite", ".f32"],
1238 },
1239 InstructionSyntax {
1240 opcode: InstructionOpcode::Cvt,
1241 name: "cvt",
1242 syntax: "cvt.rn.satfinite{.relu}.f6x2type.fp16x2type d, a;",
1243 min_operand_arity: 2usize,
1244 max_operand_arity: 2usize,
1245 required_modifiers: &[".rn", ".satfinite"],
1246 },
1247 InstructionSyntax {
1248 opcode: InstructionOpcode::Cvt,
1249 name: "cvt",
1250 syntax: "cvt.rn.satfinite{.relu}.f8x2type.f32 d, a, b;",
1251 min_operand_arity: 3usize,
1252 max_operand_arity: 3usize,
1253 required_modifiers: &[".rn", ".satfinite", ".f32"],
1254 },
1255 InstructionSyntax {
1256 opcode: InstructionOpcode::Cvt,
1257 name: "cvt",
1258 syntax: "cvt.rn.satfinite{.relu}.f8x2type.fp16x2 d, a;",
1259 min_operand_arity: 2usize,
1260 max_operand_arity: 2usize,
1261 required_modifiers: &[".rn", ".satfinite", ".fp16x2"],
1262 },
1263 InstructionSyntax {
1264 opcode: InstructionOpcode::Cvt,
1265 name: "cvt",
1266 syntax: "cvt.rn.satfinite{.relu}{.scaled::n2::ue8m0}.s2f6x2.bf16x2 d, a{, scale-factor};",
1267 min_operand_arity: 2usize,
1268 max_operand_arity: 3usize,
1269 required_modifiers: &[".rn", ".satfinite", ".s2f6x2", ".bf16x2"],
1270 },
1271 InstructionSyntax {
1272 opcode: InstructionOpcode::Cvt,
1273 name: "cvt",
1274 syntax: "cvt.rn.satfinite{.relu}{.scaled::n2::ue8m0}.s2f6x2.f32 d, a, b{, scale-factor};",
1275 min_operand_arity: 3usize,
1276 max_operand_arity: 4usize,
1277 required_modifiers: &[".rn", ".satfinite", ".s2f6x2", ".f32"],
1278 },
1279 InstructionSyntax {
1280 opcode: InstructionOpcode::Cvt,
1281 name: "cvt",
1282 syntax: "cvt.rna{.satfinite}.tf32.f32 d, a;",
1283 min_operand_arity: 2usize,
1284 max_operand_arity: 2usize,
1285 required_modifiers: &[".rna", ".tf32", ".f32"],
1286 },
1287 InstructionSyntax {
1288 opcode: InstructionOpcode::Cvt,
1289 name: "cvt",
1290 syntax: "cvt.rn{.relu}.f16x2.f4x2type d, a;",
1291 min_operand_arity: 2usize,
1292 max_operand_arity: 2usize,
1293 required_modifiers: &[".rn", ".f16x2"],
1294 },
1295 InstructionSyntax {
1296 opcode: InstructionOpcode::Cvt,
1297 name: "cvt",
1298 syntax: "cvt.rn{.relu}.f16x2.f6x2type d, a;",
1299 min_operand_arity: 2usize,
1300 max_operand_arity: 2usize,
1301 required_modifiers: &[".rn", ".f16x2"],
1302 },
1303 InstructionSyntax {
1304 opcode: InstructionOpcode::Cvt,
1305 name: "cvt",
1306 syntax: "cvt.rn{.relu}.f16x2.f8x2type d, a;",
1307 min_operand_arity: 2usize,
1308 max_operand_arity: 2usize,
1309 required_modifiers: &[".rn", ".f16x2"],
1310 },
1311 InstructionSyntax {
1312 opcode: InstructionOpcode::Cvt,
1313 name: "cvt",
1314 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f4x2type d, a{, scale-factor};",
1315 min_operand_arity: 2usize,
1316 max_operand_arity: 3usize,
1317 required_modifiers: &[".rn", ".bf16x2"],
1318 },
1319 InstructionSyntax {
1320 opcode: InstructionOpcode::Cvt,
1321 name: "cvt",
1322 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f6x2type d, a{, scale-factor};",
1323 min_operand_arity: 2usize,
1324 max_operand_arity: 3usize,
1325 required_modifiers: &[".rn", ".bf16x2"],
1326 },
1327 InstructionSyntax {
1328 opcode: InstructionOpcode::Cvt,
1329 name: "cvt",
1330 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f8x2type d, a{, scale-factor};",
1331 min_operand_arity: 2usize,
1332 max_operand_arity: 3usize,
1333 required_modifiers: &[".rn", ".bf16x2"],
1334 },
1335 InstructionSyntax {
1336 opcode: InstructionOpcode::Cvt,
1337 name: "cvt",
1338 syntax: "cvt.rn{.satfinite}{.relu}{.scaled::n2::ue8m0}.bf16x2.s2f6x2 d, a{, scale-factor};",
1339 min_operand_arity: 2usize,
1340 max_operand_arity: 3usize,
1341 required_modifiers: &[".rn", ".bf16x2", ".s2f6x2"],
1342 },
1343 InstructionSyntax {
1344 opcode: InstructionOpcode::Cvt,
1345 name: "cvt",
1346 syntax: "cvt.rs{.relu}.satfinite.f4x4type.f32 d, {a, b, e, f}, rbits;",
1347 min_operand_arity: 5usize,
1348 max_operand_arity: 6usize,
1349 required_modifiers: &[".rs", ".satfinite", ".f32"],
1350 },
1351 InstructionSyntax {
1352 opcode: InstructionOpcode::Cvt,
1353 name: "cvt",
1354 syntax: "cvt.rs{.relu}.satfinite.f6x4type.f32 d, {a, b, e, f}, rbits;",
1355 min_operand_arity: 5usize,
1356 max_operand_arity: 6usize,
1357 required_modifiers: &[".rs", ".satfinite", ".f32"],
1358 },
1359 InstructionSyntax {
1360 opcode: InstructionOpcode::Cvt,
1361 name: "cvt",
1362 syntax: "cvt.rs{.relu}.satfinite.f8x4type.f32 d, {a, b, e, f}, rbits;",
1363 min_operand_arity: 5usize,
1364 max_operand_arity: 6usize,
1365 required_modifiers: &[".rs", ".satfinite", ".f32"],
1366 },
1367 InstructionSyntax {
1368 opcode: InstructionOpcode::Cvt,
1369 name: "cvt",
1370 syntax: "cvt.rs{.relu}{.satfinite}.bf16x2.f32 d, a, b, rbits;",
1371 min_operand_arity: 4usize,
1372 max_operand_arity: 4usize,
1373 required_modifiers: &[".rs", ".bf16x2", ".f32"],
1374 },
1375 InstructionSyntax {
1376 opcode: InstructionOpcode::Cvt,
1377 name: "cvt",
1378 syntax: "cvt.rs{.relu}{.satfinite}.f16x2.f32 d, a, b, rbits;",
1379 min_operand_arity: 4usize,
1380 max_operand_arity: 4usize,
1381 required_modifiers: &[".rs", ".f16x2", ".f32"],
1382 },
1383 InstructionSyntax {
1384 opcode: InstructionOpcode::Cvt,
1385 name: "cvt",
1386 syntax: "cvt{.irnd}{.ftz}{.sat}.dtype.atype d, a; cvt{.frnd}{.ftz}{.sat}.dtype.atype d, a;",
1387 min_operand_arity: 2usize,
1388 max_operand_arity: 3usize,
1389 required_modifiers: &[],
1390 },
1391 InstructionSyntax {
1392 opcode: InstructionOpcode::CvtPack,
1393 name: "cvt.pack",
1394 syntax: "cvt.pack.sat.convertType.abType d, a, b;",
1395 min_operand_arity: 3usize,
1396 max_operand_arity: 3usize,
1397 required_modifiers: &[".sat"],
1398 },
1399 InstructionSyntax {
1400 opcode: InstructionOpcode::CvtPack,
1401 name: "cvt.pack",
1402 syntax: "cvt.pack.sat.convertType.abType.cType d, a, b, c;",
1403 min_operand_arity: 4usize,
1404 max_operand_arity: 4usize,
1405 required_modifiers: &[".sat"],
1406 },
1407 InstructionSyntax {
1408 opcode: InstructionOpcode::Cvta,
1409 name: "cvta",
1410 syntax: "cvta.space.size p, a; cvta.space.size p, var; cvta.space.size p, var+imm;",
1411 min_operand_arity: 4usize,
1412 max_operand_arity: 4usize,
1413 required_modifiers: &[],
1414 },
1415 InstructionSyntax {
1416 opcode: InstructionOpcode::Cvta,
1417 name: "cvta",
1418 syntax: "cvta.to.space.size p, a;",
1419 min_operand_arity: 2usize,
1420 max_operand_arity: 2usize,
1421 required_modifiers: &[".to"],
1422 },
1423 InstructionSyntax {
1424 opcode: InstructionOpcode::Discard,
1425 name: "discard",
1426 syntax: "discard{.global}.level [a], size;",
1427 min_operand_arity: 2usize,
1428 max_operand_arity: 2usize,
1429 required_modifiers: &[],
1430 },
1431 InstructionSyntax {
1432 opcode: InstructionOpcode::Div,
1433 name: "div",
1434 syntax: "div.approx{.ftz}.f32 d, a, b; div.full{.ftz}.f32 d, a, b; div.rnd{.ftz}.f32 d, a, b; div.rnd.f64 d, a, b;",
1435 min_operand_arity: 7usize,
1436 max_operand_arity: 9usize,
1437 required_modifiers: &[".approx", ".f32"],
1438 },
1439 InstructionSyntax {
1440 opcode: InstructionOpcode::Div,
1441 name: "div",
1442 syntax: "div.type d, a, b;",
1443 min_operand_arity: 3usize,
1444 max_operand_arity: 3usize,
1445 required_modifiers: &[],
1446 },
1447 InstructionSyntax {
1448 opcode: InstructionOpcode::Dp2A,
1449 name: "dp2a",
1450 syntax: "dp2a.mode.atype.btype d, a, b, c;",
1451 min_operand_arity: 4usize,
1452 max_operand_arity: 4usize,
1453 required_modifiers: &[],
1454 },
1455 InstructionSyntax {
1456 opcode: InstructionOpcode::Dp4A,
1457 name: "dp4a",
1458 syntax: "dp4a.atype.btype d, a, b, c;",
1459 min_operand_arity: 4usize,
1460 max_operand_arity: 4usize,
1461 required_modifiers: &[],
1462 },
1463 InstructionSyntax {
1464 opcode: InstructionOpcode::ElectSync,
1465 name: "elect.sync",
1466 syntax: "elect.sync d|p, membermask;",
1467 min_operand_arity: 2usize,
1468 max_operand_arity: 2usize,
1469 required_modifiers: &[],
1470 },
1471 InstructionSyntax {
1472 opcode: InstructionOpcode::Ex2,
1473 name: "ex2",
1474 syntax: "ex2.approx.atype d, a;",
1475 min_operand_arity: 2usize,
1476 max_operand_arity: 2usize,
1477 required_modifiers: &[".approx"],
1478 },
1479 InstructionSyntax {
1480 opcode: InstructionOpcode::Ex2,
1481 name: "ex2",
1482 syntax: "ex2.approx.ftz.btype d, a;",
1483 min_operand_arity: 2usize,
1484 max_operand_arity: 2usize,
1485 required_modifiers: &[".approx", ".ftz"],
1486 },
1487 InstructionSyntax {
1488 opcode: InstructionOpcode::Ex2,
1489 name: "ex2",
1490 syntax: "ex2.approx{.ftz}.f32 d, a;",
1491 min_operand_arity: 2usize,
1492 max_operand_arity: 2usize,
1493 required_modifiers: &[".approx", ".f32"],
1494 },
1495 InstructionSyntax {
1496 opcode: InstructionOpcode::Exit,
1497 name: "exit",
1498 syntax: "exit;",
1499 min_operand_arity: 0usize,
1500 max_operand_arity: 0usize,
1501 required_modifiers: &[],
1502 },
1503 InstructionSyntax {
1504 opcode: InstructionOpcode::FabricSubmit,
1505 name: "fabric.submit",
1506 syntax: "fabric.submit{.submitop};",
1507 min_operand_arity: 0usize,
1508 max_operand_arity: 0usize,
1509 required_modifiers: &[],
1510 },
1511 InstructionSyntax {
1512 opcode: InstructionOpcode::FabricTryGet,
1513 name: "fabric.try_get",
1514 syntax: "fabric.try_get.async.dst.completion_mechanism.sem.scope.b128 [dst], [srcLeId, srcDataOff], size, [bar];",
1515 min_operand_arity: 5usize,
1516 max_operand_arity: 5usize,
1517 required_modifiers: &[".async", ".b128"],
1518 },
1519 InstructionSyntax {
1520 opcode: InstructionOpcode::FabricTryPullred,
1521 name: "fabric.try_pullred",
1522 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAdd.typeAdd.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
1523 min_operand_arity: 6usize,
1524 max_operand_arity: 6usize,
1525 required_modifiers: &[".async", ".multimem", ".sync"],
1526 },
1527 InstructionSyntax {
1528 opcode: InstructionOpcode::FabricTryPullred,
1529 name: "fabric.try_pullred",
1530 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAddAcc16.typeAddAcc16.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
1531 min_operand_arity: 6usize,
1532 max_operand_arity: 6usize,
1533 required_modifiers: &[".async", ".multimem", ".sync"],
1534 },
1535 InstructionSyntax {
1536 opcode: InstructionOpcode::FabricTryPullred,
1537 name: "fabric.try_pullred",
1538 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAddAcc32.typeAddAcc32.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
1539 min_operand_arity: 6usize,
1540 max_operand_arity: 6usize,
1541 required_modifiers: &[".async", ".multimem", ".sync"],
1542 },
1543 InstructionSyntax {
1544 opcode: InstructionOpcode::FabricTryPullred,
1545 name: "fabric.try_pullred",
1546 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpBit.typeBit.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
1547 min_operand_arity: 6usize,
1548 max_operand_arity: 6usize,
1549 required_modifiers: &[".async", ".multimem", ".sync"],
1550 },
1551 InstructionSyntax {
1552 opcode: InstructionOpcode::FabricTryPullred,
1553 name: "fabric.try_pullred",
1554 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpMinMax.typeMinMax.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
1555 min_operand_arity: 6usize,
1556 max_operand_arity: 6usize,
1557 required_modifiers: &[".async", ".multimem", ".sync"],
1558 },
1559 InstructionSyntax {
1560 opcode: InstructionOpcode::FabricTryPut,
1561 name: "fabric.try_put",
1562 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism0.cp_mask.sem.scope.b128 [dstLeId, dstDataOff], [src], size, [bar], bytemask;",
1563 min_operand_arity: 6usize,
1564 max_operand_arity: 6usize,
1565 required_modifiers: &[".async", ".cp_mask", ".b128"],
1566 },
1567 InstructionSyntax {
1568 opcode: InstructionOpcode::FabricTryPut,
1569 name: "fabric.try_put",
1570 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism0.sem.scope.b128 [dstLeId, dstDataOff], [src], size, [bar];",
1571 min_operand_arity: 5usize,
1572 max_operand_arity: 5usize,
1573 required_modifiers: &[".async", ".b128"],
1574 },
1575 InstructionSyntax {
1576 opcode: InstructionOpcode::FabricTryPut,
1577 name: "fabric.try_put",
1578 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism1.sem.scope.b128 [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
1579 min_operand_arity: 6usize,
1580 max_operand_arity: 6usize,
1581 required_modifiers: &[".async", ".b128"],
1582 },
1583 InstructionSyntax {
1584 opcode: InstructionOpcode::FabricTryRed,
1585 name: "fabric.try_red",
1586 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpArith.typeArith [dstLeId, dstDataOff], [src], size, [bar];",
1587 min_operand_arity: 5usize,
1588 max_operand_arity: 5usize,
1589 required_modifiers: &[".async"],
1590 },
1591 InstructionSyntax {
1592 opcode: InstructionOpcode::FabricTryRed,
1593 name: "fabric.try_red",
1594 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpBit.typeBit [dstLeId, dstDataOff], [src], size, [bar];",
1595 min_operand_arity: 5usize,
1596 max_operand_arity: 5usize,
1597 required_modifiers: &[".async"],
1598 },
1599 InstructionSyntax {
1600 opcode: InstructionOpcode::FabricTryRed,
1601 name: "fabric.try_red",
1602 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpMinMax.typeMinMax [dstLeId, dstDataOff], [src], size, [bar];",
1603 min_operand_arity: 5usize,
1604 max_operand_arity: 5usize,
1605 required_modifiers: &[".async"],
1606 },
1607 InstructionSyntax {
1608 opcode: InstructionOpcode::FabricTryRed,
1609 name: "fabric.try_red",
1610 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpAdd.typeAdd [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
1611 min_operand_arity: 6usize,
1612 max_operand_arity: 6usize,
1613 required_modifiers: &[".async"],
1614 },
1615 InstructionSyntax {
1616 opcode: InstructionOpcode::FabricTryRed,
1617 name: "fabric.try_red",
1618 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpBit.typeBit [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
1619 min_operand_arity: 6usize,
1620 max_operand_arity: 6usize,
1621 required_modifiers: &[".async"],
1622 },
1623 InstructionSyntax {
1624 opcode: InstructionOpcode::FabricTryRed,
1625 name: "fabric.try_red",
1626 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpMinMax.typeMinMax [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
1627 min_operand_arity: 6usize,
1628 max_operand_arity: 6usize,
1629 required_modifiers: &[".async"],
1630 },
1631 InstructionSyntax {
1632 opcode: InstructionOpcode::FabricWait,
1633 name: "fabric.wait",
1634 syntax: "fabric.wait.sync_restrict::reads;",
1635 min_operand_arity: 0usize,
1636 max_operand_arity: 0usize,
1637 required_modifiers: &[".sync_restrict::reads"],
1638 },
1639 InstructionSyntax {
1640 opcode: InstructionOpcode::Fence,
1641 name: "fence",
1642 syntax: "fence.acquire.sync_restrict::shared::cluster.cluster;",
1643 min_operand_arity: 0usize,
1644 max_operand_arity: 0usize,
1645 required_modifiers: &[".acquire", ".sync_restrict::shared::cluster", ".cluster"],
1646 },
1647 InstructionSyntax {
1648 opcode: InstructionOpcode::Fence,
1649 name: "fence",
1650 syntax: "fence.op_restrict.release.cluster;",
1651 min_operand_arity: 0usize,
1652 max_operand_arity: 0usize,
1653 required_modifiers: &[".release", ".cluster"],
1654 },
1655 InstructionSyntax {
1656 opcode: InstructionOpcode::Fence,
1657 name: "fence",
1658 syntax: "fence.proxy.async::generic.acquire.sync_restrict::shared::cluster.cluster;",
1659 min_operand_arity: 0usize,
1660 max_operand_arity: 0usize,
1661 required_modifiers: &[
1662 ".proxy",
1663 ".async::generic",
1664 ".acquire",
1665 ".sync_restrict::shared::cluster",
1666 ".cluster",
1667 ],
1668 },
1669 InstructionSyntax {
1670 opcode: InstructionOpcode::Fence,
1671 name: "fence",
1672 syntax: "fence.proxy.async::generic.release.sync_restrict::shared::cta.cluster;",
1673 min_operand_arity: 0usize,
1674 max_operand_arity: 0usize,
1675 required_modifiers: &[
1676 ".proxy",
1677 ".async::generic",
1678 ".release",
1679 ".sync_restrict::shared::cta",
1680 ".cluster",
1681 ],
1682 },
1683 InstructionSyntax {
1684 opcode: InstructionOpcode::Fence,
1685 name: "fence",
1686 syntax: "fence.proxy.proxykind;",
1687 min_operand_arity: 0usize,
1688 max_operand_arity: 0usize,
1689 required_modifiers: &[".proxy"],
1690 },
1691 InstructionSyntax {
1692 opcode: InstructionOpcode::Fence,
1693 name: "fence",
1694 syntax: "fence.proxy.to_proxykind::from_proxykind.acquire.scope [addr], size;",
1695 min_operand_arity: 2usize,
1696 max_operand_arity: 2usize,
1697 required_modifiers: &[".proxy", ".acquire"],
1698 },
1699 InstructionSyntax {
1700 opcode: InstructionOpcode::Fence,
1701 name: "fence",
1702 syntax: "fence.proxy.to_proxykind::from_proxykind.release.scope;",
1703 min_operand_arity: 0usize,
1704 max_operand_arity: 0usize,
1705 required_modifiers: &[".proxy", ".release"],
1706 },
1707 InstructionSyntax {
1708 opcode: InstructionOpcode::Fence,
1709 name: "fence",
1710 syntax: "fence.proxy.to_proxykind::from_proxykind_fabric.alias.sem_fabric.sys;",
1711 min_operand_arity: 0usize,
1712 max_operand_arity: 0usize,
1713 required_modifiers: &[".proxy", ".alias", ".sys"],
1714 },
1715 InstructionSyntax {
1716 opcode: InstructionOpcode::Fence,
1717 name: "fence",
1718 syntax: "fence.release.sync_restrict::shared::cta.cluster;",
1719 min_operand_arity: 0usize,
1720 max_operand_arity: 0usize,
1721 required_modifiers: &[".release", ".sync_restrict::shared::cta", ".cluster"],
1722 },
1723 InstructionSyntax {
1724 opcode: InstructionOpcode::Fence,
1725 name: "fence",
1726 syntax: "fence{.sem}.scope;",
1727 min_operand_arity: 0usize,
1728 max_operand_arity: 0usize,
1729 required_modifiers: &[],
1730 },
1731 InstructionSyntax {
1732 opcode: InstructionOpcode::Fma,
1733 name: "fma",
1734 syntax: "fma.rnd.f64 d, a, b, c;",
1735 min_operand_arity: 4usize,
1736 max_operand_arity: 4usize,
1737 required_modifiers: &[".f64"],
1738 },
1739 InstructionSyntax {
1740 opcode: InstructionOpcode::Fma,
1741 name: "fma",
1742 syntax: "fma.rnd.oob.{relu}.type d, a, b, c;",
1743 min_operand_arity: 4usize,
1744 max_operand_arity: 4usize,
1745 required_modifiers: &[".oob", ".", ".type"],
1746 },
1747 InstructionSyntax {
1748 opcode: InstructionOpcode::Fma,
1749 name: "fma",
1750 syntax: "fma.rnd{.ftz}.f32x2 d, a, b, c;",
1751 min_operand_arity: 4usize,
1752 max_operand_arity: 4usize,
1753 required_modifiers: &[".f32x2"],
1754 },
1755 InstructionSyntax {
1756 opcode: InstructionOpcode::Fma,
1757 name: "fma",
1758 syntax: "fma.rnd{.ftz}.relu.f16 d, a, b, c;",
1759 min_operand_arity: 4usize,
1760 max_operand_arity: 4usize,
1761 required_modifiers: &[".relu", ".f16"],
1762 },
1763 InstructionSyntax {
1764 opcode: InstructionOpcode::Fma,
1765 name: "fma",
1766 syntax: "fma.rnd{.ftz}.relu.f16x2 d, a, b, c;",
1767 min_operand_arity: 4usize,
1768 max_operand_arity: 4usize,
1769 required_modifiers: &[".relu", ".f16x2"],
1770 },
1771 InstructionSyntax {
1772 opcode: InstructionOpcode::Fma,
1773 name: "fma",
1774 syntax: "fma.rnd{.ftz}{.sat}.f16 d, a, b, c;",
1775 min_operand_arity: 4usize,
1776 max_operand_arity: 4usize,
1777 required_modifiers: &[".f16"],
1778 },
1779 InstructionSyntax {
1780 opcode: InstructionOpcode::Fma,
1781 name: "fma",
1782 syntax: "fma.rnd{.ftz}{.sat}.f16x2 d, a, b, c;",
1783 min_operand_arity: 4usize,
1784 max_operand_arity: 4usize,
1785 required_modifiers: &[".f16x2"],
1786 },
1787 InstructionSyntax {
1788 opcode: InstructionOpcode::Fma,
1789 name: "fma",
1790 syntax: "fma.rnd{.ftz}{.sat}.f32 d, a, b, c;",
1791 min_operand_arity: 4usize,
1792 max_operand_arity: 4usize,
1793 required_modifiers: &[".f32"],
1794 },
1795 InstructionSyntax {
1796 opcode: InstructionOpcode::Fma,
1797 name: "fma",
1798 syntax: "fma.rnd{.relu}.bf16 d, a, b, c;",
1799 min_operand_arity: 4usize,
1800 max_operand_arity: 4usize,
1801 required_modifiers: &[".bf16"],
1802 },
1803 InstructionSyntax {
1804 opcode: InstructionOpcode::Fma,
1805 name: "fma",
1806 syntax: "fma.rnd{.relu}.bf16x2 d, a, b, c;",
1807 min_operand_arity: 4usize,
1808 max_operand_arity: 4usize,
1809 required_modifiers: &[".bf16x2"],
1810 },
1811 InstructionSyntax {
1812 opcode: InstructionOpcode::Fma,
1813 name: "fma",
1814 syntax: "fma.rnd{.sat}.f32.abtype d, a, b, c;",
1815 min_operand_arity: 4usize,
1816 max_operand_arity: 4usize,
1817 required_modifiers: &[".f32"],
1818 },
1819 InstructionSyntax {
1820 opcode: InstructionOpcode::Fns,
1821 name: "fns",
1822 syntax: "fns.b32 d, mask, base, offset;",
1823 min_operand_arity: 4usize,
1824 max_operand_arity: 4usize,
1825 required_modifiers: &[".b32"],
1826 },
1827 InstructionSyntax {
1828 opcode: InstructionOpcode::GetCtaRank,
1829 name: "getctarank",
1830 syntax: "getctarank.shared::cluster.type d, a;",
1831 min_operand_arity: 2usize,
1832 max_operand_arity: 2usize,
1833 required_modifiers: &[".shared::cluster"],
1834 },
1835 InstructionSyntax {
1836 opcode: InstructionOpcode::GetCtaRank,
1837 name: "getctarank",
1838 syntax: "getctarank.shared::cluster.type d, var + imm;",
1839 min_operand_arity: 2usize,
1840 max_operand_arity: 2usize,
1841 required_modifiers: &[".shared::cluster"],
1842 },
1843 InstructionSyntax {
1844 opcode: InstructionOpcode::GetCtaRank,
1845 name: "getctarank",
1846 syntax: "getctarank.shared::cluster.type d, var;",
1847 min_operand_arity: 2usize,
1848 max_operand_arity: 2usize,
1849 required_modifiers: &[".shared::cluster"],
1850 },
1851 InstructionSyntax {
1852 opcode: InstructionOpcode::GetCtaRank,
1853 name: "getctarank",
1854 syntax: "getctarank.type d, a;",
1855 min_operand_arity: 2usize,
1856 max_operand_arity: 2usize,
1857 required_modifiers: &[],
1858 },
1859 InstructionSyntax {
1860 opcode: InstructionOpcode::GetCtaRank,
1861 name: "getctarank",
1862 syntax: "getctarank{.space}.type d, a;",
1863 min_operand_arity: 2usize,
1864 max_operand_arity: 2usize,
1865 required_modifiers: &[],
1866 },
1867 InstructionSyntax {
1868 opcode: InstructionOpcode::GridDepControl,
1869 name: "griddepcontrol",
1870 syntax: "griddepcontrol.action;",
1871 min_operand_arity: 0usize,
1872 max_operand_arity: 0usize,
1873 required_modifiers: &[],
1874 },
1875 InstructionSyntax {
1876 opcode: InstructionOpcode::IsSpaceP,
1877 name: "isspacep",
1878 syntax: "isspacep.space p, a;",
1879 min_operand_arity: 2usize,
1880 max_operand_arity: 2usize,
1881 required_modifiers: &[],
1882 },
1883 InstructionSyntax {
1884 opcode: InstructionOpcode::IsTypeP,
1885 name: "istypep",
1886 syntax: "istypep.type p, a;",
1887 min_operand_arity: 2usize,
1888 max_operand_arity: 2usize,
1889 required_modifiers: &[],
1890 },
1891 InstructionSyntax {
1892 opcode: InstructionOpcode::Ld,
1893 name: "ld",
1894 syntax: "ld.acquire.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{, cache_policy};",
1895 min_operand_arity: 2usize,
1896 max_operand_arity: 3usize,
1897 required_modifiers: &[".acquire"],
1898 },
1899 InstructionSyntax {
1900 opcode: InstructionOpcode::Ld,
1901 name: "ld",
1902 syntax: "ld.mmio.sem.sys{.global}.type d, [a];",
1903 min_operand_arity: 2usize,
1904 max_operand_arity: 2usize,
1905 required_modifiers: &[".mmio", ".sys"],
1906 },
1907 InstructionSyntax {
1908 opcode: InstructionOpcode::Ld,
1909 name: "ld",
1910 syntax: "ld.relaxed.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{, cache_policy};",
1911 min_operand_arity: 2usize,
1912 max_operand_arity: 3usize,
1913 required_modifiers: &[".relaxed"],
1914 },
1915 InstructionSyntax {
1916 opcode: InstructionOpcode::Ld,
1917 name: "ld",
1918 syntax: "ld.volatile{.ss}{.level::prefetch_size}{.vec}.type d, [a];",
1919 min_operand_arity: 2usize,
1920 max_operand_arity: 2usize,
1921 required_modifiers: &[".volatile"],
1922 },
1923 InstructionSyntax {
1924 opcode: InstructionOpcode::Ld,
1925 name: "ld",
1926 syntax: "ld{.weak}{.ss}{.cop}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{.unified}{, cache_policy};",
1927 min_operand_arity: 2usize,
1928 max_operand_arity: 3usize,
1929 required_modifiers: &[],
1930 },
1931 InstructionSyntax {
1932 opcode: InstructionOpcode::Ld,
1933 name: "ld",
1934 syntax: "ld{.weak}{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{.unified}{, cache_policy};",
1935 min_operand_arity: 2usize,
1936 max_operand_arity: 3usize,
1937 required_modifiers: &[],
1938 },
1939 InstructionSyntax {
1940 opcode: InstructionOpcode::LdGlobalNc,
1941 name: "ld.global.nc",
1942 syntax: "ld.global.nc{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}.type d, [a]{, cache_policy};",
1943 min_operand_arity: 2usize,
1944 max_operand_arity: 3usize,
1945 required_modifiers: &[],
1946 },
1947 InstructionSyntax {
1948 opcode: InstructionOpcode::LdGlobalNc,
1949 name: "ld.global.nc",
1950 syntax: "ld.global.nc{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}.vec.type d, [a]{, cache_policy};",
1951 min_operand_arity: 2usize,
1952 max_operand_arity: 3usize,
1953 required_modifiers: &[],
1954 },
1955 InstructionSyntax {
1956 opcode: InstructionOpcode::LdMatrix,
1957 name: "ldmatrix",
1958 syntax: "ldmatrix.sync.aligned.m16n16.num.trans{.ss}.dst_fmt.src_fmt r, [p];",
1959 min_operand_arity: 2usize,
1960 max_operand_arity: 2usize,
1961 required_modifiers: &[".sync", ".aligned", ".m16n16", ".trans"],
1962 },
1963 InstructionSyntax {
1964 opcode: InstructionOpcode::LdMatrix,
1965 name: "ldmatrix",
1966 syntax: "ldmatrix.sync.aligned.m8n16.num{.ss}.dst_fmt.src_fmt r, [p];",
1967 min_operand_arity: 2usize,
1968 max_operand_arity: 2usize,
1969 required_modifiers: &[".sync", ".aligned", ".m8n16"],
1970 },
1971 InstructionSyntax {
1972 opcode: InstructionOpcode::LdMatrix,
1973 name: "ldmatrix",
1974 syntax: "ldmatrix.sync.aligned.shape.num{.trans}{.ss}.type r, [p];",
1975 min_operand_arity: 2usize,
1976 max_operand_arity: 2usize,
1977 required_modifiers: &[".sync", ".aligned"],
1978 },
1979 InstructionSyntax {
1980 opcode: InstructionOpcode::Ldu,
1981 name: "ldu",
1982 syntax: "ldu{.ss}.type d, [a]; ldu{.ss}.vec.type d, [a];",
1983 min_operand_arity: 2usize,
1984 max_operand_arity: 3usize,
1985 required_modifiers: &[],
1986 },
1987 InstructionSyntax {
1988 opcode: InstructionOpcode::Lg2,
1989 name: "lg2",
1990 syntax: "lg2.approx{.ftz}.f32 d, a;",
1991 min_operand_arity: 2usize,
1992 max_operand_arity: 2usize,
1993 required_modifiers: &[".approx", ".f32"],
1994 },
1995 InstructionSyntax {
1996 opcode: InstructionOpcode::Lop3,
1997 name: "lop3",
1998 syntax: "lop3.BoolOp.b32 d|p, a, b, c, immLut, q;",
1999 min_operand_arity: 6usize,
2000 max_operand_arity: 6usize,
2001 required_modifiers: &[".b32"],
2002 },
2003 InstructionSyntax {
2004 opcode: InstructionOpcode::Lop3,
2005 name: "lop3",
2006 syntax: "lop3.b32 d, a, b, c, immLut;",
2007 min_operand_arity: 5usize,
2008 max_operand_arity: 5usize,
2009 required_modifiers: &[".b32"],
2010 },
2011 InstructionSyntax {
2012 opcode: InstructionOpcode::Mad,
2013 name: "mad",
2014 syntax: "mad.hi.sat.s32 d, a, b, c;",
2015 min_operand_arity: 4usize,
2016 max_operand_arity: 4usize,
2017 required_modifiers: &[".hi", ".sat", ".s32"],
2018 },
2019 InstructionSyntax {
2020 opcode: InstructionOpcode::Mad,
2021 name: "mad",
2022 syntax: "mad.mode.type d, a, b, c;",
2023 min_operand_arity: 4usize,
2024 max_operand_arity: 4usize,
2025 required_modifiers: &[],
2026 },
2027 InstructionSyntax {
2028 opcode: InstructionOpcode::Mad,
2029 name: "mad",
2030 syntax: "mad{.ftz}{.sat}.f32 d, a, b, c; mad.rnd{.ftz}{.sat}.f32 d, a, b, c; mad.rnd.f64 d, a, b, c;",
2031 min_operand_arity: 9usize,
2032 max_operand_arity: 10usize,
2033 required_modifiers: &[".f32"],
2034 },
2035 InstructionSyntax {
2036 opcode: InstructionOpcode::Mad24,
2037 name: "mad24",
2038 syntax: "mad24.hi.sat.s32 d, a, b, c;",
2039 min_operand_arity: 4usize,
2040 max_operand_arity: 4usize,
2041 required_modifiers: &[".hi", ".sat", ".s32"],
2042 },
2043 InstructionSyntax {
2044 opcode: InstructionOpcode::Mad24,
2045 name: "mad24",
2046 syntax: "mad24.mode.type d, a, b, c;",
2047 min_operand_arity: 4usize,
2048 max_operand_arity: 4usize,
2049 required_modifiers: &[],
2050 },
2051 InstructionSyntax {
2052 opcode: InstructionOpcode::Madc,
2053 name: "madc",
2054 syntax: "madc{.hi,.lo}{.cc}.type d, a, b, c;",
2055 min_operand_arity: 4usize,
2056 max_operand_arity: 4usize,
2057 required_modifiers: &[],
2058 },
2059 InstructionSyntax {
2060 opcode: InstructionOpcode::Mapa,
2061 name: "mapa",
2062 syntax: "mapa.shared::cluster.type d, a, b;",
2063 min_operand_arity: 3usize,
2064 max_operand_arity: 3usize,
2065 required_modifiers: &[".shared::cluster"],
2066 },
2067 InstructionSyntax {
2068 opcode: InstructionOpcode::Mapa,
2069 name: "mapa",
2070 syntax: "mapa.shared::cluster.type d, sh + imm, b;",
2071 min_operand_arity: 3usize,
2072 max_operand_arity: 3usize,
2073 required_modifiers: &[".shared::cluster"],
2074 },
2075 InstructionSyntax {
2076 opcode: InstructionOpcode::Mapa,
2077 name: "mapa",
2078 syntax: "mapa.shared::cluster.type d, sh, b;",
2079 min_operand_arity: 3usize,
2080 max_operand_arity: 3usize,
2081 required_modifiers: &[".shared::cluster"],
2082 },
2083 InstructionSyntax {
2084 opcode: InstructionOpcode::Mapa,
2085 name: "mapa",
2086 syntax: "mapa.type d, a, b;",
2087 min_operand_arity: 3usize,
2088 max_operand_arity: 3usize,
2089 required_modifiers: &[],
2090 },
2091 InstructionSyntax {
2092 opcode: InstructionOpcode::Mapa,
2093 name: "mapa",
2094 syntax: "mapa{.space}.type d, a, b;",
2095 min_operand_arity: 3usize,
2096 max_operand_arity: 3usize,
2097 required_modifiers: &[],
2098 },
2099 InstructionSyntax {
2100 opcode: InstructionOpcode::Max,
2101 name: "max",
2102 syntax: "max.f64 d, a, b;",
2103 min_operand_arity: 3usize,
2104 max_operand_arity: 3usize,
2105 required_modifiers: &[".f64"],
2106 },
2107 InstructionSyntax {
2108 opcode: InstructionOpcode::Max,
2109 name: "max",
2110 syntax: "max.type1 d, a, b;",
2111 min_operand_arity: 3usize,
2112 max_operand_arity: 3usize,
2113 required_modifiers: &[],
2114 },
2115 InstructionSyntax {
2116 opcode: InstructionOpcode::Max,
2117 name: "max",
2118 syntax: "max{.NaN}{.xorsign.abs}.bf16 d, a, b;",
2119 min_operand_arity: 3usize,
2120 max_operand_arity: 3usize,
2121 required_modifiers: &[".bf16"],
2122 },
2123 InstructionSyntax {
2124 opcode: InstructionOpcode::Max,
2125 name: "max",
2126 syntax: "max{.NaN}{.xorsign.abs}.bf16x2 d, a, b;",
2127 min_operand_arity: 3usize,
2128 max_operand_arity: 3usize,
2129 required_modifiers: &[".bf16x2"],
2130 },
2131 InstructionSyntax {
2132 opcode: InstructionOpcode::Max,
2133 name: "max",
2134 syntax: "max{.ftz}{.NaN}{.abs}.f32 d, a, b, c;",
2135 min_operand_arity: 4usize,
2136 max_operand_arity: 4usize,
2137 required_modifiers: &[".f32"],
2138 },
2139 InstructionSyntax {
2140 opcode: InstructionOpcode::Max,
2141 name: "max",
2142 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f16 d, a, b;",
2143 min_operand_arity: 3usize,
2144 max_operand_arity: 3usize,
2145 required_modifiers: &[".f16"],
2146 },
2147 InstructionSyntax {
2148 opcode: InstructionOpcode::Max,
2149 name: "max",
2150 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f16x2 d, a, b;",
2151 min_operand_arity: 3usize,
2152 max_operand_arity: 3usize,
2153 required_modifiers: &[".f16x2"],
2154 },
2155 InstructionSyntax {
2156 opcode: InstructionOpcode::Max,
2157 name: "max",
2158 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f32 d, a, b;",
2159 min_operand_arity: 3usize,
2160 max_operand_arity: 3usize,
2161 required_modifiers: &[".f32"],
2162 },
2163 InstructionSyntax {
2164 opcode: InstructionOpcode::Max,
2165 name: "max",
2166 syntax: "max{.relu}.type2 d, a, b;",
2167 min_operand_arity: 3usize,
2168 max_operand_arity: 3usize,
2169 required_modifiers: &[],
2170 },
2171 InstructionSyntax {
2172 opcode: InstructionOpcode::MbarrierArrive,
2173 name: "mbarrier.arrive",
2174 syntax: "mbarrier.arrive.expect_tx{.sem.scope}{.shared::cluster}.b64 _, [addr], txCount;",
2175 min_operand_arity: 3usize,
2176 max_operand_arity: 3usize,
2177 required_modifiers: &[".expect_tx", ".b64"],
2178 },
2179 InstructionSyntax {
2180 opcode: InstructionOpcode::MbarrierArrive,
2181 name: "mbarrier.arrive",
2182 syntax: "mbarrier.arrive.noComplete{.release.cta}{.shared{::cta}}.b64 state, [addr], count;",
2183 min_operand_arity: 3usize,
2184 max_operand_arity: 3usize,
2185 required_modifiers: &[".noComplete", ".b64"],
2186 },
2187 InstructionSyntax {
2188 opcode: InstructionOpcode::MbarrierArrive,
2189 name: "mbarrier.arrive",
2190 syntax: "mbarrier.arrive{.sem.scope}{.shared::cluster}.b64 _, [addr] {,count} mbarrier.arrive.expect_tx{.sem.scope}{.shared{::cta}}.b64 state, [addr], txCount;",
2191 min_operand_arity: 3usize,
2192 max_operand_arity: 5usize,
2193 required_modifiers: &[".b64"],
2194 },
2195 InstructionSyntax {
2196 opcode: InstructionOpcode::MbarrierArrive,
2197 name: "mbarrier.arrive",
2198 syntax: "mbarrier.arrive{.sem.scope}{.shared{::cta}}.b64 state, [addr]{, count};",
2199 min_operand_arity: 2usize,
2200 max_operand_arity: 3usize,
2201 required_modifiers: &[".b64"],
2202 },
2203 InstructionSyntax {
2204 opcode: InstructionOpcode::MbarrierArriveDrop,
2205 name: "mbarrier.arrive_drop",
2206 syntax: "mbarrier.arrive_drop.expect_tx{.sem.scope}{.shared::cluster}.b64 _, [addr], tx_count;",
2207 min_operand_arity: 3usize,
2208 max_operand_arity: 3usize,
2209 required_modifiers: &[".expect_tx", ".b64"],
2210 },
2211 InstructionSyntax {
2212 opcode: InstructionOpcode::MbarrierArriveDrop,
2213 name: "mbarrier.arrive_drop",
2214 syntax: "mbarrier.arrive_drop.expect_tx{.sem.scope}{.shared{::cta}}.b64 state, [addr], tx_count;",
2215 min_operand_arity: 3usize,
2216 max_operand_arity: 3usize,
2217 required_modifiers: &[".expect_tx", ".b64"],
2218 },
2219 InstructionSyntax {
2220 opcode: InstructionOpcode::MbarrierArriveDrop,
2221 name: "mbarrier.arrive_drop",
2222 syntax: "mbarrier.arrive_drop.noComplete{.release.cta}{.shared{::cta}}.b64 state, [addr], count;",
2223 min_operand_arity: 3usize,
2224 max_operand_arity: 3usize,
2225 required_modifiers: &[".noComplete", ".b64"],
2226 },
2227 InstructionSyntax {
2228 opcode: InstructionOpcode::MbarrierArriveDrop,
2229 name: "mbarrier.arrive_drop",
2230 syntax: "mbarrier.arrive_drop{.sem.scope}{.shared::cluster}.b64 _, [addr] {, count};",
2231 min_operand_arity: 2usize,
2232 max_operand_arity: 3usize,
2233 required_modifiers: &[".b64"],
2234 },
2235 InstructionSyntax {
2236 opcode: InstructionOpcode::MbarrierArriveDrop,
2237 name: "mbarrier.arrive_drop",
2238 syntax: "mbarrier.arrive_drop{.sem.scope}{.shared{::cta}}.b64 state, [addr] {, count};",
2239 min_operand_arity: 2usize,
2240 max_operand_arity: 3usize,
2241 required_modifiers: &[".b64"],
2242 },
2243 InstructionSyntax {
2244 opcode: InstructionOpcode::MbarrierCheckLayout,
2245 name: "mbarrier.check_layout",
2246 syntax: "mbarrier.check_layout.layout{.ss}.b64 p, [addr];",
2247 min_operand_arity: 2usize,
2248 max_operand_arity: 2usize,
2249 required_modifiers: &[".b64"],
2250 },
2251 InstructionSyntax {
2252 opcode: InstructionOpcode::MbarrierCompleteTx,
2253 name: "mbarrier.complete_tx",
2254 syntax: "mbarrier.complete_tx{.sem.scope}{.space}.b64 [addr], txCount;",
2255 min_operand_arity: 2usize,
2256 max_operand_arity: 2usize,
2257 required_modifiers: &[".b64"],
2258 },
2259 InstructionSyntax {
2260 opcode: InstructionOpcode::MbarrierExpectTx,
2261 name: "mbarrier.expect_tx",
2262 syntax: "mbarrier.expect_tx{.sem.scope}{.space}.b64 [addr], txCount;",
2263 min_operand_arity: 2usize,
2264 max_operand_arity: 2usize,
2265 required_modifiers: &[".b64"],
2266 },
2267 InstructionSyntax {
2268 opcode: InstructionOpcode::MbarrierInit,
2269 name: "mbarrier.init",
2270 syntax: "mbarrier.init{.layout}{.shared{::cta}}.b64 [addr], count;",
2271 min_operand_arity: 2usize,
2272 max_operand_arity: 2usize,
2273 required_modifiers: &[".b64"],
2274 },
2275 InstructionSyntax {
2276 opcode: InstructionOpcode::MbarrierInval,
2277 name: "mbarrier.inval",
2278 syntax: "mbarrier.inval{.shared{::cta}}.b64 [addr];",
2279 min_operand_arity: 1usize,
2280 max_operand_arity: 1usize,
2281 required_modifiers: &[".b64"],
2282 },
2283 InstructionSyntax {
2284 opcode: InstructionOpcode::MbarrierPendingCount,
2285 name: "mbarrier.pending_count",
2286 syntax: "mbarrier.pending_count{.layout}.b64 count, state;",
2287 min_operand_arity: 2usize,
2288 max_operand_arity: 2usize,
2289 required_modifiers: &[".b64"],
2290 },
2291 InstructionSyntax {
2292 opcode: InstructionOpcode::MbarrierTestWait,
2293 name: "mbarrier.test_wait",
2294 syntax: "mbarrier.test_wait.parity.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], phaseParity;",
2295 min_operand_arity: 3usize,
2296 max_operand_arity: 4usize,
2297 required_modifiers: &[".parity", ".phase_type::primary", ".b64"],
2298 },
2299 InstructionSyntax {
2300 opcode: InstructionOpcode::MbarrierTestWait,
2301 name: "mbarrier.test_wait",
2302 syntax: "mbarrier.test_wait.parity{.phase_type}{.sem.scope}{.ss}.b64 waitComplete, [addr], phaseParity;",
2303 min_operand_arity: 3usize,
2304 max_operand_arity: 3usize,
2305 required_modifiers: &[".parity", ".b64"],
2306 },
2307 InstructionSyntax {
2308 opcode: InstructionOpcode::MbarrierTestWait,
2309 name: "mbarrier.test_wait",
2310 syntax: "mbarrier.test_wait.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], state;",
2311 min_operand_arity: 3usize,
2312 max_operand_arity: 4usize,
2313 required_modifiers: &[".phase_type::primary", ".b64"],
2314 },
2315 InstructionSyntax {
2316 opcode: InstructionOpcode::MbarrierTestWait,
2317 name: "mbarrier.test_wait",
2318 syntax: "mbarrier.test_wait{.phase_type::primary}{.sem.scope}{.ss}.b64 waitComplete, [addr], state;",
2319 min_operand_arity: 3usize,
2320 max_operand_arity: 3usize,
2321 required_modifiers: &[".b64"],
2322 },
2323 InstructionSyntax {
2324 opcode: InstructionOpcode::MbarrierTryWait,
2325 name: "mbarrier.try_wait",
2326 syntax: "mbarrier.try_wait.parity.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], phaseParity {, timeHint};",
2327 min_operand_arity: 3usize,
2328 max_operand_arity: 5usize,
2329 required_modifiers: &[".parity", ".phase_type::primary", ".b64"],
2330 },
2331 InstructionSyntax {
2332 opcode: InstructionOpcode::MbarrierTryWait,
2333 name: "mbarrier.try_wait",
2334 syntax: "mbarrier.try_wait.parity{.phase_type}{.sem.scope}{.ss}.b64 waitComplete, [addr], phaseParity {, timeHint};",
2335 min_operand_arity: 3usize,
2336 max_operand_arity: 4usize,
2337 required_modifiers: &[".parity", ".b64"],
2338 },
2339 InstructionSyntax {
2340 opcode: InstructionOpcode::MbarrierTryWait,
2341 name: "mbarrier.try_wait",
2342 syntax: "mbarrier.try_wait.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], state {, timeHint};",
2343 min_operand_arity: 3usize,
2344 max_operand_arity: 5usize,
2345 required_modifiers: &[".phase_type::primary", ".b64"],
2346 },
2347 InstructionSyntax {
2348 opcode: InstructionOpcode::MbarrierTryWait,
2349 name: "mbarrier.try_wait",
2350 syntax: "mbarrier.try_wait{.phase_type::primary}{.sem.scope}{.ss}.b64 waitComplete, [addr], state {, timeHint};",
2351 min_operand_arity: 3usize,
2352 max_operand_arity: 4usize,
2353 required_modifiers: &[".b64"],
2354 },
2355 InstructionSyntax {
2356 opcode: InstructionOpcode::Membar,
2357 name: "membar",
2358 syntax: "membar.level;",
2359 min_operand_arity: 0usize,
2360 max_operand_arity: 0usize,
2361 required_modifiers: &[],
2362 },
2363 InstructionSyntax {
2364 opcode: InstructionOpcode::Membar,
2365 name: "membar",
2366 syntax: "membar.proxy.proxykind;",
2367 min_operand_arity: 0usize,
2368 max_operand_arity: 0usize,
2369 required_modifiers: &[".proxy"],
2370 },
2371 InstructionSyntax {
2372 opcode: InstructionOpcode::Min,
2373 name: "min",
2374 syntax: "min.f64 d, a, b;",
2375 min_operand_arity: 3usize,
2376 max_operand_arity: 3usize,
2377 required_modifiers: &[".f64"],
2378 },
2379 InstructionSyntax {
2380 opcode: InstructionOpcode::Min,
2381 name: "min",
2382 syntax: "min.type1 d, a, b;",
2383 min_operand_arity: 3usize,
2384 max_operand_arity: 3usize,
2385 required_modifiers: &[],
2386 },
2387 InstructionSyntax {
2388 opcode: InstructionOpcode::Min,
2389 name: "min",
2390 syntax: "min{.NaN}{.xorsign.abs}.bf16 d, a, b;",
2391 min_operand_arity: 3usize,
2392 max_operand_arity: 3usize,
2393 required_modifiers: &[".bf16"],
2394 },
2395 InstructionSyntax {
2396 opcode: InstructionOpcode::Min,
2397 name: "min",
2398 syntax: "min{.NaN}{.xorsign.abs}.bf16x2 d, a, b;",
2399 min_operand_arity: 3usize,
2400 max_operand_arity: 3usize,
2401 required_modifiers: &[".bf16x2"],
2402 },
2403 InstructionSyntax {
2404 opcode: InstructionOpcode::Min,
2405 name: "min",
2406 syntax: "min{.ftz}{.NaN}{.abs}.f32 d, a, b, c;",
2407 min_operand_arity: 4usize,
2408 max_operand_arity: 4usize,
2409 required_modifiers: &[".f32"],
2410 },
2411 InstructionSyntax {
2412 opcode: InstructionOpcode::Min,
2413 name: "min",
2414 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f16 d, a, b;",
2415 min_operand_arity: 3usize,
2416 max_operand_arity: 3usize,
2417 required_modifiers: &[".f16"],
2418 },
2419 InstructionSyntax {
2420 opcode: InstructionOpcode::Min,
2421 name: "min",
2422 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f16x2 d, a, b;",
2423 min_operand_arity: 3usize,
2424 max_operand_arity: 3usize,
2425 required_modifiers: &[".f16x2"],
2426 },
2427 InstructionSyntax {
2428 opcode: InstructionOpcode::Min,
2429 name: "min",
2430 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f32 d, a, b;",
2431 min_operand_arity: 3usize,
2432 max_operand_arity: 3usize,
2433 required_modifiers: &[".f32"],
2434 },
2435 InstructionSyntax {
2436 opcode: InstructionOpcode::Min,
2437 name: "min",
2438 syntax: "min{.relu}.type2 d, a, b;",
2439 min_operand_arity: 3usize,
2440 max_operand_arity: 3usize,
2441 required_modifiers: &[],
2442 },
2443 InstructionSyntax {
2444 opcode: InstructionOpcode::Mma,
2445 name: "mma",
2446 syntax: "mma.sync.aligned.m16n8k16.row.col.dtype.f16.f16.ctype d, a, b, c;",
2447 min_operand_arity: 4usize,
2448 max_operand_arity: 4usize,
2449 required_modifiers: &[
2450 ".sync",
2451 ".aligned",
2452 ".m16n8k16",
2453 ".row",
2454 ".col",
2455 ".f16",
2456 ".f16",
2457 ],
2458 },
2459 InstructionSyntax {
2460 opcode: InstructionOpcode::Mma,
2461 name: "mma",
2462 syntax: "mma.sync.aligned.m16n8k8.row.col.dtype.f16.f16.ctype d, a, b, c;",
2463 min_operand_arity: 4usize,
2464 max_operand_arity: 4usize,
2465 required_modifiers: &[
2466 ".sync", ".aligned", ".m16n8k8", ".row", ".col", ".f16", ".f16",
2467 ],
2468 },
2469 InstructionSyntax {
2470 opcode: InstructionOpcode::Mma,
2471 name: "mma",
2472 syntax: "mma.sync.aligned.m8n8k4.alayout.blayout.dtype.f16.f16.ctype d, a, b, c;",
2473 min_operand_arity: 4usize,
2474 max_operand_arity: 4usize,
2475 required_modifiers: &[".sync", ".aligned", ".m8n8k4", ".f16", ".f16"],
2476 },
2477 InstructionSyntax {
2478 opcode: InstructionOpcode::Mov,
2479 name: "mov",
2480 syntax: "mov.type d, a;",
2481 min_operand_arity: 2usize,
2482 max_operand_arity: 2usize,
2483 required_modifiers: &[],
2484 },
2485 InstructionSyntax {
2486 opcode: InstructionOpcode::Mov,
2487 name: "mov",
2488 syntax: "mov.type d, avar; mov.type d, avar+imm; mov.u32 d, fname; mov.u64 d, fname; mov.u32 d, kernel; mov.u64 d, kernel;",
2489 min_operand_arity: 7usize,
2490 max_operand_arity: 7usize,
2491 required_modifiers: &[],
2492 },
2493 InstructionSyntax {
2494 opcode: InstructionOpcode::Mov,
2495 name: "mov",
2496 syntax: "mov.type d, sreg;",
2497 min_operand_arity: 2usize,
2498 max_operand_arity: 2usize,
2499 required_modifiers: &[],
2500 },
2501 InstructionSyntax {
2502 opcode: InstructionOpcode::MovMatrix,
2503 name: "movmatrix",
2504 syntax: "movmatrix.sync.aligned.shape.trans.type d, a;",
2505 min_operand_arity: 2usize,
2506 max_operand_arity: 2usize,
2507 required_modifiers: &[".sync", ".aligned", ".trans"],
2508 },
2509 InstructionSyntax {
2510 opcode: InstructionOpcode::Mul,
2511 name: "mul",
2512 syntax: "mul.mode.type d, a, b;",
2513 min_operand_arity: 3usize,
2514 max_operand_arity: 3usize,
2515 required_modifiers: &[],
2516 },
2517 InstructionSyntax {
2518 opcode: InstructionOpcode::Mul,
2519 name: "mul",
2520 syntax: "mul{.rnd}.bf16 d, a, b;",
2521 min_operand_arity: 3usize,
2522 max_operand_arity: 3usize,
2523 required_modifiers: &[".bf16"],
2524 },
2525 InstructionSyntax {
2526 opcode: InstructionOpcode::Mul,
2527 name: "mul",
2528 syntax: "mul{.rnd}.bf16x2 d, a, b;",
2529 min_operand_arity: 3usize,
2530 max_operand_arity: 3usize,
2531 required_modifiers: &[".bf16x2"],
2532 },
2533 InstructionSyntax {
2534 opcode: InstructionOpcode::Mul,
2535 name: "mul",
2536 syntax: "mul{.rnd}.f64 d, a, b;",
2537 min_operand_arity: 3usize,
2538 max_operand_arity: 3usize,
2539 required_modifiers: &[".f64"],
2540 },
2541 InstructionSyntax {
2542 opcode: InstructionOpcode::Mul,
2543 name: "mul",
2544 syntax: "mul{.rnd}{.ftz}.f32x2 d, a, b;",
2545 min_operand_arity: 3usize,
2546 max_operand_arity: 3usize,
2547 required_modifiers: &[".f32x2"],
2548 },
2549 InstructionSyntax {
2550 opcode: InstructionOpcode::Mul,
2551 name: "mul",
2552 syntax: "mul{.rnd}{.ftz}{.sat}.f16 d, a, b;",
2553 min_operand_arity: 3usize,
2554 max_operand_arity: 3usize,
2555 required_modifiers: &[".f16"],
2556 },
2557 InstructionSyntax {
2558 opcode: InstructionOpcode::Mul,
2559 name: "mul",
2560 syntax: "mul{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
2561 min_operand_arity: 3usize,
2562 max_operand_arity: 3usize,
2563 required_modifiers: &[".f16x2"],
2564 },
2565 InstructionSyntax {
2566 opcode: InstructionOpcode::Mul,
2567 name: "mul",
2568 syntax: "mul{.rnd}{.ftz}{.sat}.f32 d, a, b;",
2569 min_operand_arity: 3usize,
2570 max_operand_arity: 3usize,
2571 required_modifiers: &[".f32"],
2572 },
2573 InstructionSyntax {
2574 opcode: InstructionOpcode::Mul24,
2575 name: "mul24",
2576 syntax: "mul24.mode.type d, a, b;",
2577 min_operand_arity: 3usize,
2578 max_operand_arity: 3usize,
2579 required_modifiers: &[],
2580 },
2581 InstructionSyntax {
2582 opcode: InstructionOpcode::MultimemLdReduce,
2583 name: "multimem.ld_reduce",
2584 syntax: "multimem.ld_reduce.weak{.ss}.op.type d, [a];",
2585 min_operand_arity: 2usize,
2586 max_operand_arity: 2usize,
2587 required_modifiers: &[".weak"],
2588 },
2589 InstructionSyntax {
2590 opcode: InstructionOpcode::MultimemLdReduce,
2591 name: "multimem.ld_reduce",
2592 syntax: "multimem.ld_reduce.weak{.ss}.op{.acc_prec}{.vec}.type d, [a];",
2593 min_operand_arity: 2usize,
2594 max_operand_arity: 2usize,
2595 required_modifiers: &[".weak"],
2596 },
2597 InstructionSyntax {
2598 opcode: InstructionOpcode::MultimemLdReduce,
2599 name: "multimem.ld_reduce",
2600 syntax: "multimem.ld_reduce{.ldsem}{.scope}{.ss}.op.type d, [a];",
2601 min_operand_arity: 2usize,
2602 max_operand_arity: 2usize,
2603 required_modifiers: &[],
2604 },
2605 InstructionSyntax {
2606 opcode: InstructionOpcode::MultimemLdReduce,
2607 name: "multimem.ld_reduce",
2608 syntax: "multimem.ld_reduce{.ldsem}{.scope}{.ss}.op{.acc_prec}{.vec}.type d, [a];",
2609 min_operand_arity: 2usize,
2610 max_operand_arity: 2usize,
2611 required_modifiers: &[],
2612 },
2613 InstructionSyntax {
2614 opcode: InstructionOpcode::MultimemRed,
2615 name: "multimem.red",
2616 syntax: "multimem.red{.redsem}{.scope}{.ss}.op.type [a], b;",
2617 min_operand_arity: 2usize,
2618 max_operand_arity: 2usize,
2619 required_modifiers: &[],
2620 },
2621 InstructionSyntax {
2622 opcode: InstructionOpcode::MultimemRed,
2623 name: "multimem.red",
2624 syntax: "multimem.red{.redsem}{.scope}{.ss}.redop{.vec}.redtype [a], b;",
2625 min_operand_arity: 2usize,
2626 max_operand_arity: 2usize,
2627 required_modifiers: &[],
2628 },
2629 InstructionSyntax {
2630 opcode: InstructionOpcode::MultimemRedAsync,
2631 name: "multimem.red.async",
2632 syntax: "multimem.red.async.sem.scope{.ss}.op.type [a], b;",
2633 min_operand_arity: 2usize,
2634 max_operand_arity: 2usize,
2635 required_modifiers: &[],
2636 },
2637 InstructionSyntax {
2638 opcode: InstructionOpcode::MultimemSt,
2639 name: "multimem.st",
2640 syntax: "multimem.st.weak{.ss}.type [a], b;",
2641 min_operand_arity: 2usize,
2642 max_operand_arity: 2usize,
2643 required_modifiers: &[".weak"],
2644 },
2645 InstructionSyntax {
2646 opcode: InstructionOpcode::MultimemSt,
2647 name: "multimem.st",
2648 syntax: "multimem.st.weak{.ss}{.vec}.type [a], b;",
2649 min_operand_arity: 2usize,
2650 max_operand_arity: 2usize,
2651 required_modifiers: &[".weak"],
2652 },
2653 InstructionSyntax {
2654 opcode: InstructionOpcode::MultimemSt,
2655 name: "multimem.st",
2656 syntax: "multimem.st{.stsem}{.scope}{.ss}.type [a], b;",
2657 min_operand_arity: 2usize,
2658 max_operand_arity: 2usize,
2659 required_modifiers: &[],
2660 },
2661 InstructionSyntax {
2662 opcode: InstructionOpcode::MultimemSt,
2663 name: "multimem.st",
2664 syntax: "multimem.st{.stsem}{.scope}{.ss}{.vec}.type [a], b;",
2665 min_operand_arity: 2usize,
2666 max_operand_arity: 2usize,
2667 required_modifiers: &[],
2668 },
2669 InstructionSyntax {
2670 opcode: InstructionOpcode::MultimemStAsync,
2671 name: "multimem.st.async",
2672 syntax: "multimem.st.async.sem.scope{.ss}.type [a], b;",
2673 min_operand_arity: 2usize,
2674 max_operand_arity: 2usize,
2675 required_modifiers: &[],
2676 },
2677 InstructionSyntax {
2678 opcode: InstructionOpcode::Nanosleep,
2679 name: "nanosleep",
2680 syntax: "nanosleep.u32 t;",
2681 min_operand_arity: 1usize,
2682 max_operand_arity: 1usize,
2683 required_modifiers: &[".u32"],
2684 },
2685 InstructionSyntax {
2686 opcode: InstructionOpcode::Neg,
2687 name: "neg",
2688 syntax: "neg.bf16 d, a;",
2689 min_operand_arity: 2usize,
2690 max_operand_arity: 2usize,
2691 required_modifiers: &[".bf16"],
2692 },
2693 InstructionSyntax {
2694 opcode: InstructionOpcode::Neg,
2695 name: "neg",
2696 syntax: "neg.bf16x2 d, a;",
2697 min_operand_arity: 2usize,
2698 max_operand_arity: 2usize,
2699 required_modifiers: &[".bf16x2"],
2700 },
2701 InstructionSyntax {
2702 opcode: InstructionOpcode::Neg,
2703 name: "neg",
2704 syntax: "neg.f64 d, a;",
2705 min_operand_arity: 2usize,
2706 max_operand_arity: 2usize,
2707 required_modifiers: &[".f64"],
2708 },
2709 InstructionSyntax {
2710 opcode: InstructionOpcode::Neg,
2711 name: "neg",
2712 syntax: "neg.type d, a;",
2713 min_operand_arity: 2usize,
2714 max_operand_arity: 2usize,
2715 required_modifiers: &[],
2716 },
2717 InstructionSyntax {
2718 opcode: InstructionOpcode::Neg,
2719 name: "neg",
2720 syntax: "neg{.ftz}.f16 d, a;",
2721 min_operand_arity: 2usize,
2722 max_operand_arity: 2usize,
2723 required_modifiers: &[".f16"],
2724 },
2725 InstructionSyntax {
2726 opcode: InstructionOpcode::Neg,
2727 name: "neg",
2728 syntax: "neg{.ftz}.f16x2 d, a;",
2729 min_operand_arity: 2usize,
2730 max_operand_arity: 2usize,
2731 required_modifiers: &[".f16x2"],
2732 },
2733 InstructionSyntax {
2734 opcode: InstructionOpcode::Neg,
2735 name: "neg",
2736 syntax: "neg{.ftz}.f32 d, a;",
2737 min_operand_arity: 2usize,
2738 max_operand_arity: 2usize,
2739 required_modifiers: &[".f32"],
2740 },
2741 InstructionSyntax {
2742 opcode: InstructionOpcode::Not,
2743 name: "not",
2744 syntax: "not.type d, a;",
2745 min_operand_arity: 2usize,
2746 max_operand_arity: 2usize,
2747 required_modifiers: &[],
2748 },
2749 InstructionSyntax {
2750 opcode: InstructionOpcode::Or,
2751 name: "or",
2752 syntax: "or.type d, a, b;",
2753 min_operand_arity: 3usize,
2754 max_operand_arity: 3usize,
2755 required_modifiers: &[],
2756 },
2757 InstructionSyntax {
2758 opcode: InstructionOpcode::PmEvent,
2759 name: "pmevent",
2760 syntax: "pmevent a; pmevent.mask a;",
2761 min_operand_arity: 1usize,
2762 max_operand_arity: 1usize,
2763 required_modifiers: &[],
2764 },
2765 InstructionSyntax {
2766 opcode: InstructionOpcode::Popc,
2767 name: "popc",
2768 syntax: "popc.type d, a;",
2769 min_operand_arity: 2usize,
2770 max_operand_arity: 2usize,
2771 required_modifiers: &[],
2772 },
2773 InstructionSyntax {
2774 opcode: InstructionOpcode::Prefetch,
2775 name: "prefetch",
2776 syntax: "prefetch{.space}.level [a]; prefetch.global.level::eviction_priority [a];",
2777 min_operand_arity: 1usize,
2778 max_operand_arity: 1usize,
2779 required_modifiers: &[],
2780 },
2781 InstructionSyntax {
2782 opcode: InstructionOpcode::Prefetch,
2783 name: "prefetch",
2784 syntax: "prefetch{.tensormap_space}.tensormap [a];",
2785 min_operand_arity: 1usize,
2786 max_operand_arity: 1usize,
2787 required_modifiers: &[".tensormap"],
2788 },
2789 InstructionSyntax {
2790 opcode: InstructionOpcode::Prefetchu,
2791 name: "prefetchu",
2792 syntax: "prefetchu.L1 [a];",
2793 min_operand_arity: 1usize,
2794 max_operand_arity: 1usize,
2795 required_modifiers: &[".L1"],
2796 },
2797 InstructionSyntax {
2798 opcode: InstructionOpcode::Prmt,
2799 name: "prmt",
2800 syntax: "prmt.b32{.mode} d, a, b, c;",
2801 min_operand_arity: 4usize,
2802 max_operand_arity: 4usize,
2803 required_modifiers: &[".b32"],
2804 },
2805 InstructionSyntax {
2806 opcode: InstructionOpcode::Rcp,
2807 name: "rcp",
2808 syntax: "rcp.approx{.ftz}.f32 d, a; rcp.rnd{.ftz}.f32 d, a; rcp.rnd.f64 d, a;",
2809 min_operand_arity: 3usize,
2810 max_operand_arity: 4usize,
2811 required_modifiers: &[".approx", ".f32"],
2812 },
2813 InstructionSyntax {
2814 opcode: InstructionOpcode::RcpApproxFtzF64,
2815 name: "rcp.approx.ftz.f64",
2816 syntax: "rcp.approx.ftz.f64 d, a;",
2817 min_operand_arity: 2usize,
2818 max_operand_arity: 2usize,
2819 required_modifiers: &[],
2820 },
2821 InstructionSyntax {
2822 opcode: InstructionOpcode::Red,
2823 name: "red",
2824 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16 [a], b {, cache_policy};",
2825 min_operand_arity: 2usize,
2826 max_operand_arity: 3usize,
2827 required_modifiers: &[".add", ".noftz", ".bf16"],
2828 },
2829 InstructionSyntax {
2830 opcode: InstructionOpcode::Red,
2831 name: "red",
2832 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16x2 [a], b {, cache_policy};",
2833 min_operand_arity: 2usize,
2834 max_operand_arity: 3usize,
2835 required_modifiers: &[".add", ".noftz", ".bf16x2"],
2836 },
2837 InstructionSyntax {
2838 opcode: InstructionOpcode::Red,
2839 name: "red",
2840 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16 [a], b{, cache_policy};",
2841 min_operand_arity: 2usize,
2842 max_operand_arity: 3usize,
2843 required_modifiers: &[".add", ".noftz", ".f16"],
2844 },
2845 InstructionSyntax {
2846 opcode: InstructionOpcode::Red,
2847 name: "red",
2848 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16x2 [a], b{, cache_policy};",
2849 min_operand_arity: 2usize,
2850 max_operand_arity: 3usize,
2851 required_modifiers: &[".add", ".noftz", ".f16x2"],
2852 },
2853 InstructionSyntax {
2854 opcode: InstructionOpcode::Red,
2855 name: "red",
2856 syntax: "red{.sem}{.scope}{.space}.op{.level::cache_hint}.type [a], b{, cache_policy};",
2857 min_operand_arity: 2usize,
2858 max_operand_arity: 3usize,
2859 required_modifiers: &[],
2860 },
2861 InstructionSyntax {
2862 opcode: InstructionOpcode::RedAsync,
2863 name: "red.async",
2864 syntax: "red.async.sem.scope{.ss}.completion_mechanism.add.type [a], b, [mbar];",
2865 min_operand_arity: 3usize,
2866 max_operand_arity: 3usize,
2867 required_modifiers: &[".add"],
2868 },
2869 InstructionSyntax {
2870 opcode: InstructionOpcode::RedAsync,
2871 name: "red.async",
2872 syntax: "red.async.sem.scope{.ss}.completion_mechanism.op.type [a], b, [mbar];",
2873 min_operand_arity: 3usize,
2874 max_operand_arity: 3usize,
2875 required_modifiers: &[],
2876 },
2877 InstructionSyntax {
2878 opcode: InstructionOpcode::RedAsync,
2879 name: "red.async",
2880 syntax: "red.async{.mmio}.sem.scope{.ss}.add.type [a], b;",
2881 min_operand_arity: 2usize,
2882 max_operand_arity: 2usize,
2883 required_modifiers: &[".add"],
2884 },
2885 InstructionSyntax {
2886 opcode: InstructionOpcode::ReduxSync,
2887 name: "redux.sync",
2888 syntax: "redux.sync.op.b32 dst, src, membermask;",
2889 min_operand_arity: 3usize,
2890 max_operand_arity: 3usize,
2891 required_modifiers: &[".b32"],
2892 },
2893 InstructionSyntax {
2894 opcode: InstructionOpcode::ReduxSync,
2895 name: "redux.sync",
2896 syntax: "redux.sync.op.type dst, src, membermask;",
2897 min_operand_arity: 3usize,
2898 max_operand_arity: 3usize,
2899 required_modifiers: &[],
2900 },
2901 InstructionSyntax {
2902 opcode: InstructionOpcode::ReduxSync,
2903 name: "redux.sync",
2904 syntax: "redux.sync.op{.abs.}{.NaN}.f32 dst, src, membermask;",
2905 min_operand_arity: 3usize,
2906 max_operand_arity: 3usize,
2907 required_modifiers: &[".f32"],
2908 },
2909 InstructionSyntax {
2910 opcode: InstructionOpcode::Rem,
2911 name: "rem",
2912 syntax: "rem.type d, a, b;",
2913 min_operand_arity: 3usize,
2914 max_operand_arity: 3usize,
2915 required_modifiers: &[],
2916 },
2917 InstructionSyntax {
2918 opcode: InstructionOpcode::Ret,
2919 name: "ret",
2920 syntax: "ret{.uni};",
2921 min_operand_arity: 0usize,
2922 max_operand_arity: 0usize,
2923 required_modifiers: &[],
2924 },
2925 InstructionSyntax {
2926 opcode: InstructionOpcode::Rsqrt,
2927 name: "rsqrt",
2928 syntax: "rsqrt.approx.f64 d, a;",
2929 min_operand_arity: 2usize,
2930 max_operand_arity: 2usize,
2931 required_modifiers: &[".approx", ".f64"],
2932 },
2933 InstructionSyntax {
2934 opcode: InstructionOpcode::Rsqrt,
2935 name: "rsqrt",
2936 syntax: "rsqrt.approx{.ftz}.f32 d, a;",
2937 min_operand_arity: 2usize,
2938 max_operand_arity: 2usize,
2939 required_modifiers: &[".approx", ".f32"],
2940 },
2941 InstructionSyntax {
2942 opcode: InstructionOpcode::RsqrtApproxFtzF64,
2943 name: "rsqrt.approx.ftz.f64",
2944 syntax: "rsqrt.approx.ftz.f64 d, a;",
2945 min_operand_arity: 2usize,
2946 max_operand_arity: 2usize,
2947 required_modifiers: &[],
2948 },
2949 InstructionSyntax {
2950 opcode: InstructionOpcode::Sad,
2951 name: "sad",
2952 syntax: "sad.type d, a, b, c;",
2953 min_operand_arity: 4usize,
2954 max_operand_arity: 4usize,
2955 required_modifiers: &[],
2956 },
2957 InstructionSyntax {
2958 opcode: InstructionOpcode::Selp,
2959 name: "selp",
2960 syntax: "selp.type d, a, b, c;",
2961 min_operand_arity: 4usize,
2962 max_operand_arity: 4usize,
2963 required_modifiers: &[],
2964 },
2965 InstructionSyntax {
2966 opcode: InstructionOpcode::Set,
2967 name: "set",
2968 syntax: "set.CmpOp.BoolOp.bf16.stype d, a, b, {!}c;",
2969 min_operand_arity: 3usize,
2970 max_operand_arity: 4usize,
2971 required_modifiers: &[".bf16"],
2972 },
2973 InstructionSyntax {
2974 opcode: InstructionOpcode::Set,
2975 name: "set",
2976 syntax: "set.CmpOp.BoolOp.dtype.bf16 d, a, b, {!}c;",
2977 min_operand_arity: 3usize,
2978 max_operand_arity: 4usize,
2979 required_modifiers: &[".bf16"],
2980 },
2981 InstructionSyntax {
2982 opcode: InstructionOpcode::Set,
2983 name: "set",
2984 syntax: "set.CmpOp.BoolOp.dtype.bf16x2 d, a, b, {!}c;",
2985 min_operand_arity: 3usize,
2986 max_operand_arity: 4usize,
2987 required_modifiers: &[".bf16x2"],
2988 },
2989 InstructionSyntax {
2990 opcode: InstructionOpcode::Set,
2991 name: "set",
2992 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.f16 d, a, b, {!}c;",
2993 min_operand_arity: 3usize,
2994 max_operand_arity: 4usize,
2995 required_modifiers: &[".f16"],
2996 },
2997 InstructionSyntax {
2998 opcode: InstructionOpcode::Set,
2999 name: "set",
3000 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.f16x2 d, a, b, {!}c;",
3001 min_operand_arity: 3usize,
3002 max_operand_arity: 4usize,
3003 required_modifiers: &[".f16x2"],
3004 },
3005 InstructionSyntax {
3006 opcode: InstructionOpcode::Set,
3007 name: "set",
3008 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.stype d, a, b, {!}c;",
3009 min_operand_arity: 3usize,
3010 max_operand_arity: 4usize,
3011 required_modifiers: &[],
3012 },
3013 InstructionSyntax {
3014 opcode: InstructionOpcode::Set,
3015 name: "set",
3016 syntax: "set.CmpOp.BoolOp{.ftz}.f16.stype d, a, b, {!}c;",
3017 min_operand_arity: 3usize,
3018 max_operand_arity: 4usize,
3019 required_modifiers: &[".f16"],
3020 },
3021 InstructionSyntax {
3022 opcode: InstructionOpcode::Set,
3023 name: "set",
3024 syntax: "set.CmpOp.bf16.stype d, a, b;",
3025 min_operand_arity: 3usize,
3026 max_operand_arity: 3usize,
3027 required_modifiers: &[".bf16"],
3028 },
3029 InstructionSyntax {
3030 opcode: InstructionOpcode::Set,
3031 name: "set",
3032 syntax: "set.CmpOp.dtype.bf16 d, a, b;",
3033 min_operand_arity: 3usize,
3034 max_operand_arity: 3usize,
3035 required_modifiers: &[".bf16"],
3036 },
3037 InstructionSyntax {
3038 opcode: InstructionOpcode::Set,
3039 name: "set",
3040 syntax: "set.CmpOp.dtype.bf16x2 d, a, b;",
3041 min_operand_arity: 3usize,
3042 max_operand_arity: 3usize,
3043 required_modifiers: &[".bf16x2"],
3044 },
3045 InstructionSyntax {
3046 opcode: InstructionOpcode::Set,
3047 name: "set",
3048 syntax: "set.CmpOp{.ftz}.dtype.f16 d, a, b;",
3049 min_operand_arity: 3usize,
3050 max_operand_arity: 3usize,
3051 required_modifiers: &[".f16"],
3052 },
3053 InstructionSyntax {
3054 opcode: InstructionOpcode::Set,
3055 name: "set",
3056 syntax: "set.CmpOp{.ftz}.dtype.f16x2 d, a, b;",
3057 min_operand_arity: 3usize,
3058 max_operand_arity: 3usize,
3059 required_modifiers: &[".f16x2"],
3060 },
3061 InstructionSyntax {
3062 opcode: InstructionOpcode::Set,
3063 name: "set",
3064 syntax: "set.CmpOp{.ftz}.dtype.stype d, a, b;",
3065 min_operand_arity: 3usize,
3066 max_operand_arity: 3usize,
3067 required_modifiers: &[],
3068 },
3069 InstructionSyntax {
3070 opcode: InstructionOpcode::Set,
3071 name: "set",
3072 syntax: "set.CmpOp{.ftz}.f16.stype d, a, b;",
3073 min_operand_arity: 3usize,
3074 max_operand_arity: 3usize,
3075 required_modifiers: &[".f16"],
3076 },
3077 InstructionSyntax {
3078 opcode: InstructionOpcode::SetMaxNReg,
3079 name: "setmaxnreg",
3080 syntax: "setmaxnreg.action.sync.aligned.u32 imm-reg-count;",
3081 min_operand_arity: 1usize,
3082 max_operand_arity: 1usize,
3083 required_modifiers: &[".sync", ".aligned", ".u32"],
3084 },
3085 InstructionSyntax {
3086 opcode: InstructionOpcode::Setp,
3087 name: "setp",
3088 syntax: "setp.CmpOp.BoolOp.bf16 p, a, b, {!}c;",
3089 min_operand_arity: 3usize,
3090 max_operand_arity: 4usize,
3091 required_modifiers: &[".bf16"],
3092 },
3093 InstructionSyntax {
3094 opcode: InstructionOpcode::Setp,
3095 name: "setp",
3096 syntax: "setp.CmpOp.BoolOp.bf16x2 p|q, a, b, {!}c;",
3097 min_operand_arity: 3usize,
3098 max_operand_arity: 4usize,
3099 required_modifiers: &[".bf16x2"],
3100 },
3101 InstructionSyntax {
3102 opcode: InstructionOpcode::Setp,
3103 name: "setp",
3104 syntax: "setp.CmpOp.BoolOp{.ftz}.f16 p, a, b, {!}c;",
3105 min_operand_arity: 3usize,
3106 max_operand_arity: 4usize,
3107 required_modifiers: &[".f16"],
3108 },
3109 InstructionSyntax {
3110 opcode: InstructionOpcode::Setp,
3111 name: "setp",
3112 syntax: "setp.CmpOp.BoolOp{.ftz}.f16x2 p|q, a, b, {!}c;",
3113 min_operand_arity: 3usize,
3114 max_operand_arity: 4usize,
3115 required_modifiers: &[".f16x2"],
3116 },
3117 InstructionSyntax {
3118 opcode: InstructionOpcode::Setp,
3119 name: "setp",
3120 syntax: "setp.CmpOp.BoolOp{.ftz}.type p[|q], a, b, {!}c;",
3121 min_operand_arity: 3usize,
3122 max_operand_arity: 4usize,
3123 required_modifiers: &[],
3124 },
3125 InstructionSyntax {
3126 opcode: InstructionOpcode::Setp,
3127 name: "setp",
3128 syntax: "setp.CmpOp.bf16 p, a, b;",
3129 min_operand_arity: 3usize,
3130 max_operand_arity: 3usize,
3131 required_modifiers: &[".bf16"],
3132 },
3133 InstructionSyntax {
3134 opcode: InstructionOpcode::Setp,
3135 name: "setp",
3136 syntax: "setp.CmpOp.bf16x2 p|q, a, b;",
3137 min_operand_arity: 3usize,
3138 max_operand_arity: 3usize,
3139 required_modifiers: &[".bf16x2"],
3140 },
3141 InstructionSyntax {
3142 opcode: InstructionOpcode::Setp,
3143 name: "setp",
3144 syntax: "setp.CmpOp{.ftz}.f16 p, a, b;",
3145 min_operand_arity: 3usize,
3146 max_operand_arity: 3usize,
3147 required_modifiers: &[".f16"],
3148 },
3149 InstructionSyntax {
3150 opcode: InstructionOpcode::Setp,
3151 name: "setp",
3152 syntax: "setp.CmpOp{.ftz}.f16x2 p|q, a, b;",
3153 min_operand_arity: 3usize,
3154 max_operand_arity: 3usize,
3155 required_modifiers: &[".f16x2"],
3156 },
3157 InstructionSyntax {
3158 opcode: InstructionOpcode::Setp,
3159 name: "setp",
3160 syntax: "setp.CmpOp{.ftz}.type p[|q], a, b;",
3161 min_operand_arity: 3usize,
3162 max_operand_arity: 3usize,
3163 required_modifiers: &[],
3164 },
3165 InstructionSyntax {
3166 opcode: InstructionOpcode::Shf,
3167 name: "shf",
3168 syntax: "shf.l.mode.b32 d, a, b, c; shf.r.mode.b32 d, a, b, c;",
3169 min_operand_arity: 7usize,
3170 max_operand_arity: 7usize,
3171 required_modifiers: &[".l", ".b32"],
3172 },
3173 InstructionSyntax {
3174 opcode: InstructionOpcode::Shfl,
3175 name: "shfl",
3176 syntax: "shfl.mode.b32 d[|p], a, b, c;",
3177 min_operand_arity: 4usize,
3178 max_operand_arity: 4usize,
3179 required_modifiers: &[".b32"],
3180 },
3181 InstructionSyntax {
3182 opcode: InstructionOpcode::ShflSync,
3183 name: "shfl.sync",
3184 syntax: "shfl.sync.mode.b32 d[|p], a, b, c, membermask;",
3185 min_operand_arity: 5usize,
3186 max_operand_arity: 5usize,
3187 required_modifiers: &[".b32"],
3188 },
3189 InstructionSyntax {
3190 opcode: InstructionOpcode::Shl,
3191 name: "shl",
3192 syntax: "shl.type d, a, b;",
3193 min_operand_arity: 3usize,
3194 max_operand_arity: 3usize,
3195 required_modifiers: &[],
3196 },
3197 InstructionSyntax {
3198 opcode: InstructionOpcode::Shr,
3199 name: "shr",
3200 syntax: "shr.type d, a, b;",
3201 min_operand_arity: 3usize,
3202 max_operand_arity: 3usize,
3203 required_modifiers: &[],
3204 },
3205 InstructionSyntax {
3206 opcode: InstructionOpcode::Sin,
3207 name: "sin",
3208 syntax: "sin.approx{.ftz}.f32 d, a;",
3209 min_operand_arity: 2usize,
3210 max_operand_arity: 2usize,
3211 required_modifiers: &[".approx", ".f32"],
3212 },
3213 InstructionSyntax {
3214 opcode: InstructionOpcode::Slct,
3215 name: "slct",
3216 syntax: "slct.dtype.s32 d, a, b, c;",
3217 min_operand_arity: 4usize,
3218 max_operand_arity: 4usize,
3219 required_modifiers: &[".s32"],
3220 },
3221 InstructionSyntax {
3222 opcode: InstructionOpcode::Slct,
3223 name: "slct",
3224 syntax: "slct{.ftz}.dtype.f32 d, a, b, c;",
3225 min_operand_arity: 4usize,
3226 max_operand_arity: 4usize,
3227 required_modifiers: &[".f32"],
3228 },
3229 InstructionSyntax {
3230 opcode: InstructionOpcode::Sqrt,
3231 name: "sqrt",
3232 syntax: "sqrt.approx{.ftz}.f32 d, a; sqrt.rnd{.ftz}.f32 d, a; sqrt.rnd.f64 d, a;",
3233 min_operand_arity: 3usize,
3234 max_operand_arity: 4usize,
3235 required_modifiers: &[".approx", ".f32"],
3236 },
3237 InstructionSyntax {
3238 opcode: InstructionOpcode::St,
3239 name: "st",
3240 syntax: "st.mmio.sem.sys{.global}.type [a], b;",
3241 min_operand_arity: 2usize,
3242 max_operand_arity: 2usize,
3243 required_modifiers: &[".mmio", ".sys"],
3244 },
3245 InstructionSyntax {
3246 opcode: InstructionOpcode::St,
3247 name: "st",
3248 syntax: "st.relaxed.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
3249 min_operand_arity: 2usize,
3250 max_operand_arity: 3usize,
3251 required_modifiers: &[".relaxed"],
3252 },
3253 InstructionSyntax {
3254 opcode: InstructionOpcode::St,
3255 name: "st",
3256 syntax: "st.release.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
3257 min_operand_arity: 2usize,
3258 max_operand_arity: 3usize,
3259 required_modifiers: &[".release"],
3260 },
3261 InstructionSyntax {
3262 opcode: InstructionOpcode::St,
3263 name: "st",
3264 syntax: "st.volatile{.ss}{.vec}.type [a], b;",
3265 min_operand_arity: 2usize,
3266 max_operand_arity: 2usize,
3267 required_modifiers: &[".volatile"],
3268 },
3269 InstructionSyntax {
3270 opcode: InstructionOpcode::St,
3271 name: "st",
3272 syntax: "st{.weak}{.ss}{.cop}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
3273 min_operand_arity: 2usize,
3274 max_operand_arity: 3usize,
3275 required_modifiers: &[],
3276 },
3277 InstructionSyntax {
3278 opcode: InstructionOpcode::St,
3279 name: "st",
3280 syntax: "st{.weak}{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
3281 min_operand_arity: 2usize,
3282 max_operand_arity: 3usize,
3283 required_modifiers: &[],
3284 },
3285 InstructionSyntax {
3286 opcode: InstructionOpcode::StAsync,
3287 name: "st.async",
3288 syntax: "st.async{.mmio}.sem.scope{.ss}.type [a], b;",
3289 min_operand_arity: 2usize,
3290 max_operand_arity: 2usize,
3291 required_modifiers: &[],
3292 },
3293 InstructionSyntax {
3294 opcode: InstructionOpcode::StAsync,
3295 name: "st.async",
3296 syntax: "st.async{.weak}{.ss}.completion_mechanism{.vec}.type [a], b, [mbar];",
3297 min_operand_arity: 3usize,
3298 max_operand_arity: 3usize,
3299 required_modifiers: &[],
3300 },
3301 InstructionSyntax {
3302 opcode: InstructionOpcode::StBulk,
3303 name: "st.bulk",
3304 syntax: "st.bulk{.weak}{.shared::cta} [a], size, initval;",
3305 min_operand_arity: 3usize,
3306 max_operand_arity: 3usize,
3307 required_modifiers: &[],
3308 },
3309 InstructionSyntax {
3310 opcode: InstructionOpcode::StackRestore,
3311 name: "stackrestore",
3312 syntax: "stackrestore.type a;",
3313 min_operand_arity: 1usize,
3314 max_operand_arity: 1usize,
3315 required_modifiers: &[],
3316 },
3317 InstructionSyntax {
3318 opcode: InstructionOpcode::StackSave,
3319 name: "stacksave",
3320 syntax: "stacksave.type d;",
3321 min_operand_arity: 1usize,
3322 max_operand_arity: 1usize,
3323 required_modifiers: &[],
3324 },
3325 InstructionSyntax {
3326 opcode: InstructionOpcode::StMatrix,
3327 name: "stmatrix",
3328 syntax: "stmatrix.sync.aligned.shape.num{.trans}{.ss}.type [p], r;",
3329 min_operand_arity: 2usize,
3330 max_operand_arity: 2usize,
3331 required_modifiers: &[".sync", ".aligned"],
3332 },
3333 InstructionSyntax {
3334 opcode: InstructionOpcode::Sub,
3335 name: "sub",
3336 syntax: "sub.type1 d, a, b;",
3337 min_operand_arity: 3usize,
3338 max_operand_arity: 3usize,
3339 required_modifiers: &[],
3340 },
3341 InstructionSyntax {
3342 opcode: InstructionOpcode::Sub,
3343 name: "sub",
3344 syntax: "sub{.rnd}.bf16 d, a, b;",
3345 min_operand_arity: 3usize,
3346 max_operand_arity: 3usize,
3347 required_modifiers: &[".bf16"],
3348 },
3349 InstructionSyntax {
3350 opcode: InstructionOpcode::Sub,
3351 name: "sub",
3352 syntax: "sub{.rnd}.bf16x2 d, a, b;",
3353 min_operand_arity: 3usize,
3354 max_operand_arity: 3usize,
3355 required_modifiers: &[".bf16x2"],
3356 },
3357 InstructionSyntax {
3358 opcode: InstructionOpcode::Sub,
3359 name: "sub",
3360 syntax: "sub{.rnd}.f64 d, a, b;",
3361 min_operand_arity: 3usize,
3362 max_operand_arity: 3usize,
3363 required_modifiers: &[".f64"],
3364 },
3365 InstructionSyntax {
3366 opcode: InstructionOpcode::Sub,
3367 name: "sub",
3368 syntax: "sub{.rnd}{.ftz}.f32x2 d, a, b;",
3369 min_operand_arity: 3usize,
3370 max_operand_arity: 3usize,
3371 required_modifiers: &[".f32x2"],
3372 },
3373 InstructionSyntax {
3374 opcode: InstructionOpcode::Sub,
3375 name: "sub",
3376 syntax: "sub{.rnd}{.ftz}{.sat}.f16 d, a, b;",
3377 min_operand_arity: 3usize,
3378 max_operand_arity: 3usize,
3379 required_modifiers: &[".f16"],
3380 },
3381 InstructionSyntax {
3382 opcode: InstructionOpcode::Sub,
3383 name: "sub",
3384 syntax: "sub{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
3385 min_operand_arity: 3usize,
3386 max_operand_arity: 3usize,
3387 required_modifiers: &[".f16x2"],
3388 },
3389 InstructionSyntax {
3390 opcode: InstructionOpcode::Sub,
3391 name: "sub",
3392 syntax: "sub{.rnd}{.ftz}{.sat}.f32 d, a, b;",
3393 min_operand_arity: 3usize,
3394 max_operand_arity: 3usize,
3395 required_modifiers: &[".f32"],
3396 },
3397 InstructionSyntax {
3398 opcode: InstructionOpcode::Sub,
3399 name: "sub",
3400 syntax: "sub{.rnd}{.sat}.f32.atype d, a, c;",
3401 min_operand_arity: 3usize,
3402 max_operand_arity: 3usize,
3403 required_modifiers: &[".f32"],
3404 },
3405 InstructionSyntax {
3406 opcode: InstructionOpcode::Sub,
3407 name: "sub",
3408 syntax: "sub{.sat}.type2 d, a, b;",
3409 min_operand_arity: 3usize,
3410 max_operand_arity: 3usize,
3411 required_modifiers: &[],
3412 },
3413 InstructionSyntax {
3414 opcode: InstructionOpcode::SubCc,
3415 name: "sub.cc",
3416 syntax: "sub.cc.type d, a, b;",
3417 min_operand_arity: 3usize,
3418 max_operand_arity: 3usize,
3419 required_modifiers: &[],
3420 },
3421 InstructionSyntax {
3422 opcode: InstructionOpcode::Subc,
3423 name: "subc",
3424 syntax: "subc{.cc}.type d, a, b;",
3425 min_operand_arity: 3usize,
3426 max_operand_arity: 3usize,
3427 required_modifiers: &[],
3428 },
3429 InstructionSyntax {
3430 opcode: InstructionOpcode::Suld,
3431 name: "suld",
3432 syntax: "suld.b.geom{.cop}.vec.dtype.clamp d, [a, b];",
3433 min_operand_arity: 3usize,
3434 max_operand_arity: 3usize,
3435 required_modifiers: &[".b"],
3436 },
3437 InstructionSyntax {
3438 opcode: InstructionOpcode::Suq,
3439 name: "suq",
3440 syntax: "suq.query.b32 d, [a];",
3441 min_operand_arity: 2usize,
3442 max_operand_arity: 2usize,
3443 required_modifiers: &[".b32"],
3444 },
3445 InstructionSyntax {
3446 opcode: InstructionOpcode::Sured,
3447 name: "sured",
3448 syntax: "sured.b.op.geom.ctype.clamp [a,b],c; sured.p.op.geom.ctype.clamp [a,b],c;",
3449 min_operand_arity: 5usize,
3450 max_operand_arity: 5usize,
3451 required_modifiers: &[".b"],
3452 },
3453 InstructionSyntax {
3454 opcode: InstructionOpcode::Sust,
3455 name: "sust",
3456 syntax: "sust.b.{1d,2d,3d}{.cop}.vec.ctype.clamp [a, b], c; sust.p.{1d,2d,3d}.vec.b32.clamp [a, b], c;",
3457 min_operand_arity: 6usize,
3458 max_operand_arity: 7usize,
3459 required_modifiers: &[".b", "."],
3460 },
3461 InstructionSyntax {
3462 opcode: InstructionOpcode::Sust,
3463 name: "sust",
3464 syntax: "sust.b.{a1d,a2d}{.cop}.vec.ctype.clamp [a, b], c;",
3465 min_operand_arity: 3usize,
3466 max_operand_arity: 3usize,
3467 required_modifiers: &[".b", "."],
3468 },
3469 InstructionSyntax {
3470 opcode: InstructionOpcode::Szext,
3471 name: "szext",
3472 syntax: "szext.mode.type d, a, b;",
3473 min_operand_arity: 3usize,
3474 max_operand_arity: 3usize,
3475 required_modifiers: &[],
3476 },
3477 InstructionSyntax {
3478 opcode: InstructionOpcode::Tanh,
3479 name: "tanh",
3480 syntax: "tanh.approx.f32 d, a;",
3481 min_operand_arity: 2usize,
3482 max_operand_arity: 2usize,
3483 required_modifiers: &[".approx", ".f32"],
3484 },
3485 InstructionSyntax {
3486 opcode: InstructionOpcode::Tanh,
3487 name: "tanh",
3488 syntax: "tanh.approx.type d, a;",
3489 min_operand_arity: 2usize,
3490 max_operand_arity: 2usize,
3491 required_modifiers: &[".approx"],
3492 },
3493 InstructionSyntax {
3494 opcode: InstructionOpcode::Tcgen05Alloc,
3495 name: "tcgen05.alloc",
3496 syntax: "tcgen05.alloc.cta_group.sync.aligned{.shared::cta}.b32 [dst], nCols;",
3497 min_operand_arity: 2usize,
3498 max_operand_arity: 2usize,
3499 required_modifiers: &[".sync", ".aligned", ".b32"],
3500 },
3501 InstructionSyntax {
3502 opcode: InstructionOpcode::Tcgen05Commit,
3503 name: "tcgen05.commit",
3504 syntax: "tcgen05.commit.cta_group.completion_mechanism{.shared::cluster}{.multicast}.b64 [mbar] {, ctaMask};",
3505 min_operand_arity: 1usize,
3506 max_operand_arity: 2usize,
3507 required_modifiers: &[".b64"],
3508 },
3509 InstructionSyntax {
3510 opcode: InstructionOpcode::Tcgen05Cp,
3511 name: "tcgen05.cp",
3512 syntax: "tcgen05.cp.cta_group.shape{.multicast}{.dst_fmt.src_fmt} [taddr], s-desc;",
3513 min_operand_arity: 2usize,
3514 max_operand_arity: 2usize,
3515 required_modifiers: &[],
3516 },
3517 InstructionSyntax {
3518 opcode: InstructionOpcode::Tcgen05Dealloc,
3519 name: "tcgen05.dealloc",
3520 syntax: "tcgen05.dealloc.cta_group.sync.aligned.b32 taddr, nCols;",
3521 min_operand_arity: 2usize,
3522 max_operand_arity: 2usize,
3523 required_modifiers: &[".sync", ".aligned", ".b32"],
3524 },
3525 InstructionSyntax {
3526 opcode: InstructionOpcode::Tcgen05Ld,
3527 name: "tcgen05.ld",
3528 syntax: "tcgen05.ld.red.sync.aligned.shape3.num.redOp.type r, redval, [taddr];",
3529 min_operand_arity: 3usize,
3530 max_operand_arity: 3usize,
3531 required_modifiers: &[".red", ".sync", ".aligned"],
3532 },
3533 InstructionSyntax {
3534 opcode: InstructionOpcode::Tcgen05Ld,
3535 name: "tcgen05.ld",
3536 syntax: "tcgen05.ld.red.sync.aligned.shape3.num.redOp{.abs}{.NaN}.f32 r, redval, [taddr];",
3537 min_operand_arity: 3usize,
3538 max_operand_arity: 3usize,
3539 required_modifiers: &[".red", ".sync", ".aligned", ".f32"],
3540 },
3541 InstructionSyntax {
3542 opcode: InstructionOpcode::Tcgen05Ld,
3543 name: "tcgen05.ld",
3544 syntax: "tcgen05.ld.red.sync.aligned.shape4.num.redOp.type r, redval, [taddr], immHalfSplitoff;",
3545 min_operand_arity: 4usize,
3546 max_operand_arity: 4usize,
3547 required_modifiers: &[".red", ".sync", ".aligned"],
3548 },
3549 InstructionSyntax {
3550 opcode: InstructionOpcode::Tcgen05Ld,
3551 name: "tcgen05.ld",
3552 syntax: "tcgen05.ld.red.sync.aligned.shape4.num.redOp{.abs}{.NaN}.f32 r, redval, [taddr], immHalfSplitoff;",
3553 min_operand_arity: 4usize,
3554 max_operand_arity: 4usize,
3555 required_modifiers: &[".red", ".sync", ".aligned", ".f32"],
3556 },
3557 InstructionSyntax {
3558 opcode: InstructionOpcode::Tcgen05Ld,
3559 name: "tcgen05.ld",
3560 syntax: "tcgen05.ld.sync.aligned.shape1.num{.pack}.b32 r, [taddr];",
3561 min_operand_arity: 2usize,
3562 max_operand_arity: 2usize,
3563 required_modifiers: &[".sync", ".aligned", ".b32"],
3564 },
3565 InstructionSyntax {
3566 opcode: InstructionOpcode::Tcgen05Ld,
3567 name: "tcgen05.ld",
3568 syntax: "tcgen05.ld.sync.aligned.shape2.num{.pack}.b32 r, [taddr], immHalfSplitoff;",
3569 min_operand_arity: 3usize,
3570 max_operand_arity: 3usize,
3571 required_modifiers: &[".sync", ".aligned", ".b32"],
3572 },
3573 InstructionSyntax {
3574 opcode: InstructionOpcode::Tcgen05RelinquishAllocPermit,
3575 name: "tcgen05.relinquish_alloc_permit",
3576 syntax: "tcgen05.relinquish_alloc_permit.cta_group.sync.aligned;",
3577 min_operand_arity: 0usize,
3578 max_operand_arity: 0usize,
3579 required_modifiers: &[".sync", ".aligned"],
3580 },
3581 InstructionSyntax {
3582 opcode: InstructionOpcode::Tcgen05Shift,
3583 name: "tcgen05.shift",
3584 syntax: "tcgen05.shift.cta_group.down [taddr];",
3585 min_operand_arity: 1usize,
3586 max_operand_arity: 1usize,
3587 required_modifiers: &[".down"],
3588 },
3589 InstructionSyntax {
3590 opcode: InstructionOpcode::Tcgen05St,
3591 name: "tcgen05.st",
3592 syntax: "tcgen05.st.sync.aligned.shape1.num{.unpack}.b32 [taddr], r;",
3593 min_operand_arity: 2usize,
3594 max_operand_arity: 2usize,
3595 required_modifiers: &[".sync", ".aligned", ".b32"],
3596 },
3597 InstructionSyntax {
3598 opcode: InstructionOpcode::Tcgen05St,
3599 name: "tcgen05.st",
3600 syntax: "tcgen05.st.sync.aligned.shape2.num{.unpack}.b32 [taddr], immHalfSplitoff, r;",
3601 min_operand_arity: 3usize,
3602 max_operand_arity: 3usize,
3603 required_modifiers: &[".sync", ".aligned", ".b32"],
3604 },
3605 InstructionSyntax {
3606 opcode: InstructionOpcode::TensorMapCpFenceProxy,
3607 name: "tensormap.cp_fenceproxy",
3608 syntax: "tensormap.cp_fenceproxy.cp_qualifiers.fence_qualifiers.sync.aligned [dst], [src], size;",
3609 min_operand_arity: 3usize,
3610 max_operand_arity: 3usize,
3611 required_modifiers: &[".sync", ".aligned"],
3612 },
3613 InstructionSyntax {
3614 opcode: InstructionOpcode::TensormapReplace,
3615 name: "tensormap.replace",
3616 syntax: "tensormap.replace.mode.field1{.ss}.b1024.type [addr], new_val;",
3617 min_operand_arity: 2usize,
3618 max_operand_arity: 2usize,
3619 required_modifiers: &[".b1024"],
3620 },
3621 InstructionSyntax {
3622 opcode: InstructionOpcode::TensormapReplace,
3623 name: "tensormap.replace",
3624 syntax: "tensormap.replace.mode.field2{.ss}.b1024.type [addr], ord, new_val;",
3625 min_operand_arity: 3usize,
3626 max_operand_arity: 3usize,
3627 required_modifiers: &[".b1024"],
3628 },
3629 InstructionSyntax {
3630 opcode: InstructionOpcode::TensormapReplace,
3631 name: "tensormap.replace",
3632 syntax: "tensormap.replace.mode.field3{.ss}.b1024.type [addr], new_val;",
3633 min_operand_arity: 2usize,
3634 max_operand_arity: 2usize,
3635 required_modifiers: &[".b1024"],
3636 },
3637 InstructionSyntax {
3638 opcode: InstructionOpcode::Testp,
3639 name: "testp",
3640 syntax: "testp.op.type p, a;",
3641 min_operand_arity: 2usize,
3642 max_operand_arity: 2usize,
3643 required_modifiers: &[],
3644 },
3645 InstructionSyntax {
3646 opcode: InstructionOpcode::Tex,
3647 name: "tex",
3648 syntax: "tex.base.geom.v2.f16x2.ctype d[|p], [a, {b,} c] {, e} {, f};",
3649 min_operand_arity: 3usize,
3650 max_operand_arity: 6usize,
3651 required_modifiers: &[".base", ".v2", ".f16x2"],
3652 },
3653 InstructionSyntax {
3654 opcode: InstructionOpcode::Tex,
3655 name: "tex",
3656 syntax: "tex.base.geom.v4.dtype.ctype d[|p], [a, {b,} c] {, e} {, f};",
3657 min_operand_arity: 3usize,
3658 max_operand_arity: 6usize,
3659 required_modifiers: &[".base", ".v4"],
3660 },
3661 InstructionSyntax {
3662 opcode: InstructionOpcode::Tex,
3663 name: "tex",
3664 syntax: "tex.geom.v2.f16x2.ctype d[|p], [a, b, c] {, e} {, f};",
3665 min_operand_arity: 4usize,
3666 max_operand_arity: 6usize,
3667 required_modifiers: &[".v2", ".f16x2"],
3668 },
3669 InstructionSyntax {
3670 opcode: InstructionOpcode::Tex,
3671 name: "tex",
3672 syntax: "tex.geom.v2.f16x2.ctype d[|p], [a, c] {, e} {, f};",
3673 min_operand_arity: 3usize,
3674 max_operand_arity: 5usize,
3675 required_modifiers: &[".v2", ".f16x2"],
3676 },
3677 InstructionSyntax {
3678 opcode: InstructionOpcode::Tex,
3679 name: "tex",
3680 syntax: "tex.geom.v4.dtype.ctype d, [a, c] {, e} {, f};",
3681 min_operand_arity: 3usize,
3682 max_operand_arity: 5usize,
3683 required_modifiers: &[".v4"],
3684 },
3685 InstructionSyntax {
3686 opcode: InstructionOpcode::Tex,
3687 name: "tex",
3688 syntax: "tex.geom.v4.dtype.ctype d[|p], [a, b, c] {, e} {, f};",
3689 min_operand_arity: 4usize,
3690 max_operand_arity: 6usize,
3691 required_modifiers: &[".v4"],
3692 },
3693 InstructionSyntax {
3694 opcode: InstructionOpcode::Tex,
3695 name: "tex",
3696 syntax: "tex.grad.geom.v2.f16x2.ctype d[|p], [a, {b,} c], dPdx, dPdy {, e} {, f};",
3697 min_operand_arity: 5usize,
3698 max_operand_arity: 8usize,
3699 required_modifiers: &[".grad", ".v2", ".f16x2"],
3700 },
3701 InstructionSyntax {
3702 opcode: InstructionOpcode::Tex,
3703 name: "tex",
3704 syntax: "tex.grad.geom.v4.dtype.ctype d[|p], [a, {b,} c], dPdx, dPdy {, e} {, f};",
3705 min_operand_arity: 5usize,
3706 max_operand_arity: 8usize,
3707 required_modifiers: &[".grad", ".v4"],
3708 },
3709 InstructionSyntax {
3710 opcode: InstructionOpcode::Tex,
3711 name: "tex",
3712 syntax: "tex.level.geom.v2.f16x2.ctype d[|p], [a, {b,} c], lod {, e} {, f};",
3713 min_operand_arity: 4usize,
3714 max_operand_arity: 7usize,
3715 required_modifiers: &[".level", ".v2", ".f16x2"],
3716 },
3717 InstructionSyntax {
3718 opcode: InstructionOpcode::Tex,
3719 name: "tex",
3720 syntax: "tex.level.geom.v4.dtype.ctype d[|p], [a, {b,} c], lod {, e} {, f};",
3721 min_operand_arity: 4usize,
3722 max_operand_arity: 7usize,
3723 required_modifiers: &[".level", ".v4"],
3724 },
3725 InstructionSyntax {
3726 opcode: InstructionOpcode::Tld4,
3727 name: "tld4",
3728 syntax: "tld4.comp.2d.v4.dtype.f32 d[|p], [a, c] {, e} {, f};",
3729 min_operand_arity: 3usize,
3730 max_operand_arity: 5usize,
3731 required_modifiers: &[".2d", ".v4", ".f32"],
3732 },
3733 InstructionSyntax {
3734 opcode: InstructionOpcode::Tld4,
3735 name: "tld4",
3736 syntax: "tld4.comp.geom.v4.dtype.f32 d[|p], [a, b, c] {, e} {, f};",
3737 min_operand_arity: 4usize,
3738 max_operand_arity: 6usize,
3739 required_modifiers: &[".v4", ".f32"],
3740 },
3741 InstructionSyntax {
3742 opcode: InstructionOpcode::Trap,
3743 name: "trap",
3744 syntax: "trap;",
3745 min_operand_arity: 0usize,
3746 max_operand_arity: 0usize,
3747 required_modifiers: &[],
3748 },
3749 InstructionSyntax {
3750 opcode: InstructionOpcode::Txq,
3751 name: "txq",
3752 syntax: "txq.tquery.b32 d, [a]; txq.level.tlquery.b32 d, [a], lod; txq.squery.b32 d, [a];",
3753 min_operand_arity: 5usize,
3754 max_operand_arity: 5usize,
3755 required_modifiers: &[".b32"],
3756 },
3757 InstructionSyntax {
3758 opcode: InstructionOpcode::VMad,
3759 name: "vmad",
3760 syntax: "vmad.dtype.atype.btype.po{.sat}{.scale} d, a{.asel}, b{.bsel}, c;",
3761 min_operand_arity: 2usize,
3762 max_operand_arity: 4usize,
3763 required_modifiers: &[".po"],
3764 },
3765 InstructionSyntax {
3766 opcode: InstructionOpcode::VMad,
3767 name: "vmad",
3768 syntax: "vmad.dtype.atype.btype{.sat}{.scale} d, {-}a{.asel}, {-}b{.bsel}, {-}c;",
3769 min_operand_arity: 1usize,
3770 max_operand_arity: 4usize,
3771 required_modifiers: &[],
3772 },
3773 InstructionSyntax {
3774 opcode: InstructionOpcode::Vote,
3775 name: "vote",
3776 syntax: "vote.ballot.b32 d, {!}a;",
3777 min_operand_arity: 1usize,
3778 max_operand_arity: 2usize,
3779 required_modifiers: &[".ballot", ".b32"],
3780 },
3781 InstructionSyntax {
3782 opcode: InstructionOpcode::Vote,
3783 name: "vote",
3784 syntax: "vote.mode.pred d, {!}a;",
3785 min_operand_arity: 1usize,
3786 max_operand_arity: 2usize,
3787 required_modifiers: &[".pred"],
3788 },
3789 InstructionSyntax {
3790 opcode: InstructionOpcode::VoteSync,
3791 name: "vote.sync",
3792 syntax: "vote.sync.ballot.b32 d, {!}a, membermask;",
3793 min_operand_arity: 2usize,
3794 max_operand_arity: 3usize,
3795 required_modifiers: &[".ballot", ".b32"],
3796 },
3797 InstructionSyntax {
3798 opcode: InstructionOpcode::VoteSync,
3799 name: "vote.sync",
3800 syntax: "vote.sync.mode.pred d, {!}a, membermask;",
3801 min_operand_arity: 2usize,
3802 max_operand_arity: 3usize,
3803 required_modifiers: &[".pred"],
3804 },
3805 InstructionSyntax {
3806 opcode: InstructionOpcode::VSet,
3807 name: "vset",
3808 syntax: "vset.atype.btype.cmp d, a{.asel}, b{.bsel};",
3809 min_operand_arity: 1usize,
3810 max_operand_arity: 3usize,
3811 required_modifiers: &[],
3812 },
3813 InstructionSyntax {
3814 opcode: InstructionOpcode::VSet,
3815 name: "vset",
3816 syntax: "vset.atype.btype.cmp d.dsel, a{.asel}, b{.bsel}, c;",
3817 min_operand_arity: 2usize,
3818 max_operand_arity: 4usize,
3819 required_modifiers: &[],
3820 },
3821 InstructionSyntax {
3822 opcode: InstructionOpcode::VSet,
3823 name: "vset",
3824 syntax: "vset.atype.btype.cmp.op2 d, a{.asel}, b{.bsel}, c;",
3825 min_operand_arity: 2usize,
3826 max_operand_arity: 4usize,
3827 required_modifiers: &[],
3828 },
3829 InstructionSyntax {
3830 opcode: InstructionOpcode::VSet2,
3831 name: "vset2",
3832 syntax: "vset2.atype.btype.cmp d{.mask}, a{.asel}, b{.bsel}, c;",
3833 min_operand_arity: 1usize,
3834 max_operand_arity: 4usize,
3835 required_modifiers: &[],
3836 },
3837 InstructionSyntax {
3838 opcode: InstructionOpcode::VSet2,
3839 name: "vset2",
3840 syntax: "vset2.atype.btype.cmp.add d{.mask}, a{.asel}, b{.bsel}, c;",
3841 min_operand_arity: 1usize,
3842 max_operand_arity: 4usize,
3843 required_modifiers: &[".add"],
3844 },
3845 InstructionSyntax {
3846 opcode: InstructionOpcode::VSet4,
3847 name: "vset4",
3848 syntax: "vset4.atype.btype.cmp d{.mask}, a{.asel}, b{.bsel}, c;",
3849 min_operand_arity: 1usize,
3850 max_operand_arity: 4usize,
3851 required_modifiers: &[],
3852 },
3853 InstructionSyntax {
3854 opcode: InstructionOpcode::VSet4,
3855 name: "vset4",
3856 syntax: "vset4.atype.btype.cmp.add d{.mask}, a{.asel}, b{.bsel}, c;",
3857 min_operand_arity: 1usize,
3858 max_operand_arity: 4usize,
3859 required_modifiers: &[".add"],
3860 },
3861 InstructionSyntax {
3862 opcode: InstructionOpcode::WgmmaCommitGroup,
3863 name: "wgmma.commit_group",
3864 syntax: "wgmma.commit_group.sync.aligned;",
3865 min_operand_arity: 0usize,
3866 max_operand_arity: 0usize,
3867 required_modifiers: &[".sync", ".aligned"],
3868 },
3869 InstructionSyntax {
3870 opcode: InstructionOpcode::WgmmaFence,
3871 name: "wgmma.fence",
3872 syntax: "wgmma.fence.sync.aligned;",
3873 min_operand_arity: 0usize,
3874 max_operand_arity: 0usize,
3875 required_modifiers: &[".sync", ".aligned"],
3876 },
3877 InstructionSyntax {
3878 opcode: InstructionOpcode::WgmmaMmaAsync,
3879 name: "wgmma.mma_async",
3880 syntax: "wgmma.mma_async.sync.aligned.shape.dtype.f16.f16 d, a, b-desc, scale-d, imm-scale-a, imm-scale-b, imm-trans-b;",
3881 min_operand_arity: 7usize,
3882 max_operand_arity: 7usize,
3883 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
3884 },
3885 InstructionSyntax {
3886 opcode: InstructionOpcode::WgmmaMmaAsync,
3887 name: "wgmma.mma_async",
3888 syntax: "wgmma.mma_async.sync.aligned.shape.dtype.f16.f16 d, a-desc, b-desc, scale-d, imm-scale-a, imm-scale-b, imm-trans-a, imm-trans-b;",
3889 min_operand_arity: 8usize,
3890 max_operand_arity: 8usize,
3891 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
3892 },
3893 InstructionSyntax {
3894 opcode: InstructionOpcode::WgmmaMmaAsyncSp,
3895 name: "wgmma.mma_async.sp",
3896 syntax: "wgmma.mma_async.sp.sync.aligned.shape.dtype.f16.f16 d, a, b-desc, sp-meta, sp-sel, scale-d, imm-scale-a, imm-scale-b, imm-trans-b;",
3897 min_operand_arity: 9usize,
3898 max_operand_arity: 9usize,
3899 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
3900 },
3901 InstructionSyntax {
3902 opcode: InstructionOpcode::WgmmaMmaAsyncSp,
3903 name: "wgmma.mma_async.sp",
3904 syntax: "wgmma.mma_async.sp.sync.aligned.shape.dtype.f16.f16 d, a-desc, b-desc, sp-meta, sp-sel, scale-d, imm-scale-a, imm-scale-b, imm-trans-a, imm-trans-b;",
3905 min_operand_arity: 10usize,
3906 max_operand_arity: 10usize,
3907 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
3908 },
3909 InstructionSyntax {
3910 opcode: InstructionOpcode::WgmmaWaitGroup,
3911 name: "wgmma.wait_group",
3912 syntax: "wgmma.wait_group.sync.aligned N;",
3913 min_operand_arity: 1usize,
3914 max_operand_arity: 1usize,
3915 required_modifiers: &[".sync", ".aligned"],
3916 },
3917 InstructionSyntax {
3918 opcode: InstructionOpcode::WmmaLoad,
3919 name: "wmma.load",
3920 syntax: "wmma.load.a.sync.aligned.layout.shape{.ss}.atype r, [p] {, stride};",
3921 min_operand_arity: 2usize,
3922 max_operand_arity: 3usize,
3923 required_modifiers: &[".a", ".sync", ".aligned"],
3924 },
3925 InstructionSyntax {
3926 opcode: InstructionOpcode::WmmaLoad,
3927 name: "wmma.load",
3928 syntax: "wmma.load.b.sync.aligned.layout.shape{.ss}.btype r, [p] {, stride};",
3929 min_operand_arity: 2usize,
3930 max_operand_arity: 3usize,
3931 required_modifiers: &[".b", ".sync", ".aligned"],
3932 },
3933 InstructionSyntax {
3934 opcode: InstructionOpcode::WmmaLoad,
3935 name: "wmma.load",
3936 syntax: "wmma.load.c.sync.aligned.layout.shape{.ss}.ctype r, [p] {, stride};",
3937 min_operand_arity: 2usize,
3938 max_operand_arity: 3usize,
3939 required_modifiers: &[".c", ".sync", ".aligned"],
3940 },
3941 InstructionSyntax {
3942 opcode: InstructionOpcode::WmmaMma,
3943 name: "wmma.mma",
3944 syntax: "wmma.mma.sync.aligned.alayout.blayout.shape.dtype.ctype d, a, b, c;",
3945 min_operand_arity: 4usize,
3946 max_operand_arity: 4usize,
3947 required_modifiers: &[".sync", ".aligned"],
3948 },
3949 InstructionSyntax {
3950 opcode: InstructionOpcode::WmmaMma,
3951 name: "wmma.mma",
3952 syntax: "wmma.mma.sync.aligned.alayout.blayout.shape.s32.atype.btype.s32{.satfinite} d, a, b, c;",
3953 min_operand_arity: 4usize,
3954 max_operand_arity: 4usize,
3955 required_modifiers: &[".sync", ".aligned", ".s32", ".s32"],
3956 },
3957 InstructionSyntax {
3958 opcode: InstructionOpcode::WmmaStore,
3959 name: "wmma.store",
3960 syntax: "wmma.store.d.sync.aligned.layout.shape{.ss}.type [p], r {, stride}",
3961 min_operand_arity: 2usize,
3962 max_operand_arity: 3usize,
3963 required_modifiers: &[".d", ".sync", ".aligned"],
3964 },
3965 InstructionSyntax {
3966 opcode: InstructionOpcode::WmmaStore,
3967 name: "wmma.store",
3968 syntax: "wmma.store.d.sync.aligned.layout.shape{.ss}.type [p], r {, stride};",
3969 min_operand_arity: 2usize,
3970 max_operand_arity: 3usize,
3971 required_modifiers: &[".d", ".sync", ".aligned"],
3972 },
3973 InstructionSyntax {
3974 opcode: InstructionOpcode::Xor,
3975 name: "xor",
3976 syntax: "xor.type d, a, b;",
3977 min_operand_arity: 3usize,
3978 max_operand_arity: 3usize,
3979 required_modifiers: &[],
3980 },
3981];
3982pub fn instruction_opcode(name: &str) -> Option<InstructionOpcode> {
3983 match name {
3984 "abs" => Some(InstructionOpcode::Abs),
3985 "activemask" => Some(InstructionOpcode::ActiveMask),
3986 "add" => Some(InstructionOpcode::Add),
3987 "add.cc" => Some(InstructionOpcode::AddCc),
3988 "addc" => Some(InstructionOpcode::Addc),
3989 "alloca" => Some(InstructionOpcode::Alloca),
3990 "and" => Some(InstructionOpcode::And),
3991 "applypriority" => Some(InstructionOpcode::ApplyPriority),
3992 "atom" => Some(InstructionOpcode::Atom),
3993 "bar" => Some(InstructionOpcode::Bar),
3994 "bar.warp.sync" => Some(InstructionOpcode::BarWarpSync),
3995 "barrier" => Some(InstructionOpcode::Barrier),
3996 "barrier.cluster" => Some(InstructionOpcode::BarrierCluster),
3997 "bfe" => Some(InstructionOpcode::Bfe),
3998 "bfi" => Some(InstructionOpcode::Bfi),
3999 "bfind" => Some(InstructionOpcode::Bfind),
4000 "bmsk" => Some(InstructionOpcode::Bmsk),
4001 "bra" => Some(InstructionOpcode::Bra),
4002 "brev" => Some(InstructionOpcode::Brev),
4003 "brkpt" => Some(InstructionOpcode::Brkpt),
4004 "brx.idx" => Some(InstructionOpcode::BrxIdx),
4005 "call" => Some(InstructionOpcode::Call),
4006 "clmad" => Some(InstructionOpcode::Clmad),
4007 "clusterlaunchcontrol.query_cancel" => {
4008 Some(InstructionOpcode::ClusterLaunchControlQueryCancel)
4009 }
4010 "clusterlaunchcontrol.try_cancel" => Some(InstructionOpcode::ClusterLaunchControlTryCancel),
4011 "clz" => Some(InstructionOpcode::Clz),
4012 "cnot" => Some(InstructionOpcode::Cnot),
4013 "copysign" => Some(InstructionOpcode::Copysign),
4014 "cos" => Some(InstructionOpcode::Cos),
4015 "cp.async.mbarrier.arrive" => Some(InstructionOpcode::CpAsyncMbarrierArrive),
4016 "createpolicy" => Some(InstructionOpcode::CreatePolicy),
4017 "cvt" => Some(InstructionOpcode::Cvt),
4018 "cvt.pack" => Some(InstructionOpcode::CvtPack),
4019 "cvta" => Some(InstructionOpcode::Cvta),
4020 "discard" => Some(InstructionOpcode::Discard),
4021 "div" => Some(InstructionOpcode::Div),
4022 "dp2a" => Some(InstructionOpcode::Dp2A),
4023 "dp4a" => Some(InstructionOpcode::Dp4A),
4024 "elect.sync" => Some(InstructionOpcode::ElectSync),
4025 "ex2" => Some(InstructionOpcode::Ex2),
4026 "exit" => Some(InstructionOpcode::Exit),
4027 "fabric.submit" => Some(InstructionOpcode::FabricSubmit),
4028 "fabric.try_get" => Some(InstructionOpcode::FabricTryGet),
4029 "fabric.try_pullred" => Some(InstructionOpcode::FabricTryPullred),
4030 "fabric.try_put" => Some(InstructionOpcode::FabricTryPut),
4031 "fabric.try_red" => Some(InstructionOpcode::FabricTryRed),
4032 "fabric.wait" => Some(InstructionOpcode::FabricWait),
4033 "fence" => Some(InstructionOpcode::Fence),
4034 "fma" => Some(InstructionOpcode::Fma),
4035 "fns" => Some(InstructionOpcode::Fns),
4036 "getctarank" => Some(InstructionOpcode::GetCtaRank),
4037 "griddepcontrol" => Some(InstructionOpcode::GridDepControl),
4038 "isspacep" => Some(InstructionOpcode::IsSpaceP),
4039 "istypep" => Some(InstructionOpcode::IsTypeP),
4040 "ld" => Some(InstructionOpcode::Ld),
4041 "ld.global.nc" => Some(InstructionOpcode::LdGlobalNc),
4042 "ldmatrix" => Some(InstructionOpcode::LdMatrix),
4043 "ldu" => Some(InstructionOpcode::Ldu),
4044 "lg2" => Some(InstructionOpcode::Lg2),
4045 "lop3" => Some(InstructionOpcode::Lop3),
4046 "mad" => Some(InstructionOpcode::Mad),
4047 "mad.cc" => Some(InstructionOpcode::MadCc),
4048 "mad24" => Some(InstructionOpcode::Mad24),
4049 "madc" => Some(InstructionOpcode::Madc),
4050 "mapa" => Some(InstructionOpcode::Mapa),
4051 "match.sync" => Some(InstructionOpcode::MatchSync),
4052 "max" => Some(InstructionOpcode::Max),
4053 "mbarrier.arrive" => Some(InstructionOpcode::MbarrierArrive),
4054 "mbarrier.arrive_drop" => Some(InstructionOpcode::MbarrierArriveDrop),
4055 "mbarrier.check_layout" => Some(InstructionOpcode::MbarrierCheckLayout),
4056 "mbarrier.complete_tx" => Some(InstructionOpcode::MbarrierCompleteTx),
4057 "mbarrier.expect_tx" => Some(InstructionOpcode::MbarrierExpectTx),
4058 "mbarrier.init" => Some(InstructionOpcode::MbarrierInit),
4059 "mbarrier.inval" => Some(InstructionOpcode::MbarrierInval),
4060 "mbarrier.pending_count" => Some(InstructionOpcode::MbarrierPendingCount),
4061 "mbarrier.test_wait" => Some(InstructionOpcode::MbarrierTestWait),
4062 "mbarrier.try_wait" => Some(InstructionOpcode::MbarrierTryWait),
4063 "membar" => Some(InstructionOpcode::Membar),
4064 "min" => Some(InstructionOpcode::Min),
4065 "mma" => Some(InstructionOpcode::Mma),
4066 "mma.sp" => Some(InstructionOpcode::MmaSp),
4067 "mma.sp::ordered_metadata" => Some(InstructionOpcode::MmaSpOrderedMetadata),
4068 "mov" => Some(InstructionOpcode::Mov),
4069 "movmatrix" => Some(InstructionOpcode::MovMatrix),
4070 "mul" => Some(InstructionOpcode::Mul),
4071 "mul24" => Some(InstructionOpcode::Mul24),
4072 "multimem.ld_reduce" => Some(InstructionOpcode::MultimemLdReduce),
4073 "multimem.red" => Some(InstructionOpcode::MultimemRed),
4074 "multimem.red.async" => Some(InstructionOpcode::MultimemRedAsync),
4075 "multimem.st" => Some(InstructionOpcode::MultimemSt),
4076 "multimem.st.async" => Some(InstructionOpcode::MultimemStAsync),
4077 "nanosleep" => Some(InstructionOpcode::Nanosleep),
4078 "neg" => Some(InstructionOpcode::Neg),
4079 "not" => Some(InstructionOpcode::Not),
4080 "or" => Some(InstructionOpcode::Or),
4081 "pmevent" => Some(InstructionOpcode::PmEvent),
4082 "popc" => Some(InstructionOpcode::Popc),
4083 "prefetch" => Some(InstructionOpcode::Prefetch),
4084 "prefetchu" => Some(InstructionOpcode::Prefetchu),
4085 "prmt" => Some(InstructionOpcode::Prmt),
4086 "rcp" => Some(InstructionOpcode::Rcp),
4087 "rcp.approx.ftz.f64" => Some(InstructionOpcode::RcpApproxFtzF64),
4088 "red" => Some(InstructionOpcode::Red),
4089 "red.async" => Some(InstructionOpcode::RedAsync),
4090 "redux.sync" => Some(InstructionOpcode::ReduxSync),
4091 "rem" => Some(InstructionOpcode::Rem),
4092 "ret" => Some(InstructionOpcode::Ret),
4093 "rsqrt" => Some(InstructionOpcode::Rsqrt),
4094 "rsqrt.approx.ftz.f64" => Some(InstructionOpcode::RsqrtApproxFtzF64),
4095 "sad" => Some(InstructionOpcode::Sad),
4096 "selp" => Some(InstructionOpcode::Selp),
4097 "set" => Some(InstructionOpcode::Set),
4098 "setmaxnreg" => Some(InstructionOpcode::SetMaxNReg),
4099 "setp" => Some(InstructionOpcode::Setp),
4100 "shf" => Some(InstructionOpcode::Shf),
4101 "shfl" => Some(InstructionOpcode::Shfl),
4102 "shfl.sync" => Some(InstructionOpcode::ShflSync),
4103 "shl" => Some(InstructionOpcode::Shl),
4104 "shr" => Some(InstructionOpcode::Shr),
4105 "sin" => Some(InstructionOpcode::Sin),
4106 "slct" => Some(InstructionOpcode::Slct),
4107 "sqrt" => Some(InstructionOpcode::Sqrt),
4108 "st" => Some(InstructionOpcode::St),
4109 "st.async" => Some(InstructionOpcode::StAsync),
4110 "st.bulk" => Some(InstructionOpcode::StBulk),
4111 "stackrestore" => Some(InstructionOpcode::StackRestore),
4112 "stacksave" => Some(InstructionOpcode::StackSave),
4113 "stmatrix" => Some(InstructionOpcode::StMatrix),
4114 "sub" => Some(InstructionOpcode::Sub),
4115 "sub.cc" => Some(InstructionOpcode::SubCc),
4116 "subc" => Some(InstructionOpcode::Subc),
4117 "suld" => Some(InstructionOpcode::Suld),
4118 "suq" => Some(InstructionOpcode::Suq),
4119 "sured" => Some(InstructionOpcode::Sured),
4120 "sust" => Some(InstructionOpcode::Sust),
4121 "szext" => Some(InstructionOpcode::Szext),
4122 "tanh" => Some(InstructionOpcode::Tanh),
4123 "tcgen05.alloc" => Some(InstructionOpcode::Tcgen05Alloc),
4124 "tcgen05.commit" => Some(InstructionOpcode::Tcgen05Commit),
4125 "tcgen05.cp" => Some(InstructionOpcode::Tcgen05Cp),
4126 "tcgen05.dealloc" => Some(InstructionOpcode::Tcgen05Dealloc),
4127 "tcgen05.fence" => Some(InstructionOpcode::Tcgen05Fence),
4128 "tcgen05.ld" => Some(InstructionOpcode::Tcgen05Ld),
4129 "tcgen05.relinquish_alloc_permit" => Some(InstructionOpcode::Tcgen05RelinquishAllocPermit),
4130 "tcgen05.shift" => Some(InstructionOpcode::Tcgen05Shift),
4131 "tcgen05.st" => Some(InstructionOpcode::Tcgen05St),
4132 "tcgen05.wait" => Some(InstructionOpcode::Tcgen05Wait),
4133 "tensormap.cp_fenceproxy" => Some(InstructionOpcode::TensorMapCpFenceProxy),
4134 "tensormap.replace" => Some(InstructionOpcode::TensormapReplace),
4135 "testp" => Some(InstructionOpcode::Testp),
4136 "tex" => Some(InstructionOpcode::Tex),
4137 "tld4" => Some(InstructionOpcode::Tld4),
4138 "trap" => Some(InstructionOpcode::Trap),
4139 "txq" => Some(InstructionOpcode::Txq),
4140 "vabsdiff" => Some(InstructionOpcode::VAbsDiff),
4141 "vabsdiff2" => Some(InstructionOpcode::VAbsDiff2),
4142 "vabsdiff4" => Some(InstructionOpcode::VAbsDiff4),
4143 "vadd" => Some(InstructionOpcode::VAdd),
4144 "vadd2" => Some(InstructionOpcode::VAdd2),
4145 "vadd4" => Some(InstructionOpcode::VAdd4),
4146 "vavrg2" => Some(InstructionOpcode::VAvrg2),
4147 "vavrg4" => Some(InstructionOpcode::VAvrg4),
4148 "vmad" => Some(InstructionOpcode::VMad),
4149 "vmax" => Some(InstructionOpcode::VMax),
4150 "vmax2" => Some(InstructionOpcode::VMax2),
4151 "vmax4" => Some(InstructionOpcode::VMax4),
4152 "vmin" => Some(InstructionOpcode::VMin),
4153 "vmin2" => Some(InstructionOpcode::VMin2),
4154 "vmin4" => Some(InstructionOpcode::VMin4),
4155 "vote" => Some(InstructionOpcode::Vote),
4156 "vote.sync" => Some(InstructionOpcode::VoteSync),
4157 "vset" => Some(InstructionOpcode::VSet),
4158 "vset2" => Some(InstructionOpcode::VSet2),
4159 "vset4" => Some(InstructionOpcode::VSet4),
4160 "vshl" => Some(InstructionOpcode::VShl),
4161 "vshr" => Some(InstructionOpcode::VShr),
4162 "vsub" => Some(InstructionOpcode::VSub),
4163 "vsub2" => Some(InstructionOpcode::VSub2),
4164 "vsub4" => Some(InstructionOpcode::VSub4),
4165 "wgmma.commit_group" => Some(InstructionOpcode::WgmmaCommitGroup),
4166 "wgmma.fence" => Some(InstructionOpcode::WgmmaFence),
4167 "wgmma.mma_async" => Some(InstructionOpcode::WgmmaMmaAsync),
4168 "wgmma.mma_async.sp" => Some(InstructionOpcode::WgmmaMmaAsyncSp),
4169 "wgmma.wait_group" => Some(InstructionOpcode::WgmmaWaitGroup),
4170 "wmma.load" => Some(InstructionOpcode::WmmaLoad),
4171 "wmma.mma" => Some(InstructionOpcode::WmmaMma),
4172 "wmma.store" => Some(InstructionOpcode::WmmaStore),
4173 "xor" => Some(InstructionOpcode::Xor),
4174 _ => None,
4175 }
4176}
4177pub fn syntax_for_opcode(name: &str) -> &'static [InstructionSyntax] {
4178 match name {
4179 "abs" => &[
4180 InstructionSyntax {
4181 opcode: InstructionOpcode::Abs,
4182 name: "abs",
4183 syntax: "abs.bf16 d, a;",
4184 min_operand_arity: 2usize,
4185 max_operand_arity: 2usize,
4186 required_modifiers: &[".bf16"],
4187 },
4188 InstructionSyntax {
4189 opcode: InstructionOpcode::Abs,
4190 name: "abs",
4191 syntax: "abs.bf16x2 d, a;",
4192 min_operand_arity: 2usize,
4193 max_operand_arity: 2usize,
4194 required_modifiers: &[".bf16x2"],
4195 },
4196 InstructionSyntax {
4197 opcode: InstructionOpcode::Abs,
4198 name: "abs",
4199 syntax: "abs.f64 d, a;",
4200 min_operand_arity: 2usize,
4201 max_operand_arity: 2usize,
4202 required_modifiers: &[".f64"],
4203 },
4204 InstructionSyntax {
4205 opcode: InstructionOpcode::Abs,
4206 name: "abs",
4207 syntax: "abs.type d, a;",
4208 min_operand_arity: 2usize,
4209 max_operand_arity: 2usize,
4210 required_modifiers: &[],
4211 },
4212 InstructionSyntax {
4213 opcode: InstructionOpcode::Abs,
4214 name: "abs",
4215 syntax: "abs{.ftz}.f16 d, a;",
4216 min_operand_arity: 2usize,
4217 max_operand_arity: 2usize,
4218 required_modifiers: &[".f16"],
4219 },
4220 InstructionSyntax {
4221 opcode: InstructionOpcode::Abs,
4222 name: "abs",
4223 syntax: "abs{.ftz}.f16x2 d, a;",
4224 min_operand_arity: 2usize,
4225 max_operand_arity: 2usize,
4226 required_modifiers: &[".f16x2"],
4227 },
4228 InstructionSyntax {
4229 opcode: InstructionOpcode::Abs,
4230 name: "abs",
4231 syntax: "abs{.ftz}.f32 d, a;",
4232 min_operand_arity: 2usize,
4233 max_operand_arity: 2usize,
4234 required_modifiers: &[".f32"],
4235 },
4236 ],
4237 "activemask" => &[InstructionSyntax {
4238 opcode: InstructionOpcode::ActiveMask,
4239 name: "activemask",
4240 syntax: "activemask.b32 d;",
4241 min_operand_arity: 1usize,
4242 max_operand_arity: 1usize,
4243 required_modifiers: &[".b32"],
4244 }],
4245 "add" => &[
4246 InstructionSyntax {
4247 opcode: InstructionOpcode::Add,
4248 name: "add",
4249 syntax: "add.type1 d, a, b;",
4250 min_operand_arity: 3usize,
4251 max_operand_arity: 3usize,
4252 required_modifiers: &[],
4253 },
4254 InstructionSyntax {
4255 opcode: InstructionOpcode::Add,
4256 name: "add",
4257 syntax: "add{.rnd}.bf16 d, a, b;",
4258 min_operand_arity: 3usize,
4259 max_operand_arity: 3usize,
4260 required_modifiers: &[".bf16"],
4261 },
4262 InstructionSyntax {
4263 opcode: InstructionOpcode::Add,
4264 name: "add",
4265 syntax: "add{.rnd}.bf16x2 d, a, b;",
4266 min_operand_arity: 3usize,
4267 max_operand_arity: 3usize,
4268 required_modifiers: &[".bf16x2"],
4269 },
4270 InstructionSyntax {
4271 opcode: InstructionOpcode::Add,
4272 name: "add",
4273 syntax: "add{.rnd}.f64 d, a, b;",
4274 min_operand_arity: 3usize,
4275 max_operand_arity: 3usize,
4276 required_modifiers: &[".f64"],
4277 },
4278 InstructionSyntax {
4279 opcode: InstructionOpcode::Add,
4280 name: "add",
4281 syntax: "add{.rnd}{.ftz}.f32x2 d, a, b;",
4282 min_operand_arity: 3usize,
4283 max_operand_arity: 3usize,
4284 required_modifiers: &[".f32x2"],
4285 },
4286 InstructionSyntax {
4287 opcode: InstructionOpcode::Add,
4288 name: "add",
4289 syntax: "add{.rnd}{.ftz}{.sat}.f16 d, a, b;",
4290 min_operand_arity: 3usize,
4291 max_operand_arity: 3usize,
4292 required_modifiers: &[".f16"],
4293 },
4294 InstructionSyntax {
4295 opcode: InstructionOpcode::Add,
4296 name: "add",
4297 syntax: "add{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
4298 min_operand_arity: 3usize,
4299 max_operand_arity: 3usize,
4300 required_modifiers: &[".f16x2"],
4301 },
4302 InstructionSyntax {
4303 opcode: InstructionOpcode::Add,
4304 name: "add",
4305 syntax: "add{.rnd}{.ftz}{.sat}.f32 d, a, b;",
4306 min_operand_arity: 3usize,
4307 max_operand_arity: 3usize,
4308 required_modifiers: &[".f32"],
4309 },
4310 InstructionSyntax {
4311 opcode: InstructionOpcode::Add,
4312 name: "add",
4313 syntax: "add{.rnd}{.sat}.f32.atype d, a, c;",
4314 min_operand_arity: 3usize,
4315 max_operand_arity: 3usize,
4316 required_modifiers: &[".f32"],
4317 },
4318 InstructionSyntax {
4319 opcode: InstructionOpcode::Add,
4320 name: "add",
4321 syntax: "add{.sat}.type2 d, a, b;",
4322 min_operand_arity: 3usize,
4323 max_operand_arity: 3usize,
4324 required_modifiers: &[],
4325 },
4326 ],
4327 "add.cc" => &[InstructionSyntax {
4328 opcode: InstructionOpcode::AddCc,
4329 name: "add.cc",
4330 syntax: "add.cc.type d, a, b;",
4331 min_operand_arity: 3usize,
4332 max_operand_arity: 3usize,
4333 required_modifiers: &[],
4334 }],
4335 "addc" => &[InstructionSyntax {
4336 opcode: InstructionOpcode::Addc,
4337 name: "addc",
4338 syntax: "addc{.cc}.type d, a, b;",
4339 min_operand_arity: 3usize,
4340 max_operand_arity: 3usize,
4341 required_modifiers: &[],
4342 }],
4343 "alloca" => &[InstructionSyntax {
4344 opcode: InstructionOpcode::Alloca,
4345 name: "alloca",
4346 syntax: "alloca.type ptr, size{, immAlign};",
4347 min_operand_arity: 2usize,
4348 max_operand_arity: 3usize,
4349 required_modifiers: &[],
4350 }],
4351 "and" => &[InstructionSyntax {
4352 opcode: InstructionOpcode::And,
4353 name: "and",
4354 syntax: "and.type d, a, b;",
4355 min_operand_arity: 3usize,
4356 max_operand_arity: 3usize,
4357 required_modifiers: &[],
4358 }],
4359 "applypriority" => &[InstructionSyntax {
4360 opcode: InstructionOpcode::ApplyPriority,
4361 name: "applypriority",
4362 syntax: "applypriority{.global}.level::eviction_priority [a], size;",
4363 min_operand_arity: 2usize,
4364 max_operand_arity: 2usize,
4365 required_modifiers: &[],
4366 }],
4367 "atom" => &[
4368 InstructionSyntax {
4369 opcode: InstructionOpcode::Atom,
4370 name: "atom",
4371 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16 d, [a], b{, cache_policy};",
4372 min_operand_arity: 3usize,
4373 max_operand_arity: 4usize,
4374 required_modifiers: &[".add", ".noftz", ".bf16"],
4375 },
4376 InstructionSyntax {
4377 opcode: InstructionOpcode::Atom,
4378 name: "atom",
4379 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16x2 d, [a], b{, cache_policy};",
4380 min_operand_arity: 3usize,
4381 max_operand_arity: 4usize,
4382 required_modifiers: &[".add", ".noftz", ".bf16x2"],
4383 },
4384 InstructionSyntax {
4385 opcode: InstructionOpcode::Atom,
4386 name: "atom",
4387 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16 d, [a], b{, cache_policy};",
4388 min_operand_arity: 3usize,
4389 max_operand_arity: 4usize,
4390 required_modifiers: &[".add", ".noftz", ".f16"],
4391 },
4392 InstructionSyntax {
4393 opcode: InstructionOpcode::Atom,
4394 name: "atom",
4395 syntax: "atom{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16x2 d, [a], b{, cache_policy};",
4396 min_operand_arity: 3usize,
4397 max_operand_arity: 4usize,
4398 required_modifiers: &[".add", ".noftz", ".f16x2"],
4399 },
4400 InstructionSyntax {
4401 opcode: InstructionOpcode::Atom,
4402 name: "atom",
4403 syntax: "atom{.sem}{.scope}{.space}.cas.type1 d, [a], b, c;",
4404 min_operand_arity: 4usize,
4405 max_operand_arity: 4usize,
4406 required_modifiers: &[".cas"],
4407 },
4408 InstructionSyntax {
4409 opcode: InstructionOpcode::Atom,
4410 name: "atom",
4411 syntax: "atom{.sem}{.scope}{.space}.exch{.level::cache_hint}.type2 d, [a], b {, cache_policy};",
4412 min_operand_arity: 3usize,
4413 max_operand_arity: 4usize,
4414 required_modifiers: &[".exch"],
4415 },
4416 InstructionSyntax {
4417 opcode: InstructionOpcode::Atom,
4418 name: "atom",
4419 syntax: "atom{.sem}{.scope}{.space}.op{.level::cache_hint}.type d, [a], b{, cache_policy};",
4420 min_operand_arity: 3usize,
4421 max_operand_arity: 4usize,
4422 required_modifiers: &[],
4423 },
4424 ],
4425 "bar" => &[
4426 InstructionSyntax {
4427 opcode: InstructionOpcode::Bar,
4428 name: "bar",
4429 syntax: "bar{.cta}.arrive a, b;",
4430 min_operand_arity: 2usize,
4431 max_operand_arity: 2usize,
4432 required_modifiers: &[".arrive"],
4433 },
4434 InstructionSyntax {
4435 opcode: InstructionOpcode::Bar,
4436 name: "bar",
4437 syntax: "bar{.cta}.red.op.pred p, a{, b}, {!}c;",
4438 min_operand_arity: 2usize,
4439 max_operand_arity: 4usize,
4440 required_modifiers: &[".red", ".pred"],
4441 },
4442 InstructionSyntax {
4443 opcode: InstructionOpcode::Bar,
4444 name: "bar",
4445 syntax: "bar{.cta}.red.popc.u32 d, a{, b}, {!}c;",
4446 min_operand_arity: 2usize,
4447 max_operand_arity: 4usize,
4448 required_modifiers: &[".red", ".popc", ".u32"],
4449 },
4450 InstructionSyntax {
4451 opcode: InstructionOpcode::Bar,
4452 name: "bar",
4453 syntax: "bar{.cta}.sync a{, b};",
4454 min_operand_arity: 1usize,
4455 max_operand_arity: 2usize,
4456 required_modifiers: &[".sync"],
4457 },
4458 ],
4459 "bar.warp.sync" => &[InstructionSyntax {
4460 opcode: InstructionOpcode::BarWarpSync,
4461 name: "bar.warp.sync",
4462 syntax: "bar.warp.sync membermask;",
4463 min_operand_arity: 1usize,
4464 max_operand_arity: 1usize,
4465 required_modifiers: &[],
4466 }],
4467 "barrier" => &[
4468 InstructionSyntax {
4469 opcode: InstructionOpcode::Barrier,
4470 name: "barrier",
4471 syntax: "barrier{.cta}.arrive{.aligned} a, b;",
4472 min_operand_arity: 2usize,
4473 max_operand_arity: 2usize,
4474 required_modifiers: &[".arrive"],
4475 },
4476 InstructionSyntax {
4477 opcode: InstructionOpcode::Barrier,
4478 name: "barrier",
4479 syntax: "barrier{.cta}.red.op{.aligned}.pred p, a{, b}, {!}c;",
4480 min_operand_arity: 2usize,
4481 max_operand_arity: 4usize,
4482 required_modifiers: &[".red", ".pred"],
4483 },
4484 InstructionSyntax {
4485 opcode: InstructionOpcode::Barrier,
4486 name: "barrier",
4487 syntax: "barrier{.cta}.red.popc{.aligned}.u32 d, a{, b}, {!}c;",
4488 min_operand_arity: 2usize,
4489 max_operand_arity: 4usize,
4490 required_modifiers: &[".red", ".popc", ".u32"],
4491 },
4492 InstructionSyntax {
4493 opcode: InstructionOpcode::Barrier,
4494 name: "barrier",
4495 syntax: "barrier{.cta}.sync{.aligned} a{, b};",
4496 min_operand_arity: 1usize,
4497 max_operand_arity: 2usize,
4498 required_modifiers: &[".sync"],
4499 },
4500 ],
4501 "barrier.cluster" => &[
4502 InstructionSyntax {
4503 opcode: InstructionOpcode::BarrierCluster,
4504 name: "barrier.cluster",
4505 syntax: "barrier.cluster.arrive{.sem}{.aligned};",
4506 min_operand_arity: 0usize,
4507 max_operand_arity: 0usize,
4508 required_modifiers: &[".arrive"],
4509 },
4510 InstructionSyntax {
4511 opcode: InstructionOpcode::BarrierCluster,
4512 name: "barrier.cluster",
4513 syntax: "barrier.cluster.wait{.acquire}{.aligned};",
4514 min_operand_arity: 0usize,
4515 max_operand_arity: 0usize,
4516 required_modifiers: &[".wait"],
4517 },
4518 ],
4519 "bfe" => &[InstructionSyntax {
4520 opcode: InstructionOpcode::Bfe,
4521 name: "bfe",
4522 syntax: "bfe.type d, a, b, c;",
4523 min_operand_arity: 4usize,
4524 max_operand_arity: 4usize,
4525 required_modifiers: &[],
4526 }],
4527 "bfi" => &[InstructionSyntax {
4528 opcode: InstructionOpcode::Bfi,
4529 name: "bfi",
4530 syntax: "bfi.type f, a, b, c, d;",
4531 min_operand_arity: 5usize,
4532 max_operand_arity: 5usize,
4533 required_modifiers: &[],
4534 }],
4535 "bfind" => &[
4536 InstructionSyntax {
4537 opcode: InstructionOpcode::Bfind,
4538 name: "bfind",
4539 syntax: "bfind.shiftamt.type d, a;",
4540 min_operand_arity: 2usize,
4541 max_operand_arity: 2usize,
4542 required_modifiers: &[".shiftamt"],
4543 },
4544 InstructionSyntax {
4545 opcode: InstructionOpcode::Bfind,
4546 name: "bfind",
4547 syntax: "bfind.type d, a;",
4548 min_operand_arity: 2usize,
4549 max_operand_arity: 2usize,
4550 required_modifiers: &[],
4551 },
4552 ],
4553 "bmsk" => &[InstructionSyntax {
4554 opcode: InstructionOpcode::Bmsk,
4555 name: "bmsk",
4556 syntax: "bmsk.mode.b32 d, a, b;",
4557 min_operand_arity: 3usize,
4558 max_operand_arity: 3usize,
4559 required_modifiers: &[".b32"],
4560 }],
4561 "bra" => &[],
4562 "brev" => &[InstructionSyntax {
4563 opcode: InstructionOpcode::Brev,
4564 name: "brev",
4565 syntax: "brev.type d, a;",
4566 min_operand_arity: 2usize,
4567 max_operand_arity: 2usize,
4568 required_modifiers: &[],
4569 }],
4570 "brkpt" => &[InstructionSyntax {
4571 opcode: InstructionOpcode::Brkpt,
4572 name: "brkpt",
4573 syntax: "brkpt;",
4574 min_operand_arity: 0usize,
4575 max_operand_arity: 0usize,
4576 required_modifiers: &[],
4577 }],
4578 "brx.idx" => &[InstructionSyntax {
4579 opcode: InstructionOpcode::BrxIdx,
4580 name: "brx.idx",
4581 syntax: "brx.idx{.uni} index, tlist;",
4582 min_operand_arity: 2usize,
4583 max_operand_arity: 2usize,
4584 required_modifiers: &[],
4585 }],
4586 "call" => &[
4587 InstructionSyntax {
4588 opcode: InstructionOpcode::Call,
4589 name: "call",
4590 syntax: "call{.uni} (ret-param), fptr, (param-list), flist;",
4591 min_operand_arity: 4usize,
4592 max_operand_arity: 4usize,
4593 required_modifiers: &[],
4594 },
4595 InstructionSyntax {
4596 opcode: InstructionOpcode::Call,
4597 name: "call",
4598 syntax: "call{.uni} (ret-param), fptr, (param-list), fproto;",
4599 min_operand_arity: 4usize,
4600 max_operand_arity: 4usize,
4601 required_modifiers: &[],
4602 },
4603 InstructionSyntax {
4604 opcode: InstructionOpcode::Call,
4605 name: "call",
4606 syntax: "call{.uni} (ret-param), func, (param-list);",
4607 min_operand_arity: 3usize,
4608 max_operand_arity: 3usize,
4609 required_modifiers: &[],
4610 },
4611 InstructionSyntax {
4612 opcode: InstructionOpcode::Call,
4613 name: "call",
4614 syntax: "call{.uni} fptr, (param-list), flist;",
4615 min_operand_arity: 3usize,
4616 max_operand_arity: 3usize,
4617 required_modifiers: &[],
4618 },
4619 InstructionSyntax {
4620 opcode: InstructionOpcode::Call,
4621 name: "call",
4622 syntax: "call{.uni} fptr, (param-list), fproto;",
4623 min_operand_arity: 3usize,
4624 max_operand_arity: 3usize,
4625 required_modifiers: &[],
4626 },
4627 InstructionSyntax {
4628 opcode: InstructionOpcode::Call,
4629 name: "call",
4630 syntax: "call{.uni} fptr, flist;",
4631 min_operand_arity: 2usize,
4632 max_operand_arity: 2usize,
4633 required_modifiers: &[],
4634 },
4635 InstructionSyntax {
4636 opcode: InstructionOpcode::Call,
4637 name: "call",
4638 syntax: "call{.uni} fptr, fproto;",
4639 min_operand_arity: 2usize,
4640 max_operand_arity: 2usize,
4641 required_modifiers: &[],
4642 },
4643 InstructionSyntax {
4644 opcode: InstructionOpcode::Call,
4645 name: "call",
4646 syntax: "call{.uni} func, (param-list);",
4647 min_operand_arity: 2usize,
4648 max_operand_arity: 2usize,
4649 required_modifiers: &[],
4650 },
4651 InstructionSyntax {
4652 opcode: InstructionOpcode::Call,
4653 name: "call",
4654 syntax: "call{.uni} func;",
4655 min_operand_arity: 1usize,
4656 max_operand_arity: 1usize,
4657 required_modifiers: &[],
4658 },
4659 ],
4660 "clmad" => &[InstructionSyntax {
4661 opcode: InstructionOpcode::Clmad,
4662 name: "clmad",
4663 syntax: "clmad.mode.u64 d, a, b, c;",
4664 min_operand_arity: 4usize,
4665 max_operand_arity: 4usize,
4666 required_modifiers: &[".u64"],
4667 }],
4668 "clusterlaunchcontrol.query_cancel" => &[
4669 InstructionSyntax {
4670 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
4671 name: "clusterlaunchcontrol.query_cancel",
4672 syntax: "clusterlaunchcontrol.query_cancel.get_first_ctaid.v4.b32.b128 {xdim, ydim, zdim, _}, try_cancel_response;",
4673 min_operand_arity: 4usize,
4674 max_operand_arity: 5usize,
4675 required_modifiers: &[".get_first_ctaid", ".v4", ".b32", ".b128"],
4676 },
4677 InstructionSyntax {
4678 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
4679 name: "clusterlaunchcontrol.query_cancel",
4680 syntax: "clusterlaunchcontrol.query_cancel.get_first_ctaid{::dimension}.b32.b128 reg, try_cancel_response;",
4681 min_operand_arity: 2usize,
4682 max_operand_arity: 2usize,
4683 required_modifiers: &[".get_first_ctaid", ".b32", ".b128"],
4684 },
4685 InstructionSyntax {
4686 opcode: InstructionOpcode::ClusterLaunchControlQueryCancel,
4687 name: "clusterlaunchcontrol.query_cancel",
4688 syntax: "clusterlaunchcontrol.query_cancel.is_canceled.pred.b128 pred, try_cancel_response;",
4689 min_operand_arity: 2usize,
4690 max_operand_arity: 2usize,
4691 required_modifiers: &[".is_canceled", ".pred", ".b128"],
4692 },
4693 ],
4694 "clusterlaunchcontrol.try_cancel" => &[InstructionSyntax {
4695 opcode: InstructionOpcode::ClusterLaunchControlTryCancel,
4696 name: "clusterlaunchcontrol.try_cancel",
4697 syntax: "clusterlaunchcontrol.try_cancel.async{.space}.completion_mechanism{.multicast::cluster::all}.b128 [addr], [mbar];",
4698 min_operand_arity: 2usize,
4699 max_operand_arity: 2usize,
4700 required_modifiers: &[".async", ".b128"],
4701 }],
4702 "clz" => &[InstructionSyntax {
4703 opcode: InstructionOpcode::Clz,
4704 name: "clz",
4705 syntax: "clz.type d, a;",
4706 min_operand_arity: 2usize,
4707 max_operand_arity: 2usize,
4708 required_modifiers: &[],
4709 }],
4710 "cnot" => &[InstructionSyntax {
4711 opcode: InstructionOpcode::Cnot,
4712 name: "cnot",
4713 syntax: "cnot.type d, a;",
4714 min_operand_arity: 2usize,
4715 max_operand_arity: 2usize,
4716 required_modifiers: &[],
4717 }],
4718 "copysign" => &[InstructionSyntax {
4719 opcode: InstructionOpcode::Copysign,
4720 name: "copysign",
4721 syntax: "copysign.type d, a, b;",
4722 min_operand_arity: 3usize,
4723 max_operand_arity: 3usize,
4724 required_modifiers: &[],
4725 }],
4726 "cos" => &[InstructionSyntax {
4727 opcode: InstructionOpcode::Cos,
4728 name: "cos",
4729 syntax: "cos.approx{.ftz}.f32 d, a;",
4730 min_operand_arity: 2usize,
4731 max_operand_arity: 2usize,
4732 required_modifiers: &[".approx", ".f32"],
4733 }],
4734 "cp.async.mbarrier.arrive" => &[InstructionSyntax {
4735 opcode: InstructionOpcode::CpAsyncMbarrierArrive,
4736 name: "cp.async.mbarrier.arrive",
4737 syntax: "cp.async.mbarrier.arrive{.noinc}{.shared{::cta}}.b64 [addr];",
4738 min_operand_arity: 1usize,
4739 max_operand_arity: 1usize,
4740 required_modifiers: &[".b64"],
4741 }],
4742 "createpolicy" => &[
4743 InstructionSyntax {
4744 opcode: InstructionOpcode::CreatePolicy,
4745 name: "createpolicy",
4746 syntax: "createpolicy.cvt.L2.b64 cache_policy, access-property;",
4747 min_operand_arity: 2usize,
4748 max_operand_arity: 2usize,
4749 required_modifiers: &[".cvt", ".L2", ".b64"],
4750 },
4751 InstructionSyntax {
4752 opcode: InstructionOpcode::CreatePolicy,
4753 name: "createpolicy",
4754 syntax: "createpolicy.fractional.level::primary_priority{.level::secondary_priority}.b64 cache_policy{, fraction};",
4755 min_operand_arity: 1usize,
4756 max_operand_arity: 2usize,
4757 required_modifiers: &[".fractional", ".b64"],
4758 },
4759 InstructionSyntax {
4760 opcode: InstructionOpcode::CreatePolicy,
4761 name: "createpolicy",
4762 syntax: "createpolicy.range{.global}.level::primary_priority{.level::secondary_priority}.b64 cache_policy, [a], primary-size, total-size;",
4763 min_operand_arity: 4usize,
4764 max_operand_arity: 4usize,
4765 required_modifiers: &[".range", ".b64"],
4766 },
4767 ],
4768 "cvt" => &[
4769 InstructionSyntax {
4770 opcode: InstructionOpcode::Cvt,
4771 name: "cvt",
4772 syntax: "cvt.frnd2{.relu}{.satfinite}.bf16.f32 d, a;",
4773 min_operand_arity: 2usize,
4774 max_operand_arity: 2usize,
4775 required_modifiers: &[".bf16", ".f32"],
4776 },
4777 InstructionSyntax {
4778 opcode: InstructionOpcode::Cvt,
4779 name: "cvt",
4780 syntax: "cvt.frnd2{.relu}{.satfinite}.bf16x2.f32 d, a, b;",
4781 min_operand_arity: 3usize,
4782 max_operand_arity: 3usize,
4783 required_modifiers: &[".bf16x2", ".f32"],
4784 },
4785 InstructionSyntax {
4786 opcode: InstructionOpcode::Cvt,
4787 name: "cvt",
4788 syntax: "cvt.frnd2{.relu}{.satfinite}.f16.f32 d, a;",
4789 min_operand_arity: 2usize,
4790 max_operand_arity: 2usize,
4791 required_modifiers: &[".f16", ".f32"],
4792 },
4793 InstructionSyntax {
4794 opcode: InstructionOpcode::Cvt,
4795 name: "cvt",
4796 syntax: "cvt.frnd2{.relu}{.satfinite}.f16x2.f32 d, a, b;",
4797 min_operand_arity: 3usize,
4798 max_operand_arity: 3usize,
4799 required_modifiers: &[".f16x2", ".f32"],
4800 },
4801 InstructionSyntax {
4802 opcode: InstructionOpcode::Cvt,
4803 name: "cvt",
4804 syntax: "cvt.frnd2{.satfinite}{.relu}.tf32.f32 d, a;",
4805 min_operand_arity: 2usize,
4806 max_operand_arity: 2usize,
4807 required_modifiers: &[".tf32", ".f32"],
4808 },
4809 InstructionSyntax {
4810 opcode: InstructionOpcode::Cvt,
4811 name: "cvt",
4812 syntax: "cvt.frnd3{.satfinite}.ue8m0x2.bf16x2 d, a;",
4813 min_operand_arity: 2usize,
4814 max_operand_arity: 2usize,
4815 required_modifiers: &[".ue8m0x2", ".bf16x2"],
4816 },
4817 InstructionSyntax {
4818 opcode: InstructionOpcode::Cvt,
4819 name: "cvt",
4820 syntax: "cvt.frnd3{.satfinite}.ue8m0x2.f32 d, a, b;",
4821 min_operand_arity: 3usize,
4822 max_operand_arity: 3usize,
4823 required_modifiers: &[".ue8m0x2", ".f32"],
4824 },
4825 InstructionSyntax {
4826 opcode: InstructionOpcode::Cvt,
4827 name: "cvt",
4828 syntax: "cvt.rn.bf16x2.ue8m0x2 d, a;",
4829 min_operand_arity: 2usize,
4830 max_operand_arity: 2usize,
4831 required_modifiers: &[".rn", ".bf16x2", ".ue8m0x2"],
4832 },
4833 InstructionSyntax {
4834 opcode: InstructionOpcode::Cvt,
4835 name: "cvt",
4836 syntax: "cvt.rn.satfinite{.relu}.f4x2type.f32 d, a, b;",
4837 min_operand_arity: 3usize,
4838 max_operand_arity: 3usize,
4839 required_modifiers: &[".rn", ".satfinite", ".f32"],
4840 },
4841 InstructionSyntax {
4842 opcode: InstructionOpcode::Cvt,
4843 name: "cvt",
4844 syntax: "cvt.rn.satfinite{.relu}.f4x2type.fp16x2type d, a;",
4845 min_operand_arity: 2usize,
4846 max_operand_arity: 2usize,
4847 required_modifiers: &[".rn", ".satfinite"],
4848 },
4849 InstructionSyntax {
4850 opcode: InstructionOpcode::Cvt,
4851 name: "cvt",
4852 syntax: "cvt.rn.satfinite{.relu}.f6x2type.f32 d, a, b;",
4853 min_operand_arity: 3usize,
4854 max_operand_arity: 3usize,
4855 required_modifiers: &[".rn", ".satfinite", ".f32"],
4856 },
4857 InstructionSyntax {
4858 opcode: InstructionOpcode::Cvt,
4859 name: "cvt",
4860 syntax: "cvt.rn.satfinite{.relu}.f6x2type.fp16x2type d, a;",
4861 min_operand_arity: 2usize,
4862 max_operand_arity: 2usize,
4863 required_modifiers: &[".rn", ".satfinite"],
4864 },
4865 InstructionSyntax {
4866 opcode: InstructionOpcode::Cvt,
4867 name: "cvt",
4868 syntax: "cvt.rn.satfinite{.relu}.f8x2type.f32 d, a, b;",
4869 min_operand_arity: 3usize,
4870 max_operand_arity: 3usize,
4871 required_modifiers: &[".rn", ".satfinite", ".f32"],
4872 },
4873 InstructionSyntax {
4874 opcode: InstructionOpcode::Cvt,
4875 name: "cvt",
4876 syntax: "cvt.rn.satfinite{.relu}.f8x2type.fp16x2 d, a;",
4877 min_operand_arity: 2usize,
4878 max_operand_arity: 2usize,
4879 required_modifiers: &[".rn", ".satfinite", ".fp16x2"],
4880 },
4881 InstructionSyntax {
4882 opcode: InstructionOpcode::Cvt,
4883 name: "cvt",
4884 syntax: "cvt.rn.satfinite{.relu}{.scaled::n2::ue8m0}.s2f6x2.bf16x2 d, a{, scale-factor};",
4885 min_operand_arity: 2usize,
4886 max_operand_arity: 3usize,
4887 required_modifiers: &[".rn", ".satfinite", ".s2f6x2", ".bf16x2"],
4888 },
4889 InstructionSyntax {
4890 opcode: InstructionOpcode::Cvt,
4891 name: "cvt",
4892 syntax: "cvt.rn.satfinite{.relu}{.scaled::n2::ue8m0}.s2f6x2.f32 d, a, b{, scale-factor};",
4893 min_operand_arity: 3usize,
4894 max_operand_arity: 4usize,
4895 required_modifiers: &[".rn", ".satfinite", ".s2f6x2", ".f32"],
4896 },
4897 InstructionSyntax {
4898 opcode: InstructionOpcode::Cvt,
4899 name: "cvt",
4900 syntax: "cvt.rna{.satfinite}.tf32.f32 d, a;",
4901 min_operand_arity: 2usize,
4902 max_operand_arity: 2usize,
4903 required_modifiers: &[".rna", ".tf32", ".f32"],
4904 },
4905 InstructionSyntax {
4906 opcode: InstructionOpcode::Cvt,
4907 name: "cvt",
4908 syntax: "cvt.rn{.relu}.f16x2.f4x2type d, a;",
4909 min_operand_arity: 2usize,
4910 max_operand_arity: 2usize,
4911 required_modifiers: &[".rn", ".f16x2"],
4912 },
4913 InstructionSyntax {
4914 opcode: InstructionOpcode::Cvt,
4915 name: "cvt",
4916 syntax: "cvt.rn{.relu}.f16x2.f6x2type d, a;",
4917 min_operand_arity: 2usize,
4918 max_operand_arity: 2usize,
4919 required_modifiers: &[".rn", ".f16x2"],
4920 },
4921 InstructionSyntax {
4922 opcode: InstructionOpcode::Cvt,
4923 name: "cvt",
4924 syntax: "cvt.rn{.relu}.f16x2.f8x2type d, a;",
4925 min_operand_arity: 2usize,
4926 max_operand_arity: 2usize,
4927 required_modifiers: &[".rn", ".f16x2"],
4928 },
4929 InstructionSyntax {
4930 opcode: InstructionOpcode::Cvt,
4931 name: "cvt",
4932 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f4x2type d, a{, scale-factor};",
4933 min_operand_arity: 2usize,
4934 max_operand_arity: 3usize,
4935 required_modifiers: &[".rn", ".bf16x2"],
4936 },
4937 InstructionSyntax {
4938 opcode: InstructionOpcode::Cvt,
4939 name: "cvt",
4940 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f6x2type d, a{, scale-factor};",
4941 min_operand_arity: 2usize,
4942 max_operand_arity: 3usize,
4943 required_modifiers: &[".rn", ".bf16x2"],
4944 },
4945 InstructionSyntax {
4946 opcode: InstructionOpcode::Cvt,
4947 name: "cvt",
4948 syntax: "cvt.rn{.relu}{.satfinite}{.scaled::n2::ue8m0}.bf16x2.f8x2type d, a{, scale-factor};",
4949 min_operand_arity: 2usize,
4950 max_operand_arity: 3usize,
4951 required_modifiers: &[".rn", ".bf16x2"],
4952 },
4953 InstructionSyntax {
4954 opcode: InstructionOpcode::Cvt,
4955 name: "cvt",
4956 syntax: "cvt.rn{.satfinite}{.relu}{.scaled::n2::ue8m0}.bf16x2.s2f6x2 d, a{, scale-factor};",
4957 min_operand_arity: 2usize,
4958 max_operand_arity: 3usize,
4959 required_modifiers: &[".rn", ".bf16x2", ".s2f6x2"],
4960 },
4961 InstructionSyntax {
4962 opcode: InstructionOpcode::Cvt,
4963 name: "cvt",
4964 syntax: "cvt.rs{.relu}.satfinite.f4x4type.f32 d, {a, b, e, f}, rbits;",
4965 min_operand_arity: 5usize,
4966 max_operand_arity: 6usize,
4967 required_modifiers: &[".rs", ".satfinite", ".f32"],
4968 },
4969 InstructionSyntax {
4970 opcode: InstructionOpcode::Cvt,
4971 name: "cvt",
4972 syntax: "cvt.rs{.relu}.satfinite.f6x4type.f32 d, {a, b, e, f}, rbits;",
4973 min_operand_arity: 5usize,
4974 max_operand_arity: 6usize,
4975 required_modifiers: &[".rs", ".satfinite", ".f32"],
4976 },
4977 InstructionSyntax {
4978 opcode: InstructionOpcode::Cvt,
4979 name: "cvt",
4980 syntax: "cvt.rs{.relu}.satfinite.f8x4type.f32 d, {a, b, e, f}, rbits;",
4981 min_operand_arity: 5usize,
4982 max_operand_arity: 6usize,
4983 required_modifiers: &[".rs", ".satfinite", ".f32"],
4984 },
4985 InstructionSyntax {
4986 opcode: InstructionOpcode::Cvt,
4987 name: "cvt",
4988 syntax: "cvt.rs{.relu}{.satfinite}.bf16x2.f32 d, a, b, rbits;",
4989 min_operand_arity: 4usize,
4990 max_operand_arity: 4usize,
4991 required_modifiers: &[".rs", ".bf16x2", ".f32"],
4992 },
4993 InstructionSyntax {
4994 opcode: InstructionOpcode::Cvt,
4995 name: "cvt",
4996 syntax: "cvt.rs{.relu}{.satfinite}.f16x2.f32 d, a, b, rbits;",
4997 min_operand_arity: 4usize,
4998 max_operand_arity: 4usize,
4999 required_modifiers: &[".rs", ".f16x2", ".f32"],
5000 },
5001 InstructionSyntax {
5002 opcode: InstructionOpcode::Cvt,
5003 name: "cvt",
5004 syntax: "cvt{.irnd}{.ftz}{.sat}.dtype.atype d, a; cvt{.frnd}{.ftz}{.sat}.dtype.atype d, a;",
5005 min_operand_arity: 2usize,
5006 max_operand_arity: 3usize,
5007 required_modifiers: &[],
5008 },
5009 ],
5010 "cvt.pack" => &[
5011 InstructionSyntax {
5012 opcode: InstructionOpcode::CvtPack,
5013 name: "cvt.pack",
5014 syntax: "cvt.pack.sat.convertType.abType d, a, b;",
5015 min_operand_arity: 3usize,
5016 max_operand_arity: 3usize,
5017 required_modifiers: &[".sat"],
5018 },
5019 InstructionSyntax {
5020 opcode: InstructionOpcode::CvtPack,
5021 name: "cvt.pack",
5022 syntax: "cvt.pack.sat.convertType.abType.cType d, a, b, c;",
5023 min_operand_arity: 4usize,
5024 max_operand_arity: 4usize,
5025 required_modifiers: &[".sat"],
5026 },
5027 ],
5028 "cvta" => &[
5029 InstructionSyntax {
5030 opcode: InstructionOpcode::Cvta,
5031 name: "cvta",
5032 syntax: "cvta.space.size p, a; cvta.space.size p, var; cvta.space.size p, var+imm;",
5033 min_operand_arity: 4usize,
5034 max_operand_arity: 4usize,
5035 required_modifiers: &[],
5036 },
5037 InstructionSyntax {
5038 opcode: InstructionOpcode::Cvta,
5039 name: "cvta",
5040 syntax: "cvta.to.space.size p, a;",
5041 min_operand_arity: 2usize,
5042 max_operand_arity: 2usize,
5043 required_modifiers: &[".to"],
5044 },
5045 ],
5046 "discard" => &[InstructionSyntax {
5047 opcode: InstructionOpcode::Discard,
5048 name: "discard",
5049 syntax: "discard{.global}.level [a], size;",
5050 min_operand_arity: 2usize,
5051 max_operand_arity: 2usize,
5052 required_modifiers: &[],
5053 }],
5054 "div" => &[
5055 InstructionSyntax {
5056 opcode: InstructionOpcode::Div,
5057 name: "div",
5058 syntax: "div.approx{.ftz}.f32 d, a, b; div.full{.ftz}.f32 d, a, b; div.rnd{.ftz}.f32 d, a, b; div.rnd.f64 d, a, b;",
5059 min_operand_arity: 7usize,
5060 max_operand_arity: 9usize,
5061 required_modifiers: &[".approx", ".f32"],
5062 },
5063 InstructionSyntax {
5064 opcode: InstructionOpcode::Div,
5065 name: "div",
5066 syntax: "div.type d, a, b;",
5067 min_operand_arity: 3usize,
5068 max_operand_arity: 3usize,
5069 required_modifiers: &[],
5070 },
5071 ],
5072 "dp2a" => &[InstructionSyntax {
5073 opcode: InstructionOpcode::Dp2A,
5074 name: "dp2a",
5075 syntax: "dp2a.mode.atype.btype d, a, b, c;",
5076 min_operand_arity: 4usize,
5077 max_operand_arity: 4usize,
5078 required_modifiers: &[],
5079 }],
5080 "dp4a" => &[InstructionSyntax {
5081 opcode: InstructionOpcode::Dp4A,
5082 name: "dp4a",
5083 syntax: "dp4a.atype.btype d, a, b, c;",
5084 min_operand_arity: 4usize,
5085 max_operand_arity: 4usize,
5086 required_modifiers: &[],
5087 }],
5088 "elect.sync" => &[InstructionSyntax {
5089 opcode: InstructionOpcode::ElectSync,
5090 name: "elect.sync",
5091 syntax: "elect.sync d|p, membermask;",
5092 min_operand_arity: 2usize,
5093 max_operand_arity: 2usize,
5094 required_modifiers: &[],
5095 }],
5096 "ex2" => &[
5097 InstructionSyntax {
5098 opcode: InstructionOpcode::Ex2,
5099 name: "ex2",
5100 syntax: "ex2.approx.atype d, a;",
5101 min_operand_arity: 2usize,
5102 max_operand_arity: 2usize,
5103 required_modifiers: &[".approx"],
5104 },
5105 InstructionSyntax {
5106 opcode: InstructionOpcode::Ex2,
5107 name: "ex2",
5108 syntax: "ex2.approx.ftz.btype d, a;",
5109 min_operand_arity: 2usize,
5110 max_operand_arity: 2usize,
5111 required_modifiers: &[".approx", ".ftz"],
5112 },
5113 InstructionSyntax {
5114 opcode: InstructionOpcode::Ex2,
5115 name: "ex2",
5116 syntax: "ex2.approx{.ftz}.f32 d, a;",
5117 min_operand_arity: 2usize,
5118 max_operand_arity: 2usize,
5119 required_modifiers: &[".approx", ".f32"],
5120 },
5121 ],
5122 "exit" => &[InstructionSyntax {
5123 opcode: InstructionOpcode::Exit,
5124 name: "exit",
5125 syntax: "exit;",
5126 min_operand_arity: 0usize,
5127 max_operand_arity: 0usize,
5128 required_modifiers: &[],
5129 }],
5130 "fabric.submit" => &[InstructionSyntax {
5131 opcode: InstructionOpcode::FabricSubmit,
5132 name: "fabric.submit",
5133 syntax: "fabric.submit{.submitop};",
5134 min_operand_arity: 0usize,
5135 max_operand_arity: 0usize,
5136 required_modifiers: &[],
5137 }],
5138 "fabric.try_get" => &[InstructionSyntax {
5139 opcode: InstructionOpcode::FabricTryGet,
5140 name: "fabric.try_get",
5141 syntax: "fabric.try_get.async.dst.completion_mechanism.sem.scope.b128 [dst], [srcLeId, srcDataOff], size, [bar];",
5142 min_operand_arity: 5usize,
5143 max_operand_arity: 5usize,
5144 required_modifiers: &[".async", ".b128"],
5145 }],
5146 "fabric.try_pullred" => &[
5147 InstructionSyntax {
5148 opcode: InstructionOpcode::FabricTryPullred,
5149 name: "fabric.try_pullred",
5150 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAdd.typeAdd.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
5151 min_operand_arity: 6usize,
5152 max_operand_arity: 6usize,
5153 required_modifiers: &[".async", ".multimem", ".sync"],
5154 },
5155 InstructionSyntax {
5156 opcode: InstructionOpcode::FabricTryPullred,
5157 name: "fabric.try_pullred",
5158 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAddAcc16.typeAddAcc16.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
5159 min_operand_arity: 6usize,
5160 max_operand_arity: 6usize,
5161 required_modifiers: &[".async", ".multimem", ".sync"],
5162 },
5163 InstructionSyntax {
5164 opcode: InstructionOpcode::FabricTryPullred,
5165 name: "fabric.try_pullred",
5166 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpAddAcc32.typeAddAcc32.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
5167 min_operand_arity: 6usize,
5168 max_operand_arity: 6usize,
5169 required_modifiers: &[".async", ".multimem", ".sync"],
5170 },
5171 InstructionSyntax {
5172 opcode: InstructionOpcode::FabricTryPullred,
5173 name: "fabric.try_pullred",
5174 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpBit.typeBit.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
5175 min_operand_arity: 6usize,
5176 max_operand_arity: 6usize,
5177 required_modifiers: &[".async", ".multimem", ".sync"],
5178 },
5179 InstructionSyntax {
5180 opcode: InstructionOpcode::FabricTryPullred,
5181 name: "fabric.try_pullred",
5182 syntax: "fabric.try_pullred.async.multimem.dst.completion_mechanism.sem.scope.redOpMinMax.typeMinMax.sync [dst], [srcLeId, srcDataOff], size, [bar], imm-membermask;",
5183 min_operand_arity: 6usize,
5184 max_operand_arity: 6usize,
5185 required_modifiers: &[".async", ".multimem", ".sync"],
5186 },
5187 ],
5188 "fabric.try_put" => &[
5189 InstructionSyntax {
5190 opcode: InstructionOpcode::FabricTryPut,
5191 name: "fabric.try_put",
5192 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism0.cp_mask.sem.scope.b128 [dstLeId, dstDataOff], [src], size, [bar], bytemask;",
5193 min_operand_arity: 6usize,
5194 max_operand_arity: 6usize,
5195 required_modifiers: &[".async", ".cp_mask", ".b128"],
5196 },
5197 InstructionSyntax {
5198 opcode: InstructionOpcode::FabricTryPut,
5199 name: "fabric.try_put",
5200 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism0.sem.scope.b128 [dstLeId, dstDataOff], [src], size, [bar];",
5201 min_operand_arity: 5usize,
5202 max_operand_arity: 5usize,
5203 required_modifiers: &[".async", ".b128"],
5204 },
5205 InstructionSyntax {
5206 opcode: InstructionOpcode::FabricTryPut,
5207 name: "fabric.try_put",
5208 syntax: "fabric.try_put.async{.multimem}.src.completion_mechanism1.sem.scope.b128 [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
5209 min_operand_arity: 6usize,
5210 max_operand_arity: 6usize,
5211 required_modifiers: &[".async", ".b128"],
5212 },
5213 ],
5214 "fabric.try_red" => &[
5215 InstructionSyntax {
5216 opcode: InstructionOpcode::FabricTryRed,
5217 name: "fabric.try_red",
5218 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpArith.typeArith [dstLeId, dstDataOff], [src], size, [bar];",
5219 min_operand_arity: 5usize,
5220 max_operand_arity: 5usize,
5221 required_modifiers: &[".async"],
5222 },
5223 InstructionSyntax {
5224 opcode: InstructionOpcode::FabricTryRed,
5225 name: "fabric.try_red",
5226 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpBit.typeBit [dstLeId, dstDataOff], [src], size, [bar];",
5227 min_operand_arity: 5usize,
5228 max_operand_arity: 5usize,
5229 required_modifiers: &[".async"],
5230 },
5231 InstructionSyntax {
5232 opcode: InstructionOpcode::FabricTryRed,
5233 name: "fabric.try_red",
5234 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism0.sem.scope.redOpMinMax.typeMinMax [dstLeId, dstDataOff], [src], size, [bar];",
5235 min_operand_arity: 5usize,
5236 max_operand_arity: 5usize,
5237 required_modifiers: &[".async"],
5238 },
5239 InstructionSyntax {
5240 opcode: InstructionOpcode::FabricTryRed,
5241 name: "fabric.try_red",
5242 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpAdd.typeAdd [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
5243 min_operand_arity: 6usize,
5244 max_operand_arity: 6usize,
5245 required_modifiers: &[".async"],
5246 },
5247 InstructionSyntax {
5248 opcode: InstructionOpcode::FabricTryRed,
5249 name: "fabric.try_red",
5250 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpBit.typeBit [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
5251 min_operand_arity: 6usize,
5252 max_operand_arity: 6usize,
5253 required_modifiers: &[".async"],
5254 },
5255 InstructionSyntax {
5256 opcode: InstructionOpcode::FabricTryRed,
5257 name: "fabric.try_red",
5258 syntax: "fabric.try_red.async{.multimem}.src.completion_mechanism1.sem.scope.redOpMinMax.typeMinMax [dstLeId, dstDataOff, dstCounterOff], [src], size, [bar];",
5259 min_operand_arity: 6usize,
5260 max_operand_arity: 6usize,
5261 required_modifiers: &[".async"],
5262 },
5263 ],
5264 "fabric.wait" => &[InstructionSyntax {
5265 opcode: InstructionOpcode::FabricWait,
5266 name: "fabric.wait",
5267 syntax: "fabric.wait.sync_restrict::reads;",
5268 min_operand_arity: 0usize,
5269 max_operand_arity: 0usize,
5270 required_modifiers: &[".sync_restrict::reads"],
5271 }],
5272 "fence" => &[
5273 InstructionSyntax {
5274 opcode: InstructionOpcode::Fence,
5275 name: "fence",
5276 syntax: "fence.acquire.sync_restrict::shared::cluster.cluster;",
5277 min_operand_arity: 0usize,
5278 max_operand_arity: 0usize,
5279 required_modifiers: &[".acquire", ".sync_restrict::shared::cluster", ".cluster"],
5280 },
5281 InstructionSyntax {
5282 opcode: InstructionOpcode::Fence,
5283 name: "fence",
5284 syntax: "fence.op_restrict.release.cluster;",
5285 min_operand_arity: 0usize,
5286 max_operand_arity: 0usize,
5287 required_modifiers: &[".release", ".cluster"],
5288 },
5289 InstructionSyntax {
5290 opcode: InstructionOpcode::Fence,
5291 name: "fence",
5292 syntax: "fence.proxy.async::generic.acquire.sync_restrict::shared::cluster.cluster;",
5293 min_operand_arity: 0usize,
5294 max_operand_arity: 0usize,
5295 required_modifiers: &[
5296 ".proxy",
5297 ".async::generic",
5298 ".acquire",
5299 ".sync_restrict::shared::cluster",
5300 ".cluster",
5301 ],
5302 },
5303 InstructionSyntax {
5304 opcode: InstructionOpcode::Fence,
5305 name: "fence",
5306 syntax: "fence.proxy.async::generic.release.sync_restrict::shared::cta.cluster;",
5307 min_operand_arity: 0usize,
5308 max_operand_arity: 0usize,
5309 required_modifiers: &[
5310 ".proxy",
5311 ".async::generic",
5312 ".release",
5313 ".sync_restrict::shared::cta",
5314 ".cluster",
5315 ],
5316 },
5317 InstructionSyntax {
5318 opcode: InstructionOpcode::Fence,
5319 name: "fence",
5320 syntax: "fence.proxy.proxykind;",
5321 min_operand_arity: 0usize,
5322 max_operand_arity: 0usize,
5323 required_modifiers: &[".proxy"],
5324 },
5325 InstructionSyntax {
5326 opcode: InstructionOpcode::Fence,
5327 name: "fence",
5328 syntax: "fence.proxy.to_proxykind::from_proxykind.acquire.scope [addr], size;",
5329 min_operand_arity: 2usize,
5330 max_operand_arity: 2usize,
5331 required_modifiers: &[".proxy", ".acquire"],
5332 },
5333 InstructionSyntax {
5334 opcode: InstructionOpcode::Fence,
5335 name: "fence",
5336 syntax: "fence.proxy.to_proxykind::from_proxykind.release.scope;",
5337 min_operand_arity: 0usize,
5338 max_operand_arity: 0usize,
5339 required_modifiers: &[".proxy", ".release"],
5340 },
5341 InstructionSyntax {
5342 opcode: InstructionOpcode::Fence,
5343 name: "fence",
5344 syntax: "fence.proxy.to_proxykind::from_proxykind_fabric.alias.sem_fabric.sys;",
5345 min_operand_arity: 0usize,
5346 max_operand_arity: 0usize,
5347 required_modifiers: &[".proxy", ".alias", ".sys"],
5348 },
5349 InstructionSyntax {
5350 opcode: InstructionOpcode::Fence,
5351 name: "fence",
5352 syntax: "fence.release.sync_restrict::shared::cta.cluster;",
5353 min_operand_arity: 0usize,
5354 max_operand_arity: 0usize,
5355 required_modifiers: &[".release", ".sync_restrict::shared::cta", ".cluster"],
5356 },
5357 InstructionSyntax {
5358 opcode: InstructionOpcode::Fence,
5359 name: "fence",
5360 syntax: "fence{.sem}.scope;",
5361 min_operand_arity: 0usize,
5362 max_operand_arity: 0usize,
5363 required_modifiers: &[],
5364 },
5365 ],
5366 "fma" => &[
5367 InstructionSyntax {
5368 opcode: InstructionOpcode::Fma,
5369 name: "fma",
5370 syntax: "fma.rnd.f64 d, a, b, c;",
5371 min_operand_arity: 4usize,
5372 max_operand_arity: 4usize,
5373 required_modifiers: &[".f64"],
5374 },
5375 InstructionSyntax {
5376 opcode: InstructionOpcode::Fma,
5377 name: "fma",
5378 syntax: "fma.rnd.oob.{relu}.type d, a, b, c;",
5379 min_operand_arity: 4usize,
5380 max_operand_arity: 4usize,
5381 required_modifiers: &[".oob", ".", ".type"],
5382 },
5383 InstructionSyntax {
5384 opcode: InstructionOpcode::Fma,
5385 name: "fma",
5386 syntax: "fma.rnd{.ftz}.f32x2 d, a, b, c;",
5387 min_operand_arity: 4usize,
5388 max_operand_arity: 4usize,
5389 required_modifiers: &[".f32x2"],
5390 },
5391 InstructionSyntax {
5392 opcode: InstructionOpcode::Fma,
5393 name: "fma",
5394 syntax: "fma.rnd{.ftz}.relu.f16 d, a, b, c;",
5395 min_operand_arity: 4usize,
5396 max_operand_arity: 4usize,
5397 required_modifiers: &[".relu", ".f16"],
5398 },
5399 InstructionSyntax {
5400 opcode: InstructionOpcode::Fma,
5401 name: "fma",
5402 syntax: "fma.rnd{.ftz}.relu.f16x2 d, a, b, c;",
5403 min_operand_arity: 4usize,
5404 max_operand_arity: 4usize,
5405 required_modifiers: &[".relu", ".f16x2"],
5406 },
5407 InstructionSyntax {
5408 opcode: InstructionOpcode::Fma,
5409 name: "fma",
5410 syntax: "fma.rnd{.ftz}{.sat}.f16 d, a, b, c;",
5411 min_operand_arity: 4usize,
5412 max_operand_arity: 4usize,
5413 required_modifiers: &[".f16"],
5414 },
5415 InstructionSyntax {
5416 opcode: InstructionOpcode::Fma,
5417 name: "fma",
5418 syntax: "fma.rnd{.ftz}{.sat}.f16x2 d, a, b, c;",
5419 min_operand_arity: 4usize,
5420 max_operand_arity: 4usize,
5421 required_modifiers: &[".f16x2"],
5422 },
5423 InstructionSyntax {
5424 opcode: InstructionOpcode::Fma,
5425 name: "fma",
5426 syntax: "fma.rnd{.ftz}{.sat}.f32 d, a, b, c;",
5427 min_operand_arity: 4usize,
5428 max_operand_arity: 4usize,
5429 required_modifiers: &[".f32"],
5430 },
5431 InstructionSyntax {
5432 opcode: InstructionOpcode::Fma,
5433 name: "fma",
5434 syntax: "fma.rnd{.relu}.bf16 d, a, b, c;",
5435 min_operand_arity: 4usize,
5436 max_operand_arity: 4usize,
5437 required_modifiers: &[".bf16"],
5438 },
5439 InstructionSyntax {
5440 opcode: InstructionOpcode::Fma,
5441 name: "fma",
5442 syntax: "fma.rnd{.relu}.bf16x2 d, a, b, c;",
5443 min_operand_arity: 4usize,
5444 max_operand_arity: 4usize,
5445 required_modifiers: &[".bf16x2"],
5446 },
5447 InstructionSyntax {
5448 opcode: InstructionOpcode::Fma,
5449 name: "fma",
5450 syntax: "fma.rnd{.sat}.f32.abtype d, a, b, c;",
5451 min_operand_arity: 4usize,
5452 max_operand_arity: 4usize,
5453 required_modifiers: &[".f32"],
5454 },
5455 ],
5456 "fns" => &[InstructionSyntax {
5457 opcode: InstructionOpcode::Fns,
5458 name: "fns",
5459 syntax: "fns.b32 d, mask, base, offset;",
5460 min_operand_arity: 4usize,
5461 max_operand_arity: 4usize,
5462 required_modifiers: &[".b32"],
5463 }],
5464 "getctarank" => &[
5465 InstructionSyntax {
5466 opcode: InstructionOpcode::GetCtaRank,
5467 name: "getctarank",
5468 syntax: "getctarank.shared::cluster.type d, a;",
5469 min_operand_arity: 2usize,
5470 max_operand_arity: 2usize,
5471 required_modifiers: &[".shared::cluster"],
5472 },
5473 InstructionSyntax {
5474 opcode: InstructionOpcode::GetCtaRank,
5475 name: "getctarank",
5476 syntax: "getctarank.shared::cluster.type d, var + imm;",
5477 min_operand_arity: 2usize,
5478 max_operand_arity: 2usize,
5479 required_modifiers: &[".shared::cluster"],
5480 },
5481 InstructionSyntax {
5482 opcode: InstructionOpcode::GetCtaRank,
5483 name: "getctarank",
5484 syntax: "getctarank.shared::cluster.type d, var;",
5485 min_operand_arity: 2usize,
5486 max_operand_arity: 2usize,
5487 required_modifiers: &[".shared::cluster"],
5488 },
5489 InstructionSyntax {
5490 opcode: InstructionOpcode::GetCtaRank,
5491 name: "getctarank",
5492 syntax: "getctarank.type d, a;",
5493 min_operand_arity: 2usize,
5494 max_operand_arity: 2usize,
5495 required_modifiers: &[],
5496 },
5497 InstructionSyntax {
5498 opcode: InstructionOpcode::GetCtaRank,
5499 name: "getctarank",
5500 syntax: "getctarank{.space}.type d, a;",
5501 min_operand_arity: 2usize,
5502 max_operand_arity: 2usize,
5503 required_modifiers: &[],
5504 },
5505 ],
5506 "griddepcontrol" => &[InstructionSyntax {
5507 opcode: InstructionOpcode::GridDepControl,
5508 name: "griddepcontrol",
5509 syntax: "griddepcontrol.action;",
5510 min_operand_arity: 0usize,
5511 max_operand_arity: 0usize,
5512 required_modifiers: &[],
5513 }],
5514 "isspacep" => &[InstructionSyntax {
5515 opcode: InstructionOpcode::IsSpaceP,
5516 name: "isspacep",
5517 syntax: "isspacep.space p, a;",
5518 min_operand_arity: 2usize,
5519 max_operand_arity: 2usize,
5520 required_modifiers: &[],
5521 }],
5522 "istypep" => &[InstructionSyntax {
5523 opcode: InstructionOpcode::IsTypeP,
5524 name: "istypep",
5525 syntax: "istypep.type p, a;",
5526 min_operand_arity: 2usize,
5527 max_operand_arity: 2usize,
5528 required_modifiers: &[],
5529 }],
5530 "ld" => &[
5531 InstructionSyntax {
5532 opcode: InstructionOpcode::Ld,
5533 name: "ld",
5534 syntax: "ld.acquire.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{, cache_policy};",
5535 min_operand_arity: 2usize,
5536 max_operand_arity: 3usize,
5537 required_modifiers: &[".acquire"],
5538 },
5539 InstructionSyntax {
5540 opcode: InstructionOpcode::Ld,
5541 name: "ld",
5542 syntax: "ld.mmio.sem.sys{.global}.type d, [a];",
5543 min_operand_arity: 2usize,
5544 max_operand_arity: 2usize,
5545 required_modifiers: &[".mmio", ".sys"],
5546 },
5547 InstructionSyntax {
5548 opcode: InstructionOpcode::Ld,
5549 name: "ld",
5550 syntax: "ld.relaxed.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{, cache_policy};",
5551 min_operand_arity: 2usize,
5552 max_operand_arity: 3usize,
5553 required_modifiers: &[".relaxed"],
5554 },
5555 InstructionSyntax {
5556 opcode: InstructionOpcode::Ld,
5557 name: "ld",
5558 syntax: "ld.volatile{.ss}{.level::prefetch_size}{.vec}.type d, [a];",
5559 min_operand_arity: 2usize,
5560 max_operand_arity: 2usize,
5561 required_modifiers: &[".volatile"],
5562 },
5563 InstructionSyntax {
5564 opcode: InstructionOpcode::Ld,
5565 name: "ld",
5566 syntax: "ld{.weak}{.ss}{.cop}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{.unified}{, cache_policy};",
5567 min_operand_arity: 2usize,
5568 max_operand_arity: 3usize,
5569 required_modifiers: &[],
5570 },
5571 InstructionSyntax {
5572 opcode: InstructionOpcode::Ld,
5573 name: "ld",
5574 syntax: "ld{.weak}{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}{.vec}.type d, [a]{.unified}{, cache_policy};",
5575 min_operand_arity: 2usize,
5576 max_operand_arity: 3usize,
5577 required_modifiers: &[],
5578 },
5579 ],
5580 "ld.global.nc" => &[
5581 InstructionSyntax {
5582 opcode: InstructionOpcode::LdGlobalNc,
5583 name: "ld.global.nc",
5584 syntax: "ld.global.nc{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}.type d, [a]{, cache_policy};",
5585 min_operand_arity: 2usize,
5586 max_operand_arity: 3usize,
5587 required_modifiers: &[],
5588 },
5589 InstructionSyntax {
5590 opcode: InstructionOpcode::LdGlobalNc,
5591 name: "ld.global.nc",
5592 syntax: "ld.global.nc{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.level::prefetch_size}.vec.type d, [a]{, cache_policy};",
5593 min_operand_arity: 2usize,
5594 max_operand_arity: 3usize,
5595 required_modifiers: &[],
5596 },
5597 ],
5598 "ldmatrix" => &[
5599 InstructionSyntax {
5600 opcode: InstructionOpcode::LdMatrix,
5601 name: "ldmatrix",
5602 syntax: "ldmatrix.sync.aligned.m16n16.num.trans{.ss}.dst_fmt.src_fmt r, [p];",
5603 min_operand_arity: 2usize,
5604 max_operand_arity: 2usize,
5605 required_modifiers: &[".sync", ".aligned", ".m16n16", ".trans"],
5606 },
5607 InstructionSyntax {
5608 opcode: InstructionOpcode::LdMatrix,
5609 name: "ldmatrix",
5610 syntax: "ldmatrix.sync.aligned.m8n16.num{.ss}.dst_fmt.src_fmt r, [p];",
5611 min_operand_arity: 2usize,
5612 max_operand_arity: 2usize,
5613 required_modifiers: &[".sync", ".aligned", ".m8n16"],
5614 },
5615 InstructionSyntax {
5616 opcode: InstructionOpcode::LdMatrix,
5617 name: "ldmatrix",
5618 syntax: "ldmatrix.sync.aligned.shape.num{.trans}{.ss}.type r, [p];",
5619 min_operand_arity: 2usize,
5620 max_operand_arity: 2usize,
5621 required_modifiers: &[".sync", ".aligned"],
5622 },
5623 ],
5624 "ldu" => &[InstructionSyntax {
5625 opcode: InstructionOpcode::Ldu,
5626 name: "ldu",
5627 syntax: "ldu{.ss}.type d, [a]; ldu{.ss}.vec.type d, [a];",
5628 min_operand_arity: 2usize,
5629 max_operand_arity: 3usize,
5630 required_modifiers: &[],
5631 }],
5632 "lg2" => &[InstructionSyntax {
5633 opcode: InstructionOpcode::Lg2,
5634 name: "lg2",
5635 syntax: "lg2.approx{.ftz}.f32 d, a;",
5636 min_operand_arity: 2usize,
5637 max_operand_arity: 2usize,
5638 required_modifiers: &[".approx", ".f32"],
5639 }],
5640 "lop3" => &[
5641 InstructionSyntax {
5642 opcode: InstructionOpcode::Lop3,
5643 name: "lop3",
5644 syntax: "lop3.BoolOp.b32 d|p, a, b, c, immLut, q;",
5645 min_operand_arity: 6usize,
5646 max_operand_arity: 6usize,
5647 required_modifiers: &[".b32"],
5648 },
5649 InstructionSyntax {
5650 opcode: InstructionOpcode::Lop3,
5651 name: "lop3",
5652 syntax: "lop3.b32 d, a, b, c, immLut;",
5653 min_operand_arity: 5usize,
5654 max_operand_arity: 5usize,
5655 required_modifiers: &[".b32"],
5656 },
5657 ],
5658 "mad" => &[
5659 InstructionSyntax {
5660 opcode: InstructionOpcode::Mad,
5661 name: "mad",
5662 syntax: "mad.hi.sat.s32 d, a, b, c;",
5663 min_operand_arity: 4usize,
5664 max_operand_arity: 4usize,
5665 required_modifiers: &[".hi", ".sat", ".s32"],
5666 },
5667 InstructionSyntax {
5668 opcode: InstructionOpcode::Mad,
5669 name: "mad",
5670 syntax: "mad.mode.type d, a, b, c;",
5671 min_operand_arity: 4usize,
5672 max_operand_arity: 4usize,
5673 required_modifiers: &[],
5674 },
5675 InstructionSyntax {
5676 opcode: InstructionOpcode::Mad,
5677 name: "mad",
5678 syntax: "mad{.ftz}{.sat}.f32 d, a, b, c; mad.rnd{.ftz}{.sat}.f32 d, a, b, c; mad.rnd.f64 d, a, b, c;",
5679 min_operand_arity: 9usize,
5680 max_operand_arity: 10usize,
5681 required_modifiers: &[".f32"],
5682 },
5683 ],
5684 "mad.cc" => &[],
5685 "mad24" => &[
5686 InstructionSyntax {
5687 opcode: InstructionOpcode::Mad24,
5688 name: "mad24",
5689 syntax: "mad24.hi.sat.s32 d, a, b, c;",
5690 min_operand_arity: 4usize,
5691 max_operand_arity: 4usize,
5692 required_modifiers: &[".hi", ".sat", ".s32"],
5693 },
5694 InstructionSyntax {
5695 opcode: InstructionOpcode::Mad24,
5696 name: "mad24",
5697 syntax: "mad24.mode.type d, a, b, c;",
5698 min_operand_arity: 4usize,
5699 max_operand_arity: 4usize,
5700 required_modifiers: &[],
5701 },
5702 ],
5703 "madc" => &[InstructionSyntax {
5704 opcode: InstructionOpcode::Madc,
5705 name: "madc",
5706 syntax: "madc{.hi,.lo}{.cc}.type d, a, b, c;",
5707 min_operand_arity: 4usize,
5708 max_operand_arity: 4usize,
5709 required_modifiers: &[],
5710 }],
5711 "mapa" => &[
5712 InstructionSyntax {
5713 opcode: InstructionOpcode::Mapa,
5714 name: "mapa",
5715 syntax: "mapa.shared::cluster.type d, a, b;",
5716 min_operand_arity: 3usize,
5717 max_operand_arity: 3usize,
5718 required_modifiers: &[".shared::cluster"],
5719 },
5720 InstructionSyntax {
5721 opcode: InstructionOpcode::Mapa,
5722 name: "mapa",
5723 syntax: "mapa.shared::cluster.type d, sh + imm, b;",
5724 min_operand_arity: 3usize,
5725 max_operand_arity: 3usize,
5726 required_modifiers: &[".shared::cluster"],
5727 },
5728 InstructionSyntax {
5729 opcode: InstructionOpcode::Mapa,
5730 name: "mapa",
5731 syntax: "mapa.shared::cluster.type d, sh, b;",
5732 min_operand_arity: 3usize,
5733 max_operand_arity: 3usize,
5734 required_modifiers: &[".shared::cluster"],
5735 },
5736 InstructionSyntax {
5737 opcode: InstructionOpcode::Mapa,
5738 name: "mapa",
5739 syntax: "mapa.type d, a, b;",
5740 min_operand_arity: 3usize,
5741 max_operand_arity: 3usize,
5742 required_modifiers: &[],
5743 },
5744 InstructionSyntax {
5745 opcode: InstructionOpcode::Mapa,
5746 name: "mapa",
5747 syntax: "mapa{.space}.type d, a, b;",
5748 min_operand_arity: 3usize,
5749 max_operand_arity: 3usize,
5750 required_modifiers: &[],
5751 },
5752 ],
5753 "match.sync" => &[],
5754 "max" => &[
5755 InstructionSyntax {
5756 opcode: InstructionOpcode::Max,
5757 name: "max",
5758 syntax: "max.f64 d, a, b;",
5759 min_operand_arity: 3usize,
5760 max_operand_arity: 3usize,
5761 required_modifiers: &[".f64"],
5762 },
5763 InstructionSyntax {
5764 opcode: InstructionOpcode::Max,
5765 name: "max",
5766 syntax: "max.type1 d, a, b;",
5767 min_operand_arity: 3usize,
5768 max_operand_arity: 3usize,
5769 required_modifiers: &[],
5770 },
5771 InstructionSyntax {
5772 opcode: InstructionOpcode::Max,
5773 name: "max",
5774 syntax: "max{.NaN}{.xorsign.abs}.bf16 d, a, b;",
5775 min_operand_arity: 3usize,
5776 max_operand_arity: 3usize,
5777 required_modifiers: &[".bf16"],
5778 },
5779 InstructionSyntax {
5780 opcode: InstructionOpcode::Max,
5781 name: "max",
5782 syntax: "max{.NaN}{.xorsign.abs}.bf16x2 d, a, b;",
5783 min_operand_arity: 3usize,
5784 max_operand_arity: 3usize,
5785 required_modifiers: &[".bf16x2"],
5786 },
5787 InstructionSyntax {
5788 opcode: InstructionOpcode::Max,
5789 name: "max",
5790 syntax: "max{.ftz}{.NaN}{.abs}.f32 d, a, b, c;",
5791 min_operand_arity: 4usize,
5792 max_operand_arity: 4usize,
5793 required_modifiers: &[".f32"],
5794 },
5795 InstructionSyntax {
5796 opcode: InstructionOpcode::Max,
5797 name: "max",
5798 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f16 d, a, b;",
5799 min_operand_arity: 3usize,
5800 max_operand_arity: 3usize,
5801 required_modifiers: &[".f16"],
5802 },
5803 InstructionSyntax {
5804 opcode: InstructionOpcode::Max,
5805 name: "max",
5806 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f16x2 d, a, b;",
5807 min_operand_arity: 3usize,
5808 max_operand_arity: 3usize,
5809 required_modifiers: &[".f16x2"],
5810 },
5811 InstructionSyntax {
5812 opcode: InstructionOpcode::Max,
5813 name: "max",
5814 syntax: "max{.ftz}{.NaN}{.xorsign.abs}.f32 d, a, b;",
5815 min_operand_arity: 3usize,
5816 max_operand_arity: 3usize,
5817 required_modifiers: &[".f32"],
5818 },
5819 InstructionSyntax {
5820 opcode: InstructionOpcode::Max,
5821 name: "max",
5822 syntax: "max{.relu}.type2 d, a, b;",
5823 min_operand_arity: 3usize,
5824 max_operand_arity: 3usize,
5825 required_modifiers: &[],
5826 },
5827 ],
5828 "mbarrier.arrive" => &[
5829 InstructionSyntax {
5830 opcode: InstructionOpcode::MbarrierArrive,
5831 name: "mbarrier.arrive",
5832 syntax: "mbarrier.arrive.expect_tx{.sem.scope}{.shared::cluster}.b64 _, [addr], txCount;",
5833 min_operand_arity: 3usize,
5834 max_operand_arity: 3usize,
5835 required_modifiers: &[".expect_tx", ".b64"],
5836 },
5837 InstructionSyntax {
5838 opcode: InstructionOpcode::MbarrierArrive,
5839 name: "mbarrier.arrive",
5840 syntax: "mbarrier.arrive.noComplete{.release.cta}{.shared{::cta}}.b64 state, [addr], count;",
5841 min_operand_arity: 3usize,
5842 max_operand_arity: 3usize,
5843 required_modifiers: &[".noComplete", ".b64"],
5844 },
5845 InstructionSyntax {
5846 opcode: InstructionOpcode::MbarrierArrive,
5847 name: "mbarrier.arrive",
5848 syntax: "mbarrier.arrive{.sem.scope}{.shared::cluster}.b64 _, [addr] {,count} mbarrier.arrive.expect_tx{.sem.scope}{.shared{::cta}}.b64 state, [addr], txCount;",
5849 min_operand_arity: 3usize,
5850 max_operand_arity: 5usize,
5851 required_modifiers: &[".b64"],
5852 },
5853 InstructionSyntax {
5854 opcode: InstructionOpcode::MbarrierArrive,
5855 name: "mbarrier.arrive",
5856 syntax: "mbarrier.arrive{.sem.scope}{.shared{::cta}}.b64 state, [addr]{, count};",
5857 min_operand_arity: 2usize,
5858 max_operand_arity: 3usize,
5859 required_modifiers: &[".b64"],
5860 },
5861 ],
5862 "mbarrier.arrive_drop" => &[
5863 InstructionSyntax {
5864 opcode: InstructionOpcode::MbarrierArriveDrop,
5865 name: "mbarrier.arrive_drop",
5866 syntax: "mbarrier.arrive_drop.expect_tx{.sem.scope}{.shared::cluster}.b64 _, [addr], tx_count;",
5867 min_operand_arity: 3usize,
5868 max_operand_arity: 3usize,
5869 required_modifiers: &[".expect_tx", ".b64"],
5870 },
5871 InstructionSyntax {
5872 opcode: InstructionOpcode::MbarrierArriveDrop,
5873 name: "mbarrier.arrive_drop",
5874 syntax: "mbarrier.arrive_drop.expect_tx{.sem.scope}{.shared{::cta}}.b64 state, [addr], tx_count;",
5875 min_operand_arity: 3usize,
5876 max_operand_arity: 3usize,
5877 required_modifiers: &[".expect_tx", ".b64"],
5878 },
5879 InstructionSyntax {
5880 opcode: InstructionOpcode::MbarrierArriveDrop,
5881 name: "mbarrier.arrive_drop",
5882 syntax: "mbarrier.arrive_drop.noComplete{.release.cta}{.shared{::cta}}.b64 state, [addr], count;",
5883 min_operand_arity: 3usize,
5884 max_operand_arity: 3usize,
5885 required_modifiers: &[".noComplete", ".b64"],
5886 },
5887 InstructionSyntax {
5888 opcode: InstructionOpcode::MbarrierArriveDrop,
5889 name: "mbarrier.arrive_drop",
5890 syntax: "mbarrier.arrive_drop{.sem.scope}{.shared::cluster}.b64 _, [addr] {, count};",
5891 min_operand_arity: 2usize,
5892 max_operand_arity: 3usize,
5893 required_modifiers: &[".b64"],
5894 },
5895 InstructionSyntax {
5896 opcode: InstructionOpcode::MbarrierArriveDrop,
5897 name: "mbarrier.arrive_drop",
5898 syntax: "mbarrier.arrive_drop{.sem.scope}{.shared{::cta}}.b64 state, [addr] {, count};",
5899 min_operand_arity: 2usize,
5900 max_operand_arity: 3usize,
5901 required_modifiers: &[".b64"],
5902 },
5903 ],
5904 "mbarrier.check_layout" => &[InstructionSyntax {
5905 opcode: InstructionOpcode::MbarrierCheckLayout,
5906 name: "mbarrier.check_layout",
5907 syntax: "mbarrier.check_layout.layout{.ss}.b64 p, [addr];",
5908 min_operand_arity: 2usize,
5909 max_operand_arity: 2usize,
5910 required_modifiers: &[".b64"],
5911 }],
5912 "mbarrier.complete_tx" => &[InstructionSyntax {
5913 opcode: InstructionOpcode::MbarrierCompleteTx,
5914 name: "mbarrier.complete_tx",
5915 syntax: "mbarrier.complete_tx{.sem.scope}{.space}.b64 [addr], txCount;",
5916 min_operand_arity: 2usize,
5917 max_operand_arity: 2usize,
5918 required_modifiers: &[".b64"],
5919 }],
5920 "mbarrier.expect_tx" => &[InstructionSyntax {
5921 opcode: InstructionOpcode::MbarrierExpectTx,
5922 name: "mbarrier.expect_tx",
5923 syntax: "mbarrier.expect_tx{.sem.scope}{.space}.b64 [addr], txCount;",
5924 min_operand_arity: 2usize,
5925 max_operand_arity: 2usize,
5926 required_modifiers: &[".b64"],
5927 }],
5928 "mbarrier.init" => &[InstructionSyntax {
5929 opcode: InstructionOpcode::MbarrierInit,
5930 name: "mbarrier.init",
5931 syntax: "mbarrier.init{.layout}{.shared{::cta}}.b64 [addr], count;",
5932 min_operand_arity: 2usize,
5933 max_operand_arity: 2usize,
5934 required_modifiers: &[".b64"],
5935 }],
5936 "mbarrier.inval" => &[InstructionSyntax {
5937 opcode: InstructionOpcode::MbarrierInval,
5938 name: "mbarrier.inval",
5939 syntax: "mbarrier.inval{.shared{::cta}}.b64 [addr];",
5940 min_operand_arity: 1usize,
5941 max_operand_arity: 1usize,
5942 required_modifiers: &[".b64"],
5943 }],
5944 "mbarrier.pending_count" => &[InstructionSyntax {
5945 opcode: InstructionOpcode::MbarrierPendingCount,
5946 name: "mbarrier.pending_count",
5947 syntax: "mbarrier.pending_count{.layout}.b64 count, state;",
5948 min_operand_arity: 2usize,
5949 max_operand_arity: 2usize,
5950 required_modifiers: &[".b64"],
5951 }],
5952 "mbarrier.test_wait" => &[
5953 InstructionSyntax {
5954 opcode: InstructionOpcode::MbarrierTestWait,
5955 name: "mbarrier.test_wait",
5956 syntax: "mbarrier.test_wait.parity.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], phaseParity;",
5957 min_operand_arity: 3usize,
5958 max_operand_arity: 4usize,
5959 required_modifiers: &[".parity", ".phase_type::primary", ".b64"],
5960 },
5961 InstructionSyntax {
5962 opcode: InstructionOpcode::MbarrierTestWait,
5963 name: "mbarrier.test_wait",
5964 syntax: "mbarrier.test_wait.parity{.phase_type}{.sem.scope}{.ss}.b64 waitComplete, [addr], phaseParity;",
5965 min_operand_arity: 3usize,
5966 max_operand_arity: 3usize,
5967 required_modifiers: &[".parity", ".b64"],
5968 },
5969 InstructionSyntax {
5970 opcode: InstructionOpcode::MbarrierTestWait,
5971 name: "mbarrier.test_wait",
5972 syntax: "mbarrier.test_wait.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], state;",
5973 min_operand_arity: 3usize,
5974 max_operand_arity: 4usize,
5975 required_modifiers: &[".phase_type::primary", ".b64"],
5976 },
5977 InstructionSyntax {
5978 opcode: InstructionOpcode::MbarrierTestWait,
5979 name: "mbarrier.test_wait",
5980 syntax: "mbarrier.test_wait{.phase_type::primary}{.sem.scope}{.ss}.b64 waitComplete, [addr], state;",
5981 min_operand_arity: 3usize,
5982 max_operand_arity: 3usize,
5983 required_modifiers: &[".b64"],
5984 },
5985 ],
5986 "mbarrier.try_wait" => &[
5987 InstructionSyntax {
5988 opcode: InstructionOpcode::MbarrierTryWait,
5989 name: "mbarrier.try_wait",
5990 syntax: "mbarrier.try_wait.parity.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], phaseParity {, timeHint};",
5991 min_operand_arity: 3usize,
5992 max_operand_arity: 5usize,
5993 required_modifiers: &[".parity", ".phase_type::primary", ".b64"],
5994 },
5995 InstructionSyntax {
5996 opcode: InstructionOpcode::MbarrierTryWait,
5997 name: "mbarrier.try_wait",
5998 syntax: "mbarrier.try_wait.parity{.phase_type}{.sem.scope}{.ss}.b64 waitComplete, [addr], phaseParity {, timeHint};",
5999 min_operand_arity: 3usize,
6000 max_operand_arity: 4usize,
6001 required_modifiers: &[".parity", ".b64"],
6002 },
6003 InstructionSyntax {
6004 opcode: InstructionOpcode::MbarrierTryWait,
6005 name: "mbarrier.try_wait",
6006 syntax: "mbarrier.try_wait.phase_type::primary{.sem}{.scope}{.ss}.b64 waitComplete|reportPredicate {, reportValue}, [addr], state {, timeHint};",
6007 min_operand_arity: 3usize,
6008 max_operand_arity: 5usize,
6009 required_modifiers: &[".phase_type::primary", ".b64"],
6010 },
6011 InstructionSyntax {
6012 opcode: InstructionOpcode::MbarrierTryWait,
6013 name: "mbarrier.try_wait",
6014 syntax: "mbarrier.try_wait{.phase_type::primary}{.sem.scope}{.ss}.b64 waitComplete, [addr], state {, timeHint};",
6015 min_operand_arity: 3usize,
6016 max_operand_arity: 4usize,
6017 required_modifiers: &[".b64"],
6018 },
6019 ],
6020 "membar" => &[
6021 InstructionSyntax {
6022 opcode: InstructionOpcode::Membar,
6023 name: "membar",
6024 syntax: "membar.level;",
6025 min_operand_arity: 0usize,
6026 max_operand_arity: 0usize,
6027 required_modifiers: &[],
6028 },
6029 InstructionSyntax {
6030 opcode: InstructionOpcode::Membar,
6031 name: "membar",
6032 syntax: "membar.proxy.proxykind;",
6033 min_operand_arity: 0usize,
6034 max_operand_arity: 0usize,
6035 required_modifiers: &[".proxy"],
6036 },
6037 ],
6038 "min" => &[
6039 InstructionSyntax {
6040 opcode: InstructionOpcode::Min,
6041 name: "min",
6042 syntax: "min.f64 d, a, b;",
6043 min_operand_arity: 3usize,
6044 max_operand_arity: 3usize,
6045 required_modifiers: &[".f64"],
6046 },
6047 InstructionSyntax {
6048 opcode: InstructionOpcode::Min,
6049 name: "min",
6050 syntax: "min.type1 d, a, b;",
6051 min_operand_arity: 3usize,
6052 max_operand_arity: 3usize,
6053 required_modifiers: &[],
6054 },
6055 InstructionSyntax {
6056 opcode: InstructionOpcode::Min,
6057 name: "min",
6058 syntax: "min{.NaN}{.xorsign.abs}.bf16 d, a, b;",
6059 min_operand_arity: 3usize,
6060 max_operand_arity: 3usize,
6061 required_modifiers: &[".bf16"],
6062 },
6063 InstructionSyntax {
6064 opcode: InstructionOpcode::Min,
6065 name: "min",
6066 syntax: "min{.NaN}{.xorsign.abs}.bf16x2 d, a, b;",
6067 min_operand_arity: 3usize,
6068 max_operand_arity: 3usize,
6069 required_modifiers: &[".bf16x2"],
6070 },
6071 InstructionSyntax {
6072 opcode: InstructionOpcode::Min,
6073 name: "min",
6074 syntax: "min{.ftz}{.NaN}{.abs}.f32 d, a, b, c;",
6075 min_operand_arity: 4usize,
6076 max_operand_arity: 4usize,
6077 required_modifiers: &[".f32"],
6078 },
6079 InstructionSyntax {
6080 opcode: InstructionOpcode::Min,
6081 name: "min",
6082 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f16 d, a, b;",
6083 min_operand_arity: 3usize,
6084 max_operand_arity: 3usize,
6085 required_modifiers: &[".f16"],
6086 },
6087 InstructionSyntax {
6088 opcode: InstructionOpcode::Min,
6089 name: "min",
6090 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f16x2 d, a, b;",
6091 min_operand_arity: 3usize,
6092 max_operand_arity: 3usize,
6093 required_modifiers: &[".f16x2"],
6094 },
6095 InstructionSyntax {
6096 opcode: InstructionOpcode::Min,
6097 name: "min",
6098 syntax: "min{.ftz}{.NaN}{.xorsign.abs}.f32 d, a, b;",
6099 min_operand_arity: 3usize,
6100 max_operand_arity: 3usize,
6101 required_modifiers: &[".f32"],
6102 },
6103 InstructionSyntax {
6104 opcode: InstructionOpcode::Min,
6105 name: "min",
6106 syntax: "min{.relu}.type2 d, a, b;",
6107 min_operand_arity: 3usize,
6108 max_operand_arity: 3usize,
6109 required_modifiers: &[],
6110 },
6111 ],
6112 "mma" => &[
6113 InstructionSyntax {
6114 opcode: InstructionOpcode::Mma,
6115 name: "mma",
6116 syntax: "mma.sync.aligned.m16n8k16.row.col.dtype.f16.f16.ctype d, a, b, c;",
6117 min_operand_arity: 4usize,
6118 max_operand_arity: 4usize,
6119 required_modifiers: &[
6120 ".sync",
6121 ".aligned",
6122 ".m16n8k16",
6123 ".row",
6124 ".col",
6125 ".f16",
6126 ".f16",
6127 ],
6128 },
6129 InstructionSyntax {
6130 opcode: InstructionOpcode::Mma,
6131 name: "mma",
6132 syntax: "mma.sync.aligned.m16n8k8.row.col.dtype.f16.f16.ctype d, a, b, c;",
6133 min_operand_arity: 4usize,
6134 max_operand_arity: 4usize,
6135 required_modifiers: &[
6136 ".sync", ".aligned", ".m16n8k8", ".row", ".col", ".f16", ".f16",
6137 ],
6138 },
6139 InstructionSyntax {
6140 opcode: InstructionOpcode::Mma,
6141 name: "mma",
6142 syntax: "mma.sync.aligned.m8n8k4.alayout.blayout.dtype.f16.f16.ctype d, a, b, c;",
6143 min_operand_arity: 4usize,
6144 max_operand_arity: 4usize,
6145 required_modifiers: &[".sync", ".aligned", ".m8n8k4", ".f16", ".f16"],
6146 },
6147 ],
6148 "mma.sp" => &[],
6149 "mma.sp::ordered_metadata" => &[],
6150 "mov" => &[
6151 InstructionSyntax {
6152 opcode: InstructionOpcode::Mov,
6153 name: "mov",
6154 syntax: "mov.type d, a;",
6155 min_operand_arity: 2usize,
6156 max_operand_arity: 2usize,
6157 required_modifiers: &[],
6158 },
6159 InstructionSyntax {
6160 opcode: InstructionOpcode::Mov,
6161 name: "mov",
6162 syntax: "mov.type d, avar; mov.type d, avar+imm; mov.u32 d, fname; mov.u64 d, fname; mov.u32 d, kernel; mov.u64 d, kernel;",
6163 min_operand_arity: 7usize,
6164 max_operand_arity: 7usize,
6165 required_modifiers: &[],
6166 },
6167 InstructionSyntax {
6168 opcode: InstructionOpcode::Mov,
6169 name: "mov",
6170 syntax: "mov.type d, sreg;",
6171 min_operand_arity: 2usize,
6172 max_operand_arity: 2usize,
6173 required_modifiers: &[],
6174 },
6175 ],
6176 "movmatrix" => &[InstructionSyntax {
6177 opcode: InstructionOpcode::MovMatrix,
6178 name: "movmatrix",
6179 syntax: "movmatrix.sync.aligned.shape.trans.type d, a;",
6180 min_operand_arity: 2usize,
6181 max_operand_arity: 2usize,
6182 required_modifiers: &[".sync", ".aligned", ".trans"],
6183 }],
6184 "mul" => &[
6185 InstructionSyntax {
6186 opcode: InstructionOpcode::Mul,
6187 name: "mul",
6188 syntax: "mul.mode.type d, a, b;",
6189 min_operand_arity: 3usize,
6190 max_operand_arity: 3usize,
6191 required_modifiers: &[],
6192 },
6193 InstructionSyntax {
6194 opcode: InstructionOpcode::Mul,
6195 name: "mul",
6196 syntax: "mul{.rnd}.bf16 d, a, b;",
6197 min_operand_arity: 3usize,
6198 max_operand_arity: 3usize,
6199 required_modifiers: &[".bf16"],
6200 },
6201 InstructionSyntax {
6202 opcode: InstructionOpcode::Mul,
6203 name: "mul",
6204 syntax: "mul{.rnd}.bf16x2 d, a, b;",
6205 min_operand_arity: 3usize,
6206 max_operand_arity: 3usize,
6207 required_modifiers: &[".bf16x2"],
6208 },
6209 InstructionSyntax {
6210 opcode: InstructionOpcode::Mul,
6211 name: "mul",
6212 syntax: "mul{.rnd}.f64 d, a, b;",
6213 min_operand_arity: 3usize,
6214 max_operand_arity: 3usize,
6215 required_modifiers: &[".f64"],
6216 },
6217 InstructionSyntax {
6218 opcode: InstructionOpcode::Mul,
6219 name: "mul",
6220 syntax: "mul{.rnd}{.ftz}.f32x2 d, a, b;",
6221 min_operand_arity: 3usize,
6222 max_operand_arity: 3usize,
6223 required_modifiers: &[".f32x2"],
6224 },
6225 InstructionSyntax {
6226 opcode: InstructionOpcode::Mul,
6227 name: "mul",
6228 syntax: "mul{.rnd}{.ftz}{.sat}.f16 d, a, b;",
6229 min_operand_arity: 3usize,
6230 max_operand_arity: 3usize,
6231 required_modifiers: &[".f16"],
6232 },
6233 InstructionSyntax {
6234 opcode: InstructionOpcode::Mul,
6235 name: "mul",
6236 syntax: "mul{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
6237 min_operand_arity: 3usize,
6238 max_operand_arity: 3usize,
6239 required_modifiers: &[".f16x2"],
6240 },
6241 InstructionSyntax {
6242 opcode: InstructionOpcode::Mul,
6243 name: "mul",
6244 syntax: "mul{.rnd}{.ftz}{.sat}.f32 d, a, b;",
6245 min_operand_arity: 3usize,
6246 max_operand_arity: 3usize,
6247 required_modifiers: &[".f32"],
6248 },
6249 ],
6250 "mul24" => &[InstructionSyntax {
6251 opcode: InstructionOpcode::Mul24,
6252 name: "mul24",
6253 syntax: "mul24.mode.type d, a, b;",
6254 min_operand_arity: 3usize,
6255 max_operand_arity: 3usize,
6256 required_modifiers: &[],
6257 }],
6258 "multimem.ld_reduce" => &[
6259 InstructionSyntax {
6260 opcode: InstructionOpcode::MultimemLdReduce,
6261 name: "multimem.ld_reduce",
6262 syntax: "multimem.ld_reduce.weak{.ss}.op.type d, [a];",
6263 min_operand_arity: 2usize,
6264 max_operand_arity: 2usize,
6265 required_modifiers: &[".weak"],
6266 },
6267 InstructionSyntax {
6268 opcode: InstructionOpcode::MultimemLdReduce,
6269 name: "multimem.ld_reduce",
6270 syntax: "multimem.ld_reduce.weak{.ss}.op{.acc_prec}{.vec}.type d, [a];",
6271 min_operand_arity: 2usize,
6272 max_operand_arity: 2usize,
6273 required_modifiers: &[".weak"],
6274 },
6275 InstructionSyntax {
6276 opcode: InstructionOpcode::MultimemLdReduce,
6277 name: "multimem.ld_reduce",
6278 syntax: "multimem.ld_reduce{.ldsem}{.scope}{.ss}.op.type d, [a];",
6279 min_operand_arity: 2usize,
6280 max_operand_arity: 2usize,
6281 required_modifiers: &[],
6282 },
6283 InstructionSyntax {
6284 opcode: InstructionOpcode::MultimemLdReduce,
6285 name: "multimem.ld_reduce",
6286 syntax: "multimem.ld_reduce{.ldsem}{.scope}{.ss}.op{.acc_prec}{.vec}.type d, [a];",
6287 min_operand_arity: 2usize,
6288 max_operand_arity: 2usize,
6289 required_modifiers: &[],
6290 },
6291 ],
6292 "multimem.red" => &[
6293 InstructionSyntax {
6294 opcode: InstructionOpcode::MultimemRed,
6295 name: "multimem.red",
6296 syntax: "multimem.red{.redsem}{.scope}{.ss}.op.type [a], b;",
6297 min_operand_arity: 2usize,
6298 max_operand_arity: 2usize,
6299 required_modifiers: &[],
6300 },
6301 InstructionSyntax {
6302 opcode: InstructionOpcode::MultimemRed,
6303 name: "multimem.red",
6304 syntax: "multimem.red{.redsem}{.scope}{.ss}.redop{.vec}.redtype [a], b;",
6305 min_operand_arity: 2usize,
6306 max_operand_arity: 2usize,
6307 required_modifiers: &[],
6308 },
6309 ],
6310 "multimem.red.async" => &[InstructionSyntax {
6311 opcode: InstructionOpcode::MultimemRedAsync,
6312 name: "multimem.red.async",
6313 syntax: "multimem.red.async.sem.scope{.ss}.op.type [a], b;",
6314 min_operand_arity: 2usize,
6315 max_operand_arity: 2usize,
6316 required_modifiers: &[],
6317 }],
6318 "multimem.st" => &[
6319 InstructionSyntax {
6320 opcode: InstructionOpcode::MultimemSt,
6321 name: "multimem.st",
6322 syntax: "multimem.st.weak{.ss}.type [a], b;",
6323 min_operand_arity: 2usize,
6324 max_operand_arity: 2usize,
6325 required_modifiers: &[".weak"],
6326 },
6327 InstructionSyntax {
6328 opcode: InstructionOpcode::MultimemSt,
6329 name: "multimem.st",
6330 syntax: "multimem.st.weak{.ss}{.vec}.type [a], b;",
6331 min_operand_arity: 2usize,
6332 max_operand_arity: 2usize,
6333 required_modifiers: &[".weak"],
6334 },
6335 InstructionSyntax {
6336 opcode: InstructionOpcode::MultimemSt,
6337 name: "multimem.st",
6338 syntax: "multimem.st{.stsem}{.scope}{.ss}.type [a], b;",
6339 min_operand_arity: 2usize,
6340 max_operand_arity: 2usize,
6341 required_modifiers: &[],
6342 },
6343 InstructionSyntax {
6344 opcode: InstructionOpcode::MultimemSt,
6345 name: "multimem.st",
6346 syntax: "multimem.st{.stsem}{.scope}{.ss}{.vec}.type [a], b;",
6347 min_operand_arity: 2usize,
6348 max_operand_arity: 2usize,
6349 required_modifiers: &[],
6350 },
6351 ],
6352 "multimem.st.async" => &[InstructionSyntax {
6353 opcode: InstructionOpcode::MultimemStAsync,
6354 name: "multimem.st.async",
6355 syntax: "multimem.st.async.sem.scope{.ss}.type [a], b;",
6356 min_operand_arity: 2usize,
6357 max_operand_arity: 2usize,
6358 required_modifiers: &[],
6359 }],
6360 "nanosleep" => &[InstructionSyntax {
6361 opcode: InstructionOpcode::Nanosleep,
6362 name: "nanosleep",
6363 syntax: "nanosleep.u32 t;",
6364 min_operand_arity: 1usize,
6365 max_operand_arity: 1usize,
6366 required_modifiers: &[".u32"],
6367 }],
6368 "neg" => &[
6369 InstructionSyntax {
6370 opcode: InstructionOpcode::Neg,
6371 name: "neg",
6372 syntax: "neg.bf16 d, a;",
6373 min_operand_arity: 2usize,
6374 max_operand_arity: 2usize,
6375 required_modifiers: &[".bf16"],
6376 },
6377 InstructionSyntax {
6378 opcode: InstructionOpcode::Neg,
6379 name: "neg",
6380 syntax: "neg.bf16x2 d, a;",
6381 min_operand_arity: 2usize,
6382 max_operand_arity: 2usize,
6383 required_modifiers: &[".bf16x2"],
6384 },
6385 InstructionSyntax {
6386 opcode: InstructionOpcode::Neg,
6387 name: "neg",
6388 syntax: "neg.f64 d, a;",
6389 min_operand_arity: 2usize,
6390 max_operand_arity: 2usize,
6391 required_modifiers: &[".f64"],
6392 },
6393 InstructionSyntax {
6394 opcode: InstructionOpcode::Neg,
6395 name: "neg",
6396 syntax: "neg.type d, a;",
6397 min_operand_arity: 2usize,
6398 max_operand_arity: 2usize,
6399 required_modifiers: &[],
6400 },
6401 InstructionSyntax {
6402 opcode: InstructionOpcode::Neg,
6403 name: "neg",
6404 syntax: "neg{.ftz}.f16 d, a;",
6405 min_operand_arity: 2usize,
6406 max_operand_arity: 2usize,
6407 required_modifiers: &[".f16"],
6408 },
6409 InstructionSyntax {
6410 opcode: InstructionOpcode::Neg,
6411 name: "neg",
6412 syntax: "neg{.ftz}.f16x2 d, a;",
6413 min_operand_arity: 2usize,
6414 max_operand_arity: 2usize,
6415 required_modifiers: &[".f16x2"],
6416 },
6417 InstructionSyntax {
6418 opcode: InstructionOpcode::Neg,
6419 name: "neg",
6420 syntax: "neg{.ftz}.f32 d, a;",
6421 min_operand_arity: 2usize,
6422 max_operand_arity: 2usize,
6423 required_modifiers: &[".f32"],
6424 },
6425 ],
6426 "not" => &[InstructionSyntax {
6427 opcode: InstructionOpcode::Not,
6428 name: "not",
6429 syntax: "not.type d, a;",
6430 min_operand_arity: 2usize,
6431 max_operand_arity: 2usize,
6432 required_modifiers: &[],
6433 }],
6434 "or" => &[InstructionSyntax {
6435 opcode: InstructionOpcode::Or,
6436 name: "or",
6437 syntax: "or.type d, a, b;",
6438 min_operand_arity: 3usize,
6439 max_operand_arity: 3usize,
6440 required_modifiers: &[],
6441 }],
6442 "pmevent" => &[InstructionSyntax {
6443 opcode: InstructionOpcode::PmEvent,
6444 name: "pmevent",
6445 syntax: "pmevent a; pmevent.mask a;",
6446 min_operand_arity: 1usize,
6447 max_operand_arity: 1usize,
6448 required_modifiers: &[],
6449 }],
6450 "popc" => &[InstructionSyntax {
6451 opcode: InstructionOpcode::Popc,
6452 name: "popc",
6453 syntax: "popc.type d, a;",
6454 min_operand_arity: 2usize,
6455 max_operand_arity: 2usize,
6456 required_modifiers: &[],
6457 }],
6458 "prefetch" => &[
6459 InstructionSyntax {
6460 opcode: InstructionOpcode::Prefetch,
6461 name: "prefetch",
6462 syntax: "prefetch{.space}.level [a]; prefetch.global.level::eviction_priority [a];",
6463 min_operand_arity: 1usize,
6464 max_operand_arity: 1usize,
6465 required_modifiers: &[],
6466 },
6467 InstructionSyntax {
6468 opcode: InstructionOpcode::Prefetch,
6469 name: "prefetch",
6470 syntax: "prefetch{.tensormap_space}.tensormap [a];",
6471 min_operand_arity: 1usize,
6472 max_operand_arity: 1usize,
6473 required_modifiers: &[".tensormap"],
6474 },
6475 ],
6476 "prefetchu" => &[InstructionSyntax {
6477 opcode: InstructionOpcode::Prefetchu,
6478 name: "prefetchu",
6479 syntax: "prefetchu.L1 [a];",
6480 min_operand_arity: 1usize,
6481 max_operand_arity: 1usize,
6482 required_modifiers: &[".L1"],
6483 }],
6484 "prmt" => &[InstructionSyntax {
6485 opcode: InstructionOpcode::Prmt,
6486 name: "prmt",
6487 syntax: "prmt.b32{.mode} d, a, b, c;",
6488 min_operand_arity: 4usize,
6489 max_operand_arity: 4usize,
6490 required_modifiers: &[".b32"],
6491 }],
6492 "rcp" => &[InstructionSyntax {
6493 opcode: InstructionOpcode::Rcp,
6494 name: "rcp",
6495 syntax: "rcp.approx{.ftz}.f32 d, a; rcp.rnd{.ftz}.f32 d, a; rcp.rnd.f64 d, a;",
6496 min_operand_arity: 3usize,
6497 max_operand_arity: 4usize,
6498 required_modifiers: &[".approx", ".f32"],
6499 }],
6500 "rcp.approx.ftz.f64" => &[InstructionSyntax {
6501 opcode: InstructionOpcode::RcpApproxFtzF64,
6502 name: "rcp.approx.ftz.f64",
6503 syntax: "rcp.approx.ftz.f64 d, a;",
6504 min_operand_arity: 2usize,
6505 max_operand_arity: 2usize,
6506 required_modifiers: &[],
6507 }],
6508 "red" => &[
6509 InstructionSyntax {
6510 opcode: InstructionOpcode::Red,
6511 name: "red",
6512 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16 [a], b {, cache_policy};",
6513 min_operand_arity: 2usize,
6514 max_operand_arity: 3usize,
6515 required_modifiers: &[".add", ".noftz", ".bf16"],
6516 },
6517 InstructionSyntax {
6518 opcode: InstructionOpcode::Red,
6519 name: "red",
6520 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.bf16x2 [a], b {, cache_policy};",
6521 min_operand_arity: 2usize,
6522 max_operand_arity: 3usize,
6523 required_modifiers: &[".add", ".noftz", ".bf16x2"],
6524 },
6525 InstructionSyntax {
6526 opcode: InstructionOpcode::Red,
6527 name: "red",
6528 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16 [a], b{, cache_policy};",
6529 min_operand_arity: 2usize,
6530 max_operand_arity: 3usize,
6531 required_modifiers: &[".add", ".noftz", ".f16"],
6532 },
6533 InstructionSyntax {
6534 opcode: InstructionOpcode::Red,
6535 name: "red",
6536 syntax: "red{.sem}{.scope}{.space}.add.noftz{.level::cache_hint}.f16x2 [a], b{, cache_policy};",
6537 min_operand_arity: 2usize,
6538 max_operand_arity: 3usize,
6539 required_modifiers: &[".add", ".noftz", ".f16x2"],
6540 },
6541 InstructionSyntax {
6542 opcode: InstructionOpcode::Red,
6543 name: "red",
6544 syntax: "red{.sem}{.scope}{.space}.op{.level::cache_hint}.type [a], b{, cache_policy};",
6545 min_operand_arity: 2usize,
6546 max_operand_arity: 3usize,
6547 required_modifiers: &[],
6548 },
6549 ],
6550 "red.async" => &[
6551 InstructionSyntax {
6552 opcode: InstructionOpcode::RedAsync,
6553 name: "red.async",
6554 syntax: "red.async.sem.scope{.ss}.completion_mechanism.add.type [a], b, [mbar];",
6555 min_operand_arity: 3usize,
6556 max_operand_arity: 3usize,
6557 required_modifiers: &[".add"],
6558 },
6559 InstructionSyntax {
6560 opcode: InstructionOpcode::RedAsync,
6561 name: "red.async",
6562 syntax: "red.async.sem.scope{.ss}.completion_mechanism.op.type [a], b, [mbar];",
6563 min_operand_arity: 3usize,
6564 max_operand_arity: 3usize,
6565 required_modifiers: &[],
6566 },
6567 InstructionSyntax {
6568 opcode: InstructionOpcode::RedAsync,
6569 name: "red.async",
6570 syntax: "red.async{.mmio}.sem.scope{.ss}.add.type [a], b;",
6571 min_operand_arity: 2usize,
6572 max_operand_arity: 2usize,
6573 required_modifiers: &[".add"],
6574 },
6575 ],
6576 "redux.sync" => &[
6577 InstructionSyntax {
6578 opcode: InstructionOpcode::ReduxSync,
6579 name: "redux.sync",
6580 syntax: "redux.sync.op.b32 dst, src, membermask;",
6581 min_operand_arity: 3usize,
6582 max_operand_arity: 3usize,
6583 required_modifiers: &[".b32"],
6584 },
6585 InstructionSyntax {
6586 opcode: InstructionOpcode::ReduxSync,
6587 name: "redux.sync",
6588 syntax: "redux.sync.op.type dst, src, membermask;",
6589 min_operand_arity: 3usize,
6590 max_operand_arity: 3usize,
6591 required_modifiers: &[],
6592 },
6593 InstructionSyntax {
6594 opcode: InstructionOpcode::ReduxSync,
6595 name: "redux.sync",
6596 syntax: "redux.sync.op{.abs.}{.NaN}.f32 dst, src, membermask;",
6597 min_operand_arity: 3usize,
6598 max_operand_arity: 3usize,
6599 required_modifiers: &[".f32"],
6600 },
6601 ],
6602 "rem" => &[InstructionSyntax {
6603 opcode: InstructionOpcode::Rem,
6604 name: "rem",
6605 syntax: "rem.type d, a, b;",
6606 min_operand_arity: 3usize,
6607 max_operand_arity: 3usize,
6608 required_modifiers: &[],
6609 }],
6610 "ret" => &[InstructionSyntax {
6611 opcode: InstructionOpcode::Ret,
6612 name: "ret",
6613 syntax: "ret{.uni};",
6614 min_operand_arity: 0usize,
6615 max_operand_arity: 0usize,
6616 required_modifiers: &[],
6617 }],
6618 "rsqrt" => &[
6619 InstructionSyntax {
6620 opcode: InstructionOpcode::Rsqrt,
6621 name: "rsqrt",
6622 syntax: "rsqrt.approx.f64 d, a;",
6623 min_operand_arity: 2usize,
6624 max_operand_arity: 2usize,
6625 required_modifiers: &[".approx", ".f64"],
6626 },
6627 InstructionSyntax {
6628 opcode: InstructionOpcode::Rsqrt,
6629 name: "rsqrt",
6630 syntax: "rsqrt.approx{.ftz}.f32 d, a;",
6631 min_operand_arity: 2usize,
6632 max_operand_arity: 2usize,
6633 required_modifiers: &[".approx", ".f32"],
6634 },
6635 ],
6636 "rsqrt.approx.ftz.f64" => &[InstructionSyntax {
6637 opcode: InstructionOpcode::RsqrtApproxFtzF64,
6638 name: "rsqrt.approx.ftz.f64",
6639 syntax: "rsqrt.approx.ftz.f64 d, a;",
6640 min_operand_arity: 2usize,
6641 max_operand_arity: 2usize,
6642 required_modifiers: &[],
6643 }],
6644 "sad" => &[InstructionSyntax {
6645 opcode: InstructionOpcode::Sad,
6646 name: "sad",
6647 syntax: "sad.type d, a, b, c;",
6648 min_operand_arity: 4usize,
6649 max_operand_arity: 4usize,
6650 required_modifiers: &[],
6651 }],
6652 "selp" => &[InstructionSyntax {
6653 opcode: InstructionOpcode::Selp,
6654 name: "selp",
6655 syntax: "selp.type d, a, b, c;",
6656 min_operand_arity: 4usize,
6657 max_operand_arity: 4usize,
6658 required_modifiers: &[],
6659 }],
6660 "set" => &[
6661 InstructionSyntax {
6662 opcode: InstructionOpcode::Set,
6663 name: "set",
6664 syntax: "set.CmpOp.BoolOp.bf16.stype d, a, b, {!}c;",
6665 min_operand_arity: 3usize,
6666 max_operand_arity: 4usize,
6667 required_modifiers: &[".bf16"],
6668 },
6669 InstructionSyntax {
6670 opcode: InstructionOpcode::Set,
6671 name: "set",
6672 syntax: "set.CmpOp.BoolOp.dtype.bf16 d, a, b, {!}c;",
6673 min_operand_arity: 3usize,
6674 max_operand_arity: 4usize,
6675 required_modifiers: &[".bf16"],
6676 },
6677 InstructionSyntax {
6678 opcode: InstructionOpcode::Set,
6679 name: "set",
6680 syntax: "set.CmpOp.BoolOp.dtype.bf16x2 d, a, b, {!}c;",
6681 min_operand_arity: 3usize,
6682 max_operand_arity: 4usize,
6683 required_modifiers: &[".bf16x2"],
6684 },
6685 InstructionSyntax {
6686 opcode: InstructionOpcode::Set,
6687 name: "set",
6688 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.f16 d, a, b, {!}c;",
6689 min_operand_arity: 3usize,
6690 max_operand_arity: 4usize,
6691 required_modifiers: &[".f16"],
6692 },
6693 InstructionSyntax {
6694 opcode: InstructionOpcode::Set,
6695 name: "set",
6696 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.f16x2 d, a, b, {!}c;",
6697 min_operand_arity: 3usize,
6698 max_operand_arity: 4usize,
6699 required_modifiers: &[".f16x2"],
6700 },
6701 InstructionSyntax {
6702 opcode: InstructionOpcode::Set,
6703 name: "set",
6704 syntax: "set.CmpOp.BoolOp{.ftz}.dtype.stype d, a, b, {!}c;",
6705 min_operand_arity: 3usize,
6706 max_operand_arity: 4usize,
6707 required_modifiers: &[],
6708 },
6709 InstructionSyntax {
6710 opcode: InstructionOpcode::Set,
6711 name: "set",
6712 syntax: "set.CmpOp.BoolOp{.ftz}.f16.stype d, a, b, {!}c;",
6713 min_operand_arity: 3usize,
6714 max_operand_arity: 4usize,
6715 required_modifiers: &[".f16"],
6716 },
6717 InstructionSyntax {
6718 opcode: InstructionOpcode::Set,
6719 name: "set",
6720 syntax: "set.CmpOp.bf16.stype d, a, b;",
6721 min_operand_arity: 3usize,
6722 max_operand_arity: 3usize,
6723 required_modifiers: &[".bf16"],
6724 },
6725 InstructionSyntax {
6726 opcode: InstructionOpcode::Set,
6727 name: "set",
6728 syntax: "set.CmpOp.dtype.bf16 d, a, b;",
6729 min_operand_arity: 3usize,
6730 max_operand_arity: 3usize,
6731 required_modifiers: &[".bf16"],
6732 },
6733 InstructionSyntax {
6734 opcode: InstructionOpcode::Set,
6735 name: "set",
6736 syntax: "set.CmpOp.dtype.bf16x2 d, a, b;",
6737 min_operand_arity: 3usize,
6738 max_operand_arity: 3usize,
6739 required_modifiers: &[".bf16x2"],
6740 },
6741 InstructionSyntax {
6742 opcode: InstructionOpcode::Set,
6743 name: "set",
6744 syntax: "set.CmpOp{.ftz}.dtype.f16 d, a, b;",
6745 min_operand_arity: 3usize,
6746 max_operand_arity: 3usize,
6747 required_modifiers: &[".f16"],
6748 },
6749 InstructionSyntax {
6750 opcode: InstructionOpcode::Set,
6751 name: "set",
6752 syntax: "set.CmpOp{.ftz}.dtype.f16x2 d, a, b;",
6753 min_operand_arity: 3usize,
6754 max_operand_arity: 3usize,
6755 required_modifiers: &[".f16x2"],
6756 },
6757 InstructionSyntax {
6758 opcode: InstructionOpcode::Set,
6759 name: "set",
6760 syntax: "set.CmpOp{.ftz}.dtype.stype d, a, b;",
6761 min_operand_arity: 3usize,
6762 max_operand_arity: 3usize,
6763 required_modifiers: &[],
6764 },
6765 InstructionSyntax {
6766 opcode: InstructionOpcode::Set,
6767 name: "set",
6768 syntax: "set.CmpOp{.ftz}.f16.stype d, a, b;",
6769 min_operand_arity: 3usize,
6770 max_operand_arity: 3usize,
6771 required_modifiers: &[".f16"],
6772 },
6773 ],
6774 "setmaxnreg" => &[InstructionSyntax {
6775 opcode: InstructionOpcode::SetMaxNReg,
6776 name: "setmaxnreg",
6777 syntax: "setmaxnreg.action.sync.aligned.u32 imm-reg-count;",
6778 min_operand_arity: 1usize,
6779 max_operand_arity: 1usize,
6780 required_modifiers: &[".sync", ".aligned", ".u32"],
6781 }],
6782 "setp" => &[
6783 InstructionSyntax {
6784 opcode: InstructionOpcode::Setp,
6785 name: "setp",
6786 syntax: "setp.CmpOp.BoolOp.bf16 p, a, b, {!}c;",
6787 min_operand_arity: 3usize,
6788 max_operand_arity: 4usize,
6789 required_modifiers: &[".bf16"],
6790 },
6791 InstructionSyntax {
6792 opcode: InstructionOpcode::Setp,
6793 name: "setp",
6794 syntax: "setp.CmpOp.BoolOp.bf16x2 p|q, a, b, {!}c;",
6795 min_operand_arity: 3usize,
6796 max_operand_arity: 4usize,
6797 required_modifiers: &[".bf16x2"],
6798 },
6799 InstructionSyntax {
6800 opcode: InstructionOpcode::Setp,
6801 name: "setp",
6802 syntax: "setp.CmpOp.BoolOp{.ftz}.f16 p, a, b, {!}c;",
6803 min_operand_arity: 3usize,
6804 max_operand_arity: 4usize,
6805 required_modifiers: &[".f16"],
6806 },
6807 InstructionSyntax {
6808 opcode: InstructionOpcode::Setp,
6809 name: "setp",
6810 syntax: "setp.CmpOp.BoolOp{.ftz}.f16x2 p|q, a, b, {!}c;",
6811 min_operand_arity: 3usize,
6812 max_operand_arity: 4usize,
6813 required_modifiers: &[".f16x2"],
6814 },
6815 InstructionSyntax {
6816 opcode: InstructionOpcode::Setp,
6817 name: "setp",
6818 syntax: "setp.CmpOp.BoolOp{.ftz}.type p[|q], a, b, {!}c;",
6819 min_operand_arity: 3usize,
6820 max_operand_arity: 4usize,
6821 required_modifiers: &[],
6822 },
6823 InstructionSyntax {
6824 opcode: InstructionOpcode::Setp,
6825 name: "setp",
6826 syntax: "setp.CmpOp.bf16 p, a, b;",
6827 min_operand_arity: 3usize,
6828 max_operand_arity: 3usize,
6829 required_modifiers: &[".bf16"],
6830 },
6831 InstructionSyntax {
6832 opcode: InstructionOpcode::Setp,
6833 name: "setp",
6834 syntax: "setp.CmpOp.bf16x2 p|q, a, b;",
6835 min_operand_arity: 3usize,
6836 max_operand_arity: 3usize,
6837 required_modifiers: &[".bf16x2"],
6838 },
6839 InstructionSyntax {
6840 opcode: InstructionOpcode::Setp,
6841 name: "setp",
6842 syntax: "setp.CmpOp{.ftz}.f16 p, a, b;",
6843 min_operand_arity: 3usize,
6844 max_operand_arity: 3usize,
6845 required_modifiers: &[".f16"],
6846 },
6847 InstructionSyntax {
6848 opcode: InstructionOpcode::Setp,
6849 name: "setp",
6850 syntax: "setp.CmpOp{.ftz}.f16x2 p|q, a, b;",
6851 min_operand_arity: 3usize,
6852 max_operand_arity: 3usize,
6853 required_modifiers: &[".f16x2"],
6854 },
6855 InstructionSyntax {
6856 opcode: InstructionOpcode::Setp,
6857 name: "setp",
6858 syntax: "setp.CmpOp{.ftz}.type p[|q], a, b;",
6859 min_operand_arity: 3usize,
6860 max_operand_arity: 3usize,
6861 required_modifiers: &[],
6862 },
6863 ],
6864 "shf" => &[InstructionSyntax {
6865 opcode: InstructionOpcode::Shf,
6866 name: "shf",
6867 syntax: "shf.l.mode.b32 d, a, b, c; shf.r.mode.b32 d, a, b, c;",
6868 min_operand_arity: 7usize,
6869 max_operand_arity: 7usize,
6870 required_modifiers: &[".l", ".b32"],
6871 }],
6872 "shfl" => &[InstructionSyntax {
6873 opcode: InstructionOpcode::Shfl,
6874 name: "shfl",
6875 syntax: "shfl.mode.b32 d[|p], a, b, c;",
6876 min_operand_arity: 4usize,
6877 max_operand_arity: 4usize,
6878 required_modifiers: &[".b32"],
6879 }],
6880 "shfl.sync" => &[InstructionSyntax {
6881 opcode: InstructionOpcode::ShflSync,
6882 name: "shfl.sync",
6883 syntax: "shfl.sync.mode.b32 d[|p], a, b, c, membermask;",
6884 min_operand_arity: 5usize,
6885 max_operand_arity: 5usize,
6886 required_modifiers: &[".b32"],
6887 }],
6888 "shl" => &[InstructionSyntax {
6889 opcode: InstructionOpcode::Shl,
6890 name: "shl",
6891 syntax: "shl.type d, a, b;",
6892 min_operand_arity: 3usize,
6893 max_operand_arity: 3usize,
6894 required_modifiers: &[],
6895 }],
6896 "shr" => &[InstructionSyntax {
6897 opcode: InstructionOpcode::Shr,
6898 name: "shr",
6899 syntax: "shr.type d, a, b;",
6900 min_operand_arity: 3usize,
6901 max_operand_arity: 3usize,
6902 required_modifiers: &[],
6903 }],
6904 "sin" => &[InstructionSyntax {
6905 opcode: InstructionOpcode::Sin,
6906 name: "sin",
6907 syntax: "sin.approx{.ftz}.f32 d, a;",
6908 min_operand_arity: 2usize,
6909 max_operand_arity: 2usize,
6910 required_modifiers: &[".approx", ".f32"],
6911 }],
6912 "slct" => &[
6913 InstructionSyntax {
6914 opcode: InstructionOpcode::Slct,
6915 name: "slct",
6916 syntax: "slct.dtype.s32 d, a, b, c;",
6917 min_operand_arity: 4usize,
6918 max_operand_arity: 4usize,
6919 required_modifiers: &[".s32"],
6920 },
6921 InstructionSyntax {
6922 opcode: InstructionOpcode::Slct,
6923 name: "slct",
6924 syntax: "slct{.ftz}.dtype.f32 d, a, b, c;",
6925 min_operand_arity: 4usize,
6926 max_operand_arity: 4usize,
6927 required_modifiers: &[".f32"],
6928 },
6929 ],
6930 "sqrt" => &[InstructionSyntax {
6931 opcode: InstructionOpcode::Sqrt,
6932 name: "sqrt",
6933 syntax: "sqrt.approx{.ftz}.f32 d, a; sqrt.rnd{.ftz}.f32 d, a; sqrt.rnd.f64 d, a;",
6934 min_operand_arity: 3usize,
6935 max_operand_arity: 4usize,
6936 required_modifiers: &[".approx", ".f32"],
6937 }],
6938 "st" => &[
6939 InstructionSyntax {
6940 opcode: InstructionOpcode::St,
6941 name: "st",
6942 syntax: "st.mmio.sem.sys{.global}.type [a], b;",
6943 min_operand_arity: 2usize,
6944 max_operand_arity: 2usize,
6945 required_modifiers: &[".mmio", ".sys"],
6946 },
6947 InstructionSyntax {
6948 opcode: InstructionOpcode::St,
6949 name: "st",
6950 syntax: "st.relaxed.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
6951 min_operand_arity: 2usize,
6952 max_operand_arity: 3usize,
6953 required_modifiers: &[".relaxed"],
6954 },
6955 InstructionSyntax {
6956 opcode: InstructionOpcode::St,
6957 name: "st",
6958 syntax: "st.release.scope{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
6959 min_operand_arity: 2usize,
6960 max_operand_arity: 3usize,
6961 required_modifiers: &[".release"],
6962 },
6963 InstructionSyntax {
6964 opcode: InstructionOpcode::St,
6965 name: "st",
6966 syntax: "st.volatile{.ss}{.vec}.type [a], b;",
6967 min_operand_arity: 2usize,
6968 max_operand_arity: 2usize,
6969 required_modifiers: &[".volatile"],
6970 },
6971 InstructionSyntax {
6972 opcode: InstructionOpcode::St,
6973 name: "st",
6974 syntax: "st{.weak}{.ss}{.cop}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
6975 min_operand_arity: 2usize,
6976 max_operand_arity: 3usize,
6977 required_modifiers: &[],
6978 },
6979 InstructionSyntax {
6980 opcode: InstructionOpcode::St,
6981 name: "st",
6982 syntax: "st{.weak}{.ss}{.level1::eviction_priority}{.level2::eviction_priority}{.level::cache_hint}{.vec}.type [a], b{, cache_policy};",
6983 min_operand_arity: 2usize,
6984 max_operand_arity: 3usize,
6985 required_modifiers: &[],
6986 },
6987 ],
6988 "st.async" => &[
6989 InstructionSyntax {
6990 opcode: InstructionOpcode::StAsync,
6991 name: "st.async",
6992 syntax: "st.async{.mmio}.sem.scope{.ss}.type [a], b;",
6993 min_operand_arity: 2usize,
6994 max_operand_arity: 2usize,
6995 required_modifiers: &[],
6996 },
6997 InstructionSyntax {
6998 opcode: InstructionOpcode::StAsync,
6999 name: "st.async",
7000 syntax: "st.async{.weak}{.ss}.completion_mechanism{.vec}.type [a], b, [mbar];",
7001 min_operand_arity: 3usize,
7002 max_operand_arity: 3usize,
7003 required_modifiers: &[],
7004 },
7005 ],
7006 "st.bulk" => &[InstructionSyntax {
7007 opcode: InstructionOpcode::StBulk,
7008 name: "st.bulk",
7009 syntax: "st.bulk{.weak}{.shared::cta} [a], size, initval;",
7010 min_operand_arity: 3usize,
7011 max_operand_arity: 3usize,
7012 required_modifiers: &[],
7013 }],
7014 "stackrestore" => &[InstructionSyntax {
7015 opcode: InstructionOpcode::StackRestore,
7016 name: "stackrestore",
7017 syntax: "stackrestore.type a;",
7018 min_operand_arity: 1usize,
7019 max_operand_arity: 1usize,
7020 required_modifiers: &[],
7021 }],
7022 "stacksave" => &[InstructionSyntax {
7023 opcode: InstructionOpcode::StackSave,
7024 name: "stacksave",
7025 syntax: "stacksave.type d;",
7026 min_operand_arity: 1usize,
7027 max_operand_arity: 1usize,
7028 required_modifiers: &[],
7029 }],
7030 "stmatrix" => &[InstructionSyntax {
7031 opcode: InstructionOpcode::StMatrix,
7032 name: "stmatrix",
7033 syntax: "stmatrix.sync.aligned.shape.num{.trans}{.ss}.type [p], r;",
7034 min_operand_arity: 2usize,
7035 max_operand_arity: 2usize,
7036 required_modifiers: &[".sync", ".aligned"],
7037 }],
7038 "sub" => &[
7039 InstructionSyntax {
7040 opcode: InstructionOpcode::Sub,
7041 name: "sub",
7042 syntax: "sub.type1 d, a, b;",
7043 min_operand_arity: 3usize,
7044 max_operand_arity: 3usize,
7045 required_modifiers: &[],
7046 },
7047 InstructionSyntax {
7048 opcode: InstructionOpcode::Sub,
7049 name: "sub",
7050 syntax: "sub{.rnd}.bf16 d, a, b;",
7051 min_operand_arity: 3usize,
7052 max_operand_arity: 3usize,
7053 required_modifiers: &[".bf16"],
7054 },
7055 InstructionSyntax {
7056 opcode: InstructionOpcode::Sub,
7057 name: "sub",
7058 syntax: "sub{.rnd}.bf16x2 d, a, b;",
7059 min_operand_arity: 3usize,
7060 max_operand_arity: 3usize,
7061 required_modifiers: &[".bf16x2"],
7062 },
7063 InstructionSyntax {
7064 opcode: InstructionOpcode::Sub,
7065 name: "sub",
7066 syntax: "sub{.rnd}.f64 d, a, b;",
7067 min_operand_arity: 3usize,
7068 max_operand_arity: 3usize,
7069 required_modifiers: &[".f64"],
7070 },
7071 InstructionSyntax {
7072 opcode: InstructionOpcode::Sub,
7073 name: "sub",
7074 syntax: "sub{.rnd}{.ftz}.f32x2 d, a, b;",
7075 min_operand_arity: 3usize,
7076 max_operand_arity: 3usize,
7077 required_modifiers: &[".f32x2"],
7078 },
7079 InstructionSyntax {
7080 opcode: InstructionOpcode::Sub,
7081 name: "sub",
7082 syntax: "sub{.rnd}{.ftz}{.sat}.f16 d, a, b;",
7083 min_operand_arity: 3usize,
7084 max_operand_arity: 3usize,
7085 required_modifiers: &[".f16"],
7086 },
7087 InstructionSyntax {
7088 opcode: InstructionOpcode::Sub,
7089 name: "sub",
7090 syntax: "sub{.rnd}{.ftz}{.sat}.f16x2 d, a, b;",
7091 min_operand_arity: 3usize,
7092 max_operand_arity: 3usize,
7093 required_modifiers: &[".f16x2"],
7094 },
7095 InstructionSyntax {
7096 opcode: InstructionOpcode::Sub,
7097 name: "sub",
7098 syntax: "sub{.rnd}{.ftz}{.sat}.f32 d, a, b;",
7099 min_operand_arity: 3usize,
7100 max_operand_arity: 3usize,
7101 required_modifiers: &[".f32"],
7102 },
7103 InstructionSyntax {
7104 opcode: InstructionOpcode::Sub,
7105 name: "sub",
7106 syntax: "sub{.rnd}{.sat}.f32.atype d, a, c;",
7107 min_operand_arity: 3usize,
7108 max_operand_arity: 3usize,
7109 required_modifiers: &[".f32"],
7110 },
7111 InstructionSyntax {
7112 opcode: InstructionOpcode::Sub,
7113 name: "sub",
7114 syntax: "sub{.sat}.type2 d, a, b;",
7115 min_operand_arity: 3usize,
7116 max_operand_arity: 3usize,
7117 required_modifiers: &[],
7118 },
7119 ],
7120 "sub.cc" => &[InstructionSyntax {
7121 opcode: InstructionOpcode::SubCc,
7122 name: "sub.cc",
7123 syntax: "sub.cc.type d, a, b;",
7124 min_operand_arity: 3usize,
7125 max_operand_arity: 3usize,
7126 required_modifiers: &[],
7127 }],
7128 "subc" => &[InstructionSyntax {
7129 opcode: InstructionOpcode::Subc,
7130 name: "subc",
7131 syntax: "subc{.cc}.type d, a, b;",
7132 min_operand_arity: 3usize,
7133 max_operand_arity: 3usize,
7134 required_modifiers: &[],
7135 }],
7136 "suld" => &[InstructionSyntax {
7137 opcode: InstructionOpcode::Suld,
7138 name: "suld",
7139 syntax: "suld.b.geom{.cop}.vec.dtype.clamp d, [a, b];",
7140 min_operand_arity: 3usize,
7141 max_operand_arity: 3usize,
7142 required_modifiers: &[".b"],
7143 }],
7144 "suq" => &[InstructionSyntax {
7145 opcode: InstructionOpcode::Suq,
7146 name: "suq",
7147 syntax: "suq.query.b32 d, [a];",
7148 min_operand_arity: 2usize,
7149 max_operand_arity: 2usize,
7150 required_modifiers: &[".b32"],
7151 }],
7152 "sured" => &[InstructionSyntax {
7153 opcode: InstructionOpcode::Sured,
7154 name: "sured",
7155 syntax: "sured.b.op.geom.ctype.clamp [a,b],c; sured.p.op.geom.ctype.clamp [a,b],c;",
7156 min_operand_arity: 5usize,
7157 max_operand_arity: 5usize,
7158 required_modifiers: &[".b"],
7159 }],
7160 "sust" => &[
7161 InstructionSyntax {
7162 opcode: InstructionOpcode::Sust,
7163 name: "sust",
7164 syntax: "sust.b.{1d,2d,3d}{.cop}.vec.ctype.clamp [a, b], c; sust.p.{1d,2d,3d}.vec.b32.clamp [a, b], c;",
7165 min_operand_arity: 6usize,
7166 max_operand_arity: 7usize,
7167 required_modifiers: &[".b", "."],
7168 },
7169 InstructionSyntax {
7170 opcode: InstructionOpcode::Sust,
7171 name: "sust",
7172 syntax: "sust.b.{a1d,a2d}{.cop}.vec.ctype.clamp [a, b], c;",
7173 min_operand_arity: 3usize,
7174 max_operand_arity: 3usize,
7175 required_modifiers: &[".b", "."],
7176 },
7177 ],
7178 "szext" => &[InstructionSyntax {
7179 opcode: InstructionOpcode::Szext,
7180 name: "szext",
7181 syntax: "szext.mode.type d, a, b;",
7182 min_operand_arity: 3usize,
7183 max_operand_arity: 3usize,
7184 required_modifiers: &[],
7185 }],
7186 "tanh" => &[
7187 InstructionSyntax {
7188 opcode: InstructionOpcode::Tanh,
7189 name: "tanh",
7190 syntax: "tanh.approx.f32 d, a;",
7191 min_operand_arity: 2usize,
7192 max_operand_arity: 2usize,
7193 required_modifiers: &[".approx", ".f32"],
7194 },
7195 InstructionSyntax {
7196 opcode: InstructionOpcode::Tanh,
7197 name: "tanh",
7198 syntax: "tanh.approx.type d, a;",
7199 min_operand_arity: 2usize,
7200 max_operand_arity: 2usize,
7201 required_modifiers: &[".approx"],
7202 },
7203 ],
7204 "tcgen05.alloc" => &[InstructionSyntax {
7205 opcode: InstructionOpcode::Tcgen05Alloc,
7206 name: "tcgen05.alloc",
7207 syntax: "tcgen05.alloc.cta_group.sync.aligned{.shared::cta}.b32 [dst], nCols;",
7208 min_operand_arity: 2usize,
7209 max_operand_arity: 2usize,
7210 required_modifiers: &[".sync", ".aligned", ".b32"],
7211 }],
7212 "tcgen05.commit" => &[InstructionSyntax {
7213 opcode: InstructionOpcode::Tcgen05Commit,
7214 name: "tcgen05.commit",
7215 syntax: "tcgen05.commit.cta_group.completion_mechanism{.shared::cluster}{.multicast}.b64 [mbar] {, ctaMask};",
7216 min_operand_arity: 1usize,
7217 max_operand_arity: 2usize,
7218 required_modifiers: &[".b64"],
7219 }],
7220 "tcgen05.cp" => &[InstructionSyntax {
7221 opcode: InstructionOpcode::Tcgen05Cp,
7222 name: "tcgen05.cp",
7223 syntax: "tcgen05.cp.cta_group.shape{.multicast}{.dst_fmt.src_fmt} [taddr], s-desc;",
7224 min_operand_arity: 2usize,
7225 max_operand_arity: 2usize,
7226 required_modifiers: &[],
7227 }],
7228 "tcgen05.dealloc" => &[InstructionSyntax {
7229 opcode: InstructionOpcode::Tcgen05Dealloc,
7230 name: "tcgen05.dealloc",
7231 syntax: "tcgen05.dealloc.cta_group.sync.aligned.b32 taddr, nCols;",
7232 min_operand_arity: 2usize,
7233 max_operand_arity: 2usize,
7234 required_modifiers: &[".sync", ".aligned", ".b32"],
7235 }],
7236 "tcgen05.fence" => &[],
7237 "tcgen05.ld" => &[
7238 InstructionSyntax {
7239 opcode: InstructionOpcode::Tcgen05Ld,
7240 name: "tcgen05.ld",
7241 syntax: "tcgen05.ld.red.sync.aligned.shape3.num.redOp.type r, redval, [taddr];",
7242 min_operand_arity: 3usize,
7243 max_operand_arity: 3usize,
7244 required_modifiers: &[".red", ".sync", ".aligned"],
7245 },
7246 InstructionSyntax {
7247 opcode: InstructionOpcode::Tcgen05Ld,
7248 name: "tcgen05.ld",
7249 syntax: "tcgen05.ld.red.sync.aligned.shape3.num.redOp{.abs}{.NaN}.f32 r, redval, [taddr];",
7250 min_operand_arity: 3usize,
7251 max_operand_arity: 3usize,
7252 required_modifiers: &[".red", ".sync", ".aligned", ".f32"],
7253 },
7254 InstructionSyntax {
7255 opcode: InstructionOpcode::Tcgen05Ld,
7256 name: "tcgen05.ld",
7257 syntax: "tcgen05.ld.red.sync.aligned.shape4.num.redOp.type r, redval, [taddr], immHalfSplitoff;",
7258 min_operand_arity: 4usize,
7259 max_operand_arity: 4usize,
7260 required_modifiers: &[".red", ".sync", ".aligned"],
7261 },
7262 InstructionSyntax {
7263 opcode: InstructionOpcode::Tcgen05Ld,
7264 name: "tcgen05.ld",
7265 syntax: "tcgen05.ld.red.sync.aligned.shape4.num.redOp{.abs}{.NaN}.f32 r, redval, [taddr], immHalfSplitoff;",
7266 min_operand_arity: 4usize,
7267 max_operand_arity: 4usize,
7268 required_modifiers: &[".red", ".sync", ".aligned", ".f32"],
7269 },
7270 InstructionSyntax {
7271 opcode: InstructionOpcode::Tcgen05Ld,
7272 name: "tcgen05.ld",
7273 syntax: "tcgen05.ld.sync.aligned.shape1.num{.pack}.b32 r, [taddr];",
7274 min_operand_arity: 2usize,
7275 max_operand_arity: 2usize,
7276 required_modifiers: &[".sync", ".aligned", ".b32"],
7277 },
7278 InstructionSyntax {
7279 opcode: InstructionOpcode::Tcgen05Ld,
7280 name: "tcgen05.ld",
7281 syntax: "tcgen05.ld.sync.aligned.shape2.num{.pack}.b32 r, [taddr], immHalfSplitoff;",
7282 min_operand_arity: 3usize,
7283 max_operand_arity: 3usize,
7284 required_modifiers: &[".sync", ".aligned", ".b32"],
7285 },
7286 ],
7287 "tcgen05.relinquish_alloc_permit" => &[InstructionSyntax {
7288 opcode: InstructionOpcode::Tcgen05RelinquishAllocPermit,
7289 name: "tcgen05.relinquish_alloc_permit",
7290 syntax: "tcgen05.relinquish_alloc_permit.cta_group.sync.aligned;",
7291 min_operand_arity: 0usize,
7292 max_operand_arity: 0usize,
7293 required_modifiers: &[".sync", ".aligned"],
7294 }],
7295 "tcgen05.shift" => &[InstructionSyntax {
7296 opcode: InstructionOpcode::Tcgen05Shift,
7297 name: "tcgen05.shift",
7298 syntax: "tcgen05.shift.cta_group.down [taddr];",
7299 min_operand_arity: 1usize,
7300 max_operand_arity: 1usize,
7301 required_modifiers: &[".down"],
7302 }],
7303 "tcgen05.st" => &[
7304 InstructionSyntax {
7305 opcode: InstructionOpcode::Tcgen05St,
7306 name: "tcgen05.st",
7307 syntax: "tcgen05.st.sync.aligned.shape1.num{.unpack}.b32 [taddr], r;",
7308 min_operand_arity: 2usize,
7309 max_operand_arity: 2usize,
7310 required_modifiers: &[".sync", ".aligned", ".b32"],
7311 },
7312 InstructionSyntax {
7313 opcode: InstructionOpcode::Tcgen05St,
7314 name: "tcgen05.st",
7315 syntax: "tcgen05.st.sync.aligned.shape2.num{.unpack}.b32 [taddr], immHalfSplitoff, r;",
7316 min_operand_arity: 3usize,
7317 max_operand_arity: 3usize,
7318 required_modifiers: &[".sync", ".aligned", ".b32"],
7319 },
7320 ],
7321 "tcgen05.wait" => &[],
7322 "tensormap.cp_fenceproxy" => &[InstructionSyntax {
7323 opcode: InstructionOpcode::TensorMapCpFenceProxy,
7324 name: "tensormap.cp_fenceproxy",
7325 syntax: "tensormap.cp_fenceproxy.cp_qualifiers.fence_qualifiers.sync.aligned [dst], [src], size;",
7326 min_operand_arity: 3usize,
7327 max_operand_arity: 3usize,
7328 required_modifiers: &[".sync", ".aligned"],
7329 }],
7330 "tensormap.replace" => &[
7331 InstructionSyntax {
7332 opcode: InstructionOpcode::TensormapReplace,
7333 name: "tensormap.replace",
7334 syntax: "tensormap.replace.mode.field1{.ss}.b1024.type [addr], new_val;",
7335 min_operand_arity: 2usize,
7336 max_operand_arity: 2usize,
7337 required_modifiers: &[".b1024"],
7338 },
7339 InstructionSyntax {
7340 opcode: InstructionOpcode::TensormapReplace,
7341 name: "tensormap.replace",
7342 syntax: "tensormap.replace.mode.field2{.ss}.b1024.type [addr], ord, new_val;",
7343 min_operand_arity: 3usize,
7344 max_operand_arity: 3usize,
7345 required_modifiers: &[".b1024"],
7346 },
7347 InstructionSyntax {
7348 opcode: InstructionOpcode::TensormapReplace,
7349 name: "tensormap.replace",
7350 syntax: "tensormap.replace.mode.field3{.ss}.b1024.type [addr], new_val;",
7351 min_operand_arity: 2usize,
7352 max_operand_arity: 2usize,
7353 required_modifiers: &[".b1024"],
7354 },
7355 ],
7356 "testp" => &[InstructionSyntax {
7357 opcode: InstructionOpcode::Testp,
7358 name: "testp",
7359 syntax: "testp.op.type p, a;",
7360 min_operand_arity: 2usize,
7361 max_operand_arity: 2usize,
7362 required_modifiers: &[],
7363 }],
7364 "tex" => &[
7365 InstructionSyntax {
7366 opcode: InstructionOpcode::Tex,
7367 name: "tex",
7368 syntax: "tex.base.geom.v2.f16x2.ctype d[|p], [a, {b,} c] {, e} {, f};",
7369 min_operand_arity: 3usize,
7370 max_operand_arity: 6usize,
7371 required_modifiers: &[".base", ".v2", ".f16x2"],
7372 },
7373 InstructionSyntax {
7374 opcode: InstructionOpcode::Tex,
7375 name: "tex",
7376 syntax: "tex.base.geom.v4.dtype.ctype d[|p], [a, {b,} c] {, e} {, f};",
7377 min_operand_arity: 3usize,
7378 max_operand_arity: 6usize,
7379 required_modifiers: &[".base", ".v4"],
7380 },
7381 InstructionSyntax {
7382 opcode: InstructionOpcode::Tex,
7383 name: "tex",
7384 syntax: "tex.geom.v2.f16x2.ctype d[|p], [a, b, c] {, e} {, f};",
7385 min_operand_arity: 4usize,
7386 max_operand_arity: 6usize,
7387 required_modifiers: &[".v2", ".f16x2"],
7388 },
7389 InstructionSyntax {
7390 opcode: InstructionOpcode::Tex,
7391 name: "tex",
7392 syntax: "tex.geom.v2.f16x2.ctype d[|p], [a, c] {, e} {, f};",
7393 min_operand_arity: 3usize,
7394 max_operand_arity: 5usize,
7395 required_modifiers: &[".v2", ".f16x2"],
7396 },
7397 InstructionSyntax {
7398 opcode: InstructionOpcode::Tex,
7399 name: "tex",
7400 syntax: "tex.geom.v4.dtype.ctype d, [a, c] {, e} {, f};",
7401 min_operand_arity: 3usize,
7402 max_operand_arity: 5usize,
7403 required_modifiers: &[".v4"],
7404 },
7405 InstructionSyntax {
7406 opcode: InstructionOpcode::Tex,
7407 name: "tex",
7408 syntax: "tex.geom.v4.dtype.ctype d[|p], [a, b, c] {, e} {, f};",
7409 min_operand_arity: 4usize,
7410 max_operand_arity: 6usize,
7411 required_modifiers: &[".v4"],
7412 },
7413 InstructionSyntax {
7414 opcode: InstructionOpcode::Tex,
7415 name: "tex",
7416 syntax: "tex.grad.geom.v2.f16x2.ctype d[|p], [a, {b,} c], dPdx, dPdy {, e} {, f};",
7417 min_operand_arity: 5usize,
7418 max_operand_arity: 8usize,
7419 required_modifiers: &[".grad", ".v2", ".f16x2"],
7420 },
7421 InstructionSyntax {
7422 opcode: InstructionOpcode::Tex,
7423 name: "tex",
7424 syntax: "tex.grad.geom.v4.dtype.ctype d[|p], [a, {b,} c], dPdx, dPdy {, e} {, f};",
7425 min_operand_arity: 5usize,
7426 max_operand_arity: 8usize,
7427 required_modifiers: &[".grad", ".v4"],
7428 },
7429 InstructionSyntax {
7430 opcode: InstructionOpcode::Tex,
7431 name: "tex",
7432 syntax: "tex.level.geom.v2.f16x2.ctype d[|p], [a, {b,} c], lod {, e} {, f};",
7433 min_operand_arity: 4usize,
7434 max_operand_arity: 7usize,
7435 required_modifiers: &[".level", ".v2", ".f16x2"],
7436 },
7437 InstructionSyntax {
7438 opcode: InstructionOpcode::Tex,
7439 name: "tex",
7440 syntax: "tex.level.geom.v4.dtype.ctype d[|p], [a, {b,} c], lod {, e} {, f};",
7441 min_operand_arity: 4usize,
7442 max_operand_arity: 7usize,
7443 required_modifiers: &[".level", ".v4"],
7444 },
7445 ],
7446 "tld4" => &[
7447 InstructionSyntax {
7448 opcode: InstructionOpcode::Tld4,
7449 name: "tld4",
7450 syntax: "tld4.comp.2d.v4.dtype.f32 d[|p], [a, c] {, e} {, f};",
7451 min_operand_arity: 3usize,
7452 max_operand_arity: 5usize,
7453 required_modifiers: &[".2d", ".v4", ".f32"],
7454 },
7455 InstructionSyntax {
7456 opcode: InstructionOpcode::Tld4,
7457 name: "tld4",
7458 syntax: "tld4.comp.geom.v4.dtype.f32 d[|p], [a, b, c] {, e} {, f};",
7459 min_operand_arity: 4usize,
7460 max_operand_arity: 6usize,
7461 required_modifiers: &[".v4", ".f32"],
7462 },
7463 ],
7464 "trap" => &[InstructionSyntax {
7465 opcode: InstructionOpcode::Trap,
7466 name: "trap",
7467 syntax: "trap;",
7468 min_operand_arity: 0usize,
7469 max_operand_arity: 0usize,
7470 required_modifiers: &[],
7471 }],
7472 "txq" => &[InstructionSyntax {
7473 opcode: InstructionOpcode::Txq,
7474 name: "txq",
7475 syntax: "txq.tquery.b32 d, [a]; txq.level.tlquery.b32 d, [a], lod; txq.squery.b32 d, [a];",
7476 min_operand_arity: 5usize,
7477 max_operand_arity: 5usize,
7478 required_modifiers: &[".b32"],
7479 }],
7480 "vabsdiff" => &[],
7481 "vabsdiff2" => &[],
7482 "vabsdiff4" => &[],
7483 "vadd" => &[],
7484 "vadd2" => &[],
7485 "vadd4" => &[],
7486 "vavrg2" => &[],
7487 "vavrg4" => &[],
7488 "vmad" => &[
7489 InstructionSyntax {
7490 opcode: InstructionOpcode::VMad,
7491 name: "vmad",
7492 syntax: "vmad.dtype.atype.btype.po{.sat}{.scale} d, a{.asel}, b{.bsel}, c;",
7493 min_operand_arity: 2usize,
7494 max_operand_arity: 4usize,
7495 required_modifiers: &[".po"],
7496 },
7497 InstructionSyntax {
7498 opcode: InstructionOpcode::VMad,
7499 name: "vmad",
7500 syntax: "vmad.dtype.atype.btype{.sat}{.scale} d, {-}a{.asel}, {-}b{.bsel}, {-}c;",
7501 min_operand_arity: 1usize,
7502 max_operand_arity: 4usize,
7503 required_modifiers: &[],
7504 },
7505 ],
7506 "vmax" => &[],
7507 "vmax2" => &[],
7508 "vmax4" => &[],
7509 "vmin" => &[],
7510 "vmin2" => &[],
7511 "vmin4" => &[],
7512 "vote" => &[
7513 InstructionSyntax {
7514 opcode: InstructionOpcode::Vote,
7515 name: "vote",
7516 syntax: "vote.ballot.b32 d, {!}a;",
7517 min_operand_arity: 1usize,
7518 max_operand_arity: 2usize,
7519 required_modifiers: &[".ballot", ".b32"],
7520 },
7521 InstructionSyntax {
7522 opcode: InstructionOpcode::Vote,
7523 name: "vote",
7524 syntax: "vote.mode.pred d, {!}a;",
7525 min_operand_arity: 1usize,
7526 max_operand_arity: 2usize,
7527 required_modifiers: &[".pred"],
7528 },
7529 ],
7530 "vote.sync" => &[
7531 InstructionSyntax {
7532 opcode: InstructionOpcode::VoteSync,
7533 name: "vote.sync",
7534 syntax: "vote.sync.ballot.b32 d, {!}a, membermask;",
7535 min_operand_arity: 2usize,
7536 max_operand_arity: 3usize,
7537 required_modifiers: &[".ballot", ".b32"],
7538 },
7539 InstructionSyntax {
7540 opcode: InstructionOpcode::VoteSync,
7541 name: "vote.sync",
7542 syntax: "vote.sync.mode.pred d, {!}a, membermask;",
7543 min_operand_arity: 2usize,
7544 max_operand_arity: 3usize,
7545 required_modifiers: &[".pred"],
7546 },
7547 ],
7548 "vset" => &[
7549 InstructionSyntax {
7550 opcode: InstructionOpcode::VSet,
7551 name: "vset",
7552 syntax: "vset.atype.btype.cmp d, a{.asel}, b{.bsel};",
7553 min_operand_arity: 1usize,
7554 max_operand_arity: 3usize,
7555 required_modifiers: &[],
7556 },
7557 InstructionSyntax {
7558 opcode: InstructionOpcode::VSet,
7559 name: "vset",
7560 syntax: "vset.atype.btype.cmp d.dsel, a{.asel}, b{.bsel}, c;",
7561 min_operand_arity: 2usize,
7562 max_operand_arity: 4usize,
7563 required_modifiers: &[],
7564 },
7565 InstructionSyntax {
7566 opcode: InstructionOpcode::VSet,
7567 name: "vset",
7568 syntax: "vset.atype.btype.cmp.op2 d, a{.asel}, b{.bsel}, c;",
7569 min_operand_arity: 2usize,
7570 max_operand_arity: 4usize,
7571 required_modifiers: &[],
7572 },
7573 ],
7574 "vset2" => &[
7575 InstructionSyntax {
7576 opcode: InstructionOpcode::VSet2,
7577 name: "vset2",
7578 syntax: "vset2.atype.btype.cmp d{.mask}, a{.asel}, b{.bsel}, c;",
7579 min_operand_arity: 1usize,
7580 max_operand_arity: 4usize,
7581 required_modifiers: &[],
7582 },
7583 InstructionSyntax {
7584 opcode: InstructionOpcode::VSet2,
7585 name: "vset2",
7586 syntax: "vset2.atype.btype.cmp.add d{.mask}, a{.asel}, b{.bsel}, c;",
7587 min_operand_arity: 1usize,
7588 max_operand_arity: 4usize,
7589 required_modifiers: &[".add"],
7590 },
7591 ],
7592 "vset4" => &[
7593 InstructionSyntax {
7594 opcode: InstructionOpcode::VSet4,
7595 name: "vset4",
7596 syntax: "vset4.atype.btype.cmp d{.mask}, a{.asel}, b{.bsel}, c;",
7597 min_operand_arity: 1usize,
7598 max_operand_arity: 4usize,
7599 required_modifiers: &[],
7600 },
7601 InstructionSyntax {
7602 opcode: InstructionOpcode::VSet4,
7603 name: "vset4",
7604 syntax: "vset4.atype.btype.cmp.add d{.mask}, a{.asel}, b{.bsel}, c;",
7605 min_operand_arity: 1usize,
7606 max_operand_arity: 4usize,
7607 required_modifiers: &[".add"],
7608 },
7609 ],
7610 "vshl" => &[],
7611 "vshr" => &[],
7612 "vsub" => &[],
7613 "vsub2" => &[],
7614 "vsub4" => &[],
7615 "wgmma.commit_group" => &[InstructionSyntax {
7616 opcode: InstructionOpcode::WgmmaCommitGroup,
7617 name: "wgmma.commit_group",
7618 syntax: "wgmma.commit_group.sync.aligned;",
7619 min_operand_arity: 0usize,
7620 max_operand_arity: 0usize,
7621 required_modifiers: &[".sync", ".aligned"],
7622 }],
7623 "wgmma.fence" => &[InstructionSyntax {
7624 opcode: InstructionOpcode::WgmmaFence,
7625 name: "wgmma.fence",
7626 syntax: "wgmma.fence.sync.aligned;",
7627 min_operand_arity: 0usize,
7628 max_operand_arity: 0usize,
7629 required_modifiers: &[".sync", ".aligned"],
7630 }],
7631 "wgmma.mma_async" => &[
7632 InstructionSyntax {
7633 opcode: InstructionOpcode::WgmmaMmaAsync,
7634 name: "wgmma.mma_async",
7635 syntax: "wgmma.mma_async.sync.aligned.shape.dtype.f16.f16 d, a, b-desc, scale-d, imm-scale-a, imm-scale-b, imm-trans-b;",
7636 min_operand_arity: 7usize,
7637 max_operand_arity: 7usize,
7638 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
7639 },
7640 InstructionSyntax {
7641 opcode: InstructionOpcode::WgmmaMmaAsync,
7642 name: "wgmma.mma_async",
7643 syntax: "wgmma.mma_async.sync.aligned.shape.dtype.f16.f16 d, a-desc, b-desc, scale-d, imm-scale-a, imm-scale-b, imm-trans-a, imm-trans-b;",
7644 min_operand_arity: 8usize,
7645 max_operand_arity: 8usize,
7646 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
7647 },
7648 ],
7649 "wgmma.mma_async.sp" => &[
7650 InstructionSyntax {
7651 opcode: InstructionOpcode::WgmmaMmaAsyncSp,
7652 name: "wgmma.mma_async.sp",
7653 syntax: "wgmma.mma_async.sp.sync.aligned.shape.dtype.f16.f16 d, a, b-desc, sp-meta, sp-sel, scale-d, imm-scale-a, imm-scale-b, imm-trans-b;",
7654 min_operand_arity: 9usize,
7655 max_operand_arity: 9usize,
7656 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
7657 },
7658 InstructionSyntax {
7659 opcode: InstructionOpcode::WgmmaMmaAsyncSp,
7660 name: "wgmma.mma_async.sp",
7661 syntax: "wgmma.mma_async.sp.sync.aligned.shape.dtype.f16.f16 d, a-desc, b-desc, sp-meta, sp-sel, scale-d, imm-scale-a, imm-scale-b, imm-trans-a, imm-trans-b;",
7662 min_operand_arity: 10usize,
7663 max_operand_arity: 10usize,
7664 required_modifiers: &[".sync", ".aligned", ".f16", ".f16"],
7665 },
7666 ],
7667 "wgmma.wait_group" => &[InstructionSyntax {
7668 opcode: InstructionOpcode::WgmmaWaitGroup,
7669 name: "wgmma.wait_group",
7670 syntax: "wgmma.wait_group.sync.aligned N;",
7671 min_operand_arity: 1usize,
7672 max_operand_arity: 1usize,
7673 required_modifiers: &[".sync", ".aligned"],
7674 }],
7675 "wmma.load" => &[
7676 InstructionSyntax {
7677 opcode: InstructionOpcode::WmmaLoad,
7678 name: "wmma.load",
7679 syntax: "wmma.load.a.sync.aligned.layout.shape{.ss}.atype r, [p] {, stride};",
7680 min_operand_arity: 2usize,
7681 max_operand_arity: 3usize,
7682 required_modifiers: &[".a", ".sync", ".aligned"],
7683 },
7684 InstructionSyntax {
7685 opcode: InstructionOpcode::WmmaLoad,
7686 name: "wmma.load",
7687 syntax: "wmma.load.b.sync.aligned.layout.shape{.ss}.btype r, [p] {, stride};",
7688 min_operand_arity: 2usize,
7689 max_operand_arity: 3usize,
7690 required_modifiers: &[".b", ".sync", ".aligned"],
7691 },
7692 InstructionSyntax {
7693 opcode: InstructionOpcode::WmmaLoad,
7694 name: "wmma.load",
7695 syntax: "wmma.load.c.sync.aligned.layout.shape{.ss}.ctype r, [p] {, stride};",
7696 min_operand_arity: 2usize,
7697 max_operand_arity: 3usize,
7698 required_modifiers: &[".c", ".sync", ".aligned"],
7699 },
7700 ],
7701 "wmma.mma" => &[
7702 InstructionSyntax {
7703 opcode: InstructionOpcode::WmmaMma,
7704 name: "wmma.mma",
7705 syntax: "wmma.mma.sync.aligned.alayout.blayout.shape.dtype.ctype d, a, b, c;",
7706 min_operand_arity: 4usize,
7707 max_operand_arity: 4usize,
7708 required_modifiers: &[".sync", ".aligned"],
7709 },
7710 InstructionSyntax {
7711 opcode: InstructionOpcode::WmmaMma,
7712 name: "wmma.mma",
7713 syntax: "wmma.mma.sync.aligned.alayout.blayout.shape.s32.atype.btype.s32{.satfinite} d, a, b, c;",
7714 min_operand_arity: 4usize,
7715 max_operand_arity: 4usize,
7716 required_modifiers: &[".sync", ".aligned", ".s32", ".s32"],
7717 },
7718 ],
7719 "wmma.store" => &[
7720 InstructionSyntax {
7721 opcode: InstructionOpcode::WmmaStore,
7722 name: "wmma.store",
7723 syntax: "wmma.store.d.sync.aligned.layout.shape{.ss}.type [p], r {, stride}",
7724 min_operand_arity: 2usize,
7725 max_operand_arity: 3usize,
7726 required_modifiers: &[".d", ".sync", ".aligned"],
7727 },
7728 InstructionSyntax {
7729 opcode: InstructionOpcode::WmmaStore,
7730 name: "wmma.store",
7731 syntax: "wmma.store.d.sync.aligned.layout.shape{.ss}.type [p], r {, stride};",
7732 min_operand_arity: 2usize,
7733 max_operand_arity: 3usize,
7734 required_modifiers: &[".d", ".sync", ".aligned"],
7735 },
7736 ],
7737 "xor" => &[InstructionSyntax {
7738 opcode: InstructionOpcode::Xor,
7739 name: "xor",
7740 syntax: "xor.type d, a, b;",
7741 min_operand_arity: 3usize,
7742 max_operand_arity: 3usize,
7743 required_modifiers: &[],
7744 }],
7745 _ => &[],
7746 }
7747}