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:
Jakob Stoklund Olesen
2017-05-02 11:32:12 -07:00
parent 6fe4aa2f8d
commit 8cd67f08a9
11 changed files with 114 additions and 7 deletions

View File

@@ -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