• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14prefixes:
15  - name: ecma
16    description: Extension for ecma support.
17
18groups:
19  - title: Ecma extension instructions
20    description: Ecma extension instructions with prefix ecma
21    verification:
22      - none
23    exceptions:
24      - x_none
25    properties:
26      - acc_read
27      - acc_write
28    namespace: ecmascript
29    pseudo: |
30      acc = ecma_op(acc, operand_0, ..., operands_n)
31    semantics: |
32      skip
33    instructions:
34      - sig: ecma.ldnan
35        acc: out:top
36        prefix: ecma
37        format: [pref_op_none]
38      - sig: ecma.ldinfinity
39        acc: out:top
40        prefix: ecma
41        format: [pref_op_none]
42      - sig: ecma.ldglobalthis
43        acc: out:top
44        prefix: ecma
45        format: [pref_op_none]
46      - sig: ecma.ldundefined
47        acc: out:top
48        prefix: ecma
49        format: [pref_op_none]
50      - sig: ecma.ldnull
51        acc: out:top
52        prefix: ecma
53        format: [pref_op_none]
54      - sig: ecma.ldsymbol
55        acc: out:top
56        prefix: ecma
57        format: [pref_op_none]
58      - sig: ecma.ldglobal
59        acc: out:top
60        prefix: ecma
61        format: [pref_op_none]
62      - sig: ecma.ldtrue
63        acc: out:top
64        prefix: ecma
65        format: [pref_op_none]
66      - sig: ecma.ldfalse
67        acc: out:top
68        prefix: ecma
69        format: [pref_op_none]
70      - sig: ecma.throwdyn
71        acc: in:top
72        prefix: ecma
73        format: [pref_op_none]
74      - sig: ecma.typeofdyn
75        acc: inout:top
76        prefix: ecma
77        format: [pref_op_none]
78      - sig: ecma.ldlexenvdyn
79        acc: out:top
80        prefix: ecma
81        format: [pref_op_none]
82      - sig: ecma.poplexenvdyn
83        acc: out:top
84        prefix: ecma
85        format: [pref_op_none]
86      - sig: ecma.getunmappedargs
87        acc: out:top
88        prefix: ecma
89        format: [pref_op_none]
90      - sig: ecma.getpropiterator
91        acc: inout:top
92        prefix: ecma
93        format: [pref_op_none]
94      - sig: ecma.asyncfunctionenter
95        acc: out:top
96        prefix: ecma
97        format: [pref_op_none]
98      - sig: ecma.ldhole
99        acc: out:top
100        prefix: ecma
101        format: [pref_op_none]
102      - sig: ecma.returnundefined
103        acc: none
104        prefix: ecma
105        properties: [return]
106        format: [pref_op_none]
107      - sig: ecma.createemptyobject
108        acc: out:top
109        prefix: ecma
110        format: [pref_op_none]
111      - sig: ecma.createemptyarray
112        acc: out:top
113        prefix: ecma
114        format: [pref_op_none]
115      - sig: ecma.getiterator
116        acc: inout:top
117        prefix: ecma
118        format: [pref_op_none]
119      - sig: ecma.throwthrownotexists
120        acc: none
121        prefix: ecma
122        format: [pref_op_none]
123      - sig: ecma.throwpatternnoncoercible
124        acc: none
125        prefix: ecma
126        format: [pref_op_none]
127      - sig: ecma.ldhomeobject
128        acc: out:top
129        prefix: ecma
130        format: [pref_op_none]
131      - sig: ecma.throwdeletesuperproperty
132        acc: none
133        prefix: ecma
134        format: [pref_op_none]
135      - sig: ecma.debugger
136        acc: none
137        prefix: ecma
138        format: [pref_op_none]
139      - sig: ecma.add2dyn v:in:top
140        acc: inout:top
141        prefix: ecma
142        format: [pref_op_v_8]
143      - sig: ecma.sub2dyn v:in:top
144        acc: inout:top
145        prefix: ecma
146        format: [pref_op_v_8]
147      - sig: ecma.mul2dyn v:in:top
148        acc: inout:top
149        prefix: ecma
150        format: [pref_op_v_8]
151      - sig: ecma.div2dyn v:in:top
152        acc: inout:top
153        prefix: ecma
154        format: [pref_op_v_8]
155      - sig: ecma.mod2dyn v:in:top
156        acc: inout:top
157        prefix: ecma
158        format: [pref_op_v_8]
159      - sig: ecma.eqdyn v:in:top
160        acc: inout:top
161        prefix: ecma
162        format: [pref_op_v_8]
163      - sig: ecma.noteqdyn v:in:top
164        acc: inout:top
165        prefix: ecma
166        format: [pref_op_v_8]
167      - sig: ecma.lessdyn v:in:top
168        acc: inout:top
169        prefix: ecma
170        format: [pref_op_v_8]
171      - sig: ecma.lesseqdyn v:in:top
172        acc: inout:top
173        prefix: ecma
174        format: [pref_op_v_8]
175      - sig: ecma.greaterdyn v:in:top
176        acc: inout:top
177        prefix: ecma
178        format: [pref_op_v_8]
179      - sig: ecma.greatereqdyn v:in:top
180        acc: inout:top
181        prefix: ecma
182        format: [pref_op_v_8]
183      - sig: ecma.shl2dyn v:in:top
184        acc: inout:top
185        prefix: ecma
186        format: [pref_op_v_8]
187      - sig: ecma.shr2dyn v:in:top
188        acc: inout:top
189        prefix: ecma
190        format: [pref_op_v_8]
191      - sig: ecma.ashr2dyn v:in:top
192        acc: inout:top
193        prefix: ecma
194        format: [pref_op_v_8]
195      - sig: ecma.and2dyn v:in:top
196        acc: inout:top
197        prefix: ecma
198        format: [pref_op_v_8]
199      - sig: ecma.or2dyn v:in:top
200        acc: inout:top
201        prefix: ecma
202        format: [pref_op_v_8]
203      - sig: ecma.xor2dyn v:in:top
204        acc: inout:top
205        prefix: ecma
206        format: [pref_op_v_8]
207      - sig: ecma.tonumber v:in:top
208        acc: inout:top
209        prefix: ecma
210        format: [pref_op_v_8]
211      - sig: ecma.negdyn v:in:top
212        acc: out:top
213        prefix: ecma
214        format: [pref_op_v_8]
215      - sig: ecma.notdyn v:in:top
216        acc: out:top
217        prefix: ecma
218        format: [pref_op_v_8]
219      - sig: ecma.incdyn v:in:top
220        acc: out:top
221        prefix: ecma
222        format: [pref_op_v_8]
223      - sig: ecma.decdyn v:in:top
224        acc: out:top
225        prefix: ecma
226        format: [pref_op_v_8]
227      - sig: ecma.expdyn v:in:top
228        acc: inout:top
229        prefix: ecma
230        format: [pref_op_v_8]
231      - sig: ecma.isindyn v:in:top
232        acc: inout:top
233        prefix: ecma
234        format: [pref_op_v_8]
235      - sig: ecma.instanceofdyn v:in:top
236        acc: inout:top
237        prefix: ecma
238        format: [pref_op_v_8]
239      - sig: ecma.strictnoteqdyn v:in:top
240        acc: inout:top
241        prefix: ecma
242        format: [pref_op_v_8]
243      - sig: ecma.stricteqdyn v:in:top
244        acc: inout:top
245        prefix: ecma
246        format: [pref_op_v_8]
247      - sig: ecma.resumegenerator v:in:top
248        acc: out:top
249        prefix: ecma
250        format: [pref_op_v_8]
251      - sig: ecma.getresumemode v:in:top
252        acc: out:top
253        prefix: ecma
254        format: [pref_op_v_8]
255      - sig: ecma.creategeneratorobj v:in:top
256        acc: out:top
257        prefix: ecma
258        format: [pref_op_v_8]
259      - sig: ecma.throwconstassignment v:in:top
260        acc: none
261        prefix: ecma
262        format: [pref_op_v_8]
263      - sig: ecma.gettemplateobject v:in:top
264        acc: out:top
265        prefix: ecma
266        format: [pref_op_v_8]
267      - sig: ecma.getnextpropname v:in:top
268        acc: out:top
269        prefix: ecma
270        format: [pref_op_v_8]
271      - sig: ecma.callarg0dyn v:in:top
272        acc: out:top
273        prefix: ecma
274        format: [pref_op_v_8]
275      - sig: ecma.throwifnotobject v:in:top
276        acc: none
277        prefix: ecma
278        format: [pref_op_v_8]
279      - sig: ecma.iternext v:in:top
280        acc: out:top
281        prefix: ecma
282        format: [pref_op_v_8]
283      - sig: ecma.closeiterator v:in:top
284        acc: out:top
285        prefix: ecma
286        format: [pref_op_v_8]
287      - sig: ecma.copymodule v:in:top
288        acc: out:top
289        prefix: ecma
290        format: [pref_op_v_8]
291      - sig: ecma.supercallspread v:in:top
292        acc: inout:top
293        prefix: ecma
294        format: [pref_op_v_8]
295      - sig: ecma.delobjprop v1:in:top, v2:in:top
296        acc: out:top
297        prefix: ecma
298        format: [pref_op_v1_8_v2_8]
299      - sig: ecma.newobjspreaddyn v1:in:top, v2:in:top
300        acc: inout:top
301        prefix: ecma
302        format: [pref_op_v1_8_v2_8]
303      - sig: ecma.createiterresultobj v1:in:top, v2:in:top
304        acc: inout:top
305        prefix: ecma
306        format: [pref_op_v1_8_v2_8]
307      - sig: ecma.suspendgenerator v1:in:top, v2:in:top
308        acc: out:top
309        prefix: ecma
310        format: [pref_op_v1_8_v2_8]
311      - sig: ecma.asyncfunctionawaituncaught v1:in:top, v2:in:top
312        acc: out:top
313        prefix: ecma
314        format: [pref_op_v1_8_v2_8]
315      - sig: ecma.throwundefinedifhole v1:in:top, v2:in:top
316        acc: none
317        prefix: ecma
318        format: [pref_op_v1_8_v2_8]
319      - sig: ecma.callarg1dyn v1:in:top, v2:in:top
320        acc: out:top
321        prefix: ecma
322        format: [pref_op_v1_8_v2_8]
323      - sig: ecma.copydataproperties v1:in:top, v2:in:top
324        acc: out:top
325        prefix: ecma
326        format: [pref_op_v1_8_v2_8]
327      - sig: ecma.starrayspread v1:in:top, v2:in:top
328        acc: inout:top
329        prefix: ecma
330        format: [pref_op_v1_8_v2_8]
331      - sig: ecma.getiteratornext v1:in:top, v2:in:top
332        acc: out:top
333        prefix: ecma
334        format: [pref_op_v1_8_v2_8]
335      - sig: ecma.setobjectwithproto v1:in:top, v2:in:top
336        acc: none
337        prefix: ecma
338        format: [pref_op_v1_8_v2_8]
339      - sig: ecma.ldobjbyvalue v1:in:top, v2:in:top
340        acc: out:top
341        prefix: ecma
342        format: [pref_op_v1_8_v2_8]
343      - sig: ecma.stobjbyvalue v1:in:top, v2:in:top
344        acc: in:top
345        prefix: ecma
346        format: [pref_op_v1_8_v2_8]
347      - sig: ecma.stownbyvalue v1:in:top, v2:in:top
348        acc: in:top
349        prefix: ecma
350        format: [pref_op_v1_8_v2_8]
351      - sig: ecma.ldsuperbyvalue v1:in:top, v2:in:top
352        acc: out:top
353        prefix: ecma
354        format: [pref_op_v1_8_v2_8]
355      - sig: ecma.stsuperbyvalue v1:in:top, v2:in:top
356        acc: in:top
357        prefix: ecma
358        format: [pref_op_v1_8_v2_8]
359      - sig: ecma.ldobjbyindex v:in:top, imm
360        acc: out:top
361        prefix: ecma
362        format: [pref_op_v_8_imm_32]
363      - sig: ecma.stobjbyindex v:in:top, imm
364        acc: in:top
365        prefix: ecma
366        format: [pref_op_v_8_imm_32]
367      - sig: ecma.stownbyindex v:in:top, imm
368        acc: in:top
369        prefix: ecma
370        format: [pref_op_v_8_imm_32]
371      - sig: ecma.callspreaddyn v1:in:top, v2:in:top, v3:in:top
372        acc: out:top
373        prefix: ecma
374        format: [pref_op_v1_8_v2_8_v3_8]
375      - sig: ecma.asyncfunctionresolve v1:in:top, v2:in:top, v3:in:top
376        acc: out:top
377        prefix: ecma
378        format: [pref_op_v1_8_v2_8_v3_8]
379      - sig: ecma.asyncfunctionreject v1:in:top, v2:in:top, v3:in:top
380        acc: out:top
381        prefix: ecma
382        format: [pref_op_v1_8_v2_8_v3_8]
383      - sig: ecma.callargs2dyn v1:in:top, v2:in:top, v3:in:top
384        acc: out:top
385        prefix: ecma
386        format: [pref_op_v1_8_v2_8_v3_8]
387      - sig: ecma.callargs3dyn v1:in:top, v2:in:top, v3:in:top, v4:in:top
388        acc: out:top
389        prefix: ecma
390        format: [pref_op_v1_8_v2_8_v3_8_v4_8]
391      - sig: ecma.definegettersetterbyvalue v1:in:top, v2:in:top, v3:in:top, v4:in:top
392        acc: inout:top
393        prefix: ecma
394        format: [pref_op_v1_8_v2_8_v3_8_v4_8]
395      - sig: ecma.newobjdynrange imm, v:in:top
396        acc: out:top
397        prefix: ecma
398        format: [pref_op_imm_16_v_8]
399      - sig: ecma.callirangedyn imm, v:in:top
400        acc: out:top
401        prefix: ecma
402        format: [pref_op_imm_16_v_8]
403      - sig: ecma.callithisrangedyn imm, v:in:top
404        acc: out:top
405        prefix: ecma
406        format: [pref_op_imm_16_v_8]
407      - sig: ecma.supercall imm, v:in:top
408        acc: inout:top
409        prefix: ecma
410        format: [pref_op_imm_16_v_8]
411      - sig: ecma.createobjectwithexcludedkeys imm, v1:in:top, v2:in:top
412        acc: out:top
413        prefix: ecma
414        format: [pref_op_imm_16_v1_8_v2_8]
415      - sig: ecma.definefuncdyn method_id, imm, v:in:top
416        acc: out:top
417        prefix: ecma
418        format: [pref_op_id_16_imm_16_v_8]
419        properties: [method_id]
420      - sig: ecma.definencfuncdyn method_id, imm, v:in:top
421        acc: inout:top
422        prefix: ecma
423        format: [pref_op_id_16_imm_16_v_8]
424        properties: [method_id]
425      - sig: ecma.definegeneratorfunc method_id, imm, v:in:top
426        acc: out:top
427        prefix: ecma
428        format: [pref_op_id_16_imm_16_v_8]
429        properties: [method_id]
430      - sig: ecma.defineasyncfunc method_id, imm, v:in:top
431        acc: out:top
432        prefix: ecma
433        format: [pref_op_id_16_imm_16_v_8]
434        properties: [method_id]
435      - sig: ecma.definemethod method_id, imm, v:in:top
436        acc: inout:top
437        prefix: ecma
438        format: [pref_op_id_16_imm_16_v_8]
439        properties: [method_id]
440      - sig: ecma.newlexenvdyn imm
441        acc: out:top
442        prefix: ecma
443        format: [pref_op_imm_16]
444      - sig: ecma.copyrestargs imm
445        acc: out:top
446        prefix: ecma
447        format: [pref_op_imm_16]
448      - sig: ecma.createarraywithbuffer imm
449        acc: out:top
450        prefix: ecma
451        format: [pref_op_imm_16]
452      - sig: ecma.createobjecthavingmethod imm
453        acc: inout:top
454        prefix: ecma
455        format: [pref_op_imm_16]
456      - sig: ecma.throwifsupernotcorrectcall imm
457        acc: in:top
458        prefix: ecma
459        format: [pref_op_imm_16]
460      - sig: ecma.createobjectwithbuffer imm
461        acc: out:top
462        prefix: ecma
463        format: [pref_op_imm_16]
464      - sig: ecma.ldlexvardyn imm1, imm2
465        acc: out:top
466        prefix: ecma
467        format: [pref_op_imm1_4_imm2_4]
468      - sig: ecma.ldlexvardyn imm1, imm2
469        acc: out:top
470        prefix: ecma
471        format: [pref_op_imm1_8_imm2_8]
472      - sig: ecma.ldlexvardyn imm1, imm2
473        acc: out:top
474        prefix: ecma
475        format: [pref_op_imm1_16_imm2_16]
476      - sig: ecma.stlexvardyn imm1, imm2, v:in:top
477        acc: out:top
478        prefix: ecma
479        format: [pref_op_imm1_4_imm2_4_v_8]
480      - sig: ecma.stlexvardyn imm1, imm2, v:in:top
481        acc: out:top
482        prefix: ecma
483        format: [pref_op_imm1_8_imm2_8_v_8]
484      - sig: ecma.stlexvardyn imm1, imm2, v:in:top
485        acc: out:top
486        prefix: ecma
487        format: [pref_op_imm1_16_imm2_16_v_8]
488      - sig: ecma.defineclasswithbuffer method_id, imm1, imm2, v1:in:top, v2:in:top
489        acc: out:top
490        prefix: ecma
491        format: [pref_op_id_16_imm1_16_imm2_16_v1_8_v2_8]
492        properties: [method_id]
493      - sig: ecma.getmodulenamespace string_id
494        acc: out:top
495        prefix: ecma
496        format: [pref_op_id_32]
497        properties: [string_id]
498      - sig: ecma.stmodulevar string_id
499        acc: in:top
500        prefix: ecma
501        format: [pref_op_id_32]
502        properties: [string_id]
503      - sig: ecma.tryldglobalbyname string_id
504        acc: out:top
505        prefix: ecma
506        format: [pref_op_id_32]
507        properties: [string_id]
508      - sig: ecma.trystglobalbyname string_id
509        acc: in:top
510        prefix: ecma
511        format: [pref_op_id_32]
512        properties: [string_id]
513      - sig: ecma.ldglobalvar string_id
514        acc: out:top
515        prefix: ecma
516        format: [pref_op_id_32]
517        properties: [string_id]
518      - sig: ecma.stglobalvar string_id
519        acc: in:top
520        prefix: ecma
521        format: [pref_op_id_32]
522        properties: [string_id]
523      - sig: ecma.ldobjbyname string_id, v:in:top
524        acc: out:top
525        prefix: ecma
526        format: [pref_op_id_32_v_8]
527        properties: [string_id]
528      - sig: ecma.stobjbyname string_id, v:in:top
529        acc: in:top
530        prefix: ecma
531        format: [pref_op_id_32_v_8]
532        properties: [string_id]
533      - sig: ecma.stownbyname string_id, v:in:top
534        acc: in:top
535        prefix: ecma
536        format: [pref_op_id_32_v_8]
537        properties: [string_id]
538      - sig: ecma.ldsuperbyname string_id, v:in:top
539        acc: out:top
540        prefix: ecma
541        format: [pref_op_id_32_v_8]
542        properties: [string_id]
543      - sig: ecma.stsuperbyname string_id, v:in:top
544        acc: in:top
545        prefix: ecma
546        format: [pref_op_id_32_v_8]
547        properties: [string_id]
548      - sig: ecma.ldmodulevar string_id, imm
549        acc: out:top
550        prefix: ecma
551        format: [pref_op_id_32_imm_8]
552        properties: [string_id]
553      - sig: ecma.createregexpwithliteral string_id, imm
554        acc: out:top
555        prefix: ecma
556        format: [pref_op_id_32_imm_8]
557        properties: [string_id]
558      - sig: ecma.istrue
559        acc: inout:top
560        prefix: ecma
561        format: [pref_op_none]
562      - sig: ecma.isfalse
563        acc: inout:top
564        prefix: ecma
565        format: [pref_op_none]
566      - sig: ecma.stconsttoglobalrecord string_id
567        acc: in:top
568        prefix: ecma
569        format: [pref_op_id_32]
570        properties: [string_id]
571      - sig: ecma.stlettoglobalrecord string_id
572        acc: in:top
573        prefix: ecma
574        format: [pref_op_id_32]
575        properties: [string_id]
576      - sig: ecma.stclasstoglobalrecord string_id
577        acc: in:top
578        prefix: ecma
579        format: [pref_op_id_32]
580        properties: [string_id]
581      - sig: ecma.stownbyvaluewithnameset v1:in:top, v2:in:top
582        acc: in:top
583        prefix: ecma
584        format: [pref_op_v1_8_v2_8]
585      - sig: ecma.stownbynamewithnameset string_id, v:in:top
586        acc: in:top
587        prefix: ecma
588        format: [pref_op_id_32_v_8]
589        properties: [string_id]
590      - sig: ecma.ldfunction
591        acc: out:top
592        prefix: ecma
593        format: [pref_op_none]
594      - sig: ecma.newlexenvwithnamedyn imm1, imm2
595        acc: out:top
596        prefix: ecma
597        format: [pref_op_imm1_16_imm2_16]
598      - sig: ecma.ldbigint string_id
599        acc: out:top
600        prefix: ecma
601        format: [pref_op_id_32]
602        properties: [string_id]
603      - sig: ecma.tonumeric v:in:top
604        acc: inout:top
605        prefix: ecma
606        format: [pref_op_v_8]
607      - sig: ecma.createasyncgeneratorobj v:in:top
608        acc: out:top
609        prefix: ecma
610        format: [pref_op_v_8]
611      - sig: ecma.asyncgeneratorresolve v1:in:top, v2:in:top, v3:in:top
612        acc: out:top
613        prefix: ecma
614        format: [pref_op_v1_8_v2_8_v3_8]
615      - sig: ecma.defineasyncgeneratorfunc method_id, imm, v:in:top
616        acc: out:top
617        prefix: ecma
618        format: [pref_op_id_16_imm_16_v_8]
619        properties: [method_id]
620      - sig: ecma.dynamicimport v:in:top
621        acc: out:top
622        prefix: ecma
623        format: [pref_op_v_8]
624      - sig: ecma.ldpatchvar imm
625        acc: out:top
626        prefix: ecma
627        format: [pref_op_imm_16]
628      - sig: ecma.stpatchvar imm
629        acc: in:top
630        prefix: ecma
631        format: [pref_op_imm_16]
632      - sig: ecma.asyncgeneratorreject v1:in:top, v2:in:top
633        acc: out:top
634        prefix: ecma
635        format: [pref_op_v1_8_v2_8]
636      - sig: ecma.notifyconcurrentresult
637        acc: in:top
638        prefix: ecma
639        format: [pref_op_none]
640