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 * Data type conversion and manipulation 31 */ 32 33// Convert data to integer 34 35Name(z047, 47) 36 37// Integer 38 39// 32-bit 40Name(p300, Package() 41{ 42 0, 43 0x81, 44 0x8232, 45 0x76543201, 46 0xf89abcde, 47 0xffffffff, 48}) 49 50// 64-bit 51Name(p302, Package() 52{ 53 0x8123456789, 54 0x8cdae2376890, 55 0x76543201f89abcde, 56 0xf89abcde76543201, 57 0xffffffffffffffff, 58}) 59 60// Hexadecimal numeric String 61 62// 32-bit 63Name(p304, Package() 64{ 65 "0x0", // 0 66 "0x00", 67 "0x1", 68 "0x83", 69 "0x456", 70 "0x8232", 71 "0xbcdef", 72 "0x123456", 73 "0x789abcd", 74 "0xffffffff", 75 "0x01234567", // 10 76 "0X12345678", 77 "0x23456789", 78 "0x3456789a", 79 "0x456789ab", 80 "0x56789abc", 81 "0x6789abcd", 82 "0x789abcde", 83 "0x89abcdef", 84 "0x9abcdefA", 85 "0xabcdefAB", // 20 86 "0xbcdefABC", 87 "0xcdefABCD", 88 "0xdefABCDE", 89 "0xefABCDEF", 90 "0xfABCDEF0", 91 "0xABCDEF01", 92 "0xBCDEF012", 93 "0xCDEF0123", 94 "0xDEF01234", 95 "0xEF012345", // 30 96 "0xF0123456", 97}) 98 99Name(p305, Package() 100{ 101 0, 102 0, 103 0x1, 104 0x83, 105 0x456, 106 0x8232, 107 0xbcdef, 108 0x123456, 109 0x789abcd, 110 0xffffffff, 111 0X1234567, 112 0x12345678, 113 0x23456789, 114 0x3456789a, 115 0x456789ab, 116 0x56789abc, 117 0x6789abcd, 118 0x789abcde, 119 0x89abcdef, 120 0x9abcdefa, 121 0xabcdefab, 122 0xbcdefabc, 123 0xcdefabcd, 124 0xdefabcde, 125 0xefabcdef, 126 0xfabcdef0, 127 0xabcdef01, 128 0xbcdef012, 129 0xcdef0123, 130 0xdef01234, 131 0xef012345, 132 0xf0123456, 133}) 134 135// 64-bit 136Name(p306, Package() 137{ 138 "0x123456789", // 0 139 "0x8123456789", 140 "0xabcdef01234", 141 "0x876543210abc", 142 "0x1234567abcdef", 143 "0x8234567abcdef1", 144 "0x6789abcdef01234", 145 "0x76543201f89abcde", 146 "0xf89abcde76543201", 147 "0xffffffffffffffff", 148 "0X0123456789abcdef", // 10 149 "0x123456789abcdefA", 150 "0x23456789abcdefAB", 151 "0x3456789abcdefABC", 152 "0x456789abcdefABCD", 153 "0x56789abcdefABCDE", 154 "0x6789abcdefABCDEF", 155 "0x789abcdefABCDEF0", 156 "0x89abcdefABCDEF01", 157 "0x9abcdefABCDEF012", 158 "0xabcdefABCDEF0123", // 20 159 "0xbcdefABCDEF01234", 160 "0xcdefABCDEF012345", 161 "0xdefABCDEF0123456", 162 "0xefABCDEF01234567", 163 "0xfABCDEF012345678", 164 "0xABCDEF0123456789", 165 "0xBCDEF0123456789a", 166 "0xCDEF0123456789ab", 167 "0xDEF0123456789abc", 168 "0xEF0123456789abcd", // 30 169 "0xF0123456789abcde", 170}) 171 172Name(p307, Package() 173{ 174 0x123456789, 175 0x8123456789, 176 0xabcdef01234, 177 0x876543210abc, 178 0x1234567abcdef, 179 0x8234567abcdef1, 180 0x6789abcdef01234, 181 0x76543201f89abcde, 182 0xf89abcde76543201, 183 0xffffffffffffffff, 184 0x0123456789abcdef, 185 0x123456789abcdefa, 186 0x23456789abcdefab, 187 0x3456789abcdefabc, 188 0x456789abcdefabcd, 189 0x56789abcdefabcde, 190 0x6789abcdefabcdef, 191 0x789abcdefabcdef0, 192 0x89abcdefabcdef01, 193 0x9abcdefabcdef012, 194 0xabcdefabcdef0123, 195 0xbcdefabcdef01234, 196 0xcdefabcdef012345, 197 0xdefabcdef0123456, 198 0xefabcdef01234567, 199 0xfabcdef012345678, 200 0xabcdef0123456789, 201 0xbcdef0123456789a, 202 0xcdef0123456789ab, 203 0xdef0123456789abc, 204 0xef0123456789abcd, 205 0xf0123456789abcde, 206}) 207 208// Decimal numeric String 209 210// 32-bit 211Name(p308, Package() 212{ 213 "0", 214 "12", 215 "345", 216 "6789", 217 "12345", 218 "678901", 219 "2345678", 220 "90123456", 221 "789012345", 222 "4294967295", // == "0xffffffff" 223 "4294967295", // == "0xffffffff" 224 "0123456789", 225 "1234567890", 226 "2345678901", 227 "3456789012", 228 "1567890123", 229 "2678901234", 230 "3789012345", 231 "1890123456", 232 "2901234567", 233 "3012345678", 234}) 235 236Name(p309, Package() 237{ 238 0, 239 12, 240 345, 241 6789, 242 12345, 243 678901, 244 2345678, 245 90123456, 246 789012345, 247 4294967295, 248 0xffffffff, 249 123456789, 250 1234567890, 251 2345678901, 252 3456789012, 253 1567890123, 254 2678901234, 255 3789012345, 256 1890123456, 257 2901234567, 258 3012345678, 259}) 260 261// 64-bit 262Name(p310, Package() 263{ 264 "30123456790", 265 "123456789012", 266 "3456789012345", 267 "26789012346789", 268 "123456789012345", 269 "3789012345678901", 270 "23456789012345678", 271 "301234567890123456", 272 "1890123456789012345", 273 "18446744073709551615", // == "0xffffffffffffffff" 274 "18446744073709551615", // == "0xffffffffffffffff" 275 "01234567890123456789", 276 "12345678901234567890", 277 "13456789012345678901", 278 "14567890123456789012", 279 "15678901231567890123", 280 "16789012342678901234", 281 "17890123453789012345", 282 "18301234561890123456", 283 "18012345672901234567", 284 "10123456783012345678", 285}) 286 287Name(p311, Package() 288{ 289 30123456790, 290 123456789012, 291 3456789012345, 292 26789012346789, 293 123456789012345, 294 3789012345678901, 295 23456789012345678, 296 301234567890123456, 297 1890123456789012345, 298 18446744073709551615, 299 0xffffffffffffffff, 300 1234567890123456789, 301 12345678901234567890, 302 13456789012345678901, 303 14567890123456789012, 304 15678901231567890123, 305 16789012342678901234, 306 17890123453789012345, 307 18301234561890123456, 308 18012345672901234567, 309 10123456783012345678, 310}) 311 312// Buffer 313 314// 32-bit 315Name(p312, Package() 316{ 317 // buffer, 32-bit integer 318 Buffer(1) {0x81}, 319 Buffer(2) {0x82, 0x83}, 320 Buffer(3) {0x84, 0x85, 0x86}, 321 Buffer(4) {0x87, 0x88, 0x89, 0x8a}, 322 // for 32-bit mode only 323 Buffer(5) {0x8b, 0x8c, 0x8d, 0x8e, 0x8f}, 324}) 325 326Name(p313, Package() 327{ 328 0x81, 329 0x8382, 330 0x868584, 331 0x8a898887, 332 0x8e8d8c8b, 333}) 334 335// 64-bit 336Name(p314, Package() 337{ 338 Buffer(5) {0x85, 0x84, 0x83, 0x82, 0x81}, 339 Buffer(6) {0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86}, 340 Buffer(7) {0x82, 0x81, 0x80, 0x8f, 0x8e, 0x8d, 0x8c}, 341 Buffer(8) {0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83}, 342 Buffer(9) {0x83, 0x82, 0x81, 0x80, 0x8f, 0x8e, 0x8d, 0x8c, 0x8b}, 343}) 344 345Name(p315, Package() 346{ 347 // buffer, 32-bit integer 348 0x8182838485, 349 0x868788898a8b, 350 0x8c8d8e8f808182, 351 0x838485868788898a, 352 0x8c8d8e8f80818283, 353}) 354 355// Run-method 356Method(TOI0,, Serialized) 357{ 358 Name(ts, "TOI0") 359 360 Store("TEST: TOI0, Convert data to integer", Debug) 361 362 // From integer 363 if (LEqual(F64, 1)) { 364 m302(ts, 6, "p300", p300, p300, 0) 365 m302(ts, 5, "p302", p302, p302, 0) 366 } else { 367 m302(ts, 6, "p300", p300, p300, 0) 368 } 369 370 // From hexadecimal numeric string 371 if (LEqual(F64, 1)) { 372 m302(ts, 32, "p304", p304, p305, 0) 373 m302(ts, 32, "p306", p306, p307, 0) 374 } else { 375 m302(ts, 32, "p304", p304, p305, 0) 376 } 377 378 // From decimal numeric string 379 if (LEqual(F64, 1)) { 380 m302(ts, 21, "p308", p308, p309, 0) 381 m302(ts, 21, "p310", p310, p311, 0) 382 } else { 383 m302(ts, 21, "p308", p308, p309, 0) 384 } 385 386 // From buffer 387 if (LEqual(F64, 1)) { 388 m302(ts, 4, "p312", p312, p313, 0) 389 m302(ts, 5, "p314", p314, p315, 0) 390 } else { 391 m302(ts, 5, "p312", p312, p313, 0) 392 } 393 394 // Suppression of zeroes 395 396 if (y602) { 397 CH03(ts, z047, 0, 0, 0) 398 Store("0x0123456789abcdefa", Local0) 399 ToInteger(Local0, Local2) 400 CH04(ts, 0, 34, z047, 1, 0, 0) 401 402 CH03(ts, z047, 2, 0, 0) 403 Store("0x000123456789abcdefa", Local0) 404 ToInteger(Local0, Local2) 405 CH04(ts, 0, 34, z047, 3, 0, 0) 406 } else { 407 Store("0x0123456789abcdefa", Local0) 408 Store(0x123456789abcdefa, Local1) 409 ToInteger(Local0, Local2) 410 if (LNotEqual(Local2, Local1)) { 411 err(ts, z047, 4, 0, 0, Local0, 0) 412 } 413 414 Store("0x000123456789abcdefa", Local0) 415 ToInteger(Local0, Local2) 416 if (LNotEqual(Local2, Local1)) { 417 err(ts, z047, 5, 0, 0, Local0, 0) 418 } 419 } 420} 421