A64: Initial framework

This commit is contained in:
MerryMage 2018-01-04 23:05:27 +00:00
parent cde2d48eb9
commit e161cf16f5
14 changed files with 2650 additions and 1 deletions

View file

@ -23,6 +23,14 @@ Value::Value(A32::ExtReg value) : type(Type::A32ExtReg) {
inner.imm_a32extregref = value;
}
Value::Value(A64::Reg value) : type(Type::A64Reg) {
inner.imm_a64regref = value;
}
Value::Value(A64::Vec value) : type(Type::A64Vec) {
inner.imm_a64vecref = value;
}
Value::Value(bool value) : type(Type::U1) {
inner.imm_u1 = value;
}
@ -78,6 +86,16 @@ A32::ExtReg Value::GetA32ExtRegRef() const {
return inner.imm_a32extregref;
}
A64::Reg Value::GetA64RegRef() const {
ASSERT(type == Type::A64Reg);
return inner.imm_a64regref;
}
A64::Vec Value::GetA64VecRef() const {
ASSERT(type == Type::A64Vec);
return inner.imm_a64vecref;
}
Inst* Value::GetInst() const {
ASSERT(type == Type::Opaque);
return inner.inst;