Mike Pall
ff0a1f3f4e
FOLD x / 2^k ==> x * 2^-k.
2012-08-15 16:17:34 +02:00
Mike Pall
e8af6e9da4
Don't treat all constified cdata content as constant.
2012-07-24 14:56:29 +02:00
Mike Pall
4d9c29a78c
FFI: Box all accessed or returned enums.
2012-07-17 22:22:07 +02:00
Mike Pall
2139c6791f
Fix FOLD rule (i-j)-i => 0-j.
...
Thanks to Thomas Schilling.
2012-07-17 21:47:45 +02:00
Mike Pall
c172e7aa30
Workaround for MSVC conversion bug (double -> uint32_t -> int32_t).
2012-07-17 21:45:49 +02:00
Mike Pall
17d3fc47f3
Avoid pesky compiler warnings about C++ keywords (eh?).
2012-07-03 13:19:32 +02:00
Mike Pall
a9bf455b96
Add HREFK forwarding. Eliminate HREFK guard for TDUP refs.
2012-06-28 15:10:52 +02:00
Mike Pall
5032e6d87f
FFI: Use CNEWI/FLOAD to box/access ffi.new("int", x) (for varargs).
2012-06-04 15:39:16 +02:00
Mike Pall
10ef109eef
Bump copyright date to 2012.
2012-01-23 22:42:42 +01:00
Mike Pall
455917fa0a
Add more FOLD rules for shift + BAND simplifications.
2011-10-25 21:16:27 +02:00
Mike Pall
aa502203a6
Add missing FOLD rule for CONV.u64.int + sign-extension.
2011-10-22 02:03:07 +02:00
Mike Pall
a39aac0445
Fix FOLD rule for CONV.flt.num(CONV.num.flt(x)) => x.
2011-10-19 01:52:50 +02:00
Mike Pall
270de2d6cc
Add missing FOLD rule for integer NEG of constants.
2011-10-17 17:21:09 +02:00
Mike Pall
f34ac81e3a
Remove unneeded PHI barrier for reassociation of duplicate ops.
2011-10-10 20:35:42 +02:00
Mike Pall
8c5935000d
Add narrowing of modulo operator.
2011-06-03 18:48:02 +02:00
Mike Pall
fff2fb31f9
ARM: Don't generate unaligned XLOADs.
2011-06-02 01:46:23 +02:00
Mike Pall
7683f39786
ARM: Fix math.ldexp() recording and folding.
2011-05-27 02:03:02 +02:00
Mike Pall
185554b682
ARM: Unify rotates to simplify assembler backend.
2011-05-23 20:20:34 +02:00
Mike Pall
28e87d33e9
Use common helper functions for unaligned loads.
2011-05-09 18:09:29 +02:00
Mike Pall
89022b4c3e
Use lj_vm_tobit() on targets without FPU.
2011-04-10 16:58:22 +02:00
Mike Pall
3acd4892e9
Add FOLD rule for FLOAT->NUM->FLOAT conversions.
2011-04-05 16:31:48 +02:00
Mike Pall
dcbae09b1d
DUALNUM: Narrow unary minus.
2011-03-15 18:14:18 +01:00
Mike Pall
7fb1075903
DUALNUM: Add integer variant of MIN/MAX.
2011-03-11 23:28:46 +01:00
Mike Pall
889368e921
Get rid of the remaining silly cast macros from Lua.
2011-03-10 02:13:43 +01:00
Mike Pall
bfce3c1127
DUALNUM: Handle integer type in JIT compiler.
2011-03-10 01:57:24 +01:00
Mike Pall
3f26e3a89d
FFI: Fix and optimize recording of cdata[cdata].
2011-03-10 01:41:58 +01:00
Mike Pall
54978e481b
DUALNUM: Make overflow guards weak. Add IR_USE and IR_MULOV.
2011-03-07 20:21:38 +01:00
Mike Pall
e1aa8d0d97
FFI: Fix compiled ffi.string() semantics.
2011-02-28 19:47:51 +01:00
Mike Pall
97d0874ff5
Add IR_XBAR, a barrier against XLOAD/XSTORE optimizations.
2011-02-07 21:59:25 +01:00
Mike Pall
4c74f70464
Strength-reduce 32 to 64 bit widening for XLOAD U8/U16 inputs.
2011-02-06 00:45:39 +01:00
Mike Pall
26fadcd25b
FFI: Record simple C function calls.
...
Only handles cdecl and fixarg C functions.
Doesn't handle pass-by-value aggregates.
Doesn't handle 64 bit args/returns on 32 bit CPUs.
2011-02-05 21:50:15 +01:00
Mike Pall
14f5103764
FFI: Record C library namespace lookups.
2011-02-05 14:16:16 +01:00
Mike Pall
1abf5d4d26
FFI: Disable MUL => BSHL FOLD rule on 32 bit.
2011-02-03 20:10:13 +01:00
Mike Pall
df65b8b419
FFI: Rename IR_CNEWP to IR_CNEWI and use it to box 64 bit integers.
...
Generates smaller IR and DCE eliminates many intermediate boxes.
Needs allocation sinking to eliminate the boxes kept alive by PHIs.
2011-02-03 04:22:27 +01:00
Mike Pall
1027018b21
Rename IR_POWI to IR_POW.
2011-02-02 21:33:11 +01:00
Mike Pall
433fd18f6d
FFI: Add basic FOLD rules for 64 bit integer DIV, MOD and POWI.
2011-02-02 21:25:43 +01:00
Mike Pall
b613216efc
Add SPLIT pass to split 64 bit IR instructions for 32 bit CPUs.
...
Add generic HIOP instruction for extra backend functionality.
Add support for HIOP to x86 backend.
Use POWI for 64 bit integer x^k, too.
POWI is lowered to a call by SPLIT or the x64 backend.
2011-02-02 02:29:37 +01:00
Mike Pall
6fee0002b9
Fix 64 bit case of (SUB x x) and (BXOR x x) FOLD rules.
2011-01-28 02:17:35 +01:00
Mike Pall
925050fe3f
Differentiate between IR_KPTR and IR_KKPTR.
...
IR_KPTR holds a const pointer to possibly non-const content.
IR_KKPTR holds a const pointer to definitely const content.
Note that only content known by the VM to be const qualifies.
Content tagged as const by users (e.g. const char *) doesn't.
2011-01-19 00:40:03 +01:00
Mike Pall
59643c86fb
Add FOLD rule for CONV.num.u32 KINT.
2011-01-13 17:18:08 +01:00
Mike Pall
06f99fc3df
Bump copyright date to 2011.
2011-01-09 17:12:53 +01:00
Mike Pall
b2c74c52cc
FFI: Add support for cdata constants to IR.
2011-01-02 22:21:10 +01:00
Mike Pall
783dbd335f
Refactoring of conversion ops, part 5: drop TOINT/TOI64/TONUM.
2010-12-31 04:09:32 +01:00
Mike Pall
1716540c55
Refactoring of conversion ops, part 4: use CONV instead of TOINT/TONUM.
...
Also narrow CONV.int.num and CONV.i64.num.
2010-12-31 03:56:30 +01:00
Mike Pall
1f26961092
Refactoring of conversion ops, part 3: add FOLD rules for IR_CONV.
2010-12-31 03:47:30 +01:00
Mike Pall
65b194a2f8
Copy destination type for CONV from ir->t to op2, too.
2010-12-31 01:00:54 +01:00
Mike Pall
2ca2de7f0e
Refactoring of conversion ops, part 1: add IR_CONV.
2010-12-30 00:35:32 +01:00
Mike Pall
255c6e8c87
FFI: Drop IR_CNEWI. Add IR_CNEWP only for pointers/refs.
2010-12-17 17:20:04 +01:00
Mike Pall
c98132e182
FFI: FOLD load of initializers even across PHIs.
2010-12-17 16:47:28 +01:00
Mike Pall
74317fa0ef
Add alias analysis for XLOAD/XSTORE. Add DSE for XSTORE.
2010-12-12 22:32:52 +01:00