• 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
14definitions: []
15tests:
16  - file-name: "fdiv2.64"
17    isa:
18      title: Two address floating-point binary operation on accumulator
19      description: >
20        Perform specified floating-point binary operation on accumulator and register and store result into accumulator.
21        The results of instructions correspond IEEE-754 arithmetic rules.
22      exceptions:
23        - x_none
24    commands:
25      - file-name: "op_vs_8_nan"
26        isa:
27          instructions:
28            - sig: fdiv2.64 v:in:f64
29              acc: inout:f64
30              format: [op_v_8]
31          description: Any operation with NaN results to NaN value.
32        check-type: check-acc-nan
33        code-template: |
34          #
35              fldai.64 %s
36              fmovi.64 v0, *s
37              fdiv2.64 v0
38        description: >
39          Check fdiv2.64 results in NaN when acc or v0 is NaN
40        template-cases:
41          - values:
42              # NaN
43              - "0x7ff8000000000000"
44          - values:
45              # NaN representation
46              - "0xFFFFFFFFFFFFFFFF"
47          - values:
48              # Positive zero
49              - "0"
50            tags: ["clang_release_sanitizer"]
51            bugid: ["966", "965"]
52            exclude: [hasval]
53          - values:
54              # Negative zero
55              - "0x8000000000000000"
56            tags: ["clang_release_sanitizer"]
57            bugid: ["966", "965"]
58            exclude: [hasval]
59          - values:
60              # 1d
61              - "1.0"
62            tags: ["clang_release_sanitizer"]
63            bugid: ["966", "965"]
64            exclude: [hasval]
65          - values:
66              - "-1"
67            exclude: [hasval]
68          - values:
69              # +Inf
70              - "0x7ff0000000000000"
71            exclude: [hasval]
72          - values:
73              # -Inf
74              - "0xfff0000000000000"
75            exclude: [hasval]
76          - values:
77            # +max
78            - "0x7fefffffffffffff"
79            exclude: [hasval]
80          - values:
81            # -max
82            - "0xffefffffffffffff"
83            exclude: [hasval]
84          - values:
85            # +min
86            - "0x0000000000000001"
87            exclude: [hasval]
88          - values:
89            # -min
90            - "0x8000000000000001"
91            exclude: [hasval]
92          - values:
93              # Some FP value, 3.14159265358979323846
94              - "0x400921fb54442d18"
95            exclude: [hasval]
96          - values:
97              # Some FP value
98              - "1234567890987654321"
99            exclude: [hasval]
100        cases:
101          - values:
102              # NaN
103              - "0x7ff8000000000000"
104          - values:
105              # NaN representation
106              - "0xFFFFFFFFFFFFFFFF"
107          - values:
108              # Positive zero
109              - "0"
110            tags: ["clang_release_sanitizer"]
111            bugid: ["966", "965"]
112            id: hasval
113          - values:
114              # Negative zero
115              - "0x8000000000000000"
116            tags: ["clang_release_sanitizer"]
117            bugid: ["966", "965"]
118            id: hasval
119          - values:
120              # 1d
121              - "1.0"
122            tags: ["clang_release_sanitizer"]
123            bugid: ["966", "965"]
124            id: hasval
125          - values:
126              - "-1"
127            id: hasval
128          - values:
129              # +Inf
130              - "0x7ff0000000000000"
131            id: hasval
132          - values:
133              # -Inf
134              - "0xfff0000000000000"
135            id: hasval
136          - values:
137            # +max
138            - "0x7fefffffffffffff"
139            id: hasval
140          - values:
141            # -max
142            - "0xffefffffffffffff"
143            id: hasval
144          - values:
145            # +min
146            - "0x0000000000000001"
147            id: hasval
148          - values:
149            # -min
150            - "0x8000000000000001"
151            id: hasval
152          - values:
153              # Some FP value, 3.14159265358979323846
154              - "0x400921fb54442d18"
155            id: hasval
156          - values:
157              # Some FP value
158              - "1234567890987654321"
159            id: hasval
160
161      - file-name: "op_vs_8_pinf"
162        isa:
163          instructions:
164            - sig: fdiv2.64 v:in:f64
165              acc: inout:f64
166              format: [op_v_8]
167          description: Division is infinity if any non zero value is divided by zero.
168        check-type: check-positive
169        code-template: |
170            #
171                fldai.64 0x7ff0000000000000 # +Inf
172                fmovi.64 v0, %s
173            # Div of +Inf and value
174                fdiv2.64 v0
175                fmovi.64 v1, %s
176                fcmpg.64 v1
177        description: Check fdiv2.64 with positive Inf and various values (NaN, Inf, min, max, numbers).
178        cases:
179          - values:
180              - "0"
181              # Inf
182              - "0x7ff0000000000000"
183            tags: ["clang_release_sanitizer"]
184            bugid: ["966", "965"]
185          - values:
186              # -0.0d
187              - "0x8000000000000000"
188              # -Inf
189              - "0xFFF0000000000000"
190            tags: ["clang_release_sanitizer"]
191            bugid: ["966", "965"]
192          - values:
193              # 1d
194              - "1"
195              # Inf
196              - "0x7ff0000000000000"
197          - values:
198              - "-1"
199              # -Inf
200              - "0xFFF0000000000000"
201          - values:
202              # +max
203              - "0x7fefffffffffffff"
204              # Inf
205              - "0x7FF0000000000000"
206          - values:
207              # -max
208              - "0xffefffffffffffff"
209              # -Inf
210              - "0xFFF0000000000000"
211          - values:
212              # +min
213              - "0x0000000000000001"
214              # Inf
215              - "0x7FF0000000000000"
216          - values:
217              # -min
218              - "0x8000000000000001"
219              # -Inf
220              - "0xFFF0000000000000"
221          - values:
222              # Some FP value, 3.14159265358979323846
223              - "0x400921fb54442d18"
224              # Inf
225              - "0x7FF0000000000000"
226          - values:
227              - "1234567890987654321"
228              # Inf
229              - "0x7FF0000000000000"
230
231      - file-name: "op_vs_8_ninf"
232        isa:
233          instructions:
234            - sig: fdiv2.64 v:in:f64
235              acc: inout:f64
236              format: [op_v_8]
237          description: Division is infinity if any non zero value is divided by zero.
238        check-type: check-positive
239        code-template: |
240            #
241                fldai.64 0xfff0000000000000 # -Inf
242                fmovi.64 v0, %s
243            # Div of -Inf and value
244                fdiv2.64 v0
245                fmovi.64 v1, %s
246                fcmpg.64 v1
247        description: Check fdiv2.64 with negative Inf and various values (NaN, Inf, min, max, numbers).
248        cases:
249            - values:
250                - "0"
251                # -Inf
252                - "0xfff0000000000000"
253              tags: ["clang_release_sanitizer"]
254              bugid: ["966", "965"]
255            - values:
256                # -0.0d
257                - "0x8000000000000000"
258                # +Inf
259                - "0x7FF0000000000000"
260              tags: ["clang_release_sanitizer"]
261              bugid: ["966", "965"]
262            - values:
263                # 1d
264                - "1"
265                # -Inf
266                - "0xfff0000000000000"
267            - values:
268                - "-1"
269                # +Inf
270                - "0x7FF0000000000000"
271            - values:
272                # +max
273                - "0x7fefffffffffffff"
274                # -Inf
275                - "0xfff0000000000000"
276            - values:
277                # -max
278                - "0xffefffffffffffff"
279                # +Inf
280                - "0x7FF0000000000000"
281            - values:
282                # +min
283                # - "0x0000000000000001"
284                - "1"
285                # -Inf
286                - "0xfff0000000000000"
287            - values:
288                # -min
289                - "0x8000000000000001"
290                # +Inf
291                - "0x7FF0000000000000"
292            - values:
293                # Some FP value, 3.14159265358979323846
294                - "0x400921fb54442d18"
295                # -Inf
296                - "0xfff0000000000000"
297
298            - values:
299                - "1234567890987654321"
300                # -Inf
301                - "0xfff0000000000000"
302
303      - file-name: "op_vs_8_inf_nan"
304        isa:
305          instructions:
306            - sig: fdiv2.64 v:in:f64
307              acc: inout:f64
308              format: [op_v_8]
309          description: >
310            Division is NaN if Infinity is divided by Infinity.
311        check-type: check-acc-nan
312        code-template: |
313            #
314                fldai.64 %s
315                fmovi.64 v0, *s
316            # Div of Inf by Inf
317                fdiv2.64 v0
318        description: >
319          Check fdiv2.64 of Inf by Inf is NaN.
320        template-cases:
321          - values: ["0x7ff0000000000000"]
322          - values: ["0xfff0000000000000"]
323        cases:
324          - values: ["0x7ff0000000000000"]
325          - values: ["0xfff0000000000000"]
326
327      - file-name: "op_vs_8_pzero"
328        isa:
329          instructions:
330            - sig: fdiv2.64 v:in:f64
331              acc: inout:f64
332              format: [op_v_8]
333        check-type: check-positive
334        code-template: |
335            #
336                fldai.64 0.0 #
337                fmovi.64 v0, %s
338            # Div of +0.0 and value
339                fdiv2.64 v0
340                fmovi.64 v1, %s
341                fcmpg.64 v1
342        description: Check fdiv2.64 with +0 and various values (NaN, Inf, min, max, numbers).
343        cases:
344            - values:
345                # +Inf
346                - "0x7ff0000000000000"
347                - "0"
348            - values:
349                # -Inf
350                - "0xfff0000000000000"
351                # -0.0
352                - "0x8000000000000000"
353            - values:
354                # 1d
355                - "1"
356                - "0"
357            - values:
358                # -1d
359                - "-1"
360                - "-0.0"
361            - values:
362                # +max
363                - "0x7fefffffffffffff"
364                - "0"
365            - values:
366                # -max
367                - "0xffefffffffffffff"
368                # -0.0
369                - "0x8000000000000000"
370            - values:
371                # +min
372                - "0x0000000000000001"
373                - "0"
374            - values:
375                # -min
376                - "0x8000000000000001"
377                # -0.0
378                - "0x8000000000000000"
379            - values:
380                # Some FP value,
381                - "3.14159265358979323846"
382                - "0"
383
384      - file-name: "op_vs_8_nzero"
385        isa:
386          instructions:
387            - sig: fdiv2.64 v:in:f64
388              acc: inout:f64
389              format: [op_v_8]
390        check-type: check-positive
391        code-template: |
392            #
393                fldai.64 -0.0 #
394                fmovi.64 v0, %s
395            # Div of -0.0 and value
396                fdiv2.64 v0
397                fmovi.64 v1, %s
398                fcmpg.64 v1
399        description: Check fdiv2.64 with -0 and various values (NaN, Inf, min, max, numbers).
400        cases:
401          - values:
402              # +Inf
403              - "0x7ff0000000000000"
404              # -0.0d
405              - "0x8000000000000000"
406          - values:
407              # -Inf
408              - "0xfff0000000000000"
409              - "0"
410          - values:
411              # 1d
412              - "1"
413              - "0"
414          - values:
415              - "-1"
416              - "0"
417          - values:
418              # +max
419              - "0x7fefffffffffffff"
420              - "0"
421          - values:
422              # -max
423              - "0xffefffffffffffff"
424              - "0"
425          - values:
426              # +min
427              - "0x0000000000000001"
428              # -0.0d
429              - "0x8000000000000000"
430          - values:
431              # -min
432              - "0x8000000000000001"
433              - "0"
434          - values:
435              - "3.14159265358979323846"
436              - "0"
437          - values:
438              # Some FP value,
439              - "-3.14159265358979323846"
440              - "0"
441      - file-name: "op_vs_8_pone"
442        isa:
443          instructions:
444            - sig: fdiv2.64 v:in:f64
445              acc: inout:f64
446              format: [op_v_8]
447          description: Division is infinity if any non zero value is divided by zero.
448        check-type: check-positive
449        code-template: |
450            #
451                fldai.64 1.0 #
452                fmovi.64 v0, %s
453            # Div of 1.0 and value
454                fdiv2.64 v0
455                fmovi.64 v1, %s
456                fcmpg.64 v1
457        description: Check fdiv2.64 with +1 and various values (NaN, Inf, min, max, numbers).
458        cases:
459          - values:
460              # +0.0d
461              - "0"
462              # +Inf
463              - "0x7ff0000000000000"
464            tags: ["clang_release_sanitizer"]
465            bugid: ["966", "965"]
466          - values:
467              # -0.0d
468              - "0x8000000000000000"
469              # -Inf
470              - "0xfff0000000000000"
471            tags: ["clang_release_sanitizer"]
472            bugid: ["966", "965"]
473          - values:
474              - "1"
475              - "1"
476          - values:
477              - "-1"
478              - "-1"
479          - values:
480              # +Inf
481              - "0x7ff0000000000000"
482              - "0"
483          - values:
484              # -Inf
485              - "0xfff0000000000000"
486              # -0.0d
487              - "0x8000000000000000"
488          - values:
489              # +max
490              - "0x7fefffffffffffff"
491              - "0x0004000000000000"
492          - values:
493              # -max
494              - "0xffefffffffffffff"
495              - "0x8004000000000000"
496          - values:
497              # +min
498              - "0x0000000000000001"
499              # +Inf
500              - "0x7FF0000000000000"
501          - values:
502              # -min
503              - "0x8000000000000001"
504              # -Inf
505              - "0xFFF0000000000000"
506          - values:
507              - "3.14159265358979323846"
508              - "0x3FD45F306DC9C883"
509          - values:
510              - "-3.14159265358979323846"
511              - "0xBFD45F306DC9C883"
512
513          - values:
514              # Some FP value
515              - "1234567890.987654321"
516              - "0x3E0BD4D5DD3DC711"
517
518      - file-name: "op_vs_8_none"
519        isa:
520          instructions:
521            - sig: fdiv2.64 v:in:f64
522              acc: inout:f64
523              format: [op_v_8]
524          description: Division is infinity if any non zero value is divided by zero.
525        check-type: check-positive
526        code-template: |
527            #
528                fldai.64 -1.0 #
529                fmovi.64 v0, %s
530            # Div of -1.0 and value
531                fdiv2.64 v0
532                fmovi.64 v1, %s
533                fcmpg.64 v1
534        description: Check fdiv2.64 with -1 and various values (NaN, Inf, min, max, numbers).
535        cases:
536          - values:
537              # +0.0d
538              - "0"
539              # -Inf
540              - "0xFFF0000000000000"
541            tags: ["clang_release_sanitizer"]
542            bugid: ["966", "965"]
543          - values:
544              # -0.0d
545              - "0x8000000000000000"
546              # +Inf
547              - "0x7FF0000000000000"
548            tags: ["clang_release_sanitizer"]
549            bugid: ["966", "965"]
550          - values:
551              # 1d
552              - "1"
553              - "-1"
554          - values:
555              - "-1"
556              - "1"
557            tags: ["clang_release_sanitizer"]
558            bugid: ["966", "965"]
559          - values:
560              # +Inf
561              - "0x7ff0000000000000"
562              - "0x8000000000000000"
563          - values:
564              # -Inf
565              - "0xFFF0000000000000"
566              - "0"
567          - values:
568              # +max
569              - "0x7fefffffffffffff"
570              - "0x8004000000000000"
571          - values:
572              # -max
573              - "0xffefffffffffffff"
574              - "0x0004000000000000"
575          - values:
576              # +min
577              - "0x0000000000000001"
578              # -Inf
579              - "0xFFF0000000000000"
580          - values:
581              # -min
582              - "0x8000000000000001"
583              # +Inf
584              - "0x7FF0000000000000"
585          - values:
586              # Some FP value, 3.14159265358979323846
587              - "0x400921fb54442d18"
588              - "0xBFD45F306DC9C883"
589          - values:
590              # Some FP value, -3.14159265358979323846
591              - "0xC00921FB54442D18"
592              - "0x3FD45F306DC9C883"
593          - values:
594              # Some FP value
595              - "1234567890.987654321"
596              - "0xBE0BD4D5DD3DC711"
597
598      - file-name: "op_vs_8"
599        isa:
600          instructions:
601            - sig: fdiv2.64 v:in:f64
602              acc: inout:f64
603              format: [op_v_8]
604        check-type: check-positive
605        code-template: |
606            #
607                fldai.64 %s #
608                fmovi.64 v0, %s
609            # Div of -1.0 and value
610                fdiv2.64 v0
611                fmovi.64 v1, %s
612                fcmpg.64 v1
613        description: Check fdiv2.64 with various values.
614        cases:
615            - values:
616                - "1.0"
617                - "-1.0"
618                - "-1.0"
619            - values:
620                - "1.0"
621                - "1.0"
622                - "1.0"
623            - values:
624                - "-1.0"
625                - "1.0"
626                - "-1.0"
627            - values:
628                - "1.0e100"
629                - "1.0e100"
630                - "1.0"
631            - values:
632                - "1.0e100"
633                - "-1.0e100"
634                - "-1.0"
635            - values:
636                - "1.0e+100"
637                - "1.0e-100"
638                - "1.0e+200"
639            - values:
640                - "-1.0e100"
641                - "1.0e100"
642                - "-1.0"
643            - values:
644                - "-1.0e-100"
645                - "1.0e-100"
646                - "-1.0"
647            - values:
648                - "-1.0e+100"
649                - "-1.0e-100"
650                - "1.0e+200"
651            - values:
652                - "3.14159265358979323846"
653                - "-3.14159265358979323846"
654                - "-1.0"
655            - values:
656                - "3.14159265358979323846e100"
657                - "-3.14159265358979323846e100"
658                - "-1.0"
659      - file-name: "op_vs_8_max"
660        isa:
661          instructions:
662            - sig: fdiv2.64 v:in:f64
663              acc: inout:f64
664              format: [op_v_8]
665        check-type: check-positive
666        code-template: |
667            #
668                fldai.64 %s
669                fmovi.64 v0, %s
670            # Div of two values
671                fdiv2.64 v0
672                fmovi.64 v1, %s
673                fcmpg.64 v1
674        description: Check fdiv2.64 with various max values.
675        cases:
676          - values:
677              # +max
678              - "0x7fefffffffffffff"
679              # +max
680              - "0x7fefffffffffffff"
681              - "1"
682          - values:
683              # -max
684              - "0xffefffffffffffff"
685              # -max
686              - "0xffefffffffffffff"
687              - "1"
688          - values:
689              # +max
690              - "0x7fefffffffffffff"
691              # -max
692              - "0xffefffffffffffff"
693              - "-1"
694          - values:
695              # -max
696              - "0xffefffffffffffff"
697              # +max
698              - "0x7fefffffffffffff"
699              - "-1"
700
701          - values:
702              # +max
703              - "0x7fefffffffffffff"
704              # 1d
705              - "0x3ff0000000000000"
706              # +max
707              - "0x7fefffffffffffff"
708
709          - values:
710              # +max
711              - "0x7fefffffffffffff"
712              - "-1"
713             # -max
714              - "0xffefffffffffffff"
715          - values:
716              # -max
717              - "0xffefffffffffffff"
718              # 1d
719              - "1"
720              # -max
721              - "0xffefffffffffffff"
722          - values:
723              # -max
724              - "0xffefffffffffffff"
725              - "-1"
726              # +max
727              - "0x7fefffffffffffff"
728
729      - file-name: "op_vs_8_zeroes_nan"
730        tags: ["clang_release_sanitizer"]
731        bugid: ["966", "965"]
732        isa:
733          instructions:
734            - sig: fdiv2.64 v:in:f64
735              acc: inout:f64
736              format: [op_v_8]
737          description: Division is NaN if zero is divided by zero.
738        check-type: check-acc-nan
739        code-template: |
740            #
741                fldai.64 %s #
742                fmovi.64 v0, %s
743            # Div of zero by zero
744                fdiv2.64 v0
745        cases:
746            - values:
747                - "0.0"
748                - "0.0"
749            - values:
750                - "0.0"
751                - "-0.0"
752            - values:
753                - "-0.0"
754                - "0.0"
755            - values:
756                - "-0.0"
757                - "-0.0"
758
759      - file-name: "incorrect_reg"
760        isa:
761          instructions:
762            - sig: fdiv2.64 v:in:f64
763              acc: inout:f64
764              format: [op_v_8]
765        check-type: none
766        runner-options: [compile-failure]
767        description: Check fdiv2.64 with incorrect register numbers.
768        code-template: |
769          #
770              fdiv2.64 %s
771        cases:
772          - values: [v256]
773          - values: [v65535]
774          - values: [a0]
775          - values: [a255]
776          - values: [null]
777          - values: [0]
778          - values: [1.1]
779          - values: ['2.2']
780
781      - file-name: "reg_number"
782        isa:
783          instructions:
784            - sig: fdiv2.64 v:in:f64
785              acc: inout:f64
786              format: [op_v_8]
787        check-type: none
788        runner-options: [compile-only]
789        description: Check fdiv2.64 with correct register numbers.
790        code-template: |
791          #
792              fdiv2.64 %s
793        cases:
794          - values: [v0]
795          - values: [v16]
796          - values: [v128]
797          - values: [v255]
798
799      - file-name: "calc"
800        isa:
801          instructions:
802            - sig: fdiv2.64 v:in:f64
803              acc: inout:f64
804              format: [op_v_8]
805        check-type: check-positive
806        code-template: |
807            #
808                fldai.64 %s #
809                fmovi.64 v0, %s
810                fdiv2.64 v0
811                fmovi.64 v1, %s
812                fcmpg.64 v1
813        description: Check fdiv2.64 with various values.
814        tags: ['tsan']
815        cases:
816            - values:
817                - "0.21632944224064465"
818                - "-0.34061047940179023"
819                - "-0.6351226850699991"
820            - values:
821                - "0.36570116840892575"
822                - "0.07029972877481794"
823                - "5.202028155475951"
824            - values:
825                - "0.4505041756500131"
826                - "0.2904757124583136"
827                - "1.5509185667791943"
828            - values:
829                - "0.21489520519704786"
830                - "0.33478852559234973"
831                - "0.6418834242207925"
832            - values:
833                - "0.35531139652581856"
834                - "0.4460468463980294"
835                - "0.7965786540025369"
836            - values:
837                - "-0.24111761338348803"
838                - "-0.3790812878499866"
839                - "0.6360578090019183"
840            - values:
841                - "-0.2518421854745503"
842                - "-0.3539177970501055"
843                - "0.7115838411451686"
844            - values:
845                - "0.07142813163523898"
846                - "0.39868489769899773"
847                - "0.17915936130885587"
848            - values:
849                - "-0.04234142902115756"
850                - "-0.3715421834325995"
851                - "0.11396129674960209"
852            - values:
853                - "0.3975660961066302"
854                - "0.10346800519624122"
855                - "3.842406117259067"
856            - values:
857                - "-3.6826725689471526e-41"
858                - "3.6599032943264284e-35"
859                - "-1.0062212776649103e-6"
860            - values:
861                - "-4.939281186064999e37"
862                - "-3.393962002010915e-40"
863                - "1.455314226599616e77"
864            - values:
865                - "4.86875450414945e86"
866                - "-2.028918984906647e56"
867                - "-2.3996791100919525e30"
868            - values:
869                - "-8.953713349505588e24"
870                - "1.3234092805699793e-58"
871                - "-6.765641952918232e82"
872            - values:
873                - "4.7527290388188516e-33"
874                - "-1.8946284320518358e26"
875                - "-2.5085282994891844e-59"
876            - values:
877                - "-3.2937848542180716e-43"
878                - "-4.797773588737306e65"
879                - "6.865236121083697e-109"
880            - values:
881                - "1.498933928727475e-91"
882                - "-7.11421943222429e-85"
883                - "-2.1069548711668389e-7"
884            - values:
885                - "-2.7504919851837074e-93"
886                - "1.883749159785447e73"
887                - "-1.4601158391475962e-166"
888            - values:
889                - "5.656506993783795e-19"
890                - "2751435.148108612"
891                - "2.0558387493422056e-25"
892            - values:
893                - "4.1632336257511446e-24"
894                - "-5.849191531926912e-90"
895                - "-7.117622329559179e65"
896      - file-name: "type"
897        isa:
898            instructions:
899              - sig: fdiv2.64 v:in:f64
900                acc: inout:f64
901                format: [op_v_8]
902            verification:
903              - acc_type
904              - v1_type
905        tags: ['verifier']
906        runner-options: ['verifier-failure', 'verifier-debug-config']
907        header-template: []
908        code-template: |
909          #
910          .record A {}
911          .record B {}
912          .record panda.String <external>
913          .record panda.Object <external>
914          .function i32 main() {
915              %s
916              *s
917              fdiv2.64 v0
918        check-type: exit-positive
919        description: Check 'fdiv2.64' with incorrect register and accumulator type.
920        template-cases:
921          - values:
922              - movi v0, 0
923          - values:
924              - movi.64 v0, 0
925          - values:
926              - fmovi.64 v0, 0
927            exclude: [val]
928          - values:
929              - |
930                #
931                    lda.type B
932                    sta.obj v0
933          - values:
934              - |
935                #
936                    lda.type B[]
937                    sta.obj v0
938          - values:
939              - |
940                #
941                    lda.type panda.String
942                    sta.obj v0
943          - values:
944              - |
945                #
946                    lda.str "string"
947                    sta.obj v0
948          - values:
949              - |
950                #
951                    movi v0, 10
952                    newarr v0, v0, i32[]
953          - values:
954              - mov.null v0
955
956        cases:
957          - values:
958              - ldai 0
959          - values:
960              - ldai.64 0
961          - values:
962              - fldai.64 0
963            id: val
964          - values:
965              - |
966                #
967                    lda.type A
968          - values:
969              - |
970                #
971                    lda.type A[]
972          - values:
973              - |
974                #
975                    lda.type panda.String
976          - values:
977              - |
978                #
979                    lda.str "string"
980          - values:
981              - |
982                #
983                    movi v1, 10
984                    newarr v1, v1, f64[]
985                    lda.obj v1
986          - values:
987              - lda.null
988
989      - file-name: uninitialized_regs
990        isa:
991          instructions:
992            - sig: fdiv2.64 v:in:f64
993              acc: inout:f64
994              format: [op_v_8]
995        description: Check 'fdiv2.64' with uninitialized register and accumulator.
996        tags: ['verifier']
997        runner-options: ['verifier-failure', 'verifier-debug-config']
998        header-template: []
999        code-template: |
1000            #
1001            .function i32 main() {
1002                %s
1003                *s
1004                fdiv2.64 %s
1005        check-type: exit-positive
1006        template-cases:
1007          - values:
1008              - ''
1009              - v0
1010          - values:
1011              - fmovi.64 v0, 0
1012              - v0
1013            exclude: [init]
1014          - values:
1015              - ''
1016              - v7
1017          - values:
1018              - ''
1019              - v15
1020          - values:
1021              - fmovi.64 v15, 0
1022              - v15
1023            exclude: [init]
1024          - values:
1025              - ''
1026              - v128
1027          - values:
1028              - fmovi.64 v128, 0
1029              - v128
1030            exclude: [init]
1031          - values:
1032              - ''
1033              - v255
1034          - values:
1035              - fmovi.64 v255, 0
1036              - v255
1037            exclude: [init]
1038        cases:
1039          - values:
1040              - ''
1041          - values:
1042              - fldai.64 0
1043            id: init
1044