Skip to main content

singe_ptx/generated/
instruction_set.rs

1// auto-generated by `cargo xtask gen-ptx-instructions`
2// do not edit manually
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum InstructionOpcode {
6    /// Absolute value.
7    Abs,
8    /// Queries the active threads within a warp.
9    ActiveMask,
10    /// Add two values.
11    Add,
12    /// Add two values with carry-out.
13    AddCc,
14    /// Add two values with carry-in and optional carry-out.
15    Addc,
16    /// Dynamically allocate memory on stack.
17    Alloca,
18    /// Bitwise AND.
19    And,
20    /// Apply the cache eviction priority to the specified address in the specified cache level.
21    ApplyPriority,
22    /// Atomic reduction operations for thread-to-thread communication.
23    Atom,
24    /// Barrier synchronization.
25    Bar,
26    /// Barrier synchronization for threads in a warp.
27    BarWarpSync,
28    /// Barrier synchronization.
29    Barrier,
30    /// Barrier synchronization within a cluster.
31    BarrierCluster,
32    /// Bit Field Extract.
33    Bfe,
34    /// Bit Field Insert.
35    Bfi,
36    /// Find most significant non-sign bit.
37    Bfind,
38    /// Bit Field Mask.
39    Bmsk,
40    /// Branch to a target and continue execution there.
41    Bra,
42    /// Bit reverse.
43    Brev,
44    /// Breakpoint.
45    Brkpt,
46    /// Branch to a label indexed from a list of potential branch targets.
47    BrxIdx,
48    /// Call a function, recording the return location.
49    Call,
50    /// Perform carryless multiply and add operation.
51    Clmad,
52    /// Queries response of clusterlaunchcontrol.try_cancel operation.
53    ClusterLaunchControlQueryCancel,
54    /// Requests cancellation of cluster which is not launched yet.
55    ClusterLaunchControlTryCancel,
56    /// Count leading zeros.
57    Clz,
58    /// C/C++ style logical negation.
59    Cnot,
60    /// Copy sign of one input to another.
61    Copysign,
62    /// Find the cosine of a value.
63    Cos,
64    /// Makes the mbarrier object track all prior cp.async operations initiated by the executing thread.
65    CpAsyncMbarrierArrive,
66    /// Create a cache eviction policy for the specified cache level.
67    CreatePolicy,
68    /// Convert a value from one type to another.
69    Cvt,
70    /// Convert two integer values from one integer type to another and pack the results.
71    CvtPack,
72    /// Convert address from .const, Kernel Function Parameters ( .param ), .global, .local, or .shared state space to generic, or vice-versa. Take the generic address of a variable declared in .const, Kernel Function Parameters ( .param ), .global, .local, or .shared state space.
73    Cvta,
74    /// Discard the data at the specified address range and cache level.
75    Discard,
76    /// Divide one value by another.
77    Div,
78    /// Two-way dot product-accumulate.
79    Dp2A,
80    /// Four-way byte dot product-accumulate.
81    Dp4A,
82    /// Elect a leader thread from a set of threads.
83    ElectSync,
84    /// Find the base-2 exponential of a value.
85    Ex2,
86    /// Terminate a thread.
87    Exit,
88    /// Submits prior fabric operations issued by the current thread.
89    FabricSubmit,
90    /// Asynchronous copy from fabric handle.
91    FabricTryGet,
92    /// Asynchronous copy from fabric handle with pull-reduction.
93    FabricTryPullred,
94    /// Asynchronous copy to fabric handle.
95    FabricTryPut,
96    /// Asynchronous copy to fabric handle with reduction.
97    FabricTryRed,
98    /// Wait on local shared-memory reads of submitted fabric operations.
99    FabricWait,
100    /// Enforce an ordering of memory operations.
101    Fence,
102    /// Fused multiply-add.
103    Fma,
104    /// Find the n-th set bit
105    Fns,
106    /// Generate the CTA rank of the address.
107    GetCtaRank,
108    /// Control execution of dependent grids.
109    GridDepControl,
110    /// Query whether a generic address falls within a specified state space window.
111    IsSpaceP,
112    /// Query whether a register points to an opaque variable of a specified type.
113    IsTypeP,
114    /// Load a register variable from an addressable state space variable.
115    Ld,
116    /// Load a register variable from global state space via non-coherent cache.
117    LdGlobalNc,
118    /// Collectively load one or more matrices from shared memory for mma instruction
119    LdMatrix,
120    /// Load read-only data from an address that is common across threads in the warp.
121    Ldu,
122    /// Find the base-2 logarithm of a value.
123    Lg2,
124    /// Arbitrary logical operation on 3 inputs.
125    Lop3,
126    /// Multiply two values, optionally extract the high or low half of the intermediate result, and add a third value.
127    Mad,
128    /// Multiply two values, extract high or low half of result, and add a third value with carry-out.
129    MadCc,
130    /// Multiply two 24-bit integer values and add a third value.
131    Mad24,
132    /// Multiply two values, extract high or low half of result, and add a third value with carry-in and optional carry-out.
133    Madc,
134    /// Map the address of the shared variable in the target CTA.
135    Mapa,
136    /// Broadcast and compare a value across threads in warp.
137    MatchSync,
138    /// Find the maximum of two values.
139    Max,
140    /// Performs arrive-on operation on the mbarrier object .
141    MbarrierArrive,
142    /// Decrements the expected count of the mbarrier object and performs arrive-on operation .
143    MbarrierArriveDrop,
144    /// Check the layout of the mbarrier object .
145    MbarrierCheckLayout,
146    /// Performs complete-tx operation on the mbarrier object .
147    MbarrierCompleteTx,
148    /// Performs expect-tx operation on the mbarrier object .
149    MbarrierExpectTx,
150    /// Initialize the mbarrier object .
151    MbarrierInit,
152    /// Invalidates the mbarrier object .
153    MbarrierInval,
154    /// Query the pending arrival count from the opaque mbarrier state.
155    MbarrierPendingCount,
156    /// Checks whether the mbarrier object has completed the phase.
157    MbarrierTestWait,
158    /// Checks whether the mbarrier object has completed the phase.
159    MbarrierTryWait,
160    /// Enforce an ordering of memory operations.
161    Membar,
162    /// Find the minimum of two values.
163    Min,
164    /// Perform matrix multiply-and-accumulate operation
165    Mma,
166    /// Perform matrix multiply-and-accumulate operation with sparse matrix A
167    MmaSp,
168    /// Perform matrix multiply-and-accumulate operation with sparse matrix A
169    MmaSpOrderedMetadata,
170    /// Set a register variable with the value of a register variable or an immediate value. Take the non-generic address of a variable in global, local, or shared state space.
171    Mov,
172    /// Transpose a matrix in registers across the warp.
173    MovMatrix,
174    /// Multiply two values.
175    Mul,
176    /// Multiply two 24-bit integer values.
177    Mul24,
178    /// The multimem.* operations operate on multimem addresses and accesses all of the multiple memory locations which the multimem address points to.
179    MultimemLdReduce,
180    /// The multimem.* operations operate on multimem addresses and accesses all of the multiple memory locations which the multimem address points to.
181    MultimemRed,
182    /// Perform asynchronous reduction with release ordering on the multimem address.
183    MultimemRedAsync,
184    /// The multimem.* operations operate on multimem addresses and accesses all of the multiple memory locations which the multimem address points to.
185    MultimemSt,
186    /// Perform asynchronous store with release ordering on the multimem address.
187    MultimemStAsync,
188    /// Suspend the thread for an approximate delay given in nanoseconds.
189    Nanosleep,
190    /// Arithmetic negate.
191    Neg,
192    /// Bitwise negation; one’s complement.
193    Not,
194    /// Biwise OR.
195    Or,
196    /// Trigger one or more Performance Monitor events.
197    PmEvent,
198    /// Population count.
199    Popc,
200    /// Prefetch line containing a generic address at a specified level of memory hierarchy, in specified state space.
201    Prefetch,
202    /// Prefetch line containing a generic address at a specified level of memory hierarchy, in specified state space.
203    Prefetchu,
204    /// Permute bytes from register pair.
205    Prmt,
206    /// Take the reciprocal of a value.
207    Rcp,
208    /// Compute a fast, gross approximation to the reciprocal of a value.
209    RcpApproxFtzF64,
210    /// Reduction operations on global and shared memory.
211    Red,
212    /// Asynchronous reduction operation.
213    RedAsync,
214    /// Perform reduction operation on the data from each predicated active thread in the thread group.
215    ReduxSync,
216    /// The remainder of integer division.
217    Rem,
218    /// Return from function to instruction after call.
219    Ret,
220    /// Take the reciprocal of the square root of a value.
221    Rsqrt,
222    /// Compute an approximation of the square root reciprocal of a value.
223    RsqrtApproxFtzF64,
224    /// Sum of absolute differences.
225    Sad,
226    /// Select between source operands, based on the value of the predicate source operand.
227    Selp,
228    /// Compare two numeric values with a relational operator, and optionally combine this result with a predicate value by applying a Boolean operator.
229    Set,
230    /// Hint to change the number of registers owned by the warp.
231    SetMaxNReg,
232    /// Compare two numeric values with a relational operator, and (optionally) combine this result with a predicate value by applying a Boolean operator.
233    Setp,
234    /// Funnel shift.
235    Shf,
236    /// Register data shuffle within threads of a warp.
237    Shfl,
238    /// Register data shuffle within threads of a warp.
239    ShflSync,
240    /// Shift bits left, zero-fill on right.
241    Shl,
242    /// Shift bits right, sign or zero-fill on left.
243    Shr,
244    /// Find the sine of a value.
245    Sin,
246    /// Select one source operand, based on the sign of the third operand.
247    Slct,
248    /// Take the square root of a value.
249    Sqrt,
250    /// Store data to an addressable state space variable.
251    St,
252    /// Asynchronous store operation.
253    StAsync,
254    /// Initializes a region of memory as specified by state space.
255    StBulk,
256    /// Update the stack pointer with a new value.
257    StackRestore,
258    /// Save the value of stack pointer into a register.
259    StackSave,
260    /// Collectively store one or more matrices to shared memory.
261    StMatrix,
262    /// Subtract one value from another.
263    Sub,
264    /// Subtract one value from another, with borrow-out.
265    SubCc,
266    /// Subtract one value from another, with borrow-in and optional borrow-out.
267    Subc,
268    /// Load from surface memory.
269    Suld,
270    /// Query a surface attribute.
271    Suq,
272    /// Reduce surface memory.
273    Sured,
274    /// Store to surface memory.
275    Sust,
276    /// Sign-extend or Zero-extend.
277    Szext,
278    /// Find the hyperbolic tangent of a value (in radians)
279    Tanh,
280    /// Dynamic Tensor Memory allocation management instructions
281    Tcgen05Alloc,
282    /// Makes the mbarrier object track the completion of all prior async-tcgen05 operations initiated by the executing thread.
283    Tcgen05Commit,
284    /// Initiates an asynchronous copy operation from shared memory to the Tensor Memory .
285    Tcgen05Cp,
286    /// Dynamic Tensor Memory allocation management instructions
287    Tcgen05Dealloc,
288    /// Specialized fence for the asynchronous tcgen05 operations.
289    Tcgen05Fence,
290    /// Asynchronous collective load from tensor memory into registers.
291    Tcgen05Ld,
292    /// Dynamic Tensor Memory allocation management instructions
293    Tcgen05RelinquishAllocPermit,
294    /// Asynchronously shift down the rows of the matrix in the Tensor Memory for a warp.
295    Tcgen05Shift,
296    /// Asynchronous collective store to tensor memory from registers.
297    Tcgen05St,
298    /// Waits for the completion of all prior asynchronous tcgen05.ld / tcgen05.st instructions.
299    Tcgen05Wait,
300    /// A fused copy and fence operation.
301    TensorMapCpFenceProxy,
302    /// Modifies the field of a tensor-map object.
303    TensormapReplace,
304    /// Test floating-point property.
305    Testp,
306    /// Perform a texture memory lookup.
307    Tex,
308    /// Perform a texture fetch of the 4-texel bilerp footprint.
309    Tld4,
310    /// Perform trap operation.
311    Trap,
312    /// Query texture and sampler attributes.
313    Txq,
314    /// Integer byte/half-word/word addition/subtraction.
315    VAbsDiff,
316    /// Integer dual half-word SIMD addition/subtraction.
317    VAbsDiff2,
318    /// Integer quad byte SIMD addition/subtraction.
319    VAbsDiff4,
320    /// Integer byte/half-word/word addition/subtraction.
321    VAdd,
322    /// Integer dual half-word SIMD addition/subtraction.
323    VAdd2,
324    /// Integer quad byte SIMD addition/subtraction.
325    VAdd4,
326    /// Integer dual half-word SIMD addition/subtraction.
327    VAvrg2,
328    /// Integer quad byte SIMD addition/subtraction.
329    VAvrg4,
330    /// Integer byte/half-word/word multiply-accumulate.
331    VMad,
332    /// Integer byte/half-word/word addition/subtraction.
333    VMax,
334    /// Integer dual half-word SIMD addition/subtraction.
335    VMax2,
336    /// Integer quad byte SIMD addition/subtraction.
337    VMax4,
338    /// Integer byte/half-word/word addition/subtraction.
339    VMin,
340    /// Integer dual half-word SIMD addition/subtraction.
341    VMin2,
342    /// Integer quad byte SIMD addition/subtraction.
343    VMin4,
344    /// Vote across thread group.
345    Vote,
346    /// Vote across thread group.
347    VoteSync,
348    /// Integer byte/half-word/word comparison.
349    VSet,
350    /// Integer dual half-word SIMD comparison.
351    VSet2,
352    /// Integer quad byte SIMD comparison.
353    VSet4,
354    /// Integer byte/half-word/word left/right shift.
355    VShl,
356    /// Integer byte/half-word/word left/right shift.
357    VShr,
358    /// Integer byte/half-word/word addition/subtraction.
359    VSub,
360    /// Integer dual half-word SIMD addition/subtraction.
361    VSub2,
362    /// Integer quad byte SIMD addition/subtraction.
363    VSub4,
364    /// Commits all prior uncommitted wgmma.mma_async operations into a wgmma-group .
365    WgmmaCommitGroup,
366    /// Enforce an ordering of register accesses between wgmma.mma_async and other operations.
367    WgmmaFence,
368    /// Perform matrix multiply-and-accumulate operation across warpgroup
369    WgmmaMmaAsync,
370    /// Perform matrix multiply-and-accumulate operation with sparse matrix A across warpgroup
371    WgmmaMmaAsyncSp,
372    /// Signal the completion of a preceding warpgroup operation.
373    WgmmaWaitGroup,
374    /// Collectively load a matrix from memory for WMMA
375    WmmaLoad,
376    /// Perform a single matrix multiply-and-accumulate operation across a warp
377    WmmaMma,
378    /// Collectively store a matrix into memory for WMMA
379    WmmaStore,
380    /// Bitwise exclusive-OR (inequality).
381    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}