mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-05 22:18:16 +01:00
A64: Implement CRC32C
This commit is contained in:
parent
d7044bc751
commit
7ffbebf290
7 changed files with 204 additions and 1 deletions
|
|
@ -683,6 +683,22 @@ U32 IREmitter::PackedSelect(const U32& ge, const U32& a, const U32& b) {
|
|||
return Inst<U32>(Opcode::PackedSelect, ge, a, b);
|
||||
}
|
||||
|
||||
U32 IREmitter::CRC32Castagnoli8(const U32& a, const U32& b) {
|
||||
return Inst<U32>(Opcode::CRC32Castagnoli8, a, b);
|
||||
}
|
||||
|
||||
U32 IREmitter::CRC32Castagnoli16(const U32& a, const U32& b) {
|
||||
return Inst<U32>(Opcode::CRC32Castagnoli16, a, b);
|
||||
}
|
||||
|
||||
U32 IREmitter::CRC32Castagnoli32(const U32& a, const U32& b) {
|
||||
return Inst<U32>(Opcode::CRC32Castagnoli32, a, b);
|
||||
}
|
||||
|
||||
U32 IREmitter::CRC32Castagnoli64(const U32& a, const U64& b) {
|
||||
return Inst<U32>(Opcode::CRC32Castagnoli64, a, b);
|
||||
}
|
||||
|
||||
UAny IREmitter::VectorGetElement(size_t esize, const U128& a, size_t index) {
|
||||
ASSERT_MSG(esize * index < 128, "Invalid index");
|
||||
switch (esize) {
|
||||
|
|
|
|||
|
|
@ -186,6 +186,11 @@ public:
|
|||
U32 PackedAbsDiffSumS8(const U32& a, const U32& b);
|
||||
U32 PackedSelect(const U32& ge, const U32& a, const U32& b);
|
||||
|
||||
U32 CRC32Castagnoli8(const U32& a, const U32& b);
|
||||
U32 CRC32Castagnoli16(const U32& a, const U32& b);
|
||||
U32 CRC32Castagnoli32(const U32& a, const U32& b);
|
||||
U32 CRC32Castagnoli64(const U32& a, const U64& b);
|
||||
|
||||
UAny VectorGetElement(size_t esize, const U128& a, size_t index);
|
||||
U128 VectorAdd8(const U128& a, const U128& b);
|
||||
U128 VectorAdd16(const U128& a, const U128& b);
|
||||
|
|
|
|||
|
|
@ -167,6 +167,12 @@ OPCODE(PackedSaturatedSubS16, T::U32, T::U32, T::U32
|
|||
OPCODE(PackedAbsDiffSumS8, T::U32, T::U32, T::U32 )
|
||||
OPCODE(PackedSelect, T::U32, T::U32, T::U32, T::U32 )
|
||||
|
||||
// CRC instructions
|
||||
OPCODE(CRC32Castagnoli8, T::U32, T::U32, T::U32 )
|
||||
OPCODE(CRC32Castagnoli16, T::U32, T::U32, T::U32 )
|
||||
OPCODE(CRC32Castagnoli32, T::U32, T::U32, T::U32 )
|
||||
OPCODE(CRC32Castagnoli64, T::U32, T::U32, T::U64 )
|
||||
|
||||
// Vector instructions
|
||||
OPCODE(VectorGetElement8, T::U8, T::U128, T::U8 )
|
||||
OPCODE(VectorGetElement16, T::U16, T::U128, T::U8 )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue