Cranelift: implement redundant fill removal on tree-shaped CFG regions. Mozilla bug 1570584. (#906)
This commit is contained in:
@@ -1194,6 +1194,22 @@ pub fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"fill_nop",
|
||||
r#"
|
||||
This is identical to `fill`, except it has no encoding, since it is a no-op.
|
||||
|
||||
This instruction is created only during late-stage redundant-reload removal, after all
|
||||
registers and stack slots have been assigned. It is used to replace `fill`s that have
|
||||
been identified as redundant.
|
||||
"#,
|
||||
)
|
||||
.operands_in(vec![x])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
let src = &operand("src", regunit);
|
||||
let dst = &operand("dst", regunit);
|
||||
|
||||
@@ -1233,6 +1249,23 @@ pub fn define(
|
||||
.other_side_effects(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"copy_to_ssa",
|
||||
r#"
|
||||
Copies the contents of ''src'' register to ''a'' SSA name.
|
||||
|
||||
This instruction copies the contents of one register, regardless of its SSA name, to
|
||||
another register, creating a new SSA name. In that sense it is a one-sided version
|
||||
of ''copy_special''. This instruction is internal and should not be created by
|
||||
Cranelift users.
|
||||
"#,
|
||||
)
|
||||
.operands_in(vec![src])
|
||||
.operands_out(vec![a])
|
||||
.other_side_effects(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"copy_nop",
|
||||
|
||||
Reference in New Issue
Block a user