ptx_parser/parser/instruction/
lop3.rs1#![allow(unused)]
8
9use crate::lexer::PtxToken;
10use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
11use crate::r#type::common::*;
12
13pub mod section_0 {
14 use super::*;
15 use crate::r#type::instruction::lop3::section_0::*;
16
17 impl PtxParser for Boolop {
22 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
23 {
25 let saved_pos = stream.position();
26 if stream.expect_string(".and").is_ok() {
27 return Ok(Boolop::And);
28 }
29 stream.set_position(saved_pos);
30 }
31 let saved_pos = stream.position();
32 {
34 let saved_pos = stream.position();
35 if stream.expect_string(".or").is_ok() {
36 return Ok(Boolop::Or);
37 }
38 stream.set_position(saved_pos);
39 }
40 stream.set_position(saved_pos);
41 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
42 let expected = &[".and", ".or"];
43 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
44 Err(crate::parser::unexpected_value(span, expected, found))
45 }
46 }
47
48 impl PtxParser for Lop3B32 {
49 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
50 stream.expect_string("lop3")?;
51 stream.expect_string(".b32")?;
52 let b32 = ();
53 stream.expect_complete()?;
54 let d = GeneralOperand::parse(stream)?;
55 stream.expect_complete()?;
56 stream.expect(&PtxToken::Comma)?;
57 let a = GeneralOperand::parse(stream)?;
58 stream.expect_complete()?;
59 stream.expect(&PtxToken::Comma)?;
60 let b = GeneralOperand::parse(stream)?;
61 stream.expect_complete()?;
62 stream.expect(&PtxToken::Comma)?;
63 let c = GeneralOperand::parse(stream)?;
64 stream.expect_complete()?;
65 stream.expect(&PtxToken::Comma)?;
66 let immlut = GeneralOperand::parse(stream)?;
67 stream.expect_complete()?;
68 stream.expect_complete()?;
69 stream.expect(&PtxToken::Semicolon)?;
70 Ok(Lop3B32 {
71 b32,
72 d,
73 a,
74 b,
75 c,
76 immlut,
77 })
78 }
79 }
80
81
82 impl PtxParser for Lop3BoolopB32 {
83 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
84 stream.expect_string("lop3")?;
85 let boolop = Boolop::parse(stream)?;
86 stream.expect_complete()?;
87 stream.expect_string(".b32")?;
88 let b32 = ();
89 stream.expect_complete()?;
90 let d = GeneralOperand::parse(stream)?;
91 stream.expect(&PtxToken::Pipe)?;
92 let p = GeneralOperand::parse(stream)?;
93 stream.expect_complete()?;
94 stream.expect(&PtxToken::Comma)?;
95 let a = GeneralOperand::parse(stream)?;
96 stream.expect_complete()?;
97 stream.expect(&PtxToken::Comma)?;
98 let b = GeneralOperand::parse(stream)?;
99 stream.expect_complete()?;
100 stream.expect(&PtxToken::Comma)?;
101 let c = GeneralOperand::parse(stream)?;
102 stream.expect_complete()?;
103 stream.expect(&PtxToken::Comma)?;
104 let immlut = GeneralOperand::parse(stream)?;
105 stream.expect_complete()?;
106 stream.expect(&PtxToken::Comma)?;
107 let q = GeneralOperand::parse(stream)?;
108 stream.expect_complete()?;
109 stream.expect_complete()?;
110 stream.expect(&PtxToken::Semicolon)?;
111 Ok(Lop3BoolopB32 {
112 boolop,
113 b32,
114 d,
115 p,
116 a,
117 b,
118 c,
119 immlut,
120 q,
121 })
122 }
123 }
124
125
126}
127