/src/wasmtime/pulley/src/disas.rs
Line | Count | Source (jump to first uncovered line) |
1 | | //! Disassembly support for pulley bytecode. |
2 | | |
3 | | use crate::decode::*; |
4 | | use crate::imms::*; |
5 | | use crate::regs::*; |
6 | | use alloc::string::String; |
7 | | use core::fmt::Write; |
8 | | |
9 | | /// A Pulley bytecode disassembler. |
10 | | /// |
11 | | /// This is implemented as an `OpVisitor`, where you pass a `Disassembler` to a |
12 | | /// `Decoder` in order to disassemble instructions from a bytecode stream. |
13 | | /// |
14 | | /// Alternatively, you can use the `Disassembler::disassemble_all` method to |
15 | | /// disassemble a complete bytecode stream. |
16 | | pub struct Disassembler<'a> { |
17 | | raw_bytecode: &'a [u8], |
18 | | bytecode: SafeBytecodeStream<'a>, |
19 | | disas: String, |
20 | | start_offset: usize, |
21 | | start: usize, |
22 | | temp: String, |
23 | | offsets: bool, |
24 | | hexdump: bool, |
25 | | } |
26 | | |
27 | | impl<'a> Disassembler<'a> { |
28 | | /// Disassemble every instruction in the given bytecode stream. |
29 | 0 | pub fn disassemble_all(bytecode: &'a [u8]) -> Result<String> { |
30 | 0 | let mut disas = Self::new(bytecode); |
31 | 0 | Decoder::decode_all(&mut disas)?; |
32 | 0 | Ok(disas.disas) |
33 | 0 | } |
34 | | |
35 | | /// Create a new `Disassembler` that can be used to incrementally |
36 | | /// disassemble instructions from the given bytecode stream. |
37 | 0 | pub fn new(bytecode: &'a [u8]) -> Self { |
38 | 0 | Self { |
39 | 0 | raw_bytecode: bytecode, |
40 | 0 | bytecode: SafeBytecodeStream::new(bytecode), |
41 | 0 | disas: String::new(), |
42 | 0 | start: 0, |
43 | 0 | start_offset: 0, |
44 | 0 | temp: String::new(), |
45 | 0 | offsets: true, |
46 | 0 | hexdump: true, |
47 | 0 | } |
48 | 0 | } |
49 | | |
50 | | /// Whether to prefix each instruction's disassembly with its offset. |
51 | | /// |
52 | | /// True by default. |
53 | 0 | pub fn offsets(&mut self, offsets: bool) -> &mut Self { |
54 | 0 | self.offsets = offsets; |
55 | 0 | self |
56 | 0 | } |
57 | | |
58 | | /// Whether to include a hexdump of the bytecode in the disassembly. |
59 | | /// |
60 | | /// True by default. |
61 | 0 | pub fn hexdump(&mut self, hexdump: bool) -> &mut Self { |
62 | 0 | self.hexdump = hexdump; |
63 | 0 | self |
64 | 0 | } |
65 | | |
66 | | /// Configures the offset that this function starts from, if it doesn't |
67 | | /// start from 0. |
68 | | /// |
69 | | /// This can possibly be useful when a single function at a time is being |
70 | | /// disassembled. |
71 | 0 | pub fn start_offset(&mut self, offset: usize) -> &mut Self { |
72 | 0 | self.start_offset = offset; |
73 | 0 | self |
74 | 0 | } |
75 | | |
76 | | /// Get the disassembly thus far. |
77 | 0 | pub fn disas(&self) -> &str { |
78 | 0 | &self.disas |
79 | 0 | } |
80 | | |
81 | 0 | fn disas_op(&mut self, mnemonic: &str, operands: &[&dyn Disas]) { |
82 | 0 | write!(&mut self.temp, "{mnemonic}").unwrap(); |
83 | 0 | for (i, val) in operands.iter().enumerate() { |
84 | 0 | if i > 0 { |
85 | 0 | write!(&mut self.temp, ",").unwrap(); |
86 | 0 | } |
87 | 0 | write!(&mut self.temp, " ").unwrap(); |
88 | 0 | val.disas(self.start + self.start_offset, &mut self.temp); |
89 | | } |
90 | 0 | } |
91 | | |
92 | 0 | fn disas_br_table32(&mut self, reg: XReg, amt: u32) { |
93 | 0 | self.disas_op("br_table32", &[®, &amt]); |
94 | 0 | for _ in 0..amt { |
95 | 0 | self.after_visit(); |
96 | 0 | self.start = self.bytecode.position(); |
97 | 0 | if let Ok(offset) = PcRelOffset::decode(self.bytecode()) { |
98 | 0 | offset.disas(self.start + self.start_offset, &mut self.temp); |
99 | 0 | } |
100 | | } |
101 | 0 | } |
102 | | } |
103 | | |
104 | | /// Anything inside an instruction that can be disassembled: registers, |
105 | | /// immediates, etc... |
106 | | trait Disas { |
107 | | fn disas(&self, position: usize, disas: &mut String); |
108 | | } |
109 | | |
110 | | impl Disas for XReg { |
111 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
112 | 0 | write!(disas, "{self}").unwrap(); |
113 | 0 | } |
114 | | } |
115 | | |
116 | | impl Disas for FReg { |
117 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
118 | 0 | write!(disas, "{self}").unwrap(); |
119 | 0 | } |
120 | | } |
121 | | |
122 | | impl Disas for VReg { |
123 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
124 | 0 | write!(disas, "{self}").unwrap(); |
125 | 0 | } |
126 | | } |
127 | | |
128 | | impl Disas for i8 { |
129 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
130 | 0 | write!(disas, "{self}").unwrap(); |
131 | 0 | } |
132 | | } |
133 | | |
134 | | impl Disas for i16 { |
135 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
136 | 0 | write!(disas, "{self}").unwrap(); |
137 | 0 | } |
138 | | } |
139 | | |
140 | | impl Disas for i32 { |
141 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
142 | 0 | write!(disas, "{self}").unwrap(); |
143 | 0 | } |
144 | | } |
145 | | |
146 | | impl Disas for i64 { |
147 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
148 | 0 | write!(disas, "{self}").unwrap(); |
149 | 0 | } |
150 | | } |
151 | | |
152 | | impl Disas for i128 { |
153 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
154 | 0 | write!(disas, "{self}").unwrap(); |
155 | 0 | } |
156 | | } |
157 | | |
158 | | impl Disas for u8 { |
159 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
160 | 0 | write!(disas, "{self}").unwrap(); |
161 | 0 | } |
162 | | } |
163 | | |
164 | | impl Disas for u16 { |
165 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
166 | 0 | write!(disas, "{self}").unwrap(); |
167 | 0 | } |
168 | | } |
169 | | |
170 | | impl Disas for u32 { |
171 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
172 | 0 | write!(disas, "{self}").unwrap(); |
173 | 0 | } |
174 | | } |
175 | | |
176 | | impl Disas for u64 { |
177 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
178 | 0 | write!(disas, "{self}").unwrap(); |
179 | 0 | } |
180 | | } |
181 | | |
182 | | impl Disas for u128 { |
183 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
184 | 0 | write!(disas, "{self}").unwrap(); |
185 | 0 | } |
186 | | } |
187 | | |
188 | | impl Disas for PcRelOffset { |
189 | 0 | fn disas(&self, position: usize, disas: &mut String) { |
190 | 0 | let offset = isize::try_from(i32::from(*self)).unwrap(); |
191 | 0 | let target = position.wrapping_add(offset as usize); |
192 | 0 | write!(disas, "{offset:#x} // target = {target:#x}").unwrap() |
193 | 0 | } |
194 | | } |
195 | | |
196 | | impl Disas for U6 { |
197 | 0 | fn disas(&self, _position: usize, disas: &mut String) { |
198 | 0 | write!(disas, "{}", u8::from(*self)).unwrap(); |
199 | 0 | } |
200 | | } |
201 | | |
202 | 0 | fn disas_list<T: Disas>(position: usize, disas: &mut String, iter: impl IntoIterator<Item = T>) { |
203 | 0 | let mut iter = iter.into_iter(); |
204 | 0 | let Some(first) = iter.next() else { return }; |
205 | 0 | first.disas(position, disas); |
206 | | |
207 | 0 | for item in iter { |
208 | 0 | write!(disas, ", ").unwrap(); |
209 | 0 | item.disas(position, disas); |
210 | 0 | } |
211 | 0 | } |
212 | | |
213 | | impl<D, S1, S2> Disas for BinaryOperands<D, S1, S2> |
214 | | where |
215 | | D: Reg + Disas, |
216 | | S1: Reg + Disas, |
217 | | S2: Reg + Disas, |
218 | | { |
219 | 0 | fn disas(&self, position: usize, disas: &mut String) { |
220 | 0 | self.dst.disas(position, disas); |
221 | 0 | write!(disas, ", ").unwrap(); |
222 | 0 | self.src1.disas(position, disas); |
223 | 0 | write!(disas, ", ").unwrap(); |
224 | 0 | self.src2.disas(position, disas); |
225 | 0 | } Unexecuted instantiation: <pulley_interpreter::regs::BinaryOperands<pulley_interpreter::regs::FReg> as pulley_interpreter::disas::Disas>::disas Unexecuted instantiation: <pulley_interpreter::regs::BinaryOperands<pulley_interpreter::regs::VReg, pulley_interpreter::regs::VReg, pulley_interpreter::regs::FReg> as pulley_interpreter::disas::Disas>::disas Unexecuted instantiation: <pulley_interpreter::regs::BinaryOperands<pulley_interpreter::regs::VReg, pulley_interpreter::regs::VReg, pulley_interpreter::regs::XReg> as pulley_interpreter::disas::Disas>::disas Unexecuted instantiation: <pulley_interpreter::regs::BinaryOperands<pulley_interpreter::regs::VReg> as pulley_interpreter::disas::Disas>::disas Unexecuted instantiation: <pulley_interpreter::regs::BinaryOperands<pulley_interpreter::regs::XReg> as pulley_interpreter::disas::Disas>::disas |
226 | | } |
227 | | |
228 | | impl<D, S1> Disas for BinaryOperands<D, S1, U6> |
229 | | where |
230 | | D: Reg + Disas, |
231 | | S1: Reg + Disas, |
232 | | { |
233 | 0 | fn disas(&self, position: usize, disas: &mut String) { |
234 | 0 | self.dst.disas(position, disas); |
235 | 0 | write!(disas, ", ").unwrap(); |
236 | 0 | self.src1.disas(position, disas); |
237 | 0 | write!(disas, ", ").unwrap(); |
238 | 0 | self.src2.disas(position, disas); |
239 | 0 | } |
240 | | } |
241 | | |
242 | | impl<R: Reg + Disas> Disas for RegSet<R> { |
243 | 0 | fn disas(&self, position: usize, disas: &mut String) { |
244 | 0 | disas_list(position, disas, *self) |
245 | 0 | } |
246 | | } |
247 | | |
248 | | macro_rules! impl_disas { |
249 | | ( |
250 | | $( |
251 | | $( #[$attr:meta] )* |
252 | | $snake_name:ident = $name:ident $( { |
253 | | $( |
254 | | $( #[$field_attr:meta] )* |
255 | | $field:ident : $field_ty:ty |
256 | | ),* |
257 | | } )? ; |
258 | | )* |
259 | | ) => { |
260 | | $( |
261 | | impl_disas!(@one $snake_name = $name $( { $($field: $field_ty),* } )?); |
262 | | )* |
263 | | }; |
264 | | |
265 | | // Diassembling `br_table` is a bit special as it has trailing byte after |
266 | | // the opcode of the branch table itself. |
267 | | ( |
268 | | @one br_table32 = BrTable32 $( { |
269 | | $( |
270 | | $field:ident : $field_ty:ty |
271 | | ),* |
272 | | } )? |
273 | | ) => { |
274 | 0 | fn br_table32(&mut self $( $( , $field : $field_ty )* )? ) { |
275 | 0 | self.disas_br_table32($($($field),*)?) |
276 | 0 | } |
277 | | }; |
278 | | |
279 | | // All other opcodes other than `br_table` are handled in the same manner. |
280 | | ( |
281 | | @one $snake_name:ident = $name:ident $( { |
282 | | $( |
283 | | $field:ident : $field_ty:ty |
284 | | ),* |
285 | | } )? |
286 | | ) => { |
287 | 0 | fn $snake_name(&mut self $( $( , $field : $field_ty )* )? ) { |
288 | 0 | self.disas_op(stringify!($snake_name), &[$($(&$field),*)?]) |
289 | 0 | } Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::ret Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call1 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call3 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::call_indirect Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::jump Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xjump Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_not32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgt32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgt32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgteq32_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgteq32_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugt32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugt32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugteq32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugteq32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xeq64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xneq64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslt64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgt64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgt64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xslteq64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgteq64_i8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xsgteq64_i32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xult64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xulteq64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugt64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugt64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugteq64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::br_if_xugteq64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmov Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xconst8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xconst16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xconst32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xconst64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xadd64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub32_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub32_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub64_u8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xsub64_u32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul32_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul32_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul64_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmul64_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xctz32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xctz64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xclz32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xclz64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xpopcnt32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xpopcnt64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrotl32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrotl64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrotr32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrotr64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshl32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshl64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshl32_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr32_s_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr32_u_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshl64_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr64_s_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xshr64_u_u6 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xneg32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xneg64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xeq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xneq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xslt64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xslteq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xult64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xulteq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xeq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xneq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xslt32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xslteq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xult32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xulteq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_u32_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_s32_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_u32_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_s32_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_u64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_s64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_u64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_s64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_u64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_s64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload64le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore8_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore16le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore32le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore64le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_u32_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_s32_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_u32_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_s32_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_u64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload8_s64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_u64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload16le_s64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_u64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload32le_s64_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xload64le_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore8_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore16le_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore32le_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xstore64le_offset8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::push_frame Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::pop_frame Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::push_frame_save Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::pop_frame_restore Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::stack_alloc32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::stack_free32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::zext8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::zext16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::zext32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::sext8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::sext16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::sext32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xabs32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xabs64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xdiv32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xdiv64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xdiv32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xdiv64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrem32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrem64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrem32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xrem64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband32_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband32_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband64_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xband64_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor32_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor32_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor64_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbor64_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor32_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor32_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor64_s8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbxor64_s32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbnot32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xbnot64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmin32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmin32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmax32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmax32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmin64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmin64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmax64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xmax64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xselect32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::OpVisitor>::xselect64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::trap Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::nop Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::call_indirect_host Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xmov_fp Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xmov_lr Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bswap32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bswap64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xadd32_uoverflow_trap Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xadd64_uoverflow_trap Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xmulhi64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xmulhi64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xbmask32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xbmask64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpush32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpush32_many Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpush64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpush64_many Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpop32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpop32_many Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpop64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xpop64_many Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xload16be_u64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xload16be_s64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xload32be_u64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xload32be_s64_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xload64be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xstore16be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xstore32be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xstore64be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fload32be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fload64be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fstore32be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fstore64be_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fload32le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fload64le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fstore32le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fstore64le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload128le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vstore128le_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fmov Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmov Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bitcast_int_from_float_32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bitcast_int_from_float_64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bitcast_float_from_int_32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::bitcast_float_from_int_64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fconst32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fconst64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::feq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fneq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::flt32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::flteq32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::feq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fneq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::flt64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::flteq64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fselect32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fselect64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f32_from_f64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f64_from_f32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f32_from_x32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f32_from_x32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f32_from_x64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f32_from_x64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f64_from_x32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f64_from_x32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f64_from_x64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::f64_from_x64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f32_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f32_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f64_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f64_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f32_s_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f32_u_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f64_s_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x32_from_f64_u_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f32_s_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f32_u_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f64_s_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::x64_from_f64_u_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fcopysign32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fcopysign64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fadd32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fsub32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fmul32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fdiv32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vdivf32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fmaximum32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fminimum32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::ftrunc32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vtrunc32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vtrunc64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::ffloor32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vfloor32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vfloor64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fceil32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vceil32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vceil64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fnearest32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fsqrt32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsqrt32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsqrt64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fneg32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fabs32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fadd64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fsub64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fmul64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fdiv64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vdivf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fmaximum64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fminimum64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::ftrunc64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::ffloor64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fceil64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fnearest64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnearest32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnearest64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fsqrt64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fneg64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fabs64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vconst128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddf32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi8x16_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddu8x16_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddi16x8_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddu16x8_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddpairwisei16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vaddpairwisei32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshli8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshli16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshli32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshli64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri8x16_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri64x2_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri8x16_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshri64x2_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatx8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatx16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatx32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatx64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatf32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsplatf64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload8x8_s_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload8x8_u_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload16x4le_s_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload16x4le_u_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload32x2le_s_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vload32x2le_u_offset32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vband128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbor128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbxor128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbnot128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbitselect128 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbitmask8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbitmask16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbitmask32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vbitmask64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::valltrue8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::valltrue16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::valltrue32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::valltrue64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vanytrue8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vanytrue16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vanytrue32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vanytrue64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vf32x4_from_i32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vf32x4_from_i32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vf64x2_from_i64x2_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vf64x2_from_i64x2_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow8x16_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow8x16_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenlow32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh8x16_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh8x16_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vwidenhigh32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnarrow16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnarrow16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnarrow32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnarrow32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vfpromotelow Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vfdemote Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi8x16_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubu8x16_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubi16x8_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vsubu16x8_sat Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmuli8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmuli16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmuli32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmuli64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmulf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vqmulrsi16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vpopcnt8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xextractv8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xextractv16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xextractv32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::xextractv64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fextractv32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::fextractv64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertx8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertx16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertx32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertx64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertf32 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vinsertf64 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::veq8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneq8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslt8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslteq8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vult8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vulteq8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::veq16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneq16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslt16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslteq16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vult16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vulteq16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::veq32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneq32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslt32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslteq32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vult32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vulteq32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::veq64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneq64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslt64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vslteq64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vult64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vulteq64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneg8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneg16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneg32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vneg64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vnegf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin8x16_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin8x16_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax8x16_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax8x16_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax16x8_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax16x8_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmin32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax32x4_s Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmax32x4_u Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabs8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabs16x8 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabs32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabs64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabsf32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vabsf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmaximumf32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vmaximumf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vminimumf32x4 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vminimumf64x2 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vshuffle Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vswizzlei8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vavground8x16 Unexecuted instantiation: <pulley_interpreter::disas::Disassembler as pulley_interpreter::decode::ExtendedOpVisitor>::vavground16x8 |
290 | | }; |
291 | | } |
292 | | |
293 | | impl<'a> OpVisitor for Disassembler<'a> { |
294 | | type BytecodeStream = SafeBytecodeStream<'a>; |
295 | | |
296 | 0 | fn bytecode(&mut self) -> &mut Self::BytecodeStream { |
297 | 0 | &mut self.bytecode |
298 | 0 | } |
299 | | |
300 | | type Return = (); |
301 | | |
302 | 0 | fn before_visit(&mut self) { |
303 | 0 | self.start = self.bytecode.position(); |
304 | 0 | } |
305 | | |
306 | 0 | fn after_visit(&mut self) { |
307 | 0 | if self.offsets { |
308 | 0 | write!(&mut self.disas, "{:8x}: ", self.start + self.start_offset).unwrap(); |
309 | 0 | } |
310 | 0 | if self.hexdump { |
311 | 0 | let size = self.bytecode.position() - self.start; |
312 | 0 | let mut need_space = false; |
313 | 0 | for byte in &self.raw_bytecode[self.start..][..size] { |
314 | 0 | let space = if need_space { " " } else { "" }; |
315 | 0 | write!(&mut self.disas, "{space}{byte:02x}").unwrap(); |
316 | 0 | need_space = true; |
317 | | } |
318 | 0 | for _ in 0..12_usize.saturating_sub(size) { |
319 | 0 | write!(&mut self.disas, " ").unwrap(); |
320 | 0 | } |
321 | 0 | } |
322 | 0 | self.disas.push_str(&self.temp); |
323 | 0 | self.temp.clear(); |
324 | 0 |
|
325 | 0 | self.disas.push('\n'); |
326 | 0 | } |
327 | | |
328 | | for_each_op!(impl_disas); |
329 | | } |
330 | | |
331 | | impl ExtendedOpVisitor for Disassembler<'_> { |
332 | | for_each_extended_op!(impl_disas); |
333 | | } |