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