1b1994897Sopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2b1994897Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3b1994897Sopenharmony_ci# you may not use this file except in compliance with the License.
4b1994897Sopenharmony_ci# You may obtain a copy of the License at
5b1994897Sopenharmony_ci#
6b1994897Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
7b1994897Sopenharmony_ci#
8b1994897Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9b1994897Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10b1994897Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11b1994897Sopenharmony_ci# See the License for the specific language governing permissions and
12b1994897Sopenharmony_ci# limitations under the License.
13b1994897Sopenharmony_ci
14b1994897Sopenharmony_ci---
15b1994897Sopenharmony_ci
16b1994897Sopenharmony_cichapters:
17b1994897Sopenharmony_ci  - name: General design
18b1994897Sopenharmony_ci    text: >
19b1994897Sopenharmony_ci      VM is register based with dedicated accumulator register, which serves as an implicit operand to instructions.
20b1994897Sopenharmony_ci
21b1994897Sopenharmony_ci  - name: Registers
22b1994897Sopenharmony_ci    text: >
23b1994897Sopenharmony_ci      Registers are wide enough to hold a single reference when working with objects.
24b1994897Sopenharmony_ci      When used for primitive types, registers width should be considered as 64 bits.
25b1994897Sopenharmony_ci      When used for object types, registers should be considered wide enough to hold a reference to an object.
26b1994897Sopenharmony_ci      The scope of a register is function frame (also known as activation record). If instruction defines not all 64
27b1994897Sopenharmony_ci      bits of a register, undefined bits shall not be accessed in verified code.
28b1994897Sopenharmony_ci      Register field width in instruction encoding could be 4 (16 addressable registers), 8 (256 registers) or
29b1994897Sopenharmony_ci      16 (65536 registers) bits.
30b1994897Sopenharmony_ci
31b1994897Sopenharmony_ci  - name: Accumulator
32b1994897Sopenharmony_ci    text: >
33b1994897Sopenharmony_ci      Accumulator is a special register which is implicitly used by instructions as a source and/or destination operand.
34b1994897Sopenharmony_ci      The main goal of using accumulator is to improve encoding density without losing much in performance. Therefore,
35b1994897Sopenharmony_ci      the general intuition regarding accumulator usage is to utilize the accumulator as much as possible taking it as
36b1994897Sopenharmony_ci      a source from previous instruction result and passing it to the next instruction in its destination operand.
37b1994897Sopenharmony_ci      Moreover, when instruction has more than one source operands, the value which lives shorter should be passed
38b1994897Sopenharmony_ci      through the accumulator. If it is profitable however, variations of instructions that don't write into the
39b1994897Sopenharmony_ci      accumulator are also introduced. For example, moving arguments for `call.range` instruction may be done by
40b1994897Sopenharmony_ci      register-to-register moves.
41b1994897Sopenharmony_ci
42b1994897Sopenharmony_ci  - name: Calling sequence
43b1994897Sopenharmony_ci    text: >
44b1994897Sopenharmony_ci      On execution of a call bytecode a new function frame is created. All necessary arguments are copied from the
45b1994897Sopenharmony_ci      caller frame onto the top of the callee frame such as the last argument is placed in the register with the largest
46b1994897Sopenharmony_ci      index and the first argument is placed into the register with the index equal to the size of frame subtracted by
47b1994897Sopenharmony_ci      the number of arguments. Accumulator value is considered as undefined and shall not be read in verified bytecode.
48b1994897Sopenharmony_ci      On return, callee frame is destroyed. If function return value is non-void, it is passed to caller via
49b1994897Sopenharmony_ci      accumulator. Otherwise accumulator content in caller frame is considered as undefined and shall not
50b1994897Sopenharmony_ci      be read in verified bytecode.
51b1994897Sopenharmony_ci
52b1994897Sopenharmony_ci  - name: Supported primitive types
53b1994897Sopenharmony_ci    text: |
54b1994897Sopenharmony_ci      VM support operations on registers with i32 and i64 integral values. However, 8-bit and 16-bit integral values
55b1994897Sopenharmony_ci      can be loaded/stored into records and arrays with corresponding bytecodes. In that case, VM will extend/truncate
56b1994897Sopenharmony_ci      value to match storage size with i32. Similarly, passing an 8-bit or 16-bit value to a function can be emulated by
57b1994897Sopenharmony_ci      passing a value, which is zero or sign-extended to i32.
58b1994897Sopenharmony_ci      VM support operations on registers with f32 and f64 values, which corresponds to IEEE-754 single and double precision
59b1994897Sopenharmony_ci      floating-point represenation.
60b1994897Sopenharmony_ci      Primitive data type of a register is not tracked by VM and is interpreted by separate bytecodes.
61b1994897Sopenharmony_ci      Integral values are not inherently signed or unsigned, signedness is interpreted by bytecodes as well.
62b1994897Sopenharmony_ci      If bytecode treats register value as signed integer, it uses two's complement representation.
63b1994897Sopenharmony_ci      To denote that bytecode treats register values as unsigned integer, u32/u64 notation is used.
64b1994897Sopenharmony_ci      For moves, loads and stores it is not always possible to denote a type of result, because it depends on type
65b1994897Sopenharmony_ci      of source object. In that case, bNN notation is used, where NN is bit size of result. Therefore, for example,
66b1994897Sopenharmony_ci      b64 is a union of f64 and i64.
67b1994897Sopenharmony_ci
68b1994897Sopenharmony_ci      ### Floating-point literals
69b1994897Sopenharmony_ci
70b1994897Sopenharmony_ci      Decimal floating-point literals can have the following parts:
71b1994897Sopenharmony_ci
72b1994897Sopenharmony_ci      - Sign ("`+`" or "`-`")
73b1994897Sopenharmony_ci      - Whole number part
74b1994897Sopenharmony_ci      - Decimal point
75b1994897Sopenharmony_ci      - Fractional part
76b1994897Sopenharmony_ci      - Exponent indicator ("`e`")
77b1994897Sopenharmony_ci      - Exponent sign
78b1994897Sopenharmony_ci      - Exponent
79b1994897Sopenharmony_ci
80b1994897Sopenharmony_ci      Decimal floating-point literals must have at least one digit and either decimal point or exponent part.
81b1994897Sopenharmony_ci
82b1994897Sopenharmony_ci      Special values:
83b1994897Sopenharmony_ci
84b1994897Sopenharmony_ci      - Positive zero (+0.0, hexadecimal representation is `0x0000000000000000`)
85b1994897Sopenharmony_ci      - Negative zero (-0.0, hexadecimal representation is `0x8000000000000000`)
86b1994897Sopenharmony_ci      - Minimal positive value (4.9E-324, hexadecimal representation is `0x0000000000000001`)
87b1994897Sopenharmony_ci      - Maximal negative value (-4.9E-324, hexadecimal representation is `0x8000000000000001`)
88b1994897Sopenharmony_ci      - Maximal positive value (1.7976931348623157e308, hexadecimal representation is `0x7fefffffffffffff`)
89b1994897Sopenharmony_ci      - Minimal negative value (-1.7976931348623157e308, hexadecimal representation is `0xffefffffffffffff`)
90b1994897Sopenharmony_ci      - Positive infinity (hexadecimal representation is `0x7ff0000000000000`)
91b1994897Sopenharmony_ci      - Negative infinity (hexadecimal representation is `0xfff0000000000000`)
92b1994897Sopenharmony_ci      - Not a number - set of all NaN values (one of hexadecimal representations is `0x7ff8000000000000`)
93b1994897Sopenharmony_ci
94b1994897Sopenharmony_ci  - name: Language-dependent types
95b1994897Sopenharmony_ci    text: >
96b1994897Sopenharmony_ci      Panda VM supports type hierarchies according to the language it executes. That way, creation (or loading
97b1994897Sopenharmony_ci      from constant pool) of strings, arrays, exception objects results into an object of type native to language,
98b1994897Sopenharmony_ci      including inheritance relations.
99b1994897Sopenharmony_ci
100b1994897Sopenharmony_ci  - name: Dynamically-typed languages support
101b1994897Sopenharmony_ci    text: >
102b1994897Sopenharmony_ci      Panda VM supports languages with dynamic types. It represents dynamic values through special 'any' values,
103b1994897Sopenharmony_ci      which wraps a value itself (both primitive and objects) and corresponding type info. VM tracks type of registers,
104b1994897Sopenharmony_ci      that hold 'any' value, whether they are primitive or not. Virtual registers and accumulator are wide enough
105b1994897Sopenharmony_ci      to hold 'any' value. When VM executes code inside dynamically-typed language context, regular static instructions
106b1994897Sopenharmony_ci      also may be used.
107b1994897Sopenharmony_ci
108b1994897Sopenharmony_ci# File format and ISA versioning
109b1994897Sopenharmony_cimin_version: 0.0.0.2
110b1994897Sopenharmony_civersion: 13.0.0.0
111b1994897Sopenharmony_ci
112b1994897Sopenharmony_ci# 0 is default value, alaways reflects to the newest version.
113b1994897Sopenharmony_ci# Due to historical reasons, bytecode version is upgraded to 13.0.0.0 in API15.
114b1994897Sopenharmony_ciapi_version_map: [[0, 13.0.0.0], [9, 9.0.0.0], [10, 9.0.0.0], [11, 11.0.2.0], [12, 12.0.6.0], [13, 12.0.6.0],
115b1994897Sopenharmony_ci                  [14, 12.0.6.0], [15, 13.0.0.0]]
116b1994897Sopenharmony_ci
117b1994897Sopenharmony_ci# When delete bytecode or having any incompatible modification on bytecode,
118b1994897Sopenharmony_ci# please add the incompatible version in this list for prompting error message.
119b1994897Sopenharmony_ciincompatible_version: [11.0.0.0, 11.0.1.0]
120b1994897Sopenharmony_ci
121b1994897Sopenharmony_ciproperties:
122b1994897Sopenharmony_ci  - tag: type_id
123b1994897Sopenharmony_ci    description: Use an id which resolves into a type constant.
124b1994897Sopenharmony_ci  - tag: method_id
125b1994897Sopenharmony_ci    description: Use an id which resolves into a method constant.
126b1994897Sopenharmony_ci  - tag: string_id
127b1994897Sopenharmony_ci    description: Use an id which resolves into a string constant.
128b1994897Sopenharmony_ci  - tag: literalarray_id
129b1994897Sopenharmony_ci    description: Use an id which resolves into a constant literalarray.
130b1994897Sopenharmony_ci  - tag: field_id
131b1994897Sopenharmony_ci    description: Use an id which resolves into a field reference.
132b1994897Sopenharmony_ci  - tag: call
133b1994897Sopenharmony_ci    description: Pass control to the callee method.
134b1994897Sopenharmony_ci  - tag: call_virt
135b1994897Sopenharmony_ci    description: Pass control to the callee method via virtual call.
136b1994897Sopenharmony_ci  - tag: return
137b1994897Sopenharmony_ci    description: Pass control to the caller method.
138b1994897Sopenharmony_ci  - tag: suspend
139b1994897Sopenharmony_ci    description: Suspend current method and pass control to the caller one.
140b1994897Sopenharmony_ci  - tag: jump
141b1994897Sopenharmony_ci    description: Pass control to another bytecode in a current method.
142b1994897Sopenharmony_ci  - tag: conditional
143b1994897Sopenharmony_ci    description: Operate based on computed condition, otherwise is no operation.
144b1994897Sopenharmony_ci  - tag: float
145b1994897Sopenharmony_ci    description: Perform floating point operation.
146b1994897Sopenharmony_ci  - tag: dynamic
147b1994897Sopenharmony_ci    description: Operates on 'any' values.
148b1994897Sopenharmony_ci  - tag: maybe_dynamic
149b1994897Sopenharmony_ci    description: May operate on 'any' values depending on language context.
150b1994897Sopenharmony_ci  - tag: language_type
151b1994897Sopenharmony_ci    description: Creates objects of type depending on language context.
152b1994897Sopenharmony_ci  - tag: initialize_type
153b1994897Sopenharmony_ci    description: May initialize type instance during execution.
154b1994897Sopenharmony_ci  - tag: ic_slot
155b1994897Sopenharmony_ci    description: Use the immedate number after opcode of length 8-bit or 16-bit as ic slot.
156b1994897Sopenharmony_ci  - tag: jit_ic_slot
157b1994897Sopenharmony_ci    description: Use the immedate number after opcode of length 8-bit as jit ic slot.
158b1994897Sopenharmony_ci  - tag: one_slot
159b1994897Sopenharmony_ci    description: The intruction occupies one ic slot.
160b1994897Sopenharmony_ci  - tag: two_slot
161b1994897Sopenharmony_ci    description: The intruction occupies two ic slots.
162b1994897Sopenharmony_ci  - tag: eight_bit_ic
163b1994897Sopenharmony_ci    description: The instruction occupies ic slots of 8 bit width.
164b1994897Sopenharmony_ci  - tag: sixteen_bit_ic
165b1994897Sopenharmony_ci    description: The instruction occupies ic slots of 16 bit width.
166b1994897Sopenharmony_ci  - tag: eight_sixteen_bit_ic
167b1994897Sopenharmony_ci    description: The instruction occupies ic slots of both 8 and 16 bit width.
168b1994897Sopenharmony_ci  - tag: conditional_throw
169b1994897Sopenharmony_ci    description: The throw instruction can throw an excepton only if certain conditions are met.
170b1994897Sopenharmony_ci  - tag: range_0
171b1994897Sopenharmony_ci    description: Indicates that the instruction takes some consective registers as inputs.
172b1994897Sopenharmony_ci                 The start register of these consective inputs is the last register of the instruction.
173b1994897Sopenharmony_ci                 The number of consective inputs is the last immediate of the instruction.
174b1994897Sopenharmony_ci  - tag: range_1
175b1994897Sopenharmony_ci    description: Indicates that the instruction takes some consective registers as inputs.
176b1994897Sopenharmony_ci                 The start register of these consective inputs is the last register of the instruction.
177b1994897Sopenharmony_ci                 The number of consective inputs is the last immediate of the instruction plus 1.
178b1994897Sopenharmony_ci
179b1994897Sopenharmony_ciexceptions:
180b1994897Sopenharmony_ci  - tag: x_none
181b1994897Sopenharmony_ci    description: Bytecode doesn't throw exceptions.
182b1994897Sopenharmony_ci  - tag: x_null
183b1994897Sopenharmony_ci    description: Bytecode throws NullPointerException in case of null reference as a source.
184b1994897Sopenharmony_ci  - tag: x_bounds
185b1994897Sopenharmony_ci    description: Bytecode throws ArrayIndexOutOfBoundsException if index is out of bounds of an array.
186b1994897Sopenharmony_ci  - tag: x_negsize
187b1994897Sopenharmony_ci    description: Bytecode throws NegativeArraySizeException if index is less than zero.
188b1994897Sopenharmony_ci  - tag: x_store
189b1994897Sopenharmony_ci    description: Bytecode throws ArrayStoreException if element isn't instance of array's element type.
190b1994897Sopenharmony_ci  - tag: x_abstract
191b1994897Sopenharmony_ci    description: Bytecode throws AbstractMethodError if resolved method has no implementation.
192b1994897Sopenharmony_ci  - tag: x_arith
193b1994897Sopenharmony_ci    description: Bytecode throws ArithmeticException if the divisor is 0.
194b1994897Sopenharmony_ci  - tag: x_cast
195b1994897Sopenharmony_ci    description: Bytecode throws ClassCastException if type cast failed.
196b1994897Sopenharmony_ci  - tag: x_classdef
197b1994897Sopenharmony_ci    description: Bytecode throws NoClassDefFoundError if type cast failed.
198b1994897Sopenharmony_ci  - tag: x_oom
199b1994897Sopenharmony_ci    description: Bytecode throws OutOfMemoryError if failed to allocate object.
200b1994897Sopenharmony_ci  - tag: x_init
201b1994897Sopenharmony_ci    description: Bytecode throws ExceptionInInitializerError if unexpected exception occurred in a static initializer.
202b1994897Sopenharmony_ci  - tag: x_call
203b1994897Sopenharmony_ci    description: Bytecode may throw an error if an exception occures in the called bytecode.
204b1994897Sopenharmony_ci  - tag: x_throw
205b1994897Sopenharmony_ci    description: Bytecode's primary role is to throw provided exception object.
206b1994897Sopenharmony_ci  - tag: x_link
207b1994897Sopenharmony_ci    description: Bytecode may throw NoClassDefFoundError if failed to resolve id.
208b1994897Sopenharmony_civerification:
209b1994897Sopenharmony_ci  - tag: none
210b1994897Sopenharmony_ci    description: Instruction is always valid.
211b1994897Sopenharmony_ci  - tag: v1_array
212b1994897Sopenharmony_ci    description: First operand contains a reference to an array.
213b1994897Sopenharmony_ci  - tag: v1_object
214b1994897Sopenharmony_ci    description: First operand contains a reference to an object (other than array).
215b1994897Sopenharmony_ci  - tag: v1_array_type
216b1994897Sopenharmony_ci    # TODO: specify
217b1994897Sopenharmony_ci    description: First operand contains a reference to an array of elements of type corresponding to bytecode.
218b1994897Sopenharmony_ci  - tag: v1_i32
219b1994897Sopenharmony_ci    description: First operand contains a value of i32 type.
220b1994897Sopenharmony_ci  - tag: v1_type
221b1994897Sopenharmony_ci    description: First operand contains a value of type corresponding to bytecode.
222b1994897Sopenharmony_ci  - tag: v1_obj_or_null
223b1994897Sopenharmony_ci    description: First operand contains a reference to an object or null.
224b1994897Sopenharmony_ci  - tag: v2_i32
225b1994897Sopenharmony_ci    description: Second operand contains a value of i32 type.
226b1994897Sopenharmony_ci  - tag: v2_object
227b1994897Sopenharmony_ci    description: Second operand contains a reference to an object (other than array).
228b1994897Sopenharmony_ci  - tag: v2_type
229b1994897Sopenharmony_ci    description: Second operand contains a value of type corresponding to bytecode.
230b1994897Sopenharmony_ci  - tag: acc_i32
231b1994897Sopenharmony_ci    description: Accumulator contains a value of i32 type.
232b1994897Sopenharmony_ci  - tag: acc_type
233b1994897Sopenharmony_ci    description: Accumulator contains a value of type corresponding to bytecode.  # TODO: specify
234b1994897Sopenharmony_ci  - tag: acc_return_type
235b1994897Sopenharmony_ci    # TODO: specify, including assignment compatibility (see Java 'areturn')
236b1994897Sopenharmony_ci    description: Accumulator type is compatible with method return type.
237b1994897Sopenharmony_ci  - tag: v1_throw_type
238b1994897Sopenharmony_ci    description: First operand contains a reference to an instance of class Throwable or of a subclass of Throwable.
239b1994897Sopenharmony_ci  - tag: acc_obj_or_null
240b1994897Sopenharmony_ci    description: Accumulator contains a reference to an object or null.
241b1994897Sopenharmony_ci  - tag: type_id_array
242b1994897Sopenharmony_ci    description: Type_id operand must correspond to an array type.
243b1994897Sopenharmony_ci  - tag: type_id_object
244b1994897Sopenharmony_ci    description: Type_id operand must correspond to an object type (other than array).
245b1994897Sopenharmony_ci  - tag: type_id_any_object
246b1994897Sopenharmony_ci    description: Type_id operand must correspond to any object type.
247b1994897Sopenharmony_ci  - tag: method_id_static
248b1994897Sopenharmony_ci    description: Method_id must resolve to a static method or into initializer for a type other than one-dimensional array.
249b1994897Sopenharmony_ci  - tag: method_id_non_static
250b1994897Sopenharmony_ci    description: Method_id must resolve to a non-static method.
251b1994897Sopenharmony_ci  - tag: method_id_non_abstract
252b1994897Sopenharmony_ci    description: Method_id must resolve to a method that has implementation.
253b1994897Sopenharmony_ci  - tag: method_id_accessible
254b1994897Sopenharmony_ci    description: Method_id must resolve to a method which is accessible.
255b1994897Sopenharmony_ci  - tag: constant_string_id
256b1994897Sopenharmony_ci    description: Id must resolve into a constant-pool string.
257b1994897Sopenharmony_ci  - tag: constant_literalarray_id
258b1994897Sopenharmony_ci    description: Id must resolve into a constant literalarray.
259b1994897Sopenharmony_ci  - tag: compatible_arguments
260b1994897Sopenharmony_ci    description: Arguments provided to a method must be of compatible types.  # TODO: specify compatibility
261b1994897Sopenharmony_ci  - tag: method_init_obj
262b1994897Sopenharmony_ci    description: Method_id must resolve into initializer for a type other than one-dimensional array.
263b1994897Sopenharmony_ci  - tag: branch_target
264b1994897Sopenharmony_ci    description: Branch target should point to a beginning of an instruction of the same method.
265b1994897Sopenharmony_ci  - tag: field_id_non_static
266b1994897Sopenharmony_ci    description: Field_id must resolve to a non-static object field.
267b1994897Sopenharmony_ci  - tag: field_id_static
268b1994897Sopenharmony_ci    description: Field_id must resolve to a static field.
269b1994897Sopenharmony_ci  - tag: field_id_size
270b1994897Sopenharmony_ci    description: Field_id must resolve to a field of size corresponding to bytecode.
271b1994897Sopenharmony_ci  - tag: valid_in_dynamic_context
272b1994897Sopenharmony_ci    description: Instruction valid only for dynamically-typed language context.
273b1994897Sopenharmony_ci
274b1994897Sopenharmony_ciisa_information:
275b1994897Sopenharmony_ci    - description: The last encoding number of various ISA. It should be maintained as long as ISA changes.
276b1994897Sopenharmony_ci      last_opcode_idx: 0xdc
277b1994897Sopenharmony_ci      last_throw_prefixed_opcode_idx: 0x09
278b1994897Sopenharmony_ci      last_wide_prefixed_opcode_idx: 0x13
279b1994897Sopenharmony_ci      last_deprecated_prefixed_opcode_idx: 0x2e
280b1994897Sopenharmony_ci      last_callruntime_prefixed_opcode_idx: 0x19
281b1994897Sopenharmony_ci
282b1994897Sopenharmony_ciprefixes:
283b1994897Sopenharmony_ci  - name: throw
284b1994897Sopenharmony_ci    description: throw operations.
285b1994897Sopenharmony_ci    opcode_idx: 0xfe
286b1994897Sopenharmony_ci  - name: wide
287b1994897Sopenharmony_ci    description: operations with wider width.
288b1994897Sopenharmony_ci    opcode_idx: 0xfd
289b1994897Sopenharmony_ci  - name: deprecated
290b1994897Sopenharmony_ci    description: deprecated instructions but are keeped for compatibility.
291b1994897Sopenharmony_ci    opcode_idx: 0xfc
292b1994897Sopenharmony_ci  - name: callruntime
293b1994897Sopenharmony_ci    description: call runtime methods.
294b1994897Sopenharmony_ci    opcode_idx: 0xfb
295b1994897Sopenharmony_ci
296b1994897Sopenharmony_cigroups:
297b1994897Sopenharmony_ci  - title: constant object loaders
298b1994897Sopenharmony_ci    description: instructions which operate on constant objects.
299b1994897Sopenharmony_ci    verification:
300b1994897Sopenharmony_ci      - none
301b1994897Sopenharmony_ci    exceptions:
302b1994897Sopenharmony_ci      - x_none
303b1994897Sopenharmony_ci    properties:
304b1994897Sopenharmony_ci      - acc_read
305b1994897Sopenharmony_ci      - acc_write
306b1994897Sopenharmony_ci    namespace: ecmascript
307b1994897Sopenharmony_ci    pseudo: |
308b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
309b1994897Sopenharmony_ci    semantics: |
310b1994897Sopenharmony_ci      skip
311b1994897Sopenharmony_ci    instructions:
312b1994897Sopenharmony_ci      - sig: ldnan
313b1994897Sopenharmony_ci        acc: out:top
314b1994897Sopenharmony_ci        opcode_idx: [0x6a]
315b1994897Sopenharmony_ci        format: [op_none]
316b1994897Sopenharmony_ci      - sig: ldinfinity
317b1994897Sopenharmony_ci        acc: out:top
318b1994897Sopenharmony_ci        opcode_idx: [0x6b]
319b1994897Sopenharmony_ci        format: [op_none]
320b1994897Sopenharmony_ci      - sig: ldundefined
321b1994897Sopenharmony_ci        acc: out:top
322b1994897Sopenharmony_ci        opcode_idx: [0x00]
323b1994897Sopenharmony_ci        format: [op_none]
324b1994897Sopenharmony_ci      - sig: ldnull
325b1994897Sopenharmony_ci        acc: out:top
326b1994897Sopenharmony_ci        opcode_idx: [0x01]
327b1994897Sopenharmony_ci        format: [op_none]
328b1994897Sopenharmony_ci      - sig: ldsymbol
329b1994897Sopenharmony_ci        acc: out:top
330b1994897Sopenharmony_ci        opcode_idx: [0xad]
331b1994897Sopenharmony_ci        format: [op_none]
332b1994897Sopenharmony_ci      - sig: ldglobal
333b1994897Sopenharmony_ci        opcode_idx: [0x6d]
334b1994897Sopenharmony_ci        acc: out:top
335b1994897Sopenharmony_ci        format: [op_none]
336b1994897Sopenharmony_ci      - sig: ldtrue
337b1994897Sopenharmony_ci        acc: out:top
338b1994897Sopenharmony_ci        opcode_idx: [0x02]
339b1994897Sopenharmony_ci        format: [op_none]
340b1994897Sopenharmony_ci      - sig: ldfalse
341b1994897Sopenharmony_ci        acc: out:top
342b1994897Sopenharmony_ci        opcode_idx: [0x03]
343b1994897Sopenharmony_ci        format: [op_none]
344b1994897Sopenharmony_ci      - sig: ldhole
345b1994897Sopenharmony_ci        acc: out:top
346b1994897Sopenharmony_ci        opcode_idx: [0x70]
347b1994897Sopenharmony_ci        format: [op_none]
348b1994897Sopenharmony_ci      - sig: deprecated.ldlexenv
349b1994897Sopenharmony_ci        acc: out:top
350b1994897Sopenharmony_ci        opcode_idx: [0x00]
351b1994897Sopenharmony_ci        format: [pref_op_none]
352b1994897Sopenharmony_ci        prefix: deprecated
353b1994897Sopenharmony_ci      - sig: ldnewtarget
354b1994897Sopenharmony_ci        acc: out:top
355b1994897Sopenharmony_ci        opcode_idx: [0x6e]
356b1994897Sopenharmony_ci        format: [op_none]
357b1994897Sopenharmony_ci      - sig: ldthis
358b1994897Sopenharmony_ci        acc: out:top
359b1994897Sopenharmony_ci        opcode_idx: [0x6f]
360b1994897Sopenharmony_ci        format: [op_none]
361b1994897Sopenharmony_ci      - sig: poplexenv
362b1994897Sopenharmony_ci        acc: none
363b1994897Sopenharmony_ci        opcode_idx: [0x69]
364b1994897Sopenharmony_ci        format: [op_none]
365b1994897Sopenharmony_ci      - sig: deprecated.poplexenv
366b1994897Sopenharmony_ci        acc: out:top
367b1994897Sopenharmony_ci        opcode_idx: [0x01]
368b1994897Sopenharmony_ci        format: [pref_op_none]
369b1994897Sopenharmony_ci        prefix: deprecated
370b1994897Sopenharmony_ci      - sig: getunmappedargs
371b1994897Sopenharmony_ci        acc: out:top
372b1994897Sopenharmony_ci        opcode_idx: [0x6c]
373b1994897Sopenharmony_ci        format: [op_none]
374b1994897Sopenharmony_ci      - sig: asyncfunctionenter
375b1994897Sopenharmony_ci        acc: out:top
376b1994897Sopenharmony_ci        opcode_idx: [0xae]
377b1994897Sopenharmony_ci        format: [op_none]
378b1994897Sopenharmony_ci      - sig: ldfunction
379b1994897Sopenharmony_ci        acc: out:top
380b1994897Sopenharmony_ci        opcode_idx: [0xaf]
381b1994897Sopenharmony_ci        format: [op_none]
382b1994897Sopenharmony_ci      - sig: debugger
383b1994897Sopenharmony_ci        acc: none
384b1994897Sopenharmony_ci        opcode_idx: [0xb0]
385b1994897Sopenharmony_ci        format: [op_none]
386b1994897Sopenharmony_ci
387b1994897Sopenharmony_ci  - title: iterator instructions
388b1994897Sopenharmony_ci    description: iterator instructions
389b1994897Sopenharmony_ci    verification:
390b1994897Sopenharmony_ci      - none
391b1994897Sopenharmony_ci    exceptions:
392b1994897Sopenharmony_ci      - x_none
393b1994897Sopenharmony_ci    properties:
394b1994897Sopenharmony_ci      - acc_read
395b1994897Sopenharmony_ci      - acc_write
396b1994897Sopenharmony_ci    namespace: ecmascript
397b1994897Sopenharmony_ci    pseudo: |
398b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
399b1994897Sopenharmony_ci    semantics: |
400b1994897Sopenharmony_ci      skip
401b1994897Sopenharmony_ci    instructions:
402b1994897Sopenharmony_ci      - sig: getpropiterator
403b1994897Sopenharmony_ci        acc: inout:top
404b1994897Sopenharmony_ci        opcode_idx: [0x66]
405b1994897Sopenharmony_ci        format: [op_none]
406b1994897Sopenharmony_ci      - sig: getiterator imm:u16
407b1994897Sopenharmony_ci        acc: inout:top
408b1994897Sopenharmony_ci        opcode_idx: [0x67, 0xab]
409b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
410b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
411b1994897Sopenharmony_ci      - sig: closeiterator imm:u16, v:in:top
412b1994897Sopenharmony_ci        acc: out:top
413b1994897Sopenharmony_ci        opcode_idx: [0x68, 0xac]
414b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
415b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
416b1994897Sopenharmony_ci      - sig: deprecated.getiteratornext v1:in:top, v2:in:top
417b1994897Sopenharmony_ci        acc: out:top
418b1994897Sopenharmony_ci        opcode_idx: [0x02]
419b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
420b1994897Sopenharmony_ci        prefix: deprecated
421b1994897Sopenharmony_ci      - sig: getasynciterator imm:u8
422b1994897Sopenharmony_ci        acc: inout:top
423b1994897Sopenharmony_ci        opcode_idx: [0xd7]
424b1994897Sopenharmony_ci        format: [op_imm_8]
425b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
426b1994897Sopenharmony_ci      - sig: ldprivateproperty imm1:u8, imm2:u16, imm3:u16
427b1994897Sopenharmony_ci        acc: inout:top
428b1994897Sopenharmony_ci        opcode_idx: [0xd8]
429b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_16_imm3_16]
430b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
431b1994897Sopenharmony_ci      - sig: stprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
432b1994897Sopenharmony_ci        acc: in:top
433b1994897Sopenharmony_ci        opcode_idx: [0xd9]
434b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_16_imm3_16_v_8]
435b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
436b1994897Sopenharmony_ci      - sig: testin imm1:u8, imm2:u16, imm3:u16
437b1994897Sopenharmony_ci        acc: inout:top
438b1994897Sopenharmony_ci        opcode_idx: [0xda]
439b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_16_imm3_16]
440b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
441b1994897Sopenharmony_ci      - sig: definefieldbyname imm:u8, string_id, v:in:top
442b1994897Sopenharmony_ci        acc: in:top
443b1994897Sopenharmony_ci        opcode_idx: [0xdb]
444b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8]
445b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_bit_ic]
446b1994897Sopenharmony_ci      - sig: definepropertybyname imm:u8, string_id, v:in:top
447b1994897Sopenharmony_ci        acc: in:top
448b1994897Sopenharmony_ci        opcode_idx: [0xdc]
449b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8]
450b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_bit_ic]
451b1994897Sopenharmony_ci
452b1994897Sopenharmony_ci  - title: object creaters
453b1994897Sopenharmony_ci    description: instructions which create objects
454b1994897Sopenharmony_ci    verification:
455b1994897Sopenharmony_ci      - none
456b1994897Sopenharmony_ci    exceptions:
457b1994897Sopenharmony_ci      - x_none
458b1994897Sopenharmony_ci    properties:
459b1994897Sopenharmony_ci      - acc_read
460b1994897Sopenharmony_ci      - acc_write
461b1994897Sopenharmony_ci    namespace: ecmascript
462b1994897Sopenharmony_ci    pseudo: |
463b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
464b1994897Sopenharmony_ci    semantics: |
465b1994897Sopenharmony_ci      skip
466b1994897Sopenharmony_ci    instructions:
467b1994897Sopenharmony_ci      - sig: createemptyobject
468b1994897Sopenharmony_ci        acc: out:top
469b1994897Sopenharmony_ci        opcode_idx: [0x04]
470b1994897Sopenharmony_ci        format: [op_none]
471b1994897Sopenharmony_ci      - sig: createemptyarray imm:u16
472b1994897Sopenharmony_ci        acc: out:top
473b1994897Sopenharmony_ci        opcode_idx: [0x05, 0x80]
474b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
475b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_sixteen_bit_ic]
476b1994897Sopenharmony_ci      - sig: creategeneratorobj v:in:top
477b1994897Sopenharmony_ci        acc: out:top
478b1994897Sopenharmony_ci        opcode_idx: [0xb1]
479b1994897Sopenharmony_ci        format: [op_v_8]
480b1994897Sopenharmony_ci      - sig: createiterresultobj v1:in:top, v2:in:top
481b1994897Sopenharmony_ci        acc: out:top
482b1994897Sopenharmony_ci        opcode_idx: [0xb2]
483b1994897Sopenharmony_ci        format: [op_v1_8_v2_8]
484b1994897Sopenharmony_ci      - sig: createobjectwithexcludedkeys imm:u8, v1:in:top, v2:in:top
485b1994897Sopenharmony_ci        acc: out:top
486b1994897Sopenharmony_ci        opcode_idx: [0xb3]
487b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8]
488b1994897Sopenharmony_ci        properties: [range_1]
489b1994897Sopenharmony_ci      - sig: wide.createobjectwithexcludedkeys imm:u16, v1:in:top, v2:in:top
490b1994897Sopenharmony_ci        acc: out:top
491b1994897Sopenharmony_ci        opcode_idx: [0x00]
492b1994897Sopenharmony_ci        format: [pref_op_imm_16_v1_8_v2_8]
493b1994897Sopenharmony_ci        prefix: wide
494b1994897Sopenharmony_ci        properties: [range_1]
495b1994897Sopenharmony_ci      - sig: createarraywithbuffer imm:u16, literalarray_id
496b1994897Sopenharmony_ci        acc: out:top
497b1994897Sopenharmony_ci        opcode_idx: [0x06, 0x81]
498b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
499b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_sixteen_bit_ic, literalarray_id]
500b1994897Sopenharmony_ci      - sig: deprecated.createarraywithbuffer imm:u16
501b1994897Sopenharmony_ci        acc: out:top
502b1994897Sopenharmony_ci        opcode_idx: [0x03]
503b1994897Sopenharmony_ci        format: [pref_op_imm_16]
504b1994897Sopenharmony_ci        prefix: deprecated
505b1994897Sopenharmony_ci      - sig: createobjectwithbuffer imm:u16, literalarray_id
506b1994897Sopenharmony_ci        opcode_idx: [0x07, 0x82]
507b1994897Sopenharmony_ci        acc: out:top
508b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
509b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_sixteen_bit_ic, literalarray_id]
510b1994897Sopenharmony_ci      - sig: deprecated.createobjectwithbuffer imm:u16
511b1994897Sopenharmony_ci        acc: out:top
512b1994897Sopenharmony_ci        opcode_idx: [0x04]
513b1994897Sopenharmony_ci        format: [pref_op_imm_16]
514b1994897Sopenharmony_ci        prefix: deprecated
515b1994897Sopenharmony_ci      - sig: createregexpwithliteral imm1:u16, string_id, imm2:u8
516b1994897Sopenharmony_ci        acc: out:top
517b1994897Sopenharmony_ci        opcode_idx: [0x71, 0x72]
518b1994897Sopenharmony_ci        format: [op_imm1_8_id_16_imm2_8, op_imm1_16_id_16_imm2_8]
519b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
520b1994897Sopenharmony_ci      - sig: newobjapply imm:u16, v:in:top
521b1994897Sopenharmony_ci        acc: inout:top
522b1994897Sopenharmony_ci        opcode_idx: [0xb4, 0xb5]
523b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
524b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
525b1994897Sopenharmony_ci      - sig: newobjrange imm1:u16, imm2:u8, v:in:top
526b1994897Sopenharmony_ci        acc: out:top
527b1994897Sopenharmony_ci        opcode_idx: [0x08, 0x83]
528b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_8_v_8, op_imm1_16_imm2_8_v_8]
529b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic, range_0]
530b1994897Sopenharmony_ci      - sig: wide.newobjrange imm:u16, v:in:top
531b1994897Sopenharmony_ci        acc: out:top
532b1994897Sopenharmony_ci        opcode_idx: [0x01]
533b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
534b1994897Sopenharmony_ci        prefix: wide
535b1994897Sopenharmony_ci        properties: [range_0]
536b1994897Sopenharmony_ci      - sig: newlexenv imm:u8
537b1994897Sopenharmony_ci        acc: out:top
538b1994897Sopenharmony_ci        opcode_idx: [0x09]
539b1994897Sopenharmony_ci        format: [op_imm_8]
540b1994897Sopenharmony_ci      - sig: wide.newlexenv imm:u16
541b1994897Sopenharmony_ci        acc: out:top
542b1994897Sopenharmony_ci        opcode_idx: [0x02]
543b1994897Sopenharmony_ci        format: [pref_op_imm_16]
544b1994897Sopenharmony_ci        prefix: wide
545b1994897Sopenharmony_ci      - sig: newlexenvwithname imm:u8, literalarray_id
546b1994897Sopenharmony_ci        acc: out:top
547b1994897Sopenharmony_ci        opcode_idx: [0xb6]
548b1994897Sopenharmony_ci        format: [op_imm_8_id_16]
549b1994897Sopenharmony_ci        properties: [literalarray_id]
550b1994897Sopenharmony_ci      - sig: wide.newlexenvwithname imm:u16, literalarray_id
551b1994897Sopenharmony_ci        acc: out:top
552b1994897Sopenharmony_ci        opcode_idx: [0x03]
553b1994897Sopenharmony_ci        format: [pref_op_imm_16_id_16]
554b1994897Sopenharmony_ci        prefix: wide
555b1994897Sopenharmony_ci        properties: [literalarray_id]
556b1994897Sopenharmony_ci      - sig: createasyncgeneratorobj v:in:top
557b1994897Sopenharmony_ci        acc: out:top
558b1994897Sopenharmony_ci        opcode_idx: [0xb7]
559b1994897Sopenharmony_ci        format: [op_v_8]
560b1994897Sopenharmony_ci      - sig: asyncgeneratorresolve v1:in:top, v2:in:top, v3:in:top
561b1994897Sopenharmony_ci        acc: out:top
562b1994897Sopenharmony_ci        opcode_idx: [0xb8]
563b1994897Sopenharmony_ci        format: [op_v1_8_v2_8_v3_8]
564b1994897Sopenharmony_ci
565b1994897Sopenharmony_ci  - title: binary operations 
566b1994897Sopenharmony_ci    description: binary operations 
567b1994897Sopenharmony_ci    verification:
568b1994897Sopenharmony_ci      - none
569b1994897Sopenharmony_ci    exceptions:
570b1994897Sopenharmony_ci      - x_none
571b1994897Sopenharmony_ci    properties:
572b1994897Sopenharmony_ci      - acc_read
573b1994897Sopenharmony_ci      - acc_write
574b1994897Sopenharmony_ci    namespace: ecmascript
575b1994897Sopenharmony_ci    pseudo: |
576b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
577b1994897Sopenharmony_ci    semantics: |
578b1994897Sopenharmony_ci      skip
579b1994897Sopenharmony_ci    instructions:
580b1994897Sopenharmony_ci      - sig: add2 imm:u8, v:in:top
581b1994897Sopenharmony_ci        acc: inout:top
582b1994897Sopenharmony_ci        opcode_idx: [0x0a]
583b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
584b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
585b1994897Sopenharmony_ci      - sig: sub2 imm:u8, v:in:top
586b1994897Sopenharmony_ci        acc: inout:top
587b1994897Sopenharmony_ci        opcode_idx: [0x0b]
588b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
589b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
590b1994897Sopenharmony_ci      - sig: mul2 imm:u8, v:in:top
591b1994897Sopenharmony_ci        acc: inout:top
592b1994897Sopenharmony_ci        opcode_idx: [0x0c]
593b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
594b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
595b1994897Sopenharmony_ci      - sig: div2 imm:u8, v:in:top
596b1994897Sopenharmony_ci        acc: inout:top
597b1994897Sopenharmony_ci        opcode_idx: [0x0d]
598b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
599b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
600b1994897Sopenharmony_ci      - sig: mod2 imm:u8, v:in:top
601b1994897Sopenharmony_ci        acc: inout:top
602b1994897Sopenharmony_ci        opcode_idx: [0x0e]
603b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
604b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
605b1994897Sopenharmony_ci      - sig: eq imm:u8, v:in:top
606b1994897Sopenharmony_ci        acc: inout:top
607b1994897Sopenharmony_ci        opcode_idx: [0x0f]
608b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
609b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
610b1994897Sopenharmony_ci      - sig: noteq imm:u8, v:in:top
611b1994897Sopenharmony_ci        acc: inout:top
612b1994897Sopenharmony_ci        opcode_idx: [0x10]
613b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
614b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
615b1994897Sopenharmony_ci      - sig: less imm:u8, v:in:top
616b1994897Sopenharmony_ci        acc: inout:top
617b1994897Sopenharmony_ci        opcode_idx: [0x11]
618b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
619b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
620b1994897Sopenharmony_ci      - sig: lesseq imm:u8, v:in:top
621b1994897Sopenharmony_ci        acc: inout:top
622b1994897Sopenharmony_ci        opcode_idx: [0x12]
623b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
624b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
625b1994897Sopenharmony_ci      - sig: greater imm:u8, v:in:top
626b1994897Sopenharmony_ci        acc: inout:top
627b1994897Sopenharmony_ci        opcode_idx: [0x13]
628b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
629b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
630b1994897Sopenharmony_ci      - sig: greatereq imm:u8, v:in:top
631b1994897Sopenharmony_ci        acc: inout:top
632b1994897Sopenharmony_ci        opcode_idx: [0x14]
633b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
634b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
635b1994897Sopenharmony_ci      - sig: shl2 imm:u8, v:in:top
636b1994897Sopenharmony_ci        acc: inout:top
637b1994897Sopenharmony_ci        opcode_idx: [0x15]
638b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
639b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
640b1994897Sopenharmony_ci      - sig: shr2 imm:u8, v:in:top
641b1994897Sopenharmony_ci        acc: inout:top
642b1994897Sopenharmony_ci        opcode_idx: [0x16]
643b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
644b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
645b1994897Sopenharmony_ci      - sig: ashr2 imm:u8, v:in:top
646b1994897Sopenharmony_ci        acc: inout:top
647b1994897Sopenharmony_ci        opcode_idx: [0x17]
648b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
649b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
650b1994897Sopenharmony_ci      - sig: and2 imm:u8, v:in:top
651b1994897Sopenharmony_ci        acc: inout:top
652b1994897Sopenharmony_ci        opcode_idx: [0x18]
653b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
654b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
655b1994897Sopenharmony_ci      - sig: or2 imm:u8, v:in:top
656b1994897Sopenharmony_ci        acc: inout:top
657b1994897Sopenharmony_ci        opcode_idx: [0x19]
658b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
659b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
660b1994897Sopenharmony_ci      - sig: xor2 imm:u8, v:in:top
661b1994897Sopenharmony_ci        acc: inout:top
662b1994897Sopenharmony_ci        opcode_idx: [0x1a]
663b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
664b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
665b1994897Sopenharmony_ci      - sig: exp imm:u8, v:in:top
666b1994897Sopenharmony_ci        acc: inout:top
667b1994897Sopenharmony_ci        opcode_idx: [0x1b]
668b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
669b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
670b1994897Sopenharmony_ci
671b1994897Sopenharmony_ci  - title: unary operations 
672b1994897Sopenharmony_ci    description: unary operations
673b1994897Sopenharmony_ci    verification:
674b1994897Sopenharmony_ci      - none
675b1994897Sopenharmony_ci    exceptions:
676b1994897Sopenharmony_ci      - x_none
677b1994897Sopenharmony_ci    properties:
678b1994897Sopenharmony_ci      - acc_read
679b1994897Sopenharmony_ci      - acc_write
680b1994897Sopenharmony_ci    namespace: ecmascript
681b1994897Sopenharmony_ci    pseudo: |
682b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
683b1994897Sopenharmony_ci    semantics: |
684b1994897Sopenharmony_ci      skip
685b1994897Sopenharmony_ci    instructions:
686b1994897Sopenharmony_ci      - sig: typeof imm:u16
687b1994897Sopenharmony_ci        acc: inout:top
688b1994897Sopenharmony_ci        opcode_idx: [0x1c, 0x84]
689b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
690b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, sixteen_bit_ic]
691b1994897Sopenharmony_ci      - sig: tonumber imm:u8
692b1994897Sopenharmony_ci        acc: inout:top
693b1994897Sopenharmony_ci        opcode_idx: [0x1d]
694b1994897Sopenharmony_ci        format: [op_imm_8]
695b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
696b1994897Sopenharmony_ci      - sig: deprecated.tonumber v:in:top
697b1994897Sopenharmony_ci        acc: inout:top
698b1994897Sopenharmony_ci        opcode_idx: [0x05]
699b1994897Sopenharmony_ci        format: [pref_op_v_8]
700b1994897Sopenharmony_ci        prefix: deprecated
701b1994897Sopenharmony_ci      - sig: tonumeric imm:u8
702b1994897Sopenharmony_ci        acc: inout:top
703b1994897Sopenharmony_ci        opcode_idx: [0x1e]
704b1994897Sopenharmony_ci        format: [op_imm_8]
705b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
706b1994897Sopenharmony_ci      - sig: deprecated.tonumeric v:in:top
707b1994897Sopenharmony_ci        opcode_idx: [0x06]
708b1994897Sopenharmony_ci        acc: inout:top
709b1994897Sopenharmony_ci        prefix: deprecated
710b1994897Sopenharmony_ci        format: [pref_op_v_8]
711b1994897Sopenharmony_ci      - sig: neg imm:u8
712b1994897Sopenharmony_ci        acc: inout:top
713b1994897Sopenharmony_ci        opcode_idx: [0x1f]
714b1994897Sopenharmony_ci        format: [op_imm_8]
715b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
716b1994897Sopenharmony_ci      - sig: deprecated.neg v:in:top
717b1994897Sopenharmony_ci        acc: out:top
718b1994897Sopenharmony_ci        opcode_idx: [0x07]
719b1994897Sopenharmony_ci        format: [pref_op_v_8]
720b1994897Sopenharmony_ci        prefix: deprecated
721b1994897Sopenharmony_ci      - sig: not imm:u8
722b1994897Sopenharmony_ci        acc: inout:top
723b1994897Sopenharmony_ci        opcode_idx: [0x20]
724b1994897Sopenharmony_ci        format: [op_imm_8]
725b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
726b1994897Sopenharmony_ci      - sig: deprecated.not v:in:top
727b1994897Sopenharmony_ci        acc: out:top
728b1994897Sopenharmony_ci        opcode_idx: [0x08]
729b1994897Sopenharmony_ci        prefix: deprecated
730b1994897Sopenharmony_ci        format: [pref_op_v_8]
731b1994897Sopenharmony_ci      - sig: inc imm:u8
732b1994897Sopenharmony_ci        acc: inout:top
733b1994897Sopenharmony_ci        opcode_idx: [0x21]
734b1994897Sopenharmony_ci        format: [op_imm_8]
735b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
736b1994897Sopenharmony_ci      - sig: deprecated.inc v:in:top
737b1994897Sopenharmony_ci        acc: out:top
738b1994897Sopenharmony_ci        opcode_idx: [0x09]
739b1994897Sopenharmony_ci        prefix: deprecated
740b1994897Sopenharmony_ci        format: [pref_op_v_8]
741b1994897Sopenharmony_ci      - sig: dec imm:u8
742b1994897Sopenharmony_ci        acc: inout:top
743b1994897Sopenharmony_ci        opcode_idx: [0x22]
744b1994897Sopenharmony_ci        format: [op_imm_8]
745b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
746b1994897Sopenharmony_ci      - sig: deprecated.dec v:in:top
747b1994897Sopenharmony_ci        acc: out:top
748b1994897Sopenharmony_ci        opcode_idx: [0x0a]
749b1994897Sopenharmony_ci        format: [pref_op_v_8]
750b1994897Sopenharmony_ci        prefix: deprecated
751b1994897Sopenharmony_ci      - sig: istrue
752b1994897Sopenharmony_ci        acc: inout:top
753b1994897Sopenharmony_ci        opcode_idx: [0x23]
754b1994897Sopenharmony_ci        format: [op_none]
755b1994897Sopenharmony_ci      - sig: isfalse
756b1994897Sopenharmony_ci        acc: inout:top
757b1994897Sopenharmony_ci        opcode_idx: [0x24]
758b1994897Sopenharmony_ci        format: [op_none]
759b1994897Sopenharmony_ci
760b1994897Sopenharmony_ci  - title: comparation instructions
761b1994897Sopenharmony_ci    description: comparation instructions
762b1994897Sopenharmony_ci    verification:
763b1994897Sopenharmony_ci      - none
764b1994897Sopenharmony_ci    exceptions:
765b1994897Sopenharmony_ci      - x_none
766b1994897Sopenharmony_ci    properties:
767b1994897Sopenharmony_ci      - acc_read
768b1994897Sopenharmony_ci      - acc_write
769b1994897Sopenharmony_ci    namespace: ecmascript
770b1994897Sopenharmony_ci    pseudo: |
771b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
772b1994897Sopenharmony_ci    semantics: |
773b1994897Sopenharmony_ci      skip
774b1994897Sopenharmony_ci    instructions:
775b1994897Sopenharmony_ci      - sig: isin imm:u8, v:in:top
776b1994897Sopenharmony_ci        acc: inout:top
777b1994897Sopenharmony_ci        opcode_idx: [0x25]
778b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
779b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
780b1994897Sopenharmony_ci      - sig: instanceof imm:u8, v:in:top
781b1994897Sopenharmony_ci        acc: inout:top
782b1994897Sopenharmony_ci        opcode_idx: [0x26]
783b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
784b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
785b1994897Sopenharmony_ci      - sig: strictnoteq imm:u8, v:in:top
786b1994897Sopenharmony_ci        acc: inout:top
787b1994897Sopenharmony_ci        opcode_idx: [0x27]
788b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
789b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
790b1994897Sopenharmony_ci      - sig: stricteq imm:u8, v:in:top
791b1994897Sopenharmony_ci        acc: inout:top
792b1994897Sopenharmony_ci        opcode_idx: [0x28]
793b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
794b1994897Sopenharmony_ci        properties: [jit_ic_slot, one_slot, eight_bit_ic]
795b1994897Sopenharmony_ci
796b1994897Sopenharmony_ci  - title: call runtime functions
797b1994897Sopenharmony_ci    description: instructions which call runtime functions
798b1994897Sopenharmony_ci    verification:
799b1994897Sopenharmony_ci      - none
800b1994897Sopenharmony_ci    exceptions:
801b1994897Sopenharmony_ci      - x_none
802b1994897Sopenharmony_ci    properties:
803b1994897Sopenharmony_ci      - acc_read
804b1994897Sopenharmony_ci      - acc_write
805b1994897Sopenharmony_ci    namespace: ecmascript
806b1994897Sopenharmony_ci    pseudo: |
807b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
808b1994897Sopenharmony_ci    semantics: |
809b1994897Sopenharmony_ci      skip
810b1994897Sopenharmony_ci    instructions:
811b1994897Sopenharmony_ci      - sig: callruntime.notifyconcurrentresult
812b1994897Sopenharmony_ci        acc: in:top
813b1994897Sopenharmony_ci        opcode_idx: [0x00]
814b1994897Sopenharmony_ci        format: [pref_op_none]
815b1994897Sopenharmony_ci        prefix: callruntime
816b1994897Sopenharmony_ci      - sig: callruntime.definefieldbyvalue imm:u8, v1:in:top, v2:in:top
817b1994897Sopenharmony_ci        acc: in:top
818b1994897Sopenharmony_ci        opcode_idx: [0x01]
819b1994897Sopenharmony_ci        prefix: callruntime
820b1994897Sopenharmony_ci        format: [pref_op_imm_8_v1_8_v2_8]
821b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
822b1994897Sopenharmony_ci      - sig: callruntime.definefieldbyindex imm1:u8, imm2:u32, v:in:top
823b1994897Sopenharmony_ci        acc: in:top
824b1994897Sopenharmony_ci        opcode_idx: [0x02]
825b1994897Sopenharmony_ci        prefix: callruntime
826b1994897Sopenharmony_ci        format: [pref_op_imm1_8_imm2_32_v_8]
827b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
828b1994897Sopenharmony_ci      - sig: callruntime.topropertykey
829b1994897Sopenharmony_ci        acc: inout:top
830b1994897Sopenharmony_ci        opcode_idx: [0x03]
831b1994897Sopenharmony_ci        format: [pref_op_none]
832b1994897Sopenharmony_ci        prefix: callruntime
833b1994897Sopenharmony_ci      - sig: callruntime.createprivateproperty imm:u16, literalarray_id
834b1994897Sopenharmony_ci        acc: none
835b1994897Sopenharmony_ci        opcode_idx: [0x04]
836b1994897Sopenharmony_ci        format: [pref_op_imm_16_id_16]
837b1994897Sopenharmony_ci        prefix: callruntime
838b1994897Sopenharmony_ci        properties: [literalarray_id]
839b1994897Sopenharmony_ci      - sig: callruntime.defineprivateproperty imm1:u8, imm2:u16, imm3:u16, v:in:top
840b1994897Sopenharmony_ci        acc: in:top
841b1994897Sopenharmony_ci        opcode_idx: [0x05]
842b1994897Sopenharmony_ci        format: [pref_op_imm1_8_imm2_16_imm3_16_v_8]
843b1994897Sopenharmony_ci        prefix: callruntime
844b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_bit_ic]
845b1994897Sopenharmony_ci      - sig: callruntime.callinit imm:u8, v:in:top
846b1994897Sopenharmony_ci        acc: in:top
847b1994897Sopenharmony_ci        opcode_idx: [0x06]
848b1994897Sopenharmony_ci        format: [pref_op_imm_8_v_8]
849b1994897Sopenharmony_ci        prefix: callruntime
850b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
851b1994897Sopenharmony_ci      - sig: callruntime.definesendableclass imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
852b1994897Sopenharmony_ci        acc: out:top
853b1994897Sopenharmony_ci        opcode_idx: [0x07]
854b1994897Sopenharmony_ci        format: [pref_op_imm1_16_id1_16_id2_16_imm2_16_v_8]
855b1994897Sopenharmony_ci        prefix: callruntime
856b1994897Sopenharmony_ci        properties: [method_id, ic_slot, one_slot, sixteen_bit_ic, literalarray_id]
857b1994897Sopenharmony_ci      - sig: callruntime.ldsendableclass imm:u16
858b1994897Sopenharmony_ci        acc: out:top
859b1994897Sopenharmony_ci        opcode_idx: [0x08]
860b1994897Sopenharmony_ci        format: [pref_op_imm_16]
861b1994897Sopenharmony_ci        prefix: callruntime
862b1994897Sopenharmony_ci      - sig: callruntime.ldsendableexternalmodulevar imm:u8
863b1994897Sopenharmony_ci        acc: out:top
864b1994897Sopenharmony_ci        opcode_idx: [0x09]
865b1994897Sopenharmony_ci        format: [pref_op_imm_8]
866b1994897Sopenharmony_ci        prefix: callruntime
867b1994897Sopenharmony_ci      - sig: callruntime.wideldsendableexternalmodulevar imm:u16
868b1994897Sopenharmony_ci        acc: out:top
869b1994897Sopenharmony_ci        opcode_idx: [0x0a]
870b1994897Sopenharmony_ci        format: [pref_op_imm_16]
871b1994897Sopenharmony_ci        prefix: callruntime
872b1994897Sopenharmony_ci      - sig: callruntime.newsendableenv imm:u8
873b1994897Sopenharmony_ci        acc: none
874b1994897Sopenharmony_ci        opcode_idx: [0x0b]
875b1994897Sopenharmony_ci        format: [pref_op_imm_8]
876b1994897Sopenharmony_ci        prefix: callruntime
877b1994897Sopenharmony_ci      - sig: callruntime.widenewsendableenv imm:u16
878b1994897Sopenharmony_ci        acc: none
879b1994897Sopenharmony_ci        opcode_idx: [0x0c]
880b1994897Sopenharmony_ci        format: [pref_op_imm_16]
881b1994897Sopenharmony_ci        prefix: callruntime
882b1994897Sopenharmony_ci      - sig: callruntime.stsendablevar imm1:u8, imm2:u8
883b1994897Sopenharmony_ci        acc: in:top
884b1994897Sopenharmony_ci        opcode_idx: [0x0d, 0x0e]
885b1994897Sopenharmony_ci        format: [pref_op_imm1_4_imm2_4, pref_op_imm1_8_imm2_8]
886b1994897Sopenharmony_ci        prefix: callruntime
887b1994897Sopenharmony_ci      - sig: callruntime.widestsendablevar imm1:u16, imm2:u16
888b1994897Sopenharmony_ci        acc: in:top
889b1994897Sopenharmony_ci        opcode_idx: [0x0f]
890b1994897Sopenharmony_ci        format: [pref_op_imm1_16_imm2_16]
891b1994897Sopenharmony_ci        prefix: callruntime
892b1994897Sopenharmony_ci      - sig: callruntime.ldsendablevar imm1:u8, imm2:u8
893b1994897Sopenharmony_ci        acc: out:top
894b1994897Sopenharmony_ci        opcode_idx: [0x10, 0x11]
895b1994897Sopenharmony_ci        format: [pref_op_imm1_4_imm2_4, pref_op_imm1_8_imm2_8]
896b1994897Sopenharmony_ci        prefix: callruntime
897b1994897Sopenharmony_ci      - sig: callruntime.wideldsendablevar imm1:u16, imm2:u16
898b1994897Sopenharmony_ci        acc: out:top
899b1994897Sopenharmony_ci        opcode_idx: [0x12]
900b1994897Sopenharmony_ci        format: [pref_op_imm1_16_imm2_16]
901b1994897Sopenharmony_ci        prefix: callruntime
902b1994897Sopenharmony_ci      - sig: callruntime.istrue imm:u8
903b1994897Sopenharmony_ci        acc: inout:top
904b1994897Sopenharmony_ci        opcode_idx: [0x13]
905b1994897Sopenharmony_ci        format: [pref_op_imm_8]
906b1994897Sopenharmony_ci        prefix: callruntime
907b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_bit_ic]
908b1994897Sopenharmony_ci      - sig: callruntime.isfalse imm:u8
909b1994897Sopenharmony_ci        acc: inout:top
910b1994897Sopenharmony_ci        opcode_idx: [0x14]
911b1994897Sopenharmony_ci        format: [pref_op_imm_8]
912b1994897Sopenharmony_ci        prefix: callruntime
913b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_bit_ic]
914b1994897Sopenharmony_ci      - sig: callruntime.ldlazymodulevar imm:u8
915b1994897Sopenharmony_ci        acc: out:top
916b1994897Sopenharmony_ci        opcode_idx: [0x15]
917b1994897Sopenharmony_ci        format: [pref_op_imm_8]
918b1994897Sopenharmony_ci        prefix: callruntime
919b1994897Sopenharmony_ci      - sig: callruntime.wideldlazymodulevar imm:u16
920b1994897Sopenharmony_ci        acc: out:top
921b1994897Sopenharmony_ci        opcode_idx: [0x16]
922b1994897Sopenharmony_ci        format: [pref_op_imm_16]
923b1994897Sopenharmony_ci        prefix: callruntime
924b1994897Sopenharmony_ci      - sig: callruntime.ldlazysendablemodulevar imm:u8
925b1994897Sopenharmony_ci        acc: out:top
926b1994897Sopenharmony_ci        opcode_idx: [0x17]
927b1994897Sopenharmony_ci        format: [pref_op_imm_8]
928b1994897Sopenharmony_ci        prefix: callruntime
929b1994897Sopenharmony_ci      - sig: callruntime.wideldlazysendablemodulevar imm:u16
930b1994897Sopenharmony_ci        acc: out:top
931b1994897Sopenharmony_ci        opcode_idx: [0x18]
932b1994897Sopenharmony_ci        format: [pref_op_imm_16]
933b1994897Sopenharmony_ci        prefix: callruntime
934b1994897Sopenharmony_ci      - sig: callruntime.supercallforwardallargs v:in:top
935b1994897Sopenharmony_ci        acc: out:top
936b1994897Sopenharmony_ci        opcode_idx: [0x19]
937b1994897Sopenharmony_ci        format: [pref_op_v_8]
938b1994897Sopenharmony_ci        prefix: callruntime
939b1994897Sopenharmony_ci
940b1994897Sopenharmony_ci  - title: throw instructions
941b1994897Sopenharmony_ci    description: throw instructions
942b1994897Sopenharmony_ci    verification:
943b1994897Sopenharmony_ci      - none
944b1994897Sopenharmony_ci    exceptions:
945b1994897Sopenharmony_ci      - x_none
946b1994897Sopenharmony_ci    properties:
947b1994897Sopenharmony_ci      - acc_read
948b1994897Sopenharmony_ci      - acc_write
949b1994897Sopenharmony_ci    namespace: ecmascript
950b1994897Sopenharmony_ci    pseudo: |
951b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
952b1994897Sopenharmony_ci    semantics: |
953b1994897Sopenharmony_ci      skip
954b1994897Sopenharmony_ci    instructions:
955b1994897Sopenharmony_ci      - sig: throw
956b1994897Sopenharmony_ci        acc: in:top
957b1994897Sopenharmony_ci        opcode_idx: [0x00]
958b1994897Sopenharmony_ci        format: [pref_op_none]
959b1994897Sopenharmony_ci        prefix: throw
960b1994897Sopenharmony_ci        exceptions:
961b1994897Sopenharmony_ci          - x_throw
962b1994897Sopenharmony_ci      - sig: throw.notexists
963b1994897Sopenharmony_ci        acc: none
964b1994897Sopenharmony_ci        opcode_idx: [0x01]
965b1994897Sopenharmony_ci        format: [pref_op_none]
966b1994897Sopenharmony_ci        prefix: throw
967b1994897Sopenharmony_ci      - sig: throw.patternnoncoercible
968b1994897Sopenharmony_ci        acc: none
969b1994897Sopenharmony_ci        opcode_idx: [0x02]
970b1994897Sopenharmony_ci        format: [pref_op_none]
971b1994897Sopenharmony_ci        prefix: throw
972b1994897Sopenharmony_ci      - sig: throw.deletesuperproperty
973b1994897Sopenharmony_ci        acc: none
974b1994897Sopenharmony_ci        opcode_idx: [0x03]
975b1994897Sopenharmony_ci        format: [pref_op_none]
976b1994897Sopenharmony_ci        prefix: throw
977b1994897Sopenharmony_ci      - sig: throw.constassignment v:in:top
978b1994897Sopenharmony_ci        acc: none
979b1994897Sopenharmony_ci        opcode_idx: [0x04]
980b1994897Sopenharmony_ci        format: [pref_op_v_8]
981b1994897Sopenharmony_ci        prefix: throw
982b1994897Sopenharmony_ci      - sig: throw.ifnotobject v:in:top
983b1994897Sopenharmony_ci        acc: none
984b1994897Sopenharmony_ci        opcode_idx: [0x05]
985b1994897Sopenharmony_ci        format: [pref_op_v_8]
986b1994897Sopenharmony_ci        prefix: throw
987b1994897Sopenharmony_ci        properties: [conditional_throw]
988b1994897Sopenharmony_ci      - sig: throw.undefinedifhole v1:in:top, v2:in:top
989b1994897Sopenharmony_ci        acc: none
990b1994897Sopenharmony_ci        opcode_idx: [0x06]
991b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
992b1994897Sopenharmony_ci        prefix: throw
993b1994897Sopenharmony_ci        properties: [conditional_throw]
994b1994897Sopenharmony_ci      - sig: throw.ifsupernotcorrectcall imm:u16
995b1994897Sopenharmony_ci        acc: in:top
996b1994897Sopenharmony_ci        opcode_idx: [0x07, 0x08]
997b1994897Sopenharmony_ci        format: [pref_op_imm_8, pref_op_imm_16]
998b1994897Sopenharmony_ci        prefix: throw
999b1994897Sopenharmony_ci        properties: [conditional_throw]
1000b1994897Sopenharmony_ci      - sig: throw.undefinedifholewithname string_id
1001b1994897Sopenharmony_ci        acc: in:top
1002b1994897Sopenharmony_ci        opcode_idx: [0x09]
1003b1994897Sopenharmony_ci        format: [pref_op_id_16]
1004b1994897Sopenharmony_ci        prefix: throw
1005b1994897Sopenharmony_ci        properties: [string_id, conditional_throw]
1006b1994897Sopenharmony_ci
1007b1994897Sopenharmony_ci  - title: call instructions
1008b1994897Sopenharmony_ci    description: call
1009b1994897Sopenharmony_ci    verification:
1010b1994897Sopenharmony_ci      - none
1011b1994897Sopenharmony_ci    exceptions:
1012b1994897Sopenharmony_ci      - x_none
1013b1994897Sopenharmony_ci    properties:
1014b1994897Sopenharmony_ci      - acc_read
1015b1994897Sopenharmony_ci      - acc_write
1016b1994897Sopenharmony_ci    namespace: ecmascript
1017b1994897Sopenharmony_ci    pseudo: |
1018b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
1019b1994897Sopenharmony_ci    semantics: |
1020b1994897Sopenharmony_ci      skip
1021b1994897Sopenharmony_ci    instructions:
1022b1994897Sopenharmony_ci      - sig: callarg0 imm:u8
1023b1994897Sopenharmony_ci        acc: inout:top
1024b1994897Sopenharmony_ci        opcode_idx: [0x29]
1025b1994897Sopenharmony_ci        format: [op_imm_8]
1026b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1027b1994897Sopenharmony_ci      - sig: deprecated.callarg0 v:in:top
1028b1994897Sopenharmony_ci        acc: out:top
1029b1994897Sopenharmony_ci        opcode_idx: [0x0b]
1030b1994897Sopenharmony_ci        format: [pref_op_v_8]
1031b1994897Sopenharmony_ci        prefix: deprecated
1032b1994897Sopenharmony_ci      - sig: callarg1 imm:u8, v:in:top
1033b1994897Sopenharmony_ci        acc: inout:top
1034b1994897Sopenharmony_ci        opcode_idx: [0x2a]
1035b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
1036b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1037b1994897Sopenharmony_ci      - sig: deprecated.callarg1 v1:in:top, v2:in:top
1038b1994897Sopenharmony_ci        acc: out:top
1039b1994897Sopenharmony_ci        opcode_idx: [0x0c]
1040b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1041b1994897Sopenharmony_ci        prefix: deprecated
1042b1994897Sopenharmony_ci      - sig: callargs2 imm:u8, v1:in:top, v2:in:top
1043b1994897Sopenharmony_ci        acc: inout:top
1044b1994897Sopenharmony_ci        opcode_idx: [0x2b]
1045b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8]
1046b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1047b1994897Sopenharmony_ci      - sig: deprecated.callargs2 v1:in:top, v2:in:top, v3:in:top
1048b1994897Sopenharmony_ci        acc: out:top
1049b1994897Sopenharmony_ci        opcode_idx: [0x0d]
1050b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8_v3_8]
1051b1994897Sopenharmony_ci        prefix: deprecated
1052b1994897Sopenharmony_ci      - sig: callargs3 imm:u8, v1:in:top, v2:in:top, v3:in:top
1053b1994897Sopenharmony_ci        acc: inout:top
1054b1994897Sopenharmony_ci        opcode_idx: [0x2c]
1055b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8_v3_8]
1056b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1057b1994897Sopenharmony_ci      - sig: deprecated.callargs3 v1:in:top, v2:in:top, v3:in:top, v4:in:top
1058b1994897Sopenharmony_ci        acc: out:top
1059b1994897Sopenharmony_ci        opcode_idx: [0x0e]
1060b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8_v3_8_v4_8]
1061b1994897Sopenharmony_ci        prefix: deprecated
1062b1994897Sopenharmony_ci      - sig: callrange imm1:u8, imm2:u8, v:in:top
1063b1994897Sopenharmony_ci        acc: inout:top
1064b1994897Sopenharmony_ci        opcode_idx: [0x73]
1065b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_8_v_8]
1066b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic, range_0]
1067b1994897Sopenharmony_ci      - sig: wide.callrange imm:u16, v:in:top
1068b1994897Sopenharmony_ci        acc: inout:top
1069b1994897Sopenharmony_ci        opcode_idx: [0x04]
1070b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1071b1994897Sopenharmony_ci        prefix: wide
1072b1994897Sopenharmony_ci        properties: [range_0]
1073b1994897Sopenharmony_ci      - sig: deprecated.callrange imm:u16, v:in:top
1074b1994897Sopenharmony_ci        acc: out:top
1075b1994897Sopenharmony_ci        opcode_idx: [0x0f]
1076b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1077b1994897Sopenharmony_ci        prefix: deprecated
1078b1994897Sopenharmony_ci        properties: [range_0]
1079b1994897Sopenharmony_ci      - sig: supercallspread imm:u8, v:in:top
1080b1994897Sopenharmony_ci        acc: inout:top
1081b1994897Sopenharmony_ci        opcode_idx: [0xb9]
1082b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
1083b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1084b1994897Sopenharmony_ci      - sig: apply imm:u8, v1:in:top, v2:in:top
1085b1994897Sopenharmony_ci        acc: inout:top
1086b1994897Sopenharmony_ci        opcode_idx: [0xba]
1087b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8]
1088b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1089b1994897Sopenharmony_ci      - sig: deprecated.callspread v1:in:top, v2:in:top, v3:in:top
1090b1994897Sopenharmony_ci        acc: out:top
1091b1994897Sopenharmony_ci        opcode_idx: [0x10]
1092b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8_v3_8]
1093b1994897Sopenharmony_ci        prefix: deprecated
1094b1994897Sopenharmony_ci      - sig: callthis0 imm:u8, v:in:top
1095b1994897Sopenharmony_ci        acc: inout:top
1096b1994897Sopenharmony_ci        opcode_idx: [0x2d]
1097b1994897Sopenharmony_ci        format: [op_imm_8_v_8]
1098b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1099b1994897Sopenharmony_ci      - sig: callthis1 imm:u8, v1:in:top, v2:in:top
1100b1994897Sopenharmony_ci        acc: inout:top
1101b1994897Sopenharmony_ci        opcode_idx: [0x2e]
1102b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8]
1103b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1104b1994897Sopenharmony_ci      - sig: callthis2 imm:u8, v1:in:top, v2:in:top, v3:in:top
1105b1994897Sopenharmony_ci        acc: inout:top
1106b1994897Sopenharmony_ci        opcode_idx: [0x2f]
1107b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8_v3_8]
1108b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1109b1994897Sopenharmony_ci      - sig: callthis3 imm:u8, v1:in:top, v2:in:top, v3:in:top, v4:in:top
1110b1994897Sopenharmony_ci        acc: inout:top
1111b1994897Sopenharmony_ci        opcode_idx: [0x30]
1112b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8_v3_8_v4_8]
1113b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic]
1114b1994897Sopenharmony_ci      - sig: callthisrange imm1:u8, imm2:u8, v:in:top
1115b1994897Sopenharmony_ci        acc: inout:top
1116b1994897Sopenharmony_ci        opcode_idx: [0x31]
1117b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_8_v_8]
1118b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic, range_0]
1119b1994897Sopenharmony_ci      - sig: wide.callthisrange imm:u16, v:in:top
1120b1994897Sopenharmony_ci        acc: inout:top
1121b1994897Sopenharmony_ci        opcode_idx: [0x05]
1122b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1123b1994897Sopenharmony_ci        prefix: wide
1124b1994897Sopenharmony_ci        properties: [range_1]
1125b1994897Sopenharmony_ci      - sig: deprecated.callthisrange imm:u16, v:in:top
1126b1994897Sopenharmony_ci        acc: out:top
1127b1994897Sopenharmony_ci        opcode_idx: [0x11]
1128b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1129b1994897Sopenharmony_ci        prefix: deprecated
1130b1994897Sopenharmony_ci        properties: [range_1]
1131b1994897Sopenharmony_ci      - sig: supercallthisrange imm1:u8, imm2:u8, v:in:top
1132b1994897Sopenharmony_ci        acc: out:top
1133b1994897Sopenharmony_ci        opcode_idx: [0x32]
1134b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_8_v_8]
1135b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic, range_0]
1136b1994897Sopenharmony_ci      - sig: wide.supercallthisrange imm:u16, v:in:top
1137b1994897Sopenharmony_ci        acc: out:top
1138b1994897Sopenharmony_ci        opcode_idx: [0x06]
1139b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1140b1994897Sopenharmony_ci        prefix: wide
1141b1994897Sopenharmony_ci        properties: [range_0]
1142b1994897Sopenharmony_ci      - sig: supercallarrowrange imm1:u8, imm2:u8, v:in:top
1143b1994897Sopenharmony_ci        acc: inout:top
1144b1994897Sopenharmony_ci        opcode_idx: [0xbb]
1145b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_8_v_8]
1146b1994897Sopenharmony_ci        properties: [jit_ic_slot, two_slot, eight_bit_ic, range_0]
1147b1994897Sopenharmony_ci      - sig: wide.supercallarrowrange imm:u16, v:in:top
1148b1994897Sopenharmony_ci        acc: inout:top
1149b1994897Sopenharmony_ci        opcode_idx: [0x07]
1150b1994897Sopenharmony_ci        format: [pref_op_imm_16_v_8]
1151b1994897Sopenharmony_ci        prefix: wide
1152b1994897Sopenharmony_ci        properties: [range_0]
1153b1994897Sopenharmony_ci
1154b1994897Sopenharmony_ci  - title: definition instuctions
1155b1994897Sopenharmony_ci    description: instructions which define object
1156b1994897Sopenharmony_ci    verification:
1157b1994897Sopenharmony_ci      - none
1158b1994897Sopenharmony_ci    exceptions:
1159b1994897Sopenharmony_ci      - x_none
1160b1994897Sopenharmony_ci    properties:
1161b1994897Sopenharmony_ci      - acc_read
1162b1994897Sopenharmony_ci      - acc_write
1163b1994897Sopenharmony_ci    namespace: ecmascript
1164b1994897Sopenharmony_ci    pseudo: |
1165b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
1166b1994897Sopenharmony_ci    semantics: |
1167b1994897Sopenharmony_ci      skip
1168b1994897Sopenharmony_ci    instructions:
1169b1994897Sopenharmony_ci      - sig: definegettersetterbyvalue v1:in:top, v2:in:top, v3:in:top, v4:in:top
1170b1994897Sopenharmony_ci        acc: inout:top
1171b1994897Sopenharmony_ci        opcode_idx: [0xbc]
1172b1994897Sopenharmony_ci        format: [op_v1_8_v2_8_v3_8_v4_8]
1173b1994897Sopenharmony_ci      - sig: definefunc imm1:u16, method_id, imm2:u8
1174b1994897Sopenharmony_ci        acc: out:top
1175b1994897Sopenharmony_ci        opcode_idx: [0x33, 0x74]
1176b1994897Sopenharmony_ci        format: [op_imm1_8_id_16_imm2_8, op_imm1_16_id_16_imm2_8]
1177b1994897Sopenharmony_ci        properties: [method_id, ic_slot, one_slot, eight_sixteen_bit_ic]
1178b1994897Sopenharmony_ci      - sig: definemethod imm1:u16, method_id, imm2:u8
1179b1994897Sopenharmony_ci        acc: inout:top
1180b1994897Sopenharmony_ci        opcode_idx: [0x34, 0xbe]
1181b1994897Sopenharmony_ci        format: [op_imm1_8_id_16_imm2_8, op_imm1_16_id_16_imm2_8]
1182b1994897Sopenharmony_ci        properties: [method_id, ic_slot, one_slot, eight_sixteen_bit_ic]
1183b1994897Sopenharmony_ci      - sig: defineclasswithbuffer imm1:u16, method_id, literalarray_id, imm2:u16, v:in:top
1184b1994897Sopenharmony_ci        acc: out:top
1185b1994897Sopenharmony_ci        opcode_idx: [0x35, 0x75]
1186b1994897Sopenharmony_ci        format: [op_imm1_8_id1_16_id2_16_imm2_16_v_8, op_imm1_16_id1_16_id2_16_imm2_16_v_8]
1187b1994897Sopenharmony_ci        properties: [method_id, ic_slot, one_slot, eight_sixteen_bit_ic, literalarray_id]
1188b1994897Sopenharmony_ci      - sig: deprecated.defineclasswithbuffer method_id, imm1:u16, imm2:u16, v1:in:top, v2:in:top
1189b1994897Sopenharmony_ci        acc: out:top
1190b1994897Sopenharmony_ci        opcode_idx: [0x12]
1191b1994897Sopenharmony_ci        format: [pref_op_id_16_imm1_16_imm2_16_v1_8_v2_8]
1192b1994897Sopenharmony_ci        prefix: deprecated
1193b1994897Sopenharmony_ci        properties: [method_id]
1194b1994897Sopenharmony_ci
1195b1994897Sopenharmony_ci  - title: object visitors
1196b1994897Sopenharmony_ci    description: instructions which visit object
1197b1994897Sopenharmony_ci    verification:
1198b1994897Sopenharmony_ci      - none
1199b1994897Sopenharmony_ci    exceptions:
1200b1994897Sopenharmony_ci      - x_none
1201b1994897Sopenharmony_ci    properties:
1202b1994897Sopenharmony_ci      - acc_read
1203b1994897Sopenharmony_ci      - acc_write
1204b1994897Sopenharmony_ci    namespace: ecmascript
1205b1994897Sopenharmony_ci    pseudo: |
1206b1994897Sopenharmony_ci      acc = ecma_op(acc, operand_0, ..., operands_n)
1207b1994897Sopenharmony_ci    semantics: |
1208b1994897Sopenharmony_ci      skip
1209b1994897Sopenharmony_ci    instructions:
1210b1994897Sopenharmony_ci      - sig: resumegenerator
1211b1994897Sopenharmony_ci        acc: inout:top
1212b1994897Sopenharmony_ci        opcode_idx: [0xbf]
1213b1994897Sopenharmony_ci        format: [op_none]
1214b1994897Sopenharmony_ci      - sig: deprecated.resumegenerator v:in:top
1215b1994897Sopenharmony_ci        acc: out:top
1216b1994897Sopenharmony_ci        opcode_idx: [0x13]
1217b1994897Sopenharmony_ci        format: [pref_op_v_8]
1218b1994897Sopenharmony_ci        prefix: deprecated
1219b1994897Sopenharmony_ci      - sig: getresumemode
1220b1994897Sopenharmony_ci        acc: inout:top
1221b1994897Sopenharmony_ci        opcode_idx: [0xc0]
1222b1994897Sopenharmony_ci        format: [op_none]
1223b1994897Sopenharmony_ci      - sig: deprecated.getresumemode v:in:top
1224b1994897Sopenharmony_ci        acc: out:top
1225b1994897Sopenharmony_ci        opcode_idx: [0x14]
1226b1994897Sopenharmony_ci        format: [pref_op_v_8]
1227b1994897Sopenharmony_ci        prefix: deprecated
1228b1994897Sopenharmony_ci      - sig: gettemplateobject imm:u16
1229b1994897Sopenharmony_ci        acc: inout:top
1230b1994897Sopenharmony_ci        opcode_idx: [0x76, 0xc1]
1231b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1232b1994897Sopenharmony_ci        properties: [ic_slot, one_slot, eight_sixteen_bit_ic]
1233b1994897Sopenharmony_ci      - sig: deprecated.gettemplateobject v:in:top
1234b1994897Sopenharmony_ci        acc: inout:top
1235b1994897Sopenharmony_ci        opcode_idx: [0x15]
1236b1994897Sopenharmony_ci        format: [pref_op_v_8]
1237b1994897Sopenharmony_ci        prefix: deprecated
1238b1994897Sopenharmony_ci      - sig: getnextpropname v:in:top
1239b1994897Sopenharmony_ci        acc: out:top
1240b1994897Sopenharmony_ci        opcode_idx: [0x36]
1241b1994897Sopenharmony_ci        format: [op_v_8]
1242b1994897Sopenharmony_ci      - sig: delobjprop v:in:top
1243b1994897Sopenharmony_ci        acc: inout:top
1244b1994897Sopenharmony_ci        opcode_idx: [0xc2]
1245b1994897Sopenharmony_ci        format: [op_v_8]
1246b1994897Sopenharmony_ci      - sig: deprecated.delobjprop v1:in:top, v2:in:top
1247b1994897Sopenharmony_ci        acc: out:top
1248b1994897Sopenharmony_ci        opcode_idx: [0x16]
1249b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1250b1994897Sopenharmony_ci        prefix: deprecated
1251b1994897Sopenharmony_ci      - sig: suspendgenerator v:in:top
1252b1994897Sopenharmony_ci        acc: inout:top
1253b1994897Sopenharmony_ci        opcode_idx: [0xc3]
1254b1994897Sopenharmony_ci        format: [op_v_8]
1255b1994897Sopenharmony_ci      - sig: deprecated.suspendgenerator v1:in:top, v2:in:top
1256b1994897Sopenharmony_ci        acc: out:top
1257b1994897Sopenharmony_ci        opcode_idx: [0x17]
1258b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1259b1994897Sopenharmony_ci        prefix: deprecated
1260b1994897Sopenharmony_ci      - sig: asyncfunctionawaituncaught v:in:top
1261b1994897Sopenharmony_ci        acc: inout:top
1262b1994897Sopenharmony_ci        opcode_idx: [0xc4]
1263b1994897Sopenharmony_ci        format: [op_v_8]
1264b1994897Sopenharmony_ci      - sig: deprecated.asyncfunctionawaituncaught v1:in:top, v2:in:top
1265b1994897Sopenharmony_ci        acc: out:top
1266b1994897Sopenharmony_ci        opcode_idx: [0x18]
1267b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1268b1994897Sopenharmony_ci        prefix: deprecated
1269b1994897Sopenharmony_ci      - sig: copydataproperties v:in:top
1270b1994897Sopenharmony_ci        acc: inout:top
1271b1994897Sopenharmony_ci        opcode_idx: [0xc5]
1272b1994897Sopenharmony_ci        format: [op_v_8]
1273b1994897Sopenharmony_ci      - sig: deprecated.copydataproperties v1:in:top, v2:in:top
1274b1994897Sopenharmony_ci        acc: out:top
1275b1994897Sopenharmony_ci        opcode_idx: [0x19]
1276b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1277b1994897Sopenharmony_ci        prefix: deprecated
1278b1994897Sopenharmony_ci      - sig: starrayspread v1:in:top, v2:in:top
1279b1994897Sopenharmony_ci        acc: inout:top
1280b1994897Sopenharmony_ci        opcode_idx: [0xc6]
1281b1994897Sopenharmony_ci        format: [op_v1_8_v2_8]
1282b1994897Sopenharmony_ci      - sig: setobjectwithproto imm:u16, v:in:top
1283b1994897Sopenharmony_ci        acc: in:top
1284b1994897Sopenharmony_ci        opcode_idx: [0x77, 0xc7]
1285b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
1286b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1287b1994897Sopenharmony_ci      - sig: deprecated.setobjectwithproto v1:in:top, v2:in:top
1288b1994897Sopenharmony_ci        acc: none
1289b1994897Sopenharmony_ci        opcode_idx: [0x1a]
1290b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1291b1994897Sopenharmony_ci        prefix: deprecated
1292b1994897Sopenharmony_ci      - sig: ldobjbyvalue imm:u16, v:in:top
1293b1994897Sopenharmony_ci        acc: inout:top
1294b1994897Sopenharmony_ci        opcode_idx: [0x37, 0x85]
1295b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
1296b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1297b1994897Sopenharmony_ci      - sig: deprecated.ldobjbyvalue v1:in:top, v2:in:top
1298b1994897Sopenharmony_ci        acc: out:top
1299b1994897Sopenharmony_ci        opcode_idx: [0x1b]
1300b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1301b1994897Sopenharmony_ci        prefix: deprecated
1302b1994897Sopenharmony_ci      - sig: stobjbyvalue imm:u16, v1:in:top, v2:in:top
1303b1994897Sopenharmony_ci        acc: in:top
1304b1994897Sopenharmony_ci        opcode_idx: [0x38, 0x86]
1305b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8, op_imm_16_v1_8_v2_8]
1306b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1307b1994897Sopenharmony_ci      - sig: stownbyvalue imm:u16, v1:in:top, v2:in:top
1308b1994897Sopenharmony_ci        acc: in:top
1309b1994897Sopenharmony_ci        opcode_idx: [0x78, 0xc8]
1310b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8, op_imm_16_v1_8_v2_8]
1311b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1312b1994897Sopenharmony_ci      - sig: ldsuperbyvalue imm:u16, v:in:top
1313b1994897Sopenharmony_ci        acc: inout:top
1314b1994897Sopenharmony_ci        opcode_idx: [0x39, 0x87]
1315b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
1316b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1317b1994897Sopenharmony_ci      - sig: deprecated.ldsuperbyvalue v1:in:top, v2:in:top
1318b1994897Sopenharmony_ci        acc: out:top
1319b1994897Sopenharmony_ci        opcode_idx: [0x1c]
1320b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1321b1994897Sopenharmony_ci        prefix: deprecated
1322b1994897Sopenharmony_ci      - sig: stsuperbyvalue imm:u16, v1:in:top, v2:in:top
1323b1994897Sopenharmony_ci        acc: in:top
1324b1994897Sopenharmony_ci        opcode_idx: [0xc9, 0xca]
1325b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8, op_imm_16_v1_8_v2_8]
1326b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1327b1994897Sopenharmony_ci      - sig: ldobjbyindex imm1:u16, imm2:u16
1328b1994897Sopenharmony_ci        acc: inout:top
1329b1994897Sopenharmony_ci        opcode_idx: [0x3a, 0x88]
1330b1994897Sopenharmony_ci        format: [op_imm1_8_imm2_16, op_imm1_16_imm2_16]
1331b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1332b1994897Sopenharmony_ci      - sig: wide.ldobjbyindex imm:u32
1333b1994897Sopenharmony_ci        acc: inout:top
1334b1994897Sopenharmony_ci        opcode_idx: [0x08]
1335b1994897Sopenharmony_ci        format: [pref_op_imm_32]
1336b1994897Sopenharmony_ci        prefix: wide
1337b1994897Sopenharmony_ci      - sig: deprecated.ldobjbyindex v:in:top, imm:u32
1338b1994897Sopenharmony_ci        acc: out:top
1339b1994897Sopenharmony_ci        opcode_idx: [0x1d]
1340b1994897Sopenharmony_ci        format: [pref_op_v_8_imm_32]
1341b1994897Sopenharmony_ci        prefix: deprecated
1342b1994897Sopenharmony_ci      - sig: stobjbyindex imm1:u16, v:in:top, imm2:u16
1343b1994897Sopenharmony_ci        acc: in:top
1344b1994897Sopenharmony_ci        opcode_idx: [0x3b, 0x89]
1345b1994897Sopenharmony_ci        format: [op_imm1_8_v_8_imm2_16, op_imm1_16_v_8_imm2_16]
1346b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1347b1994897Sopenharmony_ci      - sig: wide.stobjbyindex v:in:top, imm:u32
1348b1994897Sopenharmony_ci        acc: in:top
1349b1994897Sopenharmony_ci        opcode_idx: [0x09]
1350b1994897Sopenharmony_ci        format: [pref_op_v_8_imm_32]
1351b1994897Sopenharmony_ci        prefix: wide
1352b1994897Sopenharmony_ci      - sig: stownbyindex imm1:u16, v:in:top, imm2:u16
1353b1994897Sopenharmony_ci        acc: in:top
1354b1994897Sopenharmony_ci        opcode_idx: [0x79, 0xcb]
1355b1994897Sopenharmony_ci        format: [op_imm1_8_v_8_imm2_16, op_imm1_16_v_8_imm2_16]
1356b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1357b1994897Sopenharmony_ci      - sig: wide.stownbyindex v:in:top, imm:u32
1358b1994897Sopenharmony_ci        acc: in:top
1359b1994897Sopenharmony_ci        opcode_idx: [0x0a]
1360b1994897Sopenharmony_ci        format: [pref_op_v_8_imm_32]
1361b1994897Sopenharmony_ci        prefix: wide
1362b1994897Sopenharmony_ci      - sig: asyncfunctionresolve v:in:top
1363b1994897Sopenharmony_ci        acc: inout:top
1364b1994897Sopenharmony_ci        opcode_idx: [0xcd]
1365b1994897Sopenharmony_ci        format: [op_v_8]
1366b1994897Sopenharmony_ci      - sig: deprecated.asyncfunctionresolve v1:in:top, v2:in:top, v3:in:top
1367b1994897Sopenharmony_ci        acc: out:top
1368b1994897Sopenharmony_ci        opcode_idx: [0x1e]
1369b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8_v3_8]
1370b1994897Sopenharmony_ci        prefix: deprecated
1371b1994897Sopenharmony_ci      - sig: asyncfunctionreject v:in:top
1372b1994897Sopenharmony_ci        acc: inout:top
1373b1994897Sopenharmony_ci        opcode_idx: [0xce]
1374b1994897Sopenharmony_ci        format: [op_v_8]
1375b1994897Sopenharmony_ci      - sig: deprecated.asyncfunctionreject v1:in:top, v2:in:top, v3:in:top
1376b1994897Sopenharmony_ci        acc: out:top
1377b1994897Sopenharmony_ci        opcode_idx: [0x1f]
1378b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8_v3_8]
1379b1994897Sopenharmony_ci        prefix: deprecated
1380b1994897Sopenharmony_ci      - sig: copyrestargs imm:u8
1381b1994897Sopenharmony_ci        acc: out:top
1382b1994897Sopenharmony_ci        opcode_idx: [0xcf]
1383b1994897Sopenharmony_ci        format: [op_imm_8]
1384b1994897Sopenharmony_ci      - sig: wide.copyrestargs imm:u16
1385b1994897Sopenharmony_ci        acc: out:top
1386b1994897Sopenharmony_ci        opcode_idx: [0x0b]
1387b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1388b1994897Sopenharmony_ci        prefix: wide
1389b1994897Sopenharmony_ci      - sig: ldlexvar imm1:u8, imm2:u8
1390b1994897Sopenharmony_ci        acc: out:top
1391b1994897Sopenharmony_ci        opcode_idx: [0x3c, 0x8a]
1392b1994897Sopenharmony_ci        format: [op_imm1_4_imm2_4, op_imm1_8_imm2_8]
1393b1994897Sopenharmony_ci      - sig: wide.ldlexvar imm1:u16, imm2:u16
1394b1994897Sopenharmony_ci        acc: out:top
1395b1994897Sopenharmony_ci        opcode_idx: [0x0c]
1396b1994897Sopenharmony_ci        format: [pref_op_imm1_16_imm2_16]
1397b1994897Sopenharmony_ci        prefix: wide
1398b1994897Sopenharmony_ci      - sig: stlexvar imm1:u8, imm2:u8
1399b1994897Sopenharmony_ci        acc: in:top
1400b1994897Sopenharmony_ci        opcode_idx: [0x3d, 0x8b]
1401b1994897Sopenharmony_ci        format: [op_imm1_4_imm2_4, op_imm1_8_imm2_8]
1402b1994897Sopenharmony_ci      - sig: wide.stlexvar imm1:u16, imm2:u16
1403b1994897Sopenharmony_ci        acc: in:top
1404b1994897Sopenharmony_ci        opcode_idx: [0x0d]
1405b1994897Sopenharmony_ci        format: [pref_op_imm1_16_imm2_16]
1406b1994897Sopenharmony_ci        prefix: wide
1407b1994897Sopenharmony_ci      - sig: deprecated.stlexvar imm1:u16, imm2:u16, v:in:top
1408b1994897Sopenharmony_ci        acc: none
1409b1994897Sopenharmony_ci        opcode_idx: [0x20, 0x21, 0x22]
1410b1994897Sopenharmony_ci        format: [pref_op_imm1_4_imm2_4_v_8, pref_op_imm1_8_imm2_8_v_8, pref_op_imm1_16_imm2_16_v_8]
1411b1994897Sopenharmony_ci        prefix: deprecated
1412b1994897Sopenharmony_ci      - sig: getmodulenamespace imm:u8
1413b1994897Sopenharmony_ci        acc: out:top
1414b1994897Sopenharmony_ci        opcode_idx: [0x7b]
1415b1994897Sopenharmony_ci        format: [op_imm_8]
1416b1994897Sopenharmony_ci      - sig: wide.getmodulenamespace imm:u16
1417b1994897Sopenharmony_ci        acc: out:top
1418b1994897Sopenharmony_ci        opcode_idx: [0x0e]
1419b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1420b1994897Sopenharmony_ci        prefix: wide
1421b1994897Sopenharmony_ci      - sig: deprecated.getmodulenamespace string_id
1422b1994897Sopenharmony_ci        acc: out:top
1423b1994897Sopenharmony_ci        opcode_idx: [0x23]
1424b1994897Sopenharmony_ci        format: [pref_op_id_32]
1425b1994897Sopenharmony_ci        properties: [string_id]
1426b1994897Sopenharmony_ci        prefix: deprecated
1427b1994897Sopenharmony_ci      - sig: stmodulevar imm:u8
1428b1994897Sopenharmony_ci        acc: in:top
1429b1994897Sopenharmony_ci        opcode_idx: [0x7c]
1430b1994897Sopenharmony_ci        format: [op_imm_8]
1431b1994897Sopenharmony_ci      - sig: wide.stmodulevar imm:u16
1432b1994897Sopenharmony_ci        acc: in:top
1433b1994897Sopenharmony_ci        opcode_idx: [0x0f]
1434b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1435b1994897Sopenharmony_ci        prefix: wide
1436b1994897Sopenharmony_ci      - sig: deprecated.stmodulevar string_id
1437b1994897Sopenharmony_ci        acc: in:top
1438b1994897Sopenharmony_ci        opcode_idx: [0x24]
1439b1994897Sopenharmony_ci        format: [pref_op_id_32]
1440b1994897Sopenharmony_ci        properties: [string_id]
1441b1994897Sopenharmony_ci        prefix: deprecated
1442b1994897Sopenharmony_ci      - sig: tryldglobalbyname imm:u16, string_id
1443b1994897Sopenharmony_ci        acc: out:top
1444b1994897Sopenharmony_ci        opcode_idx: [0x3f, 0x8c]
1445b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1446b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, eight_sixteen_bit_ic]
1447b1994897Sopenharmony_ci      - sig: trystglobalbyname imm:u16, string_id
1448b1994897Sopenharmony_ci        acc: in:top
1449b1994897Sopenharmony_ci        opcode_idx: [0x40, 0x8d]
1450b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1451b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, eight_sixteen_bit_ic]
1452b1994897Sopenharmony_ci      - sig: ldglobalvar imm:u16, string_id
1453b1994897Sopenharmony_ci        acc: out:top
1454b1994897Sopenharmony_ci        opcode_idx: [0x41]
1455b1994897Sopenharmony_ci        format: [op_imm_16_id_16]
1456b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, sixteen_bit_ic]
1457b1994897Sopenharmony_ci      - sig: stglobalvar imm:u16, string_id
1458b1994897Sopenharmony_ci        acc: in:top
1459b1994897Sopenharmony_ci        opcode_idx: [0x7f]
1460b1994897Sopenharmony_ci        format: [op_imm_16_id_16]
1461b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, sixteen_bit_ic]
1462b1994897Sopenharmony_ci      - sig: ldobjbyname imm:u16, string_id
1463b1994897Sopenharmony_ci        acc: inout:top
1464b1994897Sopenharmony_ci        opcode_idx: [0x42, 0x90]
1465b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1466b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1467b1994897Sopenharmony_ci      - sig: deprecated.ldobjbyname string_id, v:in:top
1468b1994897Sopenharmony_ci        acc: out:top
1469b1994897Sopenharmony_ci        opcode_idx: [0x25]
1470b1994897Sopenharmony_ci        format: [pref_op_id_32_v_8]
1471b1994897Sopenharmony_ci        properties: [string_id]
1472b1994897Sopenharmony_ci        prefix: deprecated
1473b1994897Sopenharmony_ci      - sig: stobjbyname imm:u16, string_id, v:in:top
1474b1994897Sopenharmony_ci        acc: in:top
1475b1994897Sopenharmony_ci        opcode_idx: [0x43, 0x91]
1476b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8, op_imm_16_id_16_v_8]
1477b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1478b1994897Sopenharmony_ci      - sig: stownbyname imm:u16, string_id, v:in:top
1479b1994897Sopenharmony_ci        acc: in:top
1480b1994897Sopenharmony_ci        opcode_idx: [0x7a, 0xcc]
1481b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8, op_imm_16_id_16_v_8]
1482b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1483b1994897Sopenharmony_ci      - sig: ldsuperbyname imm:u16, string_id
1484b1994897Sopenharmony_ci        acc: inout:top
1485b1994897Sopenharmony_ci        opcode_idx: [0x46, 0x92]
1486b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1487b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1488b1994897Sopenharmony_ci      - sig: deprecated.ldsuperbyname string_id, v:in:top
1489b1994897Sopenharmony_ci        acc: out:top
1490b1994897Sopenharmony_ci        opcode_idx: [0x26]
1491b1994897Sopenharmony_ci        format: [pref_op_id_32_v_8]
1492b1994897Sopenharmony_ci        properties: [string_id]
1493b1994897Sopenharmony_ci        prefix: deprecated
1494b1994897Sopenharmony_ci      - sig: stsuperbyname imm:u16, string_id, v:in:top
1495b1994897Sopenharmony_ci        acc: in:top
1496b1994897Sopenharmony_ci        opcode_idx: [0xd0, 0xd1]
1497b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8, op_imm_16_id_16_v_8]
1498b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1499b1994897Sopenharmony_ci      - sig: ldlocalmodulevar imm:u8
1500b1994897Sopenharmony_ci        opcode_idx: [0x7d]
1501b1994897Sopenharmony_ci        acc: out:top
1502b1994897Sopenharmony_ci        format: [op_imm_8]
1503b1994897Sopenharmony_ci      - sig: wide.ldlocalmodulevar imm:u16
1504b1994897Sopenharmony_ci        acc: out:top
1505b1994897Sopenharmony_ci        opcode_idx: [0x10]
1506b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1507b1994897Sopenharmony_ci        prefix: wide
1508b1994897Sopenharmony_ci      - sig: ldexternalmodulevar imm:u8
1509b1994897Sopenharmony_ci        acc: out:top
1510b1994897Sopenharmony_ci        opcode_idx: [0x7e]
1511b1994897Sopenharmony_ci        format: [op_imm_8]
1512b1994897Sopenharmony_ci      - sig: wide.ldexternalmodulevar imm:u16
1513b1994897Sopenharmony_ci        acc: out:top
1514b1994897Sopenharmony_ci        opcode_idx: [0x11]
1515b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1516b1994897Sopenharmony_ci        prefix: wide
1517b1994897Sopenharmony_ci      - sig: deprecated.ldmodulevar string_id, imm:u8
1518b1994897Sopenharmony_ci        acc: out:top
1519b1994897Sopenharmony_ci        opcode_idx: [0x27]
1520b1994897Sopenharmony_ci        format: [pref_op_id_32_imm_8]
1521b1994897Sopenharmony_ci        prefix: deprecated
1522b1994897Sopenharmony_ci        properties: [string_id]
1523b1994897Sopenharmony_ci      - sig: stconsttoglobalrecord imm:u16, string_id
1524b1994897Sopenharmony_ci        acc: in:top
1525b1994897Sopenharmony_ci        opcode_idx: [0x47]
1526b1994897Sopenharmony_ci        format: [op_imm_16_id_16]
1527b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, sixteen_bit_ic]
1528b1994897Sopenharmony_ci      - sig: deprecated.stconsttoglobalrecord string_id
1529b1994897Sopenharmony_ci        acc: in:top
1530b1994897Sopenharmony_ci        opcode_idx: [0x28]
1531b1994897Sopenharmony_ci        format: [pref_op_id_32]
1532b1994897Sopenharmony_ci        properties: [string_id]
1533b1994897Sopenharmony_ci        prefix: deprecated
1534b1994897Sopenharmony_ci      - sig: sttoglobalrecord imm:u16, string_id
1535b1994897Sopenharmony_ci        acc: in:top
1536b1994897Sopenharmony_ci        opcode_idx: [0x48]
1537b1994897Sopenharmony_ci        format: [op_imm_16_id_16]
1538b1994897Sopenharmony_ci        properties: [string_id, ic_slot, one_slot, sixteen_bit_ic]
1539b1994897Sopenharmony_ci      - sig: deprecated.stlettoglobalrecord string_id
1540b1994897Sopenharmony_ci        acc: in:top
1541b1994897Sopenharmony_ci        opcode_idx: [0x29]
1542b1994897Sopenharmony_ci        format: [pref_op_id_32]
1543b1994897Sopenharmony_ci        properties: [string_id]
1544b1994897Sopenharmony_ci        prefix: deprecated
1545b1994897Sopenharmony_ci      - sig: deprecated.stclasstoglobalrecord string_id
1546b1994897Sopenharmony_ci        acc: in:top
1547b1994897Sopenharmony_ci        opcode_idx: [0x2a]
1548b1994897Sopenharmony_ci        format: [pref_op_id_32]
1549b1994897Sopenharmony_ci        properties: [string_id]
1550b1994897Sopenharmony_ci        prefix: deprecated
1551b1994897Sopenharmony_ci      - sig: deprecated.ldhomeobject
1552b1994897Sopenharmony_ci        acc: out:top
1553b1994897Sopenharmony_ci        opcode_idx: [0x2b]
1554b1994897Sopenharmony_ci        format: [pref_op_none]
1555b1994897Sopenharmony_ci        prefix: deprecated
1556b1994897Sopenharmony_ci      - sig: deprecated.createobjecthavingmethod imm:u16
1557b1994897Sopenharmony_ci        acc: inout:top
1558b1994897Sopenharmony_ci        opcode_idx: [0x2c]
1559b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1560b1994897Sopenharmony_ci        prefix: deprecated
1561b1994897Sopenharmony_ci      - sig: stownbyvaluewithnameset imm:u16, v1:in:top, v2:in:top
1562b1994897Sopenharmony_ci        acc: in:top
1563b1994897Sopenharmony_ci        opcode_idx: [0x99, 0xd2]
1564b1994897Sopenharmony_ci        format: [op_imm_8_v1_8_v2_8, op_imm_16_v1_8_v2_8]
1565b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1566b1994897Sopenharmony_ci      - sig: stownbynamewithnameset imm:u16, string_id, v:in:top
1567b1994897Sopenharmony_ci        acc: in:top
1568b1994897Sopenharmony_ci        opcode_idx: [0x8e, 0xd4]
1569b1994897Sopenharmony_ci        format: [op_imm_8_id_16_v_8, op_imm_16_id_16_v_8]
1570b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1571b1994897Sopenharmony_ci      - sig: ldbigint string_id
1572b1994897Sopenharmony_ci        acc: out:top
1573b1994897Sopenharmony_ci        opcode_idx: [0xd3]
1574b1994897Sopenharmony_ci        format: [op_id_16]
1575b1994897Sopenharmony_ci        properties: [string_id]
1576b1994897Sopenharmony_ci      - sig: ldthisbyname imm:u16, string_id
1577b1994897Sopenharmony_ci        acc: out:top
1578b1994897Sopenharmony_ci        opcode_idx: [0x49, 0x93]
1579b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1580b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1581b1994897Sopenharmony_ci      - sig: stthisbyname imm:u16, string_id
1582b1994897Sopenharmony_ci        acc: in:top
1583b1994897Sopenharmony_ci        opcode_idx: [0x4a, 0x94]
1584b1994897Sopenharmony_ci        format: [op_imm_8_id_16, op_imm_16_id_16]
1585b1994897Sopenharmony_ci        properties: [string_id, ic_slot, two_slot, eight_sixteen_bit_ic]
1586b1994897Sopenharmony_ci      - sig: ldthisbyvalue imm:u16
1587b1994897Sopenharmony_ci        acc: inout:top
1588b1994897Sopenharmony_ci        opcode_idx: [0x4b, 0x95]
1589b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1590b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1591b1994897Sopenharmony_ci      - sig: stthisbyvalue imm:u16, v:in:top
1592b1994897Sopenharmony_ci        acc: in:top
1593b1994897Sopenharmony_ci        opcode_idx: [0x4c, 0x96]
1594b1994897Sopenharmony_ci        format: [op_imm_8_v_8, op_imm_16_v_8]
1595b1994897Sopenharmony_ci        properties: [ic_slot, two_slot, eight_sixteen_bit_ic]
1596b1994897Sopenharmony_ci      - sig: wide.ldpatchvar imm:u16
1597b1994897Sopenharmony_ci        acc: out:top
1598b1994897Sopenharmony_ci        opcode_idx: [0x12]
1599b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1600b1994897Sopenharmony_ci        prefix: wide
1601b1994897Sopenharmony_ci      - sig: wide.stpatchvar imm:u16
1602b1994897Sopenharmony_ci        acc: in:top
1603b1994897Sopenharmony_ci        opcode_idx: [0x13]
1604b1994897Sopenharmony_ci        format: [pref_op_imm_16]
1605b1994897Sopenharmony_ci        prefix: wide
1606b1994897Sopenharmony_ci      - sig: dynamicimport
1607b1994897Sopenharmony_ci        acc: inout:top
1608b1994897Sopenharmony_ci        opcode_idx: [0xbd]
1609b1994897Sopenharmony_ci        format: [op_none]
1610b1994897Sopenharmony_ci      - sig: deprecated.dynamicimport v:in:top
1611b1994897Sopenharmony_ci        acc: out:top
1612b1994897Sopenharmony_ci        opcode_idx: [0x2d]
1613b1994897Sopenharmony_ci        format: [pref_op_v_8]
1614b1994897Sopenharmony_ci        prefix: deprecated
1615b1994897Sopenharmony_ci      - sig: asyncgeneratorreject v:in:top
1616b1994897Sopenharmony_ci        acc: inout:top
1617b1994897Sopenharmony_ci        opcode_idx: [0x97]
1618b1994897Sopenharmony_ci        format: [op_v_8]
1619b1994897Sopenharmony_ci      - sig: deprecated.asyncgeneratorreject v1:in:top, v2:in:top
1620b1994897Sopenharmony_ci        acc: out:top
1621b1994897Sopenharmony_ci        opcode_idx: [0x2e]
1622b1994897Sopenharmony_ci        format: [pref_op_v1_8_v2_8]
1623b1994897Sopenharmony_ci        prefix: deprecated
1624b1994897Sopenharmony_ci      - sig: setgeneratorstate imm:u8
1625b1994897Sopenharmony_ci        acc: in:top
1626b1994897Sopenharmony_ci        opcode_idx: [0xd6]
1627b1994897Sopenharmony_ci        format: [op_imm_8]
1628b1994897Sopenharmony_ci
1629b1994897Sopenharmony_ci  - title: Load accumulator from string constant pool
1630b1994897Sopenharmony_ci    description: >
1631b1994897Sopenharmony_ci      Load string specified by id into accumulator. In dynamically-typed language context
1632b1994897Sopenharmony_ci      load string as 'any' value.
1633b1994897Sopenharmony_ci    properties:
1634b1994897Sopenharmony_ci      - string_id
1635b1994897Sopenharmony_ci      - language_type
1636b1994897Sopenharmony_ci      - maybe_dynamic
1637b1994897Sopenharmony_ci    exceptions:
1638b1994897Sopenharmony_ci      - x_oom
1639b1994897Sopenharmony_ci    verification:
1640b1994897Sopenharmony_ci      - constant_string_id
1641b1994897Sopenharmony_ci    pseudo: |
1642b1994897Sopenharmony_ci      acc = load(id)
1643b1994897Sopenharmony_ci    instructions:
1644b1994897Sopenharmony_ci      - sig: lda.str string_id
1645b1994897Sopenharmony_ci        acc: out:ref
1646b1994897Sopenharmony_ci        opcode_idx: [0x3e]
1647b1994897Sopenharmony_ci        format: [op_id_16]
1648b1994897Sopenharmony_ci
1649b1994897Sopenharmony_ci  - title: jump operations
1650b1994897Sopenharmony_ci    description: >
1651b1994897Sopenharmony_ci      Transfer execution to an instruction at offset bytes from the beginning of the current
1652b1994897Sopenharmony_ci      instruction. Offset is sign extended to the size of instruction address.
1653b1994897Sopenharmony_ci    properties:
1654b1994897Sopenharmony_ci      - jump
1655b1994897Sopenharmony_ci    exceptions:
1656b1994897Sopenharmony_ci      - x_none
1657b1994897Sopenharmony_ci    verification:
1658b1994897Sopenharmony_ci      - branch_target
1659b1994897Sopenharmony_ci    pseudo: |
1660b1994897Sopenharmony_ci      pc += imm
1661b1994897Sopenharmony_ci    instructions:
1662b1994897Sopenharmony_ci      - sig: jmp imm:i32
1663b1994897Sopenharmony_ci        acc: none
1664b1994897Sopenharmony_ci        opcode_idx: [0x4d, 0x4e, 0x98]
1665b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16, op_imm_32]
1666b1994897Sopenharmony_ci      - sig: jeqz imm:i32
1667b1994897Sopenharmony_ci        acc: in:top
1668b1994897Sopenharmony_ci        opcode_idx: [0x4f, 0x50, 0x9a]
1669b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16, op_imm_32]
1670b1994897Sopenharmony_ci        properties: [conditional]
1671b1994897Sopenharmony_ci      - sig: jnez imm:i32
1672b1994897Sopenharmony_ci        acc: in:top
1673b1994897Sopenharmony_ci        opcode_idx: [0x51, 0x9b, 0x9c]
1674b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16, op_imm_32]
1675b1994897Sopenharmony_ci        properties: [conditional]
1676b1994897Sopenharmony_ci      - sig: jstricteqz imm:i16
1677b1994897Sopenharmony_ci        acc: in:top
1678b1994897Sopenharmony_ci        opcode_idx: [0x52, 0x9d]
1679b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1680b1994897Sopenharmony_ci        properties: [conditional]
1681b1994897Sopenharmony_ci      - sig: jnstricteqz imm:i16
1682b1994897Sopenharmony_ci        acc: in:top
1683b1994897Sopenharmony_ci        opcode_idx: [0x53, 0x9e]
1684b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1685b1994897Sopenharmony_ci        properties: [conditional]
1686b1994897Sopenharmony_ci      - sig: jeqnull imm:i16
1687b1994897Sopenharmony_ci        acc: in:top
1688b1994897Sopenharmony_ci        opcode_idx: [0x54, 0x9f]
1689b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1690b1994897Sopenharmony_ci        properties: [conditional]
1691b1994897Sopenharmony_ci      - sig: jnenull imm:i16
1692b1994897Sopenharmony_ci        acc: in:top
1693b1994897Sopenharmony_ci        opcode_idx: [0x55, 0xa0]
1694b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1695b1994897Sopenharmony_ci        properties: [conditional]
1696b1994897Sopenharmony_ci      - sig: jstricteqnull imm:i16
1697b1994897Sopenharmony_ci        acc: in:top
1698b1994897Sopenharmony_ci        opcode_idx: [0x56, 0xa1]
1699b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1700b1994897Sopenharmony_ci        properties: [conditional]
1701b1994897Sopenharmony_ci      - sig: jnstricteqnull imm:i16
1702b1994897Sopenharmony_ci        acc: in:top
1703b1994897Sopenharmony_ci        opcode_idx: [0x57, 0xa2]
1704b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1705b1994897Sopenharmony_ci        properties: [conditional]
1706b1994897Sopenharmony_ci      - sig: jequndefined imm:i16
1707b1994897Sopenharmony_ci        acc: in:top
1708b1994897Sopenharmony_ci        opcode_idx: [0x58, 0xa3]
1709b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1710b1994897Sopenharmony_ci        properties: [conditional]
1711b1994897Sopenharmony_ci      - sig: jneundefined imm:i16
1712b1994897Sopenharmony_ci        acc: in:top
1713b1994897Sopenharmony_ci        opcode_idx: [0x59, 0xa4]
1714b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1715b1994897Sopenharmony_ci        properties: [conditional]
1716b1994897Sopenharmony_ci      - sig: jstrictequndefined imm:i16
1717b1994897Sopenharmony_ci        acc: in:top
1718b1994897Sopenharmony_ci        opcode_idx: [0x5a, 0xa5]
1719b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1720b1994897Sopenharmony_ci        properties: [conditional]
1721b1994897Sopenharmony_ci      - sig: jnstrictequndefined imm:i16
1722b1994897Sopenharmony_ci        acc: in:top
1723b1994897Sopenharmony_ci        opcode_idx: [0x5b, 0xa6]
1724b1994897Sopenharmony_ci        format: [op_imm_8, op_imm_16]
1725b1994897Sopenharmony_ci        properties: [conditional]
1726b1994897Sopenharmony_ci      - sig: jeq v:in:top, imm:i16
1727b1994897Sopenharmony_ci        acc: in:top
1728b1994897Sopenharmony_ci        opcode_idx: [0x5c, 0xa7]
1729b1994897Sopenharmony_ci        format: [op_v_8_imm_8, op_v_8_imm_16]
1730b1994897Sopenharmony_ci        properties: [conditional]
1731b1994897Sopenharmony_ci      - sig: jne v:in:top, imm:i16
1732b1994897Sopenharmony_ci        acc: in:top
1733b1994897Sopenharmony_ci        opcode_idx: [0x5d, 0xa8]
1734b1994897Sopenharmony_ci        format: [op_v_8_imm_8, op_v_8_imm_16]
1735b1994897Sopenharmony_ci        properties: [conditional]
1736b1994897Sopenharmony_ci      - sig: jstricteq v:in:top, imm:i16
1737b1994897Sopenharmony_ci        acc: in:top
1738b1994897Sopenharmony_ci        opcode_idx: [0x5e, 0xa9]
1739b1994897Sopenharmony_ci        format: [op_v_8_imm_8, op_v_8_imm_16]
1740b1994897Sopenharmony_ci        properties: [conditional]
1741b1994897Sopenharmony_ci      - sig: jnstricteq v:in:top, imm:i16
1742b1994897Sopenharmony_ci        acc: in:top
1743b1994897Sopenharmony_ci        opcode_idx: [0x5f, 0xaa]
1744b1994897Sopenharmony_ci        format: [op_v_8_imm_8, op_v_8_imm_16]
1745b1994897Sopenharmony_ci        properties: [conditional]
1746b1994897Sopenharmony_ci
1747b1994897Sopenharmony_ci  - title: Dynamic move register-to-register
1748b1994897Sopenharmony_ci    description: >
1749b1994897Sopenharmony_ci      Move 'any' values between registers
1750b1994897Sopenharmony_ci    verification:
1751b1994897Sopenharmony_ci      - valid_in_dynamic_context
1752b1994897Sopenharmony_ci    exceptions:
1753b1994897Sopenharmony_ci      - x_none
1754b1994897Sopenharmony_ci    properties:
1755b1994897Sopenharmony_ci      - dynamic
1756b1994897Sopenharmony_ci    pseudo: |
1757b1994897Sopenharmony_ci      vd = vs
1758b1994897Sopenharmony_ci    instructions:
1759b1994897Sopenharmony_ci      - sig: mov v1:out:any, v2:in:any
1760b1994897Sopenharmony_ci        acc: none
1761b1994897Sopenharmony_ci        opcode_idx: [0x44, 0x45, 0x8f]
1762b1994897Sopenharmony_ci        format: [op_v1_4_v2_4, op_v1_8_v2_8, op_v1_16_v2_16]
1763b1994897Sopenharmony_ci
1764b1994897Sopenharmony_ci  - title: Dynamic load accumulator from register
1765b1994897Sopenharmony_ci    description: >
1766b1994897Sopenharmony_ci      Move 'any' value from register to accumulator
1767b1994897Sopenharmony_ci    verification:
1768b1994897Sopenharmony_ci      - valid_in_dynamic_context
1769b1994897Sopenharmony_ci    exceptions:
1770b1994897Sopenharmony_ci      - x_none
1771b1994897Sopenharmony_ci    properties:
1772b1994897Sopenharmony_ci      - dynamic
1773b1994897Sopenharmony_ci    pseudo: |
1774b1994897Sopenharmony_ci      acc = v
1775b1994897Sopenharmony_ci    instructions:
1776b1994897Sopenharmony_ci      - sig: lda v:in:any
1777b1994897Sopenharmony_ci        acc: out:any
1778b1994897Sopenharmony_ci        opcode_idx: [0x60]
1779b1994897Sopenharmony_ci        format: [op_v_8]
1780b1994897Sopenharmony_ci
1781b1994897Sopenharmony_ci  - title: Dynamic store accumulator
1782b1994897Sopenharmony_ci    description: >
1783b1994897Sopenharmony_ci      Move 'any' value from accumulator to register
1784b1994897Sopenharmony_ci    verification:
1785b1994897Sopenharmony_ci      - valid_in_dynamic_context
1786b1994897Sopenharmony_ci    exceptions:
1787b1994897Sopenharmony_ci      - x_none
1788b1994897Sopenharmony_ci    properties:
1789b1994897Sopenharmony_ci      - dynamic
1790b1994897Sopenharmony_ci    pseudo: |
1791b1994897Sopenharmony_ci      v = acc
1792b1994897Sopenharmony_ci    instructions:
1793b1994897Sopenharmony_ci      - sig: sta v:out:any
1794b1994897Sopenharmony_ci        acc: in:any
1795b1994897Sopenharmony_ci        opcode_idx: [0x61]
1796b1994897Sopenharmony_ci        format: [op_v_8]
1797b1994897Sopenharmony_ci
1798b1994897Sopenharmony_ci  - title: Dynamic load accumulator from immediate
1799b1994897Sopenharmony_ci    description: >
1800b1994897Sopenharmony_ci      Move immediate as 'any' value to accumulator
1801b1994897Sopenharmony_ci    verification:
1802b1994897Sopenharmony_ci      - valid_in_dynamic_context
1803b1994897Sopenharmony_ci    exceptions:
1804b1994897Sopenharmony_ci      - x_none
1805b1994897Sopenharmony_ci    properties:
1806b1994897Sopenharmony_ci      - dynamic
1807b1994897Sopenharmony_ci    pseudo: |
1808b1994897Sopenharmony_ci      acc = imm
1809b1994897Sopenharmony_ci    instructions:
1810b1994897Sopenharmony_ci      - sig: ldai imm:i32
1811b1994897Sopenharmony_ci        acc: out:any
1812b1994897Sopenharmony_ci        opcode_idx: [0x62]
1813b1994897Sopenharmony_ci        format: [op_imm_32]
1814b1994897Sopenharmony_ci      - sig: fldai imm:f64
1815b1994897Sopenharmony_ci        acc: out:any
1816b1994897Sopenharmony_ci        opcode_idx: [0x63]
1817b1994897Sopenharmony_ci        format: [op_imm_64]
1818b1994897Sopenharmony_ci        properties: [float, dynamic]
1819b1994897Sopenharmony_ci
1820b1994897Sopenharmony_ci  - title: dynamic return
1821b1994897Sopenharmony_ci    description: dynamic return from method
1822b1994897Sopenharmony_ci    verification:
1823b1994897Sopenharmony_ci      - valid_in_dynamic_context
1824b1994897Sopenharmony_ci    exceptions:
1825b1994897Sopenharmony_ci      - x_none
1826b1994897Sopenharmony_ci    properties:
1827b1994897Sopenharmony_ci      - dynamic
1828b1994897Sopenharmony_ci      - return
1829b1994897Sopenharmony_ci    namespace: ecmascript
1830b1994897Sopenharmony_ci    pseudo: |
1831b1994897Sopenharmony_ci      return acc
1832b1994897Sopenharmony_ci    instructions:
1833b1994897Sopenharmony_ci      - sig: return
1834b1994897Sopenharmony_ci        acc: in:any
1835b1994897Sopenharmony_ci        opcode_idx: [0x64]
1836b1994897Sopenharmony_ci        format: [op_none]
1837b1994897Sopenharmony_ci        properties: [return]
1838b1994897Sopenharmony_ci      - sig: returnundefined
1839b1994897Sopenharmony_ci        acc: none
1840b1994897Sopenharmony_ci        opcode_idx: [0x65]
1841b1994897Sopenharmony_ci        properties: [return]
1842b1994897Sopenharmony_ci        format: [op_none]
1843b1994897Sopenharmony_ci
1844b1994897Sopenharmony_ci  - title: no operation
1845b1994897Sopenharmony_ci    description: Perform an operation without behavior
1846b1994897Sopenharmony_ci    exceptions:
1847b1994897Sopenharmony_ci      - x_none
1848b1994897Sopenharmony_ci    verification:
1849b1994897Sopenharmony_ci      - none
1850b1994897Sopenharmony_ci    pseudo: |
1851b1994897Sopenharmony_ci      skip
1852b1994897Sopenharmony_ci    instructions:
1853b1994897Sopenharmony_ci      - sig: nop
1854b1994897Sopenharmony_ci        acc: none
1855b1994897Sopenharmony_ci        opcode_idx: [0xd5]
1856b1994897Sopenharmony_ci        format: [op_none]
1857