mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-10 12:45:46 +00:00
Arm64Emitter: Add BFXIL
This commit is contained in:
parent
b22073ef59
commit
be6aec9932
@ -1663,6 +1663,14 @@ void ARM64XEmitter::BFI(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width)
|
|||||||
lsb, width);
|
lsb, width);
|
||||||
EncodeBitfieldMOVInst(1, Rd, Rn, (size - lsb) % size, width - 1);
|
EncodeBitfieldMOVInst(1, Rd, Rn, (size - lsb) % size, width - 1);
|
||||||
}
|
}
|
||||||
|
void ARM64XEmitter::BFXIL(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width)
|
||||||
|
{
|
||||||
|
u32 size = Is64Bit(Rn) ? 64 : 32;
|
||||||
|
ASSERT_MSG(DYNA_REC, lsb < size && width >= 1 && width <= size - lsb,
|
||||||
|
"%s passed lsb %d and width %d which is greater than the register size!", __func__,
|
||||||
|
lsb, width);
|
||||||
|
EncodeBitfieldMOVInst(1, Rd, Rn, lsb, lsb + width - 1);
|
||||||
|
}
|
||||||
void ARM64XEmitter::UBFIZ(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width)
|
void ARM64XEmitter::UBFIZ(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width)
|
||||||
{
|
{
|
||||||
u32 size = Is64Bit(Rn) ? 64 : 32;
|
u32 size = Is64Bit(Rn) ? 64 : 32;
|
||||||
|
@ -770,6 +770,7 @@ public:
|
|||||||
void SBFM(ARM64Reg Rd, ARM64Reg Rn, u32 immr, u32 imms);
|
void SBFM(ARM64Reg Rd, ARM64Reg Rn, u32 immr, u32 imms);
|
||||||
void UBFM(ARM64Reg Rd, ARM64Reg Rn, u32 immr, u32 imms);
|
void UBFM(ARM64Reg Rd, ARM64Reg Rn, u32 immr, u32 imms);
|
||||||
void BFI(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width);
|
void BFI(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width);
|
||||||
|
void BFXIL(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width);
|
||||||
void UBFIZ(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width);
|
void UBFIZ(ARM64Reg Rd, ARM64Reg Rn, u32 lsb, u32 width);
|
||||||
|
|
||||||
// Extract register (ROR with two inputs, if same then faster on A67)
|
// Extract register (ROR with two inputs, if same then faster on A67)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user