1/* 2 * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29/* 30 * Method execution control 31 * 32 * Huge, many levels embedded {Switch, Case, Default} 33 * The test similar to ctl2 34 */ 35 36/* 37See comments, dipper ???? 38identical to ctl2 39do for 3 states in tests were there are not Defaults for all - 0,1,2 values 40use the same methods for several SW0X 41*/ 42 43// Switch, Case, Default operators 44 45Name(z069, 69) 46 47// The maximal number of temporary variables 48// (_T_X) on ACPICA is equal to 36. 49Name(TMAX, 36) 50 51Name(b0sw, Buffer(TMAX) {}) 52 53// Put value to all elements of buffer 54Method(m0c1, 1, Serialized) 55{ 56 Name(lpN0, 0) 57 Name(lpC0, 0) 58 59 Store(TMAX, lpN0) 60 61 While (lpN0) { 62 Store(arg0, Index(b0sw, lpC0)) 63 Decrement(lpN0) 64 Increment(lpC0) 65 } 66} 67 68Method(m0c0) 69{ 70 // equivalent to embedded if (36 levels): 71 // if(){ if() { if() {...... 72 // }}} 73 74 Store(0x12345678, Local0) 75 76 Switch (DeRefOf(Index(b0sw, 0))) { 77 Case (0) { 78 Store(0, Local0) 79 Switch (DeRefOf(Index(b0sw, 1))) { 80 Case (0) { 81 Store(1, Local0) 82 Switch (DeRefOf(Index(b0sw, 2))) { 83 Case (0) { 84 Store(2, Local0) 85 Switch (DeRefOf(Index(b0sw, 3))) { 86 Case (0) { 87 Store(3, Local0) 88 Switch (DeRefOf(Index(b0sw, 4))) { 89 Case (0) { 90 Store(4, Local0) 91 Switch (DeRefOf(Index(b0sw, 5))) { 92 Case (0) { 93 Store(5, Local0) 94 Switch (DeRefOf(Index(b0sw, 6))) { 95 Case (0) { 96 Store(6, Local0) 97 Switch (DeRefOf(Index(b0sw, 7))) { 98 Case (0) { 99 Store(7, Local0) 100 Switch (DeRefOf(Index(b0sw, 8))) { 101 Case (0) { 102 Store(8, Local0) 103 Switch (DeRefOf(Index(b0sw, 9))) { 104 Case (0) { 105 Store(9, Local0) 106 Switch (DeRefOf(Index(b0sw, 10))) { 107 Case (0) { 108 Store(10, Local0) 109 Switch (DeRefOf(Index(b0sw, 11))) { 110 Case (0) { 111 Store(11, Local0) 112 Switch (DeRefOf(Index(b0sw, 12))) { 113 Case (0) { 114 Store(12, Local0) 115 Switch (DeRefOf(Index(b0sw, 13))) { 116 Case (0) { 117 Store(13, Local0) 118 Switch (DeRefOf(Index(b0sw, 14))) { 119 Case (0) { 120 Store(14, Local0) 121 Switch (DeRefOf(Index(b0sw, 15))) { 122 Case (0) { 123 Store(15, Local0) 124 Switch (DeRefOf(Index(b0sw, 16))) { 125 Case (0) { 126 Store(16, Local0) 127 Switch (DeRefOf(Index(b0sw, 17))) { 128 Case (0) { 129 Store(17, Local0) 130 Switch (DeRefOf(Index(b0sw, 18))) { 131 Case (0) { 132 Store(18, Local0) 133 Switch (DeRefOf(Index(b0sw, 19))) { 134 Case (0) { 135 Store(19, Local0) 136 Switch (DeRefOf(Index(b0sw, 20))) { 137 Case (0) { 138 Store(20, Local0) 139 Switch (DeRefOf(Index(b0sw, 21))) { 140 Case (0) { 141 Store(21, Local0) 142 Switch (DeRefOf(Index(b0sw, 22))) { 143 Case (0) { 144 Store(22, Local0) 145 Switch (DeRefOf(Index(b0sw, 23))) { 146 Case (0) { 147 Store(23, Local0) 148 Switch (DeRefOf(Index(b0sw, 24))) { 149 Case (0) { 150 Store(24, Local0) 151 Switch (DeRefOf(Index(b0sw, 25))) { 152 Case (0) { 153 Store(25, Local0) 154 Switch (DeRefOf(Index(b0sw, 26))) { 155 Case (0) { 156 Store(26, Local0) 157 Switch (DeRefOf(Index(b0sw, 27))) { 158 Case (0) { 159 Store(27, Local0) 160 Switch (DeRefOf(Index(b0sw, 28))) { 161 Case (0) { 162 Store(28, Local0) 163 Switch (DeRefOf(Index(b0sw, 29))) { 164 Case (0) { 165 Store(29, Local0) 166 Switch (DeRefOf(Index(b0sw, 30))) { 167 Case (0) { 168 Store(30, Local0) 169 Switch (DeRefOf(Index(b0sw, 31))) { 170 Case (0) { 171 Store(31, Local0) 172 Switch (DeRefOf(Index(b0sw, 32))) { 173 Case (0) { 174 Store(32, Local0) 175 Switch (DeRefOf(Index(b0sw, 33))) { 176 Case (0) { 177 Store(33, Local0) 178 Switch (DeRefOf(Index(b0sw, 34))) { 179 Case (0) { 180 Store(34, Local0) 181 Switch (DeRefOf(Index(b0sw, 35))) { 182 Case (0) { 183 Store(35, Local0) 184 }} 185 }} 186 }} 187 }} 188 }} 189 }} 190 }} 191 }} 192 }} 193 }} 194 }} 195 }} 196 }} 197 }} 198 }} 199 }} 200 }} 201 }} 202 }} 203 }} 204 }} 205 }} 206 }} 207 }} 208 }} 209 }} 210 }} 211 }} 212 }} 213 }} 214 }} 215 }} 216 }} 217 }} 218 }} 219 }} 220 221 return (Local0) 222} 223 224// Run-method 225Method(SW02,, Serialized) 226{ 227 Store("TEST: SW02, Switch, Case, Default operators", Debug) 228 229 Name(ts, "SW02") 230 231 Name(lpN0, 0) 232 Name(lpC0, 0) 233 234 // Check each Switch/Case(0) pair 235 // from dipper pair to upper one. 236 237 Store(TMAX, lpN0) 238 Store(0, lpC0) 239 m0c1(0) 240 241 While (lpN0) { 242 Store(m0c0(), Local1) 243 Decrement(lpN0) 244 Increment(lpC0) 245 if (LNotEqual(Local1, lpN0)) { 246 err(ts, z069, __LINE__, 0, 0, Local1, lpN0) 247 return (Ones) 248 } 249 Store(1, Index(b0sw, lpN0)) 250 } 251 252 return (0) 253} 254 255Method(m0c2) 256{ 257 // equivalent to embedded if (36 levels): 258 // if(){ 259 // if(){ 260 // if(){ 261 // ... 262 // } else { 263 // } 264 // } else { 265 // } 266 // } else { 267 // } 268 269 Store(0x12345678, Local0) 270 271 Switch (DeRefOf(Index(b0sw, 0))) { 272 Case (0) { 273 Store(0, Local0) 274 Switch (DeRefOf(Index(b0sw, 1))) { 275 Case (0) { 276 Store(1, Local0) 277 Switch (DeRefOf(Index(b0sw, 2))) { 278 Case (0) { 279 Store(2, Local0) 280 Switch (DeRefOf(Index(b0sw, 3))) { 281 Case (0) { 282 Store(3, Local0) 283 Switch (DeRefOf(Index(b0sw, 4))) { 284 Case (0) { 285 Store(4, Local0) 286 Switch (DeRefOf(Index(b0sw, 5))) { 287 Case (0) { 288 Store(5, Local0) 289 Switch (DeRefOf(Index(b0sw, 6))) { 290 Case (0) { 291 Store(6, Local0) 292 Switch (DeRefOf(Index(b0sw, 7))) { 293 Case (0) { 294 Store(7, Local0) 295 Switch (DeRefOf(Index(b0sw, 8))) { 296 Case (0) { 297 Store(8, Local0) 298 Switch (DeRefOf(Index(b0sw, 9))) { 299 Case (0) { 300 Store(9, Local0) 301 Switch (DeRefOf(Index(b0sw, 10))) { 302 Case (0) { 303 Store(10, Local0) 304 Switch (DeRefOf(Index(b0sw, 11))) { 305 Case (0) { 306 Store(11, Local0) 307 Switch (DeRefOf(Index(b0sw, 12))) { 308 Case (0) { 309 Store(12, Local0) 310 Switch (DeRefOf(Index(b0sw, 13))) { 311 Case (0) { 312 Store(13, Local0) 313 Switch (DeRefOf(Index(b0sw, 14))) { 314 Case (0) { 315 Store(14, Local0) 316 Switch (DeRefOf(Index(b0sw, 15))) { 317 Case (0) { 318 Store(15, Local0) 319 Switch (DeRefOf(Index(b0sw, 16))) { 320 Case (0) { 321 Store(16, Local0) 322 Switch (DeRefOf(Index(b0sw, 17))) { 323 Case (0) { 324 Store(17, Local0) 325 Switch (DeRefOf(Index(b0sw, 18))) { 326 Case (0) { 327 Store(18, Local0) 328 Switch (DeRefOf(Index(b0sw, 19))) { 329 Case (0) { 330 Store(19, Local0) 331 Switch (DeRefOf(Index(b0sw, 20))) { 332 Case (0) { 333 Store(20, Local0) 334 Switch (DeRefOf(Index(b0sw, 21))) { 335 Case (0) { 336 Store(21, Local0) 337 Switch (DeRefOf(Index(b0sw, 22))) { 338 Case (0) { 339 Store(22, Local0) 340 Switch (DeRefOf(Index(b0sw, 23))) { 341 Case (0) { 342 Store(23, Local0) 343 Switch (DeRefOf(Index(b0sw, 24))) { 344 Case (0) { 345 Store(24, Local0) 346 Switch (DeRefOf(Index(b0sw, 25))) { 347 Case (0) { 348 Store(25, Local0) 349 Switch (DeRefOf(Index(b0sw, 26))) { 350 Case (0) { 351 Store(26, Local0) 352 Switch (DeRefOf(Index(b0sw, 27))) { 353 Case (0) { 354 Store(27, Local0) 355 Switch (DeRefOf(Index(b0sw, 28))) { 356 Case (0) { 357 Store(28, Local0) 358 Switch (DeRefOf(Index(b0sw, 29))) { 359 Case (0) { 360 Store(29, Local0) 361 Switch (DeRefOf(Index(b0sw, 30))) { 362 Case (0) { 363 Store(30, Local0) 364 Switch (DeRefOf(Index(b0sw, 31))) { 365 Case (0) { 366 Store(31, Local0) 367 Switch (DeRefOf(Index(b0sw, 32))) { 368 Case (0) { 369 Store(32, Local0) 370 Switch (DeRefOf(Index(b0sw, 33))) { 371 Case (0) { 372 Store(33, Local0) 373 Switch (DeRefOf(Index(b0sw, 34))) { 374 Case (0) { 375 Store(34, Local0) 376 Switch (DeRefOf(Index(b0sw, 35))) { 377 Case (0) { 378 Store(35, Local0) 379 } 380 Case (1) { 381 Store(71, Local0) 382 }} 383 } 384 Case (1) { 385 Store(70, Local0) 386 }} 387 } 388 Case (1) { 389 Store(69, Local0) 390 }} 391 } 392 Case (1) { 393 Store(68, Local0) 394 }} 395 } 396 Case (1) { 397 Store(67, Local0) 398 }} 399 } 400 Case (1) { 401 Store(66, Local0) 402 }} 403 } 404 Case (1) { 405 Store(65, Local0) 406 }} 407 } 408 Case (1) { 409 Store(64, Local0) 410 }} 411 } 412 Case (1) { 413 Store(63, Local0) 414 }} 415 } 416 Case (1) { 417 Store(62, Local0) 418 }} 419 } 420 Case (1) { 421 Store(61, Local0) 422 }} 423 } 424 Case (1) { 425 Store(60, Local0) 426 }} 427 } 428 Case (1) { 429 Store(59, Local0) 430 }} 431 } 432 Case (1) { 433 Store(58, Local0) 434 }} 435 } 436 Case (1) { 437 Store(57, Local0) 438 }} 439 } 440 Case (1) { 441 Store(56, Local0) 442 }} 443 } 444 Case (1) { 445 Store(55, Local0) 446 }} 447 } 448 Case (1) { 449 Store(54, Local0) 450 }} 451 } 452 Case (1) { 453 Store(53, Local0) 454 }} 455 } 456 Case (1) { 457 Store(52, Local0) 458 }} 459 } 460 Case (1) { 461 Store(51, Local0) 462 }} 463 } 464 Case (1) { 465 Store(50, Local0) 466 }} 467 } 468 Case (1) { 469 Store(49, Local0) 470 }} 471 } 472 Case (1) { 473 Store(48, Local0) 474 }} 475 } 476 Case (1) { 477 Store(47, Local0) 478 }} 479 } 480 Case (1) { 481 Store(46, Local0) 482 }} 483 } 484 Case (1) { 485 Store(45, Local0) 486 }} 487 } 488 Case (1) { 489 Store(44, Local0) 490 }} 491 } 492 Case (1) { 493 Store(43, Local0) 494 }} 495 } 496 Case (1) { 497 Store(42, Local0) 498 }} 499 } 500 Case (1) { 501 Store(41, Local0) 502 }} 503 } 504 Case (1) { 505 Store(40, Local0) 506 }} 507 } 508 Case (1) { 509 Store(39, Local0) 510 }} 511 } 512 Case (1) { 513 Store(38, Local0) 514 }} 515 } 516 Case (1) { 517 Store(37, Local0) 518 }} 519 } 520 Case (1) { 521 Store(36, Local0) 522 }} 523 524 return (Local0) 525} 526 527// Run-method 528Method(SW03,, Serialized) 529{ 530 Store("TEST: SW03, Switch, Case, Default operators", Debug) 531 532 Name(ts, "SW03") 533 534 Name(lpN0, 0) 535 Name(lpC0, 0) 536 537 // Check each Switch/Case(0) pair 538 // from dipper pair to upper one. 539 540 Store(TMAX, lpN0) 541 Store(0, lpC0) 542 m0c1(0) 543 544 While (lpN0) { 545 Store(m0c2(), Local1) 546 Decrement(lpN0) 547 Increment(lpC0) 548 if (LNotEqual(Local1, lpN0)) { 549 err(ts, z069, __LINE__, 0, 0, Local1, lpN0) 550 return (Ones) 551 } 552 Store(2, Index(b0sw, lpN0)) 553 } 554 555 // Check each Switch/Case(1) pair 556 // from dipper pair to upper one. 557 558 Store(TMAX, lpN0) 559 Store(0, lpC0) 560 m0c1(0) 561 562 While (lpN0) { 563 Subtract(lpN0, 1, Local7) 564 Store(1, Index(b0sw, Local7)) 565 Store(m0c2(), Local1) 566 Decrement(lpN0) 567 Increment(lpC0) 568 Add(TMAX, lpN0, Local7) 569 if (LNotEqual(Local1, Local7)) { 570 err(ts, z069, __LINE__, 0, 0, Local1, Local7) 571 return (Ones) 572 } 573 } 574 575 return (0) 576} 577 578Method(m0c3) 579{ 580 // equivalent to embedded else (36 levels): 581 // if(){ 582 // } else { 583 // if(){ 584 // } else { 585 // if(){ 586 // } else { 587 // ... 588 // } 589 // } 590 // } 591 592 Store(0x12345678, Local0) 593 594 Switch (DeRefOf(Index(b0sw, 0))) { 595 Case (0) { 596 Store(0, Local0) 597 } 598 Default { 599 Store(36, Local0) 600 601 Switch (DeRefOf(Index(b0sw, 1))) { 602 Case (0) { 603 Store(1, Local0) 604 } 605 Default { 606 Store(37, Local0) 607 608 Switch (DeRefOf(Index(b0sw, 2))) { 609 Case (0) { 610 Store(2, Local0) 611 } 612 Default { 613 Store(38, Local0) 614 615 Switch (DeRefOf(Index(b0sw, 3))) { 616 Case (0) { 617 Store(3, Local0) 618 } 619 Default { 620 Store(39, Local0) 621 622 Switch (DeRefOf(Index(b0sw, 4))) { 623 Case (0) { 624 Store(4, Local0) 625 } 626 Default { 627 Store(40, Local0) 628 629 Switch (DeRefOf(Index(b0sw, 5))) { 630 Case (0) { 631 Store(5, Local0) 632 } 633 Default { 634 Store(41, Local0) 635 636 Switch (DeRefOf(Index(b0sw, 6))) { 637 Case (0) { 638 Store(6, Local0) 639 } 640 Default { 641 Store(42, Local0) 642 643 Switch (DeRefOf(Index(b0sw, 7))) { 644 Case (0) { 645 Store(7, Local0) 646 } 647 Default { 648 Store(43, Local0) 649 650 Switch (DeRefOf(Index(b0sw, 8))) { 651 Case (0) { 652 Store(8, Local0) 653 } 654 Default { 655 Store(44, Local0) 656 657 Switch (DeRefOf(Index(b0sw, 9))) { 658 Case (0) { 659 Store(9, Local0) 660 } 661 Default { 662 Store(45, Local0) 663 664 Switch (DeRefOf(Index(b0sw, 10))) { 665 Case (0) { 666 Store(10, Local0) 667 } 668 Default { 669 Store(46, Local0) 670 671 Switch (DeRefOf(Index(b0sw, 11))) { 672 Case (0) { 673 Store(11, Local0) 674 } 675 Default { 676 Store(47, Local0) 677 678 Switch (DeRefOf(Index(b0sw, 12))) { 679 Case (0) { 680 Store(12, Local0) 681 } 682 Default { 683 Store(48, Local0) 684 685 Switch (DeRefOf(Index(b0sw, 13))) { 686 Case (0) { 687 Store(13, Local0) 688 } 689 Default { 690 Store(49, Local0) 691 692 Switch (DeRefOf(Index(b0sw, 14))) { 693 Case (0) { 694 Store(14, Local0) 695 } 696 Default { 697 Store(50, Local0) 698 699 Switch (DeRefOf(Index(b0sw, 15))) { 700 Case (0) { 701 Store(15, Local0) 702 } 703 Default { 704 Store(51, Local0) 705 706 Switch (DeRefOf(Index(b0sw, 16))) { 707 Case (0) { 708 Store(16, Local0) 709 } 710 Default { 711 Store(52, Local0) 712 713 Switch (DeRefOf(Index(b0sw, 17))) { 714 Case (0) { 715 Store(17, Local0) 716 } 717 Default { 718 Store(53, Local0) 719 720 Switch (DeRefOf(Index(b0sw, 18))) { 721 Case (0) { 722 Store(18, Local0) 723 } 724 Default { 725 Store(54, Local0) 726 727 Switch (DeRefOf(Index(b0sw, 19))) { 728 Case (0) { 729 Store(19, Local0) 730 } 731 Default { 732 Store(55, Local0) 733 734 Switch (DeRefOf(Index(b0sw, 20))) { 735 Case (0) { 736 Store(20, Local0) 737 } 738 Default { 739 Store(56, Local0) 740 741 Switch (DeRefOf(Index(b0sw, 21))) { 742 Case (0) { 743 Store(21, Local0) 744 } 745 Default { 746 Store(57, Local0) 747 748 Switch (DeRefOf(Index(b0sw, 22))) { 749 Case (0) { 750 Store(22, Local0) 751 } 752 Default { 753 Store(58, Local0) 754 755 Switch (DeRefOf(Index(b0sw, 23))) { 756 Case (0) { 757 Store(23, Local0) 758 } 759 Default { 760 Store(59, Local0) 761 762 Switch (DeRefOf(Index(b0sw, 24))) { 763 Case (0) { 764 Store(24, Local0) 765 } 766 Default { 767 Store(60, Local0) 768 769 Switch (DeRefOf(Index(b0sw, 25))) { 770 Case (0) { 771 Store(25, Local0) 772 } 773 Default { 774 Store(61, Local0) 775 776 Switch (DeRefOf(Index(b0sw, 26))) { 777 Case (0) { 778 Store(26, Local0) 779 } 780 Default { 781 Store(62, Local0) 782 783 Switch (DeRefOf(Index(b0sw, 27))) { 784 Case (0) { 785 Store(27, Local0) 786 } 787 Default { 788 Store(63, Local0) 789 790 Switch (DeRefOf(Index(b0sw, 28))) { 791 Case (0) { 792 Store(28, Local0) 793 } 794 Default { 795 Store(64, Local0) 796 797 Switch (DeRefOf(Index(b0sw, 29))) { 798 Case (0) { 799 Store(29, Local0) 800 } 801 Default { 802 Store(65, Local0) 803 804 Switch (DeRefOf(Index(b0sw, 30))) { 805 Case (0) { 806 Store(30, Local0) 807 } 808 Default { 809 Store(66, Local0) 810 811 Switch (DeRefOf(Index(b0sw, 31))) { 812 Case (0) { 813 Store(31, Local0) 814 } 815 Default { 816 Store(67, Local0) 817 818 Switch (DeRefOf(Index(b0sw, 32))) { 819 Case (0) { 820 Store(32, Local0) 821 } 822 Default { 823 Store(68, Local0) 824 825 Switch (DeRefOf(Index(b0sw, 33))) { 826 Case (0) { 827 Store(33, Local0) 828 } 829 Default { 830 Store(69, Local0) 831 832 Switch (DeRefOf(Index(b0sw, 34))) { 833 Case (0) { 834 Store(34, Local0) 835 } 836 Default { 837 Store(70, Local0) 838 839 Switch (DeRefOf(Index(b0sw, 35))) { 840 Case (0) { 841 Store(35, Local0) 842 } 843 Default { 844 Store(71, Local0) 845 }} 846 }} 847 }} 848 }} 849 }} 850 }} 851 }} 852 }} 853 }} 854 }} 855 }} 856 }} 857 }} 858 }} 859 }} 860 }} 861 }} 862 }} 863 }} 864 }} 865 }} 866 }} 867 }} 868 }} 869 }} 870 }} 871 }} 872 }} 873 }} 874 }} 875 }} 876 }} 877 }} 878 }} 879 }} 880 }} 881 882 return (Local0) 883} 884 885// Run-method 886Method(SW04,, Serialized) 887{ 888 Store("TEST: SW04, Switch, Case, Default operators", Debug) 889 890 Name(ts, "SW04") 891 892 Name(lpN0, 0) 893 Name(lpC0, 0) 894 895 896 // Check each Switch/Case(0) pair 897 // from dipper pair to upper one. 898 899 Store(TMAX, lpN0) 900 Store(0, lpC0) 901 m0c1(1) 902 903 Multiply(TMAX, 2, Local7) 904 Decrement(Local7) 905 906 // Check dippest Switch/Default pair 907 908 Store(m0c3(), Local1) 909 if (LNotEqual(Local1, Local7)) { 910 err(ts, z069, __LINE__, 0, 0, Local1, Local7) 911 return (Ones) 912 } 913 914 // Check each Switch/Case(0) pair 915 // from dipper pair to upper one, 916 // while go through all the previous Defaults. 917 918 While (lpN0) { 919 Subtract(lpN0, 1, Local7) 920 Store(0, Index(b0sw, Local7)) 921 Store(m0c3(), Local1) 922 Decrement(lpN0) 923 Increment(lpC0) 924 if (LNotEqual(Local1, lpN0)) { 925 err(ts, z069, __LINE__, 0, 0, Local1, lpN0) 926 return (Ones) 927 } 928 } 929 930 return (0) 931} 932 933Method(m0c4, 1) 934{ 935 // equivalent to elseif (101): 936 // if() { 937 // } elseif() { 938 // } elseif() { 939 // ... 940 // } elseif() { 941 // } 942 943 Store(0x12345678, Local0) 944 945 Switch (Arg0) { 946 Case (0) { 947 Store(0, Local0) 948 } 949 Case (1) { 950 Store(1, Local0) 951 } 952 Case (2) { 953 Store(2, Local0) 954 } 955 Case (3) { 956 Store(3, Local0) 957 } 958 Case (4) { 959 Store(4, Local0) 960 } 961 Case (5) { 962 Store(5, Local0) 963 } 964 Case (6) { 965 Store(6, Local0) 966 } 967 Case (7) { 968 Store(7, Local0) 969 } 970 Case (8) { 971 Store(8, Local0) 972 } 973 Case (9) { 974 Store(9, Local0) 975 } 976 Case (10) { 977 Store(10, Local0) 978 } 979 Case (11) { 980 Store(11, Local0) 981 } 982 Case (12) { 983 Store(12, Local0) 984 } 985 Case (13) { 986 Store(13, Local0) 987 } 988 Case (14) { 989 Store(14, Local0) 990 } 991 Case (15) { 992 Store(15, Local0) 993 } 994 Case (16) { 995 Store(16, Local0) 996 } 997 Case (17) { 998 Store(17, Local0) 999 } 1000 Case (18) { 1001 Store(18, Local0) 1002 } 1003 Case (19) { 1004 Store(19, Local0) 1005 } 1006 Case (20) { 1007 Store(20, Local0) 1008 } 1009 Case (21) { 1010 Store(21, Local0) 1011 } 1012 Case (22) { 1013 Store(22, Local0) 1014 } 1015 Case (23) { 1016 Store(23, Local0) 1017 } 1018 Case (24) { 1019 Store(24, Local0) 1020 } 1021 Case (25) { 1022 Store(25, Local0) 1023 } 1024 Case (26) { 1025 Store(26, Local0) 1026 } 1027 Case (27) { 1028 Store(27, Local0) 1029 } 1030 Case (28) { 1031 Store(28, Local0) 1032 } 1033 Case (29) { 1034 Store(29, Local0) 1035 } 1036 Case (30) { 1037 Store(30, Local0) 1038 } 1039 Case (31) { 1040 Store(31, Local0) 1041 } 1042 Case (32) { 1043 Store(32, Local0) 1044 } 1045 Case (33) { 1046 Store(33, Local0) 1047 } 1048 Case (34) { 1049 Store(34, Local0) 1050 } 1051 Case (35) { 1052 Store(35, Local0) 1053 } 1054 Case (36) { 1055 Store(36, Local0) 1056 } 1057 Case (37) { 1058 Store(37, Local0) 1059 } 1060 Case (38) { 1061 Store(38, Local0) 1062 } 1063 Case (39) { 1064 Store(39, Local0) 1065 } 1066 Case (40) { 1067 Store(40, Local0) 1068 } 1069 Case (41) { 1070 Store(41, Local0) 1071 } 1072 Case (42) { 1073 Store(42, Local0) 1074 } 1075 Case (43) { 1076 Store(43, Local0) 1077 } 1078 Case (44) { 1079 Store(44, Local0) 1080 } 1081 Case (45) { 1082 Store(45, Local0) 1083 } 1084 Case (46) { 1085 Store(46, Local0) 1086 } 1087 Case (47) { 1088 Store(47, Local0) 1089 } 1090 Case (48) { 1091 Store(48, Local0) 1092 } 1093 Case (49) { 1094 Store(49, Local0) 1095 } 1096 1097 //////////////////////// 1098 Default { 1099 Store(100, Local0) 1100 } 1101 //////////////////////// 1102 1103 Case (50) { 1104 Store(50, Local0) 1105 } 1106 Case (51) { 1107 Store(51, Local0) 1108 } 1109 Case (52) { 1110 Store(52, Local0) 1111 } 1112 Case (53) { 1113 Store(53, Local0) 1114 } 1115 Case (54) { 1116 Store(54, Local0) 1117 } 1118 Case (55) { 1119 Store(55, Local0) 1120 } 1121 Case (56) { 1122 Store(56, Local0) 1123 } 1124 Case (57) { 1125 Store(57, Local0) 1126 } 1127 Case (58) { 1128 Store(58, Local0) 1129 } 1130 Case (59) { 1131 Store(59, Local0) 1132 } 1133 Case (60) { 1134 Store(60, Local0) 1135 } 1136 Case (61) { 1137 Store(61, Local0) 1138 } 1139 Case (62) { 1140 Store(62, Local0) 1141 } 1142 Case (63) { 1143 Store(63, Local0) 1144 } 1145 Case (64) { 1146 Store(64, Local0) 1147 } 1148 Case (65) { 1149 Store(65, Local0) 1150 } 1151 Case (66) { 1152 Store(66, Local0) 1153 } 1154 Case (67) { 1155 Store(67, Local0) 1156 } 1157 Case (68) { 1158 Store(68, Local0) 1159 } 1160 Case (69) { 1161 Store(69, Local0) 1162 } 1163 Case (70) { 1164 Store(70, Local0) 1165 } 1166 Case (71) { 1167 Store(71, Local0) 1168 } 1169 Case (72) { 1170 Store(72, Local0) 1171 } 1172 Case (73) { 1173 Store(73, Local0) 1174 } 1175 Case (74) { 1176 Store(74, Local0) 1177 } 1178 Case (75) { 1179 Store(75, Local0) 1180 } 1181 Case (76) { 1182 Store(76, Local0) 1183 } 1184 Case (77) { 1185 Store(77, Local0) 1186 } 1187 Case (78) { 1188 Store(78, Local0) 1189 } 1190 Case (79) { 1191 Store(79, Local0) 1192 } 1193 Case (80) { 1194 Store(80, Local0) 1195 } 1196 Case (81) { 1197 Store(81, Local0) 1198 } 1199 Case (82) { 1200 Store(82, Local0) 1201 } 1202 Case (83) { 1203 Store(83, Local0) 1204 } 1205 Case (84) { 1206 Store(84, Local0) 1207 } 1208 Case (85) { 1209 Store(85, Local0) 1210 } 1211 Case (86) { 1212 Store(86, Local0) 1213 } 1214 Case (87) { 1215 Store(87, Local0) 1216 } 1217 Case (88) { 1218 Store(88, Local0) 1219 } 1220 Case (89) { 1221 Store(89, Local0) 1222 } 1223 Case (90) { 1224 Store(90, Local0) 1225 } 1226 Case (91) { 1227 Store(91, Local0) 1228 } 1229 Case (92) { 1230 Store(92, Local0) 1231 } 1232 Case (93) { 1233 Store(93, Local0) 1234 } 1235 Case (94) { 1236 Store(94, Local0) 1237 } 1238 Case (95) { 1239 Store(95, Local0) 1240 } 1241 Case (96) { 1242 Store(96, Local0) 1243 } 1244 Case (97) { 1245 Store(97, Local0) 1246 } 1247 Case (98) { 1248 Store(98, Local0) 1249 } 1250 Case (99) { 1251 Store(99, Local0) 1252 } 1253 } 1254 1255 return (Local0) 1256} 1257 1258// Run-method 1259Method(SW05,, Serialized) 1260{ 1261 Store("TEST: SW05, Switch, Case, Default operators", Debug) 1262 1263 Name(ts, "SW05") 1264 1265 Name(lpN0, 101) 1266 Name(lpC0, 0) 1267 1268 // Check ?????????????????? 1269 1270 While (lpN0) { 1271 1272 Store(m0c4(lpC0), Local1) 1273 if (LNotEqual(Local1, lpC0)) { 1274 err(ts, z069, __LINE__, 0, 0, Local1, lpC0) 1275 return (Ones) 1276 } 1277 Decrement(lpN0) 1278 Increment(lpC0) 1279 } 1280 1281 return (0) 1282} 1283 1284Method(m0c5) 1285{ 1286 // equivalent to embedded elseif (36 levels): 1287 // if() { 1288 // } elseif() { 1289 // if() { 1290 // } elseif() { 1291 // if() { 1292 // } elseif() { 1293 // ... 1294 // } 1295 // } 1296 // } 1297 1298 Store(0x12345678, Local0) 1299 1300 Switch (DeRefOf(Index(b0sw, 0))) { 1301 Case (0) { 1302 Store(0, Local0) 1303 } 1304 Case (1) { 1305 Store(36, Local0) 1306 1307 Switch (DeRefOf(Index(b0sw, 1))) { 1308 Case (0) { 1309 Store(1, Local0) 1310 } 1311 Case (1) { 1312 Store(37, Local0) 1313 1314 Switch (DeRefOf(Index(b0sw, 2))) { 1315 Case (0) { 1316 Store(2, Local0) 1317 } 1318 Case (1) { 1319 Store(38, Local0) 1320 1321 Switch (DeRefOf(Index(b0sw, 3))) { 1322 Case (0) { 1323 Store(3, Local0) 1324 } 1325 Case (1) { 1326 Store(39, Local0) 1327 1328 Switch (DeRefOf(Index(b0sw, 4))) { 1329 Case (0) { 1330 Store(4, Local0) 1331 } 1332 Case (1) { 1333 Store(40, Local0) 1334 1335 Switch (DeRefOf(Index(b0sw, 5))) { 1336 Case (0) { 1337 Store(5, Local0) 1338 } 1339 Case (1) { 1340 Store(41, Local0) 1341 1342 Switch (DeRefOf(Index(b0sw, 6))) { 1343 Case (0) { 1344 Store(6, Local0) 1345 } 1346 Case (1) { 1347 Store(42, Local0) 1348 1349 Switch (DeRefOf(Index(b0sw, 7))) { 1350 Case (0) { 1351 Store(7, Local0) 1352 } 1353 Case (1) { 1354 Store(43, Local0) 1355 1356 Switch (DeRefOf(Index(b0sw, 8))) { 1357 Case (0) { 1358 Store(8, Local0) 1359 } 1360 Case (1) { 1361 Store(44, Local0) 1362 1363 Switch (DeRefOf(Index(b0sw, 9))) { 1364 Case (0) { 1365 Store(9, Local0) 1366 } 1367 Case (1) { 1368 Store(45, Local0) 1369 1370 Switch (DeRefOf(Index(b0sw, 10))) { 1371 Case (0) { 1372 Store(10, Local0) 1373 } 1374 Case (1) { 1375 Store(46, Local0) 1376 1377 Switch (DeRefOf(Index(b0sw, 11))) { 1378 Case (0) { 1379 Store(11, Local0) 1380 } 1381 Case (1) { 1382 Store(47, Local0) 1383 1384 Switch (DeRefOf(Index(b0sw, 12))) { 1385 Case (0) { 1386 Store(12, Local0) 1387 } 1388 Case (1) { 1389 Store(48, Local0) 1390 1391 Switch (DeRefOf(Index(b0sw, 13))) { 1392 Case (0) { 1393 Store(13, Local0) 1394 } 1395 Case (1) { 1396 Store(49, Local0) 1397 1398 Switch (DeRefOf(Index(b0sw, 14))) { 1399 Case (0) { 1400 Store(14, Local0) 1401 } 1402 Case (1) { 1403 Store(50, Local0) 1404 1405 Switch (DeRefOf(Index(b0sw, 15))) { 1406 Case (0) { 1407 Store(15, Local0) 1408 } 1409 Case (1) { 1410 Store(51, Local0) 1411 1412 Switch (DeRefOf(Index(b0sw, 16))) { 1413 Case (0) { 1414 Store(16, Local0) 1415 } 1416 Case (1) { 1417 Store(52, Local0) 1418 1419 Switch (DeRefOf(Index(b0sw, 17))) { 1420 Case (0) { 1421 Store(17, Local0) 1422 } 1423 Case (1) { 1424 Store(53, Local0) 1425 1426 Switch (DeRefOf(Index(b0sw, 18))) { 1427 Case (0) { 1428 Store(18, Local0) 1429 } 1430 Case (1) { 1431 Store(54, Local0) 1432 1433 Switch (DeRefOf(Index(b0sw, 19))) { 1434 Case (0) { 1435 Store(19, Local0) 1436 } 1437 Case (1) { 1438 Store(55, Local0) 1439 1440 Switch (DeRefOf(Index(b0sw, 20))) { 1441 Case (0) { 1442 Store(20, Local0) 1443 } 1444 Case (1) { 1445 Store(56, Local0) 1446 1447 Switch (DeRefOf(Index(b0sw, 21))) { 1448 Case (0) { 1449 Store(21, Local0) 1450 } 1451 Case (1) { 1452 Store(57, Local0) 1453 1454 Switch (DeRefOf(Index(b0sw, 22))) { 1455 Case (0) { 1456 Store(22, Local0) 1457 } 1458 Case (1) { 1459 Store(58, Local0) 1460 1461 Switch (DeRefOf(Index(b0sw, 23))) { 1462 Case (0) { 1463 Store(23, Local0) 1464 } 1465 Case (1) { 1466 Store(59, Local0) 1467 1468 Switch (DeRefOf(Index(b0sw, 24))) { 1469 Case (0) { 1470 Store(24, Local0) 1471 } 1472 Case (1) { 1473 Store(60, Local0) 1474 1475 Switch (DeRefOf(Index(b0sw, 25))) { 1476 Case (0) { 1477 Store(25, Local0) 1478 } 1479 Case (1) { 1480 Store(61, Local0) 1481 1482 Switch (DeRefOf(Index(b0sw, 26))) { 1483 Case (0) { 1484 Store(26, Local0) 1485 } 1486 Case (1) { 1487 Store(62, Local0) 1488 1489 Switch (DeRefOf(Index(b0sw, 27))) { 1490 Case (0) { 1491 Store(27, Local0) 1492 } 1493 Case (1) { 1494 Store(63, Local0) 1495 1496 Switch (DeRefOf(Index(b0sw, 28))) { 1497 Case (0) { 1498 Store(28, Local0) 1499 } 1500 Case (1) { 1501 Store(64, Local0) 1502 1503 Switch (DeRefOf(Index(b0sw, 29))) { 1504 Case (0) { 1505 Store(29, Local0) 1506 } 1507 Case (1) { 1508 Store(65, Local0) 1509 1510 Switch (DeRefOf(Index(b0sw, 30))) { 1511 Case (0) { 1512 Store(30, Local0) 1513 } 1514 Case (1) { 1515 Store(66, Local0) 1516 1517 Switch (DeRefOf(Index(b0sw, 31))) { 1518 Case (0) { 1519 Store(31, Local0) 1520 } 1521 Case (1) { 1522 Store(67, Local0) 1523 1524 Switch (DeRefOf(Index(b0sw, 32))) { 1525 Case (0) { 1526 Store(32, Local0) 1527 } 1528 Case (1) { 1529 Store(68, Local0) 1530 1531 Switch (DeRefOf(Index(b0sw, 33))) { 1532 Case (0) { 1533 Store(33, Local0) 1534 } 1535 Case (1) { 1536 Store(69, Local0) 1537 1538 Switch (DeRefOf(Index(b0sw, 34))) { 1539 Case (0) { 1540 Store(34, Local0) 1541 } 1542 Case (1) { 1543 Store(70, Local0) 1544 1545 Switch (DeRefOf(Index(b0sw, 35))) { 1546 Case (0) { 1547 Store(35, Local0) 1548 } 1549 Case (1) { 1550 Store(71, Local0) 1551 }} 1552 }} 1553 }} 1554 }} 1555 }} 1556 }} 1557 }} 1558 }} 1559 }} 1560 }} 1561 }} 1562 }} 1563 }} 1564 }} 1565 }} 1566 }} 1567 }} 1568 }} 1569 }} 1570 }} 1571 }} 1572 }} 1573 }} 1574 }} 1575 }} 1576 }} 1577 }} 1578 }} 1579 }} 1580 }} 1581 }} 1582 }} 1583 }} 1584 }} 1585 }} 1586 }} 1587 1588 return (Local0) 1589} 1590 1591// Run-method 1592Method(SW06,, Serialized) 1593{ 1594 Store("TEST: SW06, Switch, Case, Default operators", Debug) 1595 1596 Name(ts, "SW06") 1597 1598 Name(lpN0, 101) 1599 Name(lpC0, 0) 1600 1601 // Check ?????????????????? 1602 1603 Store(TMAX, lpN0) 1604 Store(0, lpC0) 1605 m0c1(1) 1606 1607 While (lpN0) { 1608 Subtract(lpN0, 1, Local7) 1609 Store(0, Index(b0sw, Local7)) 1610 Store(m0c5(), Local1) 1611 Decrement(lpN0) 1612 Increment(lpC0) 1613 if (LNotEqual(Local1, Local7)) { 1614 err(ts, z069, __LINE__, 0, 0, Local1, Local7) 1615 return (Ones) 1616 } 1617 } 1618 1619 // Check ??????. 1620 1621 Store(TMAX, lpN0) 1622 Store(0, lpC0) 1623 m0c1(1) 1624 1625 While (lpN0) { 1626 Store(m0c5(), Local1) 1627 Decrement(lpN0) 1628 Increment(lpC0) 1629 Add(TMAX, lpN0, Local7) 1630 if (LNotEqual(Local1, Local7)) { 1631 err(ts, z069, __LINE__, 0, 0, Local1, Local7) 1632 return (Ones) 1633 } 1634 Store(2, Index(b0sw, lpN0)) 1635 } 1636 1637 return (0) 1638} 1639