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