1/*
2 * Some or all of this work - Copyright (c) 2006 - 2016, 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, 0, 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, 1, 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, 2, 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, 3, 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, 4, 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, 5, 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, 6, 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, 7, 0, 0, Local1, Local7)
1632			return (Ones)
1633		}
1634		Store(2, Index(b0sw, lpN0))
1635	}
1636
1637	return (0)
1638}
1639