julian-seward1
b95508c51a
legalizer/split.rs: split_ebb_params: avoid pointless Vec allocations. ( #1025 )
...
This function is responsible for 2.2% of all heap allocation (calls) in CL.
This change avoids all of them in the (presumably) common case where none of
the parameters require splitting. It also slightly reduces the compiler's
instruction count.
2019-09-16 15:01:07 +02:00
Ujjwal Sharma
3418fb6e18
[codegen] reintroduce support for carry and borrow instructions in RI… ( #1005 )
...
Reintroduce support for iadd carry variants and isub borrow variants for
RISC ISAs which had been removed in
https://github.com/CraneStation/cranelift/pull/961 and
https://github.com/CraneStation/cranelift/pull/962 because of the lack
of a proper flags register in RISC architectures.
2019-09-13 17:27:49 +02:00
Benjamin Bouvier
3aa76b558c
Legalize i64.const by breaking it into two i32.const, on 32-bits platforms;
2019-09-10 19:50:34 +02:00
Julian Seward
d2443a75f3
legalizer/split.rs: simplify_branch_arguments: use SmallVec instead of Vec
...
This function is responsible for 8.5% of all heap allocation (calls) in CL.
This change avoids almost all of them by using a SmallVec::<[Value; 32]>
instead. Dynamic instruction count falls by 0.25%. The fixed size of 32 was
arrived at after profiling with fixed sizes of 1, 2, 4, 8, 16, 32, 64 and 128.
32 is as high as I can push it without the instruction count starting to creep
up again, and gets almost all the block-reduction win of 64 and 128.
2019-09-09 12:58:21 +02:00
bjorn3
e8d4ef7c3d
Fix review comments
2019-09-07 09:55:09 -07:00
bjorn3
f4cdd3007c
[split] Prevent double legalization of isplit and vsplit
2019-09-07 09:55:09 -07:00
bjorn3
2426bce9ac
Fix load.i64 and store legalization
2019-09-07 09:55:09 -07:00
bjorn3
acd454890c
Legalize load.i128 and store.i128 with arbitrary offsets
2019-09-07 09:55:09 -07:00
bjorn3
3ae78fddde
Fix warnings
2019-09-07 09:55:09 -07:00
bjorn3
dce521fa1c
Fix lone isplit, when the corresponding iconcat will be created later during legalization
2019-09-07 09:55:09 -07:00
bjorn3
0d5b87038a
Rustfmt
2019-09-07 09:55:09 -07:00
bjorn3
c7a8b6c9e5
Remove some dbg! invocations
2019-09-07 09:55:09 -07:00
bjorn3
d9ee08c088
Fix bug when i128 ebb param is unused
2019-09-07 09:55:09 -07:00
bjorn3
44ecc9c3d0
[WIP]
2019-09-07 09:55:09 -07:00
bjorn3
954a2007d2
Fix isplit legalization
2019-09-07 09:55:09 -07:00
bjorn3
f04b334b20
Rustfmt
2019-09-07 09:55:09 -07:00
bjorn3
6f7d57a71f
Handle isplit when it is not the result of a legalization
2019-09-07 09:55:09 -07:00
Benjamin Bouvier
c1609b70e8
[codegen] Allow using the pinned register as the heap base via a setting;
2019-09-06 16:18:27 +02:00
Benjamin Bouvier
2ee35b7ea1
Implement a Windows Baldrdash calling convention;
2019-08-16 14:25:15 +02:00
Benjamin Bouvier
d8d3602257
Adds the libcall_call_conv setting and use it for libcall calls expansion;
2019-08-12 16:12:00 -07:00
Benjamin Bouvier
627ba24b59
Simplify jump table instructions and add missing conversion;
...
This makes non-legalized jump table instructions operate on operands with
pointer-sized types. This means we need to extend smaller types into the
pointer-sized operand, when the two don't match.
2019-08-02 18:39:39 +02:00
Nicolas B. Pierron
f0d7438728
Properly legalize with empty jump tables.
2019-08-01 13:47:28 +02:00
Nicolas B. Pierron
3ac7466cab
Legalize br_table to a BB-like format.
2019-07-09 16:48:54 +02:00
Nicolas B. Pierron
1963c223b1
Legalize trapz/trapnz to a BB-like format.
2019-07-09 16:02:49 +02:00
Benjamin Bouvier
cd4c28ad97
[meta] Legalization: Unprefix some module paths to make code neater;
2019-07-09 10:56:50 +02:00
Benjamin Bouvier
563525b090
[meta] Remove mentions to Python in comments of the non-meta crate;
2019-07-05 17:50:17 +02:00
Benjamin Bouvier
d7d48d5cc6
Add the dyn keyword before trait objects;
2019-06-24 11:42:26 +02:00
Yury Delendik
8f95c51730
Reconstruct locations of the original source variable
2019-05-09 00:35:44 -07:00
Dan Gohman
975b7f2e8d
Put a space between "//!" and "```".
2019-03-26 08:40:25 -07:00
lazypassion
747ad3c4c5
moved crates in lib/ to src/, renamed crates, modified some files' text ( #660 )
...
moved crates in lib/ to src/, renamed crates, modified some files' text (#660 )
2019-01-28 15:56:54 -08:00