ptx_parser/parser/instruction/
ex2.rs1#![allow(unused)]
11
12use crate::lexer::PtxToken;
13use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
14use crate::r#type::common::*;
15
16pub mod section_0 {
17 use super::*;
18 use crate::r#type::instruction::ex2::section_0::*;
19
20 impl PtxParser for Atype {
25 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
26 {
28 let saved_pos = stream.position();
29 if stream.expect_string(".f16x2").is_ok() {
30 return Ok(Atype::F16x2);
31 }
32 stream.set_position(saved_pos);
33 }
34 let saved_pos = stream.position();
35 {
37 let saved_pos = stream.position();
38 if stream.expect_string(".f16").is_ok() {
39 return Ok(Atype::F16);
40 }
41 stream.set_position(saved_pos);
42 }
43 stream.set_position(saved_pos);
44 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
45 let expected = &[".f16x2", ".f16"];
46 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
47 Err(crate::parser::unexpected_value(span, expected, found))
48 }
49 }
50
51 impl PtxParser for Btype {
52 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
53 {
55 let saved_pos = stream.position();
56 if stream.expect_string(".bf16x2").is_ok() {
57 return Ok(Btype::Bf16x2);
58 }
59 stream.set_position(saved_pos);
60 }
61 let saved_pos = stream.position();
62 {
64 let saved_pos = stream.position();
65 if stream.expect_string(".bf16").is_ok() {
66 return Ok(Btype::Bf16);
67 }
68 stream.set_position(saved_pos);
69 }
70 stream.set_position(saved_pos);
71 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
72 let expected = &[".bf16x2", ".bf16"];
73 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
74 Err(crate::parser::unexpected_value(span, expected, found))
75 }
76 }
77
78 impl PtxParser for Ex2ApproxFtzF32 {
79 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
80 stream.expect_string("ex2")?;
81 stream.expect_string(".approx")?;
82 let approx = ();
83 stream.expect_complete()?;
84 let saved_pos = stream.position();
85 let ftz = stream.expect_string(".ftz").is_ok();
86 if !ftz {
87 stream.set_position(saved_pos);
88 }
89 stream.expect_complete()?;
90 stream.expect_string(".f32")?;
91 let f32 = ();
92 stream.expect_complete()?;
93 let d = GeneralOperand::parse(stream)?;
94 stream.expect_complete()?;
95 stream.expect(&PtxToken::Comma)?;
96 let a = GeneralOperand::parse(stream)?;
97 stream.expect_complete()?;
98 stream.expect_complete()?;
99 stream.expect(&PtxToken::Semicolon)?;
100 Ok(Ex2ApproxFtzF32 {
101 approx,
102 ftz,
103 f32,
104 d,
105 a,
106 })
107 }
108 }
109
110
111 impl PtxParser for Ex2ApproxAtype {
112 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
113 stream.expect_string("ex2")?;
114 stream.expect_string(".approx")?;
115 let approx = ();
116 stream.expect_complete()?;
117 let atype = Atype::parse(stream)?;
118 stream.expect_complete()?;
119 let d = GeneralOperand::parse(stream)?;
120 stream.expect_complete()?;
121 stream.expect(&PtxToken::Comma)?;
122 let a = GeneralOperand::parse(stream)?;
123 stream.expect_complete()?;
124 stream.expect_complete()?;
125 stream.expect(&PtxToken::Semicolon)?;
126 Ok(Ex2ApproxAtype {
127 approx,
128 atype,
129 d,
130 a,
131 })
132 }
133 }
134
135
136 impl PtxParser for Ex2ApproxFtzBtype {
137 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
138 stream.expect_string("ex2")?;
139 stream.expect_string(".approx")?;
140 let approx = ();
141 stream.expect_complete()?;
142 stream.expect_string(".ftz")?;
143 let ftz = ();
144 stream.expect_complete()?;
145 let btype = Btype::parse(stream)?;
146 stream.expect_complete()?;
147 let d = GeneralOperand::parse(stream)?;
148 stream.expect_complete()?;
149 stream.expect(&PtxToken::Comma)?;
150 let a = GeneralOperand::parse(stream)?;
151 stream.expect_complete()?;
152 stream.expect_complete()?;
153 stream.expect(&PtxToken::Semicolon)?;
154 Ok(Ex2ApproxFtzBtype {
155 approx,
156 ftz,
157 btype,
158 d,
159 a,
160 })
161 }
162 }
163
164
165}
166