Before use read this
Use original repo, this repo just for my experiments, or take code from this repo and add it in main repo if you need it :)
- [warning this is experimentall fork, can be broken]-
STATE - success working on
- 6.12.22 (Debian)
- 6.12.38 (Debian)
- 6.16.30 (Debian)
-
TODO
- BUG: CRC SSE4.2 test FAILED! need check all variant crc opcodes + data types from value, from pointer,
data sizes and others blablabla getmemoperand and his friends
- maybe have other bugs need expect uncorrect calculate or data type cast in code
check working on Linux version 6.13+issue -> mirh#1 (comment)- need integrate transparent buil if not compability
- understend how all works :D
- refractoring
more sepatare codefix compiler warnings- add tests for all instructions
- maybe use single test by instructtions on assembler
- maybe use test code contains all test instructions (some other project contains hard SIMD optimisations)
- BUG: CRC SSE4.2 test FAILED! need check all variant crc opcodes + data types from value, from pointer,
data sizes and others blablabla getmemoperand and his friends
makesudo dmesg -w # open in another terminal window/tab for see logs if need
make load
In demesg see output OPEMU: module loaded == all okey
Run some SSE3/SSE4+ application and:
- if application working
op_emusuccess emulate instructions - if you see for example
OPEMU: pminud xmm0, xmm1andtrap invalid opcodesome instruction need implement inop_emu - if you see only
trap invalid opcodesome instruction unknown forop_emu
make unload
mirh previos readme text from original
-
This is an adaptation of the original Opcode Emulator from xnu-amd's repo for Linux.
-
For the kernel module, and a few other things (fpins, SSE4.1...), I took some code from Meowthra's AVX+ OPEMU, which looks pretty good, but does not fit my needs (SSSE3, SSE4.1, & SSE4.2).
-
POPCNT and CRC32 are all merit of Andy Vandijck instead.
- SSE3, SSSE3, SSE4.2 (mostly). CRC32 doesn't pass tests though.
- most SSE4.1 instructions are missing, I tried to add a few but it's not working well yet.