332 Commits

Author SHA1 Message Date
Dmitry Stogov
33bc4ce956 Fixed comparison with zero 2022-09-29 11:31:07 +03:00
Dmitry Stogov
494c9225a9 Refactor trace related helpers 2022-09-29 01:25:42 +03:00
Dmitry Stogov
fdaa0cea54 Ignore dead TLS loads 2022-09-28 21:56:10 +03:00
Dmitry Stogov
a1361d77ba Support for calling FASTCALL variable functions.
Currutly this done through BITCAST hack.
It may make sense to implement full support for function prototypes.
2022-09-28 20:48:35 +03:00
Dmitry Stogov
924f5949f2 Fixed SSE operands alignment and 32-bit support 2022-09-27 20:36:34 +03:00
Dmitry Stogov
408b8d2e4b Fixed support for GUARD/GUARD_NOT 2022-09-27 16:52:15 +03:00
Dmitry Stogov
31220b1de9 Add code generators for missing GUARDs 2022-09-26 20:47:29 +03:00
Dmitry Stogov
da11454058 Fix incorrect code for IJMP 2022-09-26 14:45:12 +03:00
Dmitry Stogov
2b4a7d2cb3 Fix out of bounds array access 2022-09-23 12:36:11 +03:00
Dmitry Stogov
8f5768628a Initial support for tracing JIT 2022-09-23 12:22:59 +03:00
Dmitry Stogov
05fd1f971d Better LOAD fusion 2022-09-21 23:54:45 +03:00
Dmitry Stogov
12c183f391 Added support for GUARD_OVERFLOW 2022-09-20 17:38:27 +03:00
Dmitry Stogov
c186fb2c25 Fix constant address loading 2022-09-20 14:37:10 +03:00
Dmitry Stogov
63f21925b3 Avoid useless move 2022-09-20 00:26:56 +03:00
Dmitry Stogov
eacb9c1528 Avoid useless mov 2022-09-20 00:12:06 +03:00
Dmitry Stogov
b519f80da5 More accurte fusion of address calculation 2022-09-16 12:05:36 +03:00
Dmitry Stogov
86bec14bc2 Fixed fuse loading in BITCAST 2022-09-16 10:19:31 +03:00
Dmitry Stogov
4a8ebd5be5 Fuse function address load into CALL/TAILCALL without arguments 2022-09-16 09:54:49 +03:00
Dmitry Stogov
57a9731179 Fix spill load code 2022-09-15 23:24:28 +03:00
Dmitry Stogov
b549d98aba The second operand for MEM_BINOP_INT must be in a register 2022-09-15 20:29:30 +03:00
Dmitry Stogov
367e47ac30 Support for preallocated stack (ZEND_VM_HYBRID_JIT_RED_ZONE_SIZE in PHP VM) 2022-09-15 15:39:15 +03:00
Dmitry Stogov
ad59556d85 Add support for binding IR nodes to "external" spill slots (e.g. PHP VM stack slots) 2022-09-15 15:26:43 +03:00
Dmitry Stogov
5f4b42155f ctx->rules[] is valid only for non CONST IR reference 2022-09-14 15:54:24 +03:00
Dmitry Stogov
05bc456c6a Move base regester selection code into ir_ref_spill_slot() 2022-09-07 23:47:30 +03:00
Dmitry Stogov
2677299bbd Fix invalid type 2022-09-07 22:21:12 +03:00
Dmitry Stogov
b68c4db601 Don't fuse LOAD into instruction in diffrent basic block 2022-09-06 14:01:35 +03:00
Dmitry Stogov
8600801c1f Eliminate identical comparisons 2022-09-05 14:41:38 +03:00
Dmitry Stogov
fb0d5fd87c Improve GUARD instructions support 2022-09-02 13:54:31 +03:00
Dmitry Stogov
c865599451 Fix code generation 2022-09-02 13:12:58 +03:00
Dmitry Stogov
5034f8dedb Allow genearion of TEST MEM, IMM 2022-09-01 22:25:29 +03:00
Dmitry Stogov
9b558e544f Allow fusion of single address calculation instruction into several load/store instructions
Previously, if calculated address were used in few places we kept it in a register (without
fusion).
2022-09-01 20:40:29 +03:00
Dmitry Stogov
756a1afc82 Better register allocation support for address and load fusion 2022-09-01 19:19:01 +03:00
Dmitry Stogov
5e4503b624 Fix JMP optimization for MERGE/N and last basic block 2022-08-31 00:01:15 +03:00
Dmitry Stogov
32198c00b7 Reimplement JMP optimization 2022-08-30 23:15:20 +03:00
Dmitry Stogov
5afa116d34 Get rid of MREF macros 2022-08-30 16:15:30 +03:00
Dmitry Stogov
80192093e5 Swap operands of FP comparison to produce the better code 2022-08-30 15:52:55 +03:00
Dmitry Stogov
e4be1de649 Allow LOAD/STORE fusion for ADD_OV/SUB_OV 2022-08-30 12:23:20 +03:00
Dmitry Stogov
0596de2291 Fuse LOAD into IMULL/3 2022-08-30 11:26:38 +03:00
Dmitry Stogov
e87e71b092 cleanup 2022-08-30 10:23:56 +03:00
Dmitry Stogov
11c03dbfb3 Fix call stack alignment and fastcall support 2022-08-30 00:42:06 +03:00
Dmitry Stogov
fd8539e17d Eliminate TEST after ADD/SUB/AND/OR/XOR 2022-08-29 22:22:30 +03:00
Dmitry Stogov
c69d970ca2 Add missing "else" 2022-08-26 11:50:28 +03:00
Dmitry Stogov
e023a18749 Test part of the register to avoid test with mask 2022-08-26 11:48:13 +03:00
Dmitry Stogov
57f9e6ed8f Optimize AND into TEST 2022-08-26 11:07:35 +03:00
Dmitry Stogov
23d7b3b4ac Simplift integer comarison code genertor 2022-08-25 23:42:15 +03:00
Dmitry Stogov
1d4b00ddb0 Load fusion for BITCAST 2022-08-25 23:18:00 +03:00
Dmitry Stogov
f8cf71318e Load fusion into type conversion instructions 2022-08-25 23:06:45 +03:00
Dmitry Stogov
56956cbe0f Load fusion for IF_INT 2022-08-25 22:18:15 +03:00
Dmitry Stogov
1f657fd4d7 Load fusion for MUL/DIV/MOD 2022-08-25 21:47:07 +03:00
Dmitry Stogov
dbb382224d Remove useless code 2022-08-25 21:14:56 +03:00