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