ptx_parser/parser/instruction/
suld.rs1#![allow(unused)]
12
13use crate::lexer::PtxToken;
14use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
15use crate::r#type::common::*;
16
17pub mod section_0 {
18 use super::*;
19 use crate::r#type::instruction::suld::section_0::*;
20
21 impl PtxParser for Cop {
26 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
27 {
29 let saved_pos = stream.position();
30 if stream.expect_string(".ca").is_ok() {
31 return Ok(Cop::Ca);
32 }
33 stream.set_position(saved_pos);
34 }
35 let saved_pos = stream.position();
36 {
38 let saved_pos = stream.position();
39 if stream.expect_string(".cg").is_ok() {
40 return Ok(Cop::Cg);
41 }
42 stream.set_position(saved_pos);
43 }
44 stream.set_position(saved_pos);
45 let saved_pos = stream.position();
46 {
48 let saved_pos = stream.position();
49 if stream.expect_string(".cs").is_ok() {
50 return Ok(Cop::Cs);
51 }
52 stream.set_position(saved_pos);
53 }
54 stream.set_position(saved_pos);
55 let saved_pos = stream.position();
56 {
58 let saved_pos = stream.position();
59 if stream.expect_string(".cv").is_ok() {
60 return Ok(Cop::Cv);
61 }
62 stream.set_position(saved_pos);
63 }
64 stream.set_position(saved_pos);
65 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
66 let expected = &[".ca", ".cg", ".cs", ".cv"];
67 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
68 Err(crate::parser::unexpected_value(span, expected, found))
69 }
70 }
71
72 impl PtxParser for Dtype {
73 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
74 {
76 let saved_pos = stream.position();
77 if stream.expect_string(".b16").is_ok() {
78 return Ok(Dtype::B16);
79 }
80 stream.set_position(saved_pos);
81 }
82 let saved_pos = stream.position();
83 {
85 let saved_pos = stream.position();
86 if stream.expect_string(".b32").is_ok() {
87 return Ok(Dtype::B32);
88 }
89 stream.set_position(saved_pos);
90 }
91 stream.set_position(saved_pos);
92 let saved_pos = stream.position();
93 {
95 let saved_pos = stream.position();
96 if stream.expect_string(".b64").is_ok() {
97 return Ok(Dtype::B64);
98 }
99 stream.set_position(saved_pos);
100 }
101 stream.set_position(saved_pos);
102 let saved_pos = stream.position();
103 {
105 let saved_pos = stream.position();
106 if stream.expect_string(".b8").is_ok() {
107 return Ok(Dtype::B8);
108 }
109 stream.set_position(saved_pos);
110 }
111 stream.set_position(saved_pos);
112 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
113 let expected = &[".b16", ".b32", ".b64", ".b8"];
114 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
115 Err(crate::parser::unexpected_value(span, expected, found))
116 }
117 }
118
119 impl PtxParser for Geom {
120 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
121 {
123 let saved_pos = stream.position();
124 if stream.expect_string(".a1d").is_ok() {
125 return Ok(Geom::A1d);
126 }
127 stream.set_position(saved_pos);
128 }
129 let saved_pos = stream.position();
130 {
132 let saved_pos = stream.position();
133 if stream.expect_string(".a2d").is_ok() {
134 return Ok(Geom::A2d);
135 }
136 stream.set_position(saved_pos);
137 }
138 stream.set_position(saved_pos);
139 let saved_pos = stream.position();
140 {
142 let saved_pos = stream.position();
143 if stream.expect_string(".1d").is_ok() {
144 return Ok(Geom::_1d);
145 }
146 stream.set_position(saved_pos);
147 }
148 stream.set_position(saved_pos);
149 let saved_pos = stream.position();
150 {
152 let saved_pos = stream.position();
153 if stream.expect_string(".2d").is_ok() {
154 return Ok(Geom::_2d);
155 }
156 stream.set_position(saved_pos);
157 }
158 stream.set_position(saved_pos);
159 let saved_pos = stream.position();
160 {
162 let saved_pos = stream.position();
163 if stream.expect_string(".3d").is_ok() {
164 return Ok(Geom::_3d);
165 }
166 stream.set_position(saved_pos);
167 }
168 stream.set_position(saved_pos);
169 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
170 let expected = &[".a1d", ".a2d", ".1d", ".2d", ".3d"];
171 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
172 Err(crate::parser::unexpected_value(span, expected, found))
173 }
174 }
175
176 impl PtxParser for Mode {
177 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
178 {
180 let saved_pos = stream.position();
181 if stream.expect_string(".clamp").is_ok() {
182 return Ok(Mode::Clamp);
183 }
184 stream.set_position(saved_pos);
185 }
186 let saved_pos = stream.position();
187 {
189 let saved_pos = stream.position();
190 if stream.expect_string(".trap").is_ok() {
191 return Ok(Mode::Trap);
192 }
193 stream.set_position(saved_pos);
194 }
195 stream.set_position(saved_pos);
196 let saved_pos = stream.position();
197 {
199 let saved_pos = stream.position();
200 if stream.expect_string(".zero").is_ok() {
201 return Ok(Mode::Zero);
202 }
203 stream.set_position(saved_pos);
204 }
205 stream.set_position(saved_pos);
206 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
207 let expected = &[".clamp", ".trap", ".zero"];
208 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
209 Err(crate::parser::unexpected_value(span, expected, found))
210 }
211 }
212
213 impl PtxParser for Vec {
214 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
215 {
217 let saved_pos = stream.position();
218 if stream.expect_string("none").is_ok() {
219 return Ok(Vec::None);
220 }
221 stream.set_position(saved_pos);
222 }
223 let saved_pos = stream.position();
224 {
226 let saved_pos = stream.position();
227 if stream.expect_string(".v2").is_ok() {
228 return Ok(Vec::V2);
229 }
230 stream.set_position(saved_pos);
231 }
232 stream.set_position(saved_pos);
233 let saved_pos = stream.position();
234 {
236 let saved_pos = stream.position();
237 if stream.expect_string(".v4").is_ok() {
238 return Ok(Vec::V4);
239 }
240 stream.set_position(saved_pos);
241 }
242 stream.set_position(saved_pos);
243 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
244 let expected = &["none", ".v2", ".v4"];
245 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
246 Err(crate::parser::unexpected_value(span, expected, found))
247 }
248 }
249
250 impl PtxParser for SuldBGeomCopVecDtypeMode {
251 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
252 stream.expect_string("suld")?;
253 stream.expect_string(".b")?;
254 let b = ();
255 stream.expect_complete()?;
256 let geom = Geom::parse(stream)?;
257 stream.expect_complete()?;
258 let saved_pos = stream.position();
259 let cop = match Cop::parse(stream) {
260 Ok(val) => Some(val),
261 Err(_) => {
262 stream.set_position(saved_pos);
263 None
264 }
265 };
266 stream.expect_complete()?;
267 let vec = Vec::parse(stream)?;
268 stream.expect_complete()?;
269 let dtype = Dtype::parse(stream)?;
270 stream.expect_complete()?;
271 let saved_pos = stream.position();
272 let mode = match Mode::parse(stream) {
273 Ok(val) => Some(val),
274 Err(_) => {
275 stream.set_position(saved_pos);
276 None
277 }
278 };
279 stream.expect_complete()?;
280 let d = GeneralOperand::parse(stream)?;
281 stream.expect_complete()?;
282 stream.expect(&PtxToken::Comma)?;
283 let a = TexHandler2::parse(stream)?;
284 stream.expect_complete()?;
285 stream.expect_complete()?;
286 stream.expect(&PtxToken::Semicolon)?;
287 Ok(SuldBGeomCopVecDtypeMode {
288 b,
289 geom,
290 cop,
291 vec,
292 dtype,
293 mode,
294 d,
295 a,
296 })
297 }
298 }
299
300
301}
302