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