Commit Graph

705 Commits

Author SHA1 Message Date
Dmitry Stogov
efa8a83153 Fix spilling code for arguments passed theought stack and change RA to
prefer reusing the same register for splitted intervals
i#	utils/
2023-04-06 00:16:49 +03:00
Dmitry Stogov
1e5e9e08ce Re-implement instruction fusion and live-range construction 2023-04-05 19:20:43 +03:00
Dmitry Stogov
b109e2f2cd Disable LOAD fusion if there is a STORE or CALL between LOAD and its use 2023-03-30 19:07:21 +03:00
Dmitry Stogov
ee827ee983 Don't create two DEF UsePos 2023-03-29 17:22:49 +03:00
Dmitry Stogov
d79bd88f6f Improve x86 code generation for passing address of label to stack
-       leal .L1, %eax
-       movl %eax, (%esp)
+       movl $.L1, (%esp)
2023-03-29 15:48:41 +03:00
Dmitry Stogov
5bed3d73a5 Fix test 2023-03-29 15:13:17 +03:00
Dmitry Stogov
7164bc30e4 Fix "diff" on Windows 2023-03-29 15:08:05 +03:00
Dmitry Stogov
b63041199e Add --show-diff for Windows CI test 2023-03-29 14:53:50 +03:00
Dmitry Stogov
b193a348c5 Add --show-diff for Windows CI test 2023-03-29 14:43:54 +03:00
Dmitry Stogov
26e462fa42 Add more folding rules 2023-03-29 14:07:31 +03:00
Dmitry Stogov
1058cde808 Cleanup instruction selector 2023-03-29 01:21:54 +03:00
Dmitry Stogov
e4b618ad00 Fix fusion of IF(_, CMP(AND(_, _) 0)) 2023-03-28 19:03:06 +03:00
Dmitry Stogov
2940f9e281 Remove *.ir and *.out files for passed tests and generate *.exp and *.diff for all failed tests 2023-03-28 18:06:35 +03:00
Dmitry Stogov
2cf5f1a7ff typo 2023-03-28 16:59:46 +03:00
Dmitry Stogov
f058ecfc93 Prefer IR_TARGET_* checks instead of system specific macros 2023-03-28 13:40:44 +03:00
Dmitry Stogov
37b94c3f04 Fix 32-bit clang build 2023-03-28 13:20:54 +03:00
Dmitry Stogov
ba0fa44447 Add "const" modifiers 2023-03-28 13:18:12 +03:00
Dmitry Stogov
52ab3439d1
Merge pull request #20 from weltling/fixups_00
fixups: Minor improvements to ir.h, ir_builder.h and ir_init
2023-03-28 10:26:30 +03:00
Anatol Belski
d0b4f108ee ir_init: Accept flags as an additional arguments
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-28 00:00:45 +02:00
Anatol Belski
b701684704 ir_init: Expose min limit for constants and instructions
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-28 00:00:45 +02:00
Anatol Belski
f55b9b094b doc: Add short comments to some flags
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-28 00:00:44 +02:00
Anatol Belski
091a24d53f C++: Add guards for relevant headers
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-27 00:49:38 +02:00
Dmitry Stogov
2392f546bf Improve merging of sorted lists 2023-03-24 12:42:41 +03:00
Dmitry Stogov
46f07a8222 Remove unnecessary checks 2023-03-24 00:51:08 +03:00
Dmitry Stogov
72a5649236 Reorder conditions and avoid reloading 2023-03-23 23:44:59 +03:00
Dmitry Stogov
7e687262f7 Remove always true conditions 2023-03-23 22:16:05 +03:00
Dmitry Stogov
2406b13359 Improve graph visualization 2023-03-23 03:22:13 +03:00
Dmitry Stogov
6d36fb12c3 Fix example code and test 2023-03-23 00:54:47 +03:00
Dmitry Stogov
24e8e216a1 Remove a "reference" edge from LOOP_END to LOOP_BEGIN node. 2023-03-23 00:47:27 +03:00
Dmitry Stogov
f5e84ec44c Simplify compilation pipeline 2023-03-22 23:58:08 +03:00
Dmitry Stogov
ccbf3da286 Add test 2023-03-22 22:09:25 +03:00
Dmitry Stogov
83edc3f8a1 Disable LICM for overflow checking math 2023-03-22 12:07:05 +03:00
Dmitry Stogov
b1f2167ea5 Calculate number of ENTRY blocks during CFG construction to avoid an eaxtra loop for ctx->entries[] gathering at ir_match() 2023-03-22 10:21:56 +03:00
Dmitry Stogov
e5abfc119d Print BIND-ing information for LOAD nodes 2023-03-21 18:06:47 +03:00
Dmitry Stogov
ba56eb5497 Fix typo 2023-03-21 17:07:21 +03:00
Dmitry Stogov
50b3a7df35 Don't print BIND-ing information for removed nodes (replaced by NOPs) 2023-03-21 13:53:06 +03:00
Dmitry Stogov
87dbdcea0d Add necessary compensation loads for bounded nodes when enter into function through OSR entry-point 2023-03-21 13:45:37 +03:00
Dmitry Stogov
7ddca6d7b6
Merge pull request #19 from weltling/ir_test_ws
ir_test: Ident and whitespace fixes
2023-03-20 09:38:58 +03:00
Anatol Belski
d7b280004a ir_test: Ident and whitespace fixes
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-18 19:25:33 +01:00
Dmitry Stogov
8871550542 Show EBTRY nodes and "fake" control edges differently 2023-03-17 09:20:00 +03:00
Dmitry Stogov
f5b7065b10 Refactor the ENTRY nodes
Now all ENTRY nodes have a "fake" input control edge.
Through this edge all of them are dominated by START node.
2023-03-17 09:02:37 +03:00
Dmitry Stogov
09409898ea Reorder instructions to use simpler and more efficient checks 2023-03-15 23:49:50 +03:00
Dmitry Stogov
2b4586fa0b Fixed support for irreducible (incomplete) and merged loops 2023-03-14 19:54:46 +03:00
Dmitry Stogov
fca6ba0a8a Remove unnecessary output 2023-03-13 11:28:36 +03:00
Dmitry Stogov
0d3a9f3eaa
Merge pull request #9 from weltling/ir_test_cxx
test: Switch from ir-test.php to a C++ test runner
2023-03-13 11:08:58 +03:00
Dmitry Stogov
f6e8a1b971 Cleanup ir_ctx.control usage 2023-03-10 16:02:53 +03:00
Anatol Belski
9295eae8fa ci: Adjust yaml for C++ test runner
- Lift dependency on PHP for tests
- Add g++ dependency

Signed-off-by: Anatol Belski <ab@php.net>
2023-03-10 01:28:19 +01:00
Anatol Belski
5862d6a787 makefile: Integrate new test runner
This replaces the PHP script with the C++ implementation.

Signed-off-by: Anatol Belski <ab@php.net>
2023-03-10 01:28:19 +01:00
Anatol Belski
831d121ef8 tests: Implement test runner in C++
Signed-off-by: Anatol Belski <ab@php.net>
2023-03-10 01:28:19 +01:00
Dmitry Stogov
5052a6ca97 Fix stack alignment and allow non-saved permanent registers in the "fixed" frames 2023-03-07 21:38:27 +03:00