Dmitry Stogov
|
ce2d6ceba6
|
Fixed non-boolean constant GUARD condition checks
|
2023-06-29 23:49:20 +03:00 |
|
Dmitry Stogov
|
7058c41411
|
More accurate spill loads optimization for instructions that reuse op1 register for result
This also fixes possbile incorrect register-allocation/code-generation
for SHIFT instuction on x86[_64]
|
2023-06-29 12:42:44 +03:00 |
|
Dmitry Stogov
|
9cec28c188
|
Fixed compilation warnings
|
2023-06-22 14:50:14 +03:00 |
|
Dmitry Stogov
|
85beed7901
|
Fixed incorrect oredering of moves during de-SSA
Temporary de-SSA registers may conflict with outpot registers, therefore these output resisters should be assigned last.
|
2023-06-22 12:07:19 +03:00 |
|
Dmitry Stogov
|
99bcde9e1e
|
Cleanup spill related code
|
2023-06-21 23:20:58 +03:00 |
|
Dmitry Stogov
|
d67c212916
|
Separate codegen info output into ir_dump_codegen()
|
2023-06-21 22:36:36 +03:00 |
|
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
|
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
|
257bdff21a
|
Fix compilation warnings
|
2023-06-09 10:58:58 +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
|
ae4daf223e
|
Replace assertion with a non-fatal error
|
2023-06-07 18:39:51 +03:00 |
|
Dmitry Stogov
|
3de6c5126a
|
Avoid code generation for useless loads and stores
|
2023-06-07 14:43:16 +03:00 |
|
Dmitry Stogov
|
18bdfb4203
|
Bettter code scheduling
|
2023-06-06 23:55:15 +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 |
|
Dmitry Stogov
|
b5bb5f869a
|
Fixed GH Issue #34 (Simple if-else IR program compile failure)
|
2023-06-05 14:21:03 +03:00 |
|
Dmitry Stogov
|
87f2fc7f69
|
Fixed typo
|
2023-05-29 15:52:17 +03:00 |
|
Dmitry Stogov
|
20b9a7513c
|
Fixed missing label
|
2023-05-26 09:08:57 +03:00 |
|
Dmitry Stogov
|
2a80257535
|
Support for more C escape sequences
|
2023-05-22 19:51:19 +03:00 |
|
Dmitry Stogov
|
d3640495a2
|
Ceanup ir_compute_live_ranges() implementation
|
2023-05-19 12:34:54 +03:00 |
|
Dmitry Stogov
|
5c2023fd7f
|
Avoid live range constrction for VARs
|
2023-05-18 21:00:57 +03:00 |
|
Dmitry Stogov
|
477dbf7d76
|
Avoid live range constrction for RLOAD with fixed registers
|
2023-05-18 13:37:12 +03:00 |
|
Dmitry Stogov
|
c9fa8dfebd
|
Fixed SSA deconstruction
Previously we performed parallel copy for virtual registers, now we do
the same for the target CPU registers.
|
2023-05-17 22:37:45 +03:00 |
|
Dmitry Stogov
|
842f97cbcb
|
Removed wrong code selection rule
|
2023-05-11 12:47:49 +03:00 |
|
Dmitry Stogov
|
6f8aa7b540
|
Add code selection rule to fuse
movq 0x60(%r14), %rax
leaq -1(%rax), %rax
movq %rax, 0x60(%r14)
testq %rax, %rax
jle jit$$trace_exit_1
into
subq $1, 0x60(%r14)
jle jit$$trace_exit_1"
|
2023-05-10 18:22:03 +03:00 |
|
Dmitry Stogov
|
1bbee7b9da
|
Get rid of ir_live_interval.top
|
2023-04-28 09:49:12 +03:00 |
|
Dmitry Stogov
|
60802d942f
|
Fix previous commit. We still need a temporary register for indirect calls.
|
2023-04-26 14:10:58 +03:00 |
|
Dmitry Stogov
|
9eb366698d
|
Avoid reservaton of temporary resiser for argument passing
We may use any scratch register that is not used for parameters
|
2023-04-26 12:16:05 +03:00 |
|
Dmitry Stogov
|
0de0c1d0fa
|
Improve parallel copy algorithm to support move of single source into multiple destinations
|
2023-04-26 10:56:55 +03:00 |
|
Dmitry Stogov
|
1749168078
|
Add ir_insn_len() and ir_insn_inputs_to_len() private helpers
|
2023-04-21 13:40:55 +03:00 |
|
Dmitry Stogov
|
e01c43a967
|
Simplify access to nodes with variable inputs count
|
2023-04-21 12:40:17 +03:00 |
|
Dmitry Stogov
|
56b0dbccde
|
Use ir_ctx.mflags for CPU specific code-generation options
'mflags' and ir_cpuinfo() return value have the same meaning.
|
2023-04-18 09:54:35 +03:00 |
|
Dmitry Stogov
|
e5c01495da
|
Use arena to allocate live_intervals and nested data structures
|
2023-04-13 13:47:16 +03:00 |
|
Dmitry Stogov
|
04795b9f04
|
Fix compilation warnings
|
2023-04-12 10:48:30 +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
|
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
|
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
|
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
|
ba0fa44447
|
Add "const" modifiers
|
2023-03-28 13:18:12 +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 |
|