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
Dmitry Stogov
e9a4b5efeb
Fix MSVC compilation warnings
2023-03-01 14:18:06 +03:00
Dmitry Stogov
e2810c070e
Save and restore used non-volatile XMM registers in prologue and epilogue.
...
We currently save only "single double" part of the registers using
"movsd" instruction. In general, we should save and restore the whole XMM
registers.
2023-02-28 18:12:29 +03:00