• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 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
14definitions:
15  - name: PandaAssembly
16    template: |
17      .language PandaAssembly
18      .record R {}
19      .record I <panda.interface> {}
20      .record Q <panda.implements=I> {}
21      .record E <panda.extends=Q> {}
22      .record A <panda.annotation, panda.annotation.type=runtime> {}
23      .record panda.String <external>
24      .record panda.Class <external>
25      .record panda.Object <external>
26  - name: pandasm
27    template: |
28      .record R {}
29      .record panda.String <external>
30      .record panda.Class <external>
31      .record panda.Object <external>
32
33tests:
34  - file-name: "lda.type"
35    isa:
36      title: Load accumulator from type constant pool
37      description: Load type specified by id into accumulator.
38      verification:
39        - type_id_any_object
40      instructions:
41        - sig: lda.type type_id
42          acc: out:ref
43          format: [op_id_16]
44    commands:
45
46
47      - file-name: "invalid_type"
48        isa:
49          description: Load type specified by id into accumulator.
50        runner-options: [compile-failure]
51        description: Check 'lda.type' instruction with invalid type id.
52        header-template: []
53        code-template: |
54          .record A {
55            i32   f32
56            A     fA
57            i32[] f32Array
58            A[]   fAArray
59          }
60          .function void aFunc(A a0) {
61            return.void
62          }
63          .function void bFunc() <static> {
64            return.void
65          }
66          .function i32 main() {
67          begin:
68              lda.type %s
69          end:
70        check-type: exit-positive
71        cases:
72          - values:
73            - ""
74          - values:
75            - "label:"
76          - values:
77            - "begin"
78          - values:
79            - "{}"
80          - values:
81            - "}"
82          - values:
83            - "# comment"
84          - values:
85            - "null"
86          - values:
87            - "0"
88          - values:
89            - "v0"
90          - values:
91            - "i32"
92          - values:
93            - "\"A\""
94          - values:
95            - "A.f32"
96          - values:
97            - "A.fA"
98          - values:
99            - "A.f32Array"
100          - values:
101            - "A.fAArray"
102          - values:
103            - "aFunc"
104          - values:
105            - "A.aFunc"
106          - values:
107            - "bFunc"
108          - values:
109            - "main"
110          - values:
111            - "panda"
112          - values:
113            - "Object"
114          - values:
115            - "Object[]"
116            bugid: ['3532']
117          - values:
118            - "XYZ[][]"
119            bugid: ['3532']
120
121
122      - file-name: "valid_type_p"
123        isa:
124          description: Load type specified by id into accumulator.
125        runner-options: ['verifier-only', 'verifier-config']
126        tags: [verifier]
127        description: Check 'lda.type' instruction with valid type id in PandaAssembly context.
128        header-template: [pandasm, main]
129        code-template: |
130          #
131              lda.type %s
132        check-type: exit-positive
133        cases:
134          - values:
135            - R
136          - values:
137            - panda.Class
138          - values:
139            - panda.Object
140          - values:
141            - panda.String
142            tags: ['tsan']
143          - values:
144            - R[]
145          - values:
146            - panda.Class[]
147          - values:
148            - panda.Object[]
149          - values:
150            - panda.String[]
151          - values:
152            - i32[]
153          - values:
154            - u32[][]
155          - values:
156            - i64[][][]
157          - values:
158            - u64[][][][]
159
160
161      - file-name: "valid_type_j"
162        isa:
163          description: Load type specified by id into accumulator.
164        runner-options: [verifier-only, use-pa, verifier-config]
165        tags: [verifier, pa-verifier]
166        bugid: ['3293']
167        description: Check 'lda.type' instruction with valid type id in PandaAssembly context.
168        header-template: [PandaAssembly, main]
169        code-template: |
170          #
171              lda.type %s
172        check-type: exit-positive
173        cases:
174          - values:
175            - R
176          - values:
177            - I
178          - values:
179            - Q
180          - values:
181            - E
182          - values:
183            - A
184          - values:
185            - panda.Class
186          - values:
187            - panda.Object
188          - values:
189            - panda.String
190          - values:
191            - R[]
192          - values:
193            - I[]
194          - values:
195            - Q[]
196          - values:
197            - E[]
198          - values:
199            - A[]
200          - values:
201            - panda.Class[]
202          - values:
203            - panda.Object[]
204          - values:
205            - panda.String[]
206            tags: ['tsan']
207          - values:
208            - u16[][][]
209          - values:
210            - i64[][]
211          - values:
212            - f32[]
213          - values:
214            - f64[]
215
216
217      - file-name: "valid_instance_p"
218        isa:
219          description: Load type specified by id into accumulator.
220        description: Check type of object created by 'lda.type' instruction with valid type in PandaAssembly context.
221        header-template: [pandasm, main]
222        tags: ['irtoc_ignore']
223        code-template: |
224          #
225              lda.type %s
226              sta.obj v1
227              isinstance panda.Class
228              jeqz set_failure
229              lda.obj v1
230              isinstance panda.Object
231              jeqz set_failure
232              ldai 0
233              return
234          set_failure:
235              ldai 1
236              return
237        check-type: none
238        cases:
239          - values:
240            - R
241          - values:
242            - panda.String
243          - values:
244            - panda.Class
245          - values:
246            - panda.Object
247            tags: ['tsan']
248          - values:
249            - R[]
250          - values:
251            - panda.String[]
252          - values:
253            - panda.Class[][]
254          - values:
255            - panda.Object[][][]
256          - values:
257            - u1[]
258          - values:
259            - u8[]
260          - values:
261            - u16[][]
262          - values:
263            - u32[][][]
264          - values:
265            - u64[]
266
267
268      - file-name: "valid_instance_j"
269        isa:
270          description: Load type specified by id into accumulator.
271        description: Check type of object created by 'lda.type' instruction with valid type in PandaAssembly context.
272        runner-options: [use-pa]
273        tags: ['irtoc_ignore']
274        header-template: [PandaAssembly, main]
275        code-template: |
276          #
277              lda.type %s
278              sta.obj v1
279              isinstance panda.Class
280              jeqz set_failure
281              lda.obj v1
282              isinstance panda.Object
283              jeqz set_failure
284              ldai 0
285              return
286          set_failure:
287              ldai 1
288              return
289        check-type: none
290        cases:
291          - values:
292            - R
293          - values:
294            - I
295          - values:
296            - E
297          - values:
298            - Q
299          - values:
300            - E
301          - values:
302            - A
303          - values:
304            - panda.String
305          - values:
306            - panda.Class
307            tags: ['tsan']
308          - values:
309            - panda.Object
310          - values:
311            - R[]
312          - values:
313            - I[]
314          - values:
315            - E[]
316          - values:
317            - Q[]
318          - values:
319            - E[]
320          - values:
321            - A[]
322          - values:
323            - panda.String[]
324          - values:
325            - panda.Class[][]
326          - values:
327            - panda.Object[][][]
328          - values:
329            - i8[]
330          - values:
331            - u16[]
332          - values:
333            - i32[][]
334          - values:
335            - i64[][][]
336          - values:
337            - f32[]
338
339
340      - file-name: "types_eq_p"
341        isa:
342          description: Load type specified by id into accumulator.
343        description: Check that two types created by 'lda.type' instructions are the same in the type constant pool in PandaAssembly context.
344        header-template: [pandasm, main]
345        code-template: |
346          #
347              lda.null
348              lda.type %s
349              sta.obj v1
350              lda.null
351              lda.type %s
352              jeq.obj v1, ok
353              ldai 1
354              return
355          ok:
356        check-type: exit-positive
357        cases:
358          - values:
359            - R
360            - R
361          - values:
362            - panda.String
363            - panda.String
364          - values:
365            - panda.Class
366            - panda.Class
367            tags: ['tsan']
368          - values:
369            - panda.Object
370            - panda.Object
371          - values:
372            - R[]
373            - R[]
374          - values:
375            - panda.String[]
376            - panda.String[]
377          - values:
378            - panda.Class[]
379            - panda.Class[]
380          - values:
381            - panda.Object[][]
382            - panda.Object[][]
383          - values:
384            - i32[]
385            - i32[]
386          - values:
387            - u32[][]
388            - u32[][]
389          - values:
390            - u64[][][]
391            - u64[][][]
392          - values:
393            - f64[]
394            - f64[]
395
396
397      - file-name: "types_eq_j"
398        isa:
399          description: Load type specified by id into accumulator.
400        description: Check that two types created by 'lda.type' instructions are the same in the type constant pool in PandaAssembly context.
401        header-template: [PandaAssembly, main]
402        runner-options: [use-pa]
403        tags: ['irtoc_ignore']
404        code-template: |
405          #
406              lda.null
407              lda.type %s
408              sta.obj v1
409              lda.null
410              lda.type %s
411              jeq.obj v1, ok
412              ldai 1
413              return
414          ok:
415        check-type: exit-positive
416        cases:
417          - values:
418            - R
419            - R
420          - values:
421            - I
422            - I
423          - values:
424            - E
425            - E
426          - values:
427            - Q
428            - Q
429          - values:
430            - E
431            - E
432          - values:
433            - A
434            - A
435          - values:
436            - panda.String
437            - panda.String
438            tags: ['tsan']
439          - values:
440            - panda.Class
441            - panda.Class
442          - values:
443            - panda.Object
444            - panda.Object
445          - values:
446            - R[]
447            - R[]
448          - values:
449            - I[][]
450            - I[][]
451          - values:
452            - E[]
453            - E[]
454          - values:
455            - Q[][][]
456            - Q[][][]
457          - values:
458            - E[]
459            - E[]
460          - values:
461            - A[][]
462            - A[][]
463          - values:
464            - panda.String[][][]
465            - panda.String[][][]
466          - values:
467            - panda.Class[][]
468            - panda.Class[][]
469          - values:
470            - panda.Object[]
471            - panda.Object[]
472
473
474      - file-name: "types_ne_p"
475        isa:
476          description: Load type specified by id into accumulator.
477        description: Check that two types created by 'lda.type' instructions are different in the type constant pool in PandaAssembly context.
478        header-template: [pandasm, main]
479        code-template: |
480          #
481              lda.null
482              lda.type %s
483              sta.obj v1
484              lda.null
485              lda.type *s
486              jne.obj v1, ok
487              ldai 1
488              return
489          ok:
490        check-type: exit-positive
491        template-cases:
492          - values:
493            - R
494            exclude: [r]
495          - values:
496            - panda.String
497            exclude: [r, panda_string]
498          - values:
499            - panda.Class
500            exclude: [r, panda_string, panda_class]
501          - values:
502            - panda.Object
503            exclude: [r, panda_string, panda_class, panda_object]
504          - values:
505            - R[]
506            exclude: [r, panda_string, panda_class, panda_object, r_a]
507          - values:
508            - panda.String[]
509            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a]
510          - values:
511            - panda.Class[]
512            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a]
513          - values:
514            - panda.Object[]
515            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a]
516          - values:
517            - R[][]
518            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa]
519          - values:
520            - panda.String[][]
521            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa]
522          - values:
523            - panda.Class[][]
524            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa]
525          - values:
526            - panda.Object[][]
527            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa]
528          - values:
529            - u1[]
530            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a]
531          - values:
532            - u8[]
533            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a]
534          - values:
535            - i8[]
536            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a]
537          - values:
538            - u16[]
539            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a]
540          - values:
541            - i16[]
542            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a]
543          - values:
544            - u32[]
545            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a]
546          - values:
547            - i32[]
548            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a]
549          - values:
550            - u64[]
551            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a]
552          - values:
553            - i64[]
554            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a]
555          - values:
556            - f32[]
557            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a]
558          - values:
559            - f64[]
560            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a]
561          - values:
562            - u1[][]
563            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa]
564          - values:
565            - u8[][]
566            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa]
567          - values:
568            - i8[][]
569            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa]
570          - values:
571            - u16[][]
572            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa]
573          - values:
574            - i16[][]
575            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa]
576          - values:
577            - u32[][]
578            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa, u32_aa]
579          - values:
580            - i32[][]
581            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa, u32_aa, i32_aa]
582          - values:
583            - u64[][]
584            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa, u32_aa, i32_aa, u64_aa]
585          - values:
586            - i64[][]
587            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa, u32_aa, i32_aa, u64_aa, i64_aa]
588          - values:
589            - f32[][]
590            exclude: [r, panda_string, panda_class, panda_object, r_a, panda_string_a, panda_class_a, panda_object_a, r_aa, panda_string_aa, panda_class_aa, panda_object_aa, u1_a, u8_a, i8_a, u16_a, i16_a, u32_a, i32_a, u64_a, i64_a, f32_a, f64_a, u1_aa, u8_aa, i8_aa, u16_aa, i16_aa, u32_aa, i32_aa, u64_aa, i64_aa, f32_aa]
591        cases:
592          - values:
593            - R
594            id: r
595          - values:
596            - panda.String
597            id: panda_string
598            tags: ['tsan']
599          - values:
600            - panda.Class
601            id: panda_class
602          - values:
603            - panda.Object
604            id: panda_object
605          - values:
606            - R[]
607            id: r_a
608          - values:
609            - panda.String[]
610            id: panda_string_a
611          - values:
612            - panda.Class[]
613            id: panda_class_a
614          - values:
615            - panda.Object[]
616            id: panda_object_a
617          - values:
618            - panda.String[][]
619            id: panda_string_aa
620          - values:
621            - panda.Class[][]
622            id: panda_class_aa
623          - values:
624            - panda.Object[][]
625            id: panda_object_aa
626          - values:
627            - u1[]
628            id: u1_a
629          - values:
630            - u8[]
631            id: u8_a
632          - values:
633            - i8[]
634            id: i8_a
635          - values:
636            - u16[]
637            id: u16_a
638          - values:
639            - i16[]
640            id: i16_a
641          - values:
642            - u32[]
643            id: u32_a
644          - values:
645            - i32[]
646            id: i32_a
647          - values:
648            - u64[]
649            id: u64_a
650          - values:
651            - i64[]
652            id: i64_a
653          - values:
654            - f32[]
655            id: f32_a
656          - values:
657            - f64[]
658            id: f64_a
659          - values:
660            - u1[][]
661            id: u1_aa
662          - values:
663            - u8[][]
664            id: u8_aa
665          - values:
666            - i8[][]
667            id: i8_aa
668          - values:
669            - u16[][]
670            id: u16_aa
671          - values:
672            - i16[][]
673            id: i16_aa
674          - values:
675            - u32[][]
676            id: u32_aa
677          - values:
678            - i32[][]
679            id: i32_aa
680          - values:
681            - u64[][]
682            id: u64_aa
683          - values:
684            - i64[][]
685            id: i64_aa
686          - values:
687            - f32[][]
688            id: f32_aa
689          - values:
690            - f64[][]
691            id: f64_aa
692
693
694      - file-name: "types_ne_j"
695        isa:
696          description: Load type specified by id into accumulator.
697        description: Check that two types created by 'lda.type' instructions are different in the type constant pool in PandaAssembly context.
698        header-template: [PandaAssembly, main]
699        runner-options: [use-pa]
700        tags: ['irtoc_ignore']
701        code-template: |
702          #
703              lda.null
704              lda.type %s
705              sta.obj v1
706              lda.null
707              lda.type *s
708              jne.obj v1, ok
709              ldai 1
710              return
711          ok:
712        check-type: exit-positive
713        template-cases:
714          - values:
715            - R
716            exclude: [r]
717          - values:
718            - I
719            exclude: [r, i]
720          - values:
721            - Q
722            exclude: [r, i, q]
723          - values:
724            - E
725            exclude: [r, i, q, e]
726          - values:
727            - A
728            exclude: [r, i, q, e, a]
729          - values:
730            - panda.String
731            exclude: [r, i, q, e, a, PandaAssembly_lang_string]
732          - values:
733            - panda.Class
734            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class]
735          - values:
736            - panda.Object
737            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object]
738          - values:
739            - R[]
740            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a]
741          - values:
742            - I[]
743            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a]
744          - values:
745            - Q[]
746            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a]
747          - values:
748            - E[]
749            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a]
750          - values:
751            - A[]
752            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a]
753          - values:
754            - panda.String[]
755            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a]
756          - values:
757            - panda.Class[]
758            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a]
759          - values:
760            - panda.Object[]
761            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a]
762          - values:
763            - R[][]
764            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa]
765          - values:
766            - I[][]
767            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa]
768          - values:
769            - Q[][]
770            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa]
771          - values:
772            - E[][]
773            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa]
774          - values:
775            - A[][]
776            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa]
777          - values:
778            - panda.String[][]
779            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa]
780          - values:
781            - panda.Class[][]
782            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa]
783          - values:
784            - panda.Object[][]
785            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa]
786          - values:
787            - u1[]
788            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a]
789          - values:
790            - i8[]
791            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a]
792          - values:
793            - u16[]
794            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a]
795          - values:
796            - i16[]
797            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a]
798          - values:
799            - i32[]
800            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a]
801          - values:
802            - i64[]
803            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a]
804          - values:
805            - f32[]
806            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a]
807          - values:
808            - f64[]
809            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a]
810          - values:
811            - u1[][]
812            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa]
813          - values:
814            - i8[][]
815            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa]
816          - values:
817            - u16[][]
818            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa, u16_aa]
819          - values:
820            - i16[][]
821            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa, u16_aa, i16_aa]
822          - values:
823            - i32[][]
824            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa, u16_aa, i16_aa, i32_aa]
825          - values:
826            - i64[][]
827            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa, u16_aa, i16_aa, i32_aa, i64_aa]
828          - values:
829            - f32[][]
830            exclude: [r, i, q, e, a, PandaAssembly_lang_string, PandaAssembly_lang_class, PandaAssembly_lang_object, r_a, i_a, q_a, e_a, a_a, PandaAssembly_lang_string_a, PandaAssembly_lang_class_a, PandaAssembly_lang_object_a, r_aa, i_aa, q_aa, e_aa, a_aa, PandaAssembly_lang_string_aa, PandaAssembly_lang_class_aa, PandaAssembly_lang_object_aa, u1_a, i8_a, u16_a, i16_a, i32_a, i64_a, f32_a, f64_a, u1_aa, i8_aa, u16_aa, i16_aa, i32_aa, i64_aa, f32_aa]
831        cases:
832          - values:
833            - R
834            id: r
835          - values:
836            - I
837            id: i
838          - values:
839            - E
840            id: e
841          - values:
842            - Q
843            id: q
844          - values:
845            - E
846            id: e
847          - values:
848            - A
849            id: a
850          - values:
851            - panda.String
852            id: PandaAssembly_lang_string
853          - values:
854            - panda.Class
855            id: PandaAssembly_lang_class
856          - values:
857            - panda.Object
858            id: PandaAssembly_lang_object
859          - values:
860            - R[]
861            id: r_a
862          - values:
863            - I[]
864            id: i_a
865          - values:
866            - E[]
867            id: e_a
868          - values:
869            - Q[]
870            id: q_a
871          - values:
872            - E[]
873            id: e_a
874          - values:
875            - A[]
876            id: a_a
877          - values:
878            - panda.String[]
879            id: PandaAssembly_lang_string_a
880          - values:
881            - panda.Class[]
882            id: PandaAssembly_lang_class_a
883          - values:
884            - panda.Object[]
885            id: PandaAssembly_lang_object_a
886          - values:
887            - R[][]
888            id: r_aa
889          - values:
890            - I[][]
891            id: i_aa
892          - values:
893            - E[][]
894            id: e_aa
895          - values:
896            - Q[][]
897            id: q_aa
898          - values:
899            - E[][]
900            id: e_aa
901          - values:
902            - A[][]
903            id: a_aa
904          - values:
905            - panda.String[][]
906            id: PandaAssembly_lang_string_aa
907          - values:
908            - panda.Class[][]
909            id: PandaAssembly_lang_class_aa
910          - values:
911            - panda.Object[][]
912            id: PandaAssembly_lang_object_aa
913          - values:
914            - u1[]
915            id: u1_a
916          - values:
917            - i8[]
918            id: i8_a
919          - values:
920            - u16[]
921            id: u16_a
922          - values:
923            - i16[]
924            id: i16_a
925          - values:
926            - i32[]
927            id: i32_a
928          - values:
929            - i64[]
930            id: i64_a
931          - values:
932            - f32[]
933            id: f32_a
934          - values:
935            - f64[]
936            id: f64_a
937          - values:
938            - u1[][]
939            id: u1_aa
940          - values:
941            - i8[][]
942            id: i8_aa
943          - values:
944            - u16[][]
945            id: u16_aa
946          - values:
947            - i16[][]
948            id: i16_aa
949          - values:
950            - i32[][]
951            id: i32_aa
952          - values:
953            - i64[][]
954            id: i64_aa
955          - values:
956            - f32[][]
957            id: f32_aa
958          - values:
959            - f64[][]
960            id: f64_aa
961