ptx_parser/parser/instruction/
testp.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::testp::section_0::*;
18
19 impl PtxParser for Op {
24 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
25 {
27 let saved_pos = stream.position();
28 if stream.expect_string(".notanumber").is_ok() {
29 return Ok(Op::Notanumber);
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(".subnormal").is_ok() {
38 return Ok(Op::Subnormal);
39 }
40 stream.set_position(saved_pos);
41 }
42 stream.set_position(saved_pos);
43 let saved_pos = stream.position();
44 {
46 let saved_pos = stream.position();
47 if stream.expect_string(".infinite").is_ok() {
48 return Ok(Op::Infinite);
49 }
50 stream.set_position(saved_pos);
51 }
52 stream.set_position(saved_pos);
53 let saved_pos = stream.position();
54 {
56 let saved_pos = stream.position();
57 if stream.expect_string(".finite").is_ok() {
58 return Ok(Op::Finite);
59 }
60 stream.set_position(saved_pos);
61 }
62 stream.set_position(saved_pos);
63 let saved_pos = stream.position();
64 {
66 let saved_pos = stream.position();
67 if stream.expect_string(".number").is_ok() {
68 return Ok(Op::Number);
69 }
70 stream.set_position(saved_pos);
71 }
72 stream.set_position(saved_pos);
73 let saved_pos = stream.position();
74 {
76 let saved_pos = stream.position();
77 if stream.expect_string(".normal").is_ok() {
78 return Ok(Op::Normal);
79 }
80 stream.set_position(saved_pos);
81 }
82 stream.set_position(saved_pos);
83 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
84 let expected = &[".notanumber", ".subnormal", ".infinite", ".finite", ".number", ".normal"];
85 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
86 Err(crate::parser::unexpected_value(span, expected, found))
87 }
88 }
89
90 impl PtxParser for Type {
91 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
92 {
94 let saved_pos = stream.position();
95 if stream.expect_string(".f32").is_ok() {
96 return Ok(Type::F32);
97 }
98 stream.set_position(saved_pos);
99 }
100 let saved_pos = stream.position();
101 {
103 let saved_pos = stream.position();
104 if stream.expect_string(".f64").is_ok() {
105 return Ok(Type::F64);
106 }
107 stream.set_position(saved_pos);
108 }
109 stream.set_position(saved_pos);
110 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
111 let expected = &[".f32", ".f64"];
112 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
113 Err(crate::parser::unexpected_value(span, expected, found))
114 }
115 }
116
117 impl PtxParser for TestpOpType {
118 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
119 stream.expect_string("testp")?;
120 let op = Op::parse(stream)?;
121 stream.expect_complete()?;
122 let type_ = Type::parse(stream)?;
123 stream.expect_complete()?;
124 let p = GeneralOperand::parse(stream)?;
125 stream.expect_complete()?;
126 stream.expect(&PtxToken::Comma)?;
127 let a = GeneralOperand::parse(stream)?;
128 stream.expect_complete()?;
129 stream.expect_complete()?;
130 stream.expect(&PtxToken::Semicolon)?;
131 Ok(TestpOpType {
132 op,
133 type_,
134 p,
135 a,
136 })
137 }
138 }
139
140
141}
142