I need a C / X86 ASM programmer to implement XOR and Reed-Solomon parity code algorithms.
1. Must compile with MS Visual C++ 2008 and later, compile targets 32 and 64 bit X86
2. Must be 100% portable and byte-compatible between compilers and X86 / X64 targets. Must maximize CPU capabilities for each platform (don't use 32bit calculations for 64bit platform)
3. Implementation must be both for encode and decode.
4. The buffers provided to the functions will be separate pointers, not in one chunk. All buffers will be power of 2 equal size. The decoder will take the "errors" parameter (array) telling the function which buffers are invalid. The decoder must return valid data in the data buffers - don't process data for invalid parity buffers to conserve time.
Both encoder and decoder will also receive total number of buffers and number of source buffers (number of source buffers is always (total buffers - 1) for XOR, but not so for RS code: multiple parity buffers possible here)
5. ASM code is allowed to increase performance, but portable C code is still required and expected to perform. Any ASM code must also satisfy requirement #2 and fall back if the executing processor does not provide instruction set utilized (SSE2 is assumed to be available on all target platforms)
Project will be awarded based on XOR encode performance, price and any existing feedback of the provider, in this order of importance.
When applying, provide the XOR encode demos on [url removed, login to view] (they must execute and [url removed, login to view]'s compiler (gcc 4.3.4.) must report execution time and no errors). The demos must work on 7 source buffers calculating XOR for the 8th buffer. Size of buffers 16MB each. Buffers contain randomized data.
Expected result is a fully compilable source using no additional libraries and not violating any existing copyrights. Copyright will be transferred to me upon project completion. This is part of a larger closed-source project.
Note that this is a simple project with plenty of existing freeware samples on the internet. I just need a consistent ready-to-use interface.