Commit Graph

829 Commits

Author SHA1 Message Date
Dmitry Stogov
ebaefd376a Fix stack frame and assign all spill slots before code genearatin 2023-06-21 19:04:22 +03:00
Dmitry Stogov
4124ef5150 Allow printing IR annotated with register-allocation, spill-code-placement, de-SSA and code-generation information 2023-06-21 13:28:15 +03:00
Dmitry Stogov
25656607ba Variabls with a register constraint may be loaed/stored directly from/to a spill slot (without an additional register) 2023-06-21 01:14:31 +03:00
Dmitry Stogov
ffac404552 Fix impossible load fusion 2023-06-20 12:14:52 +03:00
Dmitry Stogov
009e9c4a53 Split assign_regs() loop into two versions (with and without spilling). 2023-06-20 08:34:54 +03:00
Dmitry Stogov
0928b975be Fixed incorrect buffer access 2023-06-19 21:34:50 +03:00
Dmitry Stogov
fc5e1742c6
Merge pull request #44 from weltling/capstone_toolset2
ci: windows: Switch to Server 2019 runner image
2023-06-19 14:40:22 +03:00
Anatol Belski
d28de0e46e ci: windows: Switch to Server 2019 runner image
There seems to be a weird issue with toolset and host OS version, that
makes x86 Windows builds of capstone misbehave. It is not quite clear,
what is the exact issue, but switching to another runner image that also
uses a bit older toolset seems to help.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-06-16 23:02:00 +02:00
Dmitry Stogov
b37d4e0443 Allow usage of CPU stack slots for deoptimization 2023-06-16 02:14:02 +03:00
Dmitry Stogov
6a98514bdc Move stack size related metricks to ir_ctx 2023-06-15 19:28:54 +03:00
Dmitry Stogov
311267714e Use macros insted of bit ops 2023-06-14 20:23:32 +03:00
Dmitry Stogov
defd58cec3 Store proper %sp register value 2023-06-13 18:22:21 +03:00
Dmitry Stogov
848613ce81
Merge pull request #43 from weltling/capstone_devenv2
msvc: capstone: Move to using upstream instead of vcpkg
2023-06-13 09:36:51 +03:00
Anatol Belski
658c923580 msvc: capstone: Move to using the VS solution instead of vcpkg
Moving to the usage of the upstream sources removes layers of
complexity present in VCPKG and allows for more flexibility with regard
to the dependency handling. Things done:

- Switch to building capstone based from an upstream tag
- Explicitly remove any unused arch support in the build
- Use static lib to simplify on-prem usage
- Cache the capstone artifacts in the pipeline
- Automatically reset cache based on the values in Makefile and
  VC++ toolset version

The current capstone version is still kept 5.0-rc2. While evaluating a
possible downgrade to 4.0.2 as used by the Linux CI, some test
regressions are observed on the x64 side. If needed, those might be
spent a closer look, otherwise keeping the version seems ok.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-06-10 13:24:28 +02:00
Dmitry Stogov
cc87d1291f Fixed tests 2023-06-09 16:29:38 +03:00
Dmitry Stogov
6a8830c1dc Better usage of the register hints 2023-06-09 16:26:15 +03:00
Dmitry Stogov
257bdff21a Fix compilation warnings 2023-06-09 10:58:58 +03:00
Dmitry Stogov
0d3af66a2b Fix test 2023-06-09 10:58:49 +03:00
Dmitry Stogov
b8be0b9dd9 Avoid loading of stack parameter to register if this is not necessary 2023-06-09 00:35:15 +03:00
Dmitry Stogov
e506c1367d Allow motion of loop invariant bound nodes
Spilling of bound nodes may introduce anti-dependencies, but the
previous restriction doesn't fix the possible problems
2023-06-08 00:32:36 +03:00
Dmitry Stogov
ae4daf223e Replace assertion with a non-fatal error 2023-06-07 18:39:51 +03:00
Dmitry Stogov
c599cfbdf3 Fixed spill slot allocation 2023-06-07 18:37:37 +03:00
Dmitry Stogov
3de6c5126a Avoid code generation for useless loads and stores 2023-06-07 14:43:16 +03:00
Dmitry Stogov
eaaf487600 Avoid check for PHI in BB started by a node with a single use-def edge (control edge) 2023-06-07 11:47:42 +03:00
Dmitry Stogov
70da8bef54 Avoid check for PHI, PI, PARAM and VAR nodes in BB started by a node with a single use-def edge (control edge) 2023-06-07 10:27:41 +03:00
Dmitry Stogov
3f009c2d5a Disable scheduling of related ADD_OV/SUB_OV/MUL_OV and OVERFLOW into different blocks 2023-06-06 23:55:40 +03:00
Dmitry Stogov
18bdfb4203 Bettter code scheduling 2023-06-06 23:55:15 +03:00
Dmitry Stogov
d049bdfdb5 Fixed format specifiers 2023-06-06 17:22:54 +03:00
Dmitry Stogov
d2d4e275a7
Merge pull request #42 from weltling/examples2
examples: Add new example and some comments
2023-06-05 19:15:24 +03:00
Dmitry Stogov
186dc6b0a6 Fixed GH issue #33: IR program failed to compile with "-O0" "-S" options 2023-06-05 18:22:12 +03:00
Anatol Belski
187452cba2 examples: Add example for void function with pointer arg
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-06-05 16:11:27 +02:00
Anatol Belski
283f443615 examples: Add some comments to example files
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-06-05 16:11:27 +02:00
Dmitry Stogov
b5bb5f869a Fixed GH Issue #34 (Simple if-else IR program compile failure) 2023-06-05 14:21:03 +03:00
Dmitry Stogov
4e01e7251e Implemented support for veneers on AArch64 2023-06-02 00:49:32 +03:00
Dmitry Stogov
3b0de17cdd Added missing fixed interval 2023-06-01 11:00:39 +03:00
Dmitry Stogov
6009e376b7 Speed-up liner scan
- Don't add allocated interval into "active" list, if it doesn't overlap
  with next unhandled
- More efficient selection of registers available for the whole range
2023-06-01 00:48:21 +03:00
Dmitry Stogov
38ee633419 Don't move conditions of IF and GUARDs out of loops 2023-05-30 15:10:23 +03:00
Dmitry Stogov
b560ddc8f6 Added test 2023-05-29 17:11:26 +03:00
Dmitry Stogov
c9d3804b6e Fixed mistakes in GCM algorithm 2023-05-29 17:02:50 +03:00
Dmitry Stogov
87f2fc7f69 Fixed typo 2023-05-29 15:52:17 +03:00
Dmitry Stogov
4d2ef9401f Fixed GH Issue #41 (ir_emit_c() dumping misses BB label) 2023-05-29 13:58:32 +03:00
Dmitry Stogov
20b9a7513c Fixed missing label 2023-05-26 09:08:57 +03:00
Dmitry Stogov
9dd7f4f903 Fixed the code end boundary check 2023-05-25 15:45:17 +03:00
Dmitry Stogov
30c6717812 Fixed incorrect condition evaluation 2023-05-23 19:32:18 +03:00
Dmitry Stogov
cbfdeb46fe Fixed typo 2023-05-23 16:06:49 +03:00
Dmitry Stogov
46fd86acb9 Itroduce a reference ir_jit_compile() and use it in examples 2023-05-23 10:52:59 +03:00
Dmitry Stogov
9296ff3b75 Fix examples 2023-05-23 10:24:27 +03:00
Dmitry Stogov
5fc8900536
Merge pull request #37 from weltling/examples
doc: Add examples folder
2023-05-23 09:59:23 +03:00
Anatol Belski
548e892219 examples: Add missing call to ir_compute_dessa_moves
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-05-22 22:44:48 +02:00
Anatol Belski
d64a2b5493 examples: Add a while loop example
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2023-05-22 22:44:47 +02:00