• 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: "fmul2.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: fmul2.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              fmul2.64 v0
38        description: >
39          Check fmul2.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              - "0"
49            exclude: [hasval]
50          - values:
51              # -0.0d
52              - "0x8000000000000000"
53            exclude: [hasval]
54          - values:
55              - "1"
56            exclude: [hasval]
57          - values:
58              - "-1"
59            exclude: [hasval]
60          - values:
61              # +Inf
62              - "0x7ff0000000000000"
63            exclude: [hasval]
64          - values:
65              # -Inf
66              - "0xfff0000000000000"
67            exclude: [hasval]
68          - values:
69              # +max
70              - "0x7fefffffffffffff"
71            exclude: [hasval]
72          - values:
73              # -max
74              - "0xffefffffffffffff"
75            exclude: [hasval]
76          - values:
77              # +min
78              - "0x0000000000000001"
79            exclude: [hasval]
80          - values:
81              # -min
82              - "0x8000000000000001"
83            exclude: [hasval]
84          - values:
85              - "3.14159265358979323846"
86            exclude: [hasval]
87          - values:
88              - "1234567890987654321"
89            exclude: [hasval]
90        cases:
91          - values:
92              # NaN
93              - "0x7ff8000000000000"
94          - values:
95              # NaN
96              - "0xFFFFFFFFFFFFFFFF"
97          - values:
98              - "0"
99            id: hasval
100          - values:
101              # -0.0d
102              - "0x8000000000000000"
103            id: hasval
104          - values:
105              - "1"
106            id: hasval
107          - values:
108              - "-1"
109            id: hasval
110          - values:
111              # +Inf
112              - "0x7ff0000000000000"
113            id: hasval
114          - values:
115              # -Inf
116              - "0xfff0000000000000"
117            id: hasval
118          - values:
119              # +max
120              - "0x7fefffffffffffff"
121            id: hasval
122          - values:
123              # -max
124              - "0xffefffffffffffff"
125            id: hasval
126          - values:
127              # +min
128              - "0x0000000000000001"
129            id: hasval
130          - values:
131              # -min
132              - "0x8000000000000001"
133            id: hasval
134          - values:
135              - "3.14159265358979323846"
136            id: hasval
137          - values:
138              - "1234567890987654321"
139            id: hasval
140
141      - file-name: "op_vs_8_pinf"
142        isa:
143          instructions:
144            - sig: fmul2.64 v:in:f64
145              acc: inout:f64
146              format: [op_v_8]
147          description: Multiplication is infinity if any non zero value is multiplied by infinity.
148        check-type: check-positive
149        code-template: |
150            #
151                fldai.64 0x7ff0000000000000 # +Inf
152                fmovi.64 v0, %s
153            # Mult of +Inf and value
154                fmul2.64 v0
155                fmovi.64 v1, %s
156                fcmpg.64 v1
157        description: Check fmul2.64 with +Inf and various values (NaN, Inf, min, max, numbers).
158        cases:
159          - values:
160              - "1"
161              # Inf
162              - "0x7ff0000000000000"
163          - values:
164              - "-1"
165              # -Inf
166              - "0xFFF0000000000000"
167          - values:
168              # +Inf
169              - "0x7ff0000000000000"
170              # Inf
171              - "0x7ff0000000000000"
172          - values:
173              # -Inf
174              - "0xfff0000000000000"
175              # -Inf
176              - "0xFFF0000000000000"
177          - values:
178              # +max
179              - "0x7fefffffffffffff"
180              # Inf
181              - "0x7FF0000000000000"
182          - values:
183              # -max
184              - "0xffefffffffffffff"
185              # -Inf
186              - "0xFFF0000000000000"
187          - values:
188              # +min
189              - "0x0000000000000001"
190              # Inf
191              - "0x7FF0000000000000"
192          - values:
193              # -min
194              - "0x8000000000000001"
195              # -Inf
196              - "0xFFF0000000000000"
197          - values:
198              - "3.14159265358979323846"
199              # Inf
200              - "0x7FF0000000000000"
201          - values:
202              - "1234567890987654321"
203              # Inf
204              - "0x7FF0000000000000"
205
206      - file-name: "op_vs_8_ninf"
207        isa:
208          instructions:
209            - sig: fmul2.64 v:in:f64
210              acc: inout:f64
211              format: [op_v_8]
212          description: Multiplication is infinity if any non zero value is multiplied by infinity.
213        check-type: check-positive
214        code-template: |
215            #
216                fldai.64 0xfff0000000000000 # -Inf
217                fmovi.64 v0, %s
218            # Mult of -Inf and value
219                fmul2.64 v0
220                fmovi.64 v1, %s
221                fcmpg.64 v1
222        description: Check fmul2.64 with -Inf and various values (NaN, Inf, min, max, numbers).
223        cases:
224            - values:
225                - "1"
226                # -Inf
227                - "0xfff0000000000000"
228            - values:
229                - "-1"
230                # +Inf
231                - "0x7FF0000000000000"
232            - values:
233                # +Inf
234                - "0x7ff0000000000000"
235                # -Inf
236                - "0xfff0000000000000"
237            - values:
238                # -Inf
239                - "0xfff0000000000000"
240                # +Inf
241                - "0x7FF0000000000000"
242            - values:
243                # +max
244                - "0x7fefffffffffffff"
245                # -Inf
246                - "0xfff0000000000000"
247            - values:
248                # -max
249                - "0xffefffffffffffff"
250                # +Inf
251                - "0x7FF0000000000000"
252            - values:
253                # +min
254                - "0x0000000000000001"
255                # -Inf
256                - "0xfff0000000000000"
257            - values:
258                # -min
259                - "0x8000000000000001"
260                # +Inf
261                - "0x7FF0000000000000"
262            - values:
263                - "3.14159265358979323846"
264                # -Inf
265                - "0xfff0000000000000"
266            - values:
267                - "1234567890987654321"
268                # -Inf
269                - "0xfff0000000000000"
270
271      - file-name: "op_vs_8_pzero"
272        isa:
273          instructions:
274            - sig: fmul2.64 v:in:f64
275              acc: inout:f64
276              format: [op_v_8]
277          description: The sign of division or multiplication result is positive if both values have the same sign, negative if the values have different sign.
278        check-type: check-positive
279        code-template: |
280            #
281                fldai.64 0.0 #
282                fmovi.64 v0, %s
283            # Mult of +0.0 and value
284                fmul2.64 v0
285                fmovi.64 v1, %s
286                fcmpg.64 v1
287        description: Check fmul2.64 with +0 and various values (NaN, Inf, min, max, numbers).
288        cases:
289            - values:
290                - "0"
291                - "0"
292            - values:
293                - "-0.0"
294                - "-0.0"
295            - values:
296                - "1"
297                - "0"
298            - values:
299                - "-1"
300                - "-0.0"
301            - values:
302                # +max
303                - "0x7fefffffffffffff"
304                - "0"
305            - values:
306                # -max
307                - "0xffefffffffffffff"
308                - "-0.0"
309            - values:
310                # +min
311                - "0x0000000000000001"
312                - "0"
313            - values:
314                # -min
315                - "0x8000000000000001"
316                - "-0.0"
317            - values:
318                - "3.14159265358979323846"
319                - "0"
320
321      - file-name: "op_vs_8_nzero"
322        isa:
323          instructions:
324            - sig: fmul2.64 v:in:f64
325              acc: inout:f64
326              format: [op_v_8]
327          description: The sign of division or multiplication result is positive if both values have the same sign, negative if the values have different sign.
328        check-type: check-positive
329        code-template: |
330            #
331                fldai.64 -0.0 #
332                fmovi.64 v0, %s
333            # Mult of -0.0 and value
334                fmul2.64 v0
335                fmovi.64 v1, %s
336                fcmpg.64 v1
337        description: Check fmul2.64 with -0 and various values (NaN, Inf, min, max, numbers).
338        cases:
339          - values:
340              - "0"
341              - "0"
342          - values:
343              - "-0.0"
344              - "0"
345          - values:
346              - "1"
347              - "-0.0"
348          - values:
349              - "-1"
350              - "0"
351          - values:
352              # +max
353              - "0x7fefffffffffffff"
354              - "-0.0"
355          - values:
356              # -max
357              - "0xffefffffffffffff"
358              - "0"
359          - values:
360              # +min
361              - "0x0000000000000001"
362              - "-0.0"
363          - values:
364              # -min
365              - "0x8000000000000001"
366              - "0"
367          - values:
368              - "3.14159265358979323846"
369              - "-0.0"
370          - values:
371              - "-3.14159265358979323846"
372              - "0"
373
374      - file-name: "op_vs_8_zero_inf"
375        isa:
376          instructions:
377            - sig: fmul2.64 v:in:f64
378              acc: inout:f64
379              format: [op_v_8]
380          description: >
381            Multiplication is NaN if zero is multiplied by infinity.
382        check-type: check-acc-nan
383        code-template: |
384            #
385                fldai.64 %s
386                fmovi.64 v0, *s
387            # Mult 0 by Inf
388                fmul2.64 v0
389        description: >
390          Check fmul2.64 of 0 and Inf is NaN.
391        template-cases:
392          - values:
393            - "0x7ff0000000000000"
394            exclude: [inf]
395          - values:
396            - "0xfff0000000000000"
397            exclude: [inf]
398          - values:
399            - "0"
400            exclude: [zero]
401          - values:
402            # Negative Zero
403            - "0x8000000000000000"
404            exclude: [zero]
405        cases:
406          - values:
407            - "0x7ff0000000000000"
408            id: inf
409          - values:
410            - "0xfff0000000000000"
411            id: inf
412          - values:
413            - "0"
414            id: zero
415          - values:
416            # Negative Zero
417            - "0x8000000000000000"
418            id: zero
419
420      - file-name: "op_vs_8_pone"
421        isa:
422          instructions:
423            - sig: fmul2.64 v:in:f64
424              acc: inout:f64
425              format: [op_v_8]
426        check-type: check-positive
427        code-template: |
428            #
429                fldai.64 1.0 #
430                fmovi.64 v0, %s
431            # Mult of 1.0 and value
432                fmul2.64 v0
433                fmovi.64 v1, %s
434                fcmpg.64 v1
435        description: Check fmul2.64 with +1 and various values (NaN, Inf, min, max, numbers).
436        cases:
437          - values:
438              # +0.0d
439              - "0"
440              - "0"
441          - values:
442              - "-0.0"
443              - "-0.0"
444          - values:
445              - "1"
446              - "1"
447          - values:
448              - "-1"
449              - "-1"
450          - values:
451              # +Inf
452              - "0x7ff0000000000000"
453              # +Inf
454              - "0x7FF0000000000000"
455          - values:
456              # -Inf
457              - "0xfff0000000000000"
458              # -Inf
459              - "0xFFF0000000000000"
460          - values:
461              # +max
462              - "0x7fefffffffffffff"
463              # +max
464              - "0x7FEFFFFFFFFFFFFF"
465          - values:
466              # -max
467              - "0xFFEFFFFFFFFFFFFF"
468              # -max
469              - "0xFFEFFFFFFFFFFFFF"
470          - values:
471              # +min
472              - "0x0000000000000001"
473              - "0x0000000000000001"
474          - values:
475              # -min
476              - "0x8000000000000001"
477              - "0x8000000000000001"
478          - values:
479              - "3.14159265358979323846"
480              - "3.14159265358979323846"
481          - values:
482              - "-3.14159265358979323846"
483              - "-3.14159265358979323846"
484          - values:
485              - "1234567890.987654321"
486              - "1234567890.987654321"
487
488      - file-name: "op_vs_8_none"
489        isa:
490          instructions:
491            - sig: fmul2.64 v:in:f64
492              acc: inout:f64
493              format: [op_v_8]
494        check-type: check-positive
495        code-template: |
496            #
497                fldai.64 -1.0 #
498                fmovi.64 v0, %s
499            # Mult of -1.0 and value
500                fmul2.64 v0
501                fmovi.64 v1, %s
502                fcmpg.64 v1
503        description: Check fmul2.64 with -1 and various values (NaN, Inf, min, max, numbers).
504        cases:
505          - values:
506              - "0"
507              - "-0.0"
508          - values:
509              - "-0.0"
510              - "0"
511          - values:
512              - "1"
513              - "-1"
514          - values:
515              - "-1"
516              - "1"
517          - values:
518              # +Inf
519              - "0x7ff0000000000000"
520              # -Inf
521              - "0xFFF0000000000000"
522          - values:
523              # -Inf
524              - "0xfff0000000000000"
525              # +Inf
526              - "0x7FF0000000000000"
527          - values:
528              # +max
529              - "0x7fefffffffffffff"
530              - "0xFFEFFFFFFFFFFFFF"
531          - values:
532              # -max
533              - "0xFFEFFFFFFFFFFFFF"
534              - "0x7FEFFFFFFFFFFFFF"
535          - values:
536              # +min
537              - "0x0000000000000001"
538              - "0x8000000000000001"
539          - values:
540              # -min
541              - "0x8000000000000001"
542              - "0x0000000000000001"
543          - values:
544              - "3.14159265358979323846"
545              - "-3.14159265358979323846"
546          - values:
547              - "-3.14159265358979323846"
548              - "3.14159265358979323846"
549          - values:
550              - "1234567890.987654321"
551              - "-1234567890.987654321"
552
553      - file-name: "op_vs_8"
554        isa:
555          instructions:
556            - sig: fmul2.64 v:in:f64
557              acc: inout:f64
558              format: [op_v_8]
559          description: The sign of division or multiplication result is positive if both values have the same sign, negative if the values have different sign.
560        check-type: check-positive
561        code-template: |
562            #
563                fldai.64 %s #
564                fmovi.64 v0, %s
565            # Mult of -1.0 and value
566                fmul2.64 v0
567                fmovi.64 v1, %s
568                fcmpg.64 v1
569        description: Check fmul2.64 with various values (zeroes, Infs, min, max, numbers).
570        cases:
571            - values:
572                - "0.0"
573                - "0.0"
574                - "0.0"
575            - values:
576                - "0.0"
577                - "-0.0"
578                - "-0.0"
579            - values:
580                - "-0.0"
581                - "0.0"
582                - "-0.0"
583            - values:
584                - "-0.0"
585                - "-0.0"
586                - "0.0"
587            - values:
588                - "1.0"
589                - "-1.0"
590                - "-1.0"
591            - values:
592                - "1.0"
593                - "1.0"
594                - "1.0"
595            - values:
596                - "-1.0"
597                - "1.0"
598                - "-1.0"
599            - values:
600                - "1.0e100"
601                - "1.0e100"
602                - "1.0e200"
603            - values:
604                - "1.0e100"
605                - "-1.0e100"
606                - "-1.0e200"
607            - values:
608                - "1.0e+100"
609                - "1.0e-100"
610                - "1.0"
611            - values:
612                - "-1.0e100"
613                - "1.0e100"
614                - "-1.0e200"
615            - values:
616                - "-1.0e-100"
617                - "1.0e-100"
618                - "-1.0e-200"
619            - values:
620                - "-1.0e+100"
621                - "-1.0e-100"
622                - "1.0"
623            - values:
624                - "3.14159265358979323846"
625                - "-3.14159265358979323846"
626                - "-9.869604401089358"
627            - values:
628                - "3.14159265358979323846e100"
629                - "-3.14159265358979323846e100"
630                - "-9.869604401089358e200"
631      - file-name: "op_vs_8_max"
632        isa:
633          instructions:
634            - sig: fmul2.64 v:in:f64
635              acc: inout:f64
636              format: [op_v_8]
637        check-type: check-positive
638        code-template: |
639            #
640                fldai.64 %s
641                fmovi.64 v0, %s
642            # Mult of two values
643                fmul2.64 v0
644                fmovi.64 v1, %s
645                fcmpg.64 v1
646        description: Check fmul2.64 with various max values.
647        cases:
648          - values:
649              # +max
650              - "0x7fefffffffffffff"
651              # +max
652              - "0x7fefffffffffffff"
653              # +Inf
654              - "0x7ff0000000000000"
655          - values:
656              # -max
657              - "0xFFEFFFFFFFFFFFFF"
658              # -max
659              - "0xFFEFFFFFFFFFFFFF"
660              # +Inf
661              - "0x7ff0000000000000"
662          - values:
663              # +max
664              - "0x7fefffffffffffff"
665              # -max
666              - "0xFFEFFFFFFFFFFFFF"
667              # -Inf
668              - "0xfff0000000000000"
669          - values:
670              # +max
671              - "0x7fefffffffffffff"
672              # 1d
673              - "0x3ff0000000000000"
674              # +max
675              - "0x7fefffffffffffff"
676          - values:
677              # +max
678              - "0x7fefffffffffffff"
679              - "-1"
680              # -max
681              - "0xFFEFFFFFFFFFFFFF"
682          - values:
683              # -max
684              - "0xFFEFFFFFFFFFFFFF"
685              - "1"
686              # -max
687              - "0xFFEFFFFFFFFFFFFF"
688          - values:
689              # -max
690              - "0xFFEFFFFFFFFFFFFF"
691              - "-1"
692              # +max
693              - "0x7fefffffffffffff"
694
695      - file-name: "incorrect_reg"
696        isa:
697          instructions:
698            - sig: fmul2.64 v:in:f64
699              acc: inout:f64
700              format: [op_v_8]
701        check-type: none
702        runner-options: [compile-failure]
703        description: Check fmul2.64 with incorrect register numbers.
704        code-template: |
705          #
706              fmul2.64 %s
707        cases:
708          - values: [v256]
709          - values: [v65535]
710          - values: [a0]
711          - values: [a255]
712          - values: [null]
713          - values: [0]
714          - values: [1.1]
715          - values: ['2.2']
716
717      - file-name: "reg_number"
718        isa:
719          instructions:
720            - sig: fmul2.64 v:in:f64
721              acc: inout:f64
722              format: [op_v_8]
723        check-type: none
724        runner-options: [compile-only]
725        description: Check fmul2.64 with correct register numbers.
726        code-template: |
727          #
728              fmul2.64 %s
729        cases:
730          - values: [v0]
731          - values: [v16]
732          - values: [v128]
733          - values: [v255]
734
735      - file-name: "calc"
736        isa:
737          instructions:
738            - sig: fmul2.64 v:in:f64
739              acc: inout:f64
740              format: [op_v_8]
741        check-type: check-positive
742        code-template: |
743            #
744                fldai.64 %s #
745                fmovi.64 v0, %s
746                fmul2.64 v0
747                fmovi.64 v1, %s
748                fcmpg.64 v1
749        description: Check fmul2.64 with various values.
750        tags: ['tsan']
751        cases:
752            - values:
753                - "-0.9312987578177028"
754                - "-0.5269885911022338"
755                - "0.49078382027761164"
756            - values:
757                - "-0.7473367654362506"
758                - "0.5438369269893948"
759                - "-0.4064293299410447"
760            - values:
761                - "0.31647958126146847"
762                - "-0.5745936070002329"
763                - "-0.18184714413895048"
764            - values:
765                - "-0.21032659650962326"
766                - "0.3927316648101664"
767                - "-0.08260191440108049"
768            - values:
769                - "0.10120846222414825"
770                - "0.8246991807586994"
771                - "0.08346653588210284"
772            - values:
773                - "-0.4343271788175138"
774                - "0.7903281236389887"
775                - "-0.34326098428026125"
776            - values:
777                - "-0.20664108305757245"
778                - "0.34935450620458064"
779                - "-0.07219099353315796"
780            - values:
781                - "0.1333693748785436"
782                - "0.3799164493389853"
783                - "0.05066921935441635"
784            - values:
785                - "0.5937602845980485"
786                - "0.1781606722800979"
787                - "0.10578473147721058"
788            - values:
789                - "-0.8800125826624052"
790                - "0.8179463146149306"
791                - "-0.7198030488034813"
792            - values:
793                - "0.36292211209434644"
794                - "-0.6858150664631064"
795                - "-0.24889745242691516"
796            - values:
797                - "-3.9164094519790716e54"
798                - "2.4866884565281146e31"
799                - "-9.738890175273957e85"
800            - values:
801                - "4.868571305821797e-45"
802                - "-2.947689920115564e98"
803                - "-1.4351038563534779e54"
804            - values:
805                - "-4.9232256393438925e75"
806                - "6.468558635915e-93"
807                - "-3.184617372593608e-17"
808            - values:
809                - "-1.3534530635380337e-70"
810                - "3.3934802052784276e43"
811                - "-4.5929161798897635e-27"
812            - values:
813                - "-1.5150156586897712e-5"
814                - "3.7824026868513417e-85"
815                - "-5.730399298050046e-90"
816            - values:
817                - "-6.76727647923816e20"
818                - "4.013410468105432e94"
819                - "-2.7159858262338103e115"
820            - values:
821                - "-8.352558372943342e34"
822                - "-3.157398645567344e28"
823                - "2.637235649375349e63"
824            - values:
825                - "-4.778555666328233e-70"
826                - "-1.325369923134656e-37"
827                - "6.333353956176124e-107"
828            - values:
829                - "4.097369399892121e72"
830                - "3.088334967375387e-13"
831                - "1.2654049191940743e60"
832            - values:
833                - "-2.2726952943288126e-55"
834                - "1.1899191874472758e16"
835                - "-2.704323737942988e-39"
836      - file-name: "type"
837        isa:
838            instructions:
839              - sig: fmul2.64 v:in:f64
840                acc: inout:f64
841                format: [op_v_8]
842            verification:
843              - acc_type
844              - v1_type
845        tags: ['verifier']
846        runner-options: ['verifier-failure', 'verifier-debug-config']
847        header-template: []
848        code-template: |
849          #
850          .record A {}
851          .record B {}
852          .record panda.String <external>
853          .record panda.Object <external>
854          .function i32 main() {
855              %s
856              *s
857              fmul2.64 v0
858        check-type: exit-positive
859        description: Check 'fmul2.64' with incorrect register and accumulator type.
860        template-cases:
861          - values:
862              - movi v0, 0
863          - values:
864              - movi.64 v0, 0
865          - values:
866              - fmovi.64 v0, 0
867            exclude: [val]
868          - values:
869              - |
870                #
871                    lda.type B
872                    sta.obj v0
873          - values:
874              - |
875                #
876                    lda.type B[]
877                    sta.obj v0
878          - values:
879              - |
880                #
881                    lda.type panda.String
882                    sta.obj v0
883          - values:
884              - |
885                #
886                    lda.str "string"
887                    sta.obj v0
888          - values:
889              - |
890                #
891                    movi v0, 10
892                    newarr v0, v0, i32[]
893          - values:
894              - mov.null v0
895
896        cases:
897          - values:
898              - ldai 0
899          - values:
900              - ldai.64 0
901          - values:
902              - fldai.64 0
903            id: val
904          - values:
905              - |
906                #
907                    lda.type A
908          - values:
909              - |
910                #
911                    lda.type A[]
912          - values:
913              - |
914                #
915                    lda.type panda.String
916          - values:
917              - |
918                #
919                    lda.str "string"
920          - values:
921              - |
922                #
923                    movi v1, 10
924                    newarr v1, v1, f64[]
925                    lda.obj v1
926          - values:
927              - lda.null
928
929      - file-name: uninitialized_regs
930        isa:
931          instructions:
932            - sig: fmul2.64 v:in:f64
933              acc: inout:f64
934              format: [op_v_8]
935        description: Check 'fmul2.64' with uninitialized register and accumulator.
936        tags: ['verifier']
937        runner-options: ['verifier-failure', 'verifier-debug-config']
938        header-template: []
939        code-template: |
940            #
941            .function i32 main() {
942                %s
943                *s
944                fmul2.64 %s
945        check-type: exit-positive
946        template-cases:
947          - values:
948              - ''
949              - v0
950          - values:
951              - fmovi.64 v0, 0
952              - v0
953            exclude: [init]
954          - values:
955              - ''
956              - v7
957          - values:
958              - ''
959              - v15
960          - values:
961              - fmovi.64 v15, 0
962              - v15
963            exclude: [init]
964          - values:
965              - ''
966              - v128
967          - values:
968              - fmovi.64 v128, 0
969              - v128
970            exclude: [init]
971          - values:
972              - ''
973              - v255
974          - values:
975              - fmovi.64 v255, 0
976              - v255
977            exclude: [init]
978        cases:
979          - values:
980              - ''
981          - values:
982              - fldai.64 0
983            id: init
984