ptx_parser/parser/instruction/
getctarank.rs1#![allow(unused)]
16
17use crate::lexer::PtxToken;
18use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
19use crate::r#type::common::*;
20
21pub mod section_0 {
22 use super::*;
23 use crate::r#type::instruction::getctarank::section_0::*;
24
25 impl PtxParser for Space {
30 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
31 {
33 let saved_pos = stream.position();
34 if stream.expect_string(".shared::cluster").is_ok() {
35 return Ok(Space::SharedCluster);
36 }
37 stream.set_position(saved_pos);
38 }
39 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
40 let expected = &[".shared::cluster"];
41 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
42 Err(crate::parser::unexpected_value(span, expected, found))
43 }
44 }
45
46 impl PtxParser for Type {
47 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
48 {
50 let saved_pos = stream.position();
51 if stream.expect_string(".u32").is_ok() {
52 return Ok(Type::U32);
53 }
54 stream.set_position(saved_pos);
55 }
56 let saved_pos = stream.position();
57 {
59 let saved_pos = stream.position();
60 if stream.expect_string(".u64").is_ok() {
61 return Ok(Type::U64);
62 }
63 stream.set_position(saved_pos);
64 }
65 stream.set_position(saved_pos);
66 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
67 let expected = &[".u32", ".u64"];
68 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
69 Err(crate::parser::unexpected_value(span, expected, found))
70 }
71 }
72
73 impl PtxParser for GetctarankSpaceType {
74 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
75 stream.expect_string("getctarank")?;
76 let saved_pos = stream.position();
77 let space = match Space::parse(stream) {
78 Ok(val) => Some(val),
79 Err(_) => {
80 stream.set_position(saved_pos);
81 None
82 }
83 };
84 stream.expect_complete()?;
85 let type_ = Type::parse(stream)?;
86 stream.expect_complete()?;
87 let d = GeneralOperand::parse(stream)?;
88 stream.expect_complete()?;
89 stream.expect(&PtxToken::Comma)?;
90 let a = GeneralOperand::parse(stream)?;
91 stream.expect_complete()?;
92 stream.expect_complete()?;
93 stream.expect(&PtxToken::Semicolon)?;
94 Ok(GetctarankSpaceType {
95 space,
96 type_,
97 d,
98 a,
99 })
100 }
101 }
102
103
104 impl PtxParser for GetctarankSharedClusterType {
105 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
106 stream.expect_string("getctarank")?;
107 stream.expect_string(".shared::cluster")?;
108 let shared_cluster = ();
109 stream.expect_complete()?;
110 let type_ = Type::parse(stream)?;
111 stream.expect_complete()?;
112 let d = GeneralOperand::parse(stream)?;
113 stream.expect_complete()?;
114 stream.expect(&PtxToken::Comma)?;
115 let a = GeneralOperand::parse(stream)?;
116 stream.expect_complete()?;
117 stream.expect_complete()?;
118 stream.expect(&PtxToken::Semicolon)?;
119 Ok(GetctarankSharedClusterType {
120 shared_cluster,
121 type_,
122 d,
123 a,
124 })
125 }
126 }
127
128
129 impl PtxParser for GetctarankType {
130 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
131 stream.expect_string("getctarank")?;
132 let type_ = Type::parse(stream)?;
133 stream.expect_complete()?;
134 let d = GeneralOperand::parse(stream)?;
135 stream.expect_complete()?;
136 stream.expect(&PtxToken::Comma)?;
137 let a = GeneralOperand::parse(stream)?;
138 stream.expect_complete()?;
139 stream.expect_complete()?;
140 stream.expect(&PtxToken::Semicolon)?;
141 Ok(GetctarankType {
142 type_,
143 d,
144 a,
145 })
146 }
147 }
148
149
150}
151