# Copyright (c) 2021 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. prefixes: - name: ecma description: Extension for ecma support. groups: - title: Ecma extension instructions description: Ecma extension instructions with prefix ecma verification: - none exceptions: - x_none properties: - acc_read - acc_write namespace: ecmascript pseudo: | acc = ecma_op(acc, operand_0, ..., operands_n) semantics: | skip instructions: - sig: ecma.ldnan acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldinfinity acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldglobalthis acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldundefined acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldnull acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldsymbol acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldglobal acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldtrue acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldfalse acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.throwdyn acc: in:top prefix: ecma format: [pref_op_none] - sig: ecma.typeofdyn acc: inout:top prefix: ecma format: [pref_op_none] - sig: ecma.ldlexenvdyn acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.poplexenvdyn acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.getunmappedargs acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.getpropiterator acc: inout:top prefix: ecma format: [pref_op_none] - sig: ecma.asyncfunctionenter acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.ldhole acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.returnundefined acc: none prefix: ecma properties: [return] format: [pref_op_none] - sig: ecma.createemptyobject acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.createemptyarray acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.getiterator acc: inout:top prefix: ecma format: [pref_op_none] - sig: ecma.throwthrownotexists acc: none prefix: ecma format: [pref_op_none] - sig: ecma.throwpatternnoncoercible acc: none prefix: ecma format: [pref_op_none] - sig: ecma.ldhomeobject acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.throwdeletesuperproperty acc: none prefix: ecma format: [pref_op_none] - sig: ecma.debugger acc: none prefix: ecma format: [pref_op_none] - sig: ecma.add2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.sub2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.mul2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.div2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.mod2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.eqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.noteqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.lessdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.lesseqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.greaterdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.greatereqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.shl2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.shr2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.ashr2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.and2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.or2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.xor2dyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.tonumber v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.negdyn v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.notdyn v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.incdyn v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.decdyn v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.expdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.isindyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.instanceofdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.strictnoteqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.stricteqdyn v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.resumegenerator v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.getresumemode v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.creategeneratorobj v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.throwconstassignment v:in:top acc: none prefix: ecma format: [pref_op_v_8] - sig: ecma.gettemplateobject v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.getnextpropname v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.callarg0dyn v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.throwifnotobject v:in:top acc: none prefix: ecma format: [pref_op_v_8] - sig: ecma.iternext v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.closeiterator v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.copymodule v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.supercallspread v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.delobjprop v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.newobjspreaddyn v1:in:top, v2:in:top acc: inout:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.createiterresultobj v1:in:top, v2:in:top acc: inout:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.suspendgenerator v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.asyncfunctionawaituncaught v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.throwundefinedifhole v1:in:top, v2:in:top acc: none prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.callarg1dyn v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.copydataproperties v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.starrayspread v1:in:top, v2:in:top acc: inout:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.getiteratornext v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.setobjectwithproto v1:in:top, v2:in:top acc: none prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.ldobjbyvalue v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.stobjbyvalue v1:in:top, v2:in:top acc: in:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.stownbyvalue v1:in:top, v2:in:top acc: in:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.ldsuperbyvalue v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.stsuperbyvalue v1:in:top, v2:in:top acc: in:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.ldobjbyindex v:in:top, imm acc: out:top prefix: ecma format: [pref_op_v_8_imm_32] - sig: ecma.stobjbyindex v:in:top, imm acc: in:top prefix: ecma format: [pref_op_v_8_imm_32] - sig: ecma.stownbyindex v:in:top, imm acc: in:top prefix: ecma format: [pref_op_v_8_imm_32] - sig: ecma.callspreaddyn v1:in:top, v2:in:top, v3:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8] - sig: ecma.asyncfunctionresolve v1:in:top, v2:in:top, v3:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8] - sig: ecma.asyncfunctionreject v1:in:top, v2:in:top, v3:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8] - sig: ecma.callargs2dyn v1:in:top, v2:in:top, v3:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8] - sig: ecma.callargs3dyn v1:in:top, v2:in:top, v3:in:top, v4:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8_v4_8] - sig: ecma.definegettersetterbyvalue v1:in:top, v2:in:top, v3:in:top, v4:in:top acc: inout:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8_v4_8] - sig: ecma.newobjdynrange imm, v:in:top acc: out:top prefix: ecma format: [pref_op_imm_16_v_8] - sig: ecma.callirangedyn imm, v:in:top acc: out:top prefix: ecma format: [pref_op_imm_16_v_8] - sig: ecma.callithisrangedyn imm, v:in:top acc: out:top prefix: ecma format: [pref_op_imm_16_v_8] - sig: ecma.supercall imm, v:in:top acc: inout:top prefix: ecma format: [pref_op_imm_16_v_8] - sig: ecma.createobjectwithexcludedkeys imm, v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_imm_16_v1_8_v2_8] - sig: ecma.definefuncdyn method_id, imm, v:in:top acc: out:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.definencfuncdyn method_id, imm, v:in:top acc: inout:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.definegeneratorfunc method_id, imm, v:in:top acc: out:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.defineasyncfunc method_id, imm, v:in:top acc: out:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.definemethod method_id, imm, v:in:top acc: inout:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.newlexenvdyn imm acc: out:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.copyrestargs imm acc: out:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.createarraywithbuffer imm acc: out:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.createobjecthavingmethod imm acc: inout:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.throwifsupernotcorrectcall imm acc: in:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.createobjectwithbuffer imm acc: out:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.ldlexvardyn imm1, imm2 acc: out:top prefix: ecma format: [pref_op_imm1_4_imm2_4] - sig: ecma.ldlexvardyn imm1, imm2 acc: out:top prefix: ecma format: [pref_op_imm1_8_imm2_8] - sig: ecma.ldlexvardyn imm1, imm2 acc: out:top prefix: ecma format: [pref_op_imm1_16_imm2_16] - sig: ecma.stlexvardyn imm1, imm2, v:in:top acc: out:top prefix: ecma format: [pref_op_imm1_4_imm2_4_v_8] - sig: ecma.stlexvardyn imm1, imm2, v:in:top acc: out:top prefix: ecma format: [pref_op_imm1_8_imm2_8_v_8] - sig: ecma.stlexvardyn imm1, imm2, v:in:top acc: out:top prefix: ecma format: [pref_op_imm1_16_imm2_16_v_8] - sig: ecma.defineclasswithbuffer method_id, imm1, imm2, v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_id_16_imm1_16_imm2_16_v1_8_v2_8] properties: [method_id] - sig: ecma.getmodulenamespace string_id acc: out:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.stmodulevar string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.tryldglobalbyname string_id acc: out:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.trystglobalbyname string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.ldglobalvar string_id acc: out:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.stglobalvar string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.ldobjbyname string_id, v:in:top acc: out:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.stobjbyname string_id, v:in:top acc: in:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.stownbyname string_id, v:in:top acc: in:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.ldsuperbyname string_id, v:in:top acc: out:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.stsuperbyname string_id, v:in:top acc: in:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.ldmodulevar string_id, imm acc: out:top prefix: ecma format: [pref_op_id_32_imm_8] properties: [string_id] - sig: ecma.createregexpwithliteral string_id, imm acc: out:top prefix: ecma format: [pref_op_id_32_imm_8] properties: [string_id] - sig: ecma.istrue acc: inout:top prefix: ecma format: [pref_op_none] - sig: ecma.isfalse acc: inout:top prefix: ecma format: [pref_op_none] - sig: ecma.stconsttoglobalrecord string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.stlettoglobalrecord string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.stclasstoglobalrecord string_id acc: in:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.stownbyvaluewithnameset v1:in:top, v2:in:top acc: in:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.stownbynamewithnameset string_id, v:in:top acc: in:top prefix: ecma format: [pref_op_id_32_v_8] properties: [string_id] - sig: ecma.ldfunction acc: out:top prefix: ecma format: [pref_op_none] - sig: ecma.newlexenvwithnamedyn imm1, imm2 acc: out:top prefix: ecma format: [pref_op_imm1_16_imm2_16] - sig: ecma.ldbigint string_id acc: out:top prefix: ecma format: [pref_op_id_32] properties: [string_id] - sig: ecma.tonumeric v:in:top acc: inout:top prefix: ecma format: [pref_op_v_8] - sig: ecma.createasyncgeneratorobj v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.asyncgeneratorresolve v1:in:top, v2:in:top, v3:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8_v3_8] - sig: ecma.defineasyncgeneratorfunc method_id, imm, v:in:top acc: out:top prefix: ecma format: [pref_op_id_16_imm_16_v_8] properties: [method_id] - sig: ecma.dynamicimport v:in:top acc: out:top prefix: ecma format: [pref_op_v_8] - sig: ecma.ldpatchvar imm acc: out:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.stpatchvar imm acc: in:top prefix: ecma format: [pref_op_imm_16] - sig: ecma.asyncgeneratorreject v1:in:top, v2:in:top acc: out:top prefix: ecma format: [pref_op_v1_8_v2_8] - sig: ecma.notifyconcurrentresult acc: in:top prefix: ecma format: [pref_op_none]