942 Commits

Author SHA1 Message Date
bjorn3
0f3eab589e Add OptimizeContext 2019-12-31 15:56:28 +01:00
bjorn3
df7f68236c Remove stack_store without following stack_load 2019-12-31 15:56:28 +01:00
bjorn3
6320c65484 Fix temporal_order argument order for store to load forwarding 2019-12-31 15:56:28 +01:00
bjorn3
7579663199 Extract temporal_order function 2019-12-31 15:56:28 +01:00
bjorn3
9022e09a3e Fix compilation 2019-12-31 15:56:28 +01:00
bjorn3
b0814a3fd8 Check for cross-ebb temporal overlap between loads and stores 2019-12-31 15:56:28 +01:00
bjorn3
c5f42aef1d Run dead stack_store removal after stack_store to stack_load forwarding 2019-12-31 15:56:28 +01:00
bjorn3
7d35db5319 [WIP] Implement basic stack store to load forwarding 2019-12-31 15:56:28 +01:00
bjorn3
be6cdb28d0 Refactor stack_store removal 2019-12-31 15:56:28 +01:00
bjorn3
943b81bb40 Extract remove_unused_stack_addr_and_stack_load 2019-12-31 15:56:28 +01:00
bjorn3
a8daa7115e Group by stack slot earlier 2019-12-31 15:56:28 +01:00
bjorn3
9d77cb95e1 Merge stack_{addr,load}_insts_users 2019-12-31 15:56:28 +01:00
bjorn3
5047856f00 Use BTreeSet and BTreeMap instead of SecondaryMap 2019-12-31 15:56:28 +01:00
bjorn3
c84b1fee09 Record users of stack_addr and stack_load return values 2019-12-31 15:56:28 +01:00
bjorn3
73961709d6 Outline combine_stack_addr_with_load_store and remove unused stack_load insts 2019-12-31 15:56:28 +01:00
bjorn3
b6642e5cd8 Re-order some code 2019-12-31 15:56:28 +01:00
bjorn3
8b82f4f989 [WIP] Add stack2reg optimization pass 2019-12-31 15:56:28 +01:00
bjorn3
7564a043d0 Fix some warnings 2019-12-31 15:53:18 +01:00
bjorn3
7e6d533af2 Rustup to rustc 1.42.0-nightly (a9dd56ff9 2019-12-30) 2019-12-31 15:47:58 +01:00
bjorn3
50d7497708 Write scalars separately for Abi::ScalarPair in write_cvalue
This makes it easier to perform store to load forwarding
2019-12-31 15:28:15 +01:00
bjorn3
958c58545f Only codegen a trap for functions with uninhabited arguments
Fixes #847
2019-12-28 11:10:21 +01:00
bjorn3
8bf5cd345e Rustup to rustc 1.42.0-nightly (74c4e6a98 2019-12-27) 2019-12-28 10:57:49 +01:00
bjorn3
30a760dda2 Make it possible it use value_field for SIMD values stored ByVal 2019-12-25 14:38:51 +01:00
bjorn3
0ebc14cc40 Remove unused macro args 2019-12-25 14:38:51 +01:00
bjorn3
9eb9436481 Fix indentation 2019-12-25 14:38:51 +01:00
bjorn3
b35a5da4ea Remove vector support from load_scalar 2019-12-25 14:38:51 +01:00
bjorn3
5e984a32d9 Use simd instructions for int and float simd intrinsics 2019-12-25 14:38:51 +01:00
bjorn3
f8e846dee0 Add load_vector function 2019-12-25 14:38:37 +01:00
bjorn3
dadfbeab6c Don't use stack_{load,store} for vectors 2019-12-25 14:38:37 +01:00
bjorn3
78cdcd62be Don't limit vector size 2019-12-25 14:38:37 +01:00
bjorn3
73fd311291 [WIP] Real simd support 2019-12-25 14:38:37 +01:00
bjorn3
c3daf6d220 Add clif ir comment for write_cvalue 2019-12-25 14:38:22 +01:00
bjorn3
2920cc48e6 Fix SSA analysis for value types with PassMode::ByRef 2019-12-25 14:35:16 +01:00
bjorn3
ca93bcba5d Improve lane_type_and_count 2019-12-25 14:34:59 +01:00
bjorn3
7ff01a4d59 Use mir::SourceInfo again in FunctionCx.source_info_set
Fixes #800
2019-12-24 12:44:07 +01:00
bjorn3
399cada762 Directly depend on cranelift_{codegen,frontend}
Fixes #838
2019-12-24 12:43:20 +01:00
bjorn3
d89f307ea2 Move simd intrinsics to intrinsics/simd.rs 2019-12-23 13:58:17 +01:00
bjorn3
67a0fdad19 Make llvm_intrinsics a submodule of intrinsics 2019-12-23 13:57:55 +01:00
bjorn3
82b52a8744 Rustup to rustc 1.42.0-nightly (9b98af84c 2019-12-22) 2019-12-23 13:25:22 +01:00
bjorn3
15a310345d Improve local ir comments 2019-12-22 17:04:33 +01:00
bjorn3
e63a94fca6 Rustup to rustc 1.42.0-nightly (fc5deca21 2019-12-21) 2019-12-22 16:53:06 +01:00
bjorn3
2485994803 Rustup to rustc 1.42.0-nightly (01a46509a 2019-12-20) 2019-12-21 11:22:12 +01:00
bjorn3
ad72afaad3 Remove CPlaceInner::Stack 2019-12-20 22:00:12 +01:00
bjorn3
fbbc910ddc [OPT] Emit stack_{load,store} where possible 2019-12-20 19:30:56 +01:00
bjorn3
8f5ef6172c Remove to_addr and to_addr_maybe_unsized 2019-12-20 19:10:08 +01:00
bjorn3
696053e69f Set memflags for vtable loads 2019-12-20 16:16:28 +01:00
bjorn3
967709f31a [OPT] Use load and store offsets instead of iadd_imm 2019-12-20 16:02:47 +01:00
bjorn3
76cfa333be Fix init and uninit intrinsics for u/i128 2019-12-20 12:24:48 +01:00
bjorn3
a125b62536 [OPT] Don't force return value of call to stack
Benchmark #1: ./simple_raytracer_before
  Time (mean ± σ):     14.420 s ±  0.568 s    [User: 14.376 s, System: 0.026 s]
  Range (min … max):   13.730 s … 15.170 s    10 runs

Benchmark #2: simple_raytracer_after
  Time (mean ± σ):     13.679 s ±  0.576 s    [User: 13.628 s, System: 0.020 s]
  Range (min … max):   12.761 s … 14.552 s    10 runs

Summary
  './simple_raytracer_after' ran
    1.05 ± 0.06 times faster than './simple_raytracer_before'
2019-12-20 12:13:07 +01:00
bjorn3
a528e37302 Fix codegen of ctlz and cttz intrinsics 2019-12-20 12:01:55 +01:00