Commit Graph

506 Commits

Author SHA1 Message Date
Dmitry Stogov
d5f73bf388 Skip op1 of CONTROL nodes 2022-09-05 22:00:00 +03:00
Dmitry Stogov
e0e5838a4b GCM optimization 2022-09-05 21:26:27 +03:00
Dmitry Stogov
8fd8913fcc Use loop only for MERGE and LOOP_BEGIN 2022-09-05 19:21:07 +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
2c2a9716ab Use sorted list to search for identical constants 2022-09-02 11:08:55 +03:00
Dmitry Stogov
6c7889ebd1 Simplify IF->IF_TRUE/IF_FALSE search 2022-09-02 11:00:40 +03:00
Dmitry Stogov
69a3d6fd27 Verify type compatibility 2022-09-02 09:50:38 +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
d29a51a979 Remove unused "flags" 2022-09-01 13:04:54 +03:00
Dmitry Stogov
dd271af057 Speedup local scheduling by loop unrolling 2022-09-01 12:48:10 +03:00
Dmitry Stogov
3a20a8130c JMP optimization. Better ENETR block placement. 2022-08-31 14:29:34 +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
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