ptx_parser/unparser/instruction/
min.rs1#![allow(unused)]
18
19use crate::lexer::PtxToken;
20use crate::unparser::{PtxUnparser, common::*};
21
22pub mod section_0 {
23 use super::*;
24 use crate::r#type::instruction::min::section_0::*;
25
26 impl PtxUnparser for MinAtype {
27 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
28 push_opcode(tokens, "min");
29 match &self.atype {
30 Atype::U16x2 => {
31 push_directive(tokens, "u16x2");
32 }
33 Atype::U16 => {
34 push_directive(tokens, "u16");
35 }
36 Atype::U32 => {
37 push_directive(tokens, "u32");
38 }
39 Atype::U64 => {
40 push_directive(tokens, "u64");
41 }
42 Atype::S16 => {
43 push_directive(tokens, "s16");
44 }
45 Atype::S64 => {
46 push_directive(tokens, "s64");
47 }
48 }
49 self.d.unparse_tokens(tokens);
50 tokens.push(PtxToken::Comma);
51 self.a.unparse_tokens(tokens);
52 tokens.push(PtxToken::Comma);
53 self.b.unparse_tokens(tokens);
54 tokens.push(PtxToken::Semicolon);
55 }
56 }
57
58 impl PtxUnparser for MinReluBtype {
59 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
60 push_opcode(tokens, "min");
61 if self.relu {
62 push_directive(tokens, "relu");
63 }
64 match &self.btype {
65 Btype::S16x2 => {
66 push_directive(tokens, "s16x2");
67 }
68 Btype::S32 => {
69 push_directive(tokens, "s32");
70 }
71 }
72 self.d.unparse_tokens(tokens);
73 tokens.push(PtxToken::Comma);
74 self.a.unparse_tokens(tokens);
75 tokens.push(PtxToken::Comma);
76 self.b.unparse_tokens(tokens);
77 tokens.push(PtxToken::Semicolon);
78 }
79 }
80
81 impl PtxUnparser for MinFtzNanXorsignAbsF32 {
82 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
83 push_opcode(tokens, "min");
84 if self.ftz {
85 push_directive(tokens, "ftz");
86 }
87 if self.nan {
88 push_directive(tokens, "NaN");
89 }
90 if self.xorsign_abs {
91 push_directive(tokens, "xorsign.abs");
92 }
93 push_directive(tokens, "f32");
94 self.d.unparse_tokens(tokens);
95 tokens.push(PtxToken::Comma);
96 self.a.unparse_tokens(tokens);
97 tokens.push(PtxToken::Comma);
98 self.b.unparse_tokens(tokens);
99 tokens.push(PtxToken::Semicolon);
100 }
101 }
102
103 impl PtxUnparser for MinFtzNanAbsF32 {
104 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
105 push_opcode(tokens, "min");
106 if self.ftz {
107 push_directive(tokens, "ftz");
108 }
109 if self.nan {
110 push_directive(tokens, "NaN");
111 }
112 if self.abs {
113 push_directive(tokens, "abs");
114 }
115 push_directive(tokens, "f32");
116 self.d.unparse_tokens(tokens);
117 tokens.push(PtxToken::Comma);
118 self.a.unparse_tokens(tokens);
119 tokens.push(PtxToken::Comma);
120 self.b.unparse_tokens(tokens);
121 tokens.push(PtxToken::Comma);
122 self.c.unparse_tokens(tokens);
123 tokens.push(PtxToken::Semicolon);
124 }
125 }
126
127 impl PtxUnparser for MinF64 {
128 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
129 push_opcode(tokens, "min");
130 push_directive(tokens, "f64");
131 self.d.unparse_tokens(tokens);
132 tokens.push(PtxToken::Comma);
133 self.a.unparse_tokens(tokens);
134 tokens.push(PtxToken::Comma);
135 self.b.unparse_tokens(tokens);
136 tokens.push(PtxToken::Semicolon);
137 }
138 }
139
140 impl PtxUnparser for MinFtzNanXorsignAbsF16 {
141 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
142 push_opcode(tokens, "min");
143 if self.ftz {
144 push_directive(tokens, "ftz");
145 }
146 if self.nan {
147 push_directive(tokens, "NaN");
148 }
149 if self.xorsign_abs {
150 push_directive(tokens, "xorsign.abs");
151 }
152 push_directive(tokens, "f16");
153 self.d.unparse_tokens(tokens);
154 tokens.push(PtxToken::Comma);
155 self.a.unparse_tokens(tokens);
156 tokens.push(PtxToken::Comma);
157 self.b.unparse_tokens(tokens);
158 tokens.push(PtxToken::Semicolon);
159 }
160 }
161
162 impl PtxUnparser for MinFtzNanXorsignAbsF16x2 {
163 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
164 push_opcode(tokens, "min");
165 if self.ftz {
166 push_directive(tokens, "ftz");
167 }
168 if self.nan {
169 push_directive(tokens, "NaN");
170 }
171 if self.xorsign_abs {
172 push_directive(tokens, "xorsign.abs");
173 }
174 push_directive(tokens, "f16x2");
175 self.d.unparse_tokens(tokens);
176 tokens.push(PtxToken::Comma);
177 self.a.unparse_tokens(tokens);
178 tokens.push(PtxToken::Comma);
179 self.b.unparse_tokens(tokens);
180 tokens.push(PtxToken::Semicolon);
181 }
182 }
183
184 impl PtxUnparser for MinNanXorsignAbsBf16 {
185 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
186 push_opcode(tokens, "min");
187 if self.nan {
188 push_directive(tokens, "NaN");
189 }
190 if self.xorsign_abs {
191 push_directive(tokens, "xorsign.abs");
192 }
193 push_directive(tokens, "bf16");
194 self.d.unparse_tokens(tokens);
195 tokens.push(PtxToken::Comma);
196 self.a.unparse_tokens(tokens);
197 tokens.push(PtxToken::Comma);
198 self.b.unparse_tokens(tokens);
199 tokens.push(PtxToken::Semicolon);
200 }
201 }
202
203 impl PtxUnparser for MinNanXorsignAbsBf16x2 {
204 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
205 push_opcode(tokens, "min");
206 if self.nan {
207 push_directive(tokens, "NaN");
208 }
209 if self.xorsign_abs {
210 push_directive(tokens, "xorsign.abs");
211 }
212 push_directive(tokens, "bf16x2");
213 self.d.unparse_tokens(tokens);
214 tokens.push(PtxToken::Comma);
215 self.a.unparse_tokens(tokens);
216 tokens.push(PtxToken::Comma);
217 self.b.unparse_tokens(tokens);
218 tokens.push(PtxToken::Semicolon);
219 }
220 }
221
222}
223