Add a regmove instruction.
This will be used to locally change the register locations of values in order to satisfy instruction constraints.
This commit is contained in:
@@ -9,6 +9,7 @@ use ir::{Opcode, Type, Inst, Value, Ebb, JumpTable, SigRef, FuncRef, StackSlot,
|
||||
MemFlags};
|
||||
use ir::immediates::{Imm64, Uimm8, Ieee32, Ieee64, Offset32, Uoffset32};
|
||||
use ir::condcodes::{IntCC, FloatCC};
|
||||
use isa::RegUnit;
|
||||
|
||||
/// Base trait for instruction builders.
|
||||
///
|
||||
|
||||
@@ -687,7 +687,7 @@ impl<'a> fmt::Display for DisplayInst<'a> {
|
||||
} else {
|
||||
write!(f, "{}.{}", inst.opcode(), typevar)?;
|
||||
}
|
||||
write_operands(f, dfg, self.1)
|
||||
write_operands(f, dfg, None, self.1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ use ir::{Value, Type, Ebb, JumpTable, SigRef, FuncRef, StackSlot, MemFlags};
|
||||
use ir::immediates::{Imm64, Uimm8, Ieee32, Ieee64, Offset32, Uoffset32};
|
||||
use ir::condcodes::*;
|
||||
use ir::types;
|
||||
use isa::RegUnit;
|
||||
|
||||
use entity_list;
|
||||
use ref_slice::{ref_slice, ref_slice_mut};
|
||||
@@ -203,6 +204,12 @@ pub enum InstructionData {
|
||||
args: [Value; 2],
|
||||
offset: Offset32,
|
||||
},
|
||||
RegMove {
|
||||
opcode: Opcode,
|
||||
arg: Value,
|
||||
src: RegUnit,
|
||||
dst: RegUnit,
|
||||
},
|
||||
}
|
||||
|
||||
/// A variable list of `Value` operands used for function call arguments and passing arguments to
|
||||
|
||||
Reference in New Issue
Block a user