Commit Graph

840 Commits

Author SHA1 Message Date
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
Dmitry Stogov
6e1848cb40 Add support for Windows TLS 2023-03-07 13:02:44 +03:00
Dmitry Stogov
5e13d47e38 Fix EXITCALL code for WIN64 (support for home/shadow space) 2023-03-07 11:25:22 +03:00
Dmitry Stogov
e88b6ab92d Hide Windows fault message box on Windows during make test 2023-03-07 10:54:46 +03:00
Dmitry Stogov
24f58e7759 Comment assertion to allow PHP/JIT/Win64 work
Win64 calling convention defines volatile FP registers.
PHP JIT for Win64 saves and restores only GP registers.
This potentionaly may cause register clobbering and unexpected behavior.
2023-03-03 16:04:54 +03:00
Dmitry Stogov
79546d7e25 Prevent possible redeclaration warning 2023-03-03 14:15:42 +03:00
Dmitry Stogov
39f6f81b5e Fix make dependencies 2023-03-03 00:03:50 +03:00
Dmitry Stogov
2b60602465 Add error reporting 2023-03-02 22:11:23 +03:00
Dmitry Stogov
1542048331 Fix TAILCALL on WIN64 2023-03-02 22:08:24 +03:00
Dmitry Stogov
29122c15c3 Add complex WIN64 tests 2023-03-02 17:57:26 +03:00
Dmitry Stogov
09d5ecc607 Fix support for WIN64 calling convention 2023-03-02 17:56:15 +03:00
Dmitry Stogov
c89a038fd3 Fix tests with capstone 5
Different versions of capstone may disassemble MOVD/MOVQ differentrly
2023-03-02 17:54:50 +03:00
Dmitry Stogov
5a48805c81 Add support for Windows-64 ABI ("home space")
Fix parameter passing code to perform sign or zero extension when pass a regiser or a constant

TODO: ARM code maight need similar changes
2023-03-02 13:27:01 +03:00
Dmitry Stogov
ebdeba9fff Add simple tests for Windows-x86_64
conv_004.irt and conv_010.irt fail with capstone 5 because of changes in movd/movq
2023-03-02 00:55:20 +03:00
Dmitry Stogov
49dd633620 Use separate target for Windows 64-bit
Because of different ABI the generated asembler code differs from x86_64
2023-03-02 00:52:51 +03:00
Dmitry Stogov
300665700f Adopt IR test engine for Windows (this requires php and diff installed) 2023-03-01 20:31:14 +03:00