Commit Graph

487 Commits

Author SHA1 Message Date
Dmitry Stogov
88b8731c16 Fix incorrect condition codes 2022-08-02 13:04:03 +03:00
Dmitry Stogov
6c78558bfe Fuse address calculation into FP load/store 2022-07-26 21:04:26 +03:00
Dmitry Stogov
1e5ce07406 Fix int32_t overflow 2022-07-26 20:29:06 +03:00
Dmitry Stogov
ac8b3bac28 Allow GUARDs with constant conditions 2022-07-22 09:45:52 +03:00
Dmitry Stogov
1089699f2c Only unsigned MOD may be converted into AND 2022-07-21 20:45:19 +03:00
Dmitry Stogov
e235a33679 Fix negaive DIV/MOD 2022-07-21 20:39:36 +03:00
Dmitry Stogov
6800af4013 Support for IJMP with constant operand 2022-07-21 20:25:19 +03:00
Dmitry Stogov
efbc6d6b84 Fix address calculation fusion 2022-07-20 22:30:25 +03:00
Dmitry Stogov
999d7d6aa9 Fix loop termination condition 2022-07-20 18:16:18 +03:00
Dmitry Stogov
3c4135576a Add TRAP instruction 2022-07-20 17:59:44 +03:00
Dmitry Stogov
42df10b3ae Fuse address calculation into store 2022-07-20 17:19:46 +03:00
Dmitry Stogov
7552732d65 ws 2022-07-20 11:39:05 +03:00
Dmitry Stogov
4004a9d222 Support for overflow detection 2022-07-20 11:25:53 +03:00
Dmitry Stogov
e1ae79102a Fuse address calulation with the following binary op 2022-07-19 17:53:17 +03:00
Dmitry Stogov
10db2aeb06 AArch64: Optimize compound assignment to fixed register (RLOAD+ADD+RSTORE) 2022-06-28 16:57:35 +03:00
Dmitry Stogov
b6b8cbb8c3 Fuse comparison and guard check 2022-06-28 16:36:06 +03:00
Dmitry Stogov
6b92f02a9c AArch64: Fuse address calculation into LDR/STR instructions 2022-06-28 12:24:50 +03:00
Dmitry Stogov
b6605500f0 Improve AArch64 support 2022-06-28 01:43:59 +03:00
Dmitry Stogov
907c22261d Turn IR_TLS into "load" 2022-06-28 00:03:06 +03:00
Dmitry Stogov
fe333adfa1 Add ability to force fix/restore some predefied registers 2022-06-23 22:39:00 +03:00
Dmitry Stogov
7ae3d1dc6a Fix memory leak 2022-06-23 17:17:06 +03:00
Dmitry Stogov
1bc5dc43dd Add IR_STUB flag 2022-06-23 17:06:22 +03:00
Dmitry Stogov
3ee401efec Fixed assertion condition 2022-06-23 16:44:44 +03:00
Dmitry Stogov
c9fa87e6c4 Support for fastcall caling convention.
(this should be reimplemented through function prototypes)
2022-06-23 13:14:30 +03:00
Dmitry Stogov
56c8b372a8 Replace ir_insn.emit_const by ir_insn.const_flags 2022-06-23 11:25:47 +03:00
Dmitry Stogov
2148f05392 Initial support for fascall calling convention (incomplete) 2022-06-22 23:59:56 +03:00
Dmitry Stogov
ef3ffff81b Fix CALL/1 copying. Fallback to CALL+RETURN when we can't generate code for TAILCALL. 2022-06-22 17:57:31 +03:00
Dmitry Stogov
a165c43196 Initial support for thread local storage + optimization of some related code selection patterns 2022-06-22 16:02:43 +03:00
Dmitry Stogov
9b25587eb6 Compound assignment instruction fusion 2022-06-21 17:33:57 +03:00
Dmitry Stogov
082bcf89c9 Use ir_ctx.fixed_regset to limit available registers 2022-06-21 16:13:14 +03:00
Dmitry Stogov
fc2266d61a Remove PHP specific registers 2022-06-21 15:09:26 +03:00
Dmitry Stogov
f62e1da8ef Make distinction between ENTRY and regular labels 2022-06-21 14:57:31 +03:00
Dmitry Stogov
88b66a77cd Support for multiple ENTRY 2022-06-21 13:56:29 +03:00
Dmitry Stogov
cb64f578eb Avoid memory allocation for empty arguments list 2022-06-21 13:04:33 +03:00
Dmitry Stogov
4060f9ca23 Avoid hardcoded file path (use stdin instead) 2022-06-21 12:24:44 +03:00
Dmitry Stogov
00e92483bc Fix compilation warnings 2022-06-21 11:41:59 +03:00
Dmitry Stogov
be054efb97 Use function API intead of macros 2022-06-21 11:24:42 +03:00
Dmitry Stogov
0ed7f7b41e Fix CFG construction 2022-06-20 23:31:32 +03:00
Dmitry Stogov
5ef1e97261 Better support for unreachable basic blocks 2022-06-20 16:34:44 +03:00
Dmitry Stogov
f8a23e9fe4 Don't protect/unprotect external code buffer 2022-06-17 13:22:26 +03:00
Dmitry Stogov
1c78c3a2c2 Fix CFG consruction when some BB cannot be find using backward serach
(e.g. function with an infinity loop and without return)
2022-06-17 12:20:15 +03:00
Dmitry Stogov
688b547a1e Fix incorret size 2022-06-17 10:08:05 +03:00
Dmitry Stogov
68477b7d7c Add assertion 2022-06-17 09:41:06 +03:00
Dmitry Stogov
411dd20331 Support for code fragments with multiple entries 2022-06-16 23:49:27 +03:00
Dmitry Stogov
ac5c3981e5 Allow LOOP_BEGIN to have multiple input back-edges 2022-06-16 12:31:23 +03:00
Dmitry Stogov
3f6c1ee0f5 cleanup 2022-06-15 22:48:19 +03:00
Dmitry Stogov
ba6bb796a4 Fix "dot" graphs 2022-06-15 17:31:59 +03:00
Dmitry Stogov
5fb115ab11 Remove LOOP_EXIT 2022-06-15 17:27:31 +03:00
Dmitry Stogov
706850f578 Prevent mov reg to itself 2022-06-15 14:37:16 +03:00
Dmitry Stogov
d877e35909 Fuse load+cmp 2022-06-15 13:15:19 +03:00