ptx_parser/parser/instruction/
tcgen05_cp.rs1#![allow(unused)]
10
11use crate::lexer::PtxToken;
12use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
13use crate::r#type::common::*;
14
15pub mod section_0 {
16 use super::*;
17 use crate::r#type::instruction::tcgen05_cp::section_0::*;
18
19 impl PtxParser for CtaGroup {
24 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
25 {
27 let saved_pos = stream.position();
28 if stream.expect_string(".cta_group::1").is_ok() {
29 return Ok(CtaGroup::CtaGroup1);
30 }
31 stream.set_position(saved_pos);
32 }
33 let saved_pos = stream.position();
34 {
36 let saved_pos = stream.position();
37 if stream.expect_string(".cta_group::2").is_ok() {
38 return Ok(CtaGroup::CtaGroup2);
39 }
40 stream.set_position(saved_pos);
41 }
42 stream.set_position(saved_pos);
43 let span = stream
44 .peek()
45 .map(|(_, s)| s.clone())
46 .unwrap_or(Span { start: 0, end: 0 });
47 let expected = &[".cta_group::1", ".cta_group::2"];
48 let found = stream
49 .peek()
50 .map(|(t, _)| format!("{:?}", t))
51 .unwrap_or_else(|_| "<end of input>".to_string());
52 Err(crate::parser::unexpected_value(span, expected, found))
53 }
54 }
55
56 impl PtxParser for DstSrcFmt {
57 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
58 {
60 let saved_pos = stream.position();
61 if stream.expect_string(".b8x16.b6x16_p32").is_ok() {
62 return Ok(DstSrcFmt::B8x16B6x16P32);
63 }
64 stream.set_position(saved_pos);
65 }
66 let saved_pos = stream.position();
67 {
69 let saved_pos = stream.position();
70 if stream.expect_string(".b8x16.b4x16_p64").is_ok() {
71 return Ok(DstSrcFmt::B8x16B4x16P64);
72 }
73 stream.set_position(saved_pos);
74 }
75 stream.set_position(saved_pos);
76 let span = stream
77 .peek()
78 .map(|(_, s)| s.clone())
79 .unwrap_or(Span { start: 0, end: 0 });
80 let expected = &[".b8x16.b6x16_p32", ".b8x16.b4x16_p64"];
81 let found = stream
82 .peek()
83 .map(|(t, _)| format!("{:?}", t))
84 .unwrap_or_else(|_| "<end of input>".to_string());
85 Err(crate::parser::unexpected_value(span, expected, found))
86 }
87 }
88
89 impl PtxParser for Multicast {
90 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
91 {
93 let saved_pos = stream.position();
94 if stream.expect_string(".warpx2::02_13**").is_ok() {
95 return Ok(Multicast::Warpx20213);
96 }
97 stream.set_position(saved_pos);
98 }
99 let saved_pos = stream.position();
100 {
102 let saved_pos = stream.position();
103 if stream.expect_string(".warpx2::01_23**").is_ok() {
104 return Ok(Multicast::Warpx20123);
105 }
106 stream.set_position(saved_pos);
107 }
108 stream.set_position(saved_pos);
109 let saved_pos = stream.position();
110 {
112 let saved_pos = stream.position();
113 if stream.expect_string(".warpx4***").is_ok() {
114 return Ok(Multicast::Warpx4);
115 }
116 stream.set_position(saved_pos);
117 }
118 stream.set_position(saved_pos);
119 let span = stream
120 .peek()
121 .map(|(_, s)| s.clone())
122 .unwrap_or(Span { start: 0, end: 0 });
123 let expected = &[".warpx2::02_13**", ".warpx2::01_23**", ".warpx4***"];
124 let found = stream
125 .peek()
126 .map(|(t, _)| format!("{:?}", t))
127 .unwrap_or_else(|_| "<end of input>".to_string());
128 Err(crate::parser::unexpected_value(span, expected, found))
129 }
130 }
131
132 impl PtxParser for Shape {
133 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
134 {
136 let saved_pos = stream.position();
137 if stream.expect_string(".32x128b***").is_ok() {
138 return Ok(Shape::_32x128b);
139 }
140 stream.set_position(saved_pos);
141 }
142 let saved_pos = stream.position();
143 {
145 let saved_pos = stream.position();
146 if stream.expect_string(".64x128b**").is_ok() {
147 return Ok(Shape::_64x128b);
148 }
149 stream.set_position(saved_pos);
150 }
151 stream.set_position(saved_pos);
152 let saved_pos = stream.position();
153 {
155 let saved_pos = stream.position();
156 if stream.expect_string(".128x256b").is_ok() {
157 return Ok(Shape::_128x256b);
158 }
159 stream.set_position(saved_pos);
160 }
161 stream.set_position(saved_pos);
162 let saved_pos = stream.position();
163 {
165 let saved_pos = stream.position();
166 if stream.expect_string(".128x128b").is_ok() {
167 return Ok(Shape::_128x128b);
168 }
169 stream.set_position(saved_pos);
170 }
171 stream.set_position(saved_pos);
172 let saved_pos = stream.position();
173 {
175 let saved_pos = stream.position();
176 if stream.expect_string(".4x256b").is_ok() {
177 return Ok(Shape::_4x256b);
178 }
179 stream.set_position(saved_pos);
180 }
181 stream.set_position(saved_pos);
182 let span = stream
183 .peek()
184 .map(|(_, s)| s.clone())
185 .unwrap_or(Span { start: 0, end: 0 });
186 let expected = &[
187 ".32x128b***",
188 ".64x128b**",
189 ".128x256b",
190 ".128x128b",
191 ".4x256b",
192 ];
193 let found = stream
194 .peek()
195 .map(|(t, _)| format!("{:?}", t))
196 .unwrap_or_else(|_| "<end of input>".to_string());
197 Err(crate::parser::unexpected_value(span, expected, found))
198 }
199 }
200
201 impl PtxParser for Tcgen05CpCtaGroupShapeMulticastDstSrcFmt {
202 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
203 stream.expect_string("tcgen05")?;
204 stream.expect_string(".cp")?;
205 let cp = ();
206 stream.expect_complete()?;
207 let cta_group = CtaGroup::parse(stream)?;
208 stream.expect_complete()?;
209 let shape = Shape::parse(stream)?;
210 stream.expect_complete()?;
211 let saved_pos = stream.position();
212 let multicast = match Multicast::parse(stream) {
213 Ok(val) => Some(val),
214 Err(_) => {
215 stream.set_position(saved_pos);
216 None
217 }
218 };
219 stream.expect_complete()?;
220 let saved_pos = stream.position();
221 let dst_src_fmt = match DstSrcFmt::parse(stream) {
222 Ok(val) => Some(val),
223 Err(_) => {
224 stream.set_position(saved_pos);
225 None
226 }
227 };
228 stream.expect_complete()?;
229 let taddr = AddressOperand::parse(stream)?;
230 stream.expect_complete()?;
231 stream.expect(&PtxToken::Comma)?;
232 let s_desc = GeneralOperand::parse(stream)?;
233 stream.expect_complete()?;
234 stream.expect_complete()?;
235 stream.expect(&PtxToken::Semicolon)?;
236 Ok(Tcgen05CpCtaGroupShapeMulticastDstSrcFmt {
237 cp,
238 cta_group,
239 shape,
240 multicast,
241 dst_src_fmt,
242 taddr,
243 s_desc,
244 })
245 }
246 }
247}