diff options
Diffstat (limited to 'testes')
| -rw-r--r-- | testes/code.lua | 63 | ||||
| -rw-r--r-- | testes/coroutine.lua | 2 |
2 files changed, 36 insertions, 29 deletions
diff --git a/testes/code.lua b/testes/code.lua index 3b768f33..fcb5c309 100644 --- a/testes/code.lua +++ b/testes/code.lua | |||
| @@ -156,9 +156,9 @@ check(function () | |||
| 156 | c.x, a[b] = -((a + d/b - a[b]) ^ a.x), b | 156 | c.x, a[b] = -((a + d/b - a[b]) ^ a.x), b |
| 157 | end, | 157 | end, |
| 158 | 'LOADNIL', | 158 | 'LOADNIL', |
| 159 | 'MUL', | 159 | 'MUL', 'MMBIN', |
| 160 | 'DIV', 'ADD', 'GETTABLE', 'SUB', 'GETFIELD', 'POW', | 160 | 'DIV', 'MMBIN', 'ADD', 'MMBIN', 'GETTABLE', 'SUB', 'MMBIN', |
| 161 | 'UNM', 'SETTABLE', 'SETFIELD', 'RETURN0') | 161 | 'GETFIELD', 'POW', 'MMBIN', 'UNM', 'SETTABLE', 'SETFIELD', 'RETURN0') |
| 162 | 162 | ||
| 163 | 163 | ||
| 164 | -- direct access to constants | 164 | -- direct access to constants |
| @@ -188,7 +188,7 @@ check(function () | |||
| 188 | b = a/a | 188 | b = a/a |
| 189 | b = 5-4 | 189 | b = 5-4 |
| 190 | end, | 190 | end, |
| 191 | 'LOADNIL', 'SUB', 'DIV', 'LOADI', 'RETURN0') | 191 | 'LOADNIL', 'SUB', 'MMBIN', 'DIV', 'MMBIN', 'LOADI', 'RETURN0') |
| 192 | 192 | ||
| 193 | check(function () | 193 | check(function () |
| 194 | local a,b | 194 | local a,b |
| @@ -292,38 +292,45 @@ checkK(function () return -(border + 1) end, -(sbx + 1.0)) | |||
| 292 | 292 | ||
| 293 | 293 | ||
| 294 | -- immediate operands | 294 | -- immediate operands |
| 295 | checkR(function (x) return x + k1 end, 10, 11, 'ADDI', 'RETURN1') | 295 | checkR(function (x) return x + k1 end, 10, 11, 'ADDI', 'MMBINI', 'RETURN1') |
| 296 | checkR(function (x) return 128 + x end, 0.0, 128.0, 'ADDI', 'RETURN1') | 296 | checkR(function (x) return 128 + x end, 0.0, 128.0, |
| 297 | checkR(function (x) return x * -127 end, -1.0, 127.0, 'MULI', 'RETURN1') | 297 | 'ADDI', 'MMBINI', 'RETURN1') |
| 298 | checkR(function (x) return 20 * x end, 2, 40, 'MULI', 'RETURN1') | 298 | checkR(function (x) return x * -127 end, -1.0, 127.0, |
| 299 | checkR(function (x) return x ^ -2 end, 2, 0.25, 'POWI', 'RETURN1') | 299 | 'MULI', 'MMBINI', 'RETURN1') |
| 300 | checkR(function (x) return x / 40 end, 40, 1.0, 'DIVI', 'RETURN1') | 300 | checkR(function (x) return 20 * x end, 2, 40, 'MULI', 'MMBINI', 'RETURN1') |
| 301 | checkR(function (x) return x // 1 end, 10.0, 10.0, 'IDIVI', 'RETURN1') | 301 | checkR(function (x) return x ^ -2 end, 2, 0.25, 'POWI', 'MMBINI', 'RETURN1') |
| 302 | checkR(function (x) return x % (100 - 10) end, 91, 1, 'MODI', 'RETURN1') | 302 | checkR(function (x) return x / 40 end, 40, 1.0, 'DIVI', 'MMBINI', 'RETURN1') |
| 303 | checkR(function (x) return x // 1 end, 10.0, 10.0, | ||
| 304 | 'IDIVI', 'MMBINI', 'RETURN1') | ||
| 305 | checkR(function (x) return x % (100 - 10) end, 91, 1, | ||
| 306 | 'MODI', 'MMBINI', 'RETURN1') | ||
| 303 | checkR(function (x) return k1 << x end, 3, 8, 'SHLI', 'RETURN1') | 307 | checkR(function (x) return k1 << x end, 3, 8, 'SHLI', 'RETURN1') |
| 304 | checkR(function (x) return x << 2 end, 10, 40, 'SHRI', 'RETURN1') | 308 | checkR(function (x) return x << 2 end, 10, 40, 'SHRI', 'RETURN1') |
| 305 | checkR(function (x) return x >> 2 end, 8, 2, 'SHRI', 'RETURN1') | 309 | checkR(function (x) return x >> 2 end, 8, 2, 'SHRI', 'RETURN1') |
| 306 | checkR(function (x) return x & 1 end, 9, 1, 'BANDK', 'RETURN1') | 310 | checkR(function (x) return x & 1 end, 9, 1, 'BANDK', 'MMBINK', 'RETURN1') |
| 307 | checkR(function (x) return 10 | x end, 1, 11, 'BORK', 'RETURN1') | 311 | checkR(function (x) return 10 | x end, 1, 11, 'BORK', 'MMBINK', 'RETURN1') |
| 308 | checkR(function (x) return -10 ~ x end, -1, 9, 'BXORK', 'RETURN1') | 312 | checkR(function (x) return -10 ~ x end, -1, 9, 'BXORK', 'MMBINK', 'RETURN1') |
| 309 | 313 | ||
| 310 | -- K operands in arithmetic operations | 314 | -- K operands in arithmetic operations |
| 311 | checkR(function (x) return x + 0.0 end, 1, 1.0, 'ADDK', 'RETURN1') | 315 | checkR(function (x) return x + 0.0 end, 1, 1.0, 'ADDK', 'MMBINK', 'RETURN1') |
| 312 | -- check(function (x) return 128 + x end, 'ADDK', 'RETURN1') | 316 | -- check(function (x) return 128 + x end, 'ADDK', 'MMBINK', 'RETURN1') |
| 313 | checkR(function (x) return x * -10000 end, 2, -20000, 'MULK', 'RETURN1') | 317 | checkR(function (x) return x * -10000 end, 2, -20000, |
| 314 | -- check(function (x) return 20 * x end, 'MULK', 'RETURN1') | 318 | 'MULK', 'MMBINK', 'RETURN1') |
| 315 | checkR(function (x) return x ^ 0.5 end, 4, 2.0, 'POWK', 'RETURN1') | 319 | -- check(function (x) return 20 * x end, 'MULK', 'MMBINK', 'RETURN1') |
| 316 | checkR(function (x) return x / 2.0 end, 4, 2.0, 'DIVK', 'RETURN1') | 320 | checkR(function (x) return x ^ 0.5 end, 4, 2.0, 'POWK', 'MMBINK', 'RETURN1') |
| 317 | checkR(function (x) return x // 10000 end, 10000, 1, 'IDIVK', 'RETURN1') | 321 | checkR(function (x) return x / 2.0 end, 4, 2.0, 'DIVK', 'MMBINK', 'RETURN1') |
| 318 | checkR(function (x) return x % (100.0 - 10) end, 91, 1.0, 'MODK', 'RETURN1') | 322 | checkR(function (x) return x // 10000 end, 10000, 1, |
| 323 | 'IDIVK', 'MMBINK', 'RETURN1') | ||
| 324 | checkR(function (x) return x % (100.0 - 10) end, 91, 1.0, | ||
| 325 | 'MODK', 'MMBINK', 'RETURN1') | ||
| 319 | 326 | ||
| 320 | -- no foldings (and immediate operands) | 327 | -- no foldings (and immediate operands) |
| 321 | check(function () return -0.0 end, 'LOADF', 'UNM', 'RETURN1') | 328 | check(function () return -0.0 end, 'LOADF', 'UNM', 'RETURN1') |
| 322 | check(function () return k3/0 end, 'LOADI', 'DIVI', 'RETURN1') | 329 | check(function () return k3/0 end, 'LOADI', 'DIVI', 'MMBINI', 'RETURN1') |
| 323 | check(function () return 0%0 end, 'LOADI', 'MODI', 'RETURN1') | 330 | check(function () return 0%0 end, 'LOADI', 'MODI', 'MMBINI', 'RETURN1') |
| 324 | check(function () return -4//0 end, 'LOADI', 'IDIVI', 'RETURN1') | 331 | check(function () return -4//0 end, 'LOADI', 'IDIVI', 'MMBINI', 'RETURN1') |
| 325 | check(function (x) return x >> 2.0 end, 'LOADF', 'SHR', 'RETURN1') | 332 | check(function (x) return x >> 2.0 end, 'LOADF', 'SHR', 'RETURN1') |
| 326 | check(function (x) return x & 2.0 end, 'LOADF', 'BAND', 'RETURN1') | 333 | check(function (x) return x & 2.0 end, 'LOADF', 'BAND', 'MMBIN', 'RETURN1') |
| 327 | 334 | ||
| 328 | -- basic 'for' loops | 335 | -- basic 'for' loops |
| 329 | check(function () for i = -10, 10.5 do end end, | 336 | check(function () for i = -10, 10.5 do end end, |
| @@ -379,7 +386,7 @@ check(function (a, b) | |||
| 379 | if b then break else a = a + 1 end | 386 | if b then break else a = a + 1 end |
| 380 | end | 387 | end |
| 381 | end, | 388 | end, |
| 382 | 'TEST', 'JMP', 'TEST', 'JMP', 'ADDI', 'JMP', 'RETURN0') | 389 | 'TEST', 'JMP', 'TEST', 'JMP', 'ADDI', 'MMBINI', 'JMP', 'RETURN0') |
| 383 | 390 | ||
| 384 | checkequal( | 391 | checkequal( |
| 385 | function (a) while a < 10 do a = a + 1 end end, | 392 | function (a) while a < 10 do a = a + 1 end end, |
diff --git a/testes/coroutine.lua b/testes/coroutine.lua index 48f4c5bf..81d848a3 100644 --- a/testes/coroutine.lua +++ b/testes/coroutine.lua | |||
| @@ -751,7 +751,7 @@ assert(run(function () return a >> 2 end, {"shr"}) == 10 >> 2) | |||
| 751 | assert(run(function () return 1 >> a end, {"shr"}) == 1 >> 10) | 751 | assert(run(function () return 1 >> a end, {"shr"}) == 1 >> 10) |
| 752 | assert(run(function () return a << 2 end, {"shl"}) == 10 << 2) | 752 | assert(run(function () return a << 2 end, {"shl"}) == 10 << 2) |
| 753 | assert(run(function () return 1 << a end, {"shl"}) == 1 << 10) | 753 | assert(run(function () return 1 << a end, {"shl"}) == 1 << 10) |
| 754 | assert(run(function () return a ~ 2 end, {"bxor"}) == 10 ~ 2) | 754 | assert(run(function () return 2 ~ a end, {"bxor"}) == 2 ~ 10) |
| 755 | 755 | ||
| 756 | 756 | ||
| 757 | assert(run(function () return a..b end, {"concat"}) == "1012") | 757 | assert(run(function () return a..b end, {"concat"}) == "1012") |
