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