Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
df47799
Switch from regalloc.rs to regalloc2 dependency.
cfallin Apr 4, 2022
f6c5bd7
Remove regalloc algorithm setting (we now only have one option, regal…
cfallin Apr 4, 2022
52d7f2c
Add Reg/VirtualReg/RealReg abstractions on top of regalloc2's types.
cfallin Apr 4, 2022
a985b41
Update core VCode and MachInst definitions, VCode implementation, and…
cfallin Apr 4, 2022
519c12e
Remove `DeferredDisplay` (no longer needed with new disassembly strat…
cfallin Apr 4, 2022
ef2dff7
ABI-code changes for regalloc2.
cfallin Apr 4, 2022
747edaf
Minor updates to ISLE rules and glue, and regeneration of ISLE genera…
cfallin Apr 4, 2022
c5c248c
aarch64 Inst-abstraction updates
cfallin Apr 4, 2022
62a0cf2
s390x Inst-abstraction updates
cfallin Apr 4, 2022
b9a1f72
x64 Inst-abstraction updates
cfallin Apr 4, 2022
44ac283
Unwind updates for regalloc2.
cfallin Apr 4, 2022
4efc608
Test updates.
cfallin Apr 4, 2022
d4a5f0e
Add doc describing design changes for regalloc2 integration.
cfallin Apr 5, 2022
a983e7a
Merge latest `main` and resolve conflicts.
cfallin Apr 13, 2022
1d5ea7b
Remove vreg aliases from disassembly: no vregs should appear anyway, …
cfallin Apr 13, 2022
4bc1ad6
Update filetests.
cfallin Apr 13, 2022
76993b3
Add serde support back to cranelift-codegen types, using regalloc2 0.…
cfallin Apr 13, 2022
a84b122
Hide the pinned-register indexing scheme a bit better, to guard again…
cfallin Apr 13, 2022
05f5f4c
Implement `From` conversions for register types and use them.
cfallin Apr 13, 2022
ade240b
Use enum for VCode build direction.
cfallin Apr 13, 2022
3dafbd3
Remove `MachInst::get_clobbers()` and implement `OperandCollector::re…
cfallin Apr 13, 2022
e09b71f
Rename `MachInst::type_for_rc()` to `canonical_type_for_rc()`.
cfallin Apr 14, 2022
9aa5dda
Address remainder of code-review feedback.
cfallin Apr 14, 2022
d5fe840
Remove VCodeBuildDirection::Forward as it is dead code
cfallin Apr 14, 2022
15aef15
fix typo, and remove integration doc
cfallin Apr 14, 2022
ac3863b
Fix some pretty-printing AllocationConsumer misalignments caught by n…
cfallin Apr 14, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 2 additions & 6 deletions cranelift/codegen/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ serde = { version = "1.0.94", features = ["derive"], optional = true }
bincode = { version = "1.2.1", optional = true }
gimli = { version = "0.26.0", default-features = false, features = ["write"], optional = true }
smallvec = { version = "1.6.1" }
regalloc = "0.0.34"
regalloc2 = { version = "0.1.1", features = ["checker"] }
souper-ir = { version = "2.1.0", optional = true }
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
# Please don't add any unless they are essential to the task of creating binary
Expand Down Expand Up @@ -77,14 +77,10 @@ all-arch = [
# For dependent crates that want to serialize some parts of cranelift
enable-serde = [
"serde",
"regalloc/enable-serde",
"cranelift-entity/enable-serde",
"regalloc2/enable-serde",
]

# Allow snapshotting regalloc test cases. Useful only to report bad register
# allocation failures, or for regalloc.rs developers.
regalloc-snapshot = ["bincode", "regalloc/enable-serde"]

# Enable support for the Souper harvester.
souper-harvest = ["souper-ir", "souper-ir/stringify"]

Expand Down
33 changes: 0 additions & 33 deletions cranelift/codegen/meta/src/shared/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,6 @@ use crate::cdsl::settings::{SettingGroup, SettingGroupBuilder};
pub(crate) fn define() -> SettingGroup {
let mut settings = SettingGroupBuilder::new("shared");

settings.add_enum(
"regalloc",
"Register allocator to use with the MachInst backend.",
r#"
This selects the register allocator as an option among those offered by the `regalloc.rs`
crate. Please report register allocation bugs to the maintainers of this crate whenever
possible.

Note: this only applies to target that use the MachInst backend. As of 2020-04-17, this
means the x86_64 backend doesn't use this yet.

Possible values:

- `backtracking` is a greedy, backtracking register allocator as implemented in
Spidermonkey's optimizing tier IonMonkey. It may take more time to allocate registers, but
it should generate better code in general, resulting in better throughput of generated
code.
- `backtracking_checked` is the backtracking allocator with additional self checks that may
take some time to run, and thus these checks are disabled by default.
- `experimental_linear_scan` is an experimental linear scan allocator. It may take less
time to allocate registers, but generated code's quality may be inferior. As of
2020-04-17, it is still experimental and it should not be used in production settings.
- `experimental_linear_scan_checked` is the linear scan allocator with additional self
checks that may take some time to run, and thus these checks are disabled by default.
"#,
vec![
"backtracking",
"backtracking_checked",
"experimental_linear_scan",
"experimental_linear_scan_checked",
],
Comment thread
cfallin marked this conversation as resolved.
);

settings.add_enum(
"opt_level",
"Optimization level for generated code.",
Expand Down
Loading