aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
Diffstat (limited to 'testes')
-rw-r--r--testes/code.lua63
-rw-r--r--testes/coroutine.lua2
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
157end, 157end,
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
190end, 190end,
191 'LOADNIL', 'SUB', 'DIV', 'LOADI', 'RETURN0') 191 'LOADNIL', 'SUB', 'MMBIN', 'DIV', 'MMBIN', 'LOADI', 'RETURN0')
192 192
193check(function () 193check(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
295checkR(function (x) return x + k1 end, 10, 11, 'ADDI', 'RETURN1') 295checkR(function (x) return x + k1 end, 10, 11, 'ADDI', 'MMBINI', 'RETURN1')
296checkR(function (x) return 128 + x end, 0.0, 128.0, 'ADDI', 'RETURN1') 296checkR(function (x) return 128 + x end, 0.0, 128.0,
297checkR(function (x) return x * -127 end, -1.0, 127.0, 'MULI', 'RETURN1') 297 'ADDI', 'MMBINI', 'RETURN1')
298checkR(function (x) return 20 * x end, 2, 40, 'MULI', 'RETURN1') 298checkR(function (x) return x * -127 end, -1.0, 127.0,
299checkR(function (x) return x ^ -2 end, 2, 0.25, 'POWI', 'RETURN1') 299 'MULI', 'MMBINI', 'RETURN1')
300checkR(function (x) return x / 40 end, 40, 1.0, 'DIVI', 'RETURN1') 300checkR(function (x) return 20 * x end, 2, 40, 'MULI', 'MMBINI', 'RETURN1')
301checkR(function (x) return x // 1 end, 10.0, 10.0, 'IDIVI', 'RETURN1') 301checkR(function (x) return x ^ -2 end, 2, 0.25, 'POWI', 'MMBINI', 'RETURN1')
302checkR(function (x) return x % (100 - 10) end, 91, 1, 'MODI', 'RETURN1') 302checkR(function (x) return x / 40 end, 40, 1.0, 'DIVI', 'MMBINI', 'RETURN1')
303checkR(function (x) return x // 1 end, 10.0, 10.0,
304 'IDIVI', 'MMBINI', 'RETURN1')
305checkR(function (x) return x % (100 - 10) end, 91, 1,
306 'MODI', 'MMBINI', 'RETURN1')
303checkR(function (x) return k1 << x end, 3, 8, 'SHLI', 'RETURN1') 307checkR(function (x) return k1 << x end, 3, 8, 'SHLI', 'RETURN1')
304checkR(function (x) return x << 2 end, 10, 40, 'SHRI', 'RETURN1') 308checkR(function (x) return x << 2 end, 10, 40, 'SHRI', 'RETURN1')
305checkR(function (x) return x >> 2 end, 8, 2, 'SHRI', 'RETURN1') 309checkR(function (x) return x >> 2 end, 8, 2, 'SHRI', 'RETURN1')
306checkR(function (x) return x & 1 end, 9, 1, 'BANDK', 'RETURN1') 310checkR(function (x) return x & 1 end, 9, 1, 'BANDK', 'MMBINK', 'RETURN1')
307checkR(function (x) return 10 | x end, 1, 11, 'BORK', 'RETURN1') 311checkR(function (x) return 10 | x end, 1, 11, 'BORK', 'MMBINK', 'RETURN1')
308checkR(function (x) return -10 ~ x end, -1, 9, 'BXORK', 'RETURN1') 312checkR(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
311checkR(function (x) return x + 0.0 end, 1, 1.0, 'ADDK', 'RETURN1') 315checkR(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')
313checkR(function (x) return x * -10000 end, 2, -20000, 'MULK', 'RETURN1') 317checkR(function (x) return x * -10000 end, 2, -20000,
314-- check(function (x) return 20 * x end, 'MULK', 'RETURN1') 318 'MULK', 'MMBINK', 'RETURN1')
315checkR(function (x) return x ^ 0.5 end, 4, 2.0, 'POWK', 'RETURN1') 319-- check(function (x) return 20 * x end, 'MULK', 'MMBINK', 'RETURN1')
316checkR(function (x) return x / 2.0 end, 4, 2.0, 'DIVK', 'RETURN1') 320checkR(function (x) return x ^ 0.5 end, 4, 2.0, 'POWK', 'MMBINK', 'RETURN1')
317checkR(function (x) return x // 10000 end, 10000, 1, 'IDIVK', 'RETURN1') 321checkR(function (x) return x / 2.0 end, 4, 2.0, 'DIVK', 'MMBINK', 'RETURN1')
318checkR(function (x) return x % (100.0 - 10) end, 91, 1.0, 'MODK', 'RETURN1') 322checkR(function (x) return x // 10000 end, 10000, 1,
323 'IDIVK', 'MMBINK', 'RETURN1')
324checkR(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)
321check(function () return -0.0 end, 'LOADF', 'UNM', 'RETURN1') 328check(function () return -0.0 end, 'LOADF', 'UNM', 'RETURN1')
322check(function () return k3/0 end, 'LOADI', 'DIVI', 'RETURN1') 329check(function () return k3/0 end, 'LOADI', 'DIVI', 'MMBINI', 'RETURN1')
323check(function () return 0%0 end, 'LOADI', 'MODI', 'RETURN1') 330check(function () return 0%0 end, 'LOADI', 'MODI', 'MMBINI', 'RETURN1')
324check(function () return -4//0 end, 'LOADI', 'IDIVI', 'RETURN1') 331check(function () return -4//0 end, 'LOADI', 'IDIVI', 'MMBINI', 'RETURN1')
325check(function (x) return x >> 2.0 end, 'LOADF', 'SHR', 'RETURN1') 332check(function (x) return x >> 2.0 end, 'LOADF', 'SHR', 'RETURN1')
326check(function (x) return x & 2.0 end, 'LOADF', 'BAND', 'RETURN1') 333check(function (x) return x & 2.0 end, 'LOADF', 'BAND', 'MMBIN', 'RETURN1')
327 334
328-- basic 'for' loops 335-- basic 'for' loops
329check(function () for i = -10, 10.5 do end end, 336check(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
384checkequal( 391checkequal(
385function (a) while a < 10 do a = a + 1 end end, 392function (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)
751assert(run(function () return 1 >> a end, {"shr"}) == 1 >> 10) 751assert(run(function () return 1 >> a end, {"shr"}) == 1 >> 10)
752assert(run(function () return a << 2 end, {"shl"}) == 10 << 2) 752assert(run(function () return a << 2 end, {"shl"}) == 10 << 2)
753assert(run(function () return 1 << a end, {"shl"}) == 1 << 10) 753assert(run(function () return 1 << a end, {"shl"}) == 1 << 10)
754assert(run(function () return a ~ 2 end, {"bxor"}) == 10 ~ 2) 754assert(run(function () return 2 ~ a end, {"bxor"}) == 2 ~ 10)
755 755
756 756
757assert(run(function () return a..b end, {"concat"}) == "1012") 757assert(run(function () return a..b end, {"concat"}) == "1012")