summaryrefslogtreecommitdiff
path: root/tests/aslts/src/runtime/collections/functional/control/timing.asl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/aslts/src/runtime/collections/functional/control/timing.asl')
-rw-r--r--tests/aslts/src/runtime/collections/functional/control/timing.asl1610
1 files changed, 805 insertions, 805 deletions
diff --git a/tests/aslts/src/runtime/collections/functional/control/timing.asl b/tests/aslts/src/runtime/collections/functional/control/timing.asl
index be242fcd4..8a42bfda5 100644
--- a/tests/aslts/src/runtime/collections/functional/control/timing.asl
+++ b/tests/aslts/src/runtime/collections/functional/control/timing.asl
@@ -1,805 +1,805 @@
-/*
- * Some or all of this work - Copyright (c) 2006 - 2015, Intel Corp.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Method execution control
- *
- * Timing operators
- */
-
-Name(z006, 6)
-Name(MSLP, 2000) // Max sleep (ms) defined in acconfig.h, Oct 2013
-
-// Verifying 1-parameter, 0-result operator
-//
-// Arg5 - additional parameter (event...)
-//
-// Local0 - argument passed by test (MilliSeconds)
-// Local4 - specified time to be delayed (in Timer units)
-// Local6 - time actualy was delayed (measured by Timer, in Timer units)
-// Local7 - delta == (actual - specified) (in Timer units)
-//
-Method(m0c8, 6)
-{
- Store(0, Local5)
- Store(arg1, Local3)
-
- While(Local3) {
-
- // Operand
-
- Store(DeRefOf(Index(arg3, Local5)), Local0)
-
- switch (arg4) {
- case (0) {
- if (LLess(MSLP, Local0)) {
- // Exceeding max allowable sleep time
- Store("m0c8: Note, argument exceeds max defined time for Sleep.",
- Debug);
- Break
- }
-
- Store(Timer, Local1)
- Sleep(Local0)
- Store(Timer, Local2)
- Subtract(Local2, Local1, Local6)
- Multiply(Local0, 10000, Local4)
-
- if (LLess(Local6, Local4)) {
- Subtract(Local4, Local6, Local7)
- err(arg0, z006, 0, 0, 0, Local5, arg2)
- Store(Local0, Debug)
- Store(Local4, Debug)
- Store(Local6, Debug)
- Store(Local7, Debug)
- return (1)
- } else {
- Subtract(Local6, Local4, Local7)
- }
- }
- case (1) {
- Store(Timer, Local1)
- Stall(Local0)
- Store(Timer, Local2)
- Subtract(Local2, Local1, Local6)
- Multiply(Local0, 10, Local4)
-
- if (LLess(Local6, Local4)) {
- Subtract(Local4, Local6, Local7)
- err(arg0, z006, 1, 0, 0, Local5, arg2)
- Store(Local0, Debug)
- Store(Local4, Debug)
- Store(Local6, Debug)
- Store(Local7, Debug)
- return (1)
- } else {
- Subtract(Local6, Local4, Local7)
- }
- }
- case (2) {
- Store(Timer, Local1)
- Wait(arg5, Local0)
- Store(Timer, Local2)
- Subtract(Local2, Local1, Local6)
- Multiply(Local0, 10000, Local4)
-
- if (LLess(Local6, Local4)) {
- Subtract(Local4, Local6, Local7)
- err(arg0, z006, 2, 0, 0, Local5, arg2)
- Store(Local0, Debug)
- Store(Local4, Debug)
- Store(Local6, Debug)
- Store(Local7, Debug)
- return (1)
- } else {
- Subtract(Local6, Local4, Local7)
- }
- }
- }
-
- if (0) {
- Store("====================:", Debug)
- Store(Local0, Debug)
- Store(Local4, Debug)
- Store(Local6, Debug)
- Store(Local7, Debug)
- }
-
- Increment(Local5)
- Decrement(Local3)
- }
-
- return (0)
-}
-
-// Sleep. Sleep n milliseconds (yields the processor)
-Method(m0c9,, Serialized)
-{
- Name(ts, "m0c9")
-
- Store("TEST: m0c9, Sleep, sleep n milliseconds (yields the processor)", Debug)
-
- Name(p000, Package() { 0, 1, 10, 100, 1000, 2000, 3456, 10000, 12345 })
-
- Store(1, Local0)
- While(Local0) {
- if (m0c8(ts, 9, "p000", p000, 0, 0)) {
- return (1)
- }
- Decrement(Local0)
- }
- return (0)
-}
-
-// Stall. Delay n microseconds (does not yield the processor)
-Method(m0ca,, Serialized)
-{
- Name(ts, "m0ca")
-
- Store("TEST: m0ca, Stall, delay n microseconds (does not yield the processor)", Debug)
-
- Name(p000, Package() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
- 14, 23, 37, 49, 55, 62, 78, 81, 96, 100 })
-
- Store(5, Local0)
- While(Local0) {
- if (m0c8(ts, 30, "p000", p000, 1, 0)) {
- return (1)
- }
- Decrement(Local0)
- }
- return (0)
-}
-
-// Wait. The calling method blocks while waiting for the event to be signaled
-Method(m0cb,, Serialized)
-{
- Name(ts, "m0cb")
-
- Store("TEST: m0cb, Wait, waiting for the event to be signaled", Debug)
-
- Event(e000)
-
- Name(p000, Package() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
- 14, 23, 37, 49, 55, 62, 78, 81, 96, 100 })
-
- Store(1, Local0)
- While(Local0) {
- if (m0c8(ts, 30, "p000", p000, 2, e000)) {
- return (1)
- }
- Decrement(Local0)
- }
-
- Name(p001, Package() { 0, 1, 10, 100, 1000, 2000, 3456, 10000, 12345 })
-
- Store(1, Local0)
- While(Local0) {
- if (m0c8(ts, 9, "p001", p001, 2, e000)) {
- return (1)
- }
- Decrement(Local0)
- }
- return (0)
-}
-
-// Handle and summarize the Timer-times package.
-Method(m0cc, 3, Serialized)
-{
- Name(n000, 0)
- Name(ncur, 0)
-
- // Size of p001=(p000-1)
- Name(n001, 0)
- Subtract(arg2, 1, n001)
-
- Name(p001, Package(n001) {})
-
- Name(nmin, 0)
- Name(nmax, 0)
- Name(ndcr, 0)
- Name(navr, 0)
- Name(nspl, 0)
-
- // Index for p001
- Name(ncu1, 0)
-
- // Obtain the adjacent deltas.
-
- Store(0, Local7)
- Store(arg2, n000)
- Store(0, ncur)
- Store(0, ncu1)
-
- While (n000) {
- Store(DeRefOf(Index(arg1, ncur)), Local0)
- if (ncur) {
- Subtract(Local0, Local7, Local6)
- Store(Local6, Index(p001, ncu1))
- Increment(ncu1)
- if (0) {
- Store(Local6, Debug)
- }
- }
-
- // Previous time
-
- Store(Local0, Local7)
-
- Decrement(n000)
- Increment(ncur)
- }
-
- // Summarize - min, max, average
-
- Store(0, Local6)
- Store(n001, n000)
- Store(0, ncur)
-
- Store(0, nmin)
- Store(0, nmax)
- Store(0, ndcr)
- Store(0, navr)
-
- While (n000) {
- Store(DeRefOf(Index(p001, ncur)), Local0)
- Add(Local6, Local0, Local6)
- if (ncur) {
- // New value less then previous
- if (LLess(Local0, Local7)) {
- Increment(ndcr)
- }
- if (LLess(Local0, nmin)) {
- Store(Local0, nmin)
- } elseif (LGreater(Local0, nmax)) {
- Store(Local0, nmax)
- }
- } else {
- Store(Local0, nmin)
- Store(Local0, nmax)
- }
-
- // Previous delta
-
- Store(Local0, Local7)
-
- Decrement(n000)
- Increment(ncur)
- }
-
- Divide(Local6, n001, Local0, navr)
-
- // Summarize - check monotony, no splashes
- // exceeding the adjacent points in times.
-
- Store(0, Local6)
- Store(n001, n000)
- Store(0, ncur)
- Store(0, nspl)
-
- While (n000) {
- Store(DeRefOf(Index(arg1, ncur)), Local0)
- if (ncur) {
-
- // Splashes different in times
-
- if (LLess(Local0, Local7)) {
- Divide(Local7, Local0, Local1, Local6)
- } else {
- Divide(Local0, Local7, Local1, Local6)
- }
- if (LGreater(Local6, 2)) {
- Increment(nspl)
- }
- }
-
- // Previous delta
-
- Store(Local0, Local7)
-
- Decrement(n000)
- Increment(ncur)
- }
-
- Store("Summary:", Debug)
-
- Store(nmin, Debug)
- Store(nmax, Debug)
- Store(navr, Debug)
- Store(ndcr, Debug)
- Store(nspl, Debug)
-}
-
-// Timer with Package - is not a test as such, but shows behaviour of Timer.
-//
-// Get Timer-time N times, store them into Package.
-// Then, calculate the Timer-time between each adjacent points.
-// Much time is spent on storing into Package.
-//
-// Summary of deltas between the adjacent points:
-//
-// nmin - minimal
-// nmax - maximal
-// navr - average
-//
-// Monotony:
-//
-// ndcr - # lower than previous
-// nspl - # splashes exceeding the adjacent point by 2 or more times
-Method(m0cd,, Serialized)
-{
- Name(ts, "m0cd")
-
- Store("TEST: m0cd, Timer with Package", Debug)
-
- // nsz0 - size of p000
- // n000 - decr cur counter
- // ncur - incr cur counter
-
- Name(nsz0, 101)
- Name(n000, 0)
- Name(ncur, 0)
-
- Store(nsz0, n000)
- Store(0, ncur)
-
- Name(p000, Package(n000) {})
-
- // Obtain the time and store into Package.
- // Do as quickly as possible without any unnecessary actions.
- While (n000) {
-
- Store(Timer, Local0)
- Store(Local0, Index(p000, ncur))
- Decrement(n000)
- Increment(ncur)
- }
-
- m0cc(ts, p000, nsz0)
-}
-
-// Timer with Name
-Method(m0ce,, Serialized)
-{
- Name(ts, "m0ce")
-
- Store("TEST: m0ce, Timer with Name", Debug)
-
- Name(nsz0, 101)
- Name(p000, Package(nsz0) {})
-
- Name(tmp, 0)
-
- Name(n000, 0)
- Name(n001, 0)
- Name(n002, 0)
- Name(n003, 0)
- Name(n004, 0)
- Name(n005, 0)
- Name(n006, 0)
- Name(n007, 0)
- Name(n008, 0)
- Name(n009, 0)
- Name(n010, 0)
- Name(n011, 0)
- Name(n012, 0)
- Name(n013, 0)
- Name(n014, 0)
- Name(n015, 0)
- Name(n016, 0)
- Name(n017, 0)
- Name(n018, 0)
- Name(n019, 0)
- Name(n020, 0)
- Name(n021, 0)
- Name(n022, 0)
- Name(n023, 0)
- Name(n024, 0)
- Name(n025, 0)
- Name(n026, 0)
- Name(n027, 0)
- Name(n028, 0)
- Name(n029, 0)
- Name(n030, 0)
- Name(n031, 0)
- Name(n032, 0)
- Name(n033, 0)
- Name(n034, 0)
- Name(n035, 0)
- Name(n036, 0)
- Name(n037, 0)
- Name(n038, 0)
- Name(n039, 0)
- Name(n040, 0)
- Name(n041, 0)
- Name(n042, 0)
- Name(n043, 0)
- Name(n044, 0)
- Name(n045, 0)
- Name(n046, 0)
- Name(n047, 0)
- Name(n048, 0)
- Name(n049, 0)
- Name(n050, 0)
- Name(n051, 0)
- Name(n052, 0)
- Name(n053, 0)
- Name(n054, 0)
- Name(n055, 0)
- Name(n056, 0)
- Name(n057, 0)
- Name(n058, 0)
- Name(n059, 0)
- Name(n060, 0)
- Name(n061, 0)
- Name(n062, 0)
- Name(n063, 0)
- Name(n064, 0)
- Name(n065, 0)
- Name(n066, 0)
- Name(n067, 0)
- Name(n068, 0)
- Name(n069, 0)
- Name(n070, 0)
- Name(n071, 0)
- Name(n072, 0)
- Name(n073, 0)
- Name(n074, 0)
- Name(n075, 0)
- Name(n076, 0)
- Name(n077, 0)
- Name(n078, 0)
- Name(n079, 0)
- Name(n080, 0)
- Name(n081, 0)
- Name(n082, 0)
- Name(n083, 0)
- Name(n084, 0)
- Name(n085, 0)
- Name(n086, 0)
- Name(n087, 0)
- Name(n088, 0)
- Name(n089, 0)
- Name(n090, 0)
- Name(n091, 0)
- Name(n092, 0)
- Name(n093, 0)
- Name(n094, 0)
- Name(n095, 0)
- Name(n096, 0)
- Name(n097, 0)
- Name(n098, 0)
- Name(n099, 0)
- Name(n100, 0)
-
- Store(Timer, n000)
- Store(Timer, n001)
- Store(Timer, n002)
- Store(Timer, n003)
- Store(Timer, n004)
- Store(Timer, n005)
- Store(Timer, n006)
- Store(Timer, n007)
- Store(Timer, n008)
- Store(Timer, n009)
- Store(Timer, n010)
- Store(Timer, n011)
- Store(Timer, n012)
- Store(Timer, n013)
- Store(Timer, n014)
- Store(Timer, n015)
- Store(Timer, n016)
- Store(Timer, n017)
- Store(Timer, n018)
- Store(Timer, n019)
- Store(Timer, n020)
- Store(Timer, n021)
- Store(Timer, n022)
- Store(Timer, n023)
- Store(Timer, n024)
- Store(Timer, n025)
- Store(Timer, n026)
- Store(Timer, n027)
- Store(Timer, n028)
- Store(Timer, n029)
- Store(Timer, n030)
- Store(Timer, n031)
- Store(Timer, n032)
- Store(Timer, n033)
- Store(Timer, n034)
- Store(Timer, n035)
- Store(Timer, n036)
- Store(Timer, n037)
- Store(Timer, n038)
- Store(Timer, n039)
- Store(Timer, n040)
- Store(Timer, n041)
- Store(Timer, n042)
- Store(Timer, n043)
- Store(Timer, n044)
- Store(Timer, n045)
- Store(Timer, n046)
- Store(Timer, n047)
- Store(Timer, n048)
- Store(Timer, n049)
- Store(Timer, n050)
- Store(Timer, n051)
- Store(Timer, n052)
- Store(Timer, n053)
- Store(Timer, n054)
- Store(Timer, n055)
- Store(Timer, n056)
- Store(Timer, n057)
- Store(Timer, n058)
- Store(Timer, n059)
- Store(Timer, n060)
- Store(Timer, n061)
- Store(Timer, n062)
- Store(Timer, n063)
- Store(Timer, n064)
- Store(Timer, n065)
- Store(Timer, n066)
- Store(Timer, n067)
- Store(Timer, n068)
- Store(Timer, n069)
- Store(Timer, n070)
- Store(Timer, n071)
- Store(Timer, n072)
- Store(Timer, n073)
- Store(Timer, n074)
- Store(Timer, n075)
- Store(Timer, n076)
- Store(Timer, n077)
- Store(Timer, n078)
- Store(Timer, n079)
- Store(Timer, n080)
- Store(Timer, n081)
- Store(Timer, n082)
- Store(Timer, n083)
- Store(Timer, n084)
- Store(Timer, n085)
- Store(Timer, n086)
- Store(Timer, n087)
- Store(Timer, n088)
- Store(Timer, n089)
- Store(Timer, n090)
- Store(Timer, n091)
- Store(Timer, n092)
- Store(Timer, n093)
- Store(Timer, n094)
- Store(Timer, n095)
- Store(Timer, n096)
- Store(Timer, n097)
- Store(Timer, n098)
- Store(Timer, n099)
- Store(Timer, n100)
-
-
- Store(n000, Index(p000, tmp)) Increment(tmp)
- Store(n001, Index(p000, tmp)) Increment(tmp)
- Store(n002, Index(p000, tmp)) Increment(tmp)
- Store(n003, Index(p000, tmp)) Increment(tmp)
- Store(n004, Index(p000, tmp)) Increment(tmp)
- Store(n005, Index(p000, tmp)) Increment(tmp)
- Store(n006, Index(p000, tmp)) Increment(tmp)
- Store(n007, Index(p000, tmp)) Increment(tmp)
- Store(n008, Index(p000, tmp)) Increment(tmp)
- Store(n009, Index(p000, tmp)) Increment(tmp)
- Store(n010, Index(p000, tmp)) Increment(tmp)
- Store(n011, Index(p000, tmp)) Increment(tmp)
- Store(n012, Index(p000, tmp)) Increment(tmp)
- Store(n013, Index(p000, tmp)) Increment(tmp)
- Store(n014, Index(p000, tmp)) Increment(tmp)
- Store(n015, Index(p000, tmp)) Increment(tmp)
- Store(n016, Index(p000, tmp)) Increment(tmp)
- Store(n017, Index(p000, tmp)) Increment(tmp)
- Store(n018, Index(p000, tmp)) Increment(tmp)
- Store(n019, Index(p000, tmp)) Increment(tmp)
- Store(n020, Index(p000, tmp)) Increment(tmp)
- Store(n021, Index(p000, tmp)) Increment(tmp)
- Store(n022, Index(p000, tmp)) Increment(tmp)
- Store(n023, Index(p000, tmp)) Increment(tmp)
- Store(n024, Index(p000, tmp)) Increment(tmp)
- Store(n025, Index(p000, tmp)) Increment(tmp)
- Store(n026, Index(p000, tmp)) Increment(tmp)
- Store(n027, Index(p000, tmp)) Increment(tmp)
- Store(n028, Index(p000, tmp)) Increment(tmp)
- Store(n029, Index(p000, tmp)) Increment(tmp)
- Store(n030, Index(p000, tmp)) Increment(tmp)
- Store(n031, Index(p000, tmp)) Increment(tmp)
- Store(n032, Index(p000, tmp)) Increment(tmp)
- Store(n033, Index(p000, tmp)) Increment(tmp)
- Store(n034, Index(p000, tmp)) Increment(tmp)
- Store(n035, Index(p000, tmp)) Increment(tmp)
- Store(n036, Index(p000, tmp)) Increment(tmp)
- Store(n037, Index(p000, tmp)) Increment(tmp)
- Store(n038, Index(p000, tmp)) Increment(tmp)
- Store(n039, Index(p000, tmp)) Increment(tmp)
- Store(n040, Index(p000, tmp)) Increment(tmp)
- Store(n041, Index(p000, tmp)) Increment(tmp)
- Store(n042, Index(p000, tmp)) Increment(tmp)
- Store(n043, Index(p000, tmp)) Increment(tmp)
- Store(n044, Index(p000, tmp)) Increment(tmp)
- Store(n045, Index(p000, tmp)) Increment(tmp)
- Store(n046, Index(p000, tmp)) Increment(tmp)
- Store(n047, Index(p000, tmp)) Increment(tmp)
- Store(n048, Index(p000, tmp)) Increment(tmp)
- Store(n049, Index(p000, tmp)) Increment(tmp)
- Store(n050, Index(p000, tmp)) Increment(tmp)
- Store(n051, Index(p000, tmp)) Increment(tmp)
- Store(n052, Index(p000, tmp)) Increment(tmp)
- Store(n053, Index(p000, tmp)) Increment(tmp)
- Store(n054, Index(p000, tmp)) Increment(tmp)
- Store(n055, Index(p000, tmp)) Increment(tmp)
- Store(n056, Index(p000, tmp)) Increment(tmp)
- Store(n057, Index(p000, tmp)) Increment(tmp)
- Store(n058, Index(p000, tmp)) Increment(tmp)
- Store(n059, Index(p000, tmp)) Increment(tmp)
- Store(n060, Index(p000, tmp)) Increment(tmp)
- Store(n061, Index(p000, tmp)) Increment(tmp)
- Store(n062, Index(p000, tmp)) Increment(tmp)
- Store(n063, Index(p000, tmp)) Increment(tmp)
- Store(n064, Index(p000, tmp)) Increment(tmp)
- Store(n065, Index(p000, tmp)) Increment(tmp)
- Store(n066, Index(p000, tmp)) Increment(tmp)
- Store(n067, Index(p000, tmp)) Increment(tmp)
- Store(n068, Index(p000, tmp)) Increment(tmp)
- Store(n069, Index(p000, tmp)) Increment(tmp)
- Store(n070, Index(p000, tmp)) Increment(tmp)
- Store(n071, Index(p000, tmp)) Increment(tmp)
- Store(n072, Index(p000, tmp)) Increment(tmp)
- Store(n073, Index(p000, tmp)) Increment(tmp)
- Store(n074, Index(p000, tmp)) Increment(tmp)
- Store(n075, Index(p000, tmp)) Increment(tmp)
- Store(n076, Index(p000, tmp)) Increment(tmp)
- Store(n077, Index(p000, tmp)) Increment(tmp)
- Store(n078, Index(p000, tmp)) Increment(tmp)
- Store(n079, Index(p000, tmp)) Increment(tmp)
- Store(n080, Index(p000, tmp)) Increment(tmp)
- Store(n081, Index(p000, tmp)) Increment(tmp)
- Store(n082, Index(p000, tmp)) Increment(tmp)
- Store(n083, Index(p000, tmp)) Increment(tmp)
- Store(n084, Index(p000, tmp)) Increment(tmp)
- Store(n085, Index(p000, tmp)) Increment(tmp)
- Store(n086, Index(p000, tmp)) Increment(tmp)
- Store(n087, Index(p000, tmp)) Increment(tmp)
- Store(n088, Index(p000, tmp)) Increment(tmp)
- Store(n089, Index(p000, tmp)) Increment(tmp)
- Store(n090, Index(p000, tmp)) Increment(tmp)
- Store(n091, Index(p000, tmp)) Increment(tmp)
- Store(n092, Index(p000, tmp)) Increment(tmp)
- Store(n093, Index(p000, tmp)) Increment(tmp)
- Store(n094, Index(p000, tmp)) Increment(tmp)
- Store(n095, Index(p000, tmp)) Increment(tmp)
- Store(n096, Index(p000, tmp)) Increment(tmp)
- Store(n097, Index(p000, tmp)) Increment(tmp)
- Store(n098, Index(p000, tmp)) Increment(tmp)
- Store(n099, Index(p000, tmp)) Increment(tmp)
- Store(n100, Index(p000, tmp)) Increment(tmp)
-
- m0cc(ts, p000, nsz0)
-}
-
-// Timer with LocalX
-Method(m0cf,, Serialized)
-{
- Name(ts, "m0cf")
-
- Store("TEST: m0cf, Timer with LocalX", Debug)
-
- Name(nsz0, 101)
- Name(n000, 0)
- Name(tmp, 0)
- Name(last, 0)
- Name(dlta, 0)
-
- Store(nsz0, n000)
-
- Name(p000, Package(n000) {})
-
- While (n000) {
-
- Store(Timer, Local0)
- Store(Timer, Local1)
- Store(Timer, Local2)
- Store(Timer, Local3)
- Store(Timer, Local4)
- Store(Timer, Local5)
- Store(Timer, Local6)
- Store(Timer, Local7)
-
- // Eliminate delta due to the storage into Package
-
- if (last) {
- Subtract(Local0, last, dlta)
-
- Subtract(Local0, dlta, Local0)
- Subtract(Local1, dlta, Local1)
- Subtract(Local2, dlta, Local2)
- Subtract(Local3, dlta, Local3)
- Subtract(Local4, dlta, Local4)
- Subtract(Local5, dlta, Local5)
- Subtract(Local6, dlta, Local6)
- Subtract(Local7, dlta, Local7)
- }
-
- Store(Local0, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local1, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local2, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local3, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local4, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local5, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local6, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
- Store(Local7, Index(p000, tmp)) Increment(tmp)
- if (LGreaterEqual(tmp, nsz0)) {
- break
- }
-
- Store(Local7, last)
-
- Decrement(n000)
- }
-
- m0cc(ts, p000, nsz0)
-}
-
-// Run-method
-Method(TIM0)
-{
- Store("TEST: TIM0, Timing operators", Debug)
-
- m0c9()
- m0ca()
- m0cb()
- m0cd()
- m0ce()
- m0cf()
-}
+/*
+ * Some or all of this work - Copyright (c) 2006 - 2014, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Method execution control
+ *
+ * Timing operators
+ */
+
+Name(z006, 6)
+Name(MSLP, 2000) // Max sleep (ms) defined in acconfig.h, Oct 2013
+
+// Verifying 1-parameter, 0-result operator
+//
+// Arg5 - additional parameter (event...)
+//
+// Local0 - argument passed by test (MilliSeconds)
+// Local4 - specified time to be delayed (in Timer units)
+// Local6 - time actualy was delayed (measured by Timer, in Timer units)
+// Local7 - delta == (actual - specified) (in Timer units)
+//
+Method(m0c8, 6)
+{
+ Store(0, Local5)
+ Store(arg1, Local3)
+
+ While(Local3) {
+
+ // Operand
+
+ Store(DeRefOf(Index(arg3, Local5)), Local0)
+
+ switch (arg4) {
+ case (0) {
+ if (LLess(MSLP, Local0)) {
+ // Exceeding max allowable sleep time
+ Store("m0c8: Note, argument exceeds max defined time for Sleep.",
+ Debug);
+ Break
+ }
+
+ Store(Timer, Local1)
+ Sleep(Local0)
+ Store(Timer, Local2)
+ Subtract(Local2, Local1, Local6)
+ Multiply(Local0, 10000, Local4)
+
+ if (LLess(Local6, Local4)) {
+ Subtract(Local4, Local6, Local7)
+ err(arg0, z006, 0, 0, 0, Local5, arg2)
+ Store(Local0, Debug)
+ Store(Local4, Debug)
+ Store(Local6, Debug)
+ Store(Local7, Debug)
+ return (1)
+ } else {
+ Subtract(Local6, Local4, Local7)
+ }
+ }
+ case (1) {
+ Store(Timer, Local1)
+ Stall(Local0)
+ Store(Timer, Local2)
+ Subtract(Local2, Local1, Local6)
+ Multiply(Local0, 10, Local4)
+
+ if (LLess(Local6, Local4)) {
+ Subtract(Local4, Local6, Local7)
+ err(arg0, z006, 1, 0, 0, Local5, arg2)
+ Store(Local0, Debug)
+ Store(Local4, Debug)
+ Store(Local6, Debug)
+ Store(Local7, Debug)
+ return (1)
+ } else {
+ Subtract(Local6, Local4, Local7)
+ }
+ }
+ case (2) {
+ Store(Timer, Local1)
+ Wait(arg5, Local0)
+ Store(Timer, Local2)
+ Subtract(Local2, Local1, Local6)
+ Multiply(Local0, 10000, Local4)
+
+ if (LLess(Local6, Local4)) {
+ Subtract(Local4, Local6, Local7)
+ err(arg0, z006, 2, 0, 0, Local5, arg2)
+ Store(Local0, Debug)
+ Store(Local4, Debug)
+ Store(Local6, Debug)
+ Store(Local7, Debug)
+ return (1)
+ } else {
+ Subtract(Local6, Local4, Local7)
+ }
+ }
+ }
+
+ if (0) {
+ Store("====================:", Debug)
+ Store(Local0, Debug)
+ Store(Local4, Debug)
+ Store(Local6, Debug)
+ Store(Local7, Debug)
+ }
+
+ Increment(Local5)
+ Decrement(Local3)
+ }
+
+ return (0)
+}
+
+// Sleep. Sleep n milliseconds (yields the processor)
+Method(m0c9,, Serialized)
+{
+ Name(ts, "m0c9")
+
+ Store("TEST: m0c9, Sleep, sleep n milliseconds (yields the processor)", Debug)
+
+ Name(p000, Package() { 0, 1, 10, 100, 1000, 2000, 3456, 10000, 12345 })
+
+ Store(1, Local0)
+ While(Local0) {
+ if (m0c8(ts, 9, "p000", p000, 0, 0)) {
+ return (1)
+ }
+ Decrement(Local0)
+ }
+ return (0)
+}
+
+// Stall. Delay n microseconds (does not yield the processor)
+Method(m0ca,, Serialized)
+{
+ Name(ts, "m0ca")
+
+ Store("TEST: m0ca, Stall, delay n microseconds (does not yield the processor)", Debug)
+
+ Name(p000, Package() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
+ 14, 23, 37, 49, 55, 62, 78, 81, 96, 100 })
+
+ Store(5, Local0)
+ While(Local0) {
+ if (m0c8(ts, 30, "p000", p000, 1, 0)) {
+ return (1)
+ }
+ Decrement(Local0)
+ }
+ return (0)
+}
+
+// Wait. The calling method blocks while waiting for the event to be signaled
+Method(m0cb,, Serialized)
+{
+ Name(ts, "m0cb")
+
+ Store("TEST: m0cb, Wait, waiting for the event to be signaled", Debug)
+
+ Event(e000)
+
+ Name(p000, Package() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
+ 14, 23, 37, 49, 55, 62, 78, 81, 96, 100 })
+
+ Store(1, Local0)
+ While(Local0) {
+ if (m0c8(ts, 30, "p000", p000, 2, e000)) {
+ return (1)
+ }
+ Decrement(Local0)
+ }
+
+ Name(p001, Package() { 0, 1, 10, 100, 1000, 2000, 3456, 10000, 12345 })
+
+ Store(1, Local0)
+ While(Local0) {
+ if (m0c8(ts, 9, "p001", p001, 2, e000)) {
+ return (1)
+ }
+ Decrement(Local0)
+ }
+ return (0)
+}
+
+// Handle and summarize the Timer-times package.
+Method(m0cc, 3, Serialized)
+{
+ Name(n000, 0)
+ Name(ncur, 0)
+
+ // Size of p001=(p000-1)
+ Name(n001, 0)
+ Subtract(arg2, 1, n001)
+
+ Name(p001, Package(n001) {})
+
+ Name(nmin, 0)
+ Name(nmax, 0)
+ Name(ndcr, 0)
+ Name(navr, 0)
+ Name(nspl, 0)
+
+ // Index for p001
+ Name(ncu1, 0)
+
+ // Obtain the adjacent deltas.
+
+ Store(0, Local7)
+ Store(arg2, n000)
+ Store(0, ncur)
+ Store(0, ncu1)
+
+ While (n000) {
+ Store(DeRefOf(Index(arg1, ncur)), Local0)
+ if (ncur) {
+ Subtract(Local0, Local7, Local6)
+ Store(Local6, Index(p001, ncu1))
+ Increment(ncu1)
+ if (0) {
+ Store(Local6, Debug)
+ }
+ }
+
+ // Previous time
+
+ Store(Local0, Local7)
+
+ Decrement(n000)
+ Increment(ncur)
+ }
+
+ // Summarize - min, max, average
+
+ Store(0, Local6)
+ Store(n001, n000)
+ Store(0, ncur)
+
+ Store(0, nmin)
+ Store(0, nmax)
+ Store(0, ndcr)
+ Store(0, navr)
+
+ While (n000) {
+ Store(DeRefOf(Index(p001, ncur)), Local0)
+ Add(Local6, Local0, Local6)
+ if (ncur) {
+ // New value less then previous
+ if (LLess(Local0, Local7)) {
+ Increment(ndcr)
+ }
+ if (LLess(Local0, nmin)) {
+ Store(Local0, nmin)
+ } elseif (LGreater(Local0, nmax)) {
+ Store(Local0, nmax)
+ }
+ } else {
+ Store(Local0, nmin)
+ Store(Local0, nmax)
+ }
+
+ // Previous delta
+
+ Store(Local0, Local7)
+
+ Decrement(n000)
+ Increment(ncur)
+ }
+
+ Divide(Local6, n001, Local0, navr)
+
+ // Summarize - check monotony, no splashes
+ // exceeding the adjacent points in times.
+
+ Store(0, Local6)
+ Store(n001, n000)
+ Store(0, ncur)
+ Store(0, nspl)
+
+ While (n000) {
+ Store(DeRefOf(Index(arg1, ncur)), Local0)
+ if (ncur) {
+
+ // Splashes different in times
+
+ if (LLess(Local0, Local7)) {
+ Divide(Local7, Local0, Local1, Local6)
+ } else {
+ Divide(Local0, Local7, Local1, Local6)
+ }
+ if (LGreater(Local6, 2)) {
+ Increment(nspl)
+ }
+ }
+
+ // Previous delta
+
+ Store(Local0, Local7)
+
+ Decrement(n000)
+ Increment(ncur)
+ }
+
+ Store("Summary:", Debug)
+
+ Store(nmin, Debug)
+ Store(nmax, Debug)
+ Store(navr, Debug)
+ Store(ndcr, Debug)
+ Store(nspl, Debug)
+}
+
+// Timer with Package - is not a test as such, but shows behaviour of Timer.
+//
+// Get Timer-time N times, store them into Package.
+// Then, calculate the Timer-time between each adjacent points.
+// Much time is spent on storing into Package.
+//
+// Summary of deltas between the adjacent points:
+//
+// nmin - minimal
+// nmax - maximal
+// navr - average
+//
+// Monotony:
+//
+// ndcr - # lower than previous
+// nspl - # splashes exceeding the adjacent point by 2 or more times
+Method(m0cd,, Serialized)
+{
+ Name(ts, "m0cd")
+
+ Store("TEST: m0cd, Timer with Package", Debug)
+
+ // nsz0 - size of p000
+ // n000 - decr cur counter
+ // ncur - incr cur counter
+
+ Name(nsz0, 101)
+ Name(n000, 0)
+ Name(ncur, 0)
+
+ Store(nsz0, n000)
+ Store(0, ncur)
+
+ Name(p000, Package(n000) {})
+
+ // Obtain the time and store into Package.
+ // Do as quickly as possible without any unnecessary actions.
+ While (n000) {
+
+ Store(Timer, Local0)
+ Store(Local0, Index(p000, ncur))
+ Decrement(n000)
+ Increment(ncur)
+ }
+
+ m0cc(ts, p000, nsz0)
+}
+
+// Timer with Name
+Method(m0ce,, Serialized)
+{
+ Name(ts, "m0ce")
+
+ Store("TEST: m0ce, Timer with Name", Debug)
+
+ Name(nsz0, 101)
+ Name(p000, Package(nsz0) {})
+
+ Name(tmp, 0)
+
+ Name(n000, 0)
+ Name(n001, 0)
+ Name(n002, 0)
+ Name(n003, 0)
+ Name(n004, 0)
+ Name(n005, 0)
+ Name(n006, 0)
+ Name(n007, 0)
+ Name(n008, 0)
+ Name(n009, 0)
+ Name(n010, 0)
+ Name(n011, 0)
+ Name(n012, 0)
+ Name(n013, 0)
+ Name(n014, 0)
+ Name(n015, 0)
+ Name(n016, 0)
+ Name(n017, 0)
+ Name(n018, 0)
+ Name(n019, 0)
+ Name(n020, 0)
+ Name(n021, 0)
+ Name(n022, 0)
+ Name(n023, 0)
+ Name(n024, 0)
+ Name(n025, 0)
+ Name(n026, 0)
+ Name(n027, 0)
+ Name(n028, 0)
+ Name(n029, 0)
+ Name(n030, 0)
+ Name(n031, 0)
+ Name(n032, 0)
+ Name(n033, 0)
+ Name(n034, 0)
+ Name(n035, 0)
+ Name(n036, 0)
+ Name(n037, 0)
+ Name(n038, 0)
+ Name(n039, 0)
+ Name(n040, 0)
+ Name(n041, 0)
+ Name(n042, 0)
+ Name(n043, 0)
+ Name(n044, 0)
+ Name(n045, 0)
+ Name(n046, 0)
+ Name(n047, 0)
+ Name(n048, 0)
+ Name(n049, 0)
+ Name(n050, 0)
+ Name(n051, 0)
+ Name(n052, 0)
+ Name(n053, 0)
+ Name(n054, 0)
+ Name(n055, 0)
+ Name(n056, 0)
+ Name(n057, 0)
+ Name(n058, 0)
+ Name(n059, 0)
+ Name(n060, 0)
+ Name(n061, 0)
+ Name(n062, 0)
+ Name(n063, 0)
+ Name(n064, 0)
+ Name(n065, 0)
+ Name(n066, 0)
+ Name(n067, 0)
+ Name(n068, 0)
+ Name(n069, 0)
+ Name(n070, 0)
+ Name(n071, 0)
+ Name(n072, 0)
+ Name(n073, 0)
+ Name(n074, 0)
+ Name(n075, 0)
+ Name(n076, 0)
+ Name(n077, 0)
+ Name(n078, 0)
+ Name(n079, 0)
+ Name(n080, 0)
+ Name(n081, 0)
+ Name(n082, 0)
+ Name(n083, 0)
+ Name(n084, 0)
+ Name(n085, 0)
+ Name(n086, 0)
+ Name(n087, 0)
+ Name(n088, 0)
+ Name(n089, 0)
+ Name(n090, 0)
+ Name(n091, 0)
+ Name(n092, 0)
+ Name(n093, 0)
+ Name(n094, 0)
+ Name(n095, 0)
+ Name(n096, 0)
+ Name(n097, 0)
+ Name(n098, 0)
+ Name(n099, 0)
+ Name(n100, 0)
+
+ Store(Timer, n000)
+ Store(Timer, n001)
+ Store(Timer, n002)
+ Store(Timer, n003)
+ Store(Timer, n004)
+ Store(Timer, n005)
+ Store(Timer, n006)
+ Store(Timer, n007)
+ Store(Timer, n008)
+ Store(Timer, n009)
+ Store(Timer, n010)
+ Store(Timer, n011)
+ Store(Timer, n012)
+ Store(Timer, n013)
+ Store(Timer, n014)
+ Store(Timer, n015)
+ Store(Timer, n016)
+ Store(Timer, n017)
+ Store(Timer, n018)
+ Store(Timer, n019)
+ Store(Timer, n020)
+ Store(Timer, n021)
+ Store(Timer, n022)
+ Store(Timer, n023)
+ Store(Timer, n024)
+ Store(Timer, n025)
+ Store(Timer, n026)
+ Store(Timer, n027)
+ Store(Timer, n028)
+ Store(Timer, n029)
+ Store(Timer, n030)
+ Store(Timer, n031)
+ Store(Timer, n032)
+ Store(Timer, n033)
+ Store(Timer, n034)
+ Store(Timer, n035)
+ Store(Timer, n036)
+ Store(Timer, n037)
+ Store(Timer, n038)
+ Store(Timer, n039)
+ Store(Timer, n040)
+ Store(Timer, n041)
+ Store(Timer, n042)
+ Store(Timer, n043)
+ Store(Timer, n044)
+ Store(Timer, n045)
+ Store(Timer, n046)
+ Store(Timer, n047)
+ Store(Timer, n048)
+ Store(Timer, n049)
+ Store(Timer, n050)
+ Store(Timer, n051)
+ Store(Timer, n052)
+ Store(Timer, n053)
+ Store(Timer, n054)
+ Store(Timer, n055)
+ Store(Timer, n056)
+ Store(Timer, n057)
+ Store(Timer, n058)
+ Store(Timer, n059)
+ Store(Timer, n060)
+ Store(Timer, n061)
+ Store(Timer, n062)
+ Store(Timer, n063)
+ Store(Timer, n064)
+ Store(Timer, n065)
+ Store(Timer, n066)
+ Store(Timer, n067)
+ Store(Timer, n068)
+ Store(Timer, n069)
+ Store(Timer, n070)
+ Store(Timer, n071)
+ Store(Timer, n072)
+ Store(Timer, n073)
+ Store(Timer, n074)
+ Store(Timer, n075)
+ Store(Timer, n076)
+ Store(Timer, n077)
+ Store(Timer, n078)
+ Store(Timer, n079)
+ Store(Timer, n080)
+ Store(Timer, n081)
+ Store(Timer, n082)
+ Store(Timer, n083)
+ Store(Timer, n084)
+ Store(Timer, n085)
+ Store(Timer, n086)
+ Store(Timer, n087)
+ Store(Timer, n088)
+ Store(Timer, n089)
+ Store(Timer, n090)
+ Store(Timer, n091)
+ Store(Timer, n092)
+ Store(Timer, n093)
+ Store(Timer, n094)
+ Store(Timer, n095)
+ Store(Timer, n096)
+ Store(Timer, n097)
+ Store(Timer, n098)
+ Store(Timer, n099)
+ Store(Timer, n100)
+
+
+ Store(n000, Index(p000, tmp)) Increment(tmp)
+ Store(n001, Index(p000, tmp)) Increment(tmp)
+ Store(n002, Index(p000, tmp)) Increment(tmp)
+ Store(n003, Index(p000, tmp)) Increment(tmp)
+ Store(n004, Index(p000, tmp)) Increment(tmp)
+ Store(n005, Index(p000, tmp)) Increment(tmp)
+ Store(n006, Index(p000, tmp)) Increment(tmp)
+ Store(n007, Index(p000, tmp)) Increment(tmp)
+ Store(n008, Index(p000, tmp)) Increment(tmp)
+ Store(n009, Index(p000, tmp)) Increment(tmp)
+ Store(n010, Index(p000, tmp)) Increment(tmp)
+ Store(n011, Index(p000, tmp)) Increment(tmp)
+ Store(n012, Index(p000, tmp)) Increment(tmp)
+ Store(n013, Index(p000, tmp)) Increment(tmp)
+ Store(n014, Index(p000, tmp)) Increment(tmp)
+ Store(n015, Index(p000, tmp)) Increment(tmp)
+ Store(n016, Index(p000, tmp)) Increment(tmp)
+ Store(n017, Index(p000, tmp)) Increment(tmp)
+ Store(n018, Index(p000, tmp)) Increment(tmp)
+ Store(n019, Index(p000, tmp)) Increment(tmp)
+ Store(n020, Index(p000, tmp)) Increment(tmp)
+ Store(n021, Index(p000, tmp)) Increment(tmp)
+ Store(n022, Index(p000, tmp)) Increment(tmp)
+ Store(n023, Index(p000, tmp)) Increment(tmp)
+ Store(n024, Index(p000, tmp)) Increment(tmp)
+ Store(n025, Index(p000, tmp)) Increment(tmp)
+ Store(n026, Index(p000, tmp)) Increment(tmp)
+ Store(n027, Index(p000, tmp)) Increment(tmp)
+ Store(n028, Index(p000, tmp)) Increment(tmp)
+ Store(n029, Index(p000, tmp)) Increment(tmp)
+ Store(n030, Index(p000, tmp)) Increment(tmp)
+ Store(n031, Index(p000, tmp)) Increment(tmp)
+ Store(n032, Index(p000, tmp)) Increment(tmp)
+ Store(n033, Index(p000, tmp)) Increment(tmp)
+ Store(n034, Index(p000, tmp)) Increment(tmp)
+ Store(n035, Index(p000, tmp)) Increment(tmp)
+ Store(n036, Index(p000, tmp)) Increment(tmp)
+ Store(n037, Index(p000, tmp)) Increment(tmp)
+ Store(n038, Index(p000, tmp)) Increment(tmp)
+ Store(n039, Index(p000, tmp)) Increment(tmp)
+ Store(n040, Index(p000, tmp)) Increment(tmp)
+ Store(n041, Index(p000, tmp)) Increment(tmp)
+ Store(n042, Index(p000, tmp)) Increment(tmp)
+ Store(n043, Index(p000, tmp)) Increment(tmp)
+ Store(n044, Index(p000, tmp)) Increment(tmp)
+ Store(n045, Index(p000, tmp)) Increment(tmp)
+ Store(n046, Index(p000, tmp)) Increment(tmp)
+ Store(n047, Index(p000, tmp)) Increment(tmp)
+ Store(n048, Index(p000, tmp)) Increment(tmp)
+ Store(n049, Index(p000, tmp)) Increment(tmp)
+ Store(n050, Index(p000, tmp)) Increment(tmp)
+ Store(n051, Index(p000, tmp)) Increment(tmp)
+ Store(n052, Index(p000, tmp)) Increment(tmp)
+ Store(n053, Index(p000, tmp)) Increment(tmp)
+ Store(n054, Index(p000, tmp)) Increment(tmp)
+ Store(n055, Index(p000, tmp)) Increment(tmp)
+ Store(n056, Index(p000, tmp)) Increment(tmp)
+ Store(n057, Index(p000, tmp)) Increment(tmp)
+ Store(n058, Index(p000, tmp)) Increment(tmp)
+ Store(n059, Index(p000, tmp)) Increment(tmp)
+ Store(n060, Index(p000, tmp)) Increment(tmp)
+ Store(n061, Index(p000, tmp)) Increment(tmp)
+ Store(n062, Index(p000, tmp)) Increment(tmp)
+ Store(n063, Index(p000, tmp)) Increment(tmp)
+ Store(n064, Index(p000, tmp)) Increment(tmp)
+ Store(n065, Index(p000, tmp)) Increment(tmp)
+ Store(n066, Index(p000, tmp)) Increment(tmp)
+ Store(n067, Index(p000, tmp)) Increment(tmp)
+ Store(n068, Index(p000, tmp)) Increment(tmp)
+ Store(n069, Index(p000, tmp)) Increment(tmp)
+ Store(n070, Index(p000, tmp)) Increment(tmp)
+ Store(n071, Index(p000, tmp)) Increment(tmp)
+ Store(n072, Index(p000, tmp)) Increment(tmp)
+ Store(n073, Index(p000, tmp)) Increment(tmp)
+ Store(n074, Index(p000, tmp)) Increment(tmp)
+ Store(n075, Index(p000, tmp)) Increment(tmp)
+ Store(n076, Index(p000, tmp)) Increment(tmp)
+ Store(n077, Index(p000, tmp)) Increment(tmp)
+ Store(n078, Index(p000, tmp)) Increment(tmp)
+ Store(n079, Index(p000, tmp)) Increment(tmp)
+ Store(n080, Index(p000, tmp)) Increment(tmp)
+ Store(n081, Index(p000, tmp)) Increment(tmp)
+ Store(n082, Index(p000, tmp)) Increment(tmp)
+ Store(n083, Index(p000, tmp)) Increment(tmp)
+ Store(n084, Index(p000, tmp)) Increment(tmp)
+ Store(n085, Index(p000, tmp)) Increment(tmp)
+ Store(n086, Index(p000, tmp)) Increment(tmp)
+ Store(n087, Index(p000, tmp)) Increment(tmp)
+ Store(n088, Index(p000, tmp)) Increment(tmp)
+ Store(n089, Index(p000, tmp)) Increment(tmp)
+ Store(n090, Index(p000, tmp)) Increment(tmp)
+ Store(n091, Index(p000, tmp)) Increment(tmp)
+ Store(n092, Index(p000, tmp)) Increment(tmp)
+ Store(n093, Index(p000, tmp)) Increment(tmp)
+ Store(n094, Index(p000, tmp)) Increment(tmp)
+ Store(n095, Index(p000, tmp)) Increment(tmp)
+ Store(n096, Index(p000, tmp)) Increment(tmp)
+ Store(n097, Index(p000, tmp)) Increment(tmp)
+ Store(n098, Index(p000, tmp)) Increment(tmp)
+ Store(n099, Index(p000, tmp)) Increment(tmp)
+ Store(n100, Index(p000, tmp)) Increment(tmp)
+
+ m0cc(ts, p000, nsz0)
+}
+
+// Timer with LocalX
+Method(m0cf,, Serialized)
+{
+ Name(ts, "m0cf")
+
+ Store("TEST: m0cf, Timer with LocalX", Debug)
+
+ Name(nsz0, 101)
+ Name(n000, 0)
+ Name(tmp, 0)
+ Name(last, 0)
+ Name(dlta, 0)
+
+ Store(nsz0, n000)
+
+ Name(p000, Package(n000) {})
+
+ While (n000) {
+
+ Store(Timer, Local0)
+ Store(Timer, Local1)
+ Store(Timer, Local2)
+ Store(Timer, Local3)
+ Store(Timer, Local4)
+ Store(Timer, Local5)
+ Store(Timer, Local6)
+ Store(Timer, Local7)
+
+ // Eliminate delta due to the storage into Package
+
+ if (last) {
+ Subtract(Local0, last, dlta)
+
+ Subtract(Local0, dlta, Local0)
+ Subtract(Local1, dlta, Local1)
+ Subtract(Local2, dlta, Local2)
+ Subtract(Local3, dlta, Local3)
+ Subtract(Local4, dlta, Local4)
+ Subtract(Local5, dlta, Local5)
+ Subtract(Local6, dlta, Local6)
+ Subtract(Local7, dlta, Local7)
+ }
+
+ Store(Local0, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local1, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local2, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local3, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local4, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local5, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local6, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+ Store(Local7, Index(p000, tmp)) Increment(tmp)
+ if (LGreaterEqual(tmp, nsz0)) {
+ break
+ }
+
+ Store(Local7, last)
+
+ Decrement(n000)
+ }
+
+ m0cc(ts, p000, nsz0)
+}
+
+// Run-method
+Method(TIM0)
+{
+ Store("TEST: TIM0, Timing operators", Debug)
+
+ m0c9()
+ m0ca()
+ m0cb()
+ m0cd()
+ m0ce()
+ m0cf()
+}