Commit Graph

780 Commits

Author SHA1 Message Date
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
Dmitry Stogov
47083e0f9f Improve LOAD fusion 2022-08-25 18:16:17 +03:00
Dmitry Stogov
aa28e865da Fuse load into binary ops 2022-08-24 23:26:08 +03:00
Dmitry Stogov
65e1619de8 Fuse address calculation into LOAD/STORE 2022-08-24 16:11:04 +03:00
Dmitry Stogov
70f6faa612 Add basic IR verification 2022-08-24 13:57:55 +03:00
Dmitry Stogov
6973c76f64 Update tasks 2022-08-23 19:00:47 +03:00
Dmitry Stogov
32e045d93e typo 2022-08-23 17:02:34 +03:00
Dmitry Stogov
22e8d9930b Add SEXT/ZEXT folding for BOOL constants 2022-08-23 15:32:49 +03:00
Dmitry Stogov
7513098293 Don't generate code for dead loads 2022-08-23 12:35:10 +03:00
Dmitry Stogov
b0cba142a9 Merge ir_uses_fixed_reg() into ir_get_def_flags() and ir_get_use_flags() 2022-08-12 21:17:19 +03:00
Dmitry Stogov
b607a28b2a Fix 2022-08-12 21:01:35 +03:00
Dmitry Stogov
360ca107f4 Replace dirst ir_bitset_union() by ir_bitset_copy() 2022-08-12 19:52:24 +03:00
Dmitry Stogov
d55154d998 Introduce ir_bitqueue API 2022-08-12 19:25:10 +03:00
Dmitry Stogov
9ff5d74778 Introduce ir_bitset_pop_first_ex() and ir_bitset_incl_ex() to avoid repatable checks of the first bitset elements. 2022-08-12 18:01:15 +03:00
Dmitry Stogov
3a0fb71282 Improve ir_bitset_pop_first() 2022-08-12 16:09:32 +03:00
Dmitry Stogov
e7e0da2e79 ir_bitset API improvement 2022-08-12 15:54:25 +03:00
Dmitry Stogov
253b99ae74 Eliminate useless ir_bitset_empty() checks 2022-08-11 20:42:03 +03:00
Dmitry Stogov
ca109d3fc9 Use single live interval to handle all scratch registers clobbered by CALL 2022-08-11 19:56:59 +03:00
Dmitry Stogov
6329e48b28 Use malloc() instead of calloc() 2022-08-11 19:56:42 +03:00
Dmitry Stogov
0637bae796 Avoid useless reallocation 2022-08-11 15:53:47 +03:00
Dmitry Stogov
36a5bdaf43 Improve support for fixed prologue/epilogue 2022-08-11 13:32:44 +03:00
Dmitry Stogov
fc20369695 Use 64-bit instructions for ir_bitset if possible 2022-08-11 00:17:58 +03:00
Dmitry Stogov
cb4ae29a1b Optimize ir_schedule() 2022-08-10 23:40:48 +03:00
Dmitry Stogov
0b062be5a4 Optimize ir_build_def_use_lists() 2022-08-10 18:39:57 +03:00
Dmitry Stogov
1820972a21 Use PHP memory manager 2022-08-10 17:41:14 +03:00
Dmitry Stogov
17c567f591 Initialize ir_ctx.strtab lazely 2022-08-10 16:38:40 +03:00
Dmitry Stogov
825d18a5cf Reprder conditions 2022-08-10 15:37:14 +03:00
Dmitry Stogov
8ed4a4d2fa Cleanup "current_range" cache maintenance 2022-08-10 15:24:09 +03:00
Dmitry Stogov
8861c6cf54 Construct unhandled list in backward order to simplify the list sorting 2022-08-10 15:04:01 +03:00
Dmitry Stogov
1ef04d2540 Improve live interval coverage and overlaping tests by checking only the necessary tails of active and inactive intervals. 2022-08-10 13:59:34 +03:00
Dmitry Stogov
89013100c8 Optimize ir_ival_covers() (the list of live ranges is sorted) 2022-08-10 10:38:30 +03:00
Dmitry Stogov
0295c071cf Cache the last ir_live_range.end in ir_live_interval.end 2022-08-10 09:47:06 +03:00
Dmitry Stogov
d7ddbf89fb Fix usage help 2022-08-10 09:31:19 +03:00
Dmitry Stogov
901e1de968 Fix incorrect code selection pattern 2022-08-09 21:54:34 +03:00
Dmitry Stogov
7f50fe93b1 Fix incorrect sheduling 2022-08-09 13:06:57 +03:00
Dmitry Stogov
66458b4dee Add spill code 2022-08-08 23:17:33 +03:00
Dmitry Stogov
36561d86ce Support for negative zero
Support for unused CALL result
2022-08-04 00:22:19 +03:00
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