Coverage Report

Created: 2025-01-09 07:53

/src/wasm-tools/crates/wasmparser/src/binary_reader/simd.rs
Line
Count
Source (jump to first uncovered line)
1
use super::BinaryReader;
2
use crate::{Result, VisitOperator, VisitSimdOperator};
3
4
impl<'a> BinaryReader<'a> {
5
1.33M
    pub(super) fn visit_0xfd_operator<T>(
6
1.33M
        &mut self,
7
1.33M
        pos: usize,
8
1.33M
        visitor: &mut T,
9
1.33M
    ) -> Result<<T as VisitOperator<'a>>::Output>
10
1.33M
    where
11
1.33M
        T: VisitSimdOperator<'a>,
12
1.33M
    {
13
1.33M
        let code = self.read_var_u32()?;
14
1.33M
        Ok(match code {
15
3.53k
            0x00 => visitor.visit_v128_load(self.read_memarg(4)?),
16
4.21k
            0x01 => visitor.visit_v128_load8x8_s(self.read_memarg(3)?),
17
2.32k
            0x02 => visitor.visit_v128_load8x8_u(self.read_memarg(3)?),
18
5.09k
            0x03 => visitor.visit_v128_load16x4_s(self.read_memarg(3)?),
19
1.76k
            0x04 => visitor.visit_v128_load16x4_u(self.read_memarg(3)?),
20
2.35k
            0x05 => visitor.visit_v128_load32x2_s(self.read_memarg(3)?),
21
4.65k
            0x06 => visitor.visit_v128_load32x2_u(self.read_memarg(3)?),
22
4.90k
            0x07 => visitor.visit_v128_load8_splat(self.read_memarg(0)?),
23
2.12k
            0x08 => visitor.visit_v128_load16_splat(self.read_memarg(1)?),
24
3.51k
            0x09 => visitor.visit_v128_load32_splat(self.read_memarg(2)?),
25
3.09k
            0x0a => visitor.visit_v128_load64_splat(self.read_memarg(3)?),
26
27
216
            0x0b => visitor.visit_v128_store(self.read_memarg(4)?),
28
377k
            0x0c => visitor.visit_v128_const(self.read_v128()?),
29
            0x0d => {
30
14
                let mut lanes: [u8; 16] = [0; 16];
31
238
                for lane in &mut lanes {
32
224
                    *lane = self.read_lane_index(32)?
33
                }
34
14
                visitor.visit_i8x16_shuffle(lanes)
35
            }
36
37
67
            0x0e => visitor.visit_i8x16_swizzle(),
38
8.21k
            0x0f => visitor.visit_i8x16_splat(),
39
6.71k
            0x10 => visitor.visit_i16x8_splat(),
40
8.44k
            0x11 => visitor.visit_i32x4_splat(),
41
2.98k
            0x12 => visitor.visit_i64x2_splat(),
42
1.65k
            0x13 => visitor.visit_f32x4_splat(),
43
2.11k
            0x14 => visitor.visit_f64x2_splat(),
44
45
6.09k
            0x15 => visitor.visit_i8x16_extract_lane_s(self.read_lane_index(16)?),
46
3.41k
            0x16 => visitor.visit_i8x16_extract_lane_u(self.read_lane_index(16)?),
47
571
            0x17 => visitor.visit_i8x16_replace_lane(self.read_lane_index(16)?),
48
4.61k
            0x18 => visitor.visit_i16x8_extract_lane_s(self.read_lane_index(8)?),
49
4.14k
            0x19 => visitor.visit_i16x8_extract_lane_u(self.read_lane_index(8)?),
50
186
            0x1a => visitor.visit_i16x8_replace_lane(self.read_lane_index(8)?),
51
3.41k
            0x1b => visitor.visit_i32x4_extract_lane(self.read_lane_index(4)?),
52
53
322
            0x1c => visitor.visit_i32x4_replace_lane(self.read_lane_index(4)?),
54
5.30k
            0x1d => visitor.visit_i64x2_extract_lane(self.read_lane_index(2)?),
55
634
            0x1e => visitor.visit_i64x2_replace_lane(self.read_lane_index(2)?),
56
1.36k
            0x1f => visitor.visit_f32x4_extract_lane(self.read_lane_index(4)?),
57
76
            0x20 => visitor.visit_f32x4_replace_lane(self.read_lane_index(4)?),
58
1.36k
            0x21 => visitor.visit_f64x2_extract_lane(self.read_lane_index(2)?),
59
199
            0x22 => visitor.visit_f64x2_replace_lane(self.read_lane_index(2)?),
60
61
184
            0x23 => visitor.visit_i8x16_eq(),
62
22
            0x24 => visitor.visit_i8x16_ne(),
63
172
            0x25 => visitor.visit_i8x16_lt_s(),
64
162
            0x26 => visitor.visit_i8x16_lt_u(),
65
36
            0x27 => visitor.visit_i8x16_gt_s(),
66
67
            0x28 => visitor.visit_i8x16_gt_u(),
67
55
            0x29 => visitor.visit_i8x16_le_s(),
68
121
            0x2a => visitor.visit_i8x16_le_u(),
69
672
            0x2b => visitor.visit_i8x16_ge_s(),
70
52
            0x2c => visitor.visit_i8x16_ge_u(),
71
145
            0x2d => visitor.visit_i16x8_eq(),
72
115
            0x2e => visitor.visit_i16x8_ne(),
73
144
            0x2f => visitor.visit_i16x8_lt_s(),
74
32
            0x30 => visitor.visit_i16x8_lt_u(),
75
34
            0x31 => visitor.visit_i16x8_gt_s(),
76
110
            0x32 => visitor.visit_i16x8_gt_u(),
77
44
            0x33 => visitor.visit_i16x8_le_s(),
78
123
            0x34 => visitor.visit_i16x8_le_u(),
79
73
            0x35 => visitor.visit_i16x8_ge_s(),
80
53
            0x36 => visitor.visit_i16x8_ge_u(),
81
39
            0x37 => visitor.visit_i32x4_eq(),
82
33
            0x38 => visitor.visit_i32x4_ne(),
83
50
            0x39 => visitor.visit_i32x4_lt_s(),
84
156
            0x3a => visitor.visit_i32x4_lt_u(),
85
154
            0x3b => visitor.visit_i32x4_gt_s(),
86
193
            0x3c => visitor.visit_i32x4_gt_u(),
87
40
            0x3d => visitor.visit_i32x4_le_s(),
88
86
            0x3e => visitor.visit_i32x4_le_u(),
89
211
            0x3f => visitor.visit_i32x4_ge_s(),
90
65
            0x40 => visitor.visit_i32x4_ge_u(),
91
19.6k
            0x41 => visitor.visit_f32x4_eq(),
92
7
            0x42 => visitor.visit_f32x4_ne(),
93
89
            0x43 => visitor.visit_f32x4_lt(),
94
114
            0x44 => visitor.visit_f32x4_gt(),
95
58
            0x45 => visitor.visit_f32x4_le(),
96
127
            0x46 => visitor.visit_f32x4_ge(),
97
19.3k
            0x47 => visitor.visit_f64x2_eq(),
98
34
            0x48 => visitor.visit_f64x2_ne(),
99
76
            0x49 => visitor.visit_f64x2_lt(),
100
10
            0x4a => visitor.visit_f64x2_gt(),
101
79
            0x4b => visitor.visit_f64x2_le(),
102
4
            0x4c => visitor.visit_f64x2_ge(),
103
7.87k
            0x4d => visitor.visit_v128_not(),
104
116
            0x4e => visitor.visit_v128_and(),
105
97
            0x4f => visitor.visit_v128_andnot(),
106
156
            0x50 => visitor.visit_v128_or(),
107
275k
            0x51 => visitor.visit_v128_xor(),
108
39.0k
            0x52 => visitor.visit_v128_bitselect(),
109
198
            0x53 => visitor.visit_v128_any_true(),
110
111
            0x54 => {
112
116
                let memarg = self.read_memarg(0)?;
113
116
                let lane = self.read_lane_index(16)?;
114
116
                visitor.visit_v128_load8_lane(memarg, lane)
115
            }
116
            0x55 => {
117
241
                let memarg = self.read_memarg(1)?;
118
241
                let lane = self.read_lane_index(8)?;
119
241
                visitor.visit_v128_load16_lane(memarg, lane)
120
            }
121
            0x56 => {
122
171
                let memarg = self.read_memarg(2)?;
123
171
                let lane = self.read_lane_index(4)?;
124
171
                visitor.visit_v128_load32_lane(memarg, lane)
125
            }
126
            0x57 => {
127
135
                let memarg = self.read_memarg(3)?;
128
135
                let lane = self.read_lane_index(2)?;
129
135
                visitor.visit_v128_load64_lane(memarg, lane)
130
            }
131
            0x58 => {
132
131
                let memarg = self.read_memarg(0)?;
133
131
                let lane = self.read_lane_index(16)?;
134
131
                visitor.visit_v128_store8_lane(memarg, lane)
135
            }
136
            0x59 => {
137
143
                let memarg = self.read_memarg(1)?;
138
143
                let lane = self.read_lane_index(8)?;
139
143
                visitor.visit_v128_store16_lane(memarg, lane)
140
            }
141
            0x5a => {
142
172
                let memarg = self.read_memarg(2)?;
143
172
                let lane = self.read_lane_index(4)?;
144
172
                visitor.visit_v128_store32_lane(memarg, lane)
145
            }
146
            0x5b => {
147
215
                let memarg = self.read_memarg(3)?;
148
215
                let lane = self.read_lane_index(2)?;
149
215
                visitor.visit_v128_store64_lane(memarg, lane)
150
            }
151
152
2.54k
            0x5c => visitor.visit_v128_load32_zero(self.read_memarg(2)?),
153
2.36k
            0x5d => visitor.visit_v128_load64_zero(self.read_memarg(3)?),
154
5.35k
            0x5e => visitor.visit_f32x4_demote_f64x2_zero(),
155
4.00k
            0x5f => visitor.visit_f64x2_promote_low_f32x4(),
156
12.8k
            0x60 => visitor.visit_i8x16_abs(),
157
17.9k
            0x61 => visitor.visit_i8x16_neg(),
158
8.84k
            0x62 => visitor.visit_i8x16_popcnt(),
159
5.63k
            0x63 => visitor.visit_i8x16_all_true(),
160
5.11k
            0x64 => visitor.visit_i8x16_bitmask(),
161
251
            0x65 => visitor.visit_i8x16_narrow_i16x8_s(),
162
116
            0x66 => visitor.visit_i8x16_narrow_i16x8_u(),
163
2.22k
            0x67 => visitor.visit_f32x4_ceil(),
164
2.49k
            0x68 => visitor.visit_f32x4_floor(),
165
7.19k
            0x69 => visitor.visit_f32x4_trunc(),
166
2.15k
            0x6a => visitor.visit_f32x4_nearest(),
167
685
            0x6b => visitor.visit_i8x16_shl(),
168
506
            0x6c => visitor.visit_i8x16_shr_s(),
169
155
            0x6d => visitor.visit_i8x16_shr_u(),
170
294
            0x6e => visitor.visit_i8x16_add(),
171
29
            0x6f => visitor.visit_i8x16_add_sat_s(),
172
79
            0x70 => visitor.visit_i8x16_add_sat_u(),
173
28
            0x71 => visitor.visit_i8x16_sub(),
174
84
            0x72 => visitor.visit_i8x16_sub_sat_s(),
175
13
            0x73 => visitor.visit_i8x16_sub_sat_u(),
176
2.25k
            0x74 => visitor.visit_f64x2_ceil(),
177
4.11k
            0x75 => visitor.visit_f64x2_floor(),
178
291
            0x76 => visitor.visit_i8x16_min_s(),
179
78
            0x77 => visitor.visit_i8x16_min_u(),
180
232
            0x78 => visitor.visit_i8x16_max_s(),
181
57
            0x79 => visitor.visit_i8x16_max_u(),
182
3.55k
            0x7a => visitor.visit_f64x2_trunc(),
183
111
            0x7b => visitor.visit_i8x16_avgr_u(),
184
10.5k
            0x7c => visitor.visit_i16x8_extadd_pairwise_i8x16_s(),
185
10.4k
            0x7d => visitor.visit_i16x8_extadd_pairwise_i8x16_u(),
186
13.7k
            0x7e => visitor.visit_i32x4_extadd_pairwise_i16x8_s(),
187
39.1k
            0x7f => visitor.visit_i32x4_extadd_pairwise_i16x8_u(),
188
38.7k
            0x80 => visitor.visit_i16x8_abs(),
189
8.79k
            0x81 => visitor.visit_i16x8_neg(),
190
191
            0x82 => visitor.visit_i16x8_q15mulr_sat_s(),
191
2.84k
            0x83 => visitor.visit_i16x8_all_true(),
192
3.81k
            0x84 => visitor.visit_i16x8_bitmask(),
193
61
            0x85 => visitor.visit_i16x8_narrow_i32x4_s(),
194
256
            0x86 => visitor.visit_i16x8_narrow_i32x4_u(),
195
7.93k
            0x87 => visitor.visit_i16x8_extend_low_i8x16_s(),
196
6.72k
            0x88 => visitor.visit_i16x8_extend_high_i8x16_s(),
197
6.14k
            0x89 => visitor.visit_i16x8_extend_low_i8x16_u(),
198
10.3k
            0x8a => visitor.visit_i16x8_extend_high_i8x16_u(),
199
291
            0x8b => visitor.visit_i16x8_shl(),
200
251
            0x8c => visitor.visit_i16x8_shr_s(),
201
192
            0x8d => visitor.visit_i16x8_shr_u(),
202
116
            0x8e => visitor.visit_i16x8_add(),
203
17
            0x8f => visitor.visit_i16x8_add_sat_s(),
204
238
            0x90 => visitor.visit_i16x8_add_sat_u(),
205
76
            0x91 => visitor.visit_i16x8_sub(),
206
76
            0x92 => visitor.visit_i16x8_sub_sat_s(),
207
33
            0x93 => visitor.visit_i16x8_sub_sat_u(),
208
7.85k
            0x94 => visitor.visit_f64x2_nearest(),
209
106
            0x95 => visitor.visit_i16x8_mul(),
210
230
            0x96 => visitor.visit_i16x8_min_s(),
211
181
            0x97 => visitor.visit_i16x8_min_u(),
212
86
            0x98 => visitor.visit_i16x8_max_s(),
213
113
            0x99 => visitor.visit_i16x8_max_u(),
214
93
            0x9b => visitor.visit_i16x8_avgr_u(),
215
248
            0x9c => visitor.visit_i16x8_extmul_low_i8x16_s(),
216
146
            0x9d => visitor.visit_i16x8_extmul_high_i8x16_s(),
217
62
            0x9e => visitor.visit_i16x8_extmul_low_i8x16_u(),
218
95
            0x9f => visitor.visit_i16x8_extmul_high_i8x16_u(),
219
13.8k
            0xa0 => visitor.visit_i32x4_abs(),
220
26.9k
            0xa1 => visitor.visit_i32x4_neg(),
221
4.13k
            0xa3 => visitor.visit_i32x4_all_true(),
222
7.78k
            0xa4 => visitor.visit_i32x4_bitmask(),
223
14.9k
            0xa7 => visitor.visit_i32x4_extend_low_i16x8_s(),
224
4.41k
            0xa8 => visitor.visit_i32x4_extend_high_i16x8_s(),
225
5.41k
            0xa9 => visitor.visit_i32x4_extend_low_i16x8_u(),
226
9.74k
            0xaa => visitor.visit_i32x4_extend_high_i16x8_u(),
227
236
            0xab => visitor.visit_i32x4_shl(),
228
262
            0xac => visitor.visit_i32x4_shr_s(),
229
117
            0xad => visitor.visit_i32x4_shr_u(),
230
86
            0xae => visitor.visit_i32x4_add(),
231
37
            0xb1 => visitor.visit_i32x4_sub(),
232
124
            0xb5 => visitor.visit_i32x4_mul(),
233
26
            0xb6 => visitor.visit_i32x4_min_s(),
234
90
            0xb7 => visitor.visit_i32x4_min_u(),
235
41
            0xb8 => visitor.visit_i32x4_max_s(),
236
71
            0xb9 => visitor.visit_i32x4_max_u(),
237
96
            0xba => visitor.visit_i32x4_dot_i16x8_s(),
238
181
            0xbc => visitor.visit_i32x4_extmul_low_i16x8_s(),
239
36
            0xbd => visitor.visit_i32x4_extmul_high_i16x8_s(),
240
75
            0xbe => visitor.visit_i32x4_extmul_low_i16x8_u(),
241
186
            0xbf => visitor.visit_i32x4_extmul_high_i16x8_u(),
242
9.32k
            0xc0 => visitor.visit_i64x2_abs(),
243
19.5k
            0xc1 => visitor.visit_i64x2_neg(),
244
5.17k
            0xc3 => visitor.visit_i64x2_all_true(),
245
7.20k
            0xc4 => visitor.visit_i64x2_bitmask(),
246
10.7k
            0xc7 => visitor.visit_i64x2_extend_low_i32x4_s(),
247
4.64k
            0xc8 => visitor.visit_i64x2_extend_high_i32x4_s(),
248
3.92k
            0xc9 => visitor.visit_i64x2_extend_low_i32x4_u(),
249
3.08k
            0xca => visitor.visit_i64x2_extend_high_i32x4_u(),
250
290
            0xcb => visitor.visit_i64x2_shl(),
251
175
            0xcc => visitor.visit_i64x2_shr_s(),
252
256
            0xcd => visitor.visit_i64x2_shr_u(),
253
105
            0xce => visitor.visit_i64x2_add(),
254
95
            0xd1 => visitor.visit_i64x2_sub(),
255
321
            0xd5 => visitor.visit_i64x2_mul(),
256
43
            0xd6 => visitor.visit_i64x2_eq(),
257
111
            0xd7 => visitor.visit_i64x2_ne(),
258
99
            0xd8 => visitor.visit_i64x2_lt_s(),
259
68
            0xd9 => visitor.visit_i64x2_gt_s(),
260
148
            0xda => visitor.visit_i64x2_le_s(),
261
75
            0xdb => visitor.visit_i64x2_ge_s(),
262
234
            0xdc => visitor.visit_i64x2_extmul_low_i32x4_s(),
263
61
            0xdd => visitor.visit_i64x2_extmul_high_i32x4_s(),
264
41
            0xde => visitor.visit_i64x2_extmul_low_i32x4_u(),
265
217
            0xdf => visitor.visit_i64x2_extmul_high_i32x4_u(),
266
5.21k
            0xe0 => visitor.visit_f32x4_abs(),
267
3.97k
            0xe1 => visitor.visit_f32x4_neg(),
268
7.01k
            0xe3 => visitor.visit_f32x4_sqrt(),
269
20
            0xe4 => visitor.visit_f32x4_add(),
270
128
            0xe5 => visitor.visit_f32x4_sub(),
271
38
            0xe6 => visitor.visit_f32x4_mul(),
272
106
            0xe7 => visitor.visit_f32x4_div(),
273
29
            0xe8 => visitor.visit_f32x4_min(),
274
37
            0xe9 => visitor.visit_f32x4_max(),
275
55
            0xea => visitor.visit_f32x4_pmin(),
276
7
            0xeb => visitor.visit_f32x4_pmax(),
277
8.19k
            0xec => visitor.visit_f64x2_abs(),
278
8.90k
            0xed => visitor.visit_f64x2_neg(),
279
2.67k
            0xef => visitor.visit_f64x2_sqrt(),
280
80
            0xf0 => visitor.visit_f64x2_add(),
281
10
            0xf1 => visitor.visit_f64x2_sub(),
282
27
            0xf2 => visitor.visit_f64x2_mul(),
283
2
            0xf3 => visitor.visit_f64x2_div(),
284
38
            0xf4 => visitor.visit_f64x2_min(),
285
32
            0xf5 => visitor.visit_f64x2_max(),
286
44
            0xf6 => visitor.visit_f64x2_pmin(),
287
12
            0xf7 => visitor.visit_f64x2_pmax(),
288
8.21k
            0xf8 => visitor.visit_i32x4_trunc_sat_f32x4_s(),
289
2.60k
            0xf9 => visitor.visit_i32x4_trunc_sat_f32x4_u(),
290
3.89k
            0xfa => visitor.visit_f32x4_convert_i32x4_s(),
291
3.47k
            0xfb => visitor.visit_f32x4_convert_i32x4_u(),
292
6.40k
            0xfc => visitor.visit_i32x4_trunc_sat_f64x2_s_zero(),
293
1.55k
            0xfd => visitor.visit_i32x4_trunc_sat_f64x2_u_zero(),
294
3.70k
            0xfe => visitor.visit_f64x2_convert_low_i32x4_s(),
295
2.10k
            0xff => visitor.visit_f64x2_convert_low_i32x4_u(),
296
7
            0x100 => visitor.visit_i8x16_relaxed_swizzle(),
297
713
            0x101 => visitor.visit_i32x4_relaxed_trunc_f32x4_s(),
298
4.24k
            0x102 => visitor.visit_i32x4_relaxed_trunc_f32x4_u(),
299
1.62k
            0x103 => visitor.visit_i32x4_relaxed_trunc_f64x2_s_zero(),
300
349
            0x104 => visitor.visit_i32x4_relaxed_trunc_f64x2_u_zero(),
301
0
            0x105 => visitor.visit_f32x4_relaxed_madd(),
302
0
            0x106 => visitor.visit_f32x4_relaxed_nmadd(),
303
0
            0x107 => visitor.visit_f64x2_relaxed_madd(),
304
0
            0x108 => visitor.visit_f64x2_relaxed_nmadd(),
305
22
            0x109 => visitor.visit_i8x16_relaxed_laneselect(),
306
0
            0x10a => visitor.visit_i16x8_relaxed_laneselect(),
307
40
            0x10b => visitor.visit_i32x4_relaxed_laneselect(),
308
4
            0x10c => visitor.visit_i64x2_relaxed_laneselect(),
309
0
            0x10d => visitor.visit_f32x4_relaxed_min(),
310
0
            0x10e => visitor.visit_f32x4_relaxed_max(),
311
8
            0x10f => visitor.visit_f64x2_relaxed_min(),
312
27
            0x110 => visitor.visit_f64x2_relaxed_max(),
313
112
            0x111 => visitor.visit_i16x8_relaxed_q15mulr_s(),
314
82
            0x112 => visitor.visit_i16x8_relaxed_dot_i8x16_i7x16_s(),
315
0
            0x113 => visitor.visit_i32x4_relaxed_dot_i8x16_i7x16_add_s(),
316
317
0
            _ => bail!(pos, "unknown 0xfd subopcode: 0x{code:x}"),
318
        })
319
1.33M
    }
<wasmparser::binary_reader::BinaryReader>::visit_0xfd_operator::<&mut dyn wasmparser::readers::core::operators::VisitSimdOperator<Output = core::result::Result<(), anyhow::Error>>>
Line
Count
Source
5
288k
    pub(super) fn visit_0xfd_operator<T>(
6
288k
        &mut self,
7
288k
        pos: usize,
8
288k
        visitor: &mut T,
9
288k
    ) -> Result<<T as VisitOperator<'a>>::Output>
10
288k
    where
11
288k
        T: VisitSimdOperator<'a>,
12
288k
    {
13
288k
        let code = self.read_var_u32()?;
14
288k
        Ok(match code {
15
670
            0x00 => visitor.visit_v128_load(self.read_memarg(4)?),
16
1.08k
            0x01 => visitor.visit_v128_load8x8_s(self.read_memarg(3)?),
17
484
            0x02 => visitor.visit_v128_load8x8_u(self.read_memarg(3)?),
18
1.13k
            0x03 => visitor.visit_v128_load16x4_s(self.read_memarg(3)?),
19
643
            0x04 => visitor.visit_v128_load16x4_u(self.read_memarg(3)?),
20
716
            0x05 => visitor.visit_v128_load32x2_s(self.read_memarg(3)?),
21
1.86k
            0x06 => visitor.visit_v128_load32x2_u(self.read_memarg(3)?),
22
733
            0x07 => visitor.visit_v128_load8_splat(self.read_memarg(0)?),
23
557
            0x08 => visitor.visit_v128_load16_splat(self.read_memarg(1)?),
24
1.05k
            0x09 => visitor.visit_v128_load32_splat(self.read_memarg(2)?),
25
366
            0x0a => visitor.visit_v128_load64_splat(self.read_memarg(3)?),
26
27
28
            0x0b => visitor.visit_v128_store(self.read_memarg(4)?),
28
84.5k
            0x0c => visitor.visit_v128_const(self.read_v128()?),
29
            0x0d => {
30
2
                let mut lanes: [u8; 16] = [0; 16];
31
34
                for lane in &mut lanes {
32
32
                    *lane = self.read_lane_index(32)?
33
                }
34
2
                visitor.visit_i8x16_shuffle(lanes)
35
            }
36
37
6
            0x0e => visitor.visit_i8x16_swizzle(),
38
1.41k
            0x0f => visitor.visit_i8x16_splat(),
39
883
            0x10 => visitor.visit_i16x8_splat(),
40
823
            0x11 => visitor.visit_i32x4_splat(),
41
597
            0x12 => visitor.visit_i64x2_splat(),
42
558
            0x13 => visitor.visit_f32x4_splat(),
43
742
            0x14 => visitor.visit_f64x2_splat(),
44
45
1.12k
            0x15 => visitor.visit_i8x16_extract_lane_s(self.read_lane_index(16)?),
46
639
            0x16 => visitor.visit_i8x16_extract_lane_u(self.read_lane_index(16)?),
47
116
            0x17 => visitor.visit_i8x16_replace_lane(self.read_lane_index(16)?),
48
870
            0x18 => visitor.visit_i16x8_extract_lane_s(self.read_lane_index(8)?),
49
1.08k
            0x19 => visitor.visit_i16x8_extract_lane_u(self.read_lane_index(8)?),
50
48
            0x1a => visitor.visit_i16x8_replace_lane(self.read_lane_index(8)?),
51
570
            0x1b => visitor.visit_i32x4_extract_lane(self.read_lane_index(4)?),
52
53
84
            0x1c => visitor.visit_i32x4_replace_lane(self.read_lane_index(4)?),
54
875
            0x1d => visitor.visit_i64x2_extract_lane(self.read_lane_index(2)?),
55
109
            0x1e => visitor.visit_i64x2_replace_lane(self.read_lane_index(2)?),
56
377
            0x1f => visitor.visit_f32x4_extract_lane(self.read_lane_index(4)?),
57
20
            0x20 => visitor.visit_f32x4_replace_lane(self.read_lane_index(4)?),
58
327
            0x21 => visitor.visit_f64x2_extract_lane(self.read_lane_index(2)?),
59
80
            0x22 => visitor.visit_f64x2_replace_lane(self.read_lane_index(2)?),
60
61
12
            0x23 => visitor.visit_i8x16_eq(),
62
6
            0x24 => visitor.visit_i8x16_ne(),
63
6
            0x25 => visitor.visit_i8x16_lt_s(),
64
68
            0x26 => visitor.visit_i8x16_lt_u(),
65
10
            0x27 => visitor.visit_i8x16_gt_s(),
66
8
            0x28 => visitor.visit_i8x16_gt_u(),
67
18
            0x29 => visitor.visit_i8x16_le_s(),
68
8
            0x2a => visitor.visit_i8x16_le_u(),
69
14
            0x2b => visitor.visit_i8x16_ge_s(),
70
18
            0x2c => visitor.visit_i8x16_ge_u(),
71
34
            0x2d => visitor.visit_i16x8_eq(),
72
32
            0x2e => visitor.visit_i16x8_ne(),
73
38
            0x2f => visitor.visit_i16x8_lt_s(),
74
14
            0x30 => visitor.visit_i16x8_lt_u(),
75
6
            0x31 => visitor.visit_i16x8_gt_s(),
76
40
            0x32 => visitor.visit_i16x8_gt_u(),
77
18
            0x33 => visitor.visit_i16x8_le_s(),
78
50
            0x34 => visitor.visit_i16x8_le_u(),
79
28
            0x35 => visitor.visit_i16x8_ge_s(),
80
22
            0x36 => visitor.visit_i16x8_ge_u(),
81
12
            0x37 => visitor.visit_i32x4_eq(),
82
4
            0x38 => visitor.visit_i32x4_ne(),
83
24
            0x39 => visitor.visit_i32x4_lt_s(),
84
52
            0x3a => visitor.visit_i32x4_lt_u(),
85
8
            0x3b => visitor.visit_i32x4_gt_s(),
86
54
            0x3c => visitor.visit_i32x4_gt_u(),
87
10
            0x3d => visitor.visit_i32x4_le_s(),
88
24
            0x3e => visitor.visit_i32x4_le_u(),
89
34
            0x3f => visitor.visit_i32x4_ge_s(),
90
12
            0x40 => visitor.visit_i32x4_ge_u(),
91
6.51k
            0x41 => visitor.visit_f32x4_eq(),
92
2
            0x42 => visitor.visit_f32x4_ne(),
93
32
            0x43 => visitor.visit_f32x4_lt(),
94
2
            0x44 => visitor.visit_f32x4_gt(),
95
22
            0x45 => visitor.visit_f32x4_le(),
96
50
            0x46 => visitor.visit_f32x4_ge(),
97
6.56k
            0x47 => visitor.visit_f64x2_eq(),
98
10
            0x48 => visitor.visit_f64x2_ne(),
99
26
            0x49 => visitor.visit_f64x2_lt(),
100
4
            0x4a => visitor.visit_f64x2_gt(),
101
18
            0x4b => visitor.visit_f64x2_le(),
102
0
            0x4c => visitor.visit_f64x2_ge(),
103
2.28k
            0x4d => visitor.visit_v128_not(),
104
40
            0x4e => visitor.visit_v128_and(),
105
34
            0x4f => visitor.visit_v128_andnot(),
106
20
            0x50 => visitor.visit_v128_or(),
107
40.9k
            0x51 => visitor.visit_v128_xor(),
108
13.0k
            0x52 => visitor.visit_v128_bitselect(),
109
26
            0x53 => visitor.visit_v128_any_true(),
110
111
            0x54 => {
112
18
                let memarg = self.read_memarg(0)?;
113
18
                let lane = self.read_lane_index(16)?;
114
18
                visitor.visit_v128_load8_lane(memarg, lane)
115
            }
116
            0x55 => {
117
84
                let memarg = self.read_memarg(1)?;
118
84
                let lane = self.read_lane_index(8)?;
119
84
                visitor.visit_v128_load16_lane(memarg, lane)
120
            }
121
            0x56 => {
122
58
                let memarg = self.read_memarg(2)?;
123
58
                let lane = self.read_lane_index(4)?;
124
58
                visitor.visit_v128_load32_lane(memarg, lane)
125
            }
126
            0x57 => {
127
20
                let memarg = self.read_memarg(3)?;
128
20
                let lane = self.read_lane_index(2)?;
129
20
                visitor.visit_v128_load64_lane(memarg, lane)
130
            }
131
            0x58 => {
132
40
                let memarg = self.read_memarg(0)?;
133
40
                let lane = self.read_lane_index(16)?;
134
40
                visitor.visit_v128_store8_lane(memarg, lane)
135
            }
136
            0x59 => {
137
54
                let memarg = self.read_memarg(1)?;
138
54
                let lane = self.read_lane_index(8)?;
139
54
                visitor.visit_v128_store16_lane(memarg, lane)
140
            }
141
            0x5a => {
142
14
                let memarg = self.read_memarg(2)?;
143
14
                let lane = self.read_lane_index(4)?;
144
14
                visitor.visit_v128_store32_lane(memarg, lane)
145
            }
146
            0x5b => {
147
50
                let memarg = self.read_memarg(3)?;
148
50
                let lane = self.read_lane_index(2)?;
149
50
                visitor.visit_v128_store64_lane(memarg, lane)
150
            }
151
152
836
            0x5c => visitor.visit_v128_load32_zero(self.read_memarg(2)?),
153
549
            0x5d => visitor.visit_v128_load64_zero(self.read_memarg(3)?),
154
2.41k
            0x5e => visitor.visit_f32x4_demote_f64x2_zero(),
155
964
            0x5f => visitor.visit_f64x2_promote_low_f32x4(),
156
1.62k
            0x60 => visitor.visit_i8x16_abs(),
157
1.83k
            0x61 => visitor.visit_i8x16_neg(),
158
1.91k
            0x62 => visitor.visit_i8x16_popcnt(),
159
516
            0x63 => visitor.visit_i8x16_all_true(),
160
996
            0x64 => visitor.visit_i8x16_bitmask(),
161
18
            0x65 => visitor.visit_i8x16_narrow_i16x8_s(),
162
16
            0x66 => visitor.visit_i8x16_narrow_i16x8_u(),
163
613
            0x67 => visitor.visit_f32x4_ceil(),
164
805
            0x68 => visitor.visit_f32x4_floor(),
165
3.00k
            0x69 => visitor.visit_f32x4_trunc(),
166
721
            0x6a => visitor.visit_f32x4_nearest(),
167
256
            0x6b => visitor.visit_i8x16_shl(),
168
84
            0x6c => visitor.visit_i8x16_shr_s(),
169
24
            0x6d => visitor.visit_i8x16_shr_u(),
170
44
            0x6e => visitor.visit_i8x16_add(),
171
2
            0x6f => visitor.visit_i8x16_add_sat_s(),
172
16
            0x70 => visitor.visit_i8x16_add_sat_u(),
173
8
            0x71 => visitor.visit_i8x16_sub(),
174
12
            0x72 => visitor.visit_i8x16_sub_sat_s(),
175
6
            0x73 => visitor.visit_i8x16_sub_sat_u(),
176
508
            0x74 => visitor.visit_f64x2_ceil(),
177
1.26k
            0x75 => visitor.visit_f64x2_floor(),
178
46
            0x76 => visitor.visit_i8x16_min_s(),
179
36
            0x77 => visitor.visit_i8x16_min_u(),
180
14
            0x78 => visitor.visit_i8x16_max_s(),
181
4
            0x79 => visitor.visit_i8x16_max_u(),
182
972
            0x7a => visitor.visit_f64x2_trunc(),
183
44
            0x7b => visitor.visit_i8x16_avgr_u(),
184
2.63k
            0x7c => visitor.visit_i16x8_extadd_pairwise_i8x16_s(),
185
2.05k
            0x7d => visitor.visit_i16x8_extadd_pairwise_i8x16_u(),
186
994
            0x7e => visitor.visit_i32x4_extadd_pairwise_i16x8_s(),
187
4.46k
            0x7f => visitor.visit_i32x4_extadd_pairwise_i16x8_u(),
188
1.47k
            0x80 => visitor.visit_i16x8_abs(),
189
2.49k
            0x81 => visitor.visit_i16x8_neg(),
190
44
            0x82 => visitor.visit_i16x8_q15mulr_sat_s(),
191
480
            0x83 => visitor.visit_i16x8_all_true(),
192
598
            0x84 => visitor.visit_i16x8_bitmask(),
193
8
            0x85 => visitor.visit_i16x8_narrow_i32x4_s(),
194
82
            0x86 => visitor.visit_i16x8_narrow_i32x4_u(),
195
1.92k
            0x87 => visitor.visit_i16x8_extend_low_i8x16_s(),
196
1.55k
            0x88 => visitor.visit_i16x8_extend_high_i8x16_s(),
197
1.50k
            0x89 => visitor.visit_i16x8_extend_low_i8x16_u(),
198
2.05k
            0x8a => visitor.visit_i16x8_extend_high_i8x16_u(),
199
110
            0x8b => visitor.visit_i16x8_shl(),
200
42
            0x8c => visitor.visit_i16x8_shr_s(),
201
12
            0x8d => visitor.visit_i16x8_shr_u(),
202
28
            0x8e => visitor.visit_i16x8_add(),
203
6
            0x8f => visitor.visit_i16x8_add_sat_s(),
204
12
            0x90 => visitor.visit_i16x8_add_sat_u(),
205
32
            0x91 => visitor.visit_i16x8_sub(),
206
34
            0x92 => visitor.visit_i16x8_sub_sat_s(),
207
2
            0x93 => visitor.visit_i16x8_sub_sat_u(),
208
3.45k
            0x94 => visitor.visit_f64x2_nearest(),
209
28
            0x95 => visitor.visit_i16x8_mul(),
210
58
            0x96 => visitor.visit_i16x8_min_s(),
211
86
            0x97 => visitor.visit_i16x8_min_u(),
212
8
            0x98 => visitor.visit_i16x8_max_s(),
213
46
            0x99 => visitor.visit_i16x8_max_u(),
214
16
            0x9b => visitor.visit_i16x8_avgr_u(),
215
82
            0x9c => visitor.visit_i16x8_extmul_low_i8x16_s(),
216
44
            0x9d => visitor.visit_i16x8_extmul_high_i8x16_s(),
217
28
            0x9e => visitor.visit_i16x8_extmul_low_i8x16_u(),
218
36
            0x9f => visitor.visit_i16x8_extmul_high_i8x16_u(),
219
1.71k
            0xa0 => visitor.visit_i32x4_abs(),
220
10.2k
            0xa1 => visitor.visit_i32x4_neg(),
221
978
            0xa3 => visitor.visit_i32x4_all_true(),
222
1.77k
            0xa4 => visitor.visit_i32x4_bitmask(),
223
5.88k
            0xa7 => visitor.visit_i32x4_extend_low_i16x8_s(),
224
1.16k
            0xa8 => visitor.visit_i32x4_extend_high_i16x8_s(),
225
1.35k
            0xa9 => visitor.visit_i32x4_extend_low_i16x8_u(),
226
1.36k
            0xaa => visitor.visit_i32x4_extend_high_i16x8_u(),
227
70
            0xab => visitor.visit_i32x4_shl(),
228
84
            0xac => visitor.visit_i32x4_shr_s(),
229
6
            0xad => visitor.visit_i32x4_shr_u(),
230
12
            0xae => visitor.visit_i32x4_add(),
231
12
            0xb1 => visitor.visit_i32x4_sub(),
232
54
            0xb5 => visitor.visit_i32x4_mul(),
233
6
            0xb6 => visitor.visit_i32x4_min_s(),
234
30
            0xb7 => visitor.visit_i32x4_min_u(),
235
16
            0xb8 => visitor.visit_i32x4_max_s(),
236
32
            0xb9 => visitor.visit_i32x4_max_u(),
237
12
            0xba => visitor.visit_i32x4_dot_i16x8_s(),
238
36
            0xbc => visitor.visit_i32x4_extmul_low_i16x8_s(),
239
16
            0xbd => visitor.visit_i32x4_extmul_high_i16x8_s(),
240
30
            0xbe => visitor.visit_i32x4_extmul_low_i16x8_u(),
241
18
            0xbf => visitor.visit_i32x4_extmul_high_i16x8_u(),
242
1.72k
            0xc0 => visitor.visit_i64x2_abs(),
243
6.37k
            0xc1 => visitor.visit_i64x2_neg(),
244
1.24k
            0xc3 => visitor.visit_i64x2_all_true(),
245
1.11k
            0xc4 => visitor.visit_i64x2_bitmask(),
246
2.66k
            0xc7 => visitor.visit_i64x2_extend_low_i32x4_s(),
247
1.47k
            0xc8 => visitor.visit_i64x2_extend_high_i32x4_s(),
248
877
            0xc9 => visitor.visit_i64x2_extend_low_i32x4_u(),
249
765
            0xca => visitor.visit_i64x2_extend_high_i32x4_u(),
250
76
            0xcb => visitor.visit_i64x2_shl(),
251
30
            0xcc => visitor.visit_i64x2_shr_s(),
252
74
            0xcd => visitor.visit_i64x2_shr_u(),
253
38
            0xce => visitor.visit_i64x2_add(),
254
28
            0xd1 => visitor.visit_i64x2_sub(),
255
2
            0xd5 => visitor.visit_i64x2_mul(),
256
16
            0xd6 => visitor.visit_i64x2_eq(),
257
14
            0xd7 => visitor.visit_i64x2_ne(),
258
38
            0xd8 => visitor.visit_i64x2_lt_s(),
259
22
            0xd9 => visitor.visit_i64x2_gt_s(),
260
62
            0xda => visitor.visit_i64x2_le_s(),
261
30
            0xdb => visitor.visit_i64x2_ge_s(),
262
32
            0xdc => visitor.visit_i64x2_extmul_low_i32x4_s(),
263
4
            0xdd => visitor.visit_i64x2_extmul_high_i32x4_s(),
264
12
            0xde => visitor.visit_i64x2_extmul_low_i32x4_u(),
265
38
            0xdf => visitor.visit_i64x2_extmul_high_i32x4_u(),
266
2.21k
            0xe0 => visitor.visit_f32x4_abs(),
267
1.20k
            0xe1 => visitor.visit_f32x4_neg(),
268
1.64k
            0xe3 => visitor.visit_f32x4_sqrt(),
269
10
            0xe4 => visitor.visit_f32x4_add(),
270
64
            0xe5 => visitor.visit_f32x4_sub(),
271
18
            0xe6 => visitor.visit_f32x4_mul(),
272
42
            0xe7 => visitor.visit_f32x4_div(),
273
14
            0xe8 => visitor.visit_f32x4_min(),
274
2
            0xe9 => visitor.visit_f32x4_max(),
275
4
            0xea => visitor.visit_f32x4_pmin(),
276
2
            0xeb => visitor.visit_f32x4_pmax(),
277
2.84k
            0xec => visitor.visit_f64x2_abs(),
278
3.47k
            0xed => visitor.visit_f64x2_neg(),
279
779
            0xef => visitor.visit_f64x2_sqrt(),
280
34
            0xf0 => visitor.visit_f64x2_add(),
281
4
            0xf1 => visitor.visit_f64x2_sub(),
282
10
            0xf2 => visitor.visit_f64x2_mul(),
283
0
            0xf3 => visitor.visit_f64x2_div(),
284
8
            0xf4 => visitor.visit_f64x2_min(),
285
10
            0xf5 => visitor.visit_f64x2_max(),
286
22
            0xf6 => visitor.visit_f64x2_pmin(),
287
6
            0xf7 => visitor.visit_f64x2_pmax(),
288
3.41k
            0xf8 => visitor.visit_i32x4_trunc_sat_f32x4_s(),
289
552
            0xf9 => visitor.visit_i32x4_trunc_sat_f32x4_u(),
290
1.44k
            0xfa => visitor.visit_f32x4_convert_i32x4_s(),
291
1.04k
            0xfb => visitor.visit_f32x4_convert_i32x4_u(),
292
2.84k
            0xfc => visitor.visit_i32x4_trunc_sat_f64x2_s_zero(),
293
549
            0xfd => visitor.visit_i32x4_trunc_sat_f64x2_u_zero(),
294
1.49k
            0xfe => visitor.visit_f64x2_convert_low_i32x4_s(),
295
366
            0xff => visitor.visit_f64x2_convert_low_i32x4_u(),
296
2
            0x100 => visitor.visit_i8x16_relaxed_swizzle(),
297
94
            0x101 => visitor.visit_i32x4_relaxed_trunc_f32x4_s(),
298
146
            0x102 => visitor.visit_i32x4_relaxed_trunc_f32x4_u(),
299
134
            0x103 => visitor.visit_i32x4_relaxed_trunc_f64x2_s_zero(),
300
88
            0x104 => visitor.visit_i32x4_relaxed_trunc_f64x2_u_zero(),
301
0
            0x105 => visitor.visit_f32x4_relaxed_madd(),
302
0
            0x106 => visitor.visit_f32x4_relaxed_nmadd(),
303
0
            0x107 => visitor.visit_f64x2_relaxed_madd(),
304
0
            0x108 => visitor.visit_f64x2_relaxed_nmadd(),
305
10
            0x109 => visitor.visit_i8x16_relaxed_laneselect(),
306
0
            0x10a => visitor.visit_i16x8_relaxed_laneselect(),
307
20
            0x10b => visitor.visit_i32x4_relaxed_laneselect(),
308
2
            0x10c => visitor.visit_i64x2_relaxed_laneselect(),
309
0
            0x10d => visitor.visit_f32x4_relaxed_min(),
310
0
            0x10e => visitor.visit_f32x4_relaxed_max(),
311
4
            0x10f => visitor.visit_f64x2_relaxed_min(),
312
8
            0x110 => visitor.visit_f64x2_relaxed_max(),
313
50
            0x111 => visitor.visit_i16x8_relaxed_q15mulr_s(),
314
0
            0x112 => visitor.visit_i16x8_relaxed_dot_i8x16_i7x16_s(),
315
0
            0x113 => visitor.visit_i32x4_relaxed_dot_i8x16_i7x16_add_s(),
316
317
0
            _ => bail!(pos, "unknown 0xfd subopcode: 0x{code:x}"),
318
        })
319
288k
    }
Unexecuted instantiation: <wasmparser::binary_reader::BinaryReader>::visit_0xfd_operator::<&mut dyn wasmparser::readers::core::operators::VisitSimdOperator<Output = ()>>
<wasmparser::binary_reader::BinaryReader>::visit_0xfd_operator::<&mut dyn wasmparser::readers::core::operators::VisitSimdOperator<Output = core::result::Result<(), wasmparser::binary_reader::BinaryReaderError>>>
Line
Count
Source
5
640k
    pub(super) fn visit_0xfd_operator<T>(
6
640k
        &mut self,
7
640k
        pos: usize,
8
640k
        visitor: &mut T,
9
640k
    ) -> Result<<T as VisitOperator<'a>>::Output>
10
640k
    where
11
640k
        T: VisitSimdOperator<'a>,
12
640k
    {
13
640k
        let code = self.read_var_u32()?;
14
640k
        Ok(match code {
15
2.22k
            0x00 => visitor.visit_v128_load(self.read_memarg(4)?),
16
2.24k
            0x01 => visitor.visit_v128_load8x8_s(self.read_memarg(3)?),
17
1.09k
            0x02 => visitor.visit_v128_load8x8_u(self.read_memarg(3)?),
18
1.53k
            0x03 => visitor.visit_v128_load16x4_s(self.read_memarg(3)?),
19
652
            0x04 => visitor.visit_v128_load16x4_u(self.read_memarg(3)?),
20
1.05k
            0x05 => visitor.visit_v128_load32x2_s(self.read_memarg(3)?),
21
1.50k
            0x06 => visitor.visit_v128_load32x2_u(self.read_memarg(3)?),
22
3.40k
            0x07 => visitor.visit_v128_load8_splat(self.read_memarg(0)?),
23
809
            0x08 => visitor.visit_v128_load16_splat(self.read_memarg(1)?),
24
1.39k
            0x09 => visitor.visit_v128_load32_splat(self.read_memarg(2)?),
25
1.89k
            0x0a => visitor.visit_v128_load64_splat(self.read_memarg(3)?),
26
27
130
            0x0b => visitor.visit_v128_store(self.read_memarg(4)?),
28
173k
            0x0c => visitor.visit_v128_const(self.read_v128()?),
29
            0x0d => {
30
5
                let mut lanes: [u8; 16] = [0; 16];
31
85
                for lane in &mut lanes {
32
80
                    *lane = self.read_lane_index(32)?
33
                }
34
5
                visitor.visit_i8x16_shuffle(lanes)
35
            }
36
37
27
            0x0e => visitor.visit_i8x16_swizzle(),
38
4.26k
            0x0f => visitor.visit_i8x16_splat(),
39
3.78k
            0x10 => visitor.visit_i16x8_splat(),
40
4.45k
            0x11 => visitor.visit_i32x4_splat(),
41
1.44k
            0x12 => visitor.visit_i64x2_splat(),
42
722
            0x13 => visitor.visit_f32x4_splat(),
43
849
            0x14 => visitor.visit_f64x2_splat(),
44
45
2.70k
            0x15 => visitor.visit_i8x16_extract_lane_s(self.read_lane_index(16)?),
46
1.73k
            0x16 => visitor.visit_i8x16_extract_lane_u(self.read_lane_index(16)?),
47
178
            0x17 => visitor.visit_i8x16_replace_lane(self.read_lane_index(16)?),
48
2.46k
            0x18 => visitor.visit_i16x8_extract_lane_s(self.read_lane_index(8)?),
49
1.80k
            0x19 => visitor.visit_i16x8_extract_lane_u(self.read_lane_index(8)?),
50
66
            0x1a => visitor.visit_i16x8_replace_lane(self.read_lane_index(8)?),
51
1.66k
            0x1b => visitor.visit_i32x4_extract_lane(self.read_lane_index(4)?),
52
53
176
            0x1c => visitor.visit_i32x4_replace_lane(self.read_lane_index(4)?),
54
3.23k
            0x1d => visitor.visit_i64x2_extract_lane(self.read_lane_index(2)?),
55
391
            0x1e => visitor.visit_i64x2_replace_lane(self.read_lane_index(2)?),
56
658
            0x1f => visitor.visit_f32x4_extract_lane(self.read_lane_index(4)?),
57
41
            0x20 => visitor.visit_f32x4_replace_lane(self.read_lane_index(4)?),
58
637
            0x21 => visitor.visit_f64x2_extract_lane(self.read_lane_index(2)?),
59
46
            0x22 => visitor.visit_f64x2_replace_lane(self.read_lane_index(2)?),
60
61
83
            0x23 => visitor.visit_i8x16_eq(),
62
10
            0x24 => visitor.visit_i8x16_ne(),
63
109
            0x25 => visitor.visit_i8x16_lt_s(),
64
55
            0x26 => visitor.visit_i8x16_lt_u(),
65
11
            0x27 => visitor.visit_i8x16_gt_s(),
66
37
            0x28 => visitor.visit_i8x16_gt_u(),
67
18
            0x29 => visitor.visit_i8x16_le_s(),
68
28
            0x2a => visitor.visit_i8x16_le_u(),
69
625
            0x2b => visitor.visit_i8x16_ge_s(),
70
21
            0x2c => visitor.visit_i8x16_ge_u(),
71
81
            0x2d => visitor.visit_i16x8_eq(),
72
55
            0x2e => visitor.visit_i16x8_ne(),
73
65
            0x2f => visitor.visit_i16x8_lt_s(),
74
10
            0x30 => visitor.visit_i16x8_lt_u(),
75
5
            0x31 => visitor.visit_i16x8_gt_s(),
76
22
            0x32 => visitor.visit_i16x8_gt_u(),
77
10
            0x33 => visitor.visit_i16x8_le_s(),
78
33
            0x34 => visitor.visit_i16x8_le_u(),
79
20
            0x35 => visitor.visit_i16x8_ge_s(),
80
14
            0x36 => visitor.visit_i16x8_ge_u(),
81
10
            0x37 => visitor.visit_i32x4_eq(),
82
16
            0x38 => visitor.visit_i32x4_ne(),
83
13
            0x39 => visitor.visit_i32x4_lt_s(),
84
66
            0x3a => visitor.visit_i32x4_lt_u(),
85
70
            0x3b => visitor.visit_i32x4_gt_s(),
86
100
            0x3c => visitor.visit_i32x4_gt_u(),
87
9
            0x3d => visitor.visit_i32x4_le_s(),
88
46
            0x3e => visitor.visit_i32x4_le_u(),
89
89
            0x3f => visitor.visit_i32x4_ge_s(),
90
32
            0x40 => visitor.visit_i32x4_ge_u(),
91
8.98k
            0x41 => visitor.visit_f32x4_eq(),
92
1
            0x42 => visitor.visit_f32x4_ne(),
93
38
            0x43 => visitor.visit_f32x4_lt(),
94
2
            0x44 => visitor.visit_f32x4_gt(),
95
21
            0x45 => visitor.visit_f32x4_le(),
96
41
            0x46 => visitor.visit_f32x4_ge(),
97
7.38k
            0x47 => visitor.visit_f64x2_eq(),
98
16
            0x48 => visitor.visit_f64x2_ne(),
99
23
            0x49 => visitor.visit_f64x2_lt(),
100
2
            0x4a => visitor.visit_f64x2_gt(),
101
49
            0x4b => visitor.visit_f64x2_le(),
102
3
            0x4c => visitor.visit_f64x2_ge(),
103
3.10k
            0x4d => visitor.visit_v128_not(),
104
24
            0x4e => visitor.visit_v128_and(),
105
35
            0x4f => visitor.visit_v128_andnot(),
106
75
            0x50 => visitor.visit_v128_or(),
107
135k
            0x51 => visitor.visit_v128_xor(),
108
16.3k
            0x52 => visitor.visit_v128_bitselect(),
109
140
            0x53 => visitor.visit_v128_any_true(),
110
111
            0x54 => {
112
55
                let memarg = self.read_memarg(0)?;
113
55
                let lane = self.read_lane_index(16)?;
114
55
                visitor.visit_v128_load8_lane(memarg, lane)
115
            }
116
            0x55 => {
117
94
                let memarg = self.read_memarg(1)?;
118
94
                let lane = self.read_lane_index(8)?;
119
94
                visitor.visit_v128_load16_lane(memarg, lane)
120
            }
121
            0x56 => {
122
57
                let memarg = self.read_memarg(2)?;
123
57
                let lane = self.read_lane_index(4)?;
124
57
                visitor.visit_v128_load32_lane(memarg, lane)
125
            }
126
            0x57 => {
127
69
                let memarg = self.read_memarg(3)?;
128
69
                let lane = self.read_lane_index(2)?;
129
69
                visitor.visit_v128_load64_lane(memarg, lane)
130
            }
131
            0x58 => {
132
44
                let memarg = self.read_memarg(0)?;
133
44
                let lane = self.read_lane_index(16)?;
134
44
                visitor.visit_v128_store8_lane(memarg, lane)
135
            }
136
            0x59 => {
137
50
                let memarg = self.read_memarg(1)?;
138
50
                let lane = self.read_lane_index(8)?;
139
50
                visitor.visit_v128_store16_lane(memarg, lane)
140
            }
141
            0x5a => {
142
32
                let memarg = self.read_memarg(2)?;
143
32
                let lane = self.read_lane_index(4)?;
144
32
                visitor.visit_v128_store32_lane(memarg, lane)
145
            }
146
            0x5b => {
147
49
                let memarg = self.read_memarg(3)?;
148
49
                let lane = self.read_lane_index(2)?;
149
49
                visitor.visit_v128_store64_lane(memarg, lane)
150
            }
151
152
979
            0x5c => visitor.visit_v128_load32_zero(self.read_memarg(2)?),
153
1.32k
            0x5d => visitor.visit_v128_load64_zero(self.read_memarg(3)?),
154
1.54k
            0x5e => visitor.visit_f32x4_demote_f64x2_zero(),
155
2.00k
            0x5f => visitor.visit_f64x2_promote_low_f32x4(),
156
5.07k
            0x60 => visitor.visit_i8x16_abs(),
157
12.0k
            0x61 => visitor.visit_i8x16_neg(),
158
4.15k
            0x62 => visitor.visit_i8x16_popcnt(),
159
4.02k
            0x63 => visitor.visit_i8x16_all_true(),
160
2.78k
            0x64 => visitor.visit_i8x16_bitmask(),
161
195
            0x65 => visitor.visit_i8x16_narrow_i16x8_s(),
162
55
            0x66 => visitor.visit_i8x16_narrow_i16x8_u(),
163
1.08k
            0x67 => visitor.visit_f32x4_ceil(),
164
1.12k
            0x68 => visitor.visit_f32x4_floor(),
165
2.03k
            0x69 => visitor.visit_f32x4_trunc(),
166
862
            0x6a => visitor.visit_f32x4_nearest(),
167
283
            0x6b => visitor.visit_i8x16_shl(),
168
310
            0x6c => visitor.visit_i8x16_shr_s(),
169
66
            0x6d => visitor.visit_i8x16_shr_u(),
170
113
            0x6e => visitor.visit_i8x16_add(),
171
17
            0x6f => visitor.visit_i8x16_add_sat_s(),
172
50
            0x70 => visitor.visit_i8x16_add_sat_u(),
173
9
            0x71 => visitor.visit_i8x16_sub(),
174
25
            0x72 => visitor.visit_i8x16_sub_sat_s(),
175
4
            0x73 => visitor.visit_i8x16_sub_sat_u(),
176
1.19k
            0x74 => visitor.visit_f64x2_ceil(),
177
1.07k
            0x75 => visitor.visit_f64x2_floor(),
178
166
            0x76 => visitor.visit_i8x16_min_s(),
179
20
            0x77 => visitor.visit_i8x16_min_u(),
180
195
            0x78 => visitor.visit_i8x16_max_s(),
181
28
            0x79 => visitor.visit_i8x16_max_u(),
182
1.74k
            0x7a => visitor.visit_f64x2_trunc(),
183
25
            0x7b => visitor.visit_i8x16_avgr_u(),
184
5.79k
            0x7c => visitor.visit_i16x8_extadd_pairwise_i8x16_s(),
185
5.23k
            0x7d => visitor.visit_i16x8_extadd_pairwise_i8x16_u(),
186
2.63k
            0x7e => visitor.visit_i32x4_extadd_pairwise_i16x8_s(),
187
18.5k
            0x7f => visitor.visit_i32x4_extadd_pairwise_i16x8_u(),
188
34.3k
            0x80 => visitor.visit_i16x8_abs(),
189
3.07k
            0x81 => visitor.visit_i16x8_neg(),
190
94
            0x82 => visitor.visit_i16x8_q15mulr_sat_s(),
191
1.59k
            0x83 => visitor.visit_i16x8_all_true(),
192
2.22k
            0x84 => visitor.visit_i16x8_bitmask(),
193
32
            0x85 => visitor.visit_i16x8_narrow_i32x4_s(),
194
116
            0x86 => visitor.visit_i16x8_narrow_i32x4_u(),
195
3.96k
            0x87 => visitor.visit_i16x8_extend_low_i8x16_s(),
196
2.92k
            0x88 => visitor.visit_i16x8_extend_high_i8x16_s(),
197
3.04k
            0x89 => visitor.visit_i16x8_extend_low_i8x16_u(),
198
5.96k
            0x8a => visitor.visit_i16x8_extend_high_i8x16_u(),
199
79
            0x8b => visitor.visit_i16x8_shl(),
200
108
            0x8c => visitor.visit_i16x8_shr_s(),
201
71
            0x8d => visitor.visit_i16x8_shr_u(),
202
27
            0x8e => visitor.visit_i16x8_add(),
203
3
            0x8f => visitor.visit_i16x8_add_sat_s(),
204
115
            0x90 => visitor.visit_i16x8_add_sat_u(),
205
20
            0x91 => visitor.visit_i16x8_sub(),
206
20
            0x92 => visitor.visit_i16x8_sub_sat_s(),
207
2
            0x93 => visitor.visit_i16x8_sub_sat_u(),
208
2.43k
            0x94 => visitor.visit_f64x2_nearest(),
209
49
            0x95 => visitor.visit_i16x8_mul(),
210
82
            0x96 => visitor.visit_i16x8_min_s(),
211
44
            0x97 => visitor.visit_i16x8_min_u(),
212
50
            0x98 => visitor.visit_i16x8_max_s(),
213
38
            0x99 => visitor.visit_i16x8_max_u(),
214
33
            0x9b => visitor.visit_i16x8_avgr_u(),
215
108
            0x9c => visitor.visit_i16x8_extmul_low_i8x16_s(),
216
50
            0x9d => visitor.visit_i16x8_extmul_high_i8x16_s(),
217
19
            0x9e => visitor.visit_i16x8_extmul_low_i8x16_u(),
218
38
            0x9f => visitor.visit_i16x8_extmul_high_i8x16_u(),
219
9.90k
            0xa0 => visitor.visit_i32x4_abs(),
220
9.80k
            0xa1 => visitor.visit_i32x4_neg(),
221
2.21k
            0xa3 => visitor.visit_i32x4_all_true(),
222
4.49k
            0xa4 => visitor.visit_i32x4_bitmask(),
223
5.08k
            0xa7 => visitor.visit_i32x4_extend_low_i16x8_s(),
224
2.34k
            0xa8 => visitor.visit_i32x4_extend_high_i16x8_s(),
225
2.69k
            0xa9 => visitor.visit_i32x4_extend_low_i16x8_u(),
226
6.12k
            0xaa => visitor.visit_i32x4_extend_high_i16x8_u(),
227
97
            0xab => visitor.visit_i32x4_shl(),
228
103
            0xac => visitor.visit_i32x4_shr_s(),
229
81
            0xad => visitor.visit_i32x4_shr_u(),
230
62
            0xae => visitor.visit_i32x4_add(),
231
17
            0xb1 => visitor.visit_i32x4_sub(),
232
39
            0xb5 => visitor.visit_i32x4_mul(),
233
8
            0xb6 => visitor.visit_i32x4_min_s(),
234
32
            0xb7 => visitor.visit_i32x4_min_u(),
235
13
            0xb8 => visitor.visit_i32x4_max_s(),
236
21
            0xb9 => visitor.visit_i32x4_max_u(),
237
77
            0xba => visitor.visit_i32x4_dot_i16x8_s(),
238
119
            0xbc => visitor.visit_i32x4_extmul_low_i16x8_s(),
239
11
            0xbd => visitor.visit_i32x4_extmul_high_i16x8_s(),
240
29
            0xbe => visitor.visit_i32x4_extmul_low_i16x8_u(),
241
100
            0xbf => visitor.visit_i32x4_extmul_high_i16x8_u(),
242
6.00k
            0xc0 => visitor.visit_i64x2_abs(),
243
8.43k
            0xc1 => visitor.visit_i64x2_neg(),
244
2.33k
            0xc3 => visitor.visit_i64x2_all_true(),
245
1.64k
            0xc4 => visitor.visit_i64x2_bitmask(),
246
4.94k
            0xc7 => visitor.visit_i64x2_extend_low_i32x4_s(),
247
1.96k
            0xc8 => visitor.visit_i64x2_extend_high_i32x4_s(),
248
1.77k
            0xc9 => visitor.visit_i64x2_extend_low_i32x4_u(),
249
1.18k
            0xca => visitor.visit_i64x2_extend_high_i32x4_u(),
250
117
            0xcb => visitor.visit_i64x2_shl(),
251
78
            0xcc => visitor.visit_i64x2_shr_s(),
252
90
            0xcd => visitor.visit_i64x2_shr_u(),
253
24
            0xce => visitor.visit_i64x2_add(),
254
34
            0xd1 => visitor.visit_i64x2_sub(),
255
288
            0xd5 => visitor.visit_i64x2_mul(),
256
19
            0xd6 => visitor.visit_i64x2_eq(),
257
82
            0xd7 => visitor.visit_i64x2_ne(),
258
33
            0xd8 => visitor.visit_i64x2_lt_s(),
259
27
            0xd9 => visitor.visit_i64x2_gt_s(),
260
47
            0xda => visitor.visit_i64x2_le_s(),
261
27
            0xdb => visitor.visit_i64x2_ge_s(),
262
159
            0xdc => visitor.visit_i64x2_extmul_low_i32x4_s(),
263
55
            0xdd => visitor.visit_i64x2_extmul_high_i32x4_s(),
264
17
            0xde => visitor.visit_i64x2_extmul_low_i32x4_u(),
265
29
            0xdf => visitor.visit_i64x2_extmul_high_i32x4_u(),
266
1.36k
            0xe0 => visitor.visit_f32x4_abs(),
267
1.61k
            0xe1 => visitor.visit_f32x4_neg(),
268
4.28k
            0xe3 => visitor.visit_f32x4_sqrt(),
269
5
            0xe4 => visitor.visit_f32x4_add(),
270
32
            0xe5 => visitor.visit_f32x4_sub(),
271
10
            0xe6 => visitor.visit_f32x4_mul(),
272
41
            0xe7 => visitor.visit_f32x4_div(),
273
7
            0xe8 => visitor.visit_f32x4_min(),
274
31
            0xe9 => visitor.visit_f32x4_max(),
275
42
            0xea => visitor.visit_f32x4_pmin(),
276
3
            0xeb => visitor.visit_f32x4_pmax(),
277
3.35k
            0xec => visitor.visit_f64x2_abs(),
278
2.85k
            0xed => visitor.visit_f64x2_neg(),
279
1.20k
            0xef => visitor.visit_f64x2_sqrt(),
280
27
            0xf0 => visitor.visit_f64x2_add(),
281
2
            0xf1 => visitor.visit_f64x2_sub(),
282
7
            0xf2 => visitor.visit_f64x2_mul(),
283
2
            0xf3 => visitor.visit_f64x2_div(),
284
24
            0xf4 => visitor.visit_f64x2_min(),
285
15
            0xf5 => visitor.visit_f64x2_max(),
286
11
            0xf6 => visitor.visit_f64x2_pmin(),
287
3
            0xf7 => visitor.visit_f64x2_pmax(),
288
2.74k
            0xf8 => visitor.visit_i32x4_trunc_sat_f32x4_s(),
289
1.37k
            0xf9 => visitor.visit_i32x4_trunc_sat_f32x4_u(),
290
1.40k
            0xfa => visitor.visit_f32x4_convert_i32x4_s(),
291
1.34k
            0xfb => visitor.visit_f32x4_convert_i32x4_u(),
292
2.01k
            0xfc => visitor.visit_i32x4_trunc_sat_f64x2_s_zero(),
293
610
            0xfd => visitor.visit_i32x4_trunc_sat_f64x2_u_zero(),
294
1.13k
            0xfe => visitor.visit_f64x2_convert_low_i32x4_s(),
295
1.28k
            0xff => visitor.visit_f64x2_convert_low_i32x4_u(),
296
2
            0x100 => visitor.visit_i8x16_relaxed_swizzle(),
297
513
            0x101 => visitor.visit_i32x4_relaxed_trunc_f32x4_s(),
298
3.83k
            0x102 => visitor.visit_i32x4_relaxed_trunc_f32x4_u(),
299
1.28k
            0x103 => visitor.visit_i32x4_relaxed_trunc_f64x2_s_zero(),
300
180
            0x104 => visitor.visit_i32x4_relaxed_trunc_f64x2_u_zero(),
301
0
            0x105 => visitor.visit_f32x4_relaxed_madd(),
302
0
            0x106 => visitor.visit_f32x4_relaxed_nmadd(),
303
0
            0x107 => visitor.visit_f64x2_relaxed_madd(),
304
0
            0x108 => visitor.visit_f64x2_relaxed_nmadd(),
305
5
            0x109 => visitor.visit_i8x16_relaxed_laneselect(),
306
0
            0x10a => visitor.visit_i16x8_relaxed_laneselect(),
307
10
            0x10b => visitor.visit_i32x4_relaxed_laneselect(),
308
1
            0x10c => visitor.visit_i64x2_relaxed_laneselect(),
309
0
            0x10d => visitor.visit_f32x4_relaxed_min(),
310
0
            0x10e => visitor.visit_f32x4_relaxed_max(),
311
2
            0x10f => visitor.visit_f64x2_relaxed_min(),
312
14
            0x110 => visitor.visit_f64x2_relaxed_max(),
313
35
            0x111 => visitor.visit_i16x8_relaxed_q15mulr_s(),
314
80
            0x112 => visitor.visit_i16x8_relaxed_dot_i8x16_i7x16_s(),
315
0
            0x113 => visitor.visit_i32x4_relaxed_dot_i8x16_i7x16_add_s(),
316
317
0
            _ => bail!(pos, "unknown 0xfd subopcode: 0x{code:x}"),
318
        })
319
640k
    }
<wasmparser::binary_reader::BinaryReader>::visit_0xfd_operator::<&mut dyn wasmparser::readers::core::operators::VisitSimdOperator<Output = wasmparser::readers::core::operators::Operator>>
Line
Count
Source
5
408k
    pub(super) fn visit_0xfd_operator<T>(
6
408k
        &mut self,
7
408k
        pos: usize,
8
408k
        visitor: &mut T,
9
408k
    ) -> Result<<T as VisitOperator<'a>>::Output>
10
408k
    where
11
408k
        T: VisitSimdOperator<'a>,
12
408k
    {
13
408k
        let code = self.read_var_u32()?;
14
408k
        Ok(match code {
15
637
            0x00 => visitor.visit_v128_load(self.read_memarg(4)?),
16
877
            0x01 => visitor.visit_v128_load8x8_s(self.read_memarg(3)?),
17
749
            0x02 => visitor.visit_v128_load8x8_u(self.read_memarg(3)?),
18
2.42k
            0x03 => visitor.visit_v128_load16x4_s(self.read_memarg(3)?),
19
468
            0x04 => visitor.visit_v128_load16x4_u(self.read_memarg(3)?),
20
578
            0x05 => visitor.visit_v128_load32x2_s(self.read_memarg(3)?),
21
1.29k
            0x06 => visitor.visit_v128_load32x2_u(self.read_memarg(3)?),
22
767
            0x07 => visitor.visit_v128_load8_splat(self.read_memarg(0)?),
23
757
            0x08 => visitor.visit_v128_load16_splat(self.read_memarg(1)?),
24
1.06k
            0x09 => visitor.visit_v128_load32_splat(self.read_memarg(2)?),
25
832
            0x0a => visitor.visit_v128_load64_splat(self.read_memarg(3)?),
26
27
58
            0x0b => visitor.visit_v128_store(self.read_memarg(4)?),
28
119k
            0x0c => visitor.visit_v128_const(self.read_v128()?),
29
            0x0d => {
30
7
                let mut lanes: [u8; 16] = [0; 16];
31
119
                for lane in &mut lanes {
32
112
                    *lane = self.read_lane_index(32)?
33
                }
34
7
                visitor.visit_i8x16_shuffle(lanes)
35
            }
36
37
34
            0x0e => visitor.visit_i8x16_swizzle(),
38
2.53k
            0x0f => visitor.visit_i8x16_splat(),
39
2.05k
            0x10 => visitor.visit_i16x8_splat(),
40
3.17k
            0x11 => visitor.visit_i32x4_splat(),
41
947
            0x12 => visitor.visit_i64x2_splat(),
42
373
            0x13 => visitor.visit_f32x4_splat(),
43
520
            0x14 => visitor.visit_f64x2_splat(),
44
45
2.26k
            0x15 => visitor.visit_i8x16_extract_lane_s(self.read_lane_index(16)?),
46
1.04k
            0x16 => visitor.visit_i8x16_extract_lane_u(self.read_lane_index(16)?),
47
277
            0x17 => visitor.visit_i8x16_replace_lane(self.read_lane_index(16)?),
48
1.27k
            0x18 => visitor.visit_i16x8_extract_lane_s(self.read_lane_index(8)?),
49
1.25k
            0x19 => visitor.visit_i16x8_extract_lane_u(self.read_lane_index(8)?),
50
72
            0x1a => visitor.visit_i16x8_replace_lane(self.read_lane_index(8)?),
51
1.18k
            0x1b => visitor.visit_i32x4_extract_lane(self.read_lane_index(4)?),
52
53
62
            0x1c => visitor.visit_i32x4_replace_lane(self.read_lane_index(4)?),
54
1.19k
            0x1d => visitor.visit_i64x2_extract_lane(self.read_lane_index(2)?),
55
134
            0x1e => visitor.visit_i64x2_replace_lane(self.read_lane_index(2)?),
56
329
            0x1f => visitor.visit_f32x4_extract_lane(self.read_lane_index(4)?),
57
15
            0x20 => visitor.visit_f32x4_replace_lane(self.read_lane_index(4)?),
58
399
            0x21 => visitor.visit_f64x2_extract_lane(self.read_lane_index(2)?),
59
73
            0x22 => visitor.visit_f64x2_replace_lane(self.read_lane_index(2)?),
60
61
89
            0x23 => visitor.visit_i8x16_eq(),
62
6
            0x24 => visitor.visit_i8x16_ne(),
63
57
            0x25 => visitor.visit_i8x16_lt_s(),
64
39
            0x26 => visitor.visit_i8x16_lt_u(),
65
15
            0x27 => visitor.visit_i8x16_gt_s(),
66
22
            0x28 => visitor.visit_i8x16_gt_u(),
67
19
            0x29 => visitor.visit_i8x16_le_s(),
68
85
            0x2a => visitor.visit_i8x16_le_u(),
69
33
            0x2b => visitor.visit_i8x16_ge_s(),
70
13
            0x2c => visitor.visit_i8x16_ge_u(),
71
30
            0x2d => visitor.visit_i16x8_eq(),
72
28
            0x2e => visitor.visit_i16x8_ne(),
73
41
            0x2f => visitor.visit_i16x8_lt_s(),
74
8
            0x30 => visitor.visit_i16x8_lt_u(),
75
23
            0x31 => visitor.visit_i16x8_gt_s(),
76
48
            0x32 => visitor.visit_i16x8_gt_u(),
77
16
            0x33 => visitor.visit_i16x8_le_s(),
78
40
            0x34 => visitor.visit_i16x8_le_u(),
79
25
            0x35 => visitor.visit_i16x8_ge_s(),
80
17
            0x36 => visitor.visit_i16x8_ge_u(),
81
17
            0x37 => visitor.visit_i32x4_eq(),
82
13
            0x38 => visitor.visit_i32x4_ne(),
83
13
            0x39 => visitor.visit_i32x4_lt_s(),
84
38
            0x3a => visitor.visit_i32x4_lt_u(),
85
76
            0x3b => visitor.visit_i32x4_gt_s(),
86
39
            0x3c => visitor.visit_i32x4_gt_u(),
87
21
            0x3d => visitor.visit_i32x4_le_s(),
88
16
            0x3e => visitor.visit_i32x4_le_u(),
89
88
            0x3f => visitor.visit_i32x4_ge_s(),
90
21
            0x40 => visitor.visit_i32x4_ge_u(),
91
4.17k
            0x41 => visitor.visit_f32x4_eq(),
92
4
            0x42 => visitor.visit_f32x4_ne(),
93
19
            0x43 => visitor.visit_f32x4_lt(),
94
110
            0x44 => visitor.visit_f32x4_gt(),
95
15
            0x45 => visitor.visit_f32x4_le(),
96
36
            0x46 => visitor.visit_f32x4_ge(),
97
5.43k
            0x47 => visitor.visit_f64x2_eq(),
98
8
            0x48 => visitor.visit_f64x2_ne(),
99
27
            0x49 => visitor.visit_f64x2_lt(),
100
4
            0x4a => visitor.visit_f64x2_gt(),
101
12
            0x4b => visitor.visit_f64x2_le(),
102
1
            0x4c => visitor.visit_f64x2_ge(),
103
2.49k
            0x4d => visitor.visit_v128_not(),
104
52
            0x4e => visitor.visit_v128_and(),
105
28
            0x4f => visitor.visit_v128_andnot(),
106
61
            0x50 => visitor.visit_v128_or(),
107
98.8k
            0x51 => visitor.visit_v128_xor(),
108
9.60k
            0x52 => visitor.visit_v128_bitselect(),
109
32
            0x53 => visitor.visit_v128_any_true(),
110
111
            0x54 => {
112
43
                let memarg = self.read_memarg(0)?;
113
43
                let lane = self.read_lane_index(16)?;
114
43
                visitor.visit_v128_load8_lane(memarg, lane)
115
            }
116
            0x55 => {
117
63
                let memarg = self.read_memarg(1)?;
118
63
                let lane = self.read_lane_index(8)?;
119
63
                visitor.visit_v128_load16_lane(memarg, lane)
120
            }
121
            0x56 => {
122
56
                let memarg = self.read_memarg(2)?;
123
56
                let lane = self.read_lane_index(4)?;
124
56
                visitor.visit_v128_load32_lane(memarg, lane)
125
            }
126
            0x57 => {
127
46
                let memarg = self.read_memarg(3)?;
128
46
                let lane = self.read_lane_index(2)?;
129
46
                visitor.visit_v128_load64_lane(memarg, lane)
130
            }
131
            0x58 => {
132
47
                let memarg = self.read_memarg(0)?;
133
47
                let lane = self.read_lane_index(16)?;
134
47
                visitor.visit_v128_store8_lane(memarg, lane)
135
            }
136
            0x59 => {
137
39
                let memarg = self.read_memarg(1)?;
138
39
                let lane = self.read_lane_index(8)?;
139
39
                visitor.visit_v128_store16_lane(memarg, lane)
140
            }
141
            0x5a => {
142
126
                let memarg = self.read_memarg(2)?;
143
126
                let lane = self.read_lane_index(4)?;
144
126
                visitor.visit_v128_store32_lane(memarg, lane)
145
            }
146
            0x5b => {
147
116
                let memarg = self.read_memarg(3)?;
148
116
                let lane = self.read_lane_index(2)?;
149
116
                visitor.visit_v128_store64_lane(memarg, lane)
150
            }
151
152
728
            0x5c => visitor.visit_v128_load32_zero(self.read_memarg(2)?),
153
491
            0x5d => visitor.visit_v128_load64_zero(self.read_memarg(3)?),
154
1.39k
            0x5e => visitor.visit_f32x4_demote_f64x2_zero(),
155
1.04k
            0x5f => visitor.visit_f64x2_promote_low_f32x4(),
156
6.11k
            0x60 => visitor.visit_i8x16_abs(),
157
4.07k
            0x61 => visitor.visit_i8x16_neg(),
158
2.77k
            0x62 => visitor.visit_i8x16_popcnt(),
159
1.09k
            0x63 => visitor.visit_i8x16_all_true(),
160
1.33k
            0x64 => visitor.visit_i8x16_bitmask(),
161
38
            0x65 => visitor.visit_i8x16_narrow_i16x8_s(),
162
45
            0x66 => visitor.visit_i8x16_narrow_i16x8_u(),
163
527
            0x67 => visitor.visit_f32x4_ceil(),
164
562
            0x68 => visitor.visit_f32x4_floor(),
165
2.14k
            0x69 => visitor.visit_f32x4_trunc(),
166
573
            0x6a => visitor.visit_f32x4_nearest(),
167
146
            0x6b => visitor.visit_i8x16_shl(),
168
112
            0x6c => visitor.visit_i8x16_shr_s(),
169
65
            0x6d => visitor.visit_i8x16_shr_u(),
170
137
            0x6e => visitor.visit_i8x16_add(),
171
10
            0x6f => visitor.visit_i8x16_add_sat_s(),
172
13
            0x70 => visitor.visit_i8x16_add_sat_u(),
173
11
            0x71 => visitor.visit_i8x16_sub(),
174
47
            0x72 => visitor.visit_i8x16_sub_sat_s(),
175
3
            0x73 => visitor.visit_i8x16_sub_sat_u(),
176
559
            0x74 => visitor.visit_f64x2_ceil(),
177
1.77k
            0x75 => visitor.visit_f64x2_floor(),
178
79
            0x76 => visitor.visit_i8x16_min_s(),
179
22
            0x77 => visitor.visit_i8x16_min_u(),
180
23
            0x78 => visitor.visit_i8x16_max_s(),
181
25
            0x79 => visitor.visit_i8x16_max_u(),
182
835
            0x7a => visitor.visit_f64x2_trunc(),
183
42
            0x7b => visitor.visit_i8x16_avgr_u(),
184
2.07k
            0x7c => visitor.visit_i16x8_extadd_pairwise_i8x16_s(),
185
3.12k
            0x7d => visitor.visit_i16x8_extadd_pairwise_i8x16_u(),
186
10.1k
            0x7e => visitor.visit_i32x4_extadd_pairwise_i16x8_s(),
187
16.0k
            0x7f => visitor.visit_i32x4_extadd_pairwise_i16x8_u(),
188
2.87k
            0x80 => visitor.visit_i16x8_abs(),
189
3.23k
            0x81 => visitor.visit_i16x8_neg(),
190
53
            0x82 => visitor.visit_i16x8_q15mulr_sat_s(),
191
770
            0x83 => visitor.visit_i16x8_all_true(),
192
996
            0x84 => visitor.visit_i16x8_bitmask(),
193
21
            0x85 => visitor.visit_i16x8_narrow_i32x4_s(),
194
58
            0x86 => visitor.visit_i16x8_narrow_i32x4_u(),
195
2.04k
            0x87 => visitor.visit_i16x8_extend_low_i8x16_s(),
196
2.24k
            0x88 => visitor.visit_i16x8_extend_high_i8x16_s(),
197
1.59k
            0x89 => visitor.visit_i16x8_extend_low_i8x16_u(),
198
2.30k
            0x8a => visitor.visit_i16x8_extend_high_i8x16_u(),
199
102
            0x8b => visitor.visit_i16x8_shl(),
200
101
            0x8c => visitor.visit_i16x8_shr_s(),
201
109
            0x8d => visitor.visit_i16x8_shr_u(),
202
61
            0x8e => visitor.visit_i16x8_add(),
203
8
            0x8f => visitor.visit_i16x8_add_sat_s(),
204
111
            0x90 => visitor.visit_i16x8_add_sat_u(),
205
24
            0x91 => visitor.visit_i16x8_sub(),
206
22
            0x92 => visitor.visit_i16x8_sub_sat_s(),
207
29
            0x93 => visitor.visit_i16x8_sub_sat_u(),
208
1.97k
            0x94 => visitor.visit_f64x2_nearest(),
209
29
            0x95 => visitor.visit_i16x8_mul(),
210
90
            0x96 => visitor.visit_i16x8_min_s(),
211
51
            0x97 => visitor.visit_i16x8_min_u(),
212
28
            0x98 => visitor.visit_i16x8_max_s(),
213
29
            0x99 => visitor.visit_i16x8_max_u(),
214
44
            0x9b => visitor.visit_i16x8_avgr_u(),
215
58
            0x9c => visitor.visit_i16x8_extmul_low_i8x16_s(),
216
52
            0x9d => visitor.visit_i16x8_extmul_high_i8x16_s(),
217
15
            0x9e => visitor.visit_i16x8_extmul_low_i8x16_u(),
218
21
            0x9f => visitor.visit_i16x8_extmul_high_i8x16_u(),
219
2.27k
            0xa0 => visitor.visit_i32x4_abs(),
220
6.93k
            0xa1 => visitor.visit_i32x4_neg(),
221
942
            0xa3 => visitor.visit_i32x4_all_true(),
222
1.51k
            0xa4 => visitor.visit_i32x4_bitmask(),
223
3.95k
            0xa7 => visitor.visit_i32x4_extend_low_i16x8_s(),
224
914
            0xa8 => visitor.visit_i32x4_extend_high_i16x8_s(),
225
1.36k
            0xa9 => visitor.visit_i32x4_extend_low_i16x8_u(),
226
2.24k
            0xaa => visitor.visit_i32x4_extend_high_i16x8_u(),
227
69
            0xab => visitor.visit_i32x4_shl(),
228
75
            0xac => visitor.visit_i32x4_shr_s(),
229
30
            0xad => visitor.visit_i32x4_shr_u(),
230
12
            0xae => visitor.visit_i32x4_add(),
231
8
            0xb1 => visitor.visit_i32x4_sub(),
232
31
            0xb5 => visitor.visit_i32x4_mul(),
233
12
            0xb6 => visitor.visit_i32x4_min_s(),
234
28
            0xb7 => visitor.visit_i32x4_min_u(),
235
12
            0xb8 => visitor.visit_i32x4_max_s(),
236
18
            0xb9 => visitor.visit_i32x4_max_u(),
237
7
            0xba => visitor.visit_i32x4_dot_i16x8_s(),
238
26
            0xbc => visitor.visit_i32x4_extmul_low_i16x8_s(),
239
9
            0xbd => visitor.visit_i32x4_extmul_high_i16x8_s(),
240
16
            0xbe => visitor.visit_i32x4_extmul_low_i16x8_u(),
241
68
            0xbf => visitor.visit_i32x4_extmul_high_i16x8_u(),
242
1.60k
            0xc0 => visitor.visit_i64x2_abs(),
243
4.72k
            0xc1 => visitor.visit_i64x2_neg(),
244
1.58k
            0xc3 => visitor.visit_i64x2_all_true(),
245
4.44k
            0xc4 => visitor.visit_i64x2_bitmask(),
246
3.13k
            0xc7 => visitor.visit_i64x2_extend_low_i32x4_s(),
247
1.20k
            0xc8 => visitor.visit_i64x2_extend_high_i32x4_s(),
248
1.27k
            0xc9 => visitor.visit_i64x2_extend_low_i32x4_u(),
249
1.13k
            0xca => visitor.visit_i64x2_extend_high_i32x4_u(),
250
97
            0xcb => visitor.visit_i64x2_shl(),
251
67
            0xcc => visitor.visit_i64x2_shr_s(),
252
92
            0xcd => visitor.visit_i64x2_shr_u(),
253
43
            0xce => visitor.visit_i64x2_add(),
254
33
            0xd1 => visitor.visit_i64x2_sub(),
255
31
            0xd5 => visitor.visit_i64x2_mul(),
256
8
            0xd6 => visitor.visit_i64x2_eq(),
257
15
            0xd7 => visitor.visit_i64x2_ne(),
258
28
            0xd8 => visitor.visit_i64x2_lt_s(),
259
19
            0xd9 => visitor.visit_i64x2_gt_s(),
260
39
            0xda => visitor.visit_i64x2_le_s(),
261
18
            0xdb => visitor.visit_i64x2_ge_s(),
262
43
            0xdc => visitor.visit_i64x2_extmul_low_i32x4_s(),
263
2
            0xdd => visitor.visit_i64x2_extmul_high_i32x4_s(),
264
12
            0xde => visitor.visit_i64x2_extmul_low_i32x4_u(),
265
150
            0xdf => visitor.visit_i64x2_extmul_high_i32x4_u(),
266
1.63k
            0xe0 => visitor.visit_f32x4_abs(),
267
1.15k
            0xe1 => visitor.visit_f32x4_neg(),
268
1.07k
            0xe3 => visitor.visit_f32x4_sqrt(),
269
5
            0xe4 => visitor.visit_f32x4_add(),
270
32
            0xe5 => visitor.visit_f32x4_sub(),
271
10
            0xe6 => visitor.visit_f32x4_mul(),
272
23
            0xe7 => visitor.visit_f32x4_div(),
273
8
            0xe8 => visitor.visit_f32x4_min(),
274
4
            0xe9 => visitor.visit_f32x4_max(),
275
9
            0xea => visitor.visit_f32x4_pmin(),
276
2
            0xeb => visitor.visit_f32x4_pmax(),
277
1.99k
            0xec => visitor.visit_f64x2_abs(),
278
2.56k
            0xed => visitor.visit_f64x2_neg(),
279
699
            0xef => visitor.visit_f64x2_sqrt(),
280
19
            0xf0 => visitor.visit_f64x2_add(),
281
4
            0xf1 => visitor.visit_f64x2_sub(),
282
10
            0xf2 => visitor.visit_f64x2_mul(),
283
0
            0xf3 => visitor.visit_f64x2_div(),
284
6
            0xf4 => visitor.visit_f64x2_min(),
285
7
            0xf5 => visitor.visit_f64x2_max(),
286
11
            0xf6 => visitor.visit_f64x2_pmin(),
287
3
            0xf7 => visitor.visit_f64x2_pmax(),
288
2.05k
            0xf8 => visitor.visit_i32x4_trunc_sat_f32x4_s(),
289
686
            0xf9 => visitor.visit_i32x4_trunc_sat_f32x4_u(),
290
1.04k
            0xfa => visitor.visit_f32x4_convert_i32x4_s(),
291
1.08k
            0xfb => visitor.visit_f32x4_convert_i32x4_u(),
292
1.54k
            0xfc => visitor.visit_i32x4_trunc_sat_f64x2_s_zero(),
293
400
            0xfd => visitor.visit_i32x4_trunc_sat_f64x2_u_zero(),
294
1.07k
            0xfe => visitor.visit_f64x2_convert_low_i32x4_s(),
295
458
            0xff => visitor.visit_f64x2_convert_low_i32x4_u(),
296
3
            0x100 => visitor.visit_i8x16_relaxed_swizzle(),
297
106
            0x101 => visitor.visit_i32x4_relaxed_trunc_f32x4_s(),
298
267
            0x102 => visitor.visit_i32x4_relaxed_trunc_f32x4_u(),
299
204
            0x103 => visitor.visit_i32x4_relaxed_trunc_f64x2_s_zero(),
300
81
            0x104 => visitor.visit_i32x4_relaxed_trunc_f64x2_u_zero(),
301
0
            0x105 => visitor.visit_f32x4_relaxed_madd(),
302
0
            0x106 => visitor.visit_f32x4_relaxed_nmadd(),
303
0
            0x107 => visitor.visit_f64x2_relaxed_madd(),
304
0
            0x108 => visitor.visit_f64x2_relaxed_nmadd(),
305
7
            0x109 => visitor.visit_i8x16_relaxed_laneselect(),
306
0
            0x10a => visitor.visit_i16x8_relaxed_laneselect(),
307
10
            0x10b => visitor.visit_i32x4_relaxed_laneselect(),
308
1
            0x10c => visitor.visit_i64x2_relaxed_laneselect(),
309
0
            0x10d => visitor.visit_f32x4_relaxed_min(),
310
0
            0x10e => visitor.visit_f32x4_relaxed_max(),
311
2
            0x10f => visitor.visit_f64x2_relaxed_min(),
312
5
            0x110 => visitor.visit_f64x2_relaxed_max(),
313
27
            0x111 => visitor.visit_i16x8_relaxed_q15mulr_s(),
314
2
            0x112 => visitor.visit_i16x8_relaxed_dot_i8x16_i7x16_s(),
315
0
            0x113 => visitor.visit_i32x4_relaxed_dot_i8x16_i7x16_add_s(),
316
317
0
            _ => bail!(pos, "unknown 0xfd subopcode: 0x{code:x}"),
318
        })
319
408k
    }
320
}