ptx_parser/unparser/instruction/
vset.rs1#![allow(unused)]
14
15use crate::lexer::PtxToken;
16use crate::unparser::{PtxUnparser, common::*};
17
18pub mod section_0 {
19 use super::*;
20 use crate::r#type::instruction::vset::section_0::*;
21
22 impl PtxUnparser for VsetAtypeBtypeCmp {
23 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
24 push_opcode(tokens, "vset");
25 match &self.atype {
26 Atype::U32 => {
27 push_directive(tokens, "u32");
28 }
29 Atype::S32 => {
30 push_directive(tokens, "s32");
31 }
32 }
33 match &self.btype {
34 Btype::U32 => {
35 push_directive(tokens, "u32");
36 }
37 Btype::S32 => {
38 push_directive(tokens, "s32");
39 }
40 }
41 match &self.cmp {
42 Cmp::Eq => {
43 push_directive(tokens, "eq");
44 }
45 Cmp::Ne => {
46 push_directive(tokens, "ne");
47 }
48 Cmp::Lt => {
49 push_directive(tokens, "lt");
50 }
51 Cmp::Le => {
52 push_directive(tokens, "le");
53 }
54 Cmp::Gt => {
55 push_directive(tokens, "gt");
56 }
57 Cmp::Ge => {
58 push_directive(tokens, "ge");
59 }
60 }
61 self.d.unparse_tokens(tokens);
62 tokens.push(PtxToken::Comma);
63 self.a.unparse_tokens(tokens);
64 if let Some(asel_0) = self.asel.as_ref() {
65 match asel_0 {
66 Asel::B0 => {
67 push_directive(tokens, "b0");
68 }
69 Asel::B1 => {
70 push_directive(tokens, "b1");
71 }
72 Asel::B2 => {
73 push_directive(tokens, "b2");
74 }
75 Asel::B3 => {
76 push_directive(tokens, "b3");
77 }
78 Asel::H0 => {
79 push_directive(tokens, "h0");
80 }
81 Asel::H1 => {
82 push_directive(tokens, "h1");
83 }
84 }
85 }
86 tokens.push(PtxToken::Comma);
87 self.b.unparse_tokens(tokens);
88 if let Some(bsel_1) = self.bsel.as_ref() {
89 match bsel_1 {
90 Bsel::B0 => {
91 push_directive(tokens, "b0");
92 }
93 Bsel::B1 => {
94 push_directive(tokens, "b1");
95 }
96 Bsel::B2 => {
97 push_directive(tokens, "b2");
98 }
99 Bsel::B3 => {
100 push_directive(tokens, "b3");
101 }
102 Bsel::H0 => {
103 push_directive(tokens, "h0");
104 }
105 Bsel::H1 => {
106 push_directive(tokens, "h1");
107 }
108 }
109 }
110 tokens.push(PtxToken::Semicolon);
111 }
112 }
113
114 impl PtxUnparser for VsetAtypeBtypeCmpOp2 {
115 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
116 push_opcode(tokens, "vset");
117 match &self.atype {
118 Atype::U32 => {
119 push_directive(tokens, "u32");
120 }
121 Atype::S32 => {
122 push_directive(tokens, "s32");
123 }
124 }
125 match &self.btype {
126 Btype::U32 => {
127 push_directive(tokens, "u32");
128 }
129 Btype::S32 => {
130 push_directive(tokens, "s32");
131 }
132 }
133 match &self.cmp {
134 Cmp::Eq => {
135 push_directive(tokens, "eq");
136 }
137 Cmp::Ne => {
138 push_directive(tokens, "ne");
139 }
140 Cmp::Lt => {
141 push_directive(tokens, "lt");
142 }
143 Cmp::Le => {
144 push_directive(tokens, "le");
145 }
146 Cmp::Gt => {
147 push_directive(tokens, "gt");
148 }
149 Cmp::Ge => {
150 push_directive(tokens, "ge");
151 }
152 }
153 match &self.op2 {
154 Op2::Add => {
155 push_directive(tokens, "add");
156 }
157 Op2::Min => {
158 push_directive(tokens, "min");
159 }
160 Op2::Max => {
161 push_directive(tokens, "max");
162 }
163 }
164 self.d.unparse_tokens(tokens);
165 tokens.push(PtxToken::Comma);
166 self.a.unparse_tokens(tokens);
167 if let Some(asel_2) = self.asel.as_ref() {
168 match asel_2 {
169 Asel::B0 => {
170 push_directive(tokens, "b0");
171 }
172 Asel::B1 => {
173 push_directive(tokens, "b1");
174 }
175 Asel::B2 => {
176 push_directive(tokens, "b2");
177 }
178 Asel::B3 => {
179 push_directive(tokens, "b3");
180 }
181 Asel::H0 => {
182 push_directive(tokens, "h0");
183 }
184 Asel::H1 => {
185 push_directive(tokens, "h1");
186 }
187 }
188 }
189 tokens.push(PtxToken::Comma);
190 self.b.unparse_tokens(tokens);
191 if let Some(bsel_3) = self.bsel.as_ref() {
192 match bsel_3 {
193 Bsel::B0 => {
194 push_directive(tokens, "b0");
195 }
196 Bsel::B1 => {
197 push_directive(tokens, "b1");
198 }
199 Bsel::B2 => {
200 push_directive(tokens, "b2");
201 }
202 Bsel::B3 => {
203 push_directive(tokens, "b3");
204 }
205 Bsel::H0 => {
206 push_directive(tokens, "h0");
207 }
208 Bsel::H1 => {
209 push_directive(tokens, "h1");
210 }
211 }
212 }
213 tokens.push(PtxToken::Comma);
214 self.c.unparse_tokens(tokens);
215 tokens.push(PtxToken::Semicolon);
216 }
217 }
218
219 impl PtxUnparser for VsetAtypeBtypeCmp1 {
220 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
221 push_opcode(tokens, "vset");
222 match &self.atype {
223 Atype::U32 => {
224 push_directive(tokens, "u32");
225 }
226 Atype::S32 => {
227 push_directive(tokens, "s32");
228 }
229 }
230 match &self.btype {
231 Btype::U32 => {
232 push_directive(tokens, "u32");
233 }
234 Btype::S32 => {
235 push_directive(tokens, "s32");
236 }
237 }
238 match &self.cmp {
239 Cmp::Eq => {
240 push_directive(tokens, "eq");
241 }
242 Cmp::Ne => {
243 push_directive(tokens, "ne");
244 }
245 Cmp::Lt => {
246 push_directive(tokens, "lt");
247 }
248 Cmp::Le => {
249 push_directive(tokens, "le");
250 }
251 Cmp::Gt => {
252 push_directive(tokens, "gt");
253 }
254 Cmp::Ge => {
255 push_directive(tokens, "ge");
256 }
257 }
258 self.d.unparse_tokens(tokens);
259 match &self.dsel {
260 Dsel::B0 => {
261 push_directive(tokens, "b0");
262 }
263 Dsel::B1 => {
264 push_directive(tokens, "b1");
265 }
266 Dsel::B2 => {
267 push_directive(tokens, "b2");
268 }
269 Dsel::B3 => {
270 push_directive(tokens, "b3");
271 }
272 Dsel::H0 => {
273 push_directive(tokens, "h0");
274 }
275 Dsel::H1 => {
276 push_directive(tokens, "h1");
277 }
278 }
279 tokens.push(PtxToken::Comma);
280 self.a.unparse_tokens(tokens);
281 if let Some(asel_4) = self.asel.as_ref() {
282 match asel_4 {
283 Asel::B0 => {
284 push_directive(tokens, "b0");
285 }
286 Asel::B1 => {
287 push_directive(tokens, "b1");
288 }
289 Asel::B2 => {
290 push_directive(tokens, "b2");
291 }
292 Asel::B3 => {
293 push_directive(tokens, "b3");
294 }
295 Asel::H0 => {
296 push_directive(tokens, "h0");
297 }
298 Asel::H1 => {
299 push_directive(tokens, "h1");
300 }
301 }
302 }
303 tokens.push(PtxToken::Comma);
304 self.b.unparse_tokens(tokens);
305 if let Some(bsel_5) = self.bsel.as_ref() {
306 match bsel_5 {
307 Bsel::B0 => {
308 push_directive(tokens, "b0");
309 }
310 Bsel::B1 => {
311 push_directive(tokens, "b1");
312 }
313 Bsel::B2 => {
314 push_directive(tokens, "b2");
315 }
316 Bsel::B3 => {
317 push_directive(tokens, "b3");
318 }
319 Bsel::H0 => {
320 push_directive(tokens, "h0");
321 }
322 Bsel::H1 => {
323 push_directive(tokens, "h1");
324 }
325 }
326 }
327 tokens.push(PtxToken::Comma);
328 self.c.unparse_tokens(tokens);
329 tokens.push(PtxToken::Semicolon);
330 }
331 }
332}