mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-26 07:03:38 +00:00
A32: Implement ASIMD VMOV (scalar to general-purpose register)
This commit is contained in:
@@ -1347,6 +1347,21 @@ public:
|
||||
return fmt::format("vmov{} {}, {}, {}", CondToString(cond), t, t2, FPRegStr(true, Vm, M));
|
||||
}
|
||||
|
||||
std::string vfp_VMOV_to_i32(Cond cond, Imm<1> i, size_t Vn, Reg t, bool N) {
|
||||
const size_t index = i.ZeroExtend();
|
||||
return fmt::format("vmov{}.32 {}, {}[{}]", CondToString(cond), t, FPRegStr(true, Vn, N), index);
|
||||
}
|
||||
|
||||
std::string vfp_VMOV_to_i16(Cond cond, bool U, Imm<1> i1, size_t Vn, Reg t, bool N, Imm<1> i2) {
|
||||
const size_t index = concatenate(i1, i2).ZeroExtend();
|
||||
return fmt::format("vmov{}.{}16 {}, {}[{}]", CondToString(cond), U ? 'u' : 's', t, FPRegStr(true, Vn, N), index);
|
||||
}
|
||||
|
||||
std::string vfp_VMOV_to_i8(Cond cond, bool U, Imm<1> i1, size_t Vn, Reg t, bool N, Imm<2> i2) {
|
||||
const size_t index = concatenate(i1, i2).ZeroExtend();
|
||||
return fmt::format("vmov{}.{}8 {}, {}[{}]", CondToString(cond), U ? 'u' : 's', t, FPRegStr(true, Vn, N), index);
|
||||
}
|
||||
|
||||
std::string vfp_VDUP(Cond cond, Imm<1> B, bool Q, size_t Vd, Reg t, bool D, Imm<1> E) {
|
||||
const size_t esize = 32u >> concatenate(B, E).ZeroExtend();
|
||||
return fmt::format("vdup{}.{} {}, {}", CondToString(cond), esize, VectorStr(Q, Vd, D), t);
|
||||
|
||||
Reference in New Issue
Block a user