1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H
17#define ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H
18
19#include "ecmascript/jspandafile/bytecode_inst/instruction.h"
20
21namespace panda::ecmascript {
22class OldBytecodeInst : OldBytecodeInstBase {
23public:
24#include "ecmascript/jspandafile/bytecode_inst/old_instruction_enum.h"
25
26    explicit OldBytecodeInst(const uint8_t *pc) : OldBytecodeInstBase {pc}
27    {
28    }
29
30    inline typename OldBytecodeInst::Opcode GetOpcode() const
31    {
32        uint8_t primary = ReadByte(0);
33        if (primary >= 236) {  // 236: second level bytecode index
34            uint8_t secondary = ReadByte(1);
35            return static_cast<Opcode>((secondary << 8U) | primary);
36        }
37        return static_cast<Opcode>(primary);
38    }
39
40    OldBytecodeInst JumpTo(int32_t offset) const
41    {
42        return OldBytecodeInst(OldBytecodeInstBase::GetPointer(offset));
43    }
44
45    OldBytecodeInst GetNext() const
46    {
47        return JumpTo(GetSize());
48    }
49
50    const uint8_t *GetAddress() const
51    {
52        return OldBytecodeInstBase::GetAddress();
53    }
54
55    size_t GetSize() const
56    {
57        return Size(GetFormat(GetOpcode()));
58    }
59
60    uint32_t GetId() const
61    {
62        Format format = GetFormat(GetOpcode());
63        if (format == Format::ID16) {
64            return static_cast<uint32_t>(Read<8, 16>());
65        }
66        if (format == Format::ID32) {
67            return static_cast<uint32_t>(Read<8, 32>());
68        }
69        if (format == Format::PREF_ID16_IMM16_IMM16_V8_V8) {
70            return static_cast<uint32_t>(Read<16, 16>());
71        }
72        if (format == Format::PREF_ID16_IMM16_V8) {
73            return static_cast<uint32_t>(Read<16, 16>());
74        }
75        if (format == Format::PREF_ID32) {
76            return static_cast<uint32_t>(Read<16, 32>());
77        }
78        if (format == Format::PREF_ID32_IMM8) {
79            return static_cast<uint32_t>(Read<16, 32>());
80        }
81        if (format == Format::PREF_ID32_V8) {
82            return static_cast<uint32_t>(Read<16, 32>());
83        }
84        if (format == Format::V4_IMM4_ID16) {
85            return static_cast<uint32_t>(Read<16, 16>());
86        }
87        if (format == Format::V4_V4_ID16) {
88            return static_cast<uint32_t>(Read<16, 16>());
89        }
90        if (format == Format::V4_V4_V4_IMM4_ID16) {
91            return static_cast<uint32_t>(Read<24, 16>());
92        }
93        if (format == Format::V4_V4_V4_V4_ID16) {
94            return static_cast<uint32_t>(Read<24, 16>());
95        }
96        if (format == Format::V8_ID16) {
97            return static_cast<uint32_t>(Read<16, 16>());
98        }
99        if (format == Format::V8_ID32) {
100            return static_cast<uint32_t>(Read<16, 32>());
101        }
102        LOG_ECMA(FATAL) << "this branch is unreachable";
103        UNREACHABLE();
104    }
105
106    template <Format format, size_t idx = 0>
107    auto GetImm() const
108    {
109        if constexpr (format == Format::IMM16) {
110            constexpr std::array<uint8_t, 1> OFFSETS{8};
111            constexpr std::array<uint8_t, 1> WIDTHS{16};
112            return Read<OFFSETS[idx], WIDTHS[idx], true>();
113        }
114        if constexpr (format == Format::IMM16_V16) {
115            constexpr std::array<uint8_t, 1> OFFSETS{8};
116            constexpr std::array<uint8_t, 1> WIDTHS{16};
117            return Read<OFFSETS[idx], WIDTHS[idx], true>();
118        }
119        if constexpr (format == Format::IMM32) {
120            constexpr std::array<uint8_t, 1> OFFSETS{8};
121            constexpr std::array<uint8_t, 1> WIDTHS{32};
122            return Read<OFFSETS[idx], WIDTHS[idx], true>();
123        }
124        if constexpr (format == Format::IMM4_V4_V4_V4) {
125            constexpr std::array<uint8_t, 1> OFFSETS{8};
126            constexpr std::array<uint8_t, 1> WIDTHS{4};
127            return Read<OFFSETS[idx], WIDTHS[idx], true>();
128        }
129        if constexpr (format == Format::IMM4_V4_V4_V4_V4_V4) {
130            constexpr std::array<uint8_t, 1> OFFSETS{8};
131            constexpr std::array<uint8_t, 1> WIDTHS{4};
132            return Read<OFFSETS[idx], WIDTHS[idx], true>();
133        }
134        if constexpr (format == Format::IMM64) {
135            constexpr std::array<uint8_t, 1> OFFSETS{8};
136            constexpr std::array<uint8_t, 1> WIDTHS{64};
137            return Read<OFFSETS[idx], WIDTHS[idx], true>();
138        }
139        if constexpr (format == Format::IMM8) {
140            constexpr std::array<uint8_t, 1> OFFSETS{8};
141            constexpr std::array<uint8_t, 1> WIDTHS{8};
142            return Read<OFFSETS[idx], WIDTHS[idx], true>();
143        }
144        if constexpr (format == Format::PREF_ID16_IMM16_IMM16_V8_V8) {
145            constexpr std::array<uint8_t, 2> OFFSETS{32, 48};
146            constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
147            return Read<OFFSETS[idx], WIDTHS[idx], true>();
148        }
149        if constexpr (format == Format::PREF_ID16_IMM16_V8) {
150            constexpr std::array<uint8_t, 1> OFFSETS{32};
151            constexpr std::array<uint8_t, 1> WIDTHS{16};
152            return Read<OFFSETS[idx], WIDTHS[idx], true>();
153        }
154        if constexpr (format == Format::PREF_ID32_IMM8) {
155            constexpr std::array<uint8_t, 1> OFFSETS{48};
156            constexpr std::array<uint8_t, 1> WIDTHS{8};
157            return Read<OFFSETS[idx], WIDTHS[idx], true>();
158        }
159        if constexpr (format == Format::PREF_IMM16) {
160            constexpr std::array<uint8_t, 1> OFFSETS{16};
161            constexpr std::array<uint8_t, 1> WIDTHS{16};
162            return Read<OFFSETS[idx], WIDTHS[idx], true>();
163        }
164        if constexpr (format == Format::PREF_IMM16_IMM16) {
165            constexpr std::array<uint8_t, 2> OFFSETS{16, 32};
166            constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
167            return Read<OFFSETS[idx], WIDTHS[idx], true>();
168        }
169        if constexpr (format == Format::PREF_IMM16_IMM16_V8) {
170            constexpr std::array<uint8_t, 2> OFFSETS{16, 32};
171            constexpr std::array<uint8_t, 2> WIDTHS{16, 16};
172            return Read<OFFSETS[idx], WIDTHS[idx], true>();
173        }
174        if constexpr (format == Format::PREF_IMM16_V8) {
175            constexpr std::array<uint8_t, 1> OFFSETS{16};
176            constexpr std::array<uint8_t, 1> WIDTHS{16};
177            return Read<OFFSETS[idx], WIDTHS[idx], true>();
178        }
179        if constexpr (format == Format::PREF_IMM16_V8_V8) {
180            constexpr std::array<uint8_t, 1> OFFSETS{16};
181            constexpr std::array<uint8_t, 1> WIDTHS{16};
182            return Read<OFFSETS[idx], WIDTHS[idx], true>();
183        }
184        if constexpr (format == Format::PREF_IMM32) {
185            constexpr std::array<uint8_t, 1> OFFSETS{16};
186            constexpr std::array<uint8_t, 1> WIDTHS{32};
187            return Read<OFFSETS[idx], WIDTHS[idx], true>();
188        }
189        if constexpr (format == Format::PREF_IMM4_IMM4) {
190            constexpr std::array<uint8_t, 2> OFFSETS{16, 20};
191            constexpr std::array<uint8_t, 2> WIDTHS{4, 4};
192            return Read<OFFSETS[idx], WIDTHS[idx], true>();
193        }
194        if constexpr (format == Format::PREF_IMM4_IMM4_V8) {
195            constexpr std::array<uint8_t, 2> OFFSETS{16, 20};
196            constexpr std::array<uint8_t, 2> WIDTHS{4, 4};
197            return Read<OFFSETS[idx], WIDTHS[idx], true>();
198        }
199        if constexpr (format == Format::PREF_IMM8_IMM8) {
200            constexpr std::array<uint8_t, 2> OFFSETS{16, 24};
201            constexpr std::array<uint8_t, 2> WIDTHS{8, 8};
202            return Read<OFFSETS[idx], WIDTHS[idx], true>();
203        }
204        if constexpr (format == Format::PREF_IMM8_IMM8_V8) {
205            constexpr std::array<uint8_t, 2> OFFSETS{16, 24};
206            constexpr std::array<uint8_t, 2> WIDTHS{8, 8};
207            return Read<OFFSETS[idx], WIDTHS[idx], true>();
208        }
209        if constexpr (format == Format::PREF_V8_IMM32) {
210            constexpr std::array<uint8_t, 1> OFFSETS{24};
211            constexpr std::array<uint8_t, 1> WIDTHS{32};
212            return Read<OFFSETS[idx], WIDTHS[idx], true>();
213        }
214        if constexpr (format == Format::V4_IMM4) {
215            constexpr std::array<uint8_t, 1> OFFSETS{12};
216            constexpr std::array<uint8_t, 1> WIDTHS{4};
217            return Read<OFFSETS[idx], WIDTHS[idx], true>();
218        }
219        if constexpr (format == Format::V4_IMM4_ID16) {
220            constexpr std::array<uint8_t, 1> OFFSETS{12};
221            constexpr std::array<uint8_t, 1> WIDTHS{4};
222            return Read<OFFSETS[idx], WIDTHS[idx], true>();
223        }
224        if constexpr (format == Format::V4_V4_V4_IMM4_ID16) {
225            constexpr std::array<uint8_t, 1> OFFSETS{20};
226            constexpr std::array<uint8_t, 1> WIDTHS{4};
227            return Read<OFFSETS[idx], WIDTHS[idx], true>();
228        }
229        if constexpr (format == Format::V8_IMM16) {
230            constexpr std::array<uint8_t, 1> OFFSETS{16};
231            constexpr std::array<uint8_t, 1> WIDTHS{16};
232            return Read<OFFSETS[idx], WIDTHS[idx], true>();
233        }
234        if constexpr (format == Format::V8_IMM32) {
235            constexpr std::array<uint8_t, 1> OFFSETS{16};
236            constexpr std::array<uint8_t, 1> WIDTHS{32};
237            return Read<OFFSETS[idx], WIDTHS[idx], true>();
238        }
239        if constexpr (format == Format::V8_IMM64) {
240            constexpr std::array<uint8_t, 1> OFFSETS{16};
241            constexpr std::array<uint8_t, 1> WIDTHS{64};
242            return Read<OFFSETS[idx], WIDTHS[idx], true>();
243        }
244        if constexpr (format == Format::V8_IMM8) {
245            constexpr std::array<uint8_t, 1> OFFSETS{16};
246            constexpr std::array<uint8_t, 1> WIDTHS{8};
247            return Read<OFFSETS[idx], WIDTHS[idx], true>();
248        }
249        LOG_ECMA(FATAL) << "this branch is unreachable";
250        UNREACHABLE();
251    }
252
253    static constexpr size_t Size(Format format)
254    {
255        switch (format) {
256            case Format::ID16: {
257                constexpr size_t SIZE = 3;
258                return SIZE;
259            }
260            case Format::ID32: {
261                constexpr size_t SIZE = 5;
262                return SIZE;
263            }
264            case Format::IMM16: {
265                constexpr size_t SIZE = 3;
266                return SIZE;
267            }
268            case Format::IMM16_V16: {
269                constexpr size_t SIZE = 5;
270                return SIZE;
271            }
272            case Format::IMM32: {
273                constexpr size_t SIZE = 5;
274                return SIZE;
275            }
276            case Format::IMM4_V4_V4_V4: {
277                constexpr size_t SIZE = 3;
278                return SIZE;
279            }
280            case Format::IMM4_V4_V4_V4_V4_V4: {
281                constexpr size_t SIZE = 4;
282                return SIZE;
283            }
284            case Format::IMM64: {
285                constexpr size_t SIZE = 9;
286                return SIZE;
287            }
288            case Format::IMM8: {
289                constexpr size_t SIZE = 2;
290                return SIZE;
291            }
292            case Format::NONE: {
293                constexpr size_t SIZE = 1;
294                return SIZE;
295            }
296            case Format::PREF_ID16_IMM16_IMM16_V8_V8: {
297                constexpr size_t SIZE = 10;
298                return SIZE;
299            }
300            case Format::PREF_ID16_IMM16_V8: {
301                constexpr size_t SIZE = 7;
302                return SIZE;
303            }
304            case Format::PREF_ID32: {
305                constexpr size_t SIZE = 6;
306                return SIZE;
307            }
308            case Format::PREF_ID32_IMM8: {
309                constexpr size_t SIZE = 7;
310                return SIZE;
311            }
312            case Format::PREF_ID32_V8: {
313                constexpr size_t SIZE = 7;
314                return SIZE;
315            }
316            case Format::PREF_IMM16: {
317                constexpr size_t SIZE = 4;
318                return SIZE;
319            }
320            case Format::PREF_IMM16_IMM16: {
321                constexpr size_t SIZE = 6;
322                return SIZE;
323            }
324            case Format::PREF_IMM16_IMM16_V8: {
325                constexpr size_t SIZE = 7;
326                return SIZE;
327            }
328            case Format::PREF_IMM16_V8: {
329                constexpr size_t SIZE = 5;
330                return SIZE;
331            }
332            case Format::PREF_IMM16_V8_V8: {
333                constexpr size_t SIZE = 6;
334                return SIZE;
335            }
336            case Format::PREF_IMM32: {
337                constexpr size_t SIZE = 6;
338                return SIZE;
339            }
340            case Format::PREF_IMM4_IMM4: {
341                constexpr size_t SIZE = 3;
342                return SIZE;
343            }
344            case Format::PREF_IMM4_IMM4_V8: {
345                constexpr size_t SIZE = 4;
346                return SIZE;
347            }
348            case Format::PREF_IMM8_IMM8: {
349                constexpr size_t SIZE = 4;
350                return SIZE;
351            }
352            case Format::PREF_IMM8_IMM8_V8: {
353                constexpr size_t SIZE = 5;
354                return SIZE;
355            }
356            case Format::PREF_NONE: {
357                constexpr size_t SIZE = 2;
358                return SIZE;
359            }
360            case Format::PREF_V4_V4: {
361                constexpr size_t SIZE = 3;
362                return SIZE;
363            }
364            case Format::PREF_V8: {
365                constexpr size_t SIZE = 3;
366                return SIZE;
367            }
368            case Format::PREF_V8_IMM32: {
369                constexpr size_t SIZE = 7;
370                return SIZE;
371            }
372            case Format::PREF_V8_V8: {
373                constexpr size_t SIZE = 4;
374                return SIZE;
375            }
376            case Format::PREF_V8_V8_V8: {
377                constexpr size_t SIZE = 5;
378                return SIZE;
379            }
380            case Format::PREF_V8_V8_V8_V8: {
381                constexpr size_t SIZE = 6;
382                return SIZE;
383            }
384            case Format::V16_V16: {
385                constexpr size_t SIZE = 5;
386                return SIZE;
387            }
388            case Format::V4_IMM4: {
389                constexpr size_t SIZE = 2;
390                return SIZE;
391            }
392            case Format::V4_IMM4_ID16: {
393                constexpr size_t SIZE = 4;
394                return SIZE;
395            }
396            case Format::V4_V4: {
397                constexpr size_t SIZE = 2;
398                return SIZE;
399            }
400            case Format::V4_V4_ID16: {
401                constexpr size_t SIZE = 4;
402                return SIZE;
403            }
404            case Format::V4_V4_V4_IMM4_ID16: {
405                constexpr size_t SIZE = 5;
406                return SIZE;
407            }
408            case Format::V4_V4_V4_V4_ID16: {
409                constexpr size_t SIZE = 5;
410                return SIZE;
411            }
412            case Format::V8: {
413                constexpr size_t SIZE = 2;
414                return SIZE;
415            }
416            case Format::V8_ID16: {
417                constexpr size_t SIZE = 4;
418                return SIZE;
419            }
420            case Format::V8_ID32: {
421                constexpr size_t SIZE = 6;
422                return SIZE;
423            }
424            case Format::V8_IMM16: {
425                constexpr size_t SIZE = 4;
426                return SIZE;
427            }
428            case Format::V8_IMM32: {
429                constexpr size_t SIZE = 6;
430                return SIZE;
431            }
432            case Format::V8_IMM64: {
433                constexpr size_t SIZE = 10;
434                return SIZE;
435            }
436            case Format::V8_IMM8: {
437                constexpr size_t SIZE = 3;
438                return SIZE;
439            }
440            case Format::V8_V8: {
441                constexpr size_t SIZE = 3;
442                return SIZE;
443            }
444            default:
445                LOG_ECMA(FATAL) << "this branch is unreachable";
446                UNREACHABLE();
447        }
448    }
449
450    static constexpr Format GetFormat(Opcode opcode)
451    {
452        switch (opcode) {
453            case Opcode::NOP:
454                return Format::NONE;
455            case Opcode::MOV_V4_V4:
456                return Format::V4_V4;
457            case Opcode::MOV_V8_V8:
458                return Format::V8_V8;
459            case Opcode::MOV_V16_V16:
460                return Format::V16_V16;
461            case Opcode::MOV_64_V4_V4:
462                return Format::V4_V4;
463            case Opcode::MOV_64_V16_V16:
464                return Format::V16_V16;
465            case Opcode::MOV_OBJ_V4_V4:
466                return Format::V4_V4;
467            case Opcode::MOV_OBJ_V8_V8:
468                return Format::V8_V8;
469            case Opcode::MOV_OBJ_V16_V16:
470                return Format::V16_V16;
471            case Opcode::MOVI_V4_IMM4:
472                return Format::V4_IMM4;
473            case Opcode::MOVI_V8_IMM8:
474                return Format::V8_IMM8;
475            case Opcode::MOVI_V8_IMM16:
476                return Format::V8_IMM16;
477            case Opcode::MOVI_V8_IMM32:
478                return Format::V8_IMM32;
479            case Opcode::MOVI_64_V8_IMM64:
480                return Format::V8_IMM64;
481            case Opcode::FMOVI_64_V8_IMM64:
482                return Format::V8_IMM64;
483            case Opcode::MOV_NULL_V8:
484                return Format::V8;
485            case Opcode::LDA_V8:
486                return Format::V8;
487            case Opcode::LDA_64_V8:
488                return Format::V8;
489            case Opcode::LDA_OBJ_V8:
490                return Format::V8;
491            case Opcode::LDAI_IMM8:
492                return Format::IMM8;
493            case Opcode::LDAI_IMM16:
494                return Format::IMM16;
495            case Opcode::LDAI_IMM32:
496                return Format::IMM32;
497            case Opcode::LDAI_64_IMM64:
498                return Format::IMM64;
499            case Opcode::FLDAI_64_IMM64:
500                return Format::IMM64;
501            case Opcode::LDA_STR_ID32:
502                return Format::ID32;
503            case Opcode::LDA_CONST_V8_ID32:
504                return Format::V8_ID32;
505            case Opcode::LDA_TYPE_ID16:
506                return Format::ID16;
507            case Opcode::LDA_NULL:
508                return Format::NONE;
509            case Opcode::STA_V8:
510                return Format::V8;
511            case Opcode::STA_64_V8:
512                return Format::V8;
513            case Opcode::STA_OBJ_V8:
514                return Format::V8;
515            case Opcode::CMP_64_V8:
516                return Format::V8;
517            case Opcode::FCMPL_64_V8:
518                return Format::V8;
519            case Opcode::FCMPG_64_V8:
520                return Format::V8;
521            case Opcode::JMP_IMM8:
522                return Format::IMM8;
523            case Opcode::JMP_IMM16:
524                return Format::IMM16;
525            case Opcode::JMP_IMM32:
526                return Format::IMM32;
527            case Opcode::JEQ_OBJ_V8_IMM8:
528                return Format::V8_IMM8;
529            case Opcode::JEQ_OBJ_V8_IMM16:
530                return Format::V8_IMM16;
531            case Opcode::JNE_OBJ_V8_IMM8:
532                return Format::V8_IMM8;
533            case Opcode::JNE_OBJ_V8_IMM16:
534                return Format::V8_IMM16;
535            case Opcode::JEQZ_OBJ_IMM8:
536                return Format::IMM8;
537            case Opcode::JEQZ_OBJ_IMM16:
538                return Format::IMM16;
539            case Opcode::JNEZ_OBJ_IMM8:
540                return Format::IMM8;
541            case Opcode::JNEZ_OBJ_IMM16:
542                return Format::IMM16;
543            case Opcode::JEQZ_IMM8:
544                return Format::IMM8;
545            case Opcode::JEQZ_IMM16:
546                return Format::IMM16;
547            case Opcode::JNEZ_IMM8:
548                return Format::IMM8;
549            case Opcode::JNEZ_IMM16:
550                return Format::IMM16;
551            case Opcode::JLTZ_IMM8:
552                return Format::IMM8;
553            case Opcode::JLTZ_IMM16:
554                return Format::IMM16;
555            case Opcode::JGTZ_IMM8:
556                return Format::IMM8;
557            case Opcode::JGTZ_IMM16:
558                return Format::IMM16;
559            case Opcode::JLEZ_IMM8:
560                return Format::IMM8;
561            case Opcode::JLEZ_IMM16:
562                return Format::IMM16;
563            case Opcode::JGEZ_IMM8:
564                return Format::IMM8;
565            case Opcode::JGEZ_IMM16:
566                return Format::IMM16;
567            case Opcode::JEQ_V8_IMM8:
568                return Format::V8_IMM8;
569            case Opcode::JEQ_V8_IMM16:
570                return Format::V8_IMM16;
571            case Opcode::JNE_V8_IMM8:
572                return Format::V8_IMM8;
573            case Opcode::JNE_V8_IMM16:
574                return Format::V8_IMM16;
575            case Opcode::JLT_V8_IMM8:
576                return Format::V8_IMM8;
577            case Opcode::JLT_V8_IMM16:
578                return Format::V8_IMM16;
579            case Opcode::JGT_V8_IMM8:
580                return Format::V8_IMM8;
581            case Opcode::JGT_V8_IMM16:
582                return Format::V8_IMM16;
583            case Opcode::JLE_V8_IMM8:
584                return Format::V8_IMM8;
585            case Opcode::JLE_V8_IMM16:
586                return Format::V8_IMM16;
587            case Opcode::JGE_V8_IMM8:
588                return Format::V8_IMM8;
589            case Opcode::JGE_V8_IMM16:
590                return Format::V8_IMM16;
591            case Opcode::FNEG_64:
592                return Format::NONE;
593            case Opcode::NEG:
594                return Format::NONE;
595            case Opcode::NEG_64:
596                return Format::NONE;
597            case Opcode::ADD2_V8:
598                return Format::V8;
599            case Opcode::ADD2_64_V8:
600                return Format::V8;
601            case Opcode::SUB2_V8:
602                return Format::V8;
603            case Opcode::SUB2_64_V8:
604                return Format::V8;
605            case Opcode::MUL2_V8:
606                return Format::V8;
607            case Opcode::MUL2_64_V8:
608                return Format::V8;
609            case Opcode::FADD2_64_V8:
610                return Format::V8;
611            case Opcode::FSUB2_64_V8:
612                return Format::V8;
613            case Opcode::FMUL2_64_V8:
614                return Format::V8;
615            case Opcode::FDIV2_64_V8:
616                return Format::V8;
617            case Opcode::FMOD2_64_V8:
618                return Format::V8;
619            case Opcode::DIV2_V8:
620                return Format::V8;
621            case Opcode::DIV2_64_V8:
622                return Format::V8;
623            case Opcode::MOD2_V8:
624                return Format::V8;
625            case Opcode::MOD2_64_V8:
626                return Format::V8;
627            case Opcode::ADDI_IMM8:
628                return Format::IMM8;
629            case Opcode::SUBI_IMM8:
630                return Format::IMM8;
631            case Opcode::MULI_IMM8:
632                return Format::IMM8;
633            case Opcode::ANDI_IMM32:
634                return Format::IMM32;
635            case Opcode::ORI_IMM32:
636                return Format::IMM32;
637            case Opcode::SHLI_IMM8:
638                return Format::IMM8;
639            case Opcode::SHRI_IMM8:
640                return Format::IMM8;
641            case Opcode::ASHRI_IMM8:
642                return Format::IMM8;
643            case Opcode::DIVI_IMM8:
644                return Format::IMM8;
645            case Opcode::MODI_IMM8:
646                return Format::IMM8;
647            case Opcode::ADD_V4_V4:
648                return Format::V4_V4;
649            case Opcode::SUB_V4_V4:
650                return Format::V4_V4;
651            case Opcode::MUL_V4_V4:
652                return Format::V4_V4;
653            case Opcode::DIV_V4_V4:
654                return Format::V4_V4;
655            case Opcode::MOD_V4_V4:
656                return Format::V4_V4;
657            case Opcode::INCI_V4_IMM4:
658                return Format::V4_IMM4;
659            case Opcode::LDARR_8_V8:
660                return Format::V8;
661            case Opcode::LDARRU_8_V8:
662                return Format::V8;
663            case Opcode::LDARR_16_V8:
664                return Format::V8;
665            case Opcode::LDARRU_16_V8:
666                return Format::V8;
667            case Opcode::LDARR_V8:
668                return Format::V8;
669            case Opcode::LDARR_64_V8:
670                return Format::V8;
671            case Opcode::FLDARR_32_V8:
672                return Format::V8;
673            case Opcode::FLDARR_64_V8:
674                return Format::V8;
675            case Opcode::LDARR_OBJ_V8:
676                return Format::V8;
677            case Opcode::STARR_8_V4_V4:
678                return Format::V4_V4;
679            case Opcode::STARR_16_V4_V4:
680                return Format::V4_V4;
681            case Opcode::STARR_V4_V4:
682                return Format::V4_V4;
683            case Opcode::STARR_64_V4_V4:
684                return Format::V4_V4;
685            case Opcode::FSTARR_32_V4_V4:
686                return Format::V4_V4;
687            case Opcode::FSTARR_64_V4_V4:
688                return Format::V4_V4;
689            case Opcode::STARR_OBJ_V4_V4:
690                return Format::V4_V4;
691            case Opcode::LENARR_V8:
692                return Format::V8;
693            case Opcode::NEWARR_V4_V4_ID16:
694                return Format::V4_V4_ID16;
695            case Opcode::NEWOBJ_V8_ID16:
696                return Format::V8_ID16;
697            case Opcode::INITOBJ_SHORT_V4_V4_ID16:
698                return Format::V4_V4_ID16;
699            case Opcode::INITOBJ_V4_V4_V4_V4_ID16:
700                return Format::V4_V4_V4_V4_ID16;
701            case Opcode::INITOBJ_RANGE_V8_ID16:
702                return Format::V8_ID16;
703            case Opcode::LDOBJ_V8_ID16:
704                return Format::V8_ID16;
705            case Opcode::LDOBJ_64_V8_ID16:
706                return Format::V8_ID16;
707            case Opcode::LDOBJ_OBJ_V8_ID16:
708                return Format::V8_ID16;
709            case Opcode::STOBJ_V8_ID16:
710                return Format::V8_ID16;
711            case Opcode::STOBJ_64_V8_ID16:
712                return Format::V8_ID16;
713            case Opcode::STOBJ_OBJ_V8_ID16:
714                return Format::V8_ID16;
715            case Opcode::LDOBJ_V_V4_V4_ID16:
716                return Format::V4_V4_ID16;
717            case Opcode::LDOBJ_V_64_V4_V4_ID16:
718                return Format::V4_V4_ID16;
719            case Opcode::LDOBJ_V_OBJ_V4_V4_ID16:
720                return Format::V4_V4_ID16;
721            case Opcode::STOBJ_V_V4_V4_ID16:
722                return Format::V4_V4_ID16;
723            case Opcode::STOBJ_V_64_V4_V4_ID16:
724                return Format::V4_V4_ID16;
725            case Opcode::STOBJ_V_OBJ_V4_V4_ID16:
726                return Format::V4_V4_ID16;
727            case Opcode::LDSTATIC_ID16:
728                return Format::ID16;
729            case Opcode::LDSTATIC_64_ID16:
730                return Format::ID16;
731            case Opcode::LDSTATIC_OBJ_ID16:
732                return Format::ID16;
733            case Opcode::STSTATIC_ID16:
734                return Format::ID16;
735            case Opcode::STSTATIC_64_ID16:
736                return Format::ID16;
737            case Opcode::STSTATIC_OBJ_ID16:
738                return Format::ID16;
739            case Opcode::RETURN:
740                return Format::NONE;
741            case Opcode::RETURN_64:
742                return Format::NONE;
743            case Opcode::RETURN_OBJ:
744                return Format::NONE;
745            case Opcode::RETURN_VOID:
746                return Format::NONE;
747            case Opcode::THROW_V8:
748                return Format::V8;
749            case Opcode::CHECKCAST_ID16:
750                return Format::ID16;
751            case Opcode::ISINSTANCE_ID16:
752                return Format::ID16;
753            case Opcode::CALL_SHORT_V4_V4_ID16:
754                return Format::V4_V4_ID16;
755            case Opcode::CALL_V4_V4_V4_V4_ID16:
756                return Format::V4_V4_V4_V4_ID16;
757            case Opcode::CALL_RANGE_V8_ID16:
758                return Format::V8_ID16;
759            case Opcode::CALL_ACC_SHORT_V4_IMM4_ID16:
760                return Format::V4_IMM4_ID16;
761            case Opcode::CALL_ACC_V4_V4_V4_IMM4_ID16:
762                return Format::V4_V4_V4_IMM4_ID16;
763            case Opcode::CALL_VIRT_SHORT_V4_V4_ID16:
764                return Format::V4_V4_ID16;
765            case Opcode::CALL_VIRT_V4_V4_V4_V4_ID16:
766                return Format::V4_V4_V4_V4_ID16;
767            case Opcode::CALL_VIRT_RANGE_V8_ID16:
768                return Format::V8_ID16;
769            case Opcode::CALL_VIRT_ACC_SHORT_V4_IMM4_ID16:
770                return Format::V4_IMM4_ID16;
771            case Opcode::CALL_VIRT_ACC_V4_V4_V4_IMM4_ID16:
772                return Format::V4_V4_V4_IMM4_ID16;
773            case Opcode::MOV_DYN_V8_V8:
774                return Format::V8_V8;
775            case Opcode::MOV_DYN_V16_V16:
776                return Format::V16_V16;
777            case Opcode::LDA_DYN_V8:
778                return Format::V8;
779            case Opcode::STA_DYN_V8:
780                return Format::V8;
781            case Opcode::LDAI_DYN_IMM32:
782                return Format::IMM32;
783            case Opcode::FLDAI_DYN_IMM64:
784                return Format::IMM64;
785            case Opcode::RETURN_DYN:
786                return Format::NONE;
787            case Opcode::CALLI_DYN_SHORT_IMM4_V4_V4_V4:
788                return Format::IMM4_V4_V4_V4;
789            case Opcode::CALLI_DYN_IMM4_V4_V4_V4_V4_V4:
790                return Format::IMM4_V4_V4_V4_V4_V4;
791            case Opcode::CALLI_DYN_RANGE_IMM16_V16:
792                return Format::IMM16_V16;
793            case Opcode::FMOVI_PREF_V8_IMM32:
794                return Format::PREF_V8_IMM32;
795            case Opcode::I32TOF64_PREF_NONE:
796                return Format::PREF_NONE;
797            case Opcode::UCMP_PREF_V8:
798                return Format::PREF_V8;
799            case Opcode::NOT_PREF_NONE:
800                return Format::PREF_NONE;
801            case Opcode::ECMA_LDNAN_PREF_NONE:
802                return Format::PREF_NONE;
803            case Opcode::FLDAI_PREF_IMM32:
804                return Format::PREF_IMM32;
805            case Opcode::U32TOF64_PREF_NONE:
806                return Format::PREF_NONE;
807            case Opcode::UCMP_64_PREF_V8:
808                return Format::PREF_V8;
809            case Opcode::NOT_64_PREF_NONE:
810                return Format::PREF_NONE;
811            case Opcode::ECMA_LDINFINITY_PREF_NONE:
812                return Format::PREF_NONE;
813            case Opcode::FCMPL_PREF_V8:
814                return Format::PREF_V8;
815            case Opcode::I64TOF64_PREF_NONE:
816                return Format::PREF_NONE;
817            case Opcode::DIVU2_PREF_V8:
818                return Format::PREF_V8;
819            case Opcode::AND2_PREF_V8:
820                return Format::PREF_V8;
821            case Opcode::ECMA_LDGLOBALTHIS_PREF_NONE:
822                return Format::PREF_NONE;
823            case Opcode::FCMPG_PREF_V8:
824                return Format::PREF_V8;
825            case Opcode::U64TOF64_PREF_NONE:
826                return Format::PREF_NONE;
827            case Opcode::DIVU2_64_PREF_V8:
828                return Format::PREF_V8;
829            case Opcode::AND2_64_PREF_V8:
830                return Format::PREF_V8;
831            case Opcode::ECMA_LDUNDEFINED_PREF_NONE:
832                return Format::PREF_NONE;
833            case Opcode::FNEG_PREF_NONE:
834                return Format::PREF_NONE;
835            case Opcode::F64TOI32_PREF_NONE:
836                return Format::PREF_NONE;
837            case Opcode::MODU2_PREF_V8:
838                return Format::PREF_V8;
839            case Opcode::OR2_PREF_V8:
840                return Format::PREF_V8;
841            case Opcode::ECMA_LDNULL_PREF_NONE:
842                return Format::PREF_NONE;
843            case Opcode::FADD2_PREF_V8:
844                return Format::PREF_V8;
845            case Opcode::F64TOI64_PREF_NONE:
846                return Format::PREF_NONE;
847            case Opcode::MODU2_64_PREF_V8:
848                return Format::PREF_V8;
849            case Opcode::OR2_64_PREF_V8:
850                return Format::PREF_V8;
851            case Opcode::ECMA_LDSYMBOL_PREF_NONE:
852                return Format::PREF_NONE;
853            case Opcode::FSUB2_PREF_V8:
854                return Format::PREF_V8;
855            case Opcode::F64TOU32_PREF_NONE:
856                return Format::PREF_NONE;
857            case Opcode::XOR2_PREF_V8:
858                return Format::PREF_V8;
859            case Opcode::ECMA_LDGLOBAL_PREF_NONE:
860                return Format::PREF_NONE;
861            case Opcode::FMUL2_PREF_V8:
862                return Format::PREF_V8;
863            case Opcode::F64TOU64_PREF_NONE:
864                return Format::PREF_NONE;
865            case Opcode::XOR2_64_PREF_V8:
866                return Format::PREF_V8;
867            case Opcode::ECMA_LDTRUE_PREF_NONE:
868                return Format::PREF_NONE;
869            case Opcode::FDIV2_PREF_V8:
870                return Format::PREF_V8;
871            case Opcode::I32TOU1_PREF_NONE:
872                return Format::PREF_NONE;
873            case Opcode::SHL2_PREF_V8:
874                return Format::PREF_V8;
875            case Opcode::ECMA_LDFALSE_PREF_NONE:
876                return Format::PREF_NONE;
877            case Opcode::FMOD2_PREF_V8:
878                return Format::PREF_V8;
879            case Opcode::I64TOU1_PREF_NONE:
880                return Format::PREF_NONE;
881            case Opcode::SHL2_64_PREF_V8:
882                return Format::PREF_V8;
883            case Opcode::ECMA_THROWDYN_PREF_NONE:
884                return Format::PREF_NONE;
885            case Opcode::I32TOF32_PREF_NONE:
886                return Format::PREF_NONE;
887            case Opcode::U32TOU1_PREF_NONE:
888                return Format::PREF_NONE;
889            case Opcode::SHR2_PREF_V8:
890                return Format::PREF_V8;
891            case Opcode::ECMA_TYPEOFDYN_PREF_NONE:
892                return Format::PREF_NONE;
893            case Opcode::U32TOF32_PREF_NONE:
894                return Format::PREF_NONE;
895            case Opcode::U64TOU1_PREF_NONE:
896                return Format::PREF_NONE;
897            case Opcode::SHR2_64_PREF_V8:
898                return Format::PREF_V8;
899            case Opcode::ECMA_LDLEXENVDYN_PREF_NONE:
900                return Format::PREF_NONE;
901            case Opcode::I64TOF32_PREF_NONE:
902                return Format::PREF_NONE;
903            case Opcode::I32TOI64_PREF_NONE:
904                return Format::PREF_NONE;
905            case Opcode::ASHR2_PREF_V8:
906                return Format::PREF_V8;
907            case Opcode::ECMA_POPLEXENVDYN_PREF_NONE:
908                return Format::PREF_NONE;
909            case Opcode::U64TOF32_PREF_NONE:
910                return Format::PREF_NONE;
911            case Opcode::I32TOI16_PREF_NONE:
912                return Format::PREF_NONE;
913            case Opcode::ASHR2_64_PREF_V8:
914                return Format::PREF_V8;
915            case Opcode::ECMA_GETUNMAPPEDARGS_PREF_NONE:
916                return Format::PREF_NONE;
917            case Opcode::F32TOF64_PREF_NONE:
918                return Format::PREF_NONE;
919            case Opcode::I32TOU16_PREF_NONE:
920                return Format::PREF_NONE;
921            case Opcode::XORI_PREF_IMM32:
922                return Format::PREF_IMM32;
923            case Opcode::ECMA_GETPROPITERATOR_PREF_NONE:
924                return Format::PREF_NONE;
925            case Opcode::F32TOI32_PREF_NONE:
926                return Format::PREF_NONE;
927            case Opcode::I32TOI8_PREF_NONE:
928                return Format::PREF_NONE;
929            case Opcode::AND_PREF_V4_V4:
930                return Format::PREF_V4_V4;
931            case Opcode::ECMA_ASYNCFUNCTIONENTER_PREF_NONE:
932                return Format::PREF_NONE;
933            case Opcode::F32TOI64_PREF_NONE:
934                return Format::PREF_NONE;
935            case Opcode::I32TOU8_PREF_NONE:
936                return Format::PREF_NONE;
937            case Opcode::OR_PREF_V4_V4:
938                return Format::PREF_V4_V4;
939            case Opcode::ECMA_LDHOLE_PREF_NONE:
940                return Format::PREF_NONE;
941            case Opcode::F32TOU32_PREF_NONE:
942                return Format::PREF_NONE;
943            case Opcode::I64TOI32_PREF_NONE:
944                return Format::PREF_NONE;
945            case Opcode::XOR_PREF_V4_V4:
946                return Format::PREF_V4_V4;
947            case Opcode::ECMA_RETURNUNDEFINED_PREF_NONE:
948                return Format::PREF_NONE;
949            case Opcode::F32TOU64_PREF_NONE:
950                return Format::PREF_NONE;
951            case Opcode::U32TOI64_PREF_NONE:
952                return Format::PREF_NONE;
953            case Opcode::SHL_PREF_V4_V4:
954                return Format::PREF_V4_V4;
955            case Opcode::ECMA_CREATEEMPTYOBJECT_PREF_NONE:
956                return Format::PREF_NONE;
957            case Opcode::F64TOF32_PREF_NONE:
958                return Format::PREF_NONE;
959            case Opcode::U32TOI16_PREF_NONE:
960                return Format::PREF_NONE;
961            case Opcode::SHR_PREF_V4_V4:
962                return Format::PREF_V4_V4;
963            case Opcode::ECMA_CREATEEMPTYARRAY_PREF_NONE:
964                return Format::PREF_NONE;
965            case Opcode::U32TOU16_PREF_NONE:
966                return Format::PREF_NONE;
967            case Opcode::ASHR_PREF_V4_V4:
968                return Format::PREF_V4_V4;
969            case Opcode::ECMA_GETITERATOR_PREF_NONE:
970                return Format::PREF_NONE;
971            case Opcode::U32TOI8_PREF_NONE:
972                return Format::PREF_NONE;
973            case Opcode::ECMA_THROWTHROWNOTEXISTS_PREF_NONE:
974                return Format::PREF_NONE;
975            case Opcode::U32TOU8_PREF_NONE:
976                return Format::PREF_NONE;
977            case Opcode::ECMA_THROWPATTERNNONCOERCIBLE_PREF_NONE:
978                return Format::PREF_NONE;
979            case Opcode::U64TOI32_PREF_NONE:
980                return Format::PREF_NONE;
981            case Opcode::ECMA_LDHOMEOBJECT_PREF_NONE:
982                return Format::PREF_NONE;
983            case Opcode::U64TOU32_PREF_NONE:
984                return Format::PREF_NONE;
985            case Opcode::ECMA_THROWDELETESUPERPROPERTY_PREF_NONE:
986                return Format::PREF_NONE;
987            case Opcode::ECMA_DEBUGGER_PREF_NONE:
988                return Format::PREF_NONE;
989            case Opcode::ECMA_ADD2DYN_PREF_V8:
990                return Format::PREF_V8;
991            case Opcode::ECMA_SUB2DYN_PREF_V8:
992                return Format::PREF_V8;
993            case Opcode::ECMA_MUL2DYN_PREF_V8:
994                return Format::PREF_V8;
995            case Opcode::ECMA_DIV2DYN_PREF_V8:
996                return Format::PREF_V8;
997            case Opcode::ECMA_MOD2DYN_PREF_V8:
998                return Format::PREF_V8;
999            case Opcode::ECMA_EQDYN_PREF_V8:
1000                return Format::PREF_V8;
1001            case Opcode::ECMA_NOTEQDYN_PREF_V8:
1002                return Format::PREF_V8;
1003            case Opcode::ECMA_LESSDYN_PREF_V8:
1004                return Format::PREF_V8;
1005            case Opcode::ECMA_LESSEQDYN_PREF_V8:
1006                return Format::PREF_V8;
1007            case Opcode::ECMA_GREATERDYN_PREF_V8:
1008                return Format::PREF_V8;
1009            case Opcode::ECMA_GREATEREQDYN_PREF_V8:
1010                return Format::PREF_V8;
1011            case Opcode::ECMA_SHL2DYN_PREF_V8:
1012                return Format::PREF_V8;
1013            case Opcode::ECMA_SHR2DYN_PREF_V8:
1014                return Format::PREF_V8;
1015            case Opcode::ECMA_ASHR2DYN_PREF_V8:
1016                return Format::PREF_V8;
1017            case Opcode::ECMA_AND2DYN_PREF_V8:
1018                return Format::PREF_V8;
1019            case Opcode::ECMA_OR2DYN_PREF_V8:
1020                return Format::PREF_V8;
1021            case Opcode::ECMA_XOR2DYN_PREF_V8:
1022                return Format::PREF_V8;
1023            case Opcode::ECMA_TONUMBER_PREF_V8:
1024                return Format::PREF_V8;
1025            case Opcode::ECMA_NEGDYN_PREF_V8:
1026                return Format::PREF_V8;
1027            case Opcode::ECMA_NOTDYN_PREF_V8:
1028                return Format::PREF_V8;
1029            case Opcode::ECMA_INCDYN_PREF_V8:
1030                return Format::PREF_V8;
1031            case Opcode::ECMA_DECDYN_PREF_V8:
1032                return Format::PREF_V8;
1033            case Opcode::ECMA_EXPDYN_PREF_V8:
1034                return Format::PREF_V8;
1035            case Opcode::ECMA_ISINDYN_PREF_V8:
1036                return Format::PREF_V8;
1037            case Opcode::ECMA_INSTANCEOFDYN_PREF_V8:
1038                return Format::PREF_V8;
1039            case Opcode::ECMA_STRICTNOTEQDYN_PREF_V8:
1040                return Format::PREF_V8;
1041            case Opcode::ECMA_STRICTEQDYN_PREF_V8:
1042                return Format::PREF_V8;
1043            case Opcode::ECMA_RESUMEGENERATOR_PREF_V8:
1044                return Format::PREF_V8;
1045            case Opcode::ECMA_GETRESUMEMODE_PREF_V8:
1046                return Format::PREF_V8;
1047            case Opcode::ECMA_CREATEGENERATOROBJ_PREF_V8:
1048                return Format::PREF_V8;
1049            case Opcode::ECMA_THROWCONSTASSIGNMENT_PREF_V8:
1050                return Format::PREF_V8;
1051            case Opcode::ECMA_GETTEMPLATEOBJECT_PREF_V8:
1052                return Format::PREF_V8;
1053            case Opcode::ECMA_GETNEXTPROPNAME_PREF_V8:
1054                return Format::PREF_V8;
1055            case Opcode::ECMA_CALLARG0DYN_PREF_V8:
1056                return Format::PREF_V8;
1057            case Opcode::ECMA_THROWIFNOTOBJECT_PREF_V8:
1058                return Format::PREF_V8;
1059            case Opcode::ECMA_ITERNEXT_PREF_V8:
1060                return Format::PREF_V8;
1061            case Opcode::ECMA_CLOSEITERATOR_PREF_V8:
1062                return Format::PREF_V8;
1063            case Opcode::ECMA_COPYMODULE_PREF_V8:
1064                return Format::PREF_V8;
1065            case Opcode::ECMA_SUPERCALLSPREAD_PREF_V8:
1066                return Format::PREF_V8;
1067            case Opcode::ECMA_DELOBJPROP_PREF_V8_V8:
1068                return Format::PREF_V8_V8;
1069            case Opcode::ECMA_NEWOBJSPREADDYN_PREF_V8_V8:
1070                return Format::PREF_V8_V8;
1071            case Opcode::ECMA_CREATEITERRESULTOBJ_PREF_V8_V8:
1072                return Format::PREF_V8_V8;
1073            case Opcode::ECMA_SUSPENDGENERATOR_PREF_V8_V8:
1074                return Format::PREF_V8_V8;
1075            case Opcode::ECMA_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8:
1076                return Format::PREF_V8_V8;
1077            case Opcode::ECMA_THROWUNDEFINEDIFHOLE_PREF_V8_V8:
1078                return Format::PREF_V8_V8;
1079            case Opcode::ECMA_CALLARG1DYN_PREF_V8_V8:
1080                return Format::PREF_V8_V8;
1081            case Opcode::ECMA_COPYDATAPROPERTIES_PREF_V8_V8:
1082                return Format::PREF_V8_V8;
1083            case Opcode::ECMA_STARRAYSPREAD_PREF_V8_V8:
1084                return Format::PREF_V8_V8;
1085            case Opcode::ECMA_GETITERATORNEXT_PREF_V8_V8:
1086                return Format::PREF_V8_V8;
1087            case Opcode::ECMA_SETOBJECTWITHPROTO_PREF_V8_V8:
1088                return Format::PREF_V8_V8;
1089            case Opcode::ECMA_LDOBJBYVALUE_PREF_V8_V8:
1090                return Format::PREF_V8_V8;
1091            case Opcode::ECMA_STOBJBYVALUE_PREF_V8_V8:
1092                return Format::PREF_V8_V8;
1093            case Opcode::ECMA_STOWNBYVALUE_PREF_V8_V8:
1094                return Format::PREF_V8_V8;
1095            case Opcode::ECMA_LDSUPERBYVALUE_PREF_V8_V8:
1096                return Format::PREF_V8_V8;
1097            case Opcode::ECMA_STSUPERBYVALUE_PREF_V8_V8:
1098                return Format::PREF_V8_V8;
1099            case Opcode::ECMA_LDOBJBYINDEX_PREF_V8_IMM32:
1100                return Format::PREF_V8_IMM32;
1101            case Opcode::ECMA_STOBJBYINDEX_PREF_V8_IMM32:
1102                return Format::PREF_V8_IMM32;
1103            case Opcode::ECMA_STOWNBYINDEX_PREF_V8_IMM32:
1104                return Format::PREF_V8_IMM32;
1105            case Opcode::ECMA_CALLSPREADDYN_PREF_V8_V8_V8:
1106                return Format::PREF_V8_V8_V8;
1107            case Opcode::ECMA_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8:
1108                return Format::PREF_V8_V8_V8;
1109            case Opcode::ECMA_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8:
1110                return Format::PREF_V8_V8_V8;
1111            case Opcode::ECMA_CALLARGS2DYN_PREF_V8_V8_V8:
1112                return Format::PREF_V8_V8_V8;
1113            case Opcode::ECMA_CALLARGS3DYN_PREF_V8_V8_V8_V8:
1114                return Format::PREF_V8_V8_V8_V8;
1115            case Opcode::ECMA_DEFINEGETTERSETTERBYVALUE_PREF_V8_V8_V8_V8:
1116                return Format::PREF_V8_V8_V8_V8;
1117            case Opcode::ECMA_NEWOBJDYNRANGE_PREF_IMM16_V8:
1118                return Format::PREF_IMM16_V8;
1119            case Opcode::ECMA_CALLRANGEDYN_PREF_IMM16_V8:
1120                return Format::PREF_IMM16_V8;
1121            case Opcode::ECMA_CALLTHISRANGEDYN_PREF_IMM16_V8:
1122                return Format::PREF_IMM16_V8;
1123            case Opcode::ECMA_SUPERCALL_PREF_IMM16_V8:
1124                return Format::PREF_IMM16_V8;
1125            case Opcode::ECMA_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8:
1126                return Format::PREF_IMM16_V8_V8;
1127            case Opcode::ECMA_DEFINEFUNCDYN_PREF_ID16_IMM16_V8:
1128                return Format::PREF_ID16_IMM16_V8;
1129            case Opcode::ECMA_DEFINENCFUNCDYN_PREF_ID16_IMM16_V8:
1130                return Format::PREF_ID16_IMM16_V8;
1131            case Opcode::ECMA_DEFINEGENERATORFUNC_PREF_ID16_IMM16_V8:
1132                return Format::PREF_ID16_IMM16_V8;
1133            case Opcode::ECMA_DEFINEASYNCFUNC_PREF_ID16_IMM16_V8:
1134                return Format::PREF_ID16_IMM16_V8;
1135            case Opcode::ECMA_DEFINEMETHOD_PREF_ID16_IMM16_V8:
1136                return Format::PREF_ID16_IMM16_V8;
1137            case Opcode::ECMA_NEWLEXENVDYN_PREF_IMM16:
1138                return Format::PREF_IMM16;
1139            case Opcode::ECMA_COPYRESTARGS_PREF_IMM16:
1140                return Format::PREF_IMM16;
1141            case Opcode::ECMA_CREATEARRAYWITHBUFFER_PREF_IMM16:
1142                return Format::PREF_IMM16;
1143            case Opcode::ECMA_CREATEOBJECTHAVINGMETHOD_PREF_IMM16:
1144                return Format::PREF_IMM16;
1145            case Opcode::ECMA_THROWIFSUPERNOTCORRECTCALL_PREF_IMM16:
1146                return Format::PREF_IMM16;
1147            case Opcode::ECMA_CREATEOBJECTWITHBUFFER_PREF_IMM16:
1148                return Format::PREF_IMM16;
1149            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM4_IMM4:
1150                return Format::PREF_IMM4_IMM4;
1151            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM8_IMM8:
1152                return Format::PREF_IMM8_IMM8;
1153            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM16_IMM16:
1154                return Format::PREF_IMM16_IMM16;
1155            case Opcode::ECMA_STLEXVARDYN_PREF_IMM4_IMM4_V8:
1156                return Format::PREF_IMM4_IMM4_V8;
1157            case Opcode::ECMA_STLEXVARDYN_PREF_IMM8_IMM8_V8:
1158                return Format::PREF_IMM8_IMM8_V8;
1159            case Opcode::ECMA_STLEXVARDYN_PREF_IMM16_IMM16_V8:
1160                return Format::PREF_IMM16_IMM16_V8;
1161            case Opcode::ECMA_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8:
1162                return Format::PREF_ID16_IMM16_IMM16_V8_V8;
1163            case Opcode::ECMA_GETMODULENAMESPACE_PREF_ID32:
1164                return Format::PREF_ID32;
1165            case Opcode::ECMA_STMODULEVAR_PREF_ID32:
1166                return Format::PREF_ID32;
1167            case Opcode::ECMA_TRYLDGLOBALBYNAME_PREF_ID32:
1168                return Format::PREF_ID32;
1169            case Opcode::ECMA_TRYSTGLOBALBYNAME_PREF_ID32:
1170                return Format::PREF_ID32;
1171            case Opcode::ECMA_LDGLOBALVAR_PREF_ID32:
1172                return Format::PREF_ID32;
1173            case Opcode::ECMA_STGLOBALVAR_PREF_ID32:
1174                return Format::PREF_ID32;
1175            case Opcode::ECMA_LDOBJBYNAME_PREF_ID32_V8:
1176                return Format::PREF_ID32_V8;
1177            case Opcode::ECMA_STOBJBYNAME_PREF_ID32_V8:
1178                return Format::PREF_ID32_V8;
1179            case Opcode::ECMA_STOWNBYNAME_PREF_ID32_V8:
1180                return Format::PREF_ID32_V8;
1181            case Opcode::ECMA_LDSUPERBYNAME_PREF_ID32_V8:
1182                return Format::PREF_ID32_V8;
1183            case Opcode::ECMA_STSUPERBYNAME_PREF_ID32_V8:
1184                return Format::PREF_ID32_V8;
1185            case Opcode::ECMA_LDMODULEVAR_PREF_ID32_IMM8:
1186                return Format::PREF_ID32_IMM8;
1187            case Opcode::ECMA_CREATEREGEXPWITHLITERAL_PREF_ID32_IMM8:
1188                return Format::PREF_ID32_IMM8;
1189            case Opcode::ECMA_ISTRUE_PREF_NONE:
1190                return Format::PREF_NONE;
1191            case Opcode::ECMA_ISFALSE_PREF_NONE:
1192                return Format::PREF_NONE;
1193            case Opcode::ECMA_STCONSTTOGLOBALRECORD_PREF_ID32:
1194                return Format::PREF_ID32;
1195            case Opcode::ECMA_STLETTOGLOBALRECORD_PREF_ID32:
1196                return Format::PREF_ID32;
1197            case Opcode::ECMA_STCLASSTOGLOBALRECORD_PREF_ID32:
1198                return Format::PREF_ID32;
1199            case Opcode::ECMA_STOWNBYVALUEWITHNAMESET_PREF_V8_V8:
1200                return Format::PREF_V8_V8;
1201            case Opcode::ECMA_STOWNBYNAMEWITHNAMESET_PREF_ID32_V8:
1202                return Format::PREF_ID32_V8;
1203            case Opcode::ECMA_LDFUNCTION_PREF_NONE:
1204                return Format::PREF_NONE;
1205            case Opcode::ECMA_NEWLEXENVWITHNAMEDYN_PREF_IMM16_IMM16:
1206                return Format::PREF_IMM16_IMM16;
1207            case Opcode::ECMA_LDBIGINT_PREF_ID32:
1208                return Format::PREF_ID32;
1209            case Opcode::ECMA_TONUMERIC_PREF_V8:
1210                return Format::PREF_V8;
1211            case Opcode::ECMA_CREATEASYNCGENERATOROBJ_PREF_V8:
1212                return Format::PREF_V8;
1213            case Opcode::ECMA_ASYNCGENERATORRESOLVE_PREF_V8_V8_V8:
1214                return Format::PREF_V8_V8_V8;
1215            case Opcode::ECMA_DEFINEASYNCGENERATORFUNC_PREF_ID16_IMM16_V8:
1216                return Format::PREF_ID16_IMM16_V8;
1217            case Opcode::ECMA_DYNAMICIMPORT_PREF_V8:
1218                return Format::PREF_V8;
1219            case Opcode::ECMA_LDPATCHVAR_PREF_IMM16:
1220                return Format::PREF_IMM16;
1221            case Opcode::ECMA_STPATCHVAR_PREF_IMM16:
1222                return Format::PREF_IMM16;
1223            case Opcode::ECMA_ASYNCGENERATORREJECT_PREF_V8_V8:
1224                return Format::PREF_V8_V8;
1225            default:
1226                break;
1227        }
1228        LOG_ECMA(FATAL) << "this branch is unreachable";
1229        UNREACHABLE();
1230    }
1231
1232    static constexpr bool HasId(Format format, size_t idx)
1233    {
1234        switch (format) {
1235            case Format::ID16:
1236                return idx < 1;
1237            case Format::ID32:
1238                return idx < 1;
1239            case Format::PREF_ID16_IMM16_IMM16_V8_V8:
1240                return idx < 1;
1241            case Format::PREF_ID16_IMM16_V8:
1242                return idx < 1;
1243            case Format::PREF_ID32:
1244                return idx < 1;
1245            case Format::PREF_ID32_IMM8:
1246                return idx < 1;
1247            case Format::PREF_ID32_V8:
1248                return idx < 1;
1249            case Format::V4_IMM4_ID16:
1250                return idx < 1;
1251            case Format::V4_V4_ID16:
1252                return idx < 1;
1253            case Format::V4_V4_V4_IMM4_ID16:
1254                return idx < 1;
1255            case Format::V4_V4_V4_V4_ID16:
1256                return idx < 1;
1257            case Format::V8_ID16:
1258                return idx < 1;
1259            case Format::V8_ID32:
1260                return idx < 1;
1261            default: {
1262                return false;
1263            }
1264        }
1265    }
1266
1267    inline bool HasFlag(Flags flag) const
1268    {
1269        switch (GetOpcode()) {
1270            case Opcode::NOP:
1271                return ((Flags::ACC_NONE) & flag) == flag;
1272            case Opcode::MOV_V4_V4:
1273                return ((Flags::ACC_NONE) & flag) == flag;
1274            case Opcode::MOV_V8_V8:
1275                return ((Flags::ACC_NONE) & flag) == flag;
1276            case Opcode::MOV_V16_V16:
1277                return ((Flags::ACC_NONE) & flag) == flag;
1278            case Opcode::MOV_64_V4_V4:
1279                return ((Flags::ACC_NONE) & flag) == flag;
1280            case Opcode::MOV_64_V16_V16:
1281                return ((Flags::ACC_NONE) & flag) == flag;
1282            case Opcode::MOV_OBJ_V4_V4:
1283                return ((Flags::ACC_NONE) & flag) == flag;
1284            case Opcode::MOV_OBJ_V8_V8:
1285                return ((Flags::ACC_NONE) & flag) == flag;
1286            case Opcode::MOV_OBJ_V16_V16:
1287                return ((Flags::ACC_NONE) & flag) == flag;
1288            case Opcode::MOVI_V4_IMM4:
1289                return ((Flags::ACC_NONE) & flag) == flag;
1290            case Opcode::MOVI_V8_IMM8:
1291                return ((Flags::ACC_NONE) & flag) == flag;
1292            case Opcode::MOVI_V8_IMM16:
1293                return ((Flags::ACC_NONE) & flag) == flag;
1294            case Opcode::MOVI_V8_IMM32:
1295                return ((Flags::ACC_NONE) & flag) == flag;
1296            case Opcode::MOVI_64_V8_IMM64:
1297                return ((Flags::ACC_NONE) & flag) == flag;
1298            case Opcode::FMOVI_64_V8_IMM64:
1299                return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1300            case Opcode::MOV_NULL_V8:
1301                return ((Flags::ACC_NONE) & flag) == flag;
1302            case Opcode::LDA_V8:
1303                return ((Flags::ACC_WRITE) & flag) == flag;
1304            case Opcode::LDA_64_V8:
1305                return ((Flags::ACC_WRITE) & flag) == flag;
1306            case Opcode::LDA_OBJ_V8:
1307                return ((Flags::ACC_WRITE) & flag) == flag;
1308            case Opcode::LDAI_IMM8:
1309                return ((Flags::ACC_WRITE) & flag) == flag;
1310            case Opcode::LDAI_IMM16:
1311                return ((Flags::ACC_WRITE) & flag) == flag;
1312            case Opcode::LDAI_IMM32:
1313                return ((Flags::ACC_WRITE) & flag) == flag;
1314            case Opcode::LDAI_64_IMM64:
1315                return ((Flags::ACC_WRITE) & flag) == flag;
1316            case Opcode::FLDAI_64_IMM64:
1317                return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1318            case Opcode::LDA_STR_ID32:
1319                return ((Flags::STRING_ID | Flags::LANGUAGE_TYPE | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE) & flag) ==
1320                    flag;
1321            case Opcode::LDA_CONST_V8_ID32:
1322                return ((Flags::LITERALARRAY_ID | Flags::ACC_NONE) & flag) == flag;
1323            case Opcode::LDA_TYPE_ID16:
1324                return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1325            case Opcode::LDA_NULL:
1326                return ((Flags::ACC_WRITE) & flag) == flag;
1327            case Opcode::STA_V8:
1328                return ((Flags::ACC_READ) & flag) == flag;
1329            case Opcode::STA_64_V8:
1330                return ((Flags::ACC_READ) & flag) == flag;
1331            case Opcode::STA_OBJ_V8:
1332                return ((Flags::ACC_READ) & flag) == flag;
1333            case Opcode::CMP_64_V8:
1334                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1335            case Opcode::FCMPL_64_V8:
1336                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1337            case Opcode::FCMPG_64_V8:
1338                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1339            case Opcode::JMP_IMM8:
1340                return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1341            case Opcode::JMP_IMM16:
1342                return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1343            case Opcode::JMP_IMM32:
1344                return ((Flags::JUMP | Flags::ACC_NONE) & flag) == flag;
1345            case Opcode::JEQ_OBJ_V8_IMM8:
1346                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1347            case Opcode::JEQ_OBJ_V8_IMM16:
1348                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1349            case Opcode::JNE_OBJ_V8_IMM8:
1350                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1351            case Opcode::JNE_OBJ_V8_IMM16:
1352                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1353            case Opcode::JEQZ_OBJ_IMM8:
1354                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1355            case Opcode::JEQZ_OBJ_IMM16:
1356                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1357            case Opcode::JNEZ_OBJ_IMM8:
1358                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1359            case Opcode::JNEZ_OBJ_IMM16:
1360                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1361            case Opcode::JEQZ_IMM8:
1362                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1363            case Opcode::JEQZ_IMM16:
1364                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1365            case Opcode::JNEZ_IMM8:
1366                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1367            case Opcode::JNEZ_IMM16:
1368                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1369            case Opcode::JLTZ_IMM8:
1370                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1371            case Opcode::JLTZ_IMM16:
1372                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1373            case Opcode::JGTZ_IMM8:
1374                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1375            case Opcode::JGTZ_IMM16:
1376                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1377            case Opcode::JLEZ_IMM8:
1378                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1379            case Opcode::JLEZ_IMM16:
1380                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1381            case Opcode::JGEZ_IMM8:
1382                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1383            case Opcode::JGEZ_IMM16:
1384                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1385            case Opcode::JEQ_V8_IMM8:
1386                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1387            case Opcode::JEQ_V8_IMM16:
1388                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1389            case Opcode::JNE_V8_IMM8:
1390                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1391            case Opcode::JNE_V8_IMM16:
1392                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1393            case Opcode::JLT_V8_IMM8:
1394                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1395            case Opcode::JLT_V8_IMM16:
1396                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1397            case Opcode::JGT_V8_IMM8:
1398                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1399            case Opcode::JGT_V8_IMM16:
1400                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1401            case Opcode::JLE_V8_IMM8:
1402                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1403            case Opcode::JLE_V8_IMM16:
1404                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1405            case Opcode::JGE_V8_IMM8:
1406                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1407            case Opcode::JGE_V8_IMM16:
1408                return ((Flags::JUMP | Flags::CONDITIONAL | Flags::ACC_READ) & flag) == flag;
1409            case Opcode::FNEG_64:
1410                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1411            case Opcode::NEG:
1412                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1413            case Opcode::NEG_64:
1414                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1415            case Opcode::ADD2_V8:
1416                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1417            case Opcode::ADD2_64_V8:
1418                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1419            case Opcode::SUB2_V8:
1420                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1421            case Opcode::SUB2_64_V8:
1422                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1423            case Opcode::MUL2_V8:
1424                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1425            case Opcode::MUL2_64_V8:
1426                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1427            case Opcode::FADD2_64_V8:
1428                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1429            case Opcode::FSUB2_64_V8:
1430                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1431            case Opcode::FMUL2_64_V8:
1432                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1433            case Opcode::FDIV2_64_V8:
1434                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1435            case Opcode::FMOD2_64_V8:
1436                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1437            case Opcode::DIV2_V8:
1438                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1439            case Opcode::DIV2_64_V8:
1440                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1441            case Opcode::MOD2_V8:
1442                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1443            case Opcode::MOD2_64_V8:
1444                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1445            case Opcode::ADDI_IMM8:
1446                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1447            case Opcode::SUBI_IMM8:
1448                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1449            case Opcode::MULI_IMM8:
1450                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1451            case Opcode::ANDI_IMM32:
1452                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1453            case Opcode::ORI_IMM32:
1454                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1455            case Opcode::SHLI_IMM8:
1456                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1457            case Opcode::SHRI_IMM8:
1458                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1459            case Opcode::ASHRI_IMM8:
1460                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1461            case Opcode::DIVI_IMM8:
1462                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1463            case Opcode::MODI_IMM8:
1464                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1465            case Opcode::ADD_V4_V4:
1466                return ((Flags::ACC_WRITE) & flag) == flag;
1467            case Opcode::SUB_V4_V4:
1468                return ((Flags::ACC_WRITE) & flag) == flag;
1469            case Opcode::MUL_V4_V4:
1470                return ((Flags::ACC_WRITE) & flag) == flag;
1471            case Opcode::DIV_V4_V4:
1472                return ((Flags::ACC_WRITE) & flag) == flag;
1473            case Opcode::MOD_V4_V4:
1474                return ((Flags::ACC_WRITE) & flag) == flag;
1475            case Opcode::INCI_V4_IMM4:
1476                return ((Flags::ACC_NONE) & flag) == flag;
1477            case Opcode::LDARR_8_V8:
1478                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1479            case Opcode::LDARRU_8_V8:
1480                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1481            case Opcode::LDARR_16_V8:
1482                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1483            case Opcode::LDARRU_16_V8:
1484                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1485            case Opcode::LDARR_V8:
1486                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1487            case Opcode::LDARR_64_V8:
1488                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1489            case Opcode::FLDARR_32_V8:
1490                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1491            case Opcode::FLDARR_64_V8:
1492                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1493            case Opcode::LDARR_OBJ_V8:
1494                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1495            case Opcode::STARR_8_V4_V4:
1496                return ((Flags::ACC_READ) & flag) == flag;
1497            case Opcode::STARR_16_V4_V4:
1498                return ((Flags::ACC_READ) & flag) == flag;
1499            case Opcode::STARR_V4_V4:
1500                return ((Flags::ACC_READ) & flag) == flag;
1501            case Opcode::STARR_64_V4_V4:
1502                return ((Flags::ACC_READ) & flag) == flag;
1503            case Opcode::FSTARR_32_V4_V4:
1504                return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1505            case Opcode::FSTARR_64_V4_V4:
1506                return ((Flags::FLOAT | Flags::ACC_READ) & flag) == flag;
1507            case Opcode::STARR_OBJ_V4_V4:
1508                return ((Flags::ACC_READ) & flag) == flag;
1509            case Opcode::LENARR_V8:
1510                return ((Flags::ACC_WRITE) & flag) == flag;
1511            case Opcode::NEWARR_V4_V4_ID16:
1512                return ((Flags::TYPE_ID | Flags::LANGUAGE_TYPE | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) ==
1513                    flag;
1514            case Opcode::NEWOBJ_V8_ID16:
1515                return ((Flags::TYPE_ID | Flags::INITIALIZE_TYPE | Flags::ACC_NONE) & flag) == flag;
1516            case Opcode::INITOBJ_SHORT_V4_V4_ID16:
1517                return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1518            case Opcode::INITOBJ_V4_V4_V4_V4_ID16:
1519                return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1520            case Opcode::INITOBJ_RANGE_V8_ID16:
1521                return ((Flags::METHOD_ID | Flags::CALL | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1522            case Opcode::LDOBJ_V8_ID16:
1523                return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1524            case Opcode::LDOBJ_64_V8_ID16:
1525                return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1526            case Opcode::LDOBJ_OBJ_V8_ID16:
1527                return ((Flags::FIELD_ID | Flags::ACC_WRITE) & flag) == flag;
1528            case Opcode::STOBJ_V8_ID16:
1529                return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1530            case Opcode::STOBJ_64_V8_ID16:
1531                return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1532            case Opcode::STOBJ_OBJ_V8_ID16:
1533                return ((Flags::FIELD_ID | Flags::ACC_READ) & flag) == flag;
1534            case Opcode::LDOBJ_V_V4_V4_ID16:
1535                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1536            case Opcode::LDOBJ_V_64_V4_V4_ID16:
1537                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1538            case Opcode::LDOBJ_V_OBJ_V4_V4_ID16:
1539                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1540            case Opcode::STOBJ_V_V4_V4_ID16:
1541                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1542            case Opcode::STOBJ_V_64_V4_V4_ID16:
1543                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1544            case Opcode::STOBJ_V_OBJ_V4_V4_ID16:
1545                return ((Flags::FIELD_ID | Flags::ACC_NONE) & flag) == flag;
1546            case Opcode::LDSTATIC_ID16:
1547                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1548            case Opcode::LDSTATIC_64_ID16:
1549                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1550            case Opcode::LDSTATIC_OBJ_ID16:
1551                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_WRITE) & flag) == flag;
1552            case Opcode::STSTATIC_ID16:
1553                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1554            case Opcode::STSTATIC_64_ID16:
1555                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1556            case Opcode::STSTATIC_OBJ_ID16:
1557                return ((Flags::FIELD_ID | Flags::INITIALIZE_TYPE | Flags::ACC_READ) & flag) == flag;
1558            case Opcode::RETURN:
1559                return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1560            case Opcode::RETURN_64:
1561                return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1562            case Opcode::RETURN_OBJ:
1563                return ((Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1564            case Opcode::RETURN_VOID:
1565                return ((Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1566            case Opcode::THROW_V8:
1567                return ((Flags::ACC_NONE) & flag) == flag;
1568            case Opcode::CHECKCAST_ID16:
1569                return ((Flags::TYPE_ID | Flags::ACC_READ) & flag) == flag;
1570            case Opcode::ISINSTANCE_ID16:
1571                return ((Flags::TYPE_ID | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1572            case Opcode::CALL_SHORT_V4_V4_ID16:
1573                return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1574                    Flags::ACC_WRITE) & flag) == flag;
1575            case Opcode::CALL_V4_V4_V4_V4_ID16:
1576                return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1577                    Flags::ACC_WRITE) & flag) == flag;
1578            case Opcode::CALL_RANGE_V8_ID16:
1579                return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::INITIALIZE_TYPE |
1580                    Flags::ACC_WRITE) & flag) == flag;
1581            case Opcode::CALL_ACC_SHORT_V4_IMM4_ID16:
1582                return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1583                    flag) == flag;
1584            case Opcode::CALL_ACC_V4_V4_V4_IMM4_ID16:
1585                return ((Flags::METHOD_ID | Flags::CALL | Flags::MAYBE_DYNAMIC | Flags::ACC_WRITE | Flags::ACC_READ) &
1586                    flag) == flag;
1587            case Opcode::CALL_VIRT_SHORT_V4_V4_ID16:
1588                return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1589            case Opcode::CALL_VIRT_V4_V4_V4_V4_ID16:
1590                return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1591            case Opcode::CALL_VIRT_RANGE_V8_ID16:
1592                return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE) & flag) == flag;
1593            case Opcode::CALL_VIRT_ACC_SHORT_V4_IMM4_ID16:
1594                return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1595                    flag) == flag;
1596            case Opcode::CALL_VIRT_ACC_V4_V4_V4_IMM4_ID16:
1597                return ((Flags::METHOD_ID | Flags::CALL | Flags::CALL_VIRT | Flags::ACC_WRITE | Flags::ACC_READ) &
1598                    flag) == flag;
1599            case Opcode::MOV_DYN_V8_V8:
1600                return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1601            case Opcode::MOV_DYN_V16_V16:
1602                return ((Flags::DYNAMIC | Flags::ACC_NONE) & flag) == flag;
1603            case Opcode::LDA_DYN_V8:
1604                return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1605            case Opcode::STA_DYN_V8:
1606                return ((Flags::DYNAMIC | Flags::ACC_READ) & flag) == flag;
1607            case Opcode::LDAI_DYN_IMM32:
1608                return ((Flags::DYNAMIC | Flags::ACC_WRITE) & flag) == flag;
1609            case Opcode::FLDAI_DYN_IMM64:
1610                return ((Flags::DYNAMIC | Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1611            case Opcode::RETURN_DYN:
1612                return ((Flags::DYNAMIC | Flags::RETURN | Flags::ACC_READ) & flag) == flag;
1613            case Opcode::CALLI_DYN_SHORT_IMM4_V4_V4_V4:
1614                return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1615            case Opcode::CALLI_DYN_IMM4_V4_V4_V4_V4_V4:
1616                return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1617            case Opcode::CALLI_DYN_RANGE_IMM16_V16:
1618                return ((Flags::DYNAMIC | Flags::CALL | Flags::ACC_WRITE) & flag) == flag;
1619            case Opcode::FMOVI_PREF_V8_IMM32:
1620                return ((Flags::FLOAT | Flags::ACC_NONE) & flag) == flag;
1621            case Opcode::I32TOF64_PREF_NONE:
1622                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1623            case Opcode::UCMP_PREF_V8:
1624                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1625            case Opcode::NOT_PREF_NONE:
1626                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1627            case Opcode::ECMA_LDNAN_PREF_NONE:
1628                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1629            case Opcode::FLDAI_PREF_IMM32:
1630                return ((Flags::FLOAT | Flags::ACC_WRITE) & flag) == flag;
1631            case Opcode::U32TOF64_PREF_NONE:
1632                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1633            case Opcode::UCMP_64_PREF_V8:
1634                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1635            case Opcode::NOT_64_PREF_NONE:
1636                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1637            case Opcode::ECMA_LDINFINITY_PREF_NONE:
1638                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1639            case Opcode::FCMPL_PREF_V8:
1640                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1641            case Opcode::I64TOF64_PREF_NONE:
1642                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1643            case Opcode::DIVU2_PREF_V8:
1644                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1645            case Opcode::AND2_PREF_V8:
1646                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1647            case Opcode::ECMA_LDGLOBALTHIS_PREF_NONE:
1648                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1649            case Opcode::FCMPG_PREF_V8:
1650                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1651            case Opcode::U64TOF64_PREF_NONE:
1652                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1653            case Opcode::DIVU2_64_PREF_V8:
1654                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1655            case Opcode::AND2_64_PREF_V8:
1656                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1657            case Opcode::ECMA_LDUNDEFINED_PREF_NONE:
1658                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1659            case Opcode::FNEG_PREF_NONE:
1660                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1661            case Opcode::F64TOI32_PREF_NONE:
1662                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1663            case Opcode::MODU2_PREF_V8:
1664                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1665            case Opcode::OR2_PREF_V8:
1666                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1667            case Opcode::ECMA_LDNULL_PREF_NONE:
1668                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1669            case Opcode::FADD2_PREF_V8:
1670                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1671            case Opcode::F64TOI64_PREF_NONE:
1672                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1673            case Opcode::MODU2_64_PREF_V8:
1674                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1675            case Opcode::OR2_64_PREF_V8:
1676                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1677            case Opcode::ECMA_LDSYMBOL_PREF_NONE:
1678                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1679            case Opcode::FSUB2_PREF_V8:
1680                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1681            case Opcode::F64TOU32_PREF_NONE:
1682                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1683            case Opcode::XOR2_PREF_V8:
1684                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1685            case Opcode::ECMA_LDGLOBAL_PREF_NONE:
1686                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1687            case Opcode::FMUL2_PREF_V8:
1688                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1689            case Opcode::F64TOU64_PREF_NONE:
1690                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1691            case Opcode::XOR2_64_PREF_V8:
1692                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1693            case Opcode::ECMA_LDTRUE_PREF_NONE:
1694                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1695            case Opcode::FDIV2_PREF_V8:
1696                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1697            case Opcode::I32TOU1_PREF_NONE:
1698                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1699            case Opcode::SHL2_PREF_V8:
1700                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1701            case Opcode::ECMA_LDFALSE_PREF_NONE:
1702                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1703            case Opcode::FMOD2_PREF_V8:
1704                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1705            case Opcode::I64TOU1_PREF_NONE:
1706                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1707            case Opcode::SHL2_64_PREF_V8:
1708                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1709            case Opcode::ECMA_THROWDYN_PREF_NONE:
1710                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1711            case Opcode::I32TOF32_PREF_NONE:
1712                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1713            case Opcode::U32TOU1_PREF_NONE:
1714                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1715            case Opcode::SHR2_PREF_V8:
1716                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1717            case Opcode::ECMA_TYPEOFDYN_PREF_NONE:
1718                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1719            case Opcode::U32TOF32_PREF_NONE:
1720                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1721            case Opcode::U64TOU1_PREF_NONE:
1722                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1723            case Opcode::SHR2_64_PREF_V8:
1724                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1725            case Opcode::ECMA_LDLEXENVDYN_PREF_NONE:
1726                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1727            case Opcode::I64TOF32_PREF_NONE:
1728                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1729            case Opcode::I32TOI64_PREF_NONE:
1730                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1731            case Opcode::ASHR2_PREF_V8:
1732                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1733            case Opcode::ECMA_POPLEXENVDYN_PREF_NONE:
1734                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1735            case Opcode::U64TOF32_PREF_NONE:
1736                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1737            case Opcode::I32TOI16_PREF_NONE:
1738                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1739            case Opcode::ASHR2_64_PREF_V8:
1740                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1741            case Opcode::ECMA_GETUNMAPPEDARGS_PREF_NONE:
1742                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1743            case Opcode::F32TOF64_PREF_NONE:
1744                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1745            case Opcode::I32TOU16_PREF_NONE:
1746                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1747            case Opcode::XORI_PREF_IMM32:
1748                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1749            case Opcode::ECMA_GETPROPITERATOR_PREF_NONE:
1750                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1751            case Opcode::F32TOI32_PREF_NONE:
1752                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1753            case Opcode::I32TOI8_PREF_NONE:
1754                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1755            case Opcode::AND_PREF_V4_V4:
1756                return ((Flags::ACC_WRITE) & flag) == flag;
1757            case Opcode::ECMA_ASYNCFUNCTIONENTER_PREF_NONE:
1758                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1759            case Opcode::F32TOI64_PREF_NONE:
1760                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1761            case Opcode::I32TOU8_PREF_NONE:
1762                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1763            case Opcode::OR_PREF_V4_V4:
1764                return ((Flags::ACC_WRITE) & flag) == flag;
1765            case Opcode::ECMA_LDHOLE_PREF_NONE:
1766                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1767            case Opcode::F32TOU32_PREF_NONE:
1768                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1769            case Opcode::I64TOI32_PREF_NONE:
1770                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1771            case Opcode::XOR_PREF_V4_V4:
1772                return ((Flags::ACC_WRITE) & flag) == flag;
1773            case Opcode::ECMA_RETURNUNDEFINED_PREF_NONE:
1774                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::RETURN | Flags::ACC_NONE) & flag) == flag;
1775            case Opcode::F32TOU64_PREF_NONE:
1776                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1777            case Opcode::U32TOI64_PREF_NONE:
1778                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1779            case Opcode::SHL_PREF_V4_V4:
1780                return ((Flags::ACC_WRITE) & flag) == flag;
1781            case Opcode::ECMA_CREATEEMPTYOBJECT_PREF_NONE:
1782                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1783            case Opcode::F64TOF32_PREF_NONE:
1784                return ((Flags::FLOAT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1785            case Opcode::U32TOI16_PREF_NONE:
1786                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1787            case Opcode::SHR_PREF_V4_V4:
1788                return ((Flags::ACC_WRITE) & flag) == flag;
1789            case Opcode::ECMA_CREATEEMPTYARRAY_PREF_NONE:
1790                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1791            case Opcode::U32TOU16_PREF_NONE:
1792                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1793            case Opcode::ASHR_PREF_V4_V4:
1794                return ((Flags::ACC_WRITE) & flag) == flag;
1795            case Opcode::ECMA_GETITERATOR_PREF_NONE:
1796                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1797            case Opcode::U32TOI8_PREF_NONE:
1798                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1799            case Opcode::ECMA_THROWTHROWNOTEXISTS_PREF_NONE:
1800                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1801            case Opcode::U32TOU8_PREF_NONE:
1802                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1803            case Opcode::ECMA_THROWPATTERNNONCOERCIBLE_PREF_NONE:
1804                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1805            case Opcode::U64TOI32_PREF_NONE:
1806                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1807            case Opcode::ECMA_LDHOMEOBJECT_PREF_NONE:
1808                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1809            case Opcode::U64TOU32_PREF_NONE:
1810                return ((Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1811            case Opcode::ECMA_THROWDELETESUPERPROPERTY_PREF_NONE:
1812                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1813            case Opcode::ECMA_DEBUGGER_PREF_NONE:
1814                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1815            case Opcode::ECMA_ADD2DYN_PREF_V8:
1816                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1817            case Opcode::ECMA_SUB2DYN_PREF_V8:
1818                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1819            case Opcode::ECMA_MUL2DYN_PREF_V8:
1820                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1821            case Opcode::ECMA_DIV2DYN_PREF_V8:
1822                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1823            case Opcode::ECMA_MOD2DYN_PREF_V8:
1824                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1825            case Opcode::ECMA_EQDYN_PREF_V8:
1826                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1827            case Opcode::ECMA_NOTEQDYN_PREF_V8:
1828                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1829            case Opcode::ECMA_LESSDYN_PREF_V8:
1830                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1831            case Opcode::ECMA_LESSEQDYN_PREF_V8:
1832                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1833            case Opcode::ECMA_GREATERDYN_PREF_V8:
1834                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1835            case Opcode::ECMA_GREATEREQDYN_PREF_V8:
1836                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1837            case Opcode::ECMA_SHL2DYN_PREF_V8:
1838                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1839            case Opcode::ECMA_SHR2DYN_PREF_V8:
1840                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1841            case Opcode::ECMA_ASHR2DYN_PREF_V8:
1842                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1843            case Opcode::ECMA_AND2DYN_PREF_V8:
1844                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1845            case Opcode::ECMA_OR2DYN_PREF_V8:
1846                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1847            case Opcode::ECMA_XOR2DYN_PREF_V8:
1848                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1849            case Opcode::ECMA_TONUMBER_PREF_V8:
1850                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1851            case Opcode::ECMA_NEGDYN_PREF_V8:
1852                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1853            case Opcode::ECMA_NOTDYN_PREF_V8:
1854                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1855            case Opcode::ECMA_INCDYN_PREF_V8:
1856                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1857            case Opcode::ECMA_DECDYN_PREF_V8:
1858                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1859            case Opcode::ECMA_EXPDYN_PREF_V8:
1860                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1861            case Opcode::ECMA_ISINDYN_PREF_V8:
1862                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1863            case Opcode::ECMA_INSTANCEOFDYN_PREF_V8:
1864                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1865            case Opcode::ECMA_STRICTNOTEQDYN_PREF_V8:
1866                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1867            case Opcode::ECMA_STRICTEQDYN_PREF_V8:
1868                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1869            case Opcode::ECMA_RESUMEGENERATOR_PREF_V8:
1870                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1871            case Opcode::ECMA_GETRESUMEMODE_PREF_V8:
1872                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1873            case Opcode::ECMA_CREATEGENERATOROBJ_PREF_V8:
1874                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1875            case Opcode::ECMA_THROWCONSTASSIGNMENT_PREF_V8:
1876                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1877            case Opcode::ECMA_GETTEMPLATEOBJECT_PREF_V8:
1878                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1879            case Opcode::ECMA_GETNEXTPROPNAME_PREF_V8:
1880                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1881            case Opcode::ECMA_CALLARG0DYN_PREF_V8:
1882                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1883            case Opcode::ECMA_THROWIFNOTOBJECT_PREF_V8:
1884                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1885            case Opcode::ECMA_ITERNEXT_PREF_V8:
1886                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1887            case Opcode::ECMA_CLOSEITERATOR_PREF_V8:
1888                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1889            case Opcode::ECMA_COPYMODULE_PREF_V8:
1890                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1891            case Opcode::ECMA_SUPERCALLSPREAD_PREF_V8:
1892                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1893            case Opcode::ECMA_DELOBJPROP_PREF_V8_V8:
1894                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1895            case Opcode::ECMA_NEWOBJSPREADDYN_PREF_V8_V8:
1896                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1897            case Opcode::ECMA_CREATEITERRESULTOBJ_PREF_V8_V8:
1898                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1899            case Opcode::ECMA_SUSPENDGENERATOR_PREF_V8_V8:
1900                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1901            case Opcode::ECMA_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8:
1902                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1903            case Opcode::ECMA_THROWUNDEFINEDIFHOLE_PREF_V8_V8:
1904                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1905            case Opcode::ECMA_CALLARG1DYN_PREF_V8_V8:
1906                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1907            case Opcode::ECMA_COPYDATAPROPERTIES_PREF_V8_V8:
1908                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1909            case Opcode::ECMA_STARRAYSPREAD_PREF_V8_V8:
1910                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1911            case Opcode::ECMA_GETITERATORNEXT_PREF_V8_V8:
1912                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1913            case Opcode::ECMA_SETOBJECTWITHPROTO_PREF_V8_V8:
1914                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_NONE) & flag) == flag;
1915            case Opcode::ECMA_LDOBJBYVALUE_PREF_V8_V8:
1916                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1917            case Opcode::ECMA_STOBJBYVALUE_PREF_V8_V8:
1918                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1919            case Opcode::ECMA_STOWNBYVALUE_PREF_V8_V8:
1920                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1921            case Opcode::ECMA_LDSUPERBYVALUE_PREF_V8_V8:
1922                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1923            case Opcode::ECMA_STSUPERBYVALUE_PREF_V8_V8:
1924                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1925            case Opcode::ECMA_LDOBJBYINDEX_PREF_V8_IMM32:
1926                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1927            case Opcode::ECMA_STOBJBYINDEX_PREF_V8_IMM32:
1928                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1929            case Opcode::ECMA_STOWNBYINDEX_PREF_V8_IMM32:
1930                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1931            case Opcode::ECMA_CALLSPREADDYN_PREF_V8_V8_V8:
1932                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1933            case Opcode::ECMA_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8:
1934                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1935            case Opcode::ECMA_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8:
1936                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1937            case Opcode::ECMA_CALLARGS2DYN_PREF_V8_V8_V8:
1938                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1939            case Opcode::ECMA_CALLARGS3DYN_PREF_V8_V8_V8_V8:
1940                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1941            case Opcode::ECMA_DEFINEGETTERSETTERBYVALUE_PREF_V8_V8_V8_V8:
1942                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1943            case Opcode::ECMA_NEWOBJDYNRANGE_PREF_IMM16_V8:
1944                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1945            case Opcode::ECMA_CALLRANGEDYN_PREF_IMM16_V8:
1946                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1947            case Opcode::ECMA_CALLTHISRANGEDYN_PREF_IMM16_V8:
1948                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1949            case Opcode::ECMA_SUPERCALL_PREF_IMM16_V8:
1950                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1951            case Opcode::ECMA_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8:
1952                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1953            case Opcode::ECMA_DEFINEFUNCDYN_PREF_ID16_IMM16_V8:
1954                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1955            case Opcode::ECMA_DEFINENCFUNCDYN_PREF_ID16_IMM16_V8:
1956                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1957                    flag) == flag;
1958            case Opcode::ECMA_DEFINEGENERATORFUNC_PREF_ID16_IMM16_V8:
1959                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1960            case Opcode::ECMA_DEFINEASYNCFUNC_PREF_ID16_IMM16_V8:
1961                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1962            case Opcode::ECMA_DEFINEMETHOD_PREF_ID16_IMM16_V8:
1963                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE | Flags::ACC_READ) &
1964                    flag) == flag;
1965            case Opcode::ECMA_NEWLEXENVDYN_PREF_IMM16:
1966                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1967            case Opcode::ECMA_COPYRESTARGS_PREF_IMM16:
1968                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1969            case Opcode::ECMA_CREATEARRAYWITHBUFFER_PREF_IMM16:
1970                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1971            case Opcode::ECMA_CREATEOBJECTHAVINGMETHOD_PREF_IMM16:
1972                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1973            case Opcode::ECMA_THROWIFSUPERNOTCORRECTCALL_PREF_IMM16:
1974                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
1975            case Opcode::ECMA_CREATEOBJECTWITHBUFFER_PREF_IMM16:
1976                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1977            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM4_IMM4:
1978                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1979            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM8_IMM8:
1980                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1981            case Opcode::ECMA_LDLEXVARDYN_PREF_IMM16_IMM16:
1982                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1983            case Opcode::ECMA_STLEXVARDYN_PREF_IMM4_IMM4_V8:
1984                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1985            case Opcode::ECMA_STLEXVARDYN_PREF_IMM8_IMM8_V8:
1986                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1987            case Opcode::ECMA_STLEXVARDYN_PREF_IMM16_IMM16_V8:
1988                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
1989            case Opcode::ECMA_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8:
1990                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
1991            case Opcode::ECMA_GETMODULENAMESPACE_PREF_ID32:
1992                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1993            case Opcode::ECMA_STMODULEVAR_PREF_ID32:
1994                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1995            case Opcode::ECMA_TRYLDGLOBALBYNAME_PREF_ID32:
1996                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
1997            case Opcode::ECMA_TRYSTGLOBALBYNAME_PREF_ID32:
1998                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
1999            case Opcode::ECMA_LDGLOBALVAR_PREF_ID32:
2000                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2001            case Opcode::ECMA_STGLOBALVAR_PREF_ID32:
2002                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2003            case Opcode::ECMA_LDOBJBYNAME_PREF_ID32_V8:
2004                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2005            case Opcode::ECMA_STOBJBYNAME_PREF_ID32_V8:
2006                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2007            case Opcode::ECMA_STOWNBYNAME_PREF_ID32_V8:
2008                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2009            case Opcode::ECMA_LDSUPERBYNAME_PREF_ID32_V8:
2010                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2011            case Opcode::ECMA_STSUPERBYNAME_PREF_ID32_V8:
2012                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2013            case Opcode::ECMA_LDMODULEVAR_PREF_ID32_IMM8:
2014                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2015            case Opcode::ECMA_CREATEREGEXPWITHLITERAL_PREF_ID32_IMM8:
2016                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2017            case Opcode::ECMA_ISTRUE_PREF_NONE:
2018                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2019            case Opcode::ECMA_ISFALSE_PREF_NONE:
2020                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2021            case Opcode::ECMA_STCONSTTOGLOBALRECORD_PREF_ID32:
2022                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2023            case Opcode::ECMA_STLETTOGLOBALRECORD_PREF_ID32:
2024                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2025            case Opcode::ECMA_STCLASSTOGLOBALRECORD_PREF_ID32:
2026                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2027            case Opcode::ECMA_STOWNBYVALUEWITHNAMESET_PREF_V8_V8:
2028                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2029            case Opcode::ECMA_STOWNBYNAMEWITHNAMESET_PREF_ID32_V8:
2030                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_READ) & flag) == flag;
2031            case Opcode::ECMA_LDFUNCTION_PREF_NONE:
2032                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2033            case Opcode::ECMA_NEWLEXENVWITHNAMEDYN_PREF_IMM16_IMM16:
2034                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2035            case Opcode::ECMA_LDBIGINT_PREF_ID32:
2036                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::STRING_ID | Flags::ACC_WRITE) & flag) == flag;
2037            case Opcode::ECMA_TONUMERIC_PREF_V8:
2038                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag;
2039            case Opcode::ECMA_CREATEASYNCGENERATOROBJ_PREF_V8:
2040                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2041            case Opcode::ECMA_ASYNCGENERATORRESOLVE_PREF_V8_V8_V8:
2042                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag;
2043            case Opcode::ECMA_DEFINEASYNCGENERATORFUNC_PREF_ID16_IMM16_V8:
2044                return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::METHOD_ID | Flags::ACC_WRITE) & flag) == flag;
2045            case Opcode::ECMA_DYNAMICIMPORT_PREF_V8:
2046                return ((Flags::ACC_READ | Flags::ACC_WRITE) & flag) == flag;
2047            case Opcode::ECMA_LDPATCHVAR_PREF_IMM16:
2048                return (Flags::ACC_WRITE & flag) == flag;
2049            case Opcode::ECMA_STPATCHVAR_PREF_IMM16:
2050                return (Flags::ACC_READ & flag) == flag;
2051            case Opcode::ECMA_ASYNCGENERATORREJECT_PREF_V8_V8:
2052                return (Flags::ACC_WRITE & flag) == flag;
2053            default:
2054                return false;
2055        }
2056        LOG_ECMA(FATAL) << "this branch is unreachable";
2057        UNREACHABLE();
2058    }
2059};
2060}  // panda::ecmascript
2061
2062#endif  // ECMASCRIPT_JSPANDAFILE_BYTECODE_INST_OLD_INSTRUCTION_H