mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-07 23:18:10 +01:00
IR: Add fbits argument to FPVectorFrom{Signed,Unsigned}Fixed
This commit is contained in:
parent
027b0ef725
commit
02150bc0b7
6 changed files with 223 additions and 182 deletions
|
|
@ -2030,6 +2030,30 @@ U128 IREmitter::FPVectorEqual(size_t esize, const U128& a, const U128& b) {
|
|||
return {};
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorFromSignedFixed(size_t esize, const U128& a, size_t fbits, FP::RoundingMode rounding) {
|
||||
ASSERT(fbits <= esize);
|
||||
switch (esize) {
|
||||
case 32:
|
||||
return Inst<U128>(Opcode::FPVectorFromSignedFixed32, a, Imm8(static_cast<u8>(fbits)), Imm8(static_cast<u8>(rounding)));
|
||||
case 64:
|
||||
return Inst<U128>(Opcode::FPVectorFromSignedFixed64, a, Imm8(static_cast<u8>(fbits)), Imm8(static_cast<u8>(rounding)));
|
||||
}
|
||||
UNREACHABLE();
|
||||
return {};
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorFromUnsignedFixed(size_t esize, const U128& a, size_t fbits, FP::RoundingMode rounding) {
|
||||
ASSERT(fbits <= esize);
|
||||
switch (esize) {
|
||||
case 32:
|
||||
return Inst<U128>(Opcode::FPVectorFromUnsignedFixed32, a, Imm8(static_cast<u8>(fbits)), Imm8(static_cast<u8>(rounding)));
|
||||
case 64:
|
||||
return Inst<U128>(Opcode::FPVectorFromUnsignedFixed64, a, Imm8(static_cast<u8>(fbits)), Imm8(static_cast<u8>(rounding)));
|
||||
}
|
||||
UNREACHABLE();
|
||||
return {};
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorGreater(size_t esize, const U128& a, const U128& b) {
|
||||
switch (esize) {
|
||||
case 32:
|
||||
|
|
@ -2186,14 +2210,6 @@ U128 IREmitter::FPVectorRSqrtStepFused(size_t esize, const U128& a, const U128&
|
|||
return {};
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorS32ToSingle(const U128& a) {
|
||||
return Inst<U128>(Opcode::FPVectorS32ToSingle, a);
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorS64ToDouble(const U128& a) {
|
||||
return Inst<U128>(Opcode::FPVectorS64ToDouble, a);
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorSub(size_t esize, const U128& a, const U128& b) {
|
||||
switch (esize) {
|
||||
case 32:
|
||||
|
|
@ -2229,14 +2245,6 @@ U128 IREmitter::FPVectorToUnsignedFixed(size_t esize, const U128& a, size_t fbit
|
|||
return {};
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorU32ToSingle(const U128& a) {
|
||||
return Inst<U128>(Opcode::FPVectorU32ToSingle, a);
|
||||
}
|
||||
|
||||
U128 IREmitter::FPVectorU64ToDouble(const U128& a) {
|
||||
return Inst<U128>(Opcode::FPVectorU64ToDouble, a);
|
||||
}
|
||||
|
||||
void IREmitter::Breakpoint() {
|
||||
Inst(Opcode::Breakpoint);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue